various fixes and streamlines and function encapsulation

This commit is contained in:
Shoofle 2025-03-02 13:10:46 -05:00
parent 5eeecefea9
commit ddf12e8240
10 changed files with 217 additions and 111 deletions

View File

@ -30,11 +30,11 @@ def Card_Offset_functions equ @-TheFool
; CARD_VARS_START+2: timer 2 ; CARD_VARS_START+2: timer 2
; CARD_VARS_START+4: animation frame for dog ; CARD_VARS_START+4: animation frame for dog
; CARD_VARS_START+5: ; CARD_VARS_START+5:
; CARD_VARS_START+6: y of zero ; CARD_VARS_START+6: frame of zero
; CARD_VARS_START+7: ; CARD_VARS_START+7:
.fInit: .fInit:
ld a, [rLCDC] ld a, [rLCDC]
xor a, %0000_0100 and a, %1111_1011
ld [rLCDC], a ld [rLCDC], a
ld hl, CARD_VARS_START ld hl, CARD_VARS_START
ld a, 0 ld a, 0
@ -44,8 +44,8 @@ def Card_Offset_functions equ @-TheFool
ld [hl+], a ld [hl+], a
ld [hl+], a ; frame of dog animation ld [hl+], a ; frame of dog animation
ld [hl+], a ld [hl+], a
ld [hl+], a ; y of zero ld [hl+], a ; frame of zero animation
ld [hl+], a ; x of zero ld [hl+], a
ld hl, .doggie1 ld hl, .doggie1
ld de, MY_OAM ld de, MY_OAM
@ -62,18 +62,11 @@ def Card_Offset_functions equ @-TheFool
ret ret
.fUpdate: .fUpdate:
ld a, [rDELTAT] ld hl, CARD_VARS_START
ld b, a call IncrementTimer
ld a, [CARD_VARS_START]
add a, b
ld [CARD_VARS_START], a
ld a, [CARD_VARS_START+1] ld a, [CARD_VARS_START+1]
adc a, 0 cp a, 06 ; $10 00 = 1 second
ld [CARD_VARS_START+1], a ; increment time. when the 16bit time register is greater
ld a, [CARD_VARS_START+1]
cp a, $08 ; $10 00 = 1 second
jp c, .doneWithTimer1 ; if the timer is less than $0800, skip to end jp c, .doneWithTimer1 ; if the timer is less than $0800, skip to end
;otherwise reset the timer ;otherwise reset the timer
@ -85,16 +78,11 @@ def Card_Offset_functions equ @-TheFool
call .dogDance call .dogDance
.doneWithTimer1 .doneWithTimer1
ld hl, CARD_VARS_START+2
ld a, [CARD_VARS_START+2] call IncrementTimer
add a, b
ld [CARD_VARS_START+2], a
ld a, [CARD_VARS_START+2+1]
adc a, 0
ld [CARD_VARS_START+2+1], a
ld a, [CARD_VARS_START+2+1] ld a, [CARD_VARS_START+2+1]
cp a, $10 ; $10 00 = 1 second cp a, $02 ; $10 00 = 1 second
jp c, .doneWithTimer2 ; if the timer is less than $0800, skip to end jp c, .doneWithTimer2 ; if the timer is less than $0800, skip to end
;otherwise reset the timer ;otherwise reset the timer
@ -102,30 +90,25 @@ def Card_Offset_functions equ @-TheFool
ld [CARD_VARS_START+2], a ld [CARD_VARS_START+2], a
ld [CARD_VARS_START+2+1], a ld [CARD_VARS_START+2+1], a
.doneWithTimer2 call .zeroRotate
ret
println "card vars start is ", CARD_VARS_START
.fDraw:
ret
.dogDance: .doneWithTimer2
ret
ld hl, CARD_VARS_START+4 .dogDance:
inc [hl] ld a, [CARD_VARS_START+4] ; dog animation frame
ld a, 2 inc a
cp a, [hl] cp a, 2
jp nz, :+ jp nz, :+
ld [hl], 0 ld a, 0 ; zero the frame if it was 2
: :
ld a, [hl] ; a now holds the frame of the animation. ld [CARD_VARS_START+4], a
cp a, 0 cp a, 0
jp z, .frame1 jp z, .frame1
cp a, 1 cp a, 1
jp z, .frame2 jp z, .frame2
ret ret ; shouldn't ever hit this
.frame1 .frame1
ld hl, .doggie1 ld hl, .doggie1
@ -149,6 +132,42 @@ println "card vars start is ", CARD_VARS_START
ld a, $23 ld a, $23
call BuildMetaSprite call BuildMetaSprite
ret ret
.zeroRotate:
ld hl, .zeroCoords
ld a, [CARD_VARS_START + 6]
inc a
call ArrayClampLooping
ld [CARD_VARS_START + 6], a
ld b, 0
ld c, a
ld hl, .zeroCoords+1
add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element
add hl, bc ; of the list
ld b, [hl] ; load y into b
inc hl
ld c, [hl] ; load x into c
ld hl, .zero
ld de, MY_OAM + 6*4 ; we've already written six sprites for the doggie, 4 bytes each
ld a, $22 ; two by two
; location of source tile map: hl
; location in memory to write to: de
; y and x in b and c (set above)
; height and width in a & %11110000 and a & %00001111 ??? that's deranged
call BuildMetaSprite
ret
.zeroCoords: ; length-prefixed list of y, x
db 4, 26, 41, 27, 42, 26, 43, 25, 42
.fDraw:
ret
.SpriteTiles: .SpriteTiles:
@ -162,10 +181,10 @@ println "card vars start is ", CARD_VARS_START
db $00,$00,$00,$00,$00,$00,$0e,$0e,$8f,$8b,$ff,$fd,$ff,$01,$ff,$01 db $00,$00,$00,$00,$00,$00,$0e,$0e,$8f,$8b,$ff,$fd,$ff,$01,$ff,$01
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$96,$fc,$dc,$70,$70 db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$96,$fc,$dc,$70,$70
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$4b,$7e,$6e,$38,$38 db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$4b,$7e,$6e,$38,$38
db $00,$00,$03,$03,$0c,$0c,$10,$10,$20,$20,$20,$20,$40,$40,$40,$40 db $00,$00,$03,$03,$07,$07,$0c,$0c,$18,$18,$18,$18,$30,$30,$30,$30
db $00,$00,$c0,$c0,$30,$30,$08,$08,$04,$04,$04,$04,$02,$02,$02,$02 db $00,$00,$c0,$c0,$e0,$e0,$30,$30,$18,$18,$18,$18,$0c,$0c,$0c,$0c
db $40,$40,$40,$40,$20,$20,$20,$20,$10,$10,$0c,$0c,$03,$03,$00,$00 db $30,$30,$30,$30,$18,$18,$18,$18,$0c,$0c,$07,$07,$03,$03,$00,$00
db $02,$02,$02,$02,$04,$04,$04,$04,$08,$08,$30,$30,$c0,$c0,$00,$00 db $0c,$0c,$0c,$0c,$18,$18,$18,$18,$30,$30,$e0,$e0,$c0,$c0,$00,$00
.SpriteTilesEnd: .SpriteTilesEnd:
.doggie1: ; tiles start at 0 .doggie1: ; tiles start at 0
@ -175,6 +194,10 @@ println "card vars start is ", CARD_VARS_START
db $01, $02, $07 db $01, $02, $07
db $04, $05, $09 db $04, $05, $09
.zero:
db $0a, $0b
db $0c, $0d
.KeyArtTiles: .KeyArtTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$07,$00 db $1f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$07,$00

Binary file not shown.

View File

@ -1,24 +0,0 @@
; original export script by gabriel reis, modified by shoofle
.SpriteTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $01,$01,$01,$01,$01,$01,$01,$01,$1f,$1f,$1f,$10,$1f,$10,$1f,$1c
db $f0,$f0,$fc,$5c,$fe,$06,$5f,$a3,$ff,$01,$ff,$00,$ff,$00,$ff,$00
db $00,$00,$00,$00,$00,$00,$07,$07,$87,$85,$ff,$fd,$ff,$01,$ff,$01
db $07,$07,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$d2,$7e,$76,$1c,$1c
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$69,$3f,$3b,$0e,$0e
db $00,$00,$00,$00,$00,$00,$0e,$0e,$8f,$8b,$ff,$fd,$ff,$01,$ff,$01
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$96,$fc,$dc,$70,$70
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$4b,$7e,$6e,$38,$38
db $00,$00,$03,$03,$0c,$0c,$10,$10,$20,$20,$20,$20,$40,$40,$40,$40
db $00,$00,$c0,$c0,$30,$30,$08,$08,$04,$04,$04,$04,$02,$02,$02,$02
db $40,$40,$40,$40,$20,$20,$20,$20,$10,$10,$0c,$0c,$03,$03,$00,$00
db $02,$02,$02,$02,$04,$04,$04,$04,$08,$08,$30,$30,$c0,$c0,$00,$00
.SpriteTilesEnd:
.Sprites: ; tiles start at 0
db $01, $02, $07
db $04, $05, $09
.SpritesEnd:

