mirror of https://github.com/nmlgc/ReC98.git
[Reverse-engineering] [th01] .GRC: Slot structure
Part of P0105, funded by Yanga.
This commit is contained in:
parent
bd1c2ee7de
commit
b22bc80e98
|
@ -0,0 +1,15 @@
|
||||||
|
/// Uncompressed monochrome 8w×h sprite format
|
||||||
|
/// ------------------------------------------
|
||||||
|
static const int GRC_SLOT_COUNT = 8;
|
||||||
|
static const int GRC_IMAGES_PER_SLOT = 8;
|
||||||
|
|
||||||
|
// In-memory slot structure
|
||||||
|
struct grc_t {
|
||||||
|
int vram_w;
|
||||||
|
int h;
|
||||||
|
int image_count;
|
||||||
|
dots8_t* dots[GRC_IMAGES_PER_SLOT];
|
||||||
|
};
|
||||||
|
|
||||||
|
extern grc_t grc_images[GRC_SLOT_COUNT];
|
||||||
|
/// ------------------------------------------
|
|
@ -0,0 +1,12 @@
|
||||||
|
GRC_SLOT_COUNT = 8
|
||||||
|
GRC_IMAGES_PER_SLOT = 8
|
||||||
|
|
||||||
|
grc_t struc
|
||||||
|
GRC_vram_w dw ?
|
||||||
|
GRC_h dw ?
|
||||||
|
GRC_image_count dw ?
|
||||||
|
GRC_dots dd GRC_IMAGES_PER_SLOT dup(?)
|
||||||
|
grc_t ends
|
||||||
|
|
||||||
|
public _grc_images
|
||||||
|
_grc_images grc_t GRC_SLOT_COUNT dup(<?>)
|
|
@ -10,3 +10,4 @@ _cache dd ?
|
||||||
_arc_fn db 13 dup (?)
|
_arc_fn db 13 dup (?)
|
||||||
_file_pos dw ?
|
_file_pos dw ?
|
||||||
_cache_bytes_read dw ?
|
_cache_bytes_read dw ?
|
||||||
|
evendata
|
||||||
|
|
|
@ -12042,15 +12042,15 @@ arg_0 = word ptr 6
|
||||||
call arc_file_seek pascal, 4
|
call arc_file_seek pascal, 4
|
||||||
push ds
|
push ds
|
||||||
mov ax, di
|
mov ax, di
|
||||||
imul ax, 26h
|
imul ax, size grc_t
|
||||||
add ax, 50BCh
|
add ax, offset _grc_images.GRC_vram_w
|
||||||
push ax
|
push ax
|
||||||
push 2
|
push 2
|
||||||
call arc_file_get
|
call arc_file_get
|
||||||
push ds
|
push ds
|
||||||
mov ax, di
|
mov ax, di
|
||||||
imul ax, 26h
|
imul ax, size grc_t
|
||||||
add ax, 50BEh
|
add ax, offset _grc_images.GRC_h
|
||||||
push ax
|
push ax
|
||||||
push 2
|
push 2
|
||||||
call arc_file_get
|
call arc_file_get
|
||||||
|
@ -12062,19 +12062,19 @@ arg_0 = word ptr 6
|
||||||
mov al, [bp+var_36]
|
mov al, [bp+var_36]
|
||||||
mov ah, 0
|
mov ah, 0
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov [bx+50C0h], ax
|
mov _grc_images[bx].GRC_image_count, ax
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bx+50BCh]
|
mov ax, _grc_images[bx].GRC_vram_w
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
imul word ptr [bx+50BEh]
|
imul _grc_images[bx].GRC_h
|
||||||
mov [bp+var_2], ax
|
mov [bp+var_2], ax
|
||||||
push ss
|
push ss
|
||||||
lea ax, [bp+var_36]
|
lea ax, [bp+var_36]
|
||||||
push ax
|
push ax
|
||||||
push 48
|
push size palette_t
|
||||||
call arc_file_get
|
call arc_file_get
|
||||||
mov [bp+var_4], 0
|
mov [bp+var_4], 0
|
||||||
jmp short loc_17534
|
jmp short loc_17534
|
||||||
|
@ -12082,19 +12082,19 @@ arg_0 = word ptr 6
|
||||||
|
|
||||||
loc_174C8:
|
loc_174C8:
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bp+var_4]
|
mov ax, [bp+var_4]
|
||||||
shl ax, 2
|
shl ax, 2
|
||||||
add bx, ax
|
add bx, ax
|
||||||
mov ax, [bx+50C2h]
|
mov ax, word ptr _grc_images.GRC_dots[bx]+0
|
||||||
or ax, [bx+50C4h]
|
or ax, word ptr _grc_images.GRC_dots[bx]+2
|
||||||
jz short loc_174F9
|
jz short loc_174F9
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bp+var_4]
|
mov ax, [bp+var_4]
|
||||||
shl ax, 2
|
shl ax, 2
|
||||||
add bx, ax
|
add bx, ax
|
||||||
pushd dword ptr [bx+50C2h] ; font
|
pushd _grc_images.GRC_dots[bx] ; font
|
||||||
call @$bdla$qnv
|
call @$bdla$qnv
|
||||||
add sp, 4
|
add sp, 4
|
||||||
|
|
||||||
|
@ -12103,24 +12103,24 @@ loc_174F9:
|
||||||
call @$bnwa$qui
|
call @$bnwa$qui
|
||||||
pop cx
|
pop cx
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov si, [bp+var_4]
|
mov si, [bp+var_4]
|
||||||
shl si, 2
|
shl si, 2
|
||||||
add bx, si
|
add bx, si
|
||||||
mov [bx+50C4h], dx
|
mov word ptr _grc_images.GRC_dots[bx]+2, dx
|
||||||
mov [bx+50C2h], ax
|
mov word ptr _grc_images.GRC_dots[bx]+0, ax
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bp+var_4]
|
mov ax, [bp+var_4]
|
||||||
shl ax, 2
|
shl ax, 2
|
||||||
add bx, ax
|
add bx, ax
|
||||||
call arc_file_get pascal, large dword ptr [bx+50C2h], [bp+var_2]
|
call arc_file_get pascal, large _grc_images.GRC_dots[bx], [bp+var_2]
|
||||||
inc [bp+var_4]
|
inc [bp+var_4]
|
||||||
|
|
||||||
loc_17534:
|
loc_17534:
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bx+50C0h]
|
mov ax, _grc_images[bx].GRC_image_count
|
||||||
cmp ax, [bp+var_4]
|
cmp ax, [bp+var_4]
|
||||||
jg short loc_174C8
|
jg short loc_174C8
|
||||||
call arc_file_free
|
call arc_file_free
|
||||||
|
@ -12164,16 +12164,16 @@ arg_6 = word ptr 0Ch
|
||||||
mov [bp+var_2], ax
|
mov [bp+var_2], ax
|
||||||
mov [bp+var_8], 0
|
mov [bp+var_8], 0
|
||||||
mov bx, si
|
mov bx, si
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bx+50BCh]
|
mov ax, _grc_images[bx].GRC_vram_w
|
||||||
imul ax, -8
|
imul ax, -8
|
||||||
cmp ax, [bp+arg_0]
|
cmp ax, [bp+arg_0]
|
||||||
jg loc_1767E
|
jg loc_1767E
|
||||||
cmp [bp+arg_0], 280h
|
cmp [bp+arg_0], 280h
|
||||||
jge loc_1767E
|
jge loc_1767E
|
||||||
mov bx, si
|
mov bx, si
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bx+50BEh]
|
mov ax, _grc_images[bx].GRC_h
|
||||||
imul ax, -1
|
imul ax, -1
|
||||||
cmp ax, [bp+arg_2]
|
cmp ax, [bp+arg_2]
|
||||||
jg loc_1767E
|
jg loc_1767E
|
||||||
|
@ -12200,11 +12200,11 @@ loc_175BD:
|
||||||
|
|
||||||
loc_175D8:
|
loc_175D8:
|
||||||
mov bx, si
|
mov bx, si
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bp+arg_6]
|
mov ax, [bp+arg_6]
|
||||||
shl ax, 2
|
shl ax, 2
|
||||||
add bx, ax
|
add bx, ax
|
||||||
les bx, [bx+50C2h]
|
les bx, _grc_images.GRC_dots[bx]
|
||||||
add bx, [bp+var_8]
|
add bx, [bp+var_8]
|
||||||
cmp byte ptr es:[bx], 0
|
cmp byte ptr es:[bx], 0
|
||||||
jz short loc_17638
|
jz short loc_17638
|
||||||
|
@ -12229,11 +12229,11 @@ loc_17605:
|
||||||
|
|
||||||
loc_17618:
|
loc_17618:
|
||||||
mov bx, si
|
mov bx, si
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bp+arg_6]
|
mov ax, [bp+arg_6]
|
||||||
shl ax, 2
|
shl ax, 2
|
||||||
add bx, ax
|
add bx, ax
|
||||||
les bx, [bx+50C2h]
|
les bx, _grc_images.GRC_dots[bx]
|
||||||
add bx, [bp+var_8]
|
add bx, [bp+var_8]
|
||||||
mov al, es:[bx]
|
mov al, es:[bx]
|
||||||
les bx, _VRAM_PLANE_B
|
les bx, _VRAM_PLANE_B
|
||||||
|
@ -12247,8 +12247,8 @@ loc_17638:
|
||||||
|
|
||||||
loc_1763F:
|
loc_1763F:
|
||||||
mov bx, si
|
mov bx, si
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bx+50BCh]
|
mov ax, _grc_images[bx].GRC_vram_w
|
||||||
cmp ax, [bp+var_6]
|
cmp ax, [bp+var_6]
|
||||||
jg short loc_175D8
|
jg short loc_175D8
|
||||||
jmp short loc_1765B
|
jmp short loc_1765B
|
||||||
|
@ -12256,8 +12256,8 @@ loc_1763F:
|
||||||
|
|
||||||
loc_1764F:
|
loc_1764F:
|
||||||
mov bx, si
|
mov bx, si
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bx+50BCh]
|
mov ax, _grc_images[bx].GRC_vram_w
|
||||||
add [bp+var_8], ax
|
add [bp+var_8], ax
|
||||||
|
|
||||||
loc_1765B:
|
loc_1765B:
|
||||||
|
@ -12268,8 +12268,8 @@ loc_1765B:
|
||||||
|
|
||||||
loc_17669:
|
loc_17669:
|
||||||
mov bx, si
|
mov bx, si
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, [bx+50BEh]
|
mov ax, _grc_images[bx].GRC_h
|
||||||
cmp ax, [bp+var_4]
|
cmp ax, [bp+var_4]
|
||||||
jg loc_175BD
|
jg loc_175BD
|
||||||
|
|
||||||
|
@ -12303,36 +12303,36 @@ arg_0 = word ptr 6
|
||||||
|
|
||||||
loc_1768E:
|
loc_1768E:
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, si
|
mov ax, si
|
||||||
shl ax, 2
|
shl ax, 2
|
||||||
add bx, ax
|
add bx, ax
|
||||||
mov ax, [bx+50C2h]
|
mov ax, word ptr _grc_images.GRC_dots[bx]+0
|
||||||
or ax, [bx+50C4h]
|
or ax, word ptr _grc_images.GRC_dots[bx]+2
|
||||||
jz short loc_176D5
|
jz short loc_176D5
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, si
|
mov ax, si
|
||||||
shl ax, 2
|
shl ax, 2
|
||||||
add bx, ax
|
add bx, ax
|
||||||
pushd dword ptr [bx+50C2h] ; font
|
pushd _grc_images.GRC_dots[bx]
|
||||||
call @$bdla$qnv
|
call @$bdla$qnv
|
||||||
add sp, 4
|
add sp, 4
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
mov ax, si
|
mov ax, si
|
||||||
shl ax, 2
|
shl ax, 2
|
||||||
add bx, ax
|
add bx, ax
|
||||||
mov word ptr [bx+50C4h], 0
|
mov word ptr _grc_images.GRC_dots[bx]+2, 0
|
||||||
mov word ptr [bx+50C2h], 0
|
mov word ptr _grc_images.GRC_dots[bx]+0, 0
|
||||||
|
|
||||||
loc_176D5:
|
loc_176D5:
|
||||||
inc si
|
inc si
|
||||||
|
|
||||||
loc_176D6:
|
loc_176D6:
|
||||||
mov bx, di
|
mov bx, di
|
||||||
imul bx, 26h
|
imul bx, size grc_t
|
||||||
cmp [bx+50C0h], si
|
cmp _grc_images[bx].GRC_image_count, si
|
||||||
jg short loc_1768E
|
jg short loc_1768E
|
||||||
pop di
|
pop di
|
||||||
pop si
|
pop si
|
||||||
|
@ -53750,7 +53750,7 @@ word_39A2B dw ?
|
||||||
byte_39A32 db ?
|
byte_39A32 db ?
|
||||||
db ?
|
db ?
|
||||||
include th01/formats/pf[bss].asm
|
include th01/formats/pf[bss].asm
|
||||||
db 305 dup(?)
|
include th01/formats/grc[bss].asm
|
||||||
palette_39B8C palette_t <?>
|
palette_39B8C palette_t <?>
|
||||||
db 348 dup(?)
|
db 348 dup(?)
|
||||||
byte_39D18 db ?
|
byte_39D18 db ?
|
||||||
|
|
Loading…
Reference in New Issue