From 3c1b2473dd6d5335be1457cfcf925ac88214c102 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Sun, 29 Dec 2019 15:25:34 +0100 Subject: [PATCH] [Reverse-engineering] [th04] BGM/SE mode setup window rendering Part of P0064, funded by Touhou Patch Center. --- th04/setup.asm | 256 +++++++++++++++++++++++++++++++++ th04/setup.cpp | 28 ++++ th04/setup[bss].asm | 2 + th04_op.asm | 342 ++++---------------------------------------- th05_op.asm | 342 ++++---------------------------------------- 5 files changed, 344 insertions(+), 626 deletions(-) create mode 100644 th04/setup[bss].asm diff --git a/th04/setup.asm b/th04/setup.asm index 89b18a85..1a771de6 100644 --- a/th04/setup.asm +++ b/th04/setup.asm @@ -1,3 +1,259 @@ +WINDOW_BORDER_W = 8 +WINDOW_BORDER_H = 8 +WINDOW_TILE_W = 16 +WINDOW_TILE_H = 16 + + +window_dropdown_row proc near + +@@tile_x = word ptr -2 +@@bottom_y = word ptr 4 +@@left_x = word ptr 6 + + enter 2, 0 + push si + push di + mov si, [bp+@@left_x] + mov di, [bp+@@bottom_y] + push si + push di + mov ax, _window_tiles.x + shl ax, 4 + push ax + push WINDOW_TILE_H + call egc_copy_rect_1_to_0 + call super_put pascal, si, di, 2 + push si + lea ax, [di+WINDOW_BORDER_H] + push ax + push 6 + call super_put + add si, WINDOW_TILE_W + mov [bp+@@tile_x], 1 + jmp short @@tile_x_more? +; --------------------------------------------------------------------------- + +@@tile_x_loop: + call super_put pascal, si, di, 0 + push si + lea ax, [di+WINDOW_BORDER_H] + push ax + push 3 + call super_put + inc [bp+@@tile_x] + add si, WINDOW_TILE_W + +@@tile_x_more?: + mov ax, _window_tiles.x + dec ax + cmp ax, [bp+@@tile_x] + jg short @@tile_x_loop + call super_put pascal, si, di, 4 + push si + lea ax, [di+WINDOW_BORDER_H] + push ax + push 7 + call super_put + pop di + pop si + leave + retn 4 +window_dropdown_row endp + + +window_rollup_row proc near + +@@tile_x = word ptr -2 +@@bottom_y = word ptr 4 +@@left_x = word ptr 6 + + enter 2, 0 + push si + push di + mov si, [bp+@@left_x] + mov di, [bp+@@bottom_y] + push si + lea ax, [di+WINDOW_BORDER_H] + push ax + mov ax, _window_tiles.x + shl ax, 4 + push ax + push WINDOW_TILE_H + call egc_copy_rect_1_to_0 + call super_put pascal, si, di, 6 + add si, WINDOW_TILE_W + mov [bp+@@tile_x], 1 + jmp short @@tile_x_more? +; --------------------------------------------------------------------------- + +@@tile_x_loop: + call super_put pascal, si, di, 3 + inc [bp+@@tile_x] + add si, WINDOW_TILE_W + +@@tile_x_more?: + mov ax, _window_tiles.x + dec ax + cmp ax, [bp+@@tile_x] + jg short @@tile_x_loop + call super_put pascal, si, di, 7 + pop di + pop si + leave + retn 4 +window_rollup_row endp + + +public WINDOW_DROPDOWN_ANIMATE +window_dropdown_animate proc near + +@@x = word ptr -2 +@@top_y = word ptr 4 +@@left_x = word ptr 6 + + enter 2, 0 + push si + push di + mov ax, [bp+@@left_x] + mov [bp+@@x], ax + mov si, [bp+@@top_y] + call super_put pascal, ax, si, 5 + add [bp+@@x], WINDOW_TILE_W + mov di, 1 + jmp short @@top_more? +; --------------------------------------------------------------------------- + +@@top_loop: + call super_put pascal, [bp+@@x], si, 1 + inc di + add [bp+@@x], WINDOW_TILE_W + +@@top_more?: + mov ax, _window_tiles.x + dec ax + cmp ax, di + jg short @@top_loop + call super_put pascal, [bp+@@x], si, 8 + add si, WINDOW_TILE_H + mov di, 1 + jmp short @@row_more? +; --------------------------------------------------------------------------- + +@@row_loop: + call window_dropdown_row pascal, [bp+@@left_x], si + call frame_delay pascal, 1 + inc di + add si, WINDOW_BORDER_H + +@@row_more?: + mov ax, _window_tiles.y + add ax, ax + add ax, -3 + cmp ax, di + jg short @@row_loop + pop di + pop si + leave + retn 4 +window_dropdown_animate endp + + +public WINDOW_SINGLELINE +window_singleline proc near + +@@tile_x = word ptr -2 +@@top_y = word ptr 4 +@@left_x = word ptr 6 + + enter 2, 0 + push si + push di + mov si, [bp+@@left_x] + mov di, [bp+@@top_y] + push si + push di + mov ax, _window_tiles.x + shl ax, 4 + push ax + push WINDOW_BORDER_H + WINDOW_TILE_H + WINDOW_BORDER_H + call egc_copy_rect_1_to_0 + call super_put pascal, si, di, 5 + push si + lea ax, [di+WINDOW_TILE_H] + push ax + push 6 + call super_put + add si, WINDOW_TILE_W + mov [bp+@@tile_x], 1 + jmp short @@tile_x_more? +; --------------------------------------------------------------------------- + +@@tile_x_loop: + call super_put pascal, si, di, 1 + push si + lea ax, [di+WINDOW_TILE_H] + push ax + push 3 + call super_put + inc [bp+@@tile_x] + add si, WINDOW_TILE_W + +@@tile_x_more?: + mov ax, _window_tiles.x + dec ax + cmp ax, [bp+@@tile_x] + jg short @@tile_x_loop + call super_put pascal, si, di, 8 + push si + lea ax, [di+WINDOW_TILE_H] + push ax + push 7 + call super_put + pop di + pop si + leave + retn 4 +window_singleline endp + + +public WINDOW_ROLLUP_ANIMATE +window_rollup_animate proc near + +@@top_y = word ptr 4 +@@left_x = word ptr 6 + + push bp + mov bp, sp + push si + push di + mov si, [bp+@@top_y] + mov ax, _window_tiles.y + shl ax, 4 + add ax, -WINDOW_TILE_H + add si, ax + mov di, 1 + jmp short @@row_more? +; --------------------------------------------------------------------------- + +@@row_loop: + call window_rollup_row pascal, [bp+@@left_x], si + call frame_delay pascal, 1 + inc di + sub si, WINDOW_BORDER_H + +@@row_more?: + mov ax, _window_tiles.y + add ax, ax + add ax, -2 + cmp ax, di + jg short @@row_loop + pop di + pop si + pop bp + retn 4 +window_rollup_animate endp + + SETUP_LINE_H = 16 SETUP_CHOICE_X = 48 SETUP_CHOICE_Y = 136 diff --git a/th04/setup.cpp b/th04/setup.cpp index efd0810a..c0fede3a 100644 --- a/th04/setup.cpp +++ b/th04/setup.cpp @@ -3,6 +3,34 @@ * TH04/TH05 BGM/SE mode setup menu */ +#define WINDOW_BORDER_W 8 +#define WINDOW_BORDER_H 8 +#define WINDOW_TILE_W 16 +#define WINDOW_TILE_H 16 + +// Window width and height, including the border +extern Point window_tiles; + +void pascal near window_dropdown_row(int left_x, int bottom_y) +{ +} + +void pascal near window_rollup_row(int left_x, int bottom_y) +{ +} + +void pascal near window_dropdown_animate(int left_x, int top_y) +{ +} + +void pascal near window_singleline(int left_x, int top_y) +{ +} + +void pascal near window_rollup_animate(int left_x, int top_y) +{ +} + void pascal near setup_bgm_choice_put(bgm_mode_t mode, unsigned char col) { } diff --git a/th04/setup[bss].asm b/th04/setup[bss].asm new file mode 100644 index 00000000..f5b1f866 --- /dev/null +++ b/th04/setup[bss].asm @@ -0,0 +1,2 @@ +public _window_tiles +_window_tiles Point diff --git a/th04_op.asm b/th04_op.asm index 1eddd2df..bf96eb76 100644 --- a/th04_op.asm +++ b/th04_op.asm @@ -1553,279 +1553,6 @@ loc_B47B: retf _main endp - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B49F proc near - -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 - - enter 2, 0 - push si - push di - mov si, [bp+arg_2] - mov di, [bp+arg_0] - push si - push di - mov ax, word_11E88 - shl ax, 4 - push ax - push 10h - call egc_copy_rect_1_to_0 - call super_put pascal, si, di, 2 - push si - lea ax, [di+8] - push ax - push 6 - call super_put - add si, 16 - mov [bp+var_2], 1 - jmp short loc_B4F5 -; --------------------------------------------------------------------------- - -loc_B4DA: - call super_put pascal, si, di, 0 - push si - lea ax, [di+8] - push ax - push 3 - call super_put - inc [bp+var_2] - add si, 16 - -loc_B4F5: - mov ax, word_11E88 - dec ax - cmp ax, [bp+var_2] - jg short loc_B4DA - call super_put pascal, si, di, 4 - push si - lea ax, [di+8] - push ax - push 7 - call super_put - pop di - pop si - leave - retn 4 -sub_B49F endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B519 proc near - -var_2 = word ptr -2 -@@y = word ptr 4 -arg_2 = word ptr 6 - - enter 2, 0 - push si - push di - mov si, [bp+arg_2] - mov di, [bp+@@y] - push si - lea ax, [di+8] - push ax - mov ax, word_11E88 - shl ax, 4 - push ax - push 10h - call egc_copy_rect_1_to_0 - call super_put pascal, si, di, 6 - add si, 16 - mov [bp+var_2], 1 - jmp short loc_B55A -; --------------------------------------------------------------------------- - -loc_B54B: - call super_put pascal, si, di, 3 - inc [bp+var_2] - add si, 16 - -loc_B55A: - mov ax, word_11E88 - dec ax - cmp ax, [bp+var_2] - jg short loc_B54B - call super_put pascal, si, di, 7 - pop di - pop si - leave - retn 4 -sub_B519 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B572 proc near - -var_2 = word ptr -2 -@@y = word ptr 4 -arg_2 = word ptr 6 - - enter 2, 0 - push si - push di - mov ax, [bp+arg_2] - mov [bp+var_2], ax - mov si, [bp+@@y] - call super_put pascal, ax, si, 5 - add [bp+var_2], 16 - mov di, 1 - jmp short loc_B5A3 -; --------------------------------------------------------------------------- - -loc_B593: - call super_put pascal, [bp+var_2], si, 1 - inc di - add [bp+var_2], 16 - -loc_B5A3: - mov ax, word_11E88 - dec ax - cmp ax, di - jg short loc_B593 - call super_put pascal, [bp+var_2], si, 8 - add si, 16 - mov di, 1 - jmp short loc_B5D0 -; --------------------------------------------------------------------------- - -loc_B5BE: - push [bp+arg_2] - push si - call sub_B49F - push 1 - call frame_delay - inc di - add si, 8 - -loc_B5D0: - mov ax, word_11E8A - add ax, ax - add ax, 0FFFDh - cmp ax, di - jg short loc_B5BE - pop di - pop si - leave - retn 4 -sub_B572 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B5E2 proc near - -var_2 = word ptr -2 -@@y = word ptr 4 -arg_2 = word ptr 6 - - enter 2, 0 - push si - push di - mov si, [bp+arg_2] - mov di, [bp+@@y] - push si - push di - mov ax, word_11E88 - shl ax, 4 - push ax - push 20h ; ' ' - call egc_copy_rect_1_to_0 - call super_put pascal, si, di, 5 - push si - lea ax, [di+16] - push ax - push 6 - call super_put - add si, 16 - mov [bp+var_2], 1 - jmp short loc_B638 -; --------------------------------------------------------------------------- - -loc_B61D: - call super_put pascal, si, di, 1 - push si - lea ax, [di+16] - push ax - push 3 - call super_put - inc [bp+var_2] - add si, 16 - -loc_B638: - mov ax, word_11E88 - dec ax - cmp ax, [bp+var_2] - jg short loc_B61D - call super_put pascal, si, di, 8 - push si - lea ax, [di+16] - push ax - push 7 - call super_put - pop di - pop si - leave - retn 4 -sub_B5E2 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B65C proc near - -arg_0 = word ptr 4 -arg_2 = word ptr 6 - - push bp - mov bp, sp - push si - push di - mov si, [bp+arg_0] - mov ax, word_11E8A - shl ax, 4 - add ax, 0FFF0h - add si, ax - mov di, 1 - jmp short loc_B686 -; --------------------------------------------------------------------------- - -loc_B674: - push [bp+arg_2] - push si - call sub_B519 - push 1 - call frame_delay - inc di - sub si, 8 - -loc_B686: - mov ax, word_11E8A - add ax, ax - add ax, 0FFFEh - cmp ax, di - jg short loc_B674 - pop di - pop si - pop bp - retn 4 -sub_B65C endp - include th04/setup.asm ; =============== S U B R O U T I N E ======================================= @@ -1837,14 +1564,12 @@ sub_B794 proc near var_2 = word ptr -2 enter 2, 0 - mov word_11E88, 1Ch - push 600050h - call sub_B5E2 + mov _window_tiles.x, (448 / WINDOW_TILE_W) + call window_singleline pascal, (96 shl 16) or 80 call graph_putsa_fx pascal, (112 shl 16) or 88, 15, ds, offset aSETUP_BGM_HEAD - mov word_11E88, 0Ah - mov word_11E8A, 4 - push 200080h - call sub_B572 + mov _window_tiles.x, (160 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 3 + call window_dropdown_animate pascal, ( 32 shl 16) or 128 mov [bp+var_2], 0 jmp short loc_B7EB ; --------------------------------------------------------------------------- @@ -1868,10 +1593,9 @@ loc_B7E4: loc_B7EB: cmp [bp+var_2], 3 jl short loc_B7D4 - mov word_11E88, 19h - mov word_11E8A, 0Ah - push 0C00080h - call sub_B572 + mov _window_tiles.x, (400 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 9 + call window_dropdown_animate pascal, (192 shl 16) or 128 call setup_bgm_help_put mov [bp+var_2], 2 @@ -1917,14 +1641,12 @@ loc_B870: ; --------------------------------------------------------------------------- loc_B87A: - mov word_11E88, 19h - mov word_11E8A, 0Ah - push 0C00080h - call sub_B65C - mov word_11E88, 0Ah - mov word_11E8A, 4 - push 200080h - call sub_B65C + mov _window_tiles.x, (400 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 9 + call window_rollup_animate pascal, (192 shl 16) or 128 + mov _window_tiles.x, (160 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 3 + call window_rollup_animate pascal, ( 32 shl 16) or 128 les bx, _humaconfig mov al, byte ptr [bp+var_2] mov es:[bx+10h], al @@ -1942,14 +1664,12 @@ sub_B8B1 proc near var_2 = word ptr -2 enter 2, 0 - mov word_11E88, 1Ch - push 600050h - call sub_B5E2 + mov _window_tiles.x, (448 / WINDOW_TILE_W) + call window_singleline pascal, (96 shl 16) or 80 call graph_putsa_fx pascal, (112 shl 16) or 88, 15, ds, offset aSETUP_SE_HEAD - mov word_11E88, 0Ah - mov word_11E8A, 4 - push 200080h - call sub_B572 + mov _window_tiles.x, (160 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 3 + call window_dropdown_animate pascal, ( 32 shl 16) or 128 mov [bp+var_2], 0 jmp short loc_B908 ; --------------------------------------------------------------------------- @@ -1973,10 +1693,9 @@ loc_B901: loc_B908: cmp [bp+var_2], 3 jl short loc_B8F1 - mov word_11E88, 19h - mov word_11E8A, 0Ah - push 0C00080h - call sub_B572 + mov _window_tiles.x, (400 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 9 + call window_dropdown_animate pascal, (192 shl 16) or 128 call setup_se_help_put mov [bp+var_2], 1 @@ -2022,14 +1741,12 @@ loc_B98D: ; --------------------------------------------------------------------------- loc_B997: - mov word_11E88, 19h - mov word_11E8A, 0Ah - push 0C00080h - call sub_B65C - mov word_11E88, 0Ah - mov word_11E8A, 4 - push 200080h - call sub_B65C + mov _window_tiles.x, (400 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 9 + call window_rollup_animate pascal, (192 shl 16) or 128 + mov _window_tiles.x, (160 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 3 + call window_rollup_animate pascal, ( 32 shl 16) or 128 les bx, _humaconfig mov al, byte ptr [bp+var_2] mov es:[bx+18h], al @@ -4782,8 +4499,7 @@ include th04/formats/cdg[bss].asm dd ? ; dd ? ; dd ? ; -word_11E88 dw ? -word_11E8A dw ? +include th04/setup[bss].asm include th04/zunsoft[bss].asm dd ? ; dd ? ; diff --git a/th05_op.asm b/th05_op.asm index dde3dd93..53b60181 100644 --- a/th05_op.asm +++ b/th05_op.asm @@ -1494,279 +1494,6 @@ loc_B058: retf _main endp - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B077 proc near - -var_2 = word ptr -2 -@@y = word ptr 4 -@@x = word ptr 6 - - enter 2, 0 - push si - push di - mov si, [bp+@@x] - mov di, [bp+@@y] - push si - push di - mov ax, word_12F30 - shl ax, 4 - push ax - push 10h - call egc_copy_rect_1_to_0 - call super_put pascal, si, di, 2 - push si - lea ax, [di+8] - push ax - push 6 - call super_put - add si, 16 - mov [bp+var_2], 1 - jmp short loc_B0CD -; --------------------------------------------------------------------------- - -loc_B0B2: - call super_put pascal, si, di, 0 - push si - lea ax, [di+8] - push ax - push 3 - call super_put - inc [bp+var_2] - add si, 16 - -loc_B0CD: - mov ax, word_12F30 - dec ax - cmp ax, [bp+var_2] - jg short loc_B0B2 - call super_put pascal, si, di, 4 - push si - lea ax, [di+8] - push ax - push 7 - call super_put - pop di - pop si - leave - retn 4 -sub_B077 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B0F1 proc near - -var_2 = word ptr -2 -@@y = word ptr 4 -@@x = word ptr 6 - - enter 2, 0 - push si - push di - mov si, [bp+@@x] - mov di, [bp+@@y] - push si - lea ax, [di+8] - push ax - mov ax, word_12F30 - shl ax, 4 - push ax - push 10h - call egc_copy_rect_1_to_0 - call super_put pascal, si, di, 6 - add si, 16 - mov [bp+var_2], 1 - jmp short loc_B132 -; --------------------------------------------------------------------------- - -loc_B123: - call super_put pascal, si, di, 3 - inc [bp+var_2] - add si, 16 - -loc_B132: - mov ax, word_12F30 - dec ax - cmp ax, [bp+var_2] - jg short loc_B123 - call super_put pascal, si, di, 7 - pop di - pop si - leave - retn 4 -sub_B0F1 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B14A proc near - -var_2 = word ptr -2 -@@y = word ptr 4 -@@x = word ptr 6 - - enter 2, 0 - push si - push di - mov ax, [bp+@@x] - mov [bp+var_2], ax - mov si, [bp+@@y] - call super_put pascal, ax, si, 5 - add [bp+var_2], 10h - mov di, 1 - jmp short loc_B17B -; --------------------------------------------------------------------------- - -loc_B16B: - call super_put pascal, [bp+var_2], si, 1 - inc di - add [bp+var_2], 10h - -loc_B17B: - mov ax, word_12F30 - dec ax - cmp ax, di - jg short loc_B16B - call super_put pascal, [bp+var_2], si, 8 - add si, 10h - mov di, 1 - jmp short loc_B1A8 -; --------------------------------------------------------------------------- - -loc_B196: - push [bp+@@x] - push si - call sub_B077 - push 1 - call frame_delay - inc di - add si, 8 - -loc_B1A8: - mov ax, word_12F32 - add ax, ax - add ax, 0FFFDh - cmp ax, di - jg short loc_B196 - pop di - pop si - leave - retn 4 -sub_B14A endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B1BA proc near - -var_2 = word ptr -2 -@@y = word ptr 4 -arg_2 = word ptr 6 - - enter 2, 0 - push si - push di - mov si, [bp+arg_2] - mov di, [bp+@@y] - push si - push di - mov ax, word_12F30 - shl ax, 4 - push ax - push 20h ; ' ' - call egc_copy_rect_1_to_0 - call super_put pascal, si, di, 5 - push si - lea ax, [di+16] - push ax - push 6 - call super_put - add si, 10h - mov [bp+var_2], 1 - jmp short loc_B210 -; --------------------------------------------------------------------------- - -loc_B1F5: - call super_put pascal, si, di, 1 - push si - lea ax, [di+16] - push ax - push 3 - call super_put - inc [bp+var_2] - add si, 16 - -loc_B210: - mov ax, word_12F30 - dec ax - cmp ax, [bp+var_2] - jg short loc_B1F5 - call super_put pascal, si, di, 8 - push si - lea ax, [di+16] - push ax - push 7 - call super_put - pop di - pop si - leave - retn 4 -sub_B1BA endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_B234 proc near - -arg_0 = word ptr 4 -arg_2 = word ptr 6 - - push bp - mov bp, sp - push si - push di - mov si, [bp+arg_0] - mov ax, word_12F32 - shl ax, 4 - add ax, 0FFF0h - add si, ax - mov di, 1 - jmp short loc_B25E -; --------------------------------------------------------------------------- - -loc_B24C: - push [bp+arg_2] - push si - call sub_B0F1 - push 1 - call frame_delay - inc di - sub si, 8 - -loc_B25E: - mov ax, word_12F32 - add ax, ax - add ax, 0FFFEh - cmp ax, di - jg short loc_B24C - pop di - pop si - pop bp - retn 4 -sub_B234 endp - include th04/setup.asm ; =============== S U B R O U T I N E ======================================= @@ -1778,14 +1505,12 @@ sub_B36C proc near var_2 = word ptr -2 enter 2, 0 - mov word_12F30, 1Ch - push 600050h - call sub_B1BA + mov _window_tiles.x, (448 / WINDOW_TILE_W) + call window_singleline pascal, (96 shl 16) or 80 call graph_putsa_fx pascal, (112 shl 16) or 88, 15, ds, offset aSETUP_BGM_HEAD - mov word_12F30, 0Ah - mov word_12F32, 4 - push 200080h - call sub_B14A + mov _window_tiles.x, (160 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 3 + call window_dropdown_animate pascal, ( 32 shl 16) or 128 mov [bp+var_2], 0 jmp short loc_B3C3 ; --------------------------------------------------------------------------- @@ -1809,10 +1534,9 @@ loc_B3BC: loc_B3C3: cmp [bp+var_2], 3 jl short loc_B3AC - mov word_12F30, 19h - mov word_12F32, 0Ah - push 0C00080h - call sub_B14A + mov _window_tiles.x, (400 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 9 + call window_dropdown_animate pascal, (192 shl 16) or 128 call setup_bgm_help_put mov [bp+var_2], 2 @@ -1858,14 +1582,12 @@ loc_B448: ; --------------------------------------------------------------------------- loc_B452: - mov word_12F30, 19h - mov word_12F32, 0Ah - push 0C00080h - call sub_B234 - mov word_12F30, 0Ah - mov word_12F32, 4 - push 200080h - call sub_B234 + mov _window_tiles.x, (400 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 9 + call window_rollup_animate pascal, (192 shl 16) or 128 + mov _window_tiles.x, (160 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 3 + call window_rollup_animate pascal, ( 32 shl 16) or 128 les bx, _ksoconfig mov al, byte ptr [bp+var_2] mov es:[bx+12h], al @@ -1883,14 +1605,12 @@ sub_B489 proc near var_2 = word ptr -2 enter 2, 0 - mov word_12F30, 1Ch - push 600050h - call sub_B1BA + mov _window_tiles.x, (448 / WINDOW_TILE_W) + call window_singleline pascal, (96 shl 16) or 80 call graph_putsa_fx pascal, (112 shl 16) or 88, 15, ds, offset aSETUP_SE_HEAD - mov word_12F30, 0Ah - mov word_12F32, 4 - push 200080h - call sub_B14A + mov _window_tiles.x, (160 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 3 + call window_dropdown_animate pascal, ( 32 shl 16) or 128 mov [bp+var_2], 0 jmp short loc_B4E0 ; --------------------------------------------------------------------------- @@ -1914,10 +1634,9 @@ loc_B4D9: loc_B4E0: cmp [bp+var_2], 3 jl short loc_B4C9 - mov word_12F30, 19h - mov word_12F32, 0Ah - push 0C00080h - call sub_B14A + mov _window_tiles.x, (400 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 9 + call window_dropdown_animate pascal, (192 shl 16) or 128 call setup_se_help_put mov [bp+var_2], 1 @@ -1963,14 +1682,12 @@ loc_B565: ; --------------------------------------------------------------------------- loc_B56F: - mov word_12F30, 19h - mov word_12F32, 0Ah - push 0C00080h - call sub_B234 - mov word_12F30, 0Ah - mov word_12F32, 4 - push 200080h - call sub_B234 + mov _window_tiles.x, (400 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 9 + call window_rollup_animate pascal, (192 shl 16) or 128 + mov _window_tiles.x, (160 / WINDOW_TILE_W) + mov _window_tiles.y, 1 + 3 + call window_rollup_animate pascal, ( 32 shl 16) or 128 les bx, _ksoconfig mov al, byte ptr [bp+var_2] mov es:[bx+15h], al @@ -4778,8 +4495,7 @@ include th04/hardware/egccopyr[bss].asm dd ? ; dd ? ; dd ? ; -word_12F30 dw ? -word_12F32 dw ? +include th04/setup[bss].asm include th04/zunsoft[bss].asm dd ? ; dd ? ;