From 64495ca98a6c2b6b455785e96288e0096a3e4dd6 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Sat, 10 Jun 2023 03:14:03 +0200 Subject: [PATCH] [Naming] [th04/th05] Verdict screen: Number rendering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One of which also has the convenient responsibility of adding or subtracting a number from the skill metric… Part of P0244, funded by Blue Bolt and [Anonymous]. --- th04/end/verdict.cpp | 33 ++++ th04/gaiji/verdict[data].asm | 6 + th04_maine.asm | 313 ++++++++++++++++------------------ th05_maine.asm | 321 +++++++++++++++++------------------ 4 files changed, 341 insertions(+), 332 deletions(-) create mode 100644 th04/end/verdict.cpp diff --git a/th04/end/verdict.cpp b/th04/end/verdict.cpp new file mode 100644 index 00000000..de237b0e --- /dev/null +++ b/th04/end/verdict.cpp @@ -0,0 +1,33 @@ +#include "platform.h" +#include "pc98.h" + +// If `true`, skill_apply_and_graph_percentage_put() will subtract the +// calculated fraction from [skill] rather than add it. +extern bool skill_subtract; + +extern uint32_t skill; + +// ZUN bloat: Turn into a parameter of graph_3_digit_put(). +extern bool graph_3_digit_put_as_fixed_2_digit; + +// Assumes that [num] is a 3-digit number and renders it right-aligned to the +// given VRAM position. +void pascal near graph_3_digit_put( + screen_x_t left, screen_y_t top, uint16_t num +) +; + +// Calculates ([share] / [total]), applies the result Γ— 1,000,000 to [skill], +// and renders it as a right-aligned 3.2-digit percentage to the given VRAM +// position. +void pascal near skill_apply_and_graph_percentage_put( + screen_x_t left, screen_y_t top, uint16_t total, uint16_t share +) +; + +// Calculates ([num] / 1,000,000) and renders the result as a right-aligned +// 3.2-digit fraction to the given VRAM position. +void pascal near graph_fraction_of_million_put( + screen_x_t left, screen_y_t top, uint32_t num +) +; diff --git a/th04/gaiji/verdict[data].asm b/th04/gaiji/verdict[data].asm index 960eae17..992aa5fe 100644 --- a/th04/gaiji/verdict[data].asm +++ b/th04/gaiji/verdict[data].asm @@ -1,5 +1,11 @@ +public _skill_subtract +_skill_subtract db 0 + grEASY db 2, 2, 2, 0AEh, 0AAh, 0BCh, 0C2h, 0 grNORMAL db 2, 0B7h, 0B8h, 0BBh, 0B6h, 0AAh, 0B5h, 0 grHARD db 2, 2, 2, 0B1h, 0AAh, 0BBh, 0ADh, 0 grLUNATIC db 0B5h, 0BEh, 0B7h, 0AAh, 0BDh, 0B2h, 0ACh, 0 grEXTRA db 2, 2, 0AEh, 0C1h, 0BDh, 0BBh, 0AAh, 0 + +public _graph_3_digit_put_as_fixed_2_dig +_graph_3_digit_put_as_fixed_2_dig db 0 diff --git a/th04_maine.asm b/th04_maine.asm index 6d5a8955..fa666f19 100644 --- a/th04_maine.asm +++ b/th04_maine.asm @@ -1091,34 +1091,34 @@ sub_B44D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame +public @GRAPH_3_DIGIT_PUT$QIIU +@graph_3_digit_put$qiiu proc near -sub_B787 proc near - -var_6 = word ptr -6 -@@g_str = byte ptr -4 -arg_0 = word ptr 4 -@@y = word ptr 6 -@@x = word ptr 8 +@@digit = word ptr -6 +@@g_str = byte ptr -4 +@@val = word ptr 4 +@@top = word ptr 6 +@@left = word ptr 8 enter 6, 0 push si xor si, si mov [bp+@@g_str], g_EMPTY - mov ax, [bp+arg_0] + mov ax, [bp+@@val] mov bx, 100 xor dx, dx div bx - mov [bp+var_6], ax - mov ax, [bp+arg_0] + mov [bp+@@digit], ax + mov ax, [bp+@@val] xor dx, dx div bx - mov [bp+arg_0], dx - cmp byte_EC73, 0 + mov [bp+@@val], dx + cmp _graph_3_digit_put_as_fixed_2_dig, 0 jnz short loc_B7C5 - or si, [bp+var_6] + or si, [bp+@@digit] or si, si jz short loc_B7C1 - mov al, byte ptr [bp+var_6] + mov al, byte ptr [bp+@@digit] add al, gb_0_ mov [bp+@@g_str], al jmp short loc_B7C5 @@ -1128,22 +1128,22 @@ loc_B7C1: mov [bp+@@g_str], g_EMPTY loc_B7C5: - mov ax, [bp+arg_0] + mov ax, [bp+@@val] mov bx, 10 xor dx, dx div bx - mov [bp+var_6], ax - mov ax, [bp+arg_0] + mov [bp+@@digit], ax + mov ax, [bp+@@val] xor dx, dx div bx - mov [bp+arg_0], dx - or si, [bp+var_6] - mov al, byte_EC73 + mov [bp+@@val], dx + or si, [bp+@@digit] + mov al, _graph_3_digit_put_as_fixed_2_dig mov ah, 0 or si, ax or si, si jz short loc_B7F4 - mov al, byte ptr [bp+var_6] + mov al, byte ptr [bp+@@digit] add al, gb_0_ mov [bp+@@g_str+1], al jmp short loc_B7F8 @@ -1153,12 +1153,12 @@ loc_B7F4: mov [bp+@@g_str+1], g_EMPTY loc_B7F8: - mov al, byte ptr [bp+arg_0] + mov al, byte ptr [bp+@@val] add al, gb_0_ mov [bp+@@g_str+2], al mov [bp+@@g_str+3], 0 - push [bp+@@x] - push [bp+@@y] + push [bp+@@left] + push [bp+@@top] push GAIJI_W push ss lea ax, [bp+@@g_str] @@ -1168,7 +1168,7 @@ loc_B7F8: pop si leave retn 6 -sub_B787 endp +@graph_3_digit_put$qiiu endp ; =============== S U B R O U T I N E ======================================= @@ -1231,92 +1231,86 @@ sub_B81D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame +public @SKILL_APPLY_AND_GRAPH_PERCENTAGE$QIIUIUI +@skill_apply_and_graph_percentage$qiiuiui proc near -sub_B886 proc near - -var_6 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah +@@fraction = dword ptr -6 +@@digits = word ptr -2 +@@share = word ptr 4 +@@total = word ptr 6 +@@top = word ptr 8 +@@left = word ptr 0Ah enter 6, 0 push si push di - mov si, [bp+arg_6] - mov di, [bp+arg_4] - cmp [bp+arg_2], 0 + mov si, [bp+@@left] + mov di, [bp+@@top] + cmp [bp+@@total], 0 jz short loc_B8A2 - mov [bp+var_6], 1000000 + mov [bp+@@fraction], 1000000 jmp short loc_B8AA ; --------------------------------------------------------------------------- loc_B8A2: - mov [bp+var_6], 0 + mov [bp+@@fraction], 0 loc_B8AA: - mov ax, [bp+arg_2] - cmp ax, [bp+arg_0] + mov ax, [bp+@@total] + cmp ax, [bp+@@share] jz short loc_B8E3 - cmp [bp+arg_2], 0 + cmp [bp+@@total], 0 jz short loc_B8CD - movzx ebx, [bp+arg_2] - mov eax, [bp+var_6] + movzx ebx, [bp+@@total] + mov eax, [bp+@@fraction] xor edx, edx div ebx - mov [bp+var_6], eax + mov [bp+@@fraction], eax jmp short loc_B8D5 ; --------------------------------------------------------------------------- loc_B8CD: - mov [bp+var_6], 0 + mov [bp+@@fraction], 0 loc_B8D5: - movzx eax, [bp+arg_0] - imul eax, [bp+var_6] - mov [bp+var_6], eax + movzx eax, [bp+@@share] + imul eax, [bp+@@fraction] + mov [bp+@@fraction], eax loc_B8E3: - cmp byte_EC4A, 0 + cmp _skill_subtract, 0 jnz short loc_B8F4 - mov eax, dword_124CE - add eax, [bp+var_6] + mov eax, _skill + add eax, [bp+@@fraction] jmp short loc_B8FC ; --------------------------------------------------------------------------- loc_B8F4: - mov eax, dword_124CE - sub eax, [bp+var_6] + mov eax, _skill + sub eax, [bp+@@fraction] loc_B8FC: - mov dword_124CE, eax - mov eax, [bp+var_6] + mov _skill, eax + mov eax, [bp+@@fraction] mov ebx, 10000 xor edx, edx div ebx - mov [bp+var_2], ax - push si - push di - push ax - call sub_B787 + mov [bp+@@digits], ax + call @graph_3_digit_put$qiiu pascal, si, di, ax mov ebx, 10000 - mov eax, [bp+var_6] + mov eax, [bp+@@fraction] xor edx, edx div ebx - mov [bp+var_6], edx - mov eax, [bp+var_6] + mov [bp+@@fraction], edx + mov eax, [bp+@@fraction] mov ebx, 100 xor edx, edx div ebx - mov [bp+var_2], ax - mov byte_EC73, 1 + mov [bp+@@digits], ax + mov _graph_3_digit_put_as_fixed_2_dig, 1 lea ax, [si+48] - push ax - push di - push [bp+var_2] - call sub_B787 - mov byte_EC73, 0 + call @graph_3_digit_put$qiiu pascal, ax, di, [bp+@@digits] + mov _graph_3_digit_put_as_fixed_2_dig, 0 lea ax, [si+48] call graph_putsa_fx pascal, ax, di, 14, ds, offset aBd ; "D" lea ax, [si+96] @@ -1325,58 +1319,52 @@ loc_B8FC: pop si leave retn 8 -sub_B886 endp +@skill_apply_and_graph_percentage$qiiuiui endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame +public @GRAPH_FRACTION_OF_MILLION_PUT$QIIUL +@graph_fraction_of_million_put$qiiul proc near -sub_B97B proc near - -var_2 = word ptr -2 -arg_0 = dword ptr 4 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah +@@digits = word ptr -2 +@@val = dword ptr 4 +@@top = word ptr 8 +@@left = word ptr 0Ah enter 2, 0 push si push di - mov si, [bp+arg_6] - mov di, [bp+arg_4] - mov eax, [bp+arg_0] + mov si, [bp+@@left] + mov di, [bp+@@top] + mov eax, [bp+@@val] mov ebx, 10000 xor edx, edx div ebx - mov [bp+var_2], ax - push si - push di - push ax - call sub_B787 + mov [bp+@@digits], ax + call @graph_3_digit_put$qiiu pascal, si, di, ax mov ebx, 10000 - mov eax, [bp+arg_0] + mov eax, [bp+@@val] xor edx, edx div ebx - mov [bp+arg_0], edx - mov eax, [bp+arg_0] + mov [bp+@@val], edx + mov eax, [bp+@@val] mov ebx, 100 xor edx, edx div ebx - mov [bp+var_2], ax - mov byte_EC73, 1 + mov [bp+@@digits], ax + mov _graph_3_digit_put_as_fixed_2_dig, 1 lea ax, [si+48] - push ax - push di - push [bp+var_2] - call sub_B787 - mov byte_EC73, 0 + call @graph_3_digit_put$qiiu pascal, ax, di, [bp+@@digits] + mov _graph_3_digit_put_as_fixed_2_dig, 0 lea ax, [si+48] call graph_putsa_fx pascal, ax, di, 14, ds, offset aBd_0 ; "D" pop di pop si leave retn 8 -sub_B97B endp +@graph_fraction_of_million_put$qiiul endp ; =============== S U B R O U T I N E ======================================= @@ -1513,12 +1501,10 @@ loc_BB2A: mov [bp+var_4], 1000000 loc_BB48: - mov eax, dword_124CE + mov eax, _skill add eax, [bp+var_4] - mov dword_124CE, eax - push 0C00108h - pushd [bp+var_4] - call sub_B97B + mov _skill, eax + call @graph_fraction_of_million_put$qiiul pascal, (192 shl 16) or 264, [bp+var_4] call graph_putsa_fx pascal, (288 shl 16) or 264, 14, ds, offset aBu_0 ; "“" leave retn @@ -1581,18 +1567,18 @@ loc_BC79: push 14 call graph_gaiji_puts call sub_B81D - push 0F00078h + push (240 shl 16) or 120 ; (left shl 16) or top les bx, _resident mov al, es:[bx+resident_t.miss_count] mov ah, 0 - push ax - call sub_B787 - push 0F00090h + push ax ; num + call @graph_3_digit_put$qiiu + push (240 shl 16) or 144 ; (left shl 16) or top les bx, _resident mov al, es:[bx+resident_t.bombs_used] mov ah, 0 - push ax - call sub_B787 + push ax ; num + call @graph_3_digit_put$qiiu call graph_putsa_fx pascal, (288 shl 16) or 120, 14, ds, offset aTimes ; "‰ρ" call graph_putsa_fx pascal, (288 shl 16) or 144, 14, ds, offset aTimes_0 ; "‰ρ" mov byte_124CC, 1 @@ -1604,7 +1590,7 @@ loc_BC79: mov es:[bx+resident_t.std_frames], 44000 loc_BCFF: - push 0C000A8h + push (192 shl 16) or 168 push 44000 jmp short loc_BD24 ; --------------------------------------------------------------------------- @@ -1616,53 +1602,53 @@ loc_BD0A: mov es:[bx+resident_t.std_frames], 12000 loc_BD1B: - push 0C000A8h - push 12000 + push (192 shl 16) or 168 ; (left shl 16) or top + push 12000 ; total loc_BD24: les bx, _resident - push es:[bx+resident_t.std_frames] - call sub_B886 + push es:[bx+resident_t.std_frames] ; share + call @skill_apply_and_graph_percentage$qiiuiui mov byte_124CC, 0 - push 0C000C0h + push (192 shl 16) or 192 ; (left shl 16) or top les bx, _resident - push es:[bx+resident_t.enemies_gone] - push es:[bx+resident_t.enemies_killed] - call sub_B886 - push 0C000D8h + push es:[bx+resident_t.enemies_gone] ; total + push es:[bx+resident_t.enemies_killed] ; share + call @skill_apply_and_graph_percentage$qiiuiui + push (192 shl 16) or 216 ; (left shl 16) or top les bx, _resident - push es:[bx+resident_t.items_spawned] - push es:[bx+resident_t.items_collected] - call sub_B886 - push 0C000F0h + push es:[bx+resident_t.items_spawned] ; total + push es:[bx+resident_t.items_collected] ; share + call @skill_apply_and_graph_percentage$qiiuiui + push (192 shl 16) or 240 ; (left shl 16) or top les bx, _resident - push es:[bx+resident_t.point_items_collected] - push es:[bx+resident_t.max_valued_point_items_collected] - call sub_B886 + push es:[bx+resident_t.point_items_collected] ; total + push es:[bx+resident_t.max_valued_point_items_collected] ; share + call @skill_apply_and_graph_percentage$qiiuiui call sub_B9F2 - push 0C00120h + push (192 shl 16) or 288 ; (left shl 16) or top les bx, _resident mov eax, es:[bx+resident_t.frames] mov ebx, 10 xor edx, edx div ebx - push ax + push ax ; total mov bx, word ptr _resident mov eax, es:[bx+resident_t.slow_frames] mov ebx, 10 xor edx, edx div ebx - push ax - call sub_B886 + push ax ; share + call @skill_apply_and_graph_percentage$qiiuiui mov ebx, 5 - mov eax, dword_124CE + mov eax, _skill cdq idiv ebx - mov dword_124CE, eax + mov _skill, eax les bx, _resident cmp es:[bx+resident_t.score_last][7], 9 jb short loc_BDD4 - add dword_124CE, 600000 + add _skill, 600000 jmp short loc_BE08 ; --------------------------------------------------------------------------- @@ -1670,7 +1656,7 @@ loc_BDD4: les bx, _resident movzx eax, es:[bx+resident_t.score_last][6] imul eax, 10000 - add dword_124CE, eax + add _skill, eax cmp es:[bx+resident_t.score_last][7], 3 jbe short loc_BE08 mov al, es:[bx+resident_t.score_last][7] @@ -1678,7 +1664,7 @@ loc_BDD4: add ax, -3 cwde imul eax, 100000 - add dword_124CE, eax + add _skill, eax loc_BE08: mov al, _verdict_rank @@ -1690,7 +1676,7 @@ loc_BE08: jmp cs:off_C0EE[bx] loc_BE1B: - sub dword_124CE, 50000 + sub _skill, 50000 mov [bp+var_4], 800000 jmp short loc_BE6F ; --------------------------------------------------------------------------- @@ -1701,19 +1687,19 @@ loc_BE2E: ; --------------------------------------------------------------------------- loc_BE38: - add dword_124CE, 150000 + add _skill, 150000 mov [bp+var_4], 1200000 jmp short loc_BE6F ; --------------------------------------------------------------------------- loc_BE4B: - add dword_124CE, 300000 + add _skill, 300000 mov [bp+var_4], 1400000 jmp short loc_BE6F ; --------------------------------------------------------------------------- loc_BE5E: - add dword_124CE, 450000 + add _skill, 450000 mov [bp+var_4], 1500000 loc_BE6F: @@ -1728,13 +1714,13 @@ loc_BE6F: jmp cs:off_C0E2[bx] loc_BE88: - add dword_124CE, 50000 + add _skill, 50000 add [bp+var_4], 100000 jmp short loc_BECA ; --------------------------------------------------------------------------- loc_BE9B: - add dword_124CE, 25000 + add _skill, 25000 add [bp+var_4], 50000 jmp short loc_BECA ; --------------------------------------------------------------------------- @@ -1764,26 +1750,26 @@ loc_BECA: ; --------------------------------------------------------------------------- loc_BEDF: - add dword_124CE, 50000 + add _skill, 50000 add [bp+var_4], 100000 jmp short loc_BF03 ; --------------------------------------------------------------------------- loc_BEF2: - add dword_124CE, 20000 + add _skill, 20000 add [bp+var_4], 50000 loc_BF03: les bx, _resident cmp es:[bx+resident_t.turbo_mode], 0 jnz short loc_BF17 - sub dword_124CE, 100000 + sub _skill, 100000 loc_BF17: les bx, _resident cmp es:[bx+resident_t.miss_count], 15 jb short loc_BF2D - sub dword_124CE, 300000 + sub _skill, 300000 jmp short loc_BF43 ; --------------------------------------------------------------------------- @@ -1791,13 +1777,13 @@ loc_BF2D: les bx, _resident movzx eax, es:[bx+resident_t.miss_count] imul eax, 20000 - sub dword_124CE, eax + sub _skill, eax loc_BF43: les bx, _resident cmp es:[bx+resident_t.bombs_used], 30 jb short loc_BF59 - sub dword_124CE, 90000 + sub _skill, 90000 jmp short loc_BF6F ; --------------------------------------------------------------------------- @@ -1805,7 +1791,7 @@ loc_BF59: les bx, _resident movzx eax, es:[bx+resident_t.bombs_used] imul eax, 3000 - sub dword_124CE, eax + sub _skill, eax loc_BF6F: les bx, _resident @@ -1814,15 +1800,15 @@ loc_BF6F: cmp _verdict_rank, RANK_EXTRA jz short loc_BF96 mov ebx, 2 - mov eax, dword_124CE + mov eax, _skill cdq idiv ebx - mov dword_124CE, eax + mov _skill, eax jmp short loc_BFB4 ; --------------------------------------------------------------------------- loc_BF96: - sub dword_124CE, 200000 + sub _skill, 200000 jmp short loc_BFB4 ; --------------------------------------------------------------------------- @@ -1833,18 +1819,18 @@ loc_BFA1: sub [bp+var_4], 100000 loc_BFB4: - cmp dword_124CE, 0 + cmp _skill, 0 jge short loc_BFC7 - mov dword_124CE, 0 + mov _skill, 0 jmp short loc_BFD9 ; --------------------------------------------------------------------------- loc_BFC7: - mov eax, dword_124CE + mov eax, _skill cmp eax, [bp+var_4] jbe short loc_BFD9 mov eax, [bp+var_4] - mov dword_124CE, eax + mov _skill, eax loc_BFD9: les bx, _resident @@ -1852,25 +1838,23 @@ loc_BFD9: shr eax, 1 cmp eax, es:[bx+resident_t.slow_frames] jbe loc_C0AE - push 0C00150h - pushd [dword_124CE] - call sub_B97B + call @graph_fraction_of_million_put$qiiul pascal, (192 shl 16) or 336, [_skill] call graph_putsa_fx pascal, (288 shl 16) or 336, 14, ds, offset aPoint ; "“_" push ds push offset a_ude_txt ; "_ude.txt" call file_ropen - cmp dword_124CE, 1500000 + cmp _skill, 1500000 jge short loc_C084 - cmp dword_124CE, 0 + cmp _skill, 0 jnz short loc_C02E mov si, 19h jmp short loc_C074 ; --------------------------------------------------------------------------- loc_C02E: - cmp dword_124CE, 1050000 + cmp _skill, 1050000 jge short loc_C051 - mov eax, dword_124CE + mov eax, _skill mov ebx, 50000 cdq idiv ebx @@ -1881,14 +1865,14 @@ loc_C02E: ; --------------------------------------------------------------------------- loc_C051: - cmp dword_124CE, 1200000 + cmp _skill, 1200000 jge short loc_C061 mov si, 3 jmp short loc_C074 ; --------------------------------------------------------------------------- loc_C061: - cmp dword_124CE, 1350000 + cmp _skill, 1350000 jge short loc_C071 mov si, 2 jmp short loc_C074 @@ -3309,9 +3293,7 @@ aSff6b_cdg db 'sff6b.cdg',0 aSff7_cdg db 'sff7.cdg',0 aSff7b_cdg db 'sff7b.cdg',0 db 0 -byte_EC4A db 0 include th04/gaiji/verdict[data].asm -byte_EC73 db 0 aU_ db '“_',0 aBd db 'D',0 aBu db '“',0 @@ -3381,7 +3363,8 @@ _dissolve_put_func dw ? db 2 dup(?) byte_124CC db ? db ? ; -dword_124CE dd ? +public _skill +_skill dd ? _verdict_rank db ? unk_124D3 db ? ; db 27 dup(?) diff --git a/th05_maine.asm b/th05_maine.asm index 9700e045..32db2fed 100644 --- a/th05_maine.asm +++ b/th05_maine.asm @@ -2595,8 +2595,8 @@ sub_C1DD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame - -sub_C5E7 proc near +public @GRAPH_3_DIGIT_PUT$QIIU +@graph_3_digit_put$qiiu proc near var_6 = word ptr -6 @@g_str = byte ptr -4 @@ -2617,7 +2617,7 @@ arg_0 = word ptr 4 xor dx, dx div bx mov [bp+arg_0], dx - cmp byte_11713, 0 + cmp _graph_3_digit_put_as_fixed_2_dig, 0 jnz short loc_C625 or si, [bp+var_6] or si, si @@ -2642,7 +2642,7 @@ loc_C625: div bx mov [bp+arg_0], dx or si, [bp+var_6] - mov al, byte_11713 + mov al, _graph_3_digit_put_as_fixed_2_dig mov ah, 0 or si, ax or si, si @@ -2672,7 +2672,7 @@ loc_C658: pop si leave retn 6 -sub_C5E7 endp +@graph_3_digit_put$qiiu endp ; =============== S U B R O U T I N E ======================================= @@ -2771,99 +2771,93 @@ sub_C67F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame +public @SKILL_APPLY_AND_GRAPH_PERCENTAGE$QIIUIUI +@skill_apply_and_graph_percentage$qiiuiui proc near -sub_C729 proc near - -var_6 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah +@@fraction = dword ptr -6 +@@digits = word ptr -2 +@@share = word ptr 4 +@@total = word ptr 6 +@@top = word ptr 8 +@@left = word ptr 0Ah enter 6, 0 push si push di - mov si, [bp+arg_6] - mov di, [bp+arg_4] - cmp [bp+arg_2], 0 + mov si, [bp+@@left] + mov di, [bp+@@top] + cmp [bp+@@total], 0 jz short loc_C745 - mov [bp+var_6], 1000000 + mov [bp+@@fraction], 1000000 jmp short loc_C74D ; --------------------------------------------------------------------------- loc_C745: - mov [bp+var_6], 0 + mov [bp+@@fraction], 0 loc_C74D: - mov ax, [bp+arg_2] - cmp ax, [bp+arg_0] + mov ax, [bp+@@total] + cmp ax, [bp+@@share] jz short loc_C786 - cmp [bp+arg_2], 0 + cmp [bp+@@total], 0 jz short loc_C770 - movzx ebx, [bp+arg_2] - mov eax, [bp+var_6] + movzx ebx, [bp+@@total] + mov eax, [bp+@@fraction] xor edx, edx div ebx - mov [bp+var_6], eax + mov [bp+@@fraction], eax jmp short loc_C778 ; --------------------------------------------------------------------------- loc_C770: - mov [bp+var_6], 0 + mov [bp+@@fraction], 0 loc_C778: - movzx eax, [bp+arg_0] - imul eax, [bp+var_6] - mov [bp+var_6], eax + movzx eax, [bp+@@share] + imul eax, [bp+@@fraction] + mov [bp+@@fraction], eax loc_C786: - cmp byte_116EA, 0 + cmp _skill_subtract, 0 jnz short loc_C797 - mov eax, dword_1517E - add eax, [bp+var_6] + mov eax, _skill + add eax, [bp+@@fraction] jmp short loc_C79F ; --------------------------------------------------------------------------- loc_C797: - mov eax, dword_1517E - sub eax, [bp+var_6] + mov eax, _skill + sub eax, [bp+@@fraction] loc_C79F: - mov dword_1517E, eax + mov _skill, eax cmp byte_1517C, 0 jz short loc_C7B6 - mov eax, [bp+var_6] + mov eax, [bp+@@fraction] shr eax, 2 mov dword_15182, eax loc_C7B6: - mov eax, [bp+var_6] + mov eax, [bp+@@fraction] mov ebx, 10000 xor edx, edx div ebx - mov [bp+var_2], ax - push si - push di - push ax - call sub_C5E7 + mov [bp+@@digits], ax + call @graph_3_digit_put$qiiu pascal, si, di, ax mov ebx, 10000 - mov eax, [bp+var_6] + mov eax, [bp+@@fraction] xor edx, edx div ebx - mov [bp+var_6], edx - mov eax, [bp+var_6] + mov [bp+@@fraction], edx + mov eax, [bp+@@fraction] mov ebx, 100 xor edx, edx div ebx - mov [bp+var_2], ax - mov byte_11713, 1 + mov [bp+@@digits], ax + mov _graph_3_digit_put_as_fixed_2_dig, 1 lea ax, [si+48] - push ax - push di - push [bp+var_2] - call sub_C5E7 - mov byte_11713, 0 + call @graph_3_digit_put$qiiu pascal, ax, di, [bp+@@digits] + mov _graph_3_digit_put_as_fixed_2_dig, 0 lea ax, [si+48] call graph_putsa_fx pascal, ax, di, col_116E4, ds, offset aBd lea ax, [si+96] @@ -2872,58 +2866,52 @@ loc_C7B6: pop si leave retn 8 -sub_C729 endp +@skill_apply_and_graph_percentage$qiiuiui endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame +public @GRAPH_FRACTION_OF_MILLION_PUT$QIIUL +@graph_fraction_of_million_put$qiiul proc near -sub_C835 proc near - -var_2 = word ptr -2 -arg_0 = dword ptr 4 -@@y = word ptr 8 -arg_6 = word ptr 0Ah +@@digits = word ptr -2 +@@val = dword ptr 4 +@@top = word ptr 8 +@@left = word ptr 0Ah enter 2, 0 push si push di - mov si, [bp+arg_6] - mov di, [bp+@@y] - mov eax, [bp+arg_0] + mov si, [bp+@@left] + mov di, [bp+@@top] + mov eax, [bp+@@val] mov ebx, 10000 xor edx, edx div ebx - mov [bp+var_2], ax - push si - push di - push ax - call sub_C5E7 + mov [bp+@@digits], ax + call @graph_3_digit_put$qiiu pascal, si, di, ax mov ebx, 10000 - mov eax, [bp+arg_0] + mov eax, [bp+@@val] xor edx, edx div ebx - mov [bp+arg_0], edx - mov eax, [bp+arg_0] + mov [bp+@@val], edx + mov eax, [bp+@@val] mov ebx, 100 xor edx, edx div ebx - mov [bp+var_2], ax - mov byte_11713, 1 + mov [bp+@@digits], ax + mov _graph_3_digit_put_as_fixed_2_dig, 1 lea ax, [si+48] - push ax - push di - push [bp+var_2] - call sub_C5E7 - mov byte_11713, 0 + call @graph_3_digit_put$qiiu pascal, ax, di, [bp+@@digits] + mov _graph_3_digit_put_as_fixed_2_dig, 0 lea ax, [si+48] call graph_putsa_fx pascal, ax, di, col_116E4, ds, offset aBd_0 pop di pop si leave retn 8 -sub_C835 endp +@graph_fraction_of_million_put$qiiul endp ; =============== S U B R O U T I N E ======================================= @@ -3041,15 +3029,15 @@ loc_C9B3: mov eax, [bp+var_4] imul eax, 100 mov [bp+var_4], eax - add dword_1517E, eax + add _skill, eax mov ax, x_116E2 add ax, 176 - push ax + push ax ; left mov ax, y_116E8 add ax, 216 - push ax - pushd [bp+var_4] - call sub_C835 + push ax ; top + pushd [bp+var_4] ; num + call @graph_fraction_of_million_put$qiiul mov ax, x_116E2 add ax, 272 push ax @@ -3178,7 +3166,7 @@ var_4 = dword ptr -4 enter 4, 0 push si - mov dword_1517E, 0 + mov _skill, 0 mov _graph_putsa_fx_func, FX_WEIGHT_BOLD call graph_putsa_fx pascal, x_116E2, y_116E8, col_116E4, ds, offset aB@b@b@b@b@b@b@ ; "@@@@@@@ ˜r‘O”»’θ" push x_116E2 @@ -3310,26 +3298,26 @@ loc_CBE3: call sub_C67F mov ax, x_116E2 add ax, 224 - push ax + push ax ; left mov ax, y_116E8 add ax, 72 - push ax + push ax ; top les bx, _resident mov al, es:[bx+resident_t.miss_count] mov ah, 0 - push ax - call sub_C5E7 + push ax ; num + call @graph_3_digit_put$qiiu mov ax, x_116E2 add ax, 224 - push ax + push ax ; left mov ax, y_116E8 add ax, 96 - push ax + push ax ; top les bx, _resident mov al, es:[bx+resident_t.bombs_used] mov ah, 0 - push ax - call sub_C5E7 + push ax ; num + call @graph_3_digit_put$qiiu mov ax, x_116E2 add ax, 272 push ax @@ -3378,80 +3366,80 @@ loc_CCC6: loc_CCD7: mov ax, x_116E2 add ax, 176 - push ax + push ax ; left mov ax, y_116E8 add ax, 120 - push ax - push 12800 + push ax ; top + push 12800 ; total loc_CCE8: les bx, _resident - push es:[bx+resident_t.std_frames] - call sub_C729 + push es:[bx+resident_t.std_frames] ; share + call @skill_apply_and_graph_percentage$qiiuiui mov byte_1517C, 0 mov ax, x_116E2 add ax, 176 - push ax + push ax ; left mov ax, y_116E8 add ax, 144 - push ax + push ax ; top les bx, _resident - push es:[bx+resident_t.enemies_gone] - push es:[bx+resident_t.enemies_killed] - call sub_C729 + push es:[bx+resident_t.enemies_gone] ; total + push es:[bx+resident_t.enemies_killed] ; share + call @skill_apply_and_graph_percentage$qiiuiui mov ax, x_116E2 add ax, 176 - push ax + push ax ; left mov ax, y_116E8 add ax, 168 - push ax + push ax ; top les bx, _resident - push es:[bx+resident_t.items_spawned] - push es:[bx+resident_t.items_collected] - call sub_C729 + push es:[bx+resident_t.items_spawned] ; total + push es:[bx+resident_t.items_collected] ; share + call @skill_apply_and_graph_percentage$qiiuiui mov ax, x_116E2 add ax, 176 - push ax + push ax ; left mov ax, y_116E8 add ax, 192 - push ax + push ax ; top les bx, _resident - push es:[bx+resident_t.point_items_collected] - push es:[bx+resident_t.max_valued_point_items_collected] - call sub_C729 + push es:[bx+resident_t.point_items_collected] ; total + push es:[bx+resident_t.max_valued_point_items_collected] ; share + call @skill_apply_and_graph_percentage$qiiuiui call sub_C8AE - mov byte_116EA, 1 + mov _skill_subtract, 1 mov ax, x_116E2 add ax, 176 - push ax + push ax ; left mov ax, y_116E8 add ax, 240 - push ax + push ax ; top les bx, _resident mov eax, es:[bx+resident_t.frames] mov ebx, 10 xor edx, edx div ebx - push ax + push ax ; total mov bx, word ptr _resident mov eax, es:[bx+resident_t.slow_frames] mov ebx, 10 xor edx, edx div ebx - push ax - call sub_C729 - mov byte_116EA, 0 + push ax ; share + call @skill_apply_and_graph_percentage$qiiuiui + mov _skill_subtract, 0 mov ebx, 12 - mov eax, dword_1517E + mov eax, _skill cdq idiv ebx - mov dword_1517E, eax + mov _skill, eax mov eax, dword_15182 - add dword_1517E, eax + add _skill, eax les bx, _resident cmp es:[bx+resident_t.score_highest][7], 10 jb short loc_CDCB - add dword_1517E, 500000 + add _skill, 500000 jmp short loc_CDF3 ; --------------------------------------------------------------------------- @@ -3459,10 +3447,10 @@ loc_CDCB: les bx, _resident movzx eax, es:[bx+resident_t.score_highest][6] imul eax, 5000 - add dword_1517E, eax + add _skill, eax movzx eax, es:[bx+resident_t.score_highest][7] imul eax, 50000 - add dword_1517E, eax + add _skill, eax loc_CDF3: mov al, _verdict_rank @@ -3474,7 +3462,7 @@ loc_CDF3: jmp cs:off_D165[bx] loc_CE08: - sub dword_1517E, 50000 + sub _skill, 50000 mov [bp+var_4], 800000 jmp loc_CEAF ; --------------------------------------------------------------------------- @@ -3485,40 +3473,40 @@ loc_CE1C: ; --------------------------------------------------------------------------- loc_CE27: - mov eax, dword_1517E + mov eax, _skill imul eax, 5 - mov dword_1517E, eax + mov _skill, eax mov ebx, 4 cdq idiv ebx - mov dword_1517E, eax - add dword_1517E, 150000 + mov _skill, eax + add _skill, 150000 mov [bp+var_4], 1200000 jmp short loc_CEAF ; --------------------------------------------------------------------------- loc_CE55: - mov eax, dword_1517E + mov eax, _skill imul eax, 3 - mov dword_1517E, eax + mov _skill, eax mov ebx, 2 cdq idiv ebx - mov dword_1517E, eax - add dword_1517E, 300000 + mov _skill, eax + add _skill, 300000 mov [bp+var_4], 1400000 jmp short loc_CEAF ; --------------------------------------------------------------------------- loc_CE83: - mov eax, dword_1517E + mov eax, _skill imul eax, 3 - mov dword_1517E, eax + mov _skill, eax mov ebx, 2 cdq idiv ebx - mov dword_1517E, eax - add dword_1517E, 250000 + mov _skill, eax + add _skill, 250000 mov [bp+var_4], 2000000 loc_CEAF: @@ -3533,13 +3521,13 @@ loc_CEAF: jmp cs:off_D159[bx] loc_CEC8: - add dword_1517E, 50000 + add _skill, 50000 add [bp+var_4], 100000 jmp short loc_CF0A ; --------------------------------------------------------------------------- loc_CEDB: - add dword_1517E, 25000 + add _skill, 25000 add [bp+var_4], 50000 jmp short loc_CF0A ; --------------------------------------------------------------------------- @@ -3571,33 +3559,33 @@ loc_CF0A: ; --------------------------------------------------------------------------- loc_CF24: - add dword_1517E, 50000 + add _skill, 50000 add [bp+var_4], 100000 jmp short loc_CF5B ; --------------------------------------------------------------------------- loc_CF37: - add dword_1517E, 30000 + add _skill, 30000 add [bp+var_4], 50000 jmp short loc_CF5B ; --------------------------------------------------------------------------- loc_CF4A: - add dword_1517E, 20000 + add _skill, 20000 add [bp+var_4], 25000 loc_CF5B: les bx, _resident cmp es:[bx+resident_t.turbo_mode], 0 jnz short loc_CF77 - sub dword_1517E, 200000 + sub _skill, 200000 sub [bp+var_4], 100000 loc_CF77: les bx, _resident cmp es:[bx+resident_t.miss_count], 10 jb short loc_CF8D - sub dword_1517E, 300000 + sub _skill, 300000 jmp short loc_CFA3 ; --------------------------------------------------------------------------- @@ -3605,13 +3593,13 @@ loc_CF8D: les bx, _resident movzx eax, es:[bx+resident_t.miss_count] imul eax, 30000 - sub dword_1517E, eax + sub _skill, eax loc_CFA3: les bx, _resident cmp es:[bx+resident_t.bombs_used], 15 jb short loc_CFB9 - sub dword_1517E, 225000 + sub _skill, 225000 jmp short loc_CFCF ; --------------------------------------------------------------------------- @@ -3619,33 +3607,33 @@ loc_CFB9: les bx, _resident movzx eax, es:[bx+resident_t.bombs_used] imul eax, 15000 - sub dword_1517E, eax + sub _skill, eax loc_CFCF: les bx, _resident cmp es:[bx+resident_t.end_sequence], ES_EXTRA jnb short loc_CFF5 - mov eax, dword_1517E + mov eax, _skill imul eax, 7 - mov dword_1517E, eax + mov _skill, eax mov ebx, 8 cdq idiv ebx - mov dword_1517E, eax + mov _skill, eax loc_CFF5: - cmp dword_1517E, 0 + cmp _skill, 0 jge short loc_D008 - mov dword_1517E, 0 + mov _skill, 0 jmp short loc_D01A ; --------------------------------------------------------------------------- loc_D008: - mov eax, dword_1517E + mov eax, _skill cmp eax, [bp+var_4] jbe short loc_D01A mov eax, [bp+var_4] - mov dword_1517E, eax + mov _skill, eax loc_D01A: mov byte_15187, 0 @@ -3657,12 +3645,12 @@ loc_D01A: jbe loc_D120 mov ax, x_116E2 add ax, 176 - push ax + push ax ; left mov ax, y_116E8 add ax, 272 - push ax - pushd [dword_1517E] - call sub_C835 + push ax ; top + pushd [_skill] ; num + call @graph_fraction_of_million_put$qiiul mov ax, x_116E2 add ax, 272 push ax @@ -3676,18 +3664,18 @@ loc_D01A: push ds push offset a_ude_txt ; "_ude.txt" call file_ropen - cmp dword_1517E, 1500000 + cmp _skill, 1500000 jge short loc_D0E1 - cmp dword_1517E, 0 + cmp _skill, 0 jnz short loc_D08B mov si, 19h jmp short loc_D0D1 ; --------------------------------------------------------------------------- loc_D08B: - cmp dword_1517E, 1050000 + cmp _skill, 1050000 jge short loc_D0AE - mov eax, dword_1517E + mov eax, _skill mov ebx, 50000 cdq idiv ebx @@ -3698,14 +3686,14 @@ loc_D08B: ; --------------------------------------------------------------------------- loc_D0AE: - cmp dword_1517E, 1200000 + cmp _skill, 1200000 jge short loc_D0BE mov si, 3 jmp short loc_D0D1 ; --------------------------------------------------------------------------- loc_D0BE: - cmp dword_1517E, 1350000 + cmp _skill, 1350000 jge short loc_D0CE mov si, 2 jmp short loc_D0D1 @@ -6594,9 +6582,7 @@ x_116E2 dw 336 col_116E4 dw 2 word_116E6 dw 6 y_116E8 dw 48 -byte_116EA db 0 include th04/gaiji/verdict[data].asm -byte_11713 db 0 aU__0 db '“_',0 aBd db 'D',0 aBu db '“',0 @@ -6699,9 +6685,10 @@ include th03/hiscore/regist[bss].asm _rank db ? playchar_15178 db ? db 3 dup(?) +public _skill byte_1517C db ? db ? -dword_1517E dd ? +_skill dd ? dword_15182 dd ? _verdict_rank db ? byte_15187 db ?