[Reverse-engineering] Music Room comment loading

This commit is contained in:
nmlgc 2014-12-24 21:39:34 +01:00
parent f0ab47fd18
commit 0b89233e48
13 changed files with 155 additions and 992 deletions

3
th02/music/music.inc Normal file
View File

@ -0,0 +1,3 @@
; Music Room constants.
MUSIC_CMT_LINE_LEN equ 42
MUSIC_CMT_LINE_COUNT equ 20

View File

@ -0,0 +1,2 @@
MUSIC_CMT_LEN equ MUSIC_CMT_LINE_LEN * MUSIC_CMT_LINE_COUNT
music_cmt db MUSIC_CMT_LEN dup(?)

View File

@ -0,0 +1,35 @@
; int __pascal __near music_cmt_load(int track)
music_cmt_load proc pascal near
@@track = word ptr [bp+4]
push bp
mov bp, sp
push si
call file_ropen pascal, ds, offset aMUSIC_TXT
mov ax, @@track
imul ax, MUSIC_CMT_LEN
if GAME ge 3
cwde
call file_seek pascal, eax, 0
else
cwd
call file_seek pascal, dx, ax, 0
endif
call file_read pascal, ds, offset music_cmt, MUSIC_CMT_LEN
call file_close
xor si, si
jmp short @@check
@@terminate_line:
mov bx, si
imul bx, MUSIC_CMT_LINE_LEN
mov byte ptr (music_cmt + MUSIC_CMT_LINE_LEN - 2)[bx], 0
inc si
@@check:
cmp si, MUSIC_CMT_LINE_COUNT
jl short @@terminate_line
pop si
pop bp
ret 2
music_cmt_load endp

View File

@ -0,0 +1 @@
aMUSIC_TXT db 'MUSIC.TXT',0

View File

@ -30,6 +30,7 @@
include ReC98.inc
include th02/th02.asm
include th02/music/music.inc
; ===========================================================================
@ -5043,51 +5044,7 @@ loc_C558:
retn
sub_C3E1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C55C proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push ds
push offset aMusic_txt ; "MUSIC.TXT"
call file_ropen
mov ax, [bp+arg_0]
imul ax, 348h
cwd
push dx
push ax
push 0
call file_seek
push ds
push offset unk_F592
push 348h
call file_read
call file_close
xor si, si
jmp short loc_C59A
; ---------------------------------------------------------------------------
loc_C58F:
mov bx, si
imul bx, 2Ah
mov byte ptr [bx+1F8Ah], 0
inc si
loc_C59A:
cmp si, 14h
jl short loc_C58F
pop si
pop bp
retn 2
sub_C55C endp
include th02/music/music_cmt_load.asm
; =============== S U B R O U T I N E =======================================
@ -5274,18 +5231,17 @@ sub_C5CD endp
sub_C726 proc near
arg_0 = word ptr 4
@@track = word ptr 4
push bp
mov bp, sp
push si
push di
push [bp+arg_0]
call sub_C55C
call music_cmt_load pascal, [bp+@@track]
call sub_C0E4
call sub_C5CD
push ds
push offset unk_F592
push offset music_cmt
push 1Fh
push 40h
push 0A0h
@ -5298,8 +5254,8 @@ arg_0 = word ptr 4
loc_C74F:
push ds
mov ax, si
imul ax, 2Ah
add ax, 1F62h
imul ax, MUSIC_CMT_LINE_LEN
add ax, offset music_cmt
push ax
push 1Dh
lea ax, [si+4]
@ -5311,7 +5267,7 @@ loc_C74F:
inc si
loc_C76E:
cmp si, 14h
cmp si, MUSIC_CMT_LINE_COUNT
jl short loc_C74F
xor di, di
jmp short loc_C794
@ -5864,7 +5820,7 @@ aEnd1_m db 'end1.m',0
aEnding_m db 'ending.m',0
aStage5_m db 'stage5.m',0
aBoss5_m db 'boss5.m',0
aMusic_txt db 'MUSIC.TXT',0
include th02/music/music_cmt_load[data].asm
aOp3_pi db 'op3.pi',0
aOp2_pi_0 db 'op2.pi',0
aOp_rgb_0 db 'op.rgb',0
@ -6060,219 +6016,7 @@ word_F58C dw ?
unk_F58E db ? ;
db ? ;
word_F590 dw ?
unk_F592 db ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
db ? ;
db ? ;
db ? ;
include th02/music/music_cmt[bss].asm
include libs/BorlandC/atexit[bss].asm
include libs/BorlandC/sigdata[bss].asm
include libs/BorlandC/xxv[bss].asm

