[Reduction] Lookup table for horizontally flipping planar pixels

OK, let's not identify the arrays in a file-based fashion just yet, and
first reduce all shared ZUN code that uses arrays. Less stressful, we'll
have to do this anyway, and I just can't resist the urge to immediately
reverse-engineer everything I find.
This commit is contained in:
nmlgc 2017-01-07 22:30:46 +01:00
parent 7a309919aa
commit 6759d346d5
11 changed files with 53 additions and 821 deletions

28
th03/formats/hfliplut.asm Normal file
View File

@ -0,0 +1,28 @@
; Generates a lookup table for flipping one byte, interpreted as a horizontal
; line of 8 pixels in a single bitplane.
; int DEFCONV hflip_lut_generate()
proc_defconv hflip_lut_generate
push di
xor ax, ax
mov di, offset hflip_lut
xor dl, dl
jmp short @@check
@@outer:
xor dl, dl
mov cx, 8
@@inner:
rol al, 1
rcr dl, 1
loop @@inner
@@check:
mov [di], dl
inc di
inc al
jnz short @@outer
pop di
ret
endp_defconv

View File

@ -0,0 +1 @@
hflip_lut db 100h dup(?)

View File

@ -707,7 +707,7 @@ var_2 = word ptr -2
call sub_13CDD
mov byte_207E3, 0
call sub_9EBF
call sub_EEC4
call hflip_lut_generate
nopcall sub_D5A2
mov byte_23AFA, 0
les bx, dword_1F2F0
@ -10051,35 +10051,7 @@ sub_EE77 endp
; ---------------------------------------------------------------------------
db 0
; =============== S U B R O U T I N E =======================================
sub_EEC4 proc far
push di
xor ax, ax
mov di, 1C64h
xor dl, dl
jmp short loc_EED9
; ---------------------------------------------------------------------------
loc_EECE:
xor dl, dl
mov cx, 8
loc_EED3:
rol al, 1
rcr dl, 1
loop loc_EED3
loc_EED9:
mov [di], dl
inc di
inc al
jnz short loc_EECE
pop di
retf
sub_EEC4 endp
include th03/formats/hfliplut.asm
; =============== S U B R O U T I N E =======================================
@ -10345,7 +10317,7 @@ loc_F0A9:
mov bx, [bp+arg_0]
shl bx, 2
les di, [bx+1D64h]
mov bx, 1C64h
mov bx, offset hflip_lut
loc_F0BB:
mov al, es:[di]
@ -38427,70 +38399,7 @@ word_1EFF8 dw ?
unk_1EFFA db ? ;
byte_1EFFB db ?
include th02/formats/pi_slots[bss].asm
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
include th03/formats/hfliplut[bss].asm
dd ? ;
dd ? ;
dd ? ;

View File

@ -1087,7 +1087,7 @@ loc_9DAD:
call gaiji_entry_bfnt
call snd_load c, offset aYume_efc, ds, SND_LOAD_SE
call snd_se_reset
call sub_D784
call hflip_lut_generate
les bx, dword_105DA
cmp byte ptr es:[bx+35h], 0
jz short loc_9E04
@ -6397,7 +6397,7 @@ arg_4 = word ptr 0Ah
add ax, 0A800h
mov es, ax
assume es:nothing
mov bx, 20D6h
mov bx, offset hflip_lut
mov fs, word ptr [si+0Ch]
xor si, si
@ -7706,35 +7706,7 @@ sub_D712 endp
; ---------------------------------------------------------------------------
nop
; =============== S U B R O U T I N E =======================================
sub_D784 proc far
push di
xor ax, ax
mov di, 20D6h
xor dl, dl
jmp short loc_D799
; ---------------------------------------------------------------------------
loc_D78E:
xor dl, dl
mov cx, 8
loc_D793:
rol al, 1
rcr dl, 1
loop loc_D793
loc_D799:
mov [di], dl
inc di
inc al
jnz short loc_D78E
pop di
retf
sub_D784 endp
include th03/formats/hfliplut.asm
mainl_02_TEXT ends
.data
@ -8439,70 +8411,7 @@ word_100FC dw ?
dd ? ;
dd ? ;
include th02/formats/pi_slots[bss].asm
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
include th03/formats/hfliplut[bss].asm
dword_105C6 dd ?
dword_105CA dd ?
byte_105CE db ?

View File

@ -3427,7 +3427,7 @@ sub_B38D proc near
push bp
mov bp, sp
push si
call sub_CB68
call hflip_lut_generate
xor si, si
jmp short loc_B3B0
; ---------------------------------------------------------------------------
@ -4999,7 +4999,7 @@ arg_4 = word ptr 0Ah
add ax, 0A800h
mov es, ax
assume es:nothing
mov bx, 1E70h
mov bx, offset hflip_lut
mov fs, word ptr [si+0Ch]
xor si, si
@ -6216,35 +6216,7 @@ sub_CAF6 endp
; ---------------------------------------------------------------------------
nop
; =============== S U B R O U T I N E =======================================
sub_CB68 proc far
push di
xor ax, ax
mov di, 1E70h
xor dl, dl
jmp short loc_CB7D
; ---------------------------------------------------------------------------
loc_CB72:
xor dl, dl
mov cx, 8
loc_CB77:
rol al, 1
rcr dl, 1
loop loc_CB77
loc_CB7D:
mov [di], dl
inc di
inc al
jnz short loc_CB72
pop di
retf
sub_CB68 endp
include th03/formats/hfliplut.asm
extern FRAME_DELAY_2:proc
op_02_TEXT ends
@ -6688,70 +6660,7 @@ word_F296 dw ?
dd ? ;
dd ? ;
include th02/formats/pi_slots[bss].asm
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
dd ? ;
include th03/formats/hfliplut[bss].asm
unk_F760 db ? ;
dd ? ;
dd ? ;

View File

@ -18049,31 +18049,7 @@ sub_13117 endp
retf 14h
include th02/hardware/frame_delay.asm
; ---------------------------------------------------------------------------
push di
xor ax, ax
mov di, 335Ah
xor dl, dl
jmp short loc_131E1
; ---------------------------------------------------------------------------
loc_131D6:
xor dl, dl
mov cx, 8
loc_131DB:
rol al, 1
rcr dl, 1
loop loc_131DB
loc_131E1:
mov [di], dl
inc di
inc al
jnz short loc_131D6
pop di
retf
include th03/formats/hfliplut.asm
; =============== S U B R O U T I N E =======================================
@ -46718,70 +46694,7 @@ include libs/master.lib/mem[bss].asm
include libs/master.lib/superpa[bss].asm
include th01/hardware/vram_planes[bss].asm
include libs/master.lib/pfint21[bss].asm
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
include th03/formats/hfliplut[bss].asm
dd ?
dd ?
dd ?

View File

@ -5418,31 +5418,7 @@ include th02/formats/pi_slot_palette_apply.asm
include th02/formats/pi_slot_put.asm
include th02/formats/pi_slot_load.asm
include th03/formats/pi_slot_put_quarter.asm
; ---------------------------------------------------------------------------
push di
xor ax, ax
mov di, 196Ah
xor dl, dl
jmp short loc_CE71
; ---------------------------------------------------------------------------
loc_CE66:
xor dl, dl
mov cx, 8
loc_CE6B:
rol al, 1
rcr dl, 1
loop loc_CE6B
loc_CE71:
mov [di], dl
inc di
inc al
jnz short loc_CE66
pop di
retf
include th03/formats/hfliplut.asm
; =============== S U B R O U T I N E =======================================
@ -6884,70 +6860,7 @@ include libs/master.lib/superpa[bss].asm
include th01/hardware/vram_planes[bss].asm
include libs/master.lib/pfint21[bss].asm
include th02/formats/pi_slots[bss].asm
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
include th03/formats/hfliplut[bss].asm
include th04/snd/interrupt[bss].asm
include libs/master.lib/bgm[bss].asm
include th02/snd/load[bss].asm

View File

@ -6115,30 +6115,8 @@ include th02/formats/pi_slot_load.asm
; ---------------------------------------------------------------------------
db 0
; ---------------------------------------------------------------------------
push di
xor ax, ax
mov di, 2538h
xor dl, dl
jmp short loc_DB59
; ---------------------------------------------------------------------------
loc_DB4E:
xor dl, dl
mov cx, 8
loc_DB53:
rol al, 1
rcr dl, 1
loop loc_DB53
loc_DB59:
mov [di], dl
inc di
inc al
jnz short loc_DB4E
pop di
retf
include th03/formats/hfliplut.asm
; =============== S U B R O U T I N E =======================================
@ -7896,70 +7874,7 @@ include libs/master.lib/super_put_rect[bss].asm
include th01/hardware/vram_planes[bss].asm
include libs/master.lib/pfint21[bss].asm
include th02/formats/pi_slots[bss].asm
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
include th03/formats/hfliplut[bss].asm
include th04/snd/interrupt[bss].asm
include libs/master.lib/bgm[bss].asm
include th02/snd/load[bss].asm

View File

@ -21144,36 +21144,7 @@ arg_12 = word ptr 18h
retf 14h
sub_14B0A endp
; =============== S U B R O U T I N E =======================================
sub_14B64 proc far
push di
xor ax, ax
mov di, 2EA0h
xor dl, dl
jmp short loc_14B79
; ---------------------------------------------------------------------------
loc_14B6E:
xor dl, dl
mov cx, 8
loc_14B73:
rol al, 1
rcr dl, 1
loop loc_14B73
loc_14B79:
mov [di], dl
inc di
inc al
jnz short loc_14B6E
pop di
retf
sub_14B64 endp
include th03/formats/hfliplut.asm
include th04/snd/pmd_res.asm
include th02/snd/mmd_res.asm
include th04/snd/detmodes.asm
@ -45420,70 +45391,7 @@ include libs/master.lib/vsync[bss].asm
include libs/master.lib/mem[bss].asm
include libs/master.lib/superpa[bss].asm
include libs/master.lib/super_put_rect[bss].asm
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
include th03/formats/hfliplut[bss].asm
include th04/snd/interrupt[bss].asm
include libs/master.lib/bgm[bss].asm
include th02/snd/load[bss].asm

View File

@ -8394,30 +8394,8 @@ maine_02_TEXT segment word public 'CODE' use16
assume cs:maine_02_TEXT
;org 0Ch
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
push di
xor ax, ax
mov di, 25DEh
xor dl, dl
jmp short loc_E811
; ---------------------------------------------------------------------------
loc_E806:
xor dl, dl
mov cx, 8
loc_E80B:
rol al, 1
rcr dl, 1
loop loc_E80B
loc_E811:
mov [di], dl
inc di
inc al
jnz short loc_E806
pop di
retf
include th03/formats/hfliplut.asm
include th04/snd/pmd_res.asm
include th02/snd/mmd_res.asm
include th04/snd/detmodes.asm
@ -10291,70 +10269,7 @@ include libs/master.lib/vsync[bss].asm
include libs/master.lib/mem[bss].asm
include libs/master.lib/superpa[bss].asm
include libs/master.lib/super_put_rect[bss].asm
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
include th03/formats/hfliplut[bss].asm
include th04/snd/interrupt[bss].asm
include libs/master.lib/bgm[bss].asm
include th02/snd/load[bss].asm

View File

@ -5769,32 +5769,7 @@ op_02_TEXT segment word public 'CODE' use16
; org 4
assume es:nothing, ss:nothing, ds:_DATA, fs:nothing, gs:nothing
sub_D304 proc near
push di
xor ax, ax
mov di, 3662h
xor dl, dl
jmp short loc_D319
; ---------------------------------------------------------------------------
loc_D30E:
xor dl, dl
mov cx, 8
loc_D313:
rol al, 1
rcr dl, 1
loop loc_D313
loc_D319:
mov [di], dl
inc di
inc al
jnz short loc_D30E
pop di
retf
sub_D304 endp
include th03/formats/hfliplut.asm
include th04/snd/pmd_res.asm
include th02/snd/mmd_res.asm
include th04/snd/detmodes.asm
@ -8682,70 +8657,7 @@ include libs/master.lib/vsync[bss].asm
include libs/master.lib/mem[bss].asm
include libs/master.lib/superpa[bss].asm
include libs/master.lib/super_put_rect[bss].asm
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
dd ?
include th03/formats/hfliplut[bss].asm
include th04/snd/interrupt[bss].asm
include libs/master.lib/bgm[bss].asm
dd ? ;