2019-12-09 19:54:34 +00:00
|
|
|
public ZUNSOFT_PYRO_NEW
|
|
|
|
zunsoft_pyro_new proc pascal near
|
2018-03-21 22:20:04 +00:00
|
|
|
local @@pyros_created:word, @@i:word
|
|
|
|
arg @@origin:Point, @@n:word, @@patnum_base:byte
|
|
|
|
|
|
|
|
push si
|
|
|
|
push di
|
|
|
|
mov di, @@origin.y
|
|
|
|
mov @@pyros_created, 0
|
|
|
|
mov ax, 16
|
|
|
|
imul @@origin.x
|
|
|
|
mov @@origin.x, ax
|
|
|
|
mov ax, 16
|
|
|
|
imul di
|
|
|
|
mov di, ax
|
|
|
|
mov si, offset _zunsoft_pyros
|
|
|
|
mov @@i, 0
|
|
|
|
jmp short loc_B68D
|
|
|
|
|
|
|
|
loc_B63E:
|
|
|
|
cmp [si+zunsoft_pyro_t.alive], 0
|
|
|
|
jnz short loc_B687
|
|
|
|
mov [si+zunsoft_pyro_t.alive], 1
|
|
|
|
mov [si+zunsoft_pyro_t.frame], 0
|
|
|
|
mov [si+zunsoft_pyro_t.origin.x], di
|
|
|
|
mov ax, @@origin.x
|
|
|
|
mov [si+zunsoft_pyro_t.origin.y], ax
|
|
|
|
mov [si+zunsoft_pyro_t.distance], 0
|
|
|
|
mov [si+zunsoft_pyro_t.distance_prev], 0
|
|
|
|
call IRand
|
|
|
|
mov bx, 224
|
|
|
|
cwd
|
|
|
|
idiv bx
|
|
|
|
add dx, 64
|
|
|
|
mov [si+zunsoft_pyro_t.speed], dx
|
|
|
|
call IRand
|
|
|
|
mov [si+zunsoft_pyro_t.angle], al
|
|
|
|
mov al, @@patnum_base
|
|
|
|
mov [si+zunsoft_pyro_t.patnum_base], al
|
|
|
|
inc @@pyros_created
|
|
|
|
mov ax, @@pyros_created
|
|
|
|
cmp ax, @@n
|
|
|
|
jge short loc_B694
|
|
|
|
|
|
|
|
loc_B687:
|
|
|
|
inc @@i
|
|
|
|
add si, size zunsoft_pyro_t
|
|
|
|
|
|
|
|
loc_B68D:
|
|
|
|
cmp @@i, ZUNSOFT_PYRO_COUNT
|
|
|
|
jl short loc_B63E
|
|
|
|
|
|
|
|
loc_B694:
|
|
|
|
pop di
|
|
|
|
pop si
|
|
|
|
ret
|
2019-12-09 19:54:34 +00:00
|
|
|
zunsoft_pyro_new endp
|
2018-03-21 22:20:04 +00:00
|
|
|
|
|
|
|
|
2019-12-09 19:54:34 +00:00
|
|
|
public ZUNSOFT_UPDATE_AND_RENDER
|
|
|
|
zunsoft_update_and_render proc pascal near
|
2018-03-21 22:20:04 +00:00
|
|
|
local @@patnum:word, @@draw_y:word, @@draw_x:word, @@anim_sprite:word
|
|
|
|
|
|
|
|
push si
|
|
|
|
push di
|
|
|
|
mov si, offset _zunsoft_pyros
|
|
|
|
xor di, di
|
|
|
|
jmp loc_B7B9
|
|
|
|
|
|
|
|
loc_B6A8:
|
|
|
|
cmp [si+zunsoft_pyro_t.alive], 1
|
|
|
|
jnz loc_B7B5
|
|
|
|
inc [si+zunsoft_pyro_t.frame]
|
|
|
|
mov al, [si+zunsoft_pyro_t.frame]
|
|
|
|
mov ah, 0
|
|
|
|
mov bx, 4
|
|
|
|
cwd
|
|
|
|
idiv bx
|
|
|
|
mov @@anim_sprite, ax
|
|
|
|
mov al, [si+zunsoft_pyro_t.patnum_base]
|
|
|
|
mov ah, 0
|
|
|
|
add ax, @@anim_sprite
|
|
|
|
mov @@patnum, ax
|
|
|
|
cmp [si+zunsoft_pyro_t.frame], 40
|
|
|
|
jb short loc_B6DB
|
|
|
|
mov [si+zunsoft_pyro_t.alive], 0
|
|
|
|
mov [si+zunsoft_pyro_t.frame], 0
|
|
|
|
jmp loc_B7B5
|
|
|
|
|
|
|
|
loc_B6DB:
|
|
|
|
cmp [si+zunsoft_pyro_t.frame], 16
|
|
|
|
jnb short loc_B6FA
|
|
|
|
mov ax, [si+zunsoft_pyro_t.origin.x]
|
|
|
|
mov bx, 16
|
|
|
|
cwd
|
|
|
|
idiv bx
|
|
|
|
add ax, -8
|
|
|
|
push ax
|
|
|
|
mov ax, [si+zunsoft_pyro_t.origin.y]
|
|
|
|
cwd
|
|
|
|
idiv bx
|
|
|
|
add ax, -8
|
|
|
|
jmp loc_B7AC
|
|
|
|
|
|
|
|
loc_B6FA:
|
|
|
|
cmp [si+zunsoft_pyro_t.frame], 32
|
|
|
|
jnb short loc_B754
|
|
|
|
cmp [si+zunsoft_pyro_t.frame], 16
|
|
|
|
jnz short loc_B70D
|
|
|
|
call snd_se_play pascal, 15
|
|
|
|
|
|
|
|
loc_B70D:
|
|
|
|
mov ax, [si+zunsoft_pyro_t.distance]
|
|
|
|
mov [si+zunsoft_pyro_t.distance_prev], ax
|
|
|
|
mov ax, [si+zunsoft_pyro_t.speed]
|
|
|
|
add [si+zunsoft_pyro_t.distance], ax
|
|
|
|
push [si+zunsoft_pyro_t.origin.x]
|
|
|
|
push [si+zunsoft_pyro_t.distance]
|
|
|
|
mov al, [si+zunsoft_pyro_t.angle]
|
|
|
|
mov ah, 0
|
|
|
|
add ax, ax
|
|
|
|
mov bx, ax
|
|
|
|
push _CosTable8[bx]
|
|
|
|
call vector1_at
|
|
|
|
add ax, -128
|
|
|
|
mov @@draw_x, ax
|
|
|
|
push [si+zunsoft_pyro_t.origin.y]
|
|
|
|
push [si+zunsoft_pyro_t.distance]
|
|
|
|
mov al, [si+zunsoft_pyro_t.angle]
|
|
|
|
mov ah, 0
|
|
|
|
add ax, ax
|
|
|
|
mov bx, ax
|
|
|
|
push _SinTable8[bx]
|
|
|
|
call vector1_at
|
|
|
|
add ax, -128
|
|
|
|
jmp short loc_B799
|
|
|
|
|
|
|
|
loc_B754:
|
|
|
|
mov ax, [si+zunsoft_pyro_t.distance]
|
|
|
|
mov [si+zunsoft_pyro_t.distance_prev], ax
|
|
|
|
mov ax, [si+zunsoft_pyro_t.speed]
|
|
|
|
add [si+zunsoft_pyro_t.distance], ax
|
|
|
|
push [si+zunsoft_pyro_t.origin.x]
|
|
|
|
push [si+zunsoft_pyro_t.distance]
|
|
|
|
mov al, [si+zunsoft_pyro_t.angle]
|
|
|
|
mov ah, 0
|
|
|
|
add ax, ax
|
|
|
|
mov bx, ax
|
|
|
|
push _CosTable8[bx]
|
|
|
|
call vector1_at
|
|
|
|
add ax, -256
|
|
|
|
mov @@draw_x, ax
|
|
|
|
push [si+zunsoft_pyro_t.origin.y]
|
|
|
|
push [si+zunsoft_pyro_t.distance]
|
|
|
|
mov al, [si+zunsoft_pyro_t.angle]
|
|
|
|
mov ah, 0
|
|
|
|
add ax, ax
|
|
|
|
mov bx, ax
|
|
|
|
push _SinTable8[bx]
|
|
|
|
call vector1_at
|
|
|
|
add ax, -256
|
|
|
|
|
|
|
|
loc_B799:
|
|
|
|
mov @@draw_y, ax
|
|
|
|
mov ax, @@draw_x
|
|
|
|
mov bx, 16
|
|
|
|
cwd
|
|
|
|
idiv bx
|
|
|
|
push ax
|
|
|
|
mov ax, @@draw_y
|
|
|
|
cwd
|
|
|
|
idiv bx
|
|
|
|
|
|
|
|
loc_B7AC:
|
|
|
|
push ax
|
|
|
|
push @@patnum
|
|
|
|
call super_put_rect
|
|
|
|
|
|
|
|
loc_B7B5:
|
|
|
|
inc di
|
|
|
|
add si, size zunsoft_pyro_t
|
|
|
|
|
|
|
|
loc_B7B9:
|
|
|
|
cmp di, ZUNSOFT_PYRO_COUNT
|
|
|
|
jl loc_B6A8
|
|
|
|
pop di
|
|
|
|
pop si
|
|
|
|
ret
|
2019-12-09 19:54:34 +00:00
|
|
|
zunsoft_update_and_render endp
|
2018-03-21 22:20:04 +00:00
|
|
|
|
|
|
|
|
2019-12-09 19:54:34 +00:00
|
|
|
public ZUNSOFT_PALETTE_UPDATE_AND_SHOW
|
|
|
|
zunsoft_palette_update_and_show proc near
|
2018-03-21 22:20:04 +00:00
|
|
|
arg @@tone:word
|
|
|
|
|
|
|
|
push bp
|
|
|
|
mov bp, sp
|
|
|
|
push si
|
|
|
|
push di
|
|
|
|
xor si, si
|
|
|
|
jmp short loc_B7F6
|
|
|
|
|
|
|
|
loc_B7CE:
|
|
|
|
xor di, di
|
|
|
|
jmp short loc_B7F0
|
|
|
|
|
|
|
|
loc_B7D2:
|
|
|
|
mov bx, si
|
2019-11-26 21:47:07 +00:00
|
|
|
imul bx, size rgb_t
|
2018-03-21 22:20:04 +00:00
|
|
|
mov al, _zunsoft_palette[bx+di]
|
|
|
|
mov ah, 0
|
|
|
|
imul @@tone
|
|
|
|
mov bx, 100
|
|
|
|
cwd
|
|
|
|
idiv bx
|
|
|
|
mov bx, si
|
2019-11-26 21:47:07 +00:00
|
|
|
imul bx, size rgb_t
|
2018-03-21 22:20:04 +00:00
|
|
|
mov Palettes[bx+di], al
|
|
|
|
inc di
|
|
|
|
|
|
|
|
loc_B7F0:
|
2019-11-26 21:47:07 +00:00
|
|
|
cmp di, size rgb_t
|
2018-03-21 22:20:04 +00:00
|
|
|
jl short loc_B7D2
|
|
|
|
inc si
|
|
|
|
|
|
|
|
loc_B7F6:
|
|
|
|
cmp si, 15
|
|
|
|
jl short loc_B7CE
|
|
|
|
call palette_show
|
|
|
|
pop di
|
|
|
|
pop si
|
|
|
|
pop bp
|
|
|
|
retn 2
|
2019-12-09 19:54:34 +00:00
|
|
|
zunsoft_palette_update_and_show endp
|
2019-12-01 11:03:31 +00:00
|
|
|
|
|
|
|
|
2020-09-20 21:14:04 +00:00
|
|
|
public _zunsoft
|
|
|
|
_zunsoft proc near
|
2019-12-01 11:03:31 +00:00
|
|
|
|
|
|
|
@@frame = word ptr -8
|
|
|
|
@@i = word ptr -6
|
|
|
|
@@fade_out = byte ptr -4
|
|
|
|
@@fade_in = byte ptr -3
|
|
|
|
@@skip = byte ptr -2
|
|
|
|
@@page = byte ptr -1
|
|
|
|
|
|
|
|
enter 8, 0
|
|
|
|
push si
|
|
|
|
push di
|
|
|
|
mov [bp+@@skip], 0
|
|
|
|
mov [bp+@@fade_in], 0
|
|
|
|
mov [bp+@@fade_out], 100
|
|
|
|
mov PaletteTone, 0
|
|
|
|
call palette_show
|
|
|
|
graph_accesspage 1
|
2017-01-11 15:12:39 +00:00
|
|
|
call pi_load pascal, 0, ds, offset aZun00_pi
|
|
|
|
call pi_palette_apply pascal, 0
|
2020-10-23 17:27:10 +00:00
|
|
|
call pi_put_8 pascal, large 0, 0
|
2019-12-01 11:03:31 +00:00
|
|
|
if GAME eq 5
|
2017-01-11 15:12:39 +00:00
|
|
|
call pi_free pascal, 0
|
2019-12-01 11:03:31 +00:00
|
|
|
else
|
|
|
|
freePISlotLarge 0
|
|
|
|
endif
|
|
|
|
push 0
|
|
|
|
call graph_copy_page
|
2021-03-10 21:13:50 +00:00
|
|
|
call _bgimage_snap
|
2019-12-01 11:03:31 +00:00
|
|
|
graph_accesspage 1
|
|
|
|
call graph_clear
|
|
|
|
graph_accesspage 0
|
|
|
|
call graph_clear
|
|
|
|
xor si, si
|
|
|
|
jmp short @@more_colors?
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@@next_color:
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov al, Palettes[bx].r
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov _zunsoft_palette[bx].r, al
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov al, Palettes[bx].g
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov _zunsoft_palette[bx].g, al
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov al, Palettes[bx].b
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov _zunsoft_palette[bx].b, al
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov Palettes[bx].r, 0
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov Palettes[bx].g, 0
|
|
|
|
mov bx, si
|
|
|
|
imul bx, size rgb_t
|
|
|
|
mov Palettes[bx].b, 0
|
|
|
|
inc si
|
|
|
|
|
|
|
|
@@more_colors?:
|
|
|
|
cmp si, 15
|
|
|
|
jl short @@next_color
|
|
|
|
call snd_load pascal, ds, offset aLogo, SND_LOAD_SONG
|
|
|
|
kajacall KAJA_SONG_PLAY
|
|
|
|
mov [bp+@@i], offset _zunsoft_pyros
|
|
|
|
xor si, si
|
|
|
|
jmp short @@more_pyros?
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@@next_pyro:
|
|
|
|
mov bx, [bp+@@i]
|
|
|
|
mov word ptr [bx+zunsoft_pyro_t.alive], 0
|
|
|
|
inc si
|
|
|
|
add [bp+@@i], size zunsoft_pyro_t
|
|
|
|
|
|
|
|
@@more_pyros?:
|
|
|
|
cmp si, ZUNSOFT_PYRO_COUNT
|
|
|
|
jl short @@next_pyro
|
[Decompilation] [th05] snd_bgm_measure(), snd_delay_until_measure()
Umm… but this can't be in the same translation unit as frame_delay(),
because OP.EXE has cdg_put_nocolors() inbetween, which means we'd have
to compile it twice.
What probably happened there: ZUN originally wrote this in C when
frame_delay() was still next to it, then generated ASM from it,
tinkered with that, and ultimately only linked that ASM into the final
game, with the NOPCALL still in there. That might very well be the one
temporary NOPCALL workaround we can never get rid of…
Oh well, at least we got lucky with the padding, and can keep the
cdg_put_nocolors() decompilation from the last commit.
Part of P0133, funded by [Anonymous].
2021-01-08 18:20:04 +00:00
|
|
|
call snd_delay_until_measure pascal, (2 shl 16)
|
2019-12-01 11:03:31 +00:00
|
|
|
mov PaletteTone, 100
|
|
|
|
call palette_show
|
|
|
|
call super_entry_bfnt pascal, ds, offset aZun02_bft
|
|
|
|
call super_entry_bfnt pascal, ds, offset aZun04_bft
|
|
|
|
call super_entry_bfnt pascal, ds, offset aZun01_bft
|
|
|
|
call super_entry_bfnt pascal, ds, offset aZun03_bft
|
|
|
|
mov [bp+@@page], 0
|
|
|
|
graph_accesspage 1
|
|
|
|
graph_showpage 0
|
|
|
|
if GAME eq 4
|
|
|
|
call _input_reset_sense
|
|
|
|
endif
|
|
|
|
xor di, di
|
|
|
|
jmp @@more_frames?
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@@next_frame:
|
|
|
|
if GAME eq 5
|
|
|
|
call _input_reset_sense_held
|
|
|
|
else
|
|
|
|
call _input_sense
|
|
|
|
endif
|
|
|
|
cmp _key_det, INPUT_NONE
|
|
|
|
jz short @@not_skipping
|
|
|
|
mov [bp+@@skip], 1
|
|
|
|
|
|
|
|
@@not_skipping:
|
|
|
|
mov [bp+@@frame], di
|
|
|
|
mov cx, 12
|
|
|
|
mov bx, offset word_BEA5
|
|
|
|
|
|
|
|
@@frame_switch_loop:
|
|
|
|
mov ax, cs:[bx]
|
|
|
|
cmp ax, [bp+@@frame]
|
|
|
|
jz short @@frame_found
|
|
|
|
add bx, 2
|
|
|
|
loop @@frame_switch_loop
|
|
|
|
jmp short @@no_new_pyro_this_frame ; default
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@@frame_found:
|
|
|
|
jmp word ptr cs:[bx+18h] ; switch jump
|
|
|
|
|
|
|
|
frame_0: ; case 0
|
|
|
|
push (180 shl 16) or 180
|
|
|
|
jmp short @@new_pyro_n_20_patnum_0
|
|
|
|
frame_16: ; case 16
|
|
|
|
push (460 shl 16) or 220
|
|
|
|
jmp short @@new_pyro_n_20_patnum_10
|
|
|
|
frame_24: ; case 24
|
|
|
|
push (220 shl 16) or 160
|
|
|
|
jmp short @@new_pyro_n_20_patnum_0
|
|
|
|
frame_32: ; case 32
|
|
|
|
push (380 shl 16) or 240
|
|
|
|
jmp short @@new_pyro_n_20_patnum_10
|
|
|
|
frame_44: ; case 44
|
|
|
|
push (340 shl 16) or 200
|
|
|
|
jmp short @@new_pyro_n_20_patnum_10
|
|
|
|
frame_48: ; case 48
|
|
|
|
push (280 shl 16) or 170
|
|
|
|
jmp short @@new_pyro_n_20_patnum_0
|
|
|
|
frame_52: ; case 52
|
|
|
|
push (380 shl 16) or 260
|
|
|
|
jmp short @@new_pyro_n_20_patnum_10
|
|
|
|
frame_40_56: ; case 40, 56
|
|
|
|
push (200 shl 16) or 190
|
|
|
|
|
|
|
|
@@new_pyro_n_20_patnum_0: ; case 0, 24, 40, 48, 56
|
|
|
|
push 20
|
|
|
|
jmp short @@new_pyro_patnum_0
|
|
|
|
|
|
|
|
frame_60: ; case 60
|
|
|
|
push (440 shl 16) or 210
|
|
|
|
|
|
|
|
@@new_pyro_n_20_patnum_10: ; case 16, 32, 44, 52, 60
|
|
|
|
push 20
|
|
|
|
jmp short @@new_pyro_patnum_10
|
|
|
|
|
|
|
|
frame_64: ; case 64
|
|
|
|
push (320 shl 16) or 200
|
|
|
|
push 64
|
|
|
|
|
|
|
|
@@new_pyro_patnum_0: ; case 0, 24, 40, 48, 56, 64
|
|
|
|
push 0
|
|
|
|
jmp short @@new_pyro_call
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
frame_68: ; case 68
|
|
|
|
push (320 shl 16) or 200
|
|
|
|
push 64
|
|
|
|
|
|
|
|
@@new_pyro_patnum_10: ; case 16, 32, 44, 52, 60, 68
|
|
|
|
push 10
|
|
|
|
|
|
|
|
@@new_pyro_call:
|
|
|
|
call zunsoft_pyro_new
|
|
|
|
|
|
|
|
@@no_new_pyro_this_frame:
|
2021-03-10 21:13:50 +00:00
|
|
|
call _bgimage_put ; default
|
2019-12-01 11:03:31 +00:00
|
|
|
call zunsoft_update_and_render
|
|
|
|
if GAME eq 4
|
|
|
|
call _input_reset_sense
|
|
|
|
endif
|
|
|
|
|
|
|
|
@@2_frame_delay:
|
|
|
|
cmp vsync_Count1, 2
|
|
|
|
jb short @@2_frame_delay
|
|
|
|
mov vsync_Count1, 0
|
|
|
|
graph_accesspage [bp+@@page]
|
|
|
|
mov al, 1
|
|
|
|
sub al, [bp+@@page]
|
|
|
|
mov [bp+@@page], al
|
|
|
|
graph_showpage al
|
|
|
|
cmp [bp+@@skip], 0
|
|
|
|
jnz short @@skipping
|
|
|
|
cmp di, 16
|
|
|
|
jl short @@apply_fade_in
|
|
|
|
cmp [bp+@@fade_in], 100
|
|
|
|
jnb short @@apply_fade_in
|
|
|
|
mov al, [bp+@@fade_in]
|
|
|
|
add al, 2
|
|
|
|
mov [bp+@@fade_in], al
|
|
|
|
|
|
|
|
@@apply_fade_in:
|
|
|
|
mov al, [bp+@@fade_in]
|
|
|
|
mov ah, 0
|
|
|
|
push ax
|
|
|
|
call zunsoft_palette_update_and_show
|
|
|
|
jmp short @@end_of_frame
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@@skipping:
|
|
|
|
cmp [bp+@@fade_out], 0
|
|
|
|
jbe short @@ret
|
|
|
|
mov al, [bp+@@fade_out]
|
|
|
|
add al, -2
|
|
|
|
mov [bp+@@fade_out], al
|
|
|
|
mov al, [bp+@@fade_out]
|
|
|
|
mov ah, 0
|
|
|
|
mov PaletteTone, ax
|
|
|
|
call palette_show
|
|
|
|
|
|
|
|
@@end_of_frame:
|
2020-09-18 11:58:58 +00:00
|
|
|
call _snd_se_update
|
2019-12-01 11:03:31 +00:00
|
|
|
inc di
|
|
|
|
|
|
|
|
@@more_frames?:
|
|
|
|
cmp di, 170
|
|
|
|
jl @@next_frame
|
|
|
|
call palette_black_out pascal, 1
|
|
|
|
|
|
|
|
@@ret:
|
|
|
|
call super_free
|
2021-03-10 21:13:50 +00:00
|
|
|
call _bgimage_free
|
2019-12-01 11:03:31 +00:00
|
|
|
pop di
|
|
|
|
pop si
|
|
|
|
leave
|
|
|
|
retn
|
2020-09-20 21:14:04 +00:00
|
|
|
_zunsoft endp
|
2019-12-01 11:03:31 +00:00
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
|
|
if GAME eq 4
|
|
|
|
db 0
|
|
|
|
endif
|
|
|
|
word_BEA5 dw 0, 16, 24, 32
|
|
|
|
dw 40, 44, 48, 52 ; value table for switch statement
|
|
|
|
dw 56, 60, 64, 68
|
|
|
|
dw offset frame_0 ; jump table for switch statement
|
|
|
|
dw offset frame_16
|
|
|
|
dw offset frame_24
|
|
|
|
dw offset frame_32
|
|
|
|
dw offset frame_40_56
|
|
|
|
dw offset frame_44
|
|
|
|
dw offset frame_48
|
|
|
|
dw offset frame_52
|
|
|
|
dw offset frame_40_56
|
|
|
|
dw offset frame_60
|
|
|
|
dw offset frame_64
|
|
|
|
dw offset frame_68
|