Initial commit: ROW Client source code

Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 16:24:34 +09:00
commit e067522598
5135 changed files with 1745744 additions and 0 deletions

View File

@@ -0,0 +1,493 @@
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form frmMain
BorderStyle = 1 'Fixed Single
Caption = "DLS Sound Effects"
ClientHeight = 4920
ClientLeft = 45
ClientTop = 330
ClientWidth = 5670
Icon = "DLSFX.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 4920
ScaleWidth = 5670
StartUpPosition = 3 'Windows Default
Begin VB.Frame Frame1
Caption = "Heartbeat"
Height = 3255
Left = 120
TabIndex = 17
Top = 1560
Width = 2895
Begin VB.CommandButton cmdB7
Caption = "&On"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 480
TabIndex = 8
Top = 360
Width = 735
End
Begin VB.CommandButton cmdOff
Caption = "O&ff"
Enabled = 0 'False
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 1800
TabIndex = 9
Top = 360
Width = 735
End
Begin MSComctlLib.Slider sliderB7
Height = 375
Left = 360
TabIndex = 11
Top = 1440
Width = 2295
_ExtentX = 4048
_ExtentY = 661
_Version = 393216
LargeChange = 3
Min = 1
Max = 13
SelStart = 1
Value = 1
End
Begin MSComctlLib.Slider sliderPitch
Height = 375
Left = 360
TabIndex = 13
Top = 2400
Width = 2295
_ExtentX = 4048
_ExtentY = 661
_Version = 393216
LargeChange = 1365
SmallChange = 128
Max = 16383
SelStart = 8065
TickFrequency = 1365
Value = 8065
End
Begin VB.Label Label2
Caption = "&Note (B7-B8)"
Height = 255
Left = 480
TabIndex = 10
Top = 1080
Width = 1695
End
Begin VB.Label lblPitch
Caption = "&Pitch Bend"
Height = 255
Left = 480
TabIndex = 12
Top = 2040
Width = 1815
End
End
Begin VB.CommandButton cmdExit
Cancel = -1 'True
Caption = "E&xit"
Height = 495
Left = 3720
TabIndex = 16
Top = 3120
Width = 1335
End
Begin VB.CommandButton cmdC10
BackColor = &H00FFFFFF&
Caption = "C&10"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 4688
TabIndex = 6
Top = 720
Width = 615
End
Begin VB.CommandButton cmdC9
Caption = "C&9"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 3968
TabIndex = 5
Top = 720
Width = 615
End
Begin VB.CommandButton cmdC5
Caption = "C&5"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 1808
TabIndex = 2
Top = 720
Width = 615
End
Begin VB.CommandButton cmdC4
Caption = "C&4"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 1088
TabIndex = 1
Top = 720
Width = 615
End
Begin VB.CommandButton cmdC6
Caption = "C&6"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 2528
TabIndex = 3
Top = 720
Width = 615
End
Begin VB.CommandButton cmdC3
Caption = "C&3"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 368
TabIndex = 0
Top = 720
Width = 615
End
Begin VB.CommandButton cmdC7
Caption = "C&7"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 3248
TabIndex = 4
Top = 720
Width = 615
End
Begin MSComctlLib.Slider sliderVelocity
Height = 195
Left = 3360
TabIndex = 15
Top = 1920
Width = 2295
_ExtentX = 4048
_ExtentY = 344
_Version = 393216
LargeChange = 16
Max = 127
SelStart = 127
TickFrequency = 16
Value = 127
End
Begin VB.Label Label3
Caption = "&Velocity of New Notes"
Height = 255
Left = 3480
TabIndex = 14
Top = 1560
Width = 1935
End
Begin VB.Label Label1
Alignment = 2 'Center
Caption = "Boids.dls - ""Vocals"" Instrument Regions"
BeginProperty Font
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 428
TabIndex = 7
Top = 240
Width = 4815
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
'
' File: dlsfx.frm
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' This application demonstrates the use of Downloadable Sounds for sound
' effects, and how to send MIDI notes.
' The DLS instruments are taken from Boids.dls. That collection actually
' contains only a single instrument, called Vocals. However, the instrument
' is based on different wave samples for different "regions" or ranges
' of notes. For example, the first speech sound is used when any note
' between C3 and B3 is sent. The speech sounds are played at the correct
' pitch only when the note is the lowest one in the region.
' One of the samples, called Heartbeat, is valid for the range B7-B8.
' Because this is not a vocal sample, we can reasonably vary the pitch
' by playing various notes within that range, as determined by the
' slider setting.
' Heartbeat is also the only sample in the DLS collection that is based
' on a looped wave. Hence it can be played continuously for up to the
' maximum duration of a note. The other samples will play only once
' regardless of the duration of the note sent.
Option Explicit
Const patch = 127 ' Assigned to "Vocals" instrument in Boids.dls
Const channel = 1
Const hbchannel = 32
' NoteDur is the duration of any of the non-repeating samples. It should
' be long enough to accommodate all the sound effects but not so long
' that notes continue using up resources (voices) after the sample has
' finished playing. Note that if you send the same note before the last
' one has finished playing, it might not play properly.
Const NoteDurC3 = 4000 ' milliseconds
Const NoteDurC4 = 7000 ' milliseconds
Const NoteDurC5 = 5500 ' milliseconds
Const NoteDurC6 = 5000 ' milliseconds
Const NoteDurC7 = 2800 ' milliseconds
Const NoteDurC9 = 5000 ' milliseconds
Const NoteDurC10 = 3800 ' milliseconds
Dim B7Freq As Byte
Dim B7Playing As Boolean
Dim gVelocity As Byte
Dim mediapath As String
Dim dx As New DirectX8
Dim perf As DirectMusicPerformance8
Dim coll As DirectMusicCollection8
Dim seg As DirectMusicSegment8
Private Sub SendNote(chan As Integer, pitch As Byte, dur As Long)
Dim noteMsg As DMUS_NOTE_PMSG
noteMsg.velocity = gVelocity
noteMsg.flags = DMUS_NOTEF_NOTEON
noteMsg.midiValue = pitch
noteMsg.mtDuration = dur
Call perf.SendNotePMSG(0, DMUS_PMSGF_REFTIME, chan, noteMsg)
End Sub
Private Sub B7NoteOff()
' To turn off a note, we send a note-off message on the same
' channel and at the same pitch.
Dim noteMsg As DMUS_NOTE_PMSG
noteMsg.flags = 0
noteMsg.midiValue = B7Freq
Call perf.SendNotePMSG(0, DMUS_PMSGF_REFTIME, hbchannel, noteMsg)
End Sub
Private Sub cmdB7_Click()
' For the hearbeat we'll send the note using a standard MIDI message.
' That way we don't have to worry about the duration of the note;
' it will play till we stop it.
Call perf.SendMIDIPMSG(0, DMUS_PMSGF_REFTIME, hbchannel, &H90, B7Freq, gVelocity)
B7Playing = True
cmdB7.Enabled = False
cmdOff.Enabled = True
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub cmdOff_Click()
B7NoteOff
B7Playing = False
cmdB7.Enabled = True
cmdOff.Enabled = False
End Sub
Private Sub cmdC3_Click()
SendNote channel, 36, NoteDurC3
End Sub
Private Sub cmdC4_Click()
SendNote channel, 48, NoteDurC4
End Sub
Private Sub cmdC5_Click()
SendNote channel, 60, NoteDurC5
End Sub
Private Sub cmdC6_Click()
SendNote channel, 72, NoteDurC6
End Sub
Private Sub cmdC7_Click()
SendNote channel, 84, NoteDurC7
End Sub
Private Sub cmdC9_Click()
SendNote channel, 108, NoteDurC9
End Sub
Private Sub cmdC10_Click()
SendNote channel, 120, NoteDurC10
End Sub
Private Sub Form_Load()
On Error GoTo FAILEDINIT
Dim dmA As DMUS_AUDIOPARAMS
Set perf = dx.DirectMusicPerformanceCreate
perf.InitAudio Me.hWnd, DMUS_AUDIOF_ALL, dmA, , DMUS_APATH_SHARED_STEREOPLUSREVERB, 64
On Error GoTo FAILEDLOAD
mediapath = FindMediaDir("sample.sgt")
If mediapath <> vbNullString Then ChDir mediapath
Dim loader As DirectMusicLoader8
Set loader = dx.DirectMusicLoaderCreate
Set coll = loader.LoadCollection(mediapath & "boids.dls")
' Load any segment. We're not actually going to play it,
' but we need a valid segment object so we can download the DLS.
Set seg = loader.LoadSegment(mediapath & "sample.sgt")
seg.ConnectToCollection coll
seg.Download perf.GetDefaultAudioPath
On Error GoTo 0
' Assign the Vocals instrument to two channels
' One will be used only for the heartbeat so we can pitch bend
Call perf.SendPatchPMSG(0, DMUS_PMSGF_REFTIME, channel, patch, 5, 0)
Call perf.SendPatchPMSG(0, DMUS_PMSGF_REFTIME, hbchannel, patch, 5, 0)
' Initialize heartbeat note. B7 is MIDI note 95.
B7Freq = sliderB7.Value + 94
gVelocity = sliderVelocity.Value
Exit Sub
FAILEDINIT:
MsgBox "Could not initialize DirectMusic." & vbCrLf & "This sample will exit.", vbOKOnly Or vbInformation, "Exiting..."
Unload Me
Exit Sub
FAILEDLOAD:
MsgBox "Failed to load file."
Unload Me
Exit Sub
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Not (seg Is Nothing) Then seg.Unload perf.GetDefaultAudioPath
Set seg = Nothing
If Not (perf Is Nothing) Then perf.CloseDown
Set perf = Nothing
End
End Sub
Private Sub sliderB7_Change()
B7NoteOff
B7Freq = 94 + sliderB7.Value
If B7Playing Then
Call perf.SendMIDIPMSG(0, DMUS_PMSGF_REFTIME, hbchannel, &H90, B7Freq, gVelocity)
End If
End Sub
Private Sub sliderPitch_Change()
Dim hi As Byte, lo As Byte
' Split value into 7-bit bytes
hi = Fix(sliderPitch.Value / 128)
lo = CByte(sliderPitch.Value And 127)
' Send pitch bend message
Call perf.SendMIDIPMSG(0, DMUS_PMSGF_REFTIME, hbchannel, &HE0, _
lo, hi)
End Sub
Private Sub sliderVelocity_Change()
gVelocity = sliderVelocity.Value
End Sub