View File

@ -26,6 +26,7 @@
include ReC98.inc
include th03/th03.asm
include th02/music/music.inc
; ===========================================================================
@ -2377,50 +2378,7 @@ loc_AA00:
retn
sub_A8CF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_AA0A proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push ds
push offset aMusic_txt ; "MUSIC.TXT"
call file_ropen
mov ax, [bp+arg_0]
imul ax, 348h
cwde
push eax
push 0
call file_seek
push ds
push offset unk_F83C
push 348h
call file_read
call file_close
xor si, si
jmp short loc_AA49
; ---------------------------------------------------------------------------
loc_AA3E:
mov bx, si
imul bx, 2Ah
mov byte ptr [bx+2074h], 0
inc si
loc_AA49:
cmp si, 14h
jl short loc_AA3E
pop si
pop bp
retn 2
sub_AA0A endp
include th02/music/music_cmt_load.asm
; =============== S U B R O U T I N E =======================================
@ -2575,20 +2533,19 @@ sub_AA7C endp
sub_AB99 proc near
arg_0 = word ptr 4
@@track = word ptr 4
push bp
mov bp, sp
push si
push di
push [bp+arg_0]
call sub_AA0A
call music_cmt_load pascal, [bp+@@track]
call sub_A5F6
call sub_AA7C
push 1300040h
push 1Fh
push ds
push offset unk_F83C
push offset music_cmt
call sub_C6DB
mov di, 1
jmp short loc_ABDC
@ -2602,14 +2559,14 @@ loc_ABC0:
push 1Dh
push ds
mov ax, di
imul ax, 2Ah
add ax, 204Ch
imul ax, MUSIC_CMT_LINE_LEN
add ax, offset music_cmt
push ax
call sub_C6DB
inc di
loc_ABDC:
cmp di, 14h
cmp di, MUSIC_CMT_LINE_COUNT
jl short loc_ABC0
xor si, si
jmp short loc_ABFA
@ -2690,15 +2647,13 @@ loc_AC15:
out dx, al
mov al, byte_DE83
mov ah, 0
push ax
call sub_AB99
call sub_AB99 pascal, ax
mov dx, 0A6h ; '¦'
mov al, 0
out dx, al
mov al, byte_DE83
mov ah, 0
push ax
call sub_AB99
call sub_AB99 pascal, ax
mov PaletteTone, 64h ; 'd'
call far ptr palette_show
@ -2783,13 +2738,11 @@ loc_AD52:
mov al, byte ptr word_F828
mov byte_DE83, al
mov ah, 0
push ax
call sub_AB99
call sub_AB99 pascal, ax
call sub_A899
mov al, byte ptr word_F828
mov ah, 0
push ax
call sub_AB99
call sub_AB99 pascal, ax
loc_AD9A:
test byte ptr word_F296+1, 10h
@ -6619,7 +6572,7 @@ aDemo4_m db 'demo4.m',0
aDemo5_m db 'demo5.m',0
aEd_m db 'ed.m',0
aScore_m db 'score.m',0
aMusic_txt db 'MUSIC.TXT',0
include th02/music/music_cmt_load[data].asm
aOp3_pi db 'op3.pi',0
aOpwin_bft db 'opwin.bft',0
aOp_m db 'op.m',0
@ -7019,219 +6972,7 @@ word_F836 dw ?
unk_F838 db ? ;
db ? ;
word_F83A dw ?
unk_F83C db ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
db ? ;
db ? ;
db ? ;
include th02/music/music_cmt[bss].asm
word_FB84 dw ?
dd ? ;
dd ? ;