View File

@ -8,7 +8,48 @@ TheMagician:
dw MagicianMap dw MagicianMap
dw MagicianTilesEnd - MagicianTiles dw MagicianTilesEnd - MagicianTiles
dw MagicianTiles dw MagicianTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
; CARD_VARS_START + 0 ; timer for lemniscate
; CARD_VARS_START + 2 ; frame counter 1
; CARD_VARS_START + 3 ; frame counter 2
.fInit:
ld a, [rLCDC]
and a, %1111_1011
ld [rLCDC], a
ld hl, CARD_VARS_START
ld a, 0
ld [hl+], a ; timer for dog @ +0
ld [hl+], a
ld [hl+], a ; frame of animation 1
ld [hl+], a ; frame of animation 2
ret
.fUpdate:
ret
.fDraw:
ret
.SpriteTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $01,$01,$01,$01,$01,$01,$01,$01,$1f,$1f,$1f,$10,$1f,$10,$1f,$1c
db $f0,$f0,$fc,$5c,$fe,$06,$5f,$a3,$ff,$01,$ff,$00,$ff,$00,$ff,$00
db $00,$00,$00,$00,$00,$00,$07,$07,$87,$85,$ff,$fd,$ff,$01,$ff,$01
db $07,$07,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$d2,$7e,$76,$1c,$1c
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$69,$3f,$3b,$0e,$0e
db $00,$00,$00,$00,$00,$00,$0e,$0e,$8f,$8b,$ff,$fd,$ff,$01,$ff,$01
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$96,$fc,$dc,$70,$70
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$4b,$7e,$6e,$38,$38
db $00,$00,$03,$03,$07,$07,$0c,$0c,$18,$18,$18,$18,$30,$30,$30,$30
db $00,$00,$c0,$c0,$e0,$e0,$30,$30,$18,$18,$18,$18,$0c,$0c,$0c,$0c
db $30,$30,$30,$30,$18,$18,$18,$18,$0c,$0c,$07,$07,$03,$03,$00,$00
db $0c,$0c,$0c,$0c,$18,$18,$18,$18,$30,$30,$e0,$e0,$c0,$c0,$00,$00
.SpriteTilesEnd:
MagicianTiles: MagicianTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$ff,$ff,$ff,$e0,$e0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$e0,$e0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff

View File

@ -1,9 +1,6 @@
; CARD_HELPER_VARS_START defines the beginning of the $100 bytes set aside for system usage ; CARD_HELPER_VARS_START defines the beginning of the $100 bytes set aside for system usage
def cvCardAddress equ 0 ; location of the current card's struct def cvCardAddress equ 0 ; location of the current card's struct
LoadCardData: LoadCardData:
LoadCardDataAsync: LoadCardDataAsync:
; first and foremost, clear the card init, update, and draw handles, so there's ; first and foremost, clear the card init, update, and draw handles, so there's
@ -153,6 +150,37 @@ LoadCardDataAsync:
ld a, [hl+] ld a, [hl+]
ld [CARD_DRAW+1], a ld [CARD_DRAW+1], a
call CARD_INIT - 1 call CardInit
ret ret
CardInit:
call CARD_INIT - 1
ret
CardUpdate:
call CARD_UPDATE - 1
ret
CardDraw:
call CARD_DRAW - 1
ret
IncrementTimer:
; hl is the location in memory of a timer
; squashes a and de
; uses the value from rDELTAT
ld d, h
ld e, l
inc de
ld a, [rDELTAT]
add a, [hl]
ld [hl], a
ld h, d
ld l, e
ld a, [hl]
adc a, 0
ld [hl], a
dec hl
ret

View File

@ -13,6 +13,7 @@ DEF SAFE_TRANSFER_START EQU 145
DEF SAFE_TRANSFER_END EQU 153 DEF SAFE_TRANSFER_END EQU 153
CopyRange:
CopyRangeUnsafe: ; this is threadsafe but not vblank safe CopyRangeUnsafe: ; this is threadsafe but not vblank safe
; hl is source ; hl is source
; de is destination ; de is destination
@ -23,14 +24,16 @@ CopyRangeUnsafe: ; this is threadsafe but not vblank safe
dec bc dec bc
ld a, b ld a, b
or a, c ; check if bc is zero or a, c ; check if bc is zero
jp nz, CopyRangeUnsafe jp nz, CopyRange
ret ret
CopyRangeBy8s:
CopyRangeUnsafeBy8s: CopyRangeUnsafeBy8s:
; hl is source ; hl is source
; de is destination ; de is destination
; bc is length to copy ; bc is 1/8 of length to copy!!!
; so like this will copy 8*bc bytes!
ld a, [hl+] ld a, [hl+]
ld [de], a ld [de], a
@ -59,7 +62,7 @@ CopyRangeUnsafeBy8s:
dec bc dec bc
ld a, b ld a, b
or a, c ; check if bc is zero or a, c ; check if bc is zero
jp nz, CopyRangeUnsafeBy8s jp nz, CopyRangeBy8s
nop nop
nop nop
ret ret

View File

@ -13,43 +13,38 @@ CardBrowseSetup:
ld hl, .asyncTask ld hl, .asyncTask
call Async_Spawn_HL call Async_Spawn_HL
; make sure working oam is clear
ld hl, ZEROES
ld de, MY_OAM
ld bc, $100
call CopyRange
ret ret
.asyncTask .asyncTask:
ld a, HIGH(ZEROES)
ld de, SAFE_DMA_LOCATION ; arguments to the first async call.
call RunDMA
ld hl, CardBrowse.UITilemap ; origin ld hl, CardBrowse.UITilemap ; origin
ld de, $9800 ; destination ld de, $9800 ; destination
ld b, 18 ; height ld b, 18 ; height
ld c, 20 ; width ld c, 20 ; width
call CopyTilesToMapUnsafe call CopyTilesToMap
ld a, 0
ld [vBlocked], a
call RefreshCardTask call RefreshCardTask
ld a, 0
ld [vBlocked], a
ret ret
CardBrowseUpdate: CardBrowseUpdate:
call CardUpdate
ld hl, vTime ld hl, vTime
ld a, [rDELTAT] call IncrementTimer
ld b, a
ld a, [vTime]
add a, b
ld [vTime], a
ld a, [vTime+1]
adc a, 0
ld [vTime+1], a ; increment time. when the 16bit time register is greater
; than 4096 ($10_00) then one second has passed. so that's satisfied when
; vTime+1 is equal to or greater than $10
ld a, [vTime+1] ld a, [vTime+1]
cp a, $01 cp a, $01
jp c, .doneTimer ; if the timer is less than $0100, skip to end jp c, .doneTimer ; reset the timer and do behavior when vTime passes $0100
;otherwise reset the timer
ld a, 0 ld a, 0
ld [vTime], a ld [vTime], a
ld [vTime+1], a ld [vTime+1], a
@ -118,10 +113,15 @@ CardBrowseDraw:
ld bc, (SquaresTileset8 - SquaresTileset7) / 8 ld bc, (SquaresTileset8 - SquaresTileset7) / 8
call CopyRangeUnsafeBy8s call CopyRangeUnsafeBy8s
ld de, SAFE_DMA_LOCATION
ld a, HIGH(MY_OAM)
call RunDMA call RunDMA
ret ret
RefreshCardTask: RefreshCardTask:
ld a, [vSelectedCardIndex]
ld [vPreviousCardIndex], a
call DrawDeckMinimap call DrawDeckMinimap
call LoadCardData call LoadCardData
ret ret

View File

@ -11,41 +11,35 @@ CardReadSetup:
ld a, 1 ld a, 1
ld [vBlocked], a ld [vBlocked], a
ld hl, CardReadSetupAsyncTask ld hl, .asyncTask
call Async_Spawn_HL call Async_Spawn_HL
ld hl, ZEROES ld hl, ZEROES
ld de, MY_OAM ld de, MY_OAM
ld bc, $100 ld bc, $100
call CopyRangeUnsafe call CopyRange
ret ret
CardReadSetupAsyncTask: .asyncTask:
ld hl, CardRead.UITilemap ; origin ld hl, CardRead.UITilemap ; origin
ld de, $9800 ; destination ld de, $9800 ; destination
ld b, 18 ; height ld b, 18 ; height
ld c, 20 ; width ld c, 20 ; width
call CopyTilesToMapUnsafe call CopyTilesToMap
ld a, 0
ld [vBlocked], a
call ChangedCardTask call ChangedCardTask
ret ret
CardReadUpdate: CardReadUpdate:
call CARD_UPDATE - 1 call CardUpdate
ld hl, vTime ld hl, vTime
ld a, [rDELTAT] call IncrementTimer
ld b, a
ld a, [vTime]
add a, b
ld [vTime], a
ld a, [vTime+1]
adc a, 0
ld [vTime+1], a ; increment time. when the 16bit time register is greater
; than 4096 ($10_00) then one second has passed. so that's satisfied when
; vTime+1 is equal to or greater than $10
ld a, [vTime+1] ld a, [vTime+1]
cp a, $01 cp a, $01

41
SpriteTiles.asm Normal file
View File

@ -0,0 +1,41 @@
; original export script by gabriel reis, modified by shoofle
SpriteTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $01,$01,$01,$01,$01,$01,$01,$01,$1f,$1f,$1f,$10,$1f,$10,$1f,$1c
db $f0,$f0,$fc,$5c,$fe,$06,$5f,$a3,$ff,$01,$ff,$00,$ff,$00,$ff,$00
db $00,$00,$00,$00,$00,$00,$07,$07,$87,$85,$ff,$fd,$ff,$01,$ff,$01
db $07,$07,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$d2,$7e,$76,$1c,$1c
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$69,$3f,$3b,$0e,$0e
db $00,$00,$00,$00,$00,$00,$0e,$0e,$8f,$8b,$ff,$fd,$ff,$01,$ff,$01
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$96,$fc,$dc,$70,$70
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$4b,$7e,$6e,$38,$38
db $00,$00,$03,$03,$07,$07,$0c,$0c,$18,$18,$18,$18,$30,$30,$30,$30
db $00,$00,$c0,$c0,$e0,$e0,$30,$30,$18,$18,$18,$18,$0c,$0c,$0c,$0c
db $30,$30,$30,$30,$18,$18,$18,$18,$0c,$0c,$07,$07,$03,$03,$00,$00
db $0c,$0c,$0c,$0c,$18,$18,$18,$18,$30,$30,$e0,$e0,$c0,$c0,$00,$00
Sprites:
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $0a, $0b, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $0c, $0d, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $01, $02, $03, $01, $02, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $04, $08, $06, $04, $05, $09, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00

Binary file not shown.