diff --git a/Makefile.mak b/Makefile.mak index b3ceaf8b..2d92d806 100644 --- a/Makefile.mak +++ b/Makefile.mak @@ -47,12 +47,12 @@ bin\Pipeline\grzview.com: Pipeline\grzview.cpp th01\formats\grz.cpp bin\th01\zunsoft.com: th01\zunsoft.c $(CC) $(CFLAGS) -mt -lt -nbin\th01\ $** masters.lib -bin\th01\op.exe: bin\th01\op.obj th01\op_02.c th01\op_03.c th01\op_04.c th01\op_05.c th01\op_06.cpp th01\op_08.c th01\op_09.cpp th01\op_10.c th01\op_11.c th01\op_12.cpp +bin\th01\op.exe: bin\th01\op.obj th01\op_02.c th01\op_03.c th01\op_04.c th01\op_05.c th01\op_06.cpp th01\op_07.cpp th01\op_08.c th01\op_09.cpp th01\op_10.c th01\op_11.c th01\op_12.cpp $(CC) $(CFLAGS) -ml -3 -DGAME=1 -DBINARY='O' -nbin\th01\ -eOP.EXE @&&| $** | -bin\th01\reiiden.exe: bin\th01\reiiden.obj th01\main_02.c th01\main_03.c th01\main_04.c th01\main_05.c th01\main_06.cpp th01\main_08.cpp th01\main_12.c th01\main_13.c th01\main_14.c th01\main_16.c +bin\th01\reiiden.exe: bin\th01\reiiden.obj th01\main_02.c th01\main_03.c th01\main_04.c th01\main_05.c th01\main_06.cpp th01\main_07.cpp th01\main_08.cpp th01\main_12.c th01\main_13.c th01\main_14.c th01\main_16.c $(CC) $(CFLAGS) -ml -3 -DGAME=1 -DBINARY='M' -nbin\th01\ -eREIIDEN.EXE @&&| $** | diff --git a/th01/formats/ptn.hpp b/th01/formats/ptn.hpp index 84db3968..5e60e46c 100644 --- a/th01/formats/ptn.hpp +++ b/th01/formats/ptn.hpp @@ -2,7 +2,8 @@ /// ----------------------------------------- /// Provides functions for both 32×32 and 16×16 sprites, and optionally /// supports transparency for images loaded from .PTN files, hardcoded to -/// color #15. +/// color #15. Can also be used to store the backgrounds of frequently updated +/// VRAM regions, using the functions for raw allocation and VRAM snapping. #define PTN_W 32 #define PTN_H 32 @@ -76,6 +77,10 @@ static inline ptn_t* ptn_with_id(int id) // Displays the given [ptn_id] at (⌊left/8⌋*8, top), disregaring its alpha // plane. void ptn_put_noalpha_8(int left, int top, int ptn_id); + +// Overwrites the 4 color planes of [ptn_id] with the current VRAM content of +// the 32×32 pixels starting at (⌊left/8⌋*8, top). +void ptn_snap_8(int left, int top, int ptn_id); // ------------ // 16×16 access @@ -103,5 +108,9 @@ struct PTNQuarter // Displays the given [quarter] of the given [ptn_id] at (⌊left/8⌋*8, top), // diregarding its alpha plane. void ptn_put_quarter_noalpha_8(int left, int top, int ptn_id, int quarter); + +// Overwrites the 4 color planes of the given [quarter] of [ptn_id] with the +// current VRAM content of the 16×16 pixels starting at (⌊left/8⌋*8, top). +void ptn_snap_quarter_8(int left, int top, int ptn_id, int quarter); // ------------ /// ----------------------------------------- diff --git a/th01/formats/ptn_snap.cpp b/th01/formats/ptn_snap.cpp new file mode 100644 index 00000000..bfaf24cd --- /dev/null +++ b/th01/formats/ptn_snap.cpp @@ -0,0 +1,60 @@ +extern "C" { + +#include "th01/formats/ptn.hpp" + +void ptn_snap_8(int left, int top, int ptn_id) +{ + unsigned int vram_offset = vram_offset_muldiv(left, top); + ptn_t *ptn = ptn_with_id(ptn_id); + for(int y = 0; y < PTN_H; y++) { + #define snap(ptn, vram_offset, w) \ + ptn->planes.B[y] = VRAM_CHUNK(B, vram_offset, w); \ + ptn->planes.R[y] = VRAM_CHUNK(R, vram_offset, w); \ + ptn->planes.G[y] = VRAM_CHUNK(G, vram_offset, w); \ + ptn->planes.E[y] = VRAM_CHUNK(E, vram_offset, w); + snap(ptn, vram_offset, PTN_W); + #undef snap + vram_offset += ROW_SIZE; + } +} + +static inline ptn_dots_t dot_mask(int x, int w) +{ + return static_cast((1u << w) - 1u) << (w - x); +} + +void ptn_snap_quarter_8(int left, int top, int ptn_id, int quarter) +{ + int y; + unsigned int vram_offset = vram_offset_muldiv(left, top); + int q_y; + ptn_dots_t q_mask; + long q_x; + ptn_t *ptn = ptn_with_id(ptn_id); + + q_y = ptn_quarter_y(quarter); + q_mask = (quarter & 1) + ? dot_mask(PTN_QUARTER_W, PTN_QUARTER_W) + : dot_mask( 0, PTN_QUARTER_W); + q_x = ptn_quarter_x(quarter); + + for(y = q_y; y < (q_y + PTN_QUARTER_H); y++) { + #define snap_quarter_plane(P, offset, w) \ + ptn->planes.P[y] &= q_mask; \ + ptn->planes.P[y] |= (VRAM_CHUNK(P, offset, w) << q_x) & ~q_mask; + + #define snap_quarter(offset, w) \ + snap_quarter_plane(B, offset, w); \ + snap_quarter_plane(R, offset, w); \ + snap_quarter_plane(G, offset, w); \ + snap_quarter_plane(E, offset, w); + + snap_quarter(vram_offset, PTN_W); + + #undef snap_quarter + #undef snap_quarter_plane + vram_offset += ROW_SIZE; + } +} + +} diff --git a/th01/main_07.cpp b/th01/main_07.cpp new file mode 100644 index 00000000..f0eeec64 --- /dev/null +++ b/th01/main_07.cpp @@ -0,0 +1,10 @@ +/* ReC98 + * ----- + * Code segment #7 of TH01's REIIDEN.EXE + */ + +#pragma option -Z + +#include "ReC98.h" + +#include "th01/formats/ptn_snap.cpp" diff --git a/th01/op_07.cpp b/th01/op_07.cpp new file mode 100644 index 00000000..a94fe78c --- /dev/null +++ b/th01/op_07.cpp @@ -0,0 +1,10 @@ +/* ReC98 + * ----- + * Code segment #7 of TH01's OP.EXE + */ + +#pragma option -Z + +#include "ReC98.h" + +#include "th01/formats/ptn_snap.cpp" diff --git a/th01_op.asm b/th01_op.asm index 7382fdf5..0b8de1cf 100644 --- a/th01_op.asm +++ b/th01_op.asm @@ -2285,235 +2285,6 @@ loc_D3B6: leave retf _egc_copy_rect_1_to_0 endp - -; --------------------------------------------------------------------------- - enter 4, 0 - push si - push di - mov di, [bp+0Ah] - mov ax, [bp+8] - imul ax, 50h - push ax - mov ax, [bp+6] - mov bx, 8 - cwd - idiv bx - pop dx - add dx, ax - mov si, dx - mov ax, di - mov bx, 40h - cwd - idiv bx - shl ax, 2 - mov bx, ax - mov ax, word ptr (_ptn_images + 2)[bx] - mov dx, word ptr _ptn_images[bx] - push ax - mov ax, di - mov bx, 40h - push dx - cwd - idiv bx - imul dx, size ptn_t - pop ax - add ax, dx - pop dx - mov [bp-2], dx - mov [bp-4], ax - xor cx, cx - jmp short loc_D481 -; --------------------------------------------------------------------------- - -loc_D416: - les bx, _VRAM_PLANE_B - add bx, si - mov eax, es:[bx] - mov dx, cx - shl dx, 2 - les bx, [bp-4] - add bx, dx - mov es:[bx+ptn_t.planes.PTN_B], eax - les bx, _VRAM_PLANE_R - add bx, si - mov eax, es:[bx] - mov dx, cx - shl dx, 2 - les bx, [bp-4] - add bx, dx - mov es:[bx+ptn_t.planes.PTN_R], eax - les bx, _VRAM_PLANE_G - add bx, si - mov eax, es:[bx] - mov dx, cx - shl dx, 2 - les bx, [bp-4] - add bx, dx - mov es:[bx+ptn_t.planes.PTN_G], eax - les bx, _VRAM_PLANE_E - add bx, si - mov eax, es:[bx] - mov dx, cx - shl dx, 2 - les bx, [bp-4] - add bx, dx - mov es:[bx+ptn_t.planes.PTN_E], eax - add si, ROW_SIZE - inc cx - -loc_D481: - cmp cx, PTN_H - jl short loc_D416 - pop di - pop si - leave - retf -; --------------------------------------------------------------------------- - enter 0Eh, 0 - push si - push di - mov ax, [bp+8] - imul ax, 50h - push ax - mov ax, [bp+6] - mov bx, 8 - cwd - idiv bx - pop dx - add dx, ax - mov di, dx - mov ax, [bp+0Ah] - mov bx, 40h - cwd - idiv bx - shl ax, 2 - mov bx, ax - mov ax, word ptr (_ptn_images + 2)[bx] - mov dx, word ptr _ptn_images[bx] - push ax - mov ax, [bp+0Ah] - mov bx, 40h - push dx - cwd - idiv bx - imul dx, size ptn_t - pop ax - add ax, dx - pop dx - mov [bp-0Ch], dx - mov [bp-0Eh], ax - test byte ptr [bp+0Ch], 2 - jz short loc_D4DF - mov ax, 10h - jmp short loc_D4E1 -; --------------------------------------------------------------------------- - -loc_D4DF: - xor ax, ax - -loc_D4E1: - mov [bp-2], ax - test byte ptr [bp+0Ch], 1 - jz short loc_D4F2 - mov eax, 0FFFFh - jmp short loc_D4F8 -; --------------------------------------------------------------------------- - -loc_D4F2: - mov eax, 0FFFF0000h - -loc_D4F8: - mov [bp-6], eax - test byte ptr [bp+0Ch], 1 - jz short loc_D507 - mov ax, 10h - jmp short loc_D509 -; --------------------------------------------------------------------------- - -loc_D507: - xor ax, ax - -loc_D509: - cwde - mov [bp-0Ah], eax - mov si, [bp-2] - jmp loc_D5E8 -; --------------------------------------------------------------------------- - -loc_D515: - mov ax, si - shl ax, 2 - les bx, [bp-0Eh] - add bx, ax - mov eax, [bp-6] - and es:[bx+ptn_t.planes.PTN_B], eax - les bx, _VRAM_PLANE_B - add bx, di - mov eax, es:[bx] - mov cl, [bp-0Ah] - shl eax, cl - mov edx, [bp-6] - not edx - and eax, edx - mov dx, si - shl dx, 2 - les bx, [bp-0Eh] - add bx, dx - or es:[bx+ptn_t.planes.PTN_B], eax - mov eax, [bp-6] - and es:[bx+ptn_t.planes.PTN_R], eax - les bx, _VRAM_PLANE_R - add bx, di - mov eax, es:[bx] - shl eax, cl - mov edx, [bp-6] - not edx - and eax, edx - mov dx, si - shl dx, 2 - les bx, [bp-0Eh] - add bx, dx - or es:[bx+ptn_t.planes.PTN_R], eax - mov eax, [bp-6] - and es:[bx+ptn_t.planes.PTN_G], eax - les bx, _VRAM_PLANE_G - add bx, di - mov eax, es:[bx] - shl eax, cl - mov edx, [bp-6] - not edx - and eax, edx - mov dx, si - shl dx, 2 - les bx, [bp-0Eh] - add bx, dx - or es:[bx+ptn_t.planes.PTN_G], eax - mov eax, [bp-6] - and es:[bx+ptn_t.planes.PTN_E], eax - les bx, _VRAM_PLANE_E - add bx, di - mov eax, es:[bx] - shl eax, cl - mov edx, [bp-6] - not edx - and eax, edx - mov dx, si - shl dx, 2 - les bx, [bp-0Eh] - add bx, dx - or es:[bx+ptn_t.planes.PTN_E], eax - add di, ROW_SIZE - inc si - -loc_D5E8: - mov ax, [bp-2] - add ax, 10h - cmp ax, si - jg loc_D515 - pop di - pop si - leave - retf op_07_TEXT ends ; =========================================================================== diff --git a/th01_reiiden.asm b/th01_reiiden.asm index 4ba84a10..b96e6e0e 100644 --- a/th01_reiiden.asm +++ b/th01_reiiden.asm @@ -5460,264 +5460,8 @@ loc_104B1: retf _egc_copy_rect_1_to_0 endp - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_104C2 proc far - -@@ptn = dword ptr -4 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah - - enter 4, 0 - push si - push di - mov di, [bp+arg_4] - mov ax, [bp+arg_2] - imul ax, 50h - push ax - mov ax, [bp+arg_0] - mov bx, 8 - cwd - idiv bx - pop dx - add dx, ax - mov si, dx - mov ax, di - mov bx, 40h - cwd - idiv bx - shl ax, 2 - mov bx, ax - mov ax, word ptr (_ptn_images + 2)[bx] - mov dx, word ptr _ptn_images[bx] - push ax - mov ax, di - mov bx, 40h - push dx - cwd - idiv bx - imul dx, size ptn_t - pop ax - add ax, dx - pop dx - mov word ptr [bp+@@ptn+2], dx - mov word ptr [bp+@@ptn], ax - xor cx, cx - jmp short loc_1057C -; --------------------------------------------------------------------------- - -loc_10511: - les bx, _VRAM_PLANE_B - add bx, si - mov eax, es:[bx] - mov dx, cx - shl dx, 2 - les bx, [bp+@@ptn] - add bx, dx - mov es:[bx+ptn_t.planes.PTN_B], eax - les bx, _VRAM_PLANE_R - add bx, si - mov eax, es:[bx] - mov dx, cx - shl dx, 2 - les bx, [bp+@@ptn] - add bx, dx - mov es:[bx+ptn_t.planes.PTN_R], eax - les bx, _VRAM_PLANE_G - add bx, si - mov eax, es:[bx] - mov dx, cx - shl dx, 2 - les bx, [bp+@@ptn] - add bx, dx - mov es:[bx+ptn_t.planes.PTN_G], eax - les bx, _VRAM_PLANE_E - add bx, si - mov eax, es:[bx] - mov dx, cx - shl dx, 2 - les bx, [bp+@@ptn] - add bx, dx - mov es:[bx+ptn_t.planes.PTN_E], eax - add si, ROW_SIZE - inc cx - -loc_1057C: - cmp cx, PTN_H - jl short loc_10511 - pop di - pop si - leave - retf -sub_104C2 endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_10585 proc far - -@@ptn = dword ptr -0Eh -var_A = dword ptr -0Ah -var_6 = dword ptr -6 -var_2 = word ptr -2 -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = byte ptr 0Ch - - enter 0Eh, 0 - push si - push di - mov ax, [bp+arg_2] - imul ax, 50h - push ax - mov ax, [bp+arg_0] - mov bx, 8 - cwd - idiv bx - pop dx - add dx, ax - mov di, dx - mov ax, [bp+arg_4] - mov bx, 40h - cwd - idiv bx - shl ax, 2 - mov bx, ax - mov ax, word ptr (_ptn_images + 2)[bx] - mov dx, word ptr _ptn_images[bx] - push ax - mov ax, [bp+arg_4] - mov bx, 40h - push dx - cwd - idiv bx - imul dx, size ptn_t - pop ax - add ax, dx - pop dx - mov word ptr [bp+@@ptn+2], dx - mov word ptr [bp+@@ptn], ax - test [bp+arg_6], 2 - jz short loc_105DA - mov ax, 10h - jmp short loc_105DC -; --------------------------------------------------------------------------- - -loc_105DA: - xor ax, ax - -loc_105DC: - mov [bp+var_2], ax - test [bp+arg_6], 1 - jz short loc_105ED - mov eax, 0FFFFh - jmp short loc_105F3 -; --------------------------------------------------------------------------- - -loc_105ED: - mov eax, 0FFFF0000h - -loc_105F3: - mov [bp+var_6], eax - test [bp+arg_6], 1 - jz short loc_10602 - mov ax, 10h - jmp short loc_10604 -; --------------------------------------------------------------------------- - -loc_10602: - xor ax, ax - -loc_10604: - cwde - mov [bp+var_A], eax - mov si, [bp+var_2] - jmp loc_106E3 -; --------------------------------------------------------------------------- - -loc_10610: - mov ax, si - shl ax, 2 - les bx, [bp+@@ptn] - add bx, ax - mov eax, [bp+var_6] - and es:[bx+ptn_t.planes.PTN_B], eax - les bx, _VRAM_PLANE_B - add bx, di - mov eax, es:[bx] - mov cl, byte ptr [bp+var_A] - shl eax, cl - mov edx, [bp+var_6] - not edx - and eax, edx - mov dx, si - shl dx, 2 - les bx, [bp+@@ptn] - add bx, dx - or es:[bx+ptn_t.planes.PTN_B], eax - mov eax, [bp+var_6] - and es:[bx+ptn_t.planes.PTN_R], eax - les bx, _VRAM_PLANE_R - add bx, di - mov eax, es:[bx] - shl eax, cl - mov edx, [bp+var_6] - not edx - and eax, edx - mov dx, si - shl dx, 2 - les bx, [bp+@@ptn] - add bx, dx - or es:[bx+ptn_t.planes.PTN_R], eax - mov eax, [bp+var_6] - and es:[bx+ptn_t.planes.PTN_G], eax - les bx, _VRAM_PLANE_G - add bx, di - mov eax, es:[bx] - shl eax, cl - mov edx, [bp+var_6] - not edx - and eax, edx - mov dx, si - shl dx, 2 - les bx, [bp+@@ptn] - add bx, dx - or es:[bx+ptn_t.planes.PTN_G], eax - mov eax, [bp+var_6] - and es:[bx+ptn_t.planes.PTN_E], eax - les bx, _VRAM_PLANE_E - add bx, di - mov eax, es:[bx] - shl eax, cl - mov edx, [bp+var_6] - not edx - and eax, edx - mov dx, si - shl dx, 2 - les bx, [bp+@@ptn] - add bx, dx - or es:[bx+ptn_t.planes.PTN_E], eax - add di, ROW_SIZE - inc si - -loc_106E3: - mov ax, [bp+var_2] - add ax, 10h - cmp ax, si - jg loc_10610 - pop di - pop si - leave - retf -sub_10585 endp - + extern _ptn_snap_8:proc + extern _ptn_snap_quarter_8:proc main_07_TEXT ends ; =========================================================================== @@ -18762,14 +18506,14 @@ loc_18A3A: mov ax, si cwd idiv bx - add ax, 146h + add ax, (PTN_SLOT_5 + 6) push ax - push 10h + push 16 mov ax, si shl ax, 4 - add ax, 100h + add ax, 256 push ax - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 inc si @@ -18795,12 +18539,12 @@ loc_18A60: loc_18A96: push si - push 1480010h + push ((PTN_SLOT_5 + 8) shl 16) or 16 mov ax, si shl ax, 4 - add ax, 190h + add ax, 400 push ax - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 inc si @@ -18859,14 +18603,14 @@ loc_18B0D: mov ax, si cwd idiv bx - add ax, 14Ah + add ax, (PTN_SLOT_5 + 10) push ax push 0 mov ax, si shl ax, 4 - add ax, 100h + add ax, 256 push ax - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 inc si @@ -18893,12 +18637,12 @@ loc_18B33: loc_18B6D: push si - push 14C0000h + push ((PTN_SLOT_5 + 12) shl 16) or 0 mov ax, si shl ax, 4 - add ax, 190h + add ax, 400 push ax - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 inc si @@ -19206,7 +18950,7 @@ loc_18DA0: mov ax, si cwd idiv bx - add ax, 140h + add ax, PTN_SLOT_5 push ax mov ax, si mov bx, 6 @@ -19218,9 +18962,9 @@ loc_18DA0: cwd idiv bx shl dx, 4 - add dx, 80h + add dx, 128 push dx - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 pushd 0 mov ax, si @@ -19352,7 +19096,7 @@ loc_18EB3: mov ax, si cwd idiv bx - add ax, 140h + add ax, PTN_SLOT_5 push ax mov ax, si mov bx, 6 @@ -19364,9 +19108,9 @@ loc_18EB3: cwd idiv bx shl dx, 4 - add dx, 80h + add dx, 128 push dx - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 push 0 call _graph_accesspage_func @@ -19427,14 +19171,14 @@ loc_18F39: mov ax, si cwd idiv bx - add ax, 144h + add ax, (PTN_SLOT_5 + 4) push ax - push 10h + push 16 mov ax, si shl ax, 4 - add ax, 80h + add ax, 128 push ax - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 push 10000h push 10h @@ -19554,14 +19298,14 @@ loc_1901D: mov ax, si cwd idiv bx - add ax, 144h + add ax, (PTN_SLOT_5 + 4) push ax - push 10h + push 16 mov ax, si shl ax, 4 - add ax, 80h + add ax, 128 push ax - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 push 0 call _graph_accesspage_func @@ -19606,10 +19350,7 @@ sub_19085 proc far var_4 = byte ptr -4 enter 4, 0 - pushd 142h - push 200260h - call sub_10585 - add sp, 8 + call _ptn_snap_quarter_8 c, large (32 shl 16) or 608, large (PTN_SLOT_5 + 2) push ss lea ax, [bp+var_4] push ax @@ -19823,11 +19564,7 @@ var_6 = byte ptr -6 ; --------------------------------------------------------------------------- loc_19274: - push si - push 14D0000h - push 200h - call sub_10585 - add sp, 8 + call _ptn_snap_quarter_8 c, 512, large ((PTN_SLOT_5 + 13) shl 16) or 0, si inc si loc_19287: diff --git a/th01_reiiden_2.inc b/th01_reiiden_2.inc index 4cabfee2..f63f4e38 100644 --- a/th01_reiiden_2.inc +++ b/th01_reiiden_2.inc @@ -5229,7 +5229,7 @@ sub_1E4EC endp sub_1E526 proc far -var_6 = word ptr -6 +@@image = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 @@ -5240,7 +5240,7 @@ var_2 = word ptr -2 mov [bp+var_2], ax mov ax, point_3982A.y mov [bp+var_4], ax - mov [bp+var_6], 3 + mov [bp+@@image], 3 push 1 call _graph_accesspage_func pop cx @@ -5254,8 +5254,8 @@ loc_1E549: ; --------------------------------------------------------------------------- loc_1E54D: - mov ax, [bp+var_6] - add ax, 80h ; '?' + mov ax, [bp+@@image] + add ax, PTN_SLOT_2 push ax mov ax, di shl ax, 5 @@ -5265,9 +5265,9 @@ loc_1E54D: shl ax, 5 add ax, [bp+var_2] push ax - call sub_104C2 + call _ptn_snap_8 add sp, 6 - inc [bp+var_6] + inc [bp+@@image] inc si loc_1E572: @@ -11502,14 +11502,14 @@ loc_219DD: mov ax, [bp+var_2] cwd idiv bx - add ax, 14Eh + add ax, (PTN_SLOT_5 + 14) push ax - push 30h ; '0' + push 48 mov ax, [bp+var_2] shl ax, 4 - add ax, 80h ; '?' + add ax, 128 push ax - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 mov ax, [bp+var_2] cmp ax, word_3A1E7 @@ -11550,14 +11550,14 @@ loc_21A35: mov ax, di cwd idiv bx - add ax, 14Eh + add ax, (PTN_SLOT_5 + 14) push ax - push 30h ; '0' + push 48 mov ax, di shl ax, 4 - add ax, 80h ; '?' + add ax, 128 push ax - call sub_10585 + call _ptn_snap_quarter_8 add sp, 8 cmp di, word_3A1E7 jnb short loc_21A64 @@ -17656,7 +17656,7 @@ sub_24E33 proc far var_A = word ptr -0Ah var_8 = word ptr -8 -var_6 = word ptr -6 +@@image = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = word ptr 6 @@ -17690,7 +17690,7 @@ loc_24E6E: mov [bp+var_4], ax loc_24E71: - mov [bp+var_6], 0 + mov [bp+@@image], 0 push 1 call _graph_accesspage_func pop cx @@ -17704,8 +17704,8 @@ loc_24E82: ; --------------------------------------------------------------------------- loc_24E86: - mov ax, [bp+var_6] - add ax, 80h ; '?' + mov ax, [bp+@@image] + add ax, PTN_SLOT_2 push ax mov ax, di shl ax, 5 @@ -17715,9 +17715,9 @@ loc_24E86: shl ax, 5 add ax, [bp+var_2] push ax - call sub_104C2 + call _ptn_snap_8 add sp, 6 - inc [bp+var_6] + inc [bp+@@image] inc si loc_24EAB: @@ -23858,7 +23858,7 @@ sub_287D9 endp sub_28852 proc near -var_6 = word ptr -6 +@@image = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 @@ -23869,7 +23869,7 @@ var_2 = word ptr -2 mov [bp+var_2], ax mov ax, word_39A2B mov [bp+var_4], ax - mov [bp+var_6], 0 + mov [bp+@@image], 0 push 1 call _graph_accesspage_func pop cx @@ -23883,8 +23883,8 @@ loc_28875: ; --------------------------------------------------------------------------- loc_28879: - mov ax, [bp+var_6] - add ax, 80h ; '?' + mov ax, [bp+@@image] + add ax, PTN_SLOT_2 push ax mov ax, di shl ax, 5 @@ -23894,9 +23894,9 @@ loc_28879: shl ax, 5 add ax, [bp+var_2] push ax - call sub_104C2 + call _ptn_snap_8 add sp, 6 - inc [bp+var_6] + inc [bp+@@image] inc si loc_2889E: