diff options
Diffstat (limited to 'engine/menus/debug.asm')
-rw-r--r-- | engine/menus/debug.asm | 1430 |
1 files changed, 1430 insertions, 0 deletions
diff --git a/engine/menus/debug.asm b/engine/menus/debug.asm new file mode 100644 index 00000000..cd494d41 --- /dev/null +++ b/engine/menus/debug.asm @@ -0,0 +1,1430 @@ + 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 |