pokecrystal-board/engine/menus/debug.asm
Rangi eb1e3636bb Use labels instead of constants for HRAM
Use explicit ldh instruction to access HRAM locations, don't rely on optimizing ld
2018-08-25 14:28:22 -04:00

1398 lines
19 KiB
NASM

const_def $6a
const DEBUGTEST_UP_ARROW ; $6a
const DEBUGTEST_TICKS ; $6b
const DEBUGTEST_WHITE ; $6c
const DEBUGTEST_LIGHT ; $6d
const DEBUGTEST_DARK ; $6e
const DEBUGTEST_BLACK ; $6f
const DEBUGTEST_0 ; $70
const DEBUGTEST_1 ; $71
const DEBUGTEST_2 ; $72
const DEBUGTEST_3 ; $73
const DEBUGTEST_4 ; $74
const DEBUGTEST_5 ; $75
const DEBUGTEST_6 ; $76
const DEBUGTEST_7 ; $77
const DEBUGTEST_8 ; $78
const DEBUGTEST_9 ; $79
const DEBUGTEST_A ; $7a
const DEBUGTEST_B ; $7b
const DEBUGTEST_C ; $7c
const DEBUGTEST_D ; $7d
const DEBUGTEST_E ; $7e
const DEBUGTEST_F ; $7f
ColorTest:
; A debug menu to test monster and trainer palettes at runtime.
ldh a, [hCGB]
and a
jr nz, .asm_818b5
ldh a, [hSGB]
and a
ret z
.asm_818b5
ldh a, [hInMenu]
push af
ld a, $1
ldh [hInMenu], a
call DisableLCD
call Function81948
call Function8197c
call Function819a7
call Function818f4
call EnableLCD
ld de, MUSIC_NONE
call PlayMusic
xor a
ld [wJumptableIndex], a
ld [wcf66], a
ld [wd003], a
.asm_818de
ld a, [wJumptableIndex]
bit 7, a
jr nz, .asm_818f0
call Function81a74
call Function81f5e
call DelayFrame
jr .asm_818de
.asm_818f0
pop af
ldh [hInMenu], a
ret
Function818f4:
ld a, [wd002]
and a
jr nz, Function81911
ld hl, PokemonPalettes
Function818fd:
ld de, wOverworldMapBlocks
ld c, NUM_POKEMON + 1
.asm_81902
push bc
push hl
call Function81928
pop hl
ld bc, 8
add hl, bc
pop bc
dec c
jr nz, .asm_81902
ret
Function81911:
ld hl, TrainerPalettes
ld de, wOverworldMapBlocks
ld c, NUM_TRAINER_CLASSES
.asm_81919
push bc
push hl
call Function81928
pop hl
ld bc, 4
add hl, bc
pop bc
dec c
jr nz, .asm_81919
ret
Function81928:
ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes)
call GetFarByte
ld [de], a
inc de
inc hl
ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes)
call GetFarByte
ld [de], a
inc de
inc hl
ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes)
call GetFarByte
ld [de], a
inc de
inc hl
ld a, BANK(PokemonPalettes) ; BANK(TrainerPalettes)
call GetFarByte
ld [de], a
inc de
ret
Function81948:
ld a, $1
ldh [rVBK], a
ld hl, vTiles0
ld bc, sScratch - vTiles0
xor a
call ByteFill
ld a, $0
ldh [rVBK], a
ld hl, vTiles0
ld bc, sScratch - vTiles0
xor a
call ByteFill
hlcoord 0, 0, wAttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call ByteFill
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call ByteFill
call ClearSprites
ret
Function8197c:
ld hl, DebugColorTestGFX + 1 tiles
ld de, vTiles2 tile DEBUGTEST_UP_ARROW
ld bc, 22 tiles
call CopyBytes
ld hl, DebugColorTestGFX
ld de, vTiles0
ld bc, 1 tiles
call CopyBytes
call LoadStandardFont
ld hl, vTiles1
lb bc, 8, 0
.asm_8199d
ld a, [hl]
xor $ff
ld [hli], a
dec bc
ld a, c
or b
jr nz, .asm_8199d
ret
Function819a7:
ldh a, [hCGB]
and a
ret z
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ldh [rSVBK], a
ld hl, Palette_DebugBG
ld de, wBGPals2
ld bc, 16 palettes
call CopyBytes
ld a, 1 << rBGPI_AUTO_INCREMENT
ldh [rBGPI], a
ld hl, Palette_DebugBG
ld c, 8 palettes
xor a
.asm_819c8
ldh [rBGPD], a
dec c
jr nz, .asm_819c8
ld a, 1 << rOBPI_AUTO_INCREMENT
ldh [rOBPI], a
ld hl, Palette_DebugOB
ld c, 8 palettes
.asm_819d6
ld a, [hli]
ldh [rOBPD], a
dec c
jr nz, .asm_819d6
ld a, $94
ld [wc608], a
ld a, $52
ld [wc608 + 1], a
ld a, $4a
ld [wc608 + 2], a
ld a, $29
ld [wc608 + 3], a
pop af
ldh [rSVBK], a
ret
Palette_DebugBG:
INCLUDE "gfx/debug/bg.pal"
Palette_DebugOB:
INCLUDE "gfx/debug/ob.pal"
Function81a74:
call JoyTextDelay
ld a, [wJumptableIndex]
cp $4
jr nc, .asm_81a8b
ld hl, hJoyLast
ld a, [hl]
and SELECT
jr nz, .asm_81a9a
ld a, [hl]
and START
jr nz, .asm_81aab
.asm_81a8b
ld a, [wJumptableIndex]
ld e, a
ld d, 0
ld hl, Jumptable_81acf
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.asm_81a9a
call Function81eca
call Function81ac3
ld e, a
ld a, [wcf66]
inc a
cp e
jr c, .asm_81aba
xor a
jr .asm_81aba
.asm_81aab
call Function81eca
ld a, [wcf66]
dec a
cp $ff
jr nz, .asm_81aba
call Function81ac3
dec a
.asm_81aba
ld [wcf66], a
ld a, $0
ld [wJumptableIndex], a
ret
Function81ac3:
; Looping back around the pic set.
ld a, [wd002]
and a
jr nz, .asm_81acc
ld a, NUM_POKEMON ; CELEBI
ret
.asm_81acc
ld a, NUM_TRAINER_CLASSES - 1 ; MYSTICALMAN
ret
Jumptable_81acf:
dw Function81adb
dw Function81c18
dw Function81c33
dw Function81cc2
dw Function81d8e
dw Function81daf
Function81adb:
xor a
ldh [hBGMapMode], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, DEBUGTEST_BLACK
call ByteFill
hlcoord 1, 3
lb bc, 7, 18
ld a, DEBUGTEST_WHITE
call Bank20_FillBoxWithByte
hlcoord 11, 0
lb bc, 2, 3
ld a, DEBUGTEST_LIGHT
call Bank20_FillBoxWithByte
hlcoord 16, 0
lb bc, 2, 3
ld a, DEBUGTEST_DARK
call Bank20_FillBoxWithByte
call Function81bc0
call Function81bf4
ld a, [wcf66]
inc a
ld [wCurPartySpecies], a
ld [wDeciramBuffer], a
hlcoord 0, 1
ld de, wDeciramBuffer
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
ld a, [wd002]
and a
jr nz, .asm_81b7a
ld a, $1
ld [wUnownLetter], a
call GetPokemonName
hlcoord 4, 1
call PlaceString
xor a
ld [wBoxAlignment], a
hlcoord 12, 3
call _PrepMonFrontpic
ld de, vTiles2 tile $31
predef GetMonBackpic
ld a, $31
ldh [hGraphicStartTile], a
hlcoord 2, 4
lb bc, 6, 6
predef PlaceGraphic
ld a, [wd003]
and a
jr z, .asm_81b66
ld de, String_81baf
jr .asm_81b69
.asm_81b66
ld de, String_81bb4
.asm_81b69
hlcoord 7, 17
call PlaceString
hlcoord 0, 17
ld de, String_81bb9
call PlaceString
jr .asm_81ba9
.asm_81b7a
ld a, [wDeciramBuffer]
ld [wTrainerClass], a
callfar GetTrainerAttributes
ld de, wStringBuffer1
hlcoord 4, 1
call PlaceString
ld de, vTiles2
callfar GetTrainerPic
xor a
ld [wTempEnemyMonSpecies], a
ldh [hGraphicStartTile], a
hlcoord 2, 3
lb bc, 7, 7
predef PlaceGraphic
.asm_81ba9
ld a, $1
ld [wJumptableIndex], a
ret
String_81baf: db "レア", DEBUGTEST_BLACK, DEBUGTEST_BLACK, "@" ; rare (shiny)
String_81bb4: db "ノーマル@" ; normal
String_81bb9: db DEBUGTEST_A, "きりかえ▶@" ; (A) switches
Function81bc0:
decoord 0, 11, wAttrMap
hlcoord 2, 11
ld a, $1
call Function81bde
decoord 0, 13, wAttrMap
hlcoord 2, 13
ld a, $2
call Function81bde
decoord 0, 15, wAttrMap
hlcoord 2, 15
ld a, $3
Function81bde:
push af
ld a, DEBUGTEST_UP_ARROW
ld [hli], a
ld bc, $f
ld a, DEBUGTEST_TICKS
call ByteFill
ld l, e
ld h, d
pop af
ld bc, $28
call ByteFill
ret
Function81bf4:
ld a, [wcf66]
inc a
ld l, a
ld h, $0
add hl, hl
add hl, hl
ld de, wOverworldMapBlocks
add hl, de
ld de, wc608
ld bc, 4
call CopyBytes
xor a
ld [wcf64], a
ld [wcf65], a
ld de, wc608
call Function81ea5
ret
Function81c18:
ldh a, [hCGB]
and a
jr z, .asm_81c2a
ld a, $2
ldh [hBGMapMode], a
call DelayFrame
call DelayFrame
call DelayFrame
.asm_81c2a
call WaitBGMap
ld a, $2
ld [wJumptableIndex], a
ret
Function81c33:
ldh a, [hCGB]
and a
jr z, .asm_81c69
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ldh [rSVBK], a
ld hl, wBGPals2
ld de, wc608
ld c, $1
call Function81ee3
hlcoord 10, 2
ld de, wc608
call Function81ca7
hlcoord 15, 2
ld de, wc608 + 2
call Function81ca7
ld a, $1
ldh [hCGBPalUpdate], a
ld a, $3
ld [wJumptableIndex], a
pop af
ldh [rSVBK], a
ret
.asm_81c69
ld hl, wSGBPals
ld a, 1
ld [hli], a
ld a, LOW(PALRGB_WHITE)
ld [hli], a
ld a, HIGH(PALRGB_WHITE)
ld [hli], a
ld a, [wc608]
ld [hli], a
ld a, [wc608 + 1]
ld [hli], a
ld a, [wc608 + 2]
ld [hli], a
ld a, [wc608 + 3]
ld [hli], a
xor a
ld [hli], a
ld [hli], a
ld [hl], a
ld hl, wSGBPals
call Function81f0c
hlcoord 10, 2
ld de, wc608
call Function81ca7
hlcoord 15, 2
ld de, wc608 + 2
call Function81ca7
ld a, $3
ld [wJumptableIndex], a
ret
Function81ca7:
inc hl
inc hl
inc hl
ld a, [de]
call Function81cbc
ld a, [de]
swap a
call Function81cbc
inc de
ld a, [de]
call Function81cbc
ld a, [de]
swap a
Function81cbc:
and $f
add DEBUGTEST_0
ld [hld], a
ret
Function81cc2:
ldh a, [hJoyLast]
and B_BUTTON
jr nz, .asm_81cdf
ldh a, [hJoyLast]
and A_BUTTON
jr nz, .asm_81ce5
ld a, [wcf64]
and $3
ld e, a
ld d, 0
ld hl, Jumptable_81d02
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.asm_81cdf
ld a, $4
ld [wJumptableIndex], a
ret
.asm_81ce5
ld a, [wd002]
and a
ret nz
ld a, [wd003]
xor $4
ld [wd003], a
ld c, a
ld b, 0
ld hl, PokemonPalettes
add hl, bc
call Function818fd
ld a, $0
ld [wJumptableIndex], a
ret
Jumptable_81d02:
dw Function81d0a
dw Function81d34
dw Function81d46
dw Function81d58
Function81d0a:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Function81d89
ld a, [hl]
and D_LEFT
jr nz, .asm_81d1d
ld a, [hl]
and D_RIGHT
jr nz, .asm_81d28
ret
.asm_81d1d
xor a
ld [wcf65], a
ld de, wc608
call Function81ea5
ret
.asm_81d28
ld a, $1
ld [wcf65], a
ld de, wc608 + 2
call Function81ea5
ret
Function81d34:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Function81d89
ld a, [hl]
and D_UP
jr nz, Function81d84
ld hl, wc608 + 10
jr Function81d63
Function81d46:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Function81d89
ld a, [hl]
and D_UP
jr nz, Function81d84
ld hl, wc608 + 11
jr Function81d63
Function81d58:
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, Function81d84
ld hl, wc608 + 12
Function81d63:
ldh a, [hJoyLast]
and D_RIGHT
jr nz, Function81d70
ldh a, [hJoyLast]
and D_LEFT
jr nz, Function81d77
ret
Function81d70:
ld a, [hl]
cp $1f
ret nc
inc [hl]
jr Function81d7b
Function81d77:
ld a, [hl]
and a
ret z
dec [hl]
Function81d7b:
call Function81e67
ld a, $2
ld [wJumptableIndex], a
ret
Function81d84:
ld hl, wcf64
dec [hl]
ret
Function81d89:
ld hl, wcf64
inc [hl]
ret
Function81d8e:
hlcoord 0, 10
ld bc, $a0
ld a, DEBUGTEST_BLACK
call ByteFill
hlcoord 2, 12
ld de, String_81fcd
call PlaceString
xor a
ld [wd004], a
call Function81df4
ld a, $5
ld [wJumptableIndex], a
ret
Function81daf:
ld hl, hJoyPressed
ld a, [hl]
and B_BUTTON
jr nz, .asm_81dbb
call Function81dc7
ret
.asm_81dbb
ld a, $0
ld [wJumptableIndex], a
ret
Function81dc1:
ld hl, wJumptableIndex
set 7, [hl]
ret
Function81dc7:
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .asm_81dd5
ld a, [hl]
and D_DOWN
jr nz, .asm_81de2
ret
.asm_81dd5
ld a, [wd004]
cp $3b
jr z, .asm_81ddf
inc a
jr .asm_81ded
.asm_81ddf
xor a
jr .asm_81ded
.asm_81de2
ld a, [wd004]
and a
jr z, .asm_81deb
dec a
jr .asm_81ded
.asm_81deb
ld a, $3b
.asm_81ded
ld [wd004], a
call Function81df4
ret
Function81df4:
hlcoord 10, 11
call Function81e5e
hlcoord 10, 12
call Function81e5e
hlcoord 10, 13
call Function81e5e
hlcoord 10, 14
call Function81e5e
ld a, [wd004]
inc a
ld [wTempTMHM], a
predef GetTMHMMove
ld a, [wTempTMHM]
ld [wPutativeTMHMMove], a
call GetMoveName
hlcoord 10, 12
call PlaceString
ld a, [wd004]
call Function81e55
ld [wCurItem], a
predef CanLearnTMHMMove
ld a, c
and a
ld de, String_81e46
jr nz, .asm_81e3f
ld de, String_81e4d
.asm_81e3f
hlcoord 10, 14
call PlaceString
ret
String_81e46: db "おぼえられる@" ; can be taught
String_81e4d: db "おぼえられない@" ; cannot be taught
Function81e55:
cp $32
jr c, .asm_81e5b
inc a
inc a
.asm_81e5b
add $bf
ret
Function81e5e:
ld bc, 10
ld a, DEBUGTEST_BLACK
call ByteFill
ret
Function81e67:
ld a, [wc608 + 10]
and $1f
ld e, a
ld a, [wc608 + 11]
and $7
sla a
swap a
or e
ld e, a
ld a, [wc608 + 11]
and $18
sla a
swap a
ld d, a
ld a, [wc608 + 12]
and $1f
sla a
sla a
or d
ld d, a
ld a, [wcf65]
and a
jr z, .asm_81e9c
ld a, e
ld [wc608 + 2], a
ld a, d
ld [wc608 + 3], a
ret
.asm_81e9c
ld a, e
ld [wc608], a
ld a, d
ld [wc608 + 1], a
ret
Function81ea5:
ld a, [de]
and $1f
ld [wc608 + 10], a
ld a, [de]
and $e0
swap a
srl a
ld b, a
inc de
ld a, [de]
and $3
swap a
srl a
or b
ld [wc608 + 11], a
ld a, [de]
and $7c
srl a
srl a
ld [wc608 + 12], a
ret
Function81eca:
ld a, [wcf66]
inc a
ld l, a
ld h, $0
add hl, hl
add hl, hl
ld de, wOverworldMapBlocks
add hl, de
ld e, l
ld d, h
ld hl, wc608
ld bc, 4
call CopyBytes
ret
Function81ee3:
.asm_81ee3
ld a, LOW(PALRGB_WHITE)
ld [hli], a
ld a, HIGH(PALRGB_WHITE)
ld [hli], a
ld a, [de]
inc de
ld [hli], a
ld a, [de]
inc de
ld [hli], a
ld a, [de]
inc de
ld [hli], a
ld a, [de]
inc de
ld [hli], a
xor a
ld [hli], a
ld [hli], a
dec c
jr nz, .asm_81ee3
ret
Bank20_FillBoxWithByte:
; For some reason, we have another copy of FillBoxWithByte here
.row
push bc
push hl
.col
ld [hli], a
dec c
jr nz, .col
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
jr nz, .row
ret
Function81f0c:
ld a, [wcfbe]
push af
set 7, a
ld [wcfbe], a
call Function81f1d
pop af
ld [wcfbe], a
ret
Function81f1d:
ld a, [hl]
and $7
ret z
ld b, a
.asm_81f22
push bc
xor a
ldh [rJOYP], a
ld a, $30
ldh [rJOYP], a
ld b, $10
.asm_81f2c
ld e, $8
ld a, [hli]
ld d, a
.asm_81f30
bit 0, d
ld a, $10
jr nz, .asm_81f38
ld a, $20
.asm_81f38
ldh [rJOYP], a
ld a, $30
ldh [rJOYP], a
rr d
dec e
jr nz, .asm_81f30
dec b
jr nz, .asm_81f2c
ld a, $20
ldh [rJOYP], a
ld a, $30
ldh [rJOYP], a
ld de, 7000
.asm_81f51
nop
nop
nop
dec de
ld a, d
or e
jr nz, .asm_81f51
pop bc
dec b
jr nz, .asm_81f22
ret
Function81f5e:
ld a, DEBUGTEST_BLACK
hlcoord 10, 0
ld [hl], a
hlcoord 15, 0
ld [hl], a
hlcoord 1, 11
ld [hl], a
hlcoord 1, 13
ld [hl], a
hlcoord 1, 15
ld [hl], a
ld a, [wJumptableIndex]
cp $3
jr nz, .asm_81fc9
ld a, [wcf64]
and a
jr z, .asm_81f8d
dec a
hlcoord 1, 11
ld bc, 2 * SCREEN_WIDTH
call AddNTimes
ld [hl], $ed
.asm_81f8d
ld a, [wcf65]
and a
jr z, .asm_81f98
hlcoord 15, 0
jr .asm_81f9b
.asm_81f98
hlcoord 10, 0
.asm_81f9b
ld [hl], $ed
ld b, $70
ld c, $5
ld hl, wVirtualOAM
ld de, wc608 + 10
call .asm_81fb7
ld de, wc608 + 11
call .asm_81fb7
ld de, wc608 + 12
call .asm_81fb7
ret
.asm_81fb7
ld a, b
ld [hli], a ; y
ld a, [de]
add a
add a
add 3 * TILE_WIDTH
ld [hli], a ; x
xor a
ld [hli], a ; tile id
ld a, c
ld [hli], a ; attributes
ld a, 2 * TILE_WIDTH
add b
ld b, a
inc c
ret
.asm_81fc9
call ClearSprites
ret
String_81fcd:
db "おわりますか?" ; Are you finished?
next "はい<DOT><DOT><DOT>", DEBUGTEST_A ; YES...(A)
next "いいえ<DOT><DOT>", DEBUGTEST_B ; NO..(B)
db "@"
DebugColorTestGFX:
INCBIN "gfx/debug/color_test.2bpp"
TilesetColorTest:
ret
xor a
ld [wJumptableIndex], a
ld [wcf64], a
ld [wcf65], a
ld [wcf66], a
ldh [hMapAnims], a
call ClearSprites
call OverworldTextModeSwitch
call WaitBGMap2
xor a
ldh [hBGMapMode], a
ld de, DebugColorTestGFX + 1 tiles
ld hl, vTiles2 tile DEBUGTEST_UP_ARROW
lb bc, BANK(DebugColorTestGFX), 22
call Request2bpp
ld de, DebugColorTestGFX
ld hl, vTiles1
lb bc, BANK(DebugColorTestGFX), 1
call Request2bpp
ld a, HIGH(vBGMap1)
ldh [hBGMapAddress + 1], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, DEBUGTEST_BLACK
call ByteFill
hlcoord 0, 0, wAttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, $7
call ByteFill
ld de, $15
ld a, DEBUGTEST_WHITE
call Function821d2
ld de, $1a
ld a, DEBUGTEST_LIGHT
call Function821d2
ld de, $1f
ld a, DEBUGTEST_DARK
call Function821d2
ld de, $24
ld a, DEBUGTEST_BLACK
call Function821d2
call Function821f4
call Function8220f
call WaitBGMap2
ld [wJumptableIndex], a
ld a, $40
ldh [hWY], a
ret
Function821d2:
hlcoord 0, 0
call Function821de
Function821d8:
ld a, [wcf64]
hlcoord 0, 0, wAttrMap
Function821de:
add hl, de
rept 4
ld [hli], a
endr
ld bc, $10
add hl, bc
rept 4
ld [hli], a
endr
ld bc, $10
add hl, bc
rept 4
ld [hli], a
endr
ret
Function821f4:
hlcoord 2, 4
call Function82203
hlcoord 2, 6
call Function82203
hlcoord 2, 8
Function82203:
ld a, DEBUGTEST_UP_ARROW
ld [hli], a
ld bc, $10 - 1
ld a, DEBUGTEST_TICKS
call ByteFill
ret
Function8220f:
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals1)
ldh [rSVBK], a
ld a, [wcf64]
ld l, a
ld h, $0
add hl, hl
add hl, hl
add hl, hl
ld de, wBGPals1
add hl, de
ld de, wc608
ld bc, 8
call CopyBytes
ld de, wc608
call Function81ea5
pop af
ldh [rSVBK], a
ret
Function82236:
ld hl, hJoyLast
ld a, [hl]
and SELECT
jr nz, .loop7
ld a, [hl]
and B_BUTTON
jr nz, .asm_82299
call Function822f0
ret
.loop7
ld hl, wcf64
ld a, [hl]
inc a
and $7
cp $7
jr nz, .asm_82253
xor a
.asm_82253
ld [hl], a
ld de, $15
call Function821d8
ld de, $1a
call Function821d8
ld de, $1f
call Function821d8
ld de, $24
call Function821d8
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ldh [rSVBK], a
ld hl, wBGPals2
ld a, [wcf64]
ld bc, 1 palettes
call AddNTimes
ld de, wc608
ld bc, 1 palettes
call CopyBytes
pop af
ldh [rSVBK], a
ld a, $2
ldh [hBGMapMode], a
ld c, 3
call DelayFrames
ld a, $1
ldh [hBGMapMode], a
ret
.asm_82299
call ClearSprites
ldh a, [hWY]
xor $d0
ldh [hWY], a
ret
Function822a3:
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ldh [rSVBK], a
ld hl, wBGPals2
ld a, [wcf64]
ld bc, 1 palettes
call AddNTimes
ld e, l
ld d, h
ld hl, wc608
ld bc, 1 palettes
call CopyBytes
hlcoord 1, 0
ld de, wc608
call Function81ca7
hlcoord 6, 0
ld de, wc608 + 2
call Function81ca7
hlcoord 11, 0
ld de, wc608 + 4
call Function81ca7
hlcoord 16, 0
ld de, wc608 + 6
call Function81ca7
pop af
ldh [rSVBK], a
ld a, $1
ldh [hCGBPalUpdate], a
call DelayFrame
ret
Function822f0:
ld a, [wcf65]
and 3
ld e, a
ld d, 0
ld hl, .dw
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.dw
dw Function82309
dw Function82339
dw Function8234b
dw Function8235d
Function82309:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Function8238c
ld a, [hl]
and D_LEFT
jr nz, .asm_8231c
ld a, [hl]
and D_RIGHT
jr nz, .asm_82322
ret
.asm_8231c
ld a, [wcf66]
dec a
jr .asm_82326
.asm_82322
ld a, [wcf66]
inc a
.asm_82326
and $3
ld [wcf66], a
ld e, a
ld d, $0
ld hl, wc608
add hl, de
add hl, de
ld e, l
ld d, h
call Function81ea5
ret
Function82339:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Function8238c
ld a, [hl]
and D_UP
jr nz, Function82387
ld hl, wc608 + 10
jr Function82368
Function8234b:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Function8238c
ld a, [hl]
and D_UP
jr nz, Function82387
ld hl, wc608 + 11
jr Function82368
Function8235d:
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, Function82387
ld hl, wc608 + 12
Function82368:
ldh a, [hJoyLast]
and D_RIGHT
jr nz, .asm_82375
ldh a, [hJoyLast]
and D_LEFT
jr nz, .asm_8237c
ret
.asm_82375
ld a, [hl]
cp $1f
ret nc
inc [hl]
jr .asm_82380
.asm_8237c
ld a, [hl]
and a
ret z
dec [hl]
.asm_82380
call Function82391
call Function822a3
ret
Function82387:
ld hl, wcf65
dec [hl]
ret
Function8238c:
ld hl, wcf65
inc [hl]
ret
Function82391:
ld a, [wc608 + 10]
and $1f
ld e, a
ld a, [wc608 + 11]
and $7
sla a
swap a
or e
ld e, a
ld a, [wc608 + 11]
and $18
sla a
swap a
ld d, a
ld a, [wc608 + 12]
and $1f
sla a
sla a
or d
ld d, a
ld a, [wcf66]
ld c, a
ld b, $0
ld hl, wc608
add hl, bc
add hl, bc
ld a, e
ld [hli], a
ld [hl], d
ret
Function823c6:
ret
Function823c7:
ret