diff --git a/th02/music/music.inc b/th02/music/music.inc new file mode 100644 index 00000000..ed0bc5b2 --- /dev/null +++ b/th02/music/music.inc @@ -0,0 +1,3 @@ +; Music Room constants. +MUSIC_CMT_LINE_LEN equ 42 +MUSIC_CMT_LINE_COUNT equ 20 diff --git a/th02/music/music_cmt[bss].asm b/th02/music/music_cmt[bss].asm new file mode 100644 index 00000000..16f11d57 --- /dev/null +++ b/th02/music/music_cmt[bss].asm @@ -0,0 +1,2 @@ +MUSIC_CMT_LEN equ MUSIC_CMT_LINE_LEN * MUSIC_CMT_LINE_COUNT +music_cmt db MUSIC_CMT_LEN dup(?) diff --git a/th02/music/music_cmt_load.asm b/th02/music/music_cmt_load.asm new file mode 100644 index 00000000..f7b2baa1 --- /dev/null +++ b/th02/music/music_cmt_load.asm @@ -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 diff --git a/th02/music/music_cmt_load[data].asm b/th02/music/music_cmt_load[data].asm new file mode 100644 index 00000000..8513e1b5 --- /dev/null +++ b/th02/music/music_cmt_load[data].asm @@ -0,0 +1 @@ +aMUSIC_TXT db 'MUSIC.TXT',0 diff --git a/th02_op.asm b/th02_op.asm index ac716eeb..c32d0418 100644 --- a/th02_op.asm +++ b/th02_op.asm @@ -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 diff --git a/th03_op.asm b/th03_op.asm index 6e737cc7..da629ce4 100644 --- a/th03_op.asm +++ b/th03_op.asm @@ -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 ? ; diff --git a/th04/music/music.inc b/th04/music/music.inc new file mode 100644 index 00000000..1b10d449 --- /dev/null +++ b/th04/music/music.inc @@ -0,0 +1,3 @@ +; Music Room constants. +MUSIC_CMT_LINE_LEN equ 40 +MUSIC_CMT_LINE_COUNT equ 20 diff --git a/th04/music/music_cmt_load[data].asm b/th04/music/music_cmt_load[data].asm new file mode 100644 index 00000000..6aae45ab --- /dev/null +++ b/th04/music/music_cmt_load[data].asm @@ -0,0 +1 @@ +aMUSIC_TXT db '_MUSIC.TXT',0 diff --git a/th04_op.asm b/th04_op.asm index 76a3c312..72891efc 100644 --- a/th04_op.asm +++ b/th04_op.asm @@ -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 ? diff --git a/th05/music/music.inc b/th05/music/music.inc new file mode 100644 index 00000000..9d67ab90 --- /dev/null +++ b/th05/music/music.inc @@ -0,0 +1,3 @@ +; Music Room constants. +MUSIC_CMT_LINE_LEN equ 40 +MUSIC_CMT_LINE_COUNT equ 10 diff --git a/th05/music/music_cmt_load.asm b/th05/music/music_cmt_load.asm new file mode 100644 index 00000000..70a8349e --- /dev/null +++ b/th05/music/music_cmt_load.asm @@ -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 diff --git a/th05/music/music_cmt_load[data].asm b/th05/music/music_cmt_load[data].asm new file mode 100644 index 00000000..650abfad --- /dev/null +++ b/th05/music/music_cmt_load[data].asm @@ -0,0 +1 @@ +a_Music0_txt db '_MUSIC0.TXT',0 diff --git a/th05_op.asm b/th05_op.asm index c019619e..6e3a52ea 100644 --- a/th05_op.asm +++ b/th05_op.asm @@ -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 ' ------ ------ ',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 ?