summaryrefslogtreecommitdiff
path: root/engine/debug
diff options
context:
space:
mode:
Diffstat (limited to 'engine/debug')
-rw-r--r--engine/debug/debug_menu.asm115
-rw-r--r--engine/debug/debug_party.asm148
-rw-r--r--engine/debug/test_battle.asm45
3 files changed, 252 insertions, 56 deletions
diff --git a/engine/debug/debug_menu.asm b/engine/debug/debug_menu.asm
new file mode 100644
index 00000000..02280db0
--- /dev/null
+++ b/engine/debug/debug_menu.asm
@@ -0,0 +1,115 @@
+DebugMenu:
+IF DEF(_DEBUG)
+ call ClearScreen
+
+ ld hl, DebugPlayerName
+ ld de, wPlayerName
+ ld bc, NAME_LENGTH
+ call CopyData
+
+ ld hl, DebugRivalName
+ ld de, wRivalName
+ ld bc, NAME_LENGTH
+ call CopyData
+
+ call LoadFontTilePatterns
+ call LoadHpBarAndStatusTilePatterns
+ call ClearSprites
+ call RunDefaultPaletteCommand
+
+ hlcoord 5, 6
+ ld b, 3
+ ld c, 9
+ call TextBoxBorder
+
+ hlcoord 7, 7
+ ld de, DebugMenuOptions
+ call PlaceString
+
+ ld a, 3 ; medium speed
+ ld [wOptions], a
+
+ ld a, A_BUTTON | B_BUTTON | START
+ ld [wMenuWatchedKeys], a
+ xor a
+ ld [wMenuJoypadPollCount], a
+ inc a
+ ld [wMaxMenuItem], a
+ ld a, 7
+ ld [wTopMenuItemY], a
+ dec a
+ ld [wTopMenuItemX], a
+ xor a
+ ld [wCurrentMenuItem], a
+ ld [wLastMenuItem], a
+ ld [wMenuWatchMovingOutOfBounds], a
+
+ call HandleMenuInput
+ bit BIT_B_BUTTON, a
+ jp nz, DisplayTitleScreen
+
+ ld a, [wCurrentMenuItem]
+ and a ; FIGHT?
+ jp z, TestBattle
+
+ ; DEBUG
+ ld hl, wd732
+ set 1, [hl]
+ jp StartNewGameDebug
+
+DebugPlayerName:
+ db "Tom@"
+
+DebugRivalName:
+ db "Juerry@"
+
+DebugMenuOptions:
+ db "FIGHT"
+ next "DEBUG@"
+ELSE
+ ret
+ENDC
+
+TestBattle:
+.loop
+ call GBPalNormal
+
+ ; Don't mess around
+ ; with obedience.
+ ld a, 1 << BIT_EARTHBADGE
+ ld [wObtainedBadges], a
+
+ ld hl, wFlags_D733
+ set BIT_TEST_BATTLE, [hl]
+
+ ; Reset the party.
+ ld hl, wPartyCount
+ xor a
+ ld [hli], a
+ dec a
+ ld [hl], a
+
+ ; Give the player a
+ ; level 20 Rhydon.
+ ld a, RHYDON
+ ld [wcf91], a
+ ld a, 20
+ ld [wCurEnemyLVL], a
+ xor a
+ ld [wMonDataLocation], a
+ ld [wCurMap], a
+ call AddPartyMon
+
+ ; Fight against a
+ ; level 20 Rhydon.
+ ld a, RHYDON
+ ld [wCurOpponent], a
+
+ predef InitOpponent
+
+ ; When the battle ends,
+ ; do it all again.
+ ld a, 1
+ ld [wUpdateSpritesEnabled], a
+ ldh [hAutoBGTransferEnabled], a
+ jr .loop
diff --git a/engine/debug/debug_party.asm b/engine/debug/debug_party.asm
index a5eb7dde..17baa7ef 100644
--- a/engine/debug/debug_party.asm
+++ b/engine/debug/debug_party.asm
@@ -1,5 +1,4 @@
-; This function appears to never be used.
-; It is likely a debugging feature to give the player Tsunekazu Ishihara's
+; This function is a debugging feature to give the player Tsunekazu Ishihara's
; favorite Pokemon. This is indicated by the overpowered Exeggutor, which
; Ishihara (president of Creatures Inc.) said was his favorite Pokemon in an ABC
; interview on February 8, 2000.
@@ -11,7 +10,7 @@ SetIshiharaTeam:
ld de, IshiharaTeam
.loop
ld a, [de]
- cp $ff
+ cp -1
ret z
ld [wcf91], a
inc de
@@ -22,12 +21,139 @@ SetIshiharaTeam:
jr .loop
IshiharaTeam:
- db EXEGGUTOR,90
- db MEW,20
- db JOLTEON,56
- db DUGTRIO,56
- db ARTICUNO,57
- db $FF
-
-EmptyFunc:
+ 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
+
+DebugStart:
+IF DEF(_DEBUG)
+ xor a ; PLAYER_PARTY_DATA
+ ld [wMonDataLocation], a
+
+ ; Fly anywhere.
+ dec a ; $ff
+ ld [wTownVisitedFlag], a
+ ld [wTownVisitedFlag + 1], a
+
+ ; Get all badges except Earth Badge.
+ ld a, $ff ^ (1 << BIT_EARTHBADGE)
+ ld [wObtainedBadges], a
+
+ call SetIshiharaTeam
+
+ ; 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, DebugItemsList
+.items_loop
+ ld a, [de]
+ cp -1
+ jr z, .items_end
+ ld [wcf91], 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
+ ld a, STARTER2
+ ld [hli], a
+ inc hl ; hl = wPlayerStarter
+ ld a, STARTER1
+ ld [hl], a
+
+ ret
+
+DebugSetPokedexEntries:
+ ld b, wPokedexOwnedEnd - wPokedexOwned - 1
+ ld a, %11111111
+.loop
+ ld [hli], a
+ dec b
+ jr nz, .loop
+ ld [hl], %01111111
+ ret
+
+DebugItemsList:
+ 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:
+ db -1 ; end
+ELSE
ret
+ENDC
diff --git a/engine/debug/test_battle.asm b/engine/debug/test_battle.asm
deleted file mode 100644
index 01b9825e..00000000
--- a/engine/debug/test_battle.asm
+++ /dev/null
@@ -1,45 +0,0 @@
-TestBattle:
- ret
-
-.loop
- call GBPalNormal
-
- ; Don't mess around
- ; with obedience.
- ld a, 1 << BIT_EARTHBADGE
- ld [wObtainedBadges], a
-
- ld hl, wFlags_D733
- set BIT_TEST_BATTLE, [hl]
-
- ; Reset the party.
- ld hl, wPartyCount
- xor a
- ld [hli], a
- dec a
- ld [hl], a
-
- ; Give the player a
- ; level 20 Rhydon.
- ld a, RHYDON
- ld [wcf91], a
- ld a, 20
- ld [wCurEnemyLVL], a
- xor a
- ld [wMonDataLocation], a
- ld [wCurMap], a
- call AddPartyMon
-
- ; Fight against a
- ; level 20 Rhydon.
- ld a, RHYDON
- ld [wCurOpponent], a
-
- predef InitOpponent
-
- ; When the battle ends,
- ; do it all again.
- ld a, 1
- ld [wUpdateSpritesEnabled], a
- ldh [hAutoBGTransferEnabled], a
- jr .loop