3
th04/music/music.inc Normal file
View File

@ -0,0 +1,3 @@
; Music Room constants.
MUSIC_CMT_LINE_LEN equ 40
MUSIC_CMT_LINE_COUNT equ 20

View File

@ -0,0 +1 @@
aMUSIC_TXT db '_MUSIC.TXT',0

View File

@ -26,6 +26,7 @@
include ReC98.inc
include th04/th04.asm
include th04/music/music.inc
; ===========================================================================
@ -3520,50 +3521,7 @@ sub_C244 proc near
retn
sub_C244 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C27B proc near
arg_0 = word ptr 4
push bp
mov bp, sp
push si
push ds
push offset a_music_txt ; "_MUSIC.TXT"
call file_ropen
mov ax, [bp+arg_0]
imul ax, 320h
cwde
push eax
push 0
call file_seek
push ds
push offset unk_12DD2
push 320h
call file_read
call file_close
xor si, si
jmp short loc_C2BA
; ---------------------------------------------------------------------------
loc_C2AF:
mov bx, si
imul bx, 28h
mov byte ptr [bx+3AB8h], 0
inc si
loc_C2BA:
cmp si, 14h
jl short loc_C2AF
pop si
pop bp
retn 2
sub_C27B endp
include th02/music/music_cmt_load.asm
; =============== S U B R O U T I N E =======================================
@ -3576,7 +3534,7 @@ sub_C2C4 proc near
push 1400040h
push 7
push ds
push offset unk_12DD2
push offset music_cmt
call sub_DEB4
mov si, 1
jmp short loc_C306
@ -3584,8 +3542,8 @@ sub_C2C4 proc near
loc_C2DE:
mov bx, si
imul bx, 28h
cmp byte ptr [bx+3A92h], 3Bh ; ';'
imul bx, MUSIC_CMT_LINE_LEN
cmp byte ptr music_cmt[bx], ';'
jz short loc_C305
push 140h
lea ax, [si+4]
@ -3594,8 +3552,8 @@ loc_C2DE:
push 7
push ds
mov ax, si
imul ax, 28h
add ax, 3A92h
imul ax, MUSIC_CMT_LINE_LEN
add ax, offset music_cmt
push ax
call sub_DEB4
@ -3603,7 +3561,7 @@ loc_C305:
inc si
loc_C306:
cmp si, 14h
cmp si, MUSIC_CMT_LINE_COUNT
jl short loc_C2DE
pop si
pop bp
@ -3670,7 +3628,7 @@ sub_C33F endp
sub_C36F proc near
arg_0 = word ptr 4
@@track = word ptr 4
push bp
mov bp, sp
@ -3679,8 +3637,7 @@ arg_0 = word ptr 4
call sub_C33F
loc_C37C:
push [bp+arg_0]
call sub_C27B
call music_cmt_load pascal, [bp+@@track]
call sub_BFA7
push 1400040h
push 1400140h
@ -3746,8 +3703,7 @@ sub_C3B7 proc near
call sub_BF68
mov al, byte_102AF
mov ah, 0
push ax
call sub_C36F
call sub_C36F pascal, ax
mov PaletteTone, 64h ; 'd'
call far ptr palette_show
@ -3823,8 +3779,7 @@ loc_C4E4:
mov al, byte ptr word_12DBC
mov byte_102AF, al
mov ah, 0
push ax
call sub_C36F
call sub_C36F pascal, ax
mov al, byte ptr word_12DBC
mov ah, 0
shl ax, 2
@ -8119,7 +8074,7 @@ aEnd1 db 'end1',0
aEnd2 db 'end2',0
aStaff db 'staff',0
aName_0 db 'name',0
a_music_txt db '_MUSIC.TXT',0
include th04/music/music_cmt_load[data].asm
aMusic_pi db 'music.pi',0
aGensou_scr db 'GENSOU.SCR',0
aName db 'name',0
@ -9742,209 +9697,7 @@ word_12DC0 dw ?
dd ? ;
dd ? ;
dd ? ;
unk_12DD2 db ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
db ? ;
db ? ;
db ? ;
include th02/music/music_cmt[bss].asm
byte_130F2 db ?
byte_130F3 db ?
word_130F4 dw ?

3
th05/music/music.inc Normal file
View File

@ -0,0 +1,3 @@
; Music Room constants.
MUSIC_CMT_LINE_LEN equ 40
MUSIC_CMT_LINE_COUNT equ 10

View File

@ -0,0 +1,34 @@
; int __pascal __near music_cmt_load(int track)
music_cmt_load proc pascal near
arg @@track:word
local @@fn:dword
push si
mov word ptr @@fn+2, ds
mov word ptr @@fn, offset a_Music0_txt
les bx, @@fn
mov al, byte ptr music_game
add al, '0'
mov es:[bx+6], al
call file_ropen pascal, word ptr @@fn+2, bx
mov ax, @@track
imul ax, MUSIC_CMT_LEN
cwde
call file_seek pascal, eax, 0
call file_read pascal, ds, offset music_cmt, MUSIC_CMT_LEN
call file_close
xor si, si
jmp short @@check
@@terminate_line:
mov bx, si
imul bx, MUSIC_CMT_LINE_LEN
mov byte ptr (music_cmt + MUSIC_CMT_LINE_LEN - 2)[bx], 0
inc si
@@check:
cmp si, MUSIC_CMT_LINE_COUNT
jl short @@terminate_line
pop si
ret
music_cmt_load endp

View File

@ -0,0 +1 @@
a_Music0_txt db '_MUSIC0.TXT',0

View File

@ -26,6 +26,7 @@
include ReC98.inc
include th05/th05.asm
include th05/music/music.inc
; ===========================================================================
@ -3483,7 +3484,7 @@ loc_BF05:
mov [bp+var_5], 3
loc_BF14:
mov bx, musicroom_game_id
mov bx, music_game
imul bx, 78h
mov al, [bp+arg_2]
mov ah, 0
@ -3558,7 +3559,7 @@ loc_BF6B:
call sub_D436
push 0C0020h
push 3
mov bx, musicroom_game_id
mov bx, music_game
shl bx, 2
pushd dword ptr MUSICROOM_GAME[bx]
call sub_D436
@ -3942,85 +3943,33 @@ sub_C293 proc near
retn
sub_C293 endp
include th05/music/music_cmt_load.asm
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C2CF proc near
sub_C32D proc pascal near
local @@y:word
var_4 = dword ptr -4
arg_0 = word ptr 4
enter 4, 0
push si
mov word ptr [bp+var_4+2], ds
mov word ptr [bp+var_4], 27ECh
les bx, [bp+var_4]
assume es:nothing
mov al, byte ptr musicroom_game_id
add al, 30h ; '0'
mov es:[bx+6], al
push word ptr [bp+var_4+2]
push bx
call file_ropen
mov ax, [bp+arg_0]
imul ax, 190h
cwde
push eax
push 0
call file_seek
push ds
push offset unk_13EAA
push 190h
call file_read
call file_close
xor si, si
jmp short loc_C323
; ---------------------------------------------------------------------------
loc_C318:
mov bx, si
imul bx, 28h
mov byte ptr [bx+4EF0h], 0
inc si
loc_C323:
cmp si, 0Ah
jl short loc_C318
pop si
leave
retn 2
sub_C2CF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_C32D proc near
var_2 = word ptr -2
enter 2, 0
push si
push di
push 1400020h
push 7
push ds
push offset unk_13EAA
push offset music_cmt
call sub_D436
mov si, 4EF2h
mov si, offset music_cmt + MUSIC_CMT_LINE_LEN
mov di, 1
mov [bp+var_2], 0B4h ; '´'
mov @@y, 180
jmp short loc_C36D
; ---------------------------------------------------------------------------
loc_C351:
cmp byte ptr [si], 3Bh ; ';'
cmp byte ptr [si], ';'
jz short loc_C365
push 140h
push [bp+var_2]
push 320
push @@y
push 7
push ds
push si
@ -4028,16 +3977,15 @@ loc_C351:
loc_C365:
inc di
add [bp+var_2], 10h
add si, 28h ; '('
add @@y, 16
add si, MUSIC_CMT_LINE_LEN
loc_C36D:
cmp di, 0Ah
cmp di, MUSIC_CMT_LINE_COUNT
jl short loc_C351
pop di
pop si
leave
retn
ret
sub_C32D endp
@ -4106,7 +4054,7 @@ sub_C3A7 endp
sub_C3F9 proc near
arg_0 = word ptr 4
@@track = word ptr 4
push bp
mov bp, sp
@ -4115,8 +4063,7 @@ arg_0 = word ptr 4
call sub_C3A7
loc_C406:
push [bp+arg_0]
call sub_C2CF
call music_cmt_load pascal, [bp+@@track]
call sub_BFF6
push 1400040h
push 1400100h
@ -4189,7 +4136,7 @@ var_1 = byte ptr -1
mov word_1403A, 0
mov word_1403C, 0
mov byte ptr word_13E94, 0
mov bx, musicroom_game_id
mov bx, music_game
add bx, bx
mov ax, [bx+14A0h]
mov musicroom_trackcount, ax
@ -4231,8 +4178,7 @@ var_1 = byte ptr -1
call pfstart
mov al, byte ptr word_13E94
mov ah, 0
push ax
call sub_C3F9
call sub_C3F9 pascal, ax
mov PaletteTone, 64h ; 'd'
call far ptr palette_show
@ -4358,35 +4304,34 @@ loc_C652:
loc_C666:
test byte ptr word_12A72, 4
jz short loc_C680
dec musicroom_game_id
cmp musicroom_game_id, 0
dec music_game
cmp music_game, 0
jge short loc_C698
mov musicroom_game_id, 4
mov music_game, 4
jmp short loc_C698
; ---------------------------------------------------------------------------
loc_C680:
test byte ptr word_12A72, 8
jz short loc_C6E3
inc musicroom_game_id
cmp musicroom_game_id, 5
inc music_game
cmp music_game, 5
jl short loc_C698
mov musicroom_game_id, 0
mov music_game, 0
loc_C698:
mov byte ptr word_13E94, 0
mov word_1403C, 0
mov word_1403A, 0
mov bx, musicroom_game_id
mov bx, music_game
add bx, bx
mov ax, [bx+14A0h]
mov musicroom_trackcount, ax
push 0
call sub_C441
kajacall KAJA_SONG_FADE, 32
push 0
call sub_C3F9
mov bx, musicroom_game_id
call sub_C3F9 pascal, 0
mov bx, music_game
imul bx, 78h
call snd_load pascal, dword ptr [bx+1246h], SND_LOAD_SONG
kajacall KAJA_SONG_PLAY
@ -4423,9 +4368,8 @@ loc_C6F1:
call sub_BE79
mov al, byte ptr word_13E94
mov ah, 0
push ax
call sub_C3F9
mov bx, musicroom_game_id
call sub_C3F9 pascal, ax
mov bx, music_game
imul bx, 78h
mov al, byte ptr word_13E94
mov ah, 0
@ -8734,7 +8678,7 @@ MUSICROOM_GAME dd aMUSICROOM_TH01
dd 0
dd 0
dd 0
musicroom_game_id dw 4
music_game dw 4
MUSICROOM_TRACKCOUNTS dw 14,18,24,28,23
byte_1048A db 0
aMUSICROOM_UP db ' ------ <20>£ ------ ',0
@ -8943,7 +8887,7 @@ aEd00 db 'ed00',0
aEd01 db 'ed01',0
aEd02 db 'ed02',0
aExed db 'exed',0
a_music0_txt db '_MUSIC0.TXT',0
include th05/music/music_cmt_load[data].asm
aMusic_pi db 'music.pi',0
aMusic_dat db 'music.dat',0
aKaikidan1_dat1 db '‰öãYk1.dat',0
@ -10556,109 +10500,7 @@ word_13E98 dw ?
dd ? ;
dd ? ;
dd ? ;
unk_13EAA db ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
db ? ;
db ? ;
db ? ;
include th02/music/music_cmt[bss].asm
word_1403A dw ?
word_1403C dw ?
musicroom_trackcount dw ?