pokered/engine/debug/debug_party.asm
kagnusdev e82e0ead50
Some checks failed
CI / build (push) Has been cancelled
CI / build-macos (push) Has been cancelled
Make DebugSetPokedexEntries automatically adapt to NUM_POKEMON changes (#576)
2026-04-06 14:55:39 -04:00

161 lines
2.8 KiB
NASM

SetDebugNewGameParty: ; unreferenced except in _DEBUG
ld de, DebugNewGameParty
.loop
ld a, [de]
cp -1
ret z
ld [wCurPartySpecies], a
inc de
ld a, [de]
ld [wCurEnemyLevel], a
inc de
call AddPartyMon
jr .loop
DebugNewGameParty: ; unreferenced except in _DEBUG
; Exeggutor is the only debug party member shared with Red, Green, and Japanese Blue.
; "Tsunekazu Ishihara: Exeggutor is my favorite. That's because I was
; always using this character while I was debugging the program."
; From https://web.archive.org/web/20000607152840/http://pocket.ign.com/news/14973.html
db EXEGGUTOR, 90
IF DEF(_DEBUG)
db MEW, 5
ELSE
db MEW, 20
ENDC
db JOLTEON, 56
db DUGTRIO, 56
db ARTICUNO, 57
IF DEF(_DEBUG)
db PIKACHU, 5
ENDC
db -1 ; end
PrepareNewGameDebug: ; dummy except in _DEBUG
IF DEF(_DEBUG)
xor a ; PLAYER_PARTY_DATA
ld [wMonDataLocation], a
; Fly anywhere.
dec a ; $ff (all bits)
ld [wTownVisitedFlag], a
ld [wTownVisitedFlag + 1], a
; Get all badges except Earth Badge.
ld a, ~(1 << BIT_EARTHBADGE)
ld [wObtainedBadges], a
call SetDebugNewGameParty
; Exeggutor gets four HM moves.
ld hl, wPartyMon1Moves
ld a, FLY
ld [hli], a
ld a, CUT
ld [hli], a
ld a, SURF
ld [hli], a
ld a, STRENGTH
ld [hl], a
ld hl, wPartyMon1PP
ld a, 15
ld [hli], a
ld a, 30
ld [hli], a
ld a, 15
ld [hli], a
ld [hl], a
; Jolteon gets Thunderbolt.
ld hl, wPartyMon3Moves + 3
ld a, THUNDERBOLT
ld [hl], a
ld hl, wPartyMon3PP + 3
ld a, 15
ld [hl], a
; Articuno gets Fly.
ld hl, wPartyMon5Moves
ld a, FLY
ld [hl], a
ld hl, wPartyMon5PP
ld a, 15
ld [hl], a
; Pikachu gets Surf.
ld hl, wPartyMon6Moves + 2
ld a, SURF
ld [hl], a
ld hl, wPartyMon6PP + 2
ld a, 15
ld [hl], a
; Get some debug items.
ld hl, wNumBagItems
ld de, DebugNewGameItemsList
.items_loop
ld a, [de]
cp -1
jr z, .items_end
ld [wCurItem], a
inc de
ld a, [de]
inc de
ld [wItemQuantity], a
call AddItemToInventory
jr .items_loop
.items_end
; Complete the Pokédex.
ld hl, wPokedexOwned
call DebugSetPokedexEntries
ld hl, wPokedexSeen
call DebugSetPokedexEntries
SetEvent EVENT_GOT_POKEDEX
; Rival chose Squirtle,
; Player chose Charmander.
ld hl, wRivalStarter
ASSERT wRivalStarter + 2 == wPlayerStarter
ld a, STARTER2
ld [hli], a
inc hl
ld a, STARTER1
ld [hl], a
ret
DebugSetPokedexEntries:
IF NUM_POKEMON / 8 != 0
ld b, NUM_POKEMON / 8 ; 151 / 8 == 18
ld a, %11111111
.loop
ld [hli], a
dec b
jr nz, .loop
ENDC
IF NUM_POKEMON % 8 != 0
ld [hl], (1 << (NUM_POKEMON % 8)) - 1 ; (1 << 151 % 8)) - 1 == %01111111
ENDC
ret
DebugNewGameItemsList:
db BICYCLE, 1
db FULL_RESTORE, 99
db FULL_HEAL, 99
db ESCAPE_ROPE, 99
db RARE_CANDY, 99
db MASTER_BALL, 99
db TOWN_MAP, 1
db SECRET_KEY, 1
db CARD_KEY, 1
db S_S_TICKET, 1
db LIFT_KEY, 1
db -1 ; end
DebugUnusedList: ; unreferenced
db -1 ; end
ELSE
ret
ENDC