mirror of https://github.com/nmlgc/ReC98.git
[Decompilation] [th01] .PTN snap functions
Which repurpose the .PTN image slots to store the background of frequently updated VRAM sections, like all the numbers in the HUD. Future games would simply use the text RAM and gaiji for numbers. Which would have worked just fine for TH01 as well (especially since all the functions we've seen so far are aligned to the 8-pixel byte grid), but it looks as if ZUN simply wasn't aware of gaiji during the development of TH01. Part of P0083, funded by Yanga.
This commit is contained in:
parent
a184413f27
commit
9e676ce3ef
|
@ -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 @&&|
|
||||
$**
|
||||
|
|
||||
|
|
|
@ -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);
|
||||
// ------------
|
||||
/// -----------------------------------------
|
||||
|
|
|
@ -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<ptn_dots_t>((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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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"
|
|
@ -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"
|
229
th01_op.asm
229
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
|
||||
|
||||
; ===========================================================================
|
||||
|
|
325
th01_reiiden.asm
325
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:
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue