Files
pokegold/engine/menus/debug.asm
T
2020-05-23 02:08:02 -04:00

1431 lines
19 KiB
NASM

const_def $6a
const DEBUGTEST_TICKS_1 ; $6a
const DEBUGTEST_TICKS_2 ; $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_fd2d2
ldh a, [hSGB]
and a
ret z
.asm_fd2d2
ldh a, [hInMenu]
push af
ld a, $1
ldh [hInMenu], a
call DisableLCD
call Functionfd365
call Functionfd399
call Functionfd3c4
call Functionfd311
call EnableLCD
ld de, MUSIC_NONE
call PlayMusic
xor a
ld [wJumptableIndex], a
ld [wce66], a
ld [wceee], a
.asm_fd2fb
ld a, [wJumptableIndex]
bit 7, a
jr nz, .asm_fd30d
call Functionfd487
call Functionfd967
call DelayFrame
jr .asm_fd2fb
.asm_fd30d
pop af
ldh [hInMenu], a
ret
Functionfd311:
ld a, [wceed]
and a
jr nz, Functionfd32e
ld hl, PokemonPalettes
Functionfd31a:
ld de, wOverworldMapBlocks
ld c, NUM_POKEMON + 1
.asm_fd31f
push bc
push hl
call Functionfd345
pop hl
ld bc, 8
add hl, bc
pop bc
dec c
jr nz, .asm_fd31f
ret
Functionfd32e:
ld hl, TrainerPalettes
ld de, wOverworldMapBlocks
ld c, NUM_TRAINER_CLASSES
.asm_fd336
push bc
push hl
call Functionfd345
pop hl
ld bc, 4
add hl, bc
pop bc
dec c
jr nz, .asm_fd336
ret
Functionfd345:
ld a, BANK(PokemonPalettes) ; aka BANK(TrainerPalettes)
call GetFarByte
ld [de], a
inc de
inc hl
ld a, BANK(PokemonPalettes) ; aka BANK(TrainerPalettes)
call GetFarByte
ld [de], a
inc de
inc hl
ld a, BANK(PokemonPalettes) ; aka BANK(TrainerPalettes)
call GetFarByte
ld [de], a
inc de
inc hl
ld a, BANK(PokemonPalettes) ; aka BANK(TrainerPalettes)
call GetFarByte
ld [de], a
inc de
ret
Functionfd365:
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
Functionfd399:
ld hl, DebugColorTestGFX
ld de, vTiles2 tile DEBUGTEST_TICKS_1
ld bc, 22 tiles
call CopyBytes
ld hl, DebugUpArrowGFX
ld de, vTiles0
ld bc, 1 tiles
call CopyBytes
call LoadStandardFont
ld hl, vTiles1
lb bc, 8, 0
.asm_fd3ba
ld a, [hl]
xor $ff
ld [hli], a
dec bc
ld a, c
or b
jr nz, .asm_fd3ba
ret
Functionfd3c4:
ldh a, [hCGB]
and a
ret z
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_fd3de
ldh [rBGPD], a
dec c
jr nz, .asm_fd3de
ld a, 1 << rOBPI_AUTO_INCREMENT
ldh [rOBPI], a
ld hl, Palette_DebugOB
ld c, 8 palettes
.asm_fd3ec
ld a, [hli]
ldh [rOBPD], a
dec c
jr nz, .asm_fd3ec
ld a, $94
ld [wc508], a
ld a, $52
ld [wc508 + 1], a
ld a, $4a
ld [wc508 + 2], a
ld a, $29
ld [wc508 + 3], a
ret
Palette_DebugBG:
INCLUDE "gfx/debug/bg.pal"
Palette_DebugOB:
INCLUDE "gfx/debug/ob.pal"
Functionfd487:
call JoyTextDelay
ld a, [wJumptableIndex]
cp $4
jr nc, .asm_fd49e
ld hl, hJoyLast
ld a, [hl]
and SELECT
jr nz, .asm_fd4ad
ld a, [hl]
and START
jr nz, .asm_fd4be
.asm_fd49e
ld a, [wJumptableIndex]
ld e, a
ld d, 0
ld hl, Jumptable_fd4e2
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.asm_fd4ad
call Functionfd8d3
call Functionfd4d6
ld e, a
ld a, [wce66]
inc a
cp e
jr c, .asm_fd4cd
xor a
jr .asm_fd4cd
.asm_fd4be
call Functionfd8d3
ld a, [wce66]
dec a
cp $ff
jr nz, .asm_fd4cd
call Functionfd4d6
dec a
.asm_fd4cd
ld [wce66], a
ld a, $0
ld [wJumptableIndex], a
ret
Functionfd4d6:
; Looping back around the pic set.
ld a, [wceed]
and a
jr nz, .asm_fd4df
ld a, NUM_POKEMON ; CELEBI
ret
.asm_fd4df
ld a, NUM_TRAINER_CLASSES - 1 ; MYSTICALMAN
ret
Jumptable_fd4e2:
dw Functionfd4ee
dw Functionfd62b
dw Functionfd646
dw Functionfd6cb
dw Functionfd797
dw Functionfd7b8
Functionfd4ee:
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 Bank3f_FillBoxWithByte
hlcoord 11, 0
lb bc, 2, 3
ld a, DEBUGTEST_LIGHT
call Bank3f_FillBoxWithByte
hlcoord 16, 0
lb bc, 2, 3
ld a, DEBUGTEST_DARK
call Bank3f_FillBoxWithByte
call Functionfd5d3
call Functionfd607
ld a, [wce66]
inc a
ld [wCurPartySpecies], a
ld [wDeciramBuffer], a
hlcoord 0, 1
ld de, wDeciramBuffer
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
ld a, [wceed]
and a
jr nz, .asm_fd58d
ld a, $1
ld [wUnownLetter], a
call GetPokemonName
hlcoord 4, 1
call PlaceString
xor a
ld [wBoxAlignment], a
hlcoord 2, 3
call _PrepMonFrontpic
ld de, vTiles2 tile $31
predef GetMonBackpic
ld a, $31
ldh [hGraphicStartTile], a
hlcoord 12, 4
lb bc, 6, 6
predef PlaceGraphic
ld a, [wceee]
and a
jr z, .asm_fd579
ld de, String_fd5c2
jr .asm_fd57c
.asm_fd579
ld de, String_fd5c7
.asm_fd57c
hlcoord 7, 17
call PlaceString
hlcoord 0, 17
ld de, String_fd5cc
call PlaceString
jr .asm_fd5bc
.asm_fd58d
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_fd5bc
ld a, $1
ld [wJumptableIndex], a
ret
String_fd5c2: db "レア", DEBUGTEST_BLACK, DEBUGTEST_BLACK, "@" ; rare (shiny)
String_fd5c7: db "ノーマル@" ; normal
String_fd5cc: db DEBUGTEST_A, "きりかえ▶@" ; (A) switches
Functionfd5d3:
decoord 0, 11, wAttrmap
hlcoord 2, 11
ld a, $1
call Functionfd5f1
decoord 0, 13, wAttrmap
hlcoord 2, 13
ld a, $2
call Functionfd5f1
decoord 0, 15, wAttrmap
hlcoord 2, 15
ld a, $3
Functionfd5f1:
push af
ld a, DEBUGTEST_TICKS_1
ld [hli], a
ld bc, $f
ld a, DEBUGTEST_TICKS_2
call ByteFill
ld l, e
ld h, d
pop af
ld bc, $28
call ByteFill
ret
Functionfd607:
ld a, [wce66]
inc a
ld l, a
ld h, $0
add hl, hl
add hl, hl
ld de, wOverworldMapBlocks
add hl, de
ld de, wc508
ld bc, 4
call CopyBytes
xor a
ld [wce64], a
ld [wce65], a
ld de, wc508
call Functionfd8ae
ret
Functionfd62b:
ldh a, [hCGB]
and a
jr z, .asm_fd63d
ld a, $2
ldh [hBGMapMode], a
call DelayFrame
call DelayFrame
call DelayFrame
.asm_fd63d
call WaitBGMap
ld a, $2
ld [wJumptableIndex], a
ret
Functionfd646:
ldh a, [hCGB]
and a
jr z, .asm_fd672
ld hl, wBGPals2
ld de, wc508
ld c, $1
call Functionfd8ec
hlcoord 10, 2
ld de, wc508
call Functionfd6b0
hlcoord 15, 2
ld de, wc508 + 2
call Functionfd6b0
ld a, $1
ldh [hCGBPalUpdate], a
ld a, $3
ld [wJumptableIndex], a
ret
.asm_fd672
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, [wc508]
ld [hli], a
ld a, [wc508 + 1]
ld [hli], a
ld a, [wc508 + 2]
ld [hli], a
ld a, [wc508 + 3]
ld [hli], a
xor a
ld [hli], a
ld [hli], a
ld [hl], a
ld hl, wSGBPals
call Functionfd915
hlcoord 10, 2
ld de, wc508
call Functionfd6b0
hlcoord 15, 2
ld de, wc508 + 2
call Functionfd6b0
ld a, $3
ld [wJumptableIndex], a
ret
Functionfd6b0:
inc hl
inc hl
inc hl
ld a, [de]
call Functionfd6c5
ld a, [de]
swap a
call Functionfd6c5
inc de
ld a, [de]
call Functionfd6c5
ld a, [de]
swap a
Functionfd6c5:
and $f
add DEBUGTEST_0
ld [hld], a
ret
Functionfd6cb:
ldh a, [hJoyLast]
and B_BUTTON
jr nz, .asm_fd6e8
ldh a, [hJoyLast]
and A_BUTTON
jr nz, .asm_fd6ee
ld a, [wce64]
and $3
ld e, a
ld d, 0
ld hl, Jumptable_fd70b
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.asm_fd6e8
ld a, $4
ld [wJumptableIndex], a
ret
.asm_fd6ee
ld a, [wceed]
and a
ret nz
ld a, [wceee]
xor $4
ld [wceee], a
ld c, a
ld b, 0
ld hl, PokemonPalettes
add hl, bc
call Functionfd31a
ld a, $0
ld [wJumptableIndex], a
ret
Jumptable_fd70b:
dw Functionfd713
dw Functionfd73d
dw Functionfd74f
dw Functionfd761
Functionfd713:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Functionfd792
ld a, [hl]
and D_LEFT
jr nz, .asm_fd726
ld a, [hl]
and D_RIGHT
jr nz, .asm_fd731
ret
.asm_fd726
xor a
ld [wce65], a
ld de, wc508
call Functionfd8ae
ret
.asm_fd731
ld a, $1
ld [wce65], a
ld de, wc508 + 2
call Functionfd8ae
ret
Functionfd73d:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Functionfd792
ld a, [hl]
and D_UP
jr nz, Functionfd78d
ld hl, wc508 + 10
jr Functionfd76c
Functionfd74f:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Functionfd792
ld a, [hl]
and D_UP
jr nz, Functionfd78d
ld hl, wc508 + 11
jr Functionfd76c
Functionfd761:
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, Functionfd78d
ld hl, wc508 + 12
Functionfd76c:
ldh a, [hJoyLast]
and D_RIGHT
jr nz, Functionfd779
ldh a, [hJoyLast]
and D_LEFT
jr nz, Functionfd780
ret
Functionfd779:
ld a, [hl]
cp $1f
ret nc
inc [hl]
jr Functionfd784
Functionfd780:
ld a, [hl]
and a
ret z
dec [hl]
Functionfd784:
call Functionfd870
ld a, $2
ld [wJumptableIndex], a
ret
Functionfd78d:
ld hl, wce64
dec [hl]
ret
Functionfd792:
ld hl, wce64
inc [hl]
ret
Functionfd797:
hlcoord 0, 10
ld bc, $a0
ld a, DEBUGTEST_BLACK
call ByteFill
hlcoord 2, 12
ld de, String_fd9d6
call PlaceString
xor a
ld [wceef], a
call Functionfd7fd
ld a, $5
ld [wJumptableIndex], a
ret
Functionfd7b8:
ld hl, hJoyPressed
ld a, [hl]
and B_BUTTON
jr nz, .asm_fd7b8
call Functionfd7d0
ret
.asm_fd7b8
ld a, $0
ld [wJumptableIndex], a
ret
Functionfd7ca:
ld hl, wJumptableIndex
set 7, [hl]
ret
Functionfd7d0:
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .asm_fd7de
ld a, [hl]
and D_DOWN
jr nz, .asm_fd7eb
ret
.asm_fd7de
ld a, [wceef]
cp $38
jr z, .asm_fd7e8
inc a
jr .asm_fd7f6
.asm_fd7e8
xor a
jr .asm_fd7f6
.asm_fd7eb
ld a, [wceef]
and a
jr z, .asm_fd7f4
dec a
jr .asm_fd7f6
.asm_fd7f4
ld a, $38
.asm_fd7f6
ld [wceef], a
call Functionfd7fd
ret
Functionfd7fd:
hlcoord 10, 11
call Functionfd867
hlcoord 10, 12
call Functionfd867
hlcoord 10, 13
call Functionfd867
hlcoord 10, 14
call Functionfd867
ld a, [wceef]
inc a
ld [wTempTMHM], a
predef GetTMHMMove
ld a, [wTempTMHM]
ld [wPutativeTMHMMove], a
call GetMoveName
hlcoord 10, 12
call PlaceString
ld a, [wceef]
call Functionfd85e
ld [wCurItem], a
predef CanLearnTMHMMove
ld a, c
and a
ld de, String_fd84f
jr nz, .asm_fd848
ld de, String_fd856
.asm_fd848
hlcoord 10, 14
call PlaceString
ret
String_fd84f: db "おぼえられる@" ; can be taught
String_fd856: db "おぼえられない@" ; cannot be taught
Functionfd85e:
cp $32
jr c, .asm_fd864
inc a
inc a
.asm_fd864
add $bf
ret
Functionfd867:
ld bc, 10
ld a, DEBUGTEST_BLACK
call ByteFill
ret
Functionfd870:
ld a, [wc508 + 10]
and $1f
ld e, a
ld a, [wc508 + 11]
and $7
sla a
swap a
or e
ld e, a
ld a, [wc508 + 11]
and $18
sla a
swap a
ld d, a
ld a, [wc508 + 12]
and $1f
sla a
sla a
or d
ld d, a
ld a, [wce65]
and a
jr z, .asm_fd8a5
ld a, e
ld [wc508 + 2], a
ld a, d
ld [wc508 + 3], a
ret
.asm_fd8a5
ld a, e
ld [wc508], a
ld a, d
ld [wc508 + 1], a
ret
Functionfd8ae:
ld a, [de]
and $1f
ld [wc508 + 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 [wc508 + 11], a
ld a, [de]
and $7c
srl a
srl a
ld [wc508 + 12], a
ret
Functionfd8d3:
ld a, [wce66]
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, wc508
ld bc, 4
call CopyBytes
ret
Functionfd8ec:
.asm_fd8ec
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_fd8ec
ret
Bank3f_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
Functionfd915:
ld a, [wd8ba]
push af
set 7, a
ld [wd8ba], a
call Functionfd926
pop af
ld [wd8ba], a
ret
Functionfd926:
ld a, [hl]
and $7
ret z
ld b, a
.asm_fd92b
push bc
xor a
ldh [rJOYP], a
ld a, $30
ldh [rJOYP], a
ld b, $10
.asm_fd935
ld e, $8
ld a, [hli]
ld d, a
.asm_fd939
bit 0, d
ld a, $10
jr nz, .asm_fd941
ld a, $20
.asm_fd941
ldh [rJOYP], a
ld a, $30
ldh [rJOYP], a
rr d
dec e
jr nz, .asm_fd939
dec b
jr nz, .asm_fd935
ld a, $20
ldh [rJOYP], a
ld a, $30
ldh [rJOYP], a
ld de, 7000
.asm_fd95a
nop
nop
nop
dec de
ld a, d
or e
jr nz, .asm_fd95a
pop bc
dec b
jr nz, .asm_fd92b
ret
Functionfd967:
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_fd9d2
ld a, [wce64]
and a
jr z, .asm_fd996
dec a
hlcoord 1, 11
ld bc, 2 * SCREEN_WIDTH
call AddNTimes
ld [hl], $ed
.asm_fd996
ld a, [wce65]
and a
jr z, .asm_fd9a1
hlcoord 15, 0
jr .asm_fd9a4
.asm_fd9a1
hlcoord 10, 0
.asm_fd9a4
ld [hl], $ed
ld b, $70
ld c, $5
ld hl, wVirtualOAM
ld de, wc508 + 10
call .asm_fd9c0
ld de, wc508 + 11
call .asm_fd9c0
ld de, wc508 + 12
call .asm_fd9c0
ret
.asm_fd9c0
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_fd9d2
call ClearSprites
ret
String_fd9d6:
db "おわりますか?" ; Are you finished?
next "はい<DOT><DOT><DOT>", DEBUGTEST_A ; YES...(A)
next "いいえ<DOT><DOT>", DEBUGTEST_B ; NO..(B)
db "@"
DebugUpArrowGFX:
INCBIN "gfx/debug/up_arrow.2bpp"
DebugColorTestGFX:
INCBIN "gfx/debug/color_test.2bpp"
TilesetColorTest:
ret
xor a
ld [wJumptableIndex], a
ld [wce64], a
ld [wce65], a
ld [wce66], a
ldh [hMapAnims], a
call ClearSprites
call OverworldTextModeSwitch
call WaitBGMap2
xor a
ldh [hBGMapMode], a
ld de, DebugColorTestGFX
ld hl, vTiles2 tile DEBUGTEST_TICKS_1
lb bc, BANK(DebugColorTestGFX), 22
call Request2bpp
ld de, DebugUpArrowGFX
ld hl, vTiles1
lb bc, BANK(DebugUpArrowGFX), 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 Functionfdbdb
ld de, $1a
ld a, DEBUGTEST_LIGHT
call Functionfdbdb
ld de, $1f
ld a, DEBUGTEST_DARK
call Functionfdbdb
ld de, $24
ld a, DEBUGTEST_BLACK
call Functionfdbdb
call Functionfdbfd
call Functionfdc18
call WaitBGMap2
ld [wJumptableIndex], a
ld a, $40
ldh [hWY], a
ret
Functionfdbdb:
hlcoord 0, 0
call Functionfdbe7
Functionfdbe1:
ld a, [wce64]
hlcoord 0, 0, wAttrmap
Functionfdbe7:
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
Functionfdbfd:
hlcoord 2, 4
call Functionfdc0c
hlcoord 2, 6
call Functionfdc0c
hlcoord 2, 8
Functionfdc0c:
ld a, DEBUGTEST_TICKS_1
ld [hli], a
ld bc, $10 - 1
ld a, DEBUGTEST_TICKS_2
call ByteFill
ret
Functionfdc18:
ld a, [wce64]
ld l, a
ld h, $0
add hl, hl
add hl, hl
add hl, hl
ld de, wBGPals1
add hl, de
ld de, wc508
ld bc, 8
call CopyBytes
ld de, wc508
call Functionfd8ae
ret
Functionfdc35:
ld hl, hJoyLast
ld a, [hl]
and SELECT
jr nz, .loop7
ld a, [hl]
and B_BUTTON
jr nz, .asm_fdc8e
call Functionfdcdb
ret
.loop7
ld hl, wce64
ld a, [hl]
inc a
and $7
cp $7
jr nz, .asm_fdc52
xor a
.asm_fdc52
ld [hl], a
ld de, $15
call Functionfdbe1
ld de, $1a
call Functionfdbe1
ld de, $1f
call Functionfdbe1
ld de, $24
call Functionfdbe1
ld hl, wBGPals2
ld a, [wce64]
ld bc, 1 palettes
call AddNTimes
ld de, wc508
ld bc, 1 palettes
call CopyBytes
ld a, $2
ldh [hBGMapMode], a
ld c, 3
call DelayFrames
ld a, $1
ldh [hBGMapMode], a
ret
.asm_fdc8e
call ClearSprites
ldh a, [hWY]
xor $d0
ldh [hWY], a
ret
Functionfdc98:
ld hl, wBGPals2
ld a, [wce64]
ld bc, 1 palettes
call AddNTimes
ld e, l
ld d, h
ld hl, wc508
ld bc, 1 palettes
call CopyBytes
hlcoord 1, 0
ld de, wc508
call Functionfd6b0
hlcoord 6, 0
ld de, wc508 + 2
call Functionfd6b0
hlcoord 11, 0
ld de, wc508 + 4
call Functionfd6b0
hlcoord 16, 0
ld de, wc508 + 6
call Functionfd6b0
ld a, $1
ldh [hCGBPalUpdate], a
call DelayFrame
ret
Functionfdcdb:
ld a, [wce65]
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 Functionfdcf4
dw Functionfdd24
dw Functionfdd36
dw Functionfdd48
Functionfdcf4:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Functionfdd77
ld a, [hl]
and D_LEFT
jr nz, .asm_fdd07
ld a, [hl]
and D_RIGHT
jr nz, .asm_fdd0d
ret
.asm_fdd07
ld a, [wce66]
dec a
jr .asm_fdd11
.asm_fdd0d
ld a, [wce66]
inc a
.asm_fdd11
and $3
ld [wce66], a
ld e, a
ld d, $0
ld hl, wc508
add hl, de
add hl, de
ld e, l
ld d, h
call Functionfd8ae
ret
Functionfdd24:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Functionfdd77
ld a, [hl]
and D_UP
jr nz, Functionfdd72
ld hl, wc508 + 10
jr Functionfdd53
Functionfdd36:
ld hl, hJoyLast
ld a, [hl]
and D_DOWN
jr nz, Functionfdd77
ld a, [hl]
and D_UP
jr nz, Functionfdd72
ld hl, wc508 + 11
jr Functionfdd53
Functionfdd48:
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, Functionfdd72
ld hl, wc508 + 12
Functionfdd53:
ldh a, [hJoyLast]
and D_RIGHT
jr nz, .asm_fdd60
ldh a, [hJoyLast]
and D_LEFT
jr nz, .asm_fdd67
ret
.asm_fdd60
ld a, [hl]
cp $1f
ret nc
inc [hl]
jr .asm_fdd6b
.asm_fdd67
ld a, [hl]
and a
ret z
dec [hl]
.asm_fdd6b
call Functionfdd7c
call Functionfdc98
ret
Functionfdd72:
ld hl, wce65
dec [hl]
ret
Functionfdd77:
ld hl, wce65
inc [hl]
ret
Functionfdd7c:
ld a, [wc508 + 10]
and $1f
ld e, a
ld a, [wc508 + 11]
and $7
sla a
swap a
or e
ld e, a
ld a, [wc508 + 11]
and $18
sla a
swap a
ld d, a
ld a, [wc508 + 12]
and $1f
sla a
sla a
or d
ld d, a
ld a, [wce66]
ld c, a
ld b, $0
ld hl, wc508
add hl, bc
add hl, bc
ld a, e
ld [hli], a
ld [hl], d
ret
Functionfddb1:
ld a, DEBUGTEST_BLACK
hlcoord 0, 4
ld [hl], a
hlcoord 0, 6
ld [hl], a
hlcoord 0, 8
ld [hl], a
hlcoord 0, 2
ld [hl], a
hlcoord 5, 2
ld [hl], a
hlcoord 10, 2
ld [hl], a
hlcoord 15, 2
ld [hl], a
ld a, [wce65]
and a
jr z, .asm_fdde1
dec a
hlcoord 0, 4
ld bc, 2 * SCREEN_WIDTH
call AddNTimes
ld [hl], $ed
.asm_fdde1
ld a, [wce66]
hlcoord 0, 2
ld bc, $5
call AddNTimes
ld [hl], $ed
ld b, $78
ld hl, wVirtualOAM
ld de, wc508 + 10
call .asm_fde07
ld de, wc508 + 11
call .asm_fde07
ld de, wc508 + 12
call .asm_fde07
ret
.asm_fde07
ld a, b
ld [hli], a
ld a, [de]
add a
add a
add 3 * TILE_WIDTH
ld [hli], a
ld a, 16 * TILE_WIDTH
ld [hli], a
ld a, $5
ld [hli], a
ld a, 2 * TILE_WIDTH
add b
ld b, a
inc c
ret
; unused
call ClearSprites
ret
; unused
ret