diff options
author | Daniel Harding <33dannye@gmail.com> | 2020-11-07 21:28:20 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-07 21:28:20 -0600 |
commit | edf375aff14e54bd54e7a25780fe8b714691ccc7 (patch) | |
tree | 015c63e79e4a245c28f72b18954f2a845d30271c | |
parent | 338f1276b48ce1394cb9de52b7646e9f8618b1b9 (diff) | |
parent | ead36b7ba24413fe0f4423ee1efa6fe88bab0a3c (diff) |
Merge pull request #63 from dannye/debug
Debug Yellow
-rw-r--r-- | Makefile | 31 | ||||
-rw-r--r-- | audio.asm | 4 | ||||
-rwxr-xr-x | data/maps/objects/RedsHouse2F.asm | 6 | ||||
-rw-r--r-- | data/text/text_2.asm | 2 | ||||
-rwxr-xr-x | engine/battle/core.asm | 27 | ||||
-rw-r--r-- | engine/debug/debug_menu.asm | 1636 | ||||
-rw-r--r-- | engine/debug/debug_party.asm | 135 | ||||
-rw-r--r-- | engine/events/hidden_objects/safari_game.asm | 4 | ||||
-rw-r--r-- | engine/gfx/bg_map_attributes.asm | 2 | ||||
-rwxr-xr-x | engine/movie/title.asm | 12 | ||||
-rwxr-xr-x | engine/pikachu/pikachu_emotions.asm | 55 | ||||
-rwxr-xr-x | engine/pikachu/pikachu_pic_animation.asm | 3 | ||||
-rw-r--r-- | home/npc_movement.asm | 8 | ||||
-rw-r--r-- | home/overworld.asm | 4 | ||||
-rw-r--r-- | home/text.asm | 4 | ||||
-rw-r--r-- | home/trainers.asm | 4 | ||||
-rw-r--r-- | layout.link | 1 | ||||
-rwxr-xr-x | main.asm | 17 | ||||
-rw-r--r-- | roms.sha1 | 1 | ||||
-rwxr-xr-x | scripts/CeruleanCity.asm | 4 | ||||
-rwxr-xr-x | scripts/MtMoonB2F.asm | 4 | ||||
-rwxr-xr-x | scripts/PalletTown.asm | 29 | ||||
-rwxr-xr-x | scripts/PewterCity.asm | 4 | ||||
-rwxr-xr-x | scripts/PokemonTower2F.asm | 4 | ||||
-rwxr-xr-x | scripts/PokemonTower7F.asm | 4 | ||||
-rwxr-xr-x | scripts/RocketHideoutB4F.asm | 4 | ||||
-rwxr-xr-x | scripts/SilphCo11F.asm | 4 | ||||
-rwxr-xr-x | wram.asm | 4 |
28 files changed, 1967 insertions, 50 deletions
@@ -1,4 +1,4 @@ -rom := pokeyellow.gbc +roms := pokeyellow.gbc pokeyellow_debug.gbc rom_obj := \ audio.o \ @@ -12,6 +12,9 @@ gfx/pikachu.o \ gfx/sprites.o \ gfx/tilesets.o +pokeyellow_obj := $(rom_obj) +pokeyellow_debug_obj := $(rom_obj:.o=_debug.o) + ### Build tools @@ -34,20 +37,21 @@ RGBLINK ?= $(RGBDS)rgblink .SECONDEXPANSION: .PRECIOUS: .SECONDARY: -.PHONY: all yellow clean tidy compare tools +.PHONY: all yellow yellow_debug clean tidy compare tools -all: $(rom) -yellow: $(rom) +all: $(roms) +yellow: pokeyellow.gbc +yellow_debug: pokeyellow_debug.gbc clean: tidy find gfx \( -iname '*.1bpp' -o -iname '*.2bpp' -o -iname '*.pic' \) -delete find audio/pikachu_cries \( -iname '*.pcm' \) -delete tidy: - rm -f $(rom) $(rom_obj) $(rom:.gbc=.map) $(rom:.gbc=.sym) rgbdscheck.o + rm -f $(roms) $(pokeyellow_obj) $(pokeyellow_debug_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym) rgbdscheck.o $(MAKE) clean -C tools/ -compare: $(rom) +compare: $(roms) @$(SHA1) -c roms.sha1 tools: @@ -60,6 +64,8 @@ ifeq ($(DEBUG),1) RGBASMFLAGS += -E endif +$(pokeyellow_debug_obj): RGBASMFLAGS += -D _DEBUG + rgbdscheck.o: rgbdscheck.asm $(RGBASM) -o $@ $< @@ -78,18 +84,23 @@ ifeq (,$(filter clean tidy tools,$(MAKECMDGOALS))) $(info $(shell $(MAKE) -C tools)) # Dependencies for objects -$(foreach obj, $(rom_obj), $(eval $(call DEP,$(obj),$(obj:.o=.asm)))) +$(foreach obj, $(pokeyellow_obj), $(eval $(call DEP,$(obj),$(obj:.o=.asm)))) +$(foreach obj, $(pokeyellow_debug_obj), $(eval $(call DEP,$(obj),$(obj:_debug.o=.asm)))) endif %.asm: ; + +pokeyellow_pad = 0x00 +pokeyellow_debug_pad = 0xff + opts = -cjsv -k 01 -l 0x33 -m 0x1b -p 0 -r 03 -t "POKEMON YELLOW" -$(rom): $(rom_obj) layout.link - $(RGBLINK) -m $(rom:.gbc=.map) -n $(rom:.gbc=.sym) -l layout.link -o $@ $(filter %.o,$^) - $(RGBFIX) $(opts) $@ +%.gbc: $$(%_obj) layout.link + $(RGBLINK) -p $($*_pad) -m $*.map -n $*.sym -l layout.link -o $@ $(filter %.o,$^) + $(RGBFIX) -p $($*_pad) $(opts) $@ ### Misc file-specific graphics rules @@ -539,7 +539,9 @@ INCLUDE "audio/music/surfingpikachu.asm" INCLUDE "audio/music/yellowunusedsong.asm" INCLUDE "audio/music/meetjessiejames.asm" -INCBIN "garbage/bank20.bin" +IF !DEF(_DEBUG) + INCBIN "garbage/bank20.bin" +ENDC ; Pikachu cries are in different banks diff --git a/data/maps/objects/RedsHouse2F.asm b/data/maps/objects/RedsHouse2F.asm index 826e68fd..2a254ec1 100755 --- a/data/maps/objects/RedsHouse2F.asm +++ b/data/maps/objects/RedsHouse2F.asm @@ -3,6 +3,12 @@ RedsHouse2F_Object: def_warps warp 7, 1, 2, REDS_HOUSE_1F +IF DEF(_DEBUG) + warp 7, 2, 3, MT_MOON_B2F + warp 7, 3, 0, ROCKET_HIDEOUT_ELEVATOR + warp 7, 4, 0, POKEMON_TOWER_7F + warp 7, 5, 3, SILPH_CO_11F +ENDC def_signs diff --git a/data/text/text_2.asm b/data/text/text_2.asm index 1616a34e..dd74bd79 100644 --- a/data/text/text_2.asm +++ b/data/text/text_2.asm @@ -17,7 +17,7 @@ _AIBattleUseItemText:: text "!" prompt -_BoxFullTest:: +_BoxFullDebugText:: text "The BOX is full!" done diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 01074b74..415b287c 100755 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -2704,13 +2704,21 @@ SelectMenuItem: call HandleMenuInput ld hl, hFlagsFFFA res 1, [hl] - bit 6, a - jp nz, SelectMenuItem_CursorUp ; up - bit 7, a - jp nz, SelectMenuItem_CursorDown ; down - bit 2, a - jp nz, SwapMovesInMenu ; select - bit 1, a ; B, but was it reset above? + bit BIT_D_UP, a + jp nz, SelectMenuItem_CursorUp + bit BIT_D_DOWN, a + jp nz, SelectMenuItem_CursorDown + bit BIT_SELECT, a + jp nz, SwapMovesInMenu +IF DEF(_DEBUG) + bit BIT_START, a + jp nz, Func_3d4f5 + bit BIT_D_RIGHT, a + jp nz, Func_3d529 + bit BIT_D_LEFT, a + jp nz, Func_3d523 +ENDC + bit BIT_B_BUTTON, a push af xor a ld [wMenuItemToSwap], a @@ -2904,6 +2912,11 @@ NoMovesLeftText: text_end SwapMovesInMenu: +IF DEF(_DEBUG) + ld a, [wFlags_D733] + bit BIT_TEST_BATTLE, a + jp nz, Func_3d4f5 +ENDC ld a, [wPlayerBattleStatus3] bit TRANSFORMED, a jp nz, MoveSelectionMenu diff --git a/engine/debug/debug_menu.asm b/engine/debug/debug_menu.asm index a85c9c64..18223cf1 100644 --- a/engine/debug/debug_menu.asm +++ b/engine/debug/debug_menu.asm @@ -1,9 +1,76 @@ 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 + lb bc, 3, 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 + ld hl, DisplayTitleScreen + ret nz + + ld a, [wCurrentMenuItem] + and a ; FIGHT? + jp z, TestBattle + + ; DEBUG + ld hl, wd732 + set 1, [hl] + ld hl, StartNewGameDebug ret +DebugPlayerName: + db "Tom@" + +DebugRivalName: + db "Juerry@" + +DebugMenuOptions: + db "FIGHT" + next "DEBUG@" + TestBattle: -.loop - call GBPalNormal + ld a, 1 + ldh [hJoy7], a ; Don't mess around ; with obedience. @@ -13,34 +80,1569 @@ TestBattle: ld hl, wFlags_D733 set BIT_TEST_BATTLE, [hl] - ; Reset the party. + ld hl, wNumBagItems + ld de, Data_feded +.loop + ld a, [de] + cp -1 + jr z, .done + inc de + ld [wcf91], a + ld a, [de] + inc de + ld [wItemQuantity], a + push de + call AddItemToInventory + pop de + jr .loop +.done + call LoadHpBarAndStatusTilePatterns + call ClearScreen + call ClearSprites + hlcoord 0, 0 + lb bc, 1, 18 + call TextBoxBorder + hlcoord 6, 1 + ld de, Text_fed18 + call PlaceString + hlcoord 4, 4 + ld de, Text_fed21 + call PlaceString + hlcoord 1, 6 + ld de, Text_fed30 + call PlaceString + xor a + ld [wWhichPokemon], a + ld [wEnemyMon], a + ld [wEnemyMonLevel], a + ld [wTrainerClass], a + ld [wGrassMons + 1], a + ld b, a + ld c, a + ld hl, wEnemyPartyMons + call Func_fe809 ld hl, wPartyCount + call Func_fe809 + ld de, wPartySpecies + hlcoord 4, 6 + ; fallthrough +Func_fe7ca: + push hl + push bc + dec hl + ld a, "▶" + ld [hl], a + ld bc, 11 + add hl, bc + ld a, " " + ld [hl], a + push de + pop de + pop bc + pop hl + ; fallthrough +Func_fe7db: + push bc + push de + call JoypadLowSensitivity + pop de + pop bc + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_fe812 + bit BIT_B_BUTTON, a + jp nz, Func_fe850 + bit BIT_SELECT, a + jp nz, DebugMenu + bit BIT_START, a + jp nz, Func_fe97f + bit BIT_D_RIGHT, a + jp nz, Func_fe8a1 + bit BIT_D_UP, a + jp nz, Func_fe85d + bit BIT_D_DOWN, a + jp nz, Func_fe880 + jr Func_fe7db + +Func_fe809: xor a ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ret + +Func_fe812: + inc b + ld a, b + cp NUM_POKEMON_INDEXES + 1 + jr c, Func_fe81a + xor a + ld b, a + ; fallthrough +Func_fe81a: + ld [de], a + ld [wd11e], a + push bc + push hl + push de + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + inc hl + push hl + ld de, Text_fed9c + call PlaceString + ld bc, hSavedMapTextPtr + add hl, bc + ld de, Text_fed9c + call PlaceString + pop hl + ld a, [wd11e] + and a + jr nz, .asm_fe845 + ld de, Text_feda2 + jr .asm_fe848 +.asm_fe845 + call GetMonName +.asm_fe848 + call PlaceString + pop de + pop hl + pop bc + jr Func_fe7db + +Func_fe850: + dec b + ld a, b + cp OPP_ID_OFFSET + 1 + jp c, Func_fe81a + ld a, NUM_POKEMON_INDEXES + ld b, a + jp Func_fe81a + +Func_fe85d: + ld a, [wWhichPokemon] + dec a + cp -1 + jp z, Func_fe7db + ld [wWhichPokemon], a + dec de + dec hl + ld a, " " + ld [hl], a + push bc + ld bc, hMovingBGTilesCounter1 + add hl, bc + pop bc + ld a, "▶" + ld [hl], a + inc hl + push hl + call Func_fe964 + pop hl + jp Func_fe7db + +Func_fe880: + ld a, [wWhichPokemon] + inc a + cp 6 + jp nc, Func_fe7db + ld [wWhichPokemon], a + inc de + dec hl + ld a, " " + ld [hl], a + ld bc, SCREEN_WIDTH * 2 + add hl, bc + ld a, "▶" + ld [hl], a + inc hl + push hl + call Func_fe964 + pop hl + jp Func_fe7db + +Func_fe8a1: + push hl + push bc + dec hl + ld a, " " + ld [hl], a + ld bc, 11 + add hl, bc + ld a, "▶" + ld [hl], a + pop bc + pop hl + ; fallthrough +Func_fe8b0: + push bc + push de + call JoypadLowSensitivity + pop de + pop bc + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_fe8d9 + bit BIT_B_BUTTON, a + jp nz, Func_fe902 + bit BIT_START, a + jp nz, Func_fe97f + bit BIT_D_LEFT, a + jp nz, Func_fe7ca + bit BIT_D_UP, a + jp nz, Func_fe912 + bit BIT_D_DOWN, a + jp nz, Func_fe93b + jr Func_fe8b0 + +Func_fe8d9: + inc c + ld a, c + cp MAX_LEVEL + 1 + jr c, Func_fe8e2 + ld a, 1 + ld c, a + ; fallthrough +Func_fe8e2: + ld a, [wWhichPokemon] + push de + ld de, wEnemyPartyMons + add e + ld e, a + jr nc, .asm_fe8ee + inc d +.asm_fe8ee + ld a, c + ld [de], a + push bc + push hl + ld bc, 11 + add hl, bc + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + pop hl + pop bc + pop de + jp Func_fe8b0 + +Func_fe902: + dec c + ld a, c + cp MAX_LEVEL + 1 + jr nc, .asm_fe90c + and a + jp nz, Func_fe8e2 +.asm_fe90c + ld a, MAX_LEVEL + ld c, a + jp Func_fe8e2 + +Func_fe912: + ld a, [wWhichPokemon] dec a + cp -1 + jp z, Func_fe8b0 + ld [wWhichPokemon], a + dec de + push hl + ld bc, 10 + add hl, bc + ld a, " " ld [hl], a + pop hl + ld bc, hMovingBGTilesCounter1 + add hl, bc + push hl + ld bc, 10 + add hl, bc + ld a, "▶" + ld [hl], a + call Func_fe964 + pop hl + jp Func_fe8b0 - ; Give the player a - ; level 20 Rhydon. - ld a, RHYDON +Func_fe93b: + ld a, [wWhichPokemon] + inc a + cp 6 + jp nc, Func_fe8b0 + ld [wWhichPokemon], a + inc de + push hl + ld bc, 10 + add hl, bc + ld a, " " + ld [hl], a + pop hl + ld bc, SCREEN_WIDTH * 2 + add hl, bc + push hl + ld bc, 10 + add hl, bc + ld a, "▶" + ld [hl], a + call Func_fe964 + pop hl + jp Func_fe8b0 + +Func_fe964: + ld hl, wPartySpecies + ld a, [wWhichPokemon] + add l + ld l, a + jr nc, .asm_fe96f + inc h +.asm_fe96f + ld a, [hl] + ld b, a + ld hl, wEnemyPartyMons + ld a, [wWhichPokemon] + add l + ld l, a + jr nc, .asm_fe97c + inc h +.asm_fe97c + ld a, [hl] + ld c, a + ret + +Func_fe97f: + ld hl, wPartyCount + ld de, wEnemyPartyCount + xor a + ld [hl], a + inc hl + ld a, [hli] + ld b, a + ld c, 6 + xor a + ld [wIsInBattle], a +.asm_fe990 + ld a, b ld [wcf91], a - ld a, 20 + ld a, [hl] + ld b, a + inc de + ld a, [de] + and a + jr z, .asm_fe9ab ld [wCurEnemyLVL], a xor a ld [wMonDataLocation], a - ld [wCurMap], a + ld a, [wcf91] + and a + jr z, .asm_fe9ab call AddPartyMon +.asm_fe9ab + inc hl + dec c + jr nz, .asm_fe990 + ld b, 7 + ld hl, wPartySpecies + ld de, wEnemyPartyCount +.asm_fe9b7 + inc de + dec b + jp z, TestBattle + ld a, [hli] + and a + jr z, .asm_fe9b7 + ld a, [de] + and a + jr z, .asm_fe9b7 + hlcoord 0, 3 + lb bc, 15, 20 + call ClearScreenArea + hlcoord 0, 3 + lb bc, 15, 20 + call ClearScreenArea + hlcoord 0, 3 + lb bc, 15, 20 + call ClearScreenArea + ld c, 20 + call DelayFrames + ld a, 1 + ld [wIsInBattle], a + ld de, Text_feda8 + ld a, [wGrassMons + 1] + cp MAX_LEVEL + 1 + jr c, .asm_fe9fb + ld a, 2 + ld [wIsInBattle], a + ld de, Text_fedb2 +.asm_fe9fb + hlcoord 1, 4 + call PlaceString + hlcoord 1, 6 + ld de, Text_fedbc + call PlaceString + ld a, [wEnemyMon] + ld b, a + ld a, [wIsInBattle] + dec a + jr z, .asm_fea40 + ld a, [wTrainerClass] + ld [wd11e], a + ld b, a + ld de, wd11e + hlcoord 1, 8 + push bc + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + hlcoord 5, 8 + ld de, Text_fede2 + call PlaceString + call GetTrainerName + hlcoord 5, 8 + ld de, wTrainerName + call PlaceString + pop bc + jr .asm_fea65 +.asm_fea40 + ld a, b + and a + jr z, .asm_fea65 + ld de, wd11e + ld [de], a + hlcoord 1, 8 + push bc + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + hlcoord 5, 8 + ld de, Text_fede2 + call PlaceString + call GetMonName + hlcoord 5, 8 + call PlaceString + pop bc +.asm_fea65 + ld a, [wEnemyMonLevel] + ld c, a + ld de, wd11e + ld [de], a + hlcoord 16, 8 + push bc + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + pop bc + ; fallthrough +Func_fea78: + ld a, " " + ldcoord_a 0, 8 + ldcoord_a 15, 8 + ld a, "▶" + ldcoord_a 0, 4 + ; fallthrough +Func_fea85: + push bc + call JoypadLowSensitivity + pop bc + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_fea9d + bit BIT_START, a + jp nz, Func_fec10 + bit BIT_D_DOWN, a + jp nz, Func_feae4 + jr Func_fea85 - ; Fight against a - ; level 20 Rhydon. - ld a, RHYDON - ld [wCurOpponent], a +Func_fea9d: + hlcoord 1, 8 + ld de, Text_fedcf + call PlaceString + hlcoord 5, 7 + ld de, Text_fede2 + call PlaceString + xor a + ld b, a + ld c, a + ld a, [wIsInBattle] + dec a + jr nz, .asm_feace + ld a, 2 + ld [wIsInBattle], a + ld a, " " + ldcoord_a 4, 3 + hlcoord 1, 4 + ld de, Text_fedb2 + call PlaceString + jp Func_fea85 +.asm_feace + ld a, 1 + ld [wIsInBattle], a + ld a, " " + ldcoord_a 1, 3 + hlcoord 1, 4 + ld de, Text_feda8 + call PlaceString + jp Func_fea85 +Func_feae4: + ld a, "▶" + ldcoord_a 0, 8 + ld a, " " + ldcoord_a 15, 8 + ldcoord_a 0, 4 + ; fallthrough +Func_feaf1: + push bc + call JoypadLowSensitivity + pop bc + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_feb13 + bit BIT_B_BUTTON, a + jp nz, Func_feb82 + bit BIT_START, a + jp nz, Func_fec10 + bit BIT_D_RIGHT, a + jp nz, Func_febba + bit BIT_D_UP, a + jp nz, Func_fea78 + jr Func_feaf1 + +Func_feb13: + push bc + hlcoord 5, 7 + ld de, Text_fede2 + call PlaceString + hlcoord 5, 8 + ld de, Text_fede2 + call PlaceString + pop bc + ld a, [wIsInBattle] + dec a + jr z, Func_feb35.asm_feb5c + inc b + ld a, b + cp 48 + jr c, Func_feb35 + ld b, 1 + ; fallthrough +Func_feb35: + ld a, b + ld [wd11e], a + ld de, wd11e + hlcoord 1, 8 + push bc + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + ld a, [wd11e] + ld [wTrainerClass], a + call GetTrainerName + hlcoord 5, 8 + ld de, wTrainerName + call PlaceString + pop bc + jp Func_feaf1 +.asm_feb5c + inc b + ld a, b + cp NUM_POKEMON_INDEXES + 1 + jr c, Func_feb64 + ld b, 1 + ; fallthrough +Func_feb64: + ld a, b + ld [wd11e], a + ld de, wd11e + hlcoord 1, 8 + push bc + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + call GetMonName + hlcoord 5, 8 + call PlaceString + pop bc + jp Func_feaf1 + +Func_feb82: + push bc + hlcoord 5, 7 + ld de, Text_fede2 + call PlaceString + hlcoord 5, 8 + ld de, Text_fede2 + call PlaceString + pop bc + ld a, [wIsInBattle] + dec a + jr z, .asm_febab + dec b + ld a, b + cp 48 + jr nc, .asm_feba6 + and a + jp nz, Func_feb35 +.asm_feba6 + ld b, 47 + jp Func_feb35 +.asm_febab + dec b + ld a, b + cp NUM_POKEMON_INDEXES + 1 + jr nc, .asm_febb5 + and a + jp nz, Func_feb64 +.asm_febb5 + ld b, NUM_POKEMON_INDEXES + jp Func_feb64 + +Func_febba: + ld a, " " + ldcoord_a 0, 8 + ld a, "▶" + ldcoord_a 15, 8 + ; fallthrough +Func_febc4: + push bc + call JoypadLowSensitivity + pop bc + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_febe6 + bit BIT_B_BUTTON, a + jp nz, Func_fec01 + bit BIT_START, a + jp nz, Func_fec10 + bit BIT_D_LEFT, a + jp nz, Func_feae4 + bit BIT_D_UP, a + jp nz, Func_fea78 + jr Func_febc4 + +Func_febe6: + inc c + ld a, c + cp MAX_LEVEL + 1 + jr c, Func_febee + ld c, 1 +Func_febee: + hlcoord 16, 8 + ld a, c + ld de, wCurEnemyLVL + ld [de], a + push bc + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + pop bc + jp Func_febc4 + +Func_fec01: + dec c + ld a, c + cp MAX_LEVEL + 1 + jr nc, .asm_fec0b + and a + jp nz, Func_febee +.asm_fec0b + ld c, MAX_LEVEL + jp Func_febee + +Func_fec10: + ld a, b + and a + jp z, Func_fea78 + ld a, c + and a + jp z, Func_fea78 + ld a, [wIsInBattle] + dec a + jr z, .asm_fec28 + ld a, b + add OPP_ID_OFFSET + ld b, a + ld a, c + ld [wTrainerNo], a +.asm_fec28 + ld a, c + ld [wCurEnemyLVL], a + ld a, b + ld [wCurOpponent], a + xor a + ld [wd72d], a predef InitOpponent + xor a + ld [wNumRunAttempts], a + ld hl, wPlayerStatsToDouble + ld bc, wEnemyStatsToDouble - wPlayerStatsToDouble + call FillMemory + ld hl, wEnemyStatsToDouble + ld bc, wPlayerNumAttacksLeft - wEnemyStatsToDouble + call FillMemory + call LoadFontTilePatterns + call ClearScreen + call ClearSprites + ld a, %11100100 + ldh [rBGP], a + ldh [rOBP0], a + ldh [rOBP1], a + call UpdateGBCPal_BGP + call UpdateGBCPal_OBP0 + call UpdateGBCPal_OBP1 + hlcoord 0, 0 + lb bc, 1, 18 + call TextBoxBorder + hlcoord 6, 1 + ld de, Text_fed18 + call PlaceString + hlcoord 4, 4 + ld de, Text_fed21 + call PlaceString + hlcoord 1, 6 + ld de, Text_fed30 + call PlaceString + ld de, wPartyCount + xor a + ld [de], a + ld [wWhichPokemon], a + inc de + hlcoord 4, 6 + push de + push hl + ; fallthrough +Func_fec9b: + ld a, [wWhichPokemon] + ld de, wPartySpecies + add e + ld e, a + jr nc, .asm_feca6 + inc d +.asm_feca6 + ld a, [de] + cp -1 + jp z, Func_fed01 + ld [wd11e], a + push hl + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + inc hl + ld de, Text_fed9c + call PlaceString + call GetMonName + call PlaceString + pop hl + push hl + ld bc, 11 + add hl, bc + push hl + ld a, [wWhichPokemon] + ld hl, wPartyMon1Level + ld bc, wPartyMon2 - wPartyMon1 + call AddNTimes + ld d, h + ld e, l + ld a, [de] + ld [wCurEnemyLVL], a + pop hl + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + ld a, [wWhichPokemon] + ld de, wEnemyPartyMons + add e + ld e, a + jr nc, .asm_fecee + inc d +.asm_fecee + ld a, [wCurEnemyLVL] + ld [de], a + pop hl + ld a, [wWhichPokemon] + inc a + ld [wWhichPokemon], a + ld bc, SCREEN_WIDTH * 2 + add hl, bc + jp Func_fec9b + +Func_fed01: + pop hl + pop de + ld a, [wPartyMon1] + ld b, a + ld a, [wPartyMon1Level] + ld c, a + xor a + ld [wWhichPokemon], a + jp Func_fe7ca + +Text_fed12: + db "けんしろう@" + +Text_fed18: + db "テスト ファイト@" + +Text_fed21: + db "№. なまえ レべル@" + +Text_fed30: + db "1.▶000 ーーーーー 000" + next "2. 000 ーーーーー 000" + next "3. 000 ーーーーー 000" + next "4. 000 ーーーーー 000" + next "5. 000 ーーーーー 000" + next "6. 000 ーーーーー 000@" + +Text_fed9c: + db " @" + +Text_feda2: + db "ーーーーー@" + +Text_feda8: + db "ワイルドモンスター@" + +Text_fedb2: + db "ディーラー @" + +Text_fedbc: + db "№. なまえ レべル" + next "" +Text_fedcf: + db "000 ーーーーーーーーーー 000@" - ; When the battle ends, - ; do it all again. +Text_fede2: + db " @" + +Data_feded: + db GREAT_BALL, 99 + db POKE_BALL, 99 + db ANTIDOTE, 99 + db FULL_RESTORE, 99 + db MAX_POTION, 99 + db HYPER_POTION, 99 + db SUPER_POTION, 99 + db POTION, 99 + db -1 ; end + +Func_fedfe: + ld a, [wNumInBox] + cp 30 + jp nc, Func_ff1ad + call ClearScreen + call UpdateSprites + ld a, [wLetterPrintingDelayFlags] + push af + xor a + ld [wLetterPrintingDelayFlags], a + ld hl, wEnemyMonOT + ld [hli], a + ld [hli], a + ld [hl], a + inc a + ldh [hJoy7], a + ld [wcf91], a + ld [wCurEnemyLVL], a + ; fallthrough +Func_fee23: + hlcoord 0, 3 + ld [hl], " " + hlcoord 0, 1 + ld [hl], "▶" + call Func_fee60 +.asm_fee30 + call DelayFrame + call JoypadLowSensitivity + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_fee49 + bit BIT_B_BUTTON, a + jp nz, Func_fee56 + bit BIT_D_DOWN, a + jp nz, Func_fee96 + jr .asm_fee30 + +Func_fee49: + ld hl, wcf91 + inc [hl] + ld a, [hl] + cp NUM_POKEMON + 1 + jr c, Func_fee23 + ld [hl], DEX_BULBASAUR + jr Func_fee23 + +Func_fee56: + ld hl, wcf91 + dec [hl] + jr nz, Func_fee23 + ld [hl], DEX_MEW + jr Func_fee23 + +Func_fee60: + hlcoord 1, 0 + lb bc, 2, 9 + call ClearScreenArea + hlcoord 1, 1 + ld de, wcf91 + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + inc hl + push hl + ld a, [wcf91] + ld [wd11e], a + callfar PokedexToIndex + call GetMonName + pop hl + call PlaceString + ld a, [wd11e] + ld [wd0b5], a + call GetMonHeader + ret + +Func_fee96: + hlcoord 0, 1 + ld [hl], " " + hlcoord 0, 3 + ld [hl], "▶" + hlcoord 0, 5 + ld [hl], " " + call Func_feee2 + call Func_feeef +.asm_feeab + call DelayFrame + call JoypadLowSensitivity + ld hl, wCurEnemyLVL + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_feed1 + bit BIT_B_BUTTON, a + jp nz, Func_feedb + bit BIT_START, a + jp nz, Func_ff12c + bit BIT_D_UP, a + jp nz, Func_fee23 + bit BIT_D_DOWN, a + jp nz, Func_fef60 + jr .asm_feeab + +Func_feed1: + inc [hl] + ld a, [hl] + cp MAX_LEVEL + 1 + jr c, Func_fee96 + ld [hl], 1 + jr Func_fee96 + +Func_feedb: + dec [hl] + jr nz, Func_fee96 + ld [hl], MAX_LEVEL + jr Func_fee96 + +Func_feee2: + hlcoord 1, 3 + ld de, wCurEnemyLVL + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + ret + +Func_feeef: + hlcoord 1, 4 + lb bc, 8, 11 + call ClearScreenArea + ld a, [wcf91] + push af + ld [wd11e], a + ld hl, BaseStats + 15 + dec a + ld bc, MonBaseStatsEnd - MonBaseStats + call AddNTimes + ld de, wMoves + ld bc, NUM_MOVES + ld a, BANK(BaseStats) + call FarCopyData + callfar PokedexToIndex + ld a, [wd11e] + ld [wcf91], a + xor a + ld [wChangeMonPicEnemyTurnSpecies], a + ld de, wMoves + predef WriteMonMoves + hlcoord 1, 5 + ld de, wMoves + ld b, NUM_MOVES +.asm_fef36 + ld a, [de] + inc de + and a + jr z, .asm_fef5b + push de + push bc + push hl + ld [wd11e], a + ld de, wd11e + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + inc hl + call GetMoveName + call PlaceString + pop hl + ld bc, SCREEN_WIDTH * 2 + add hl, bc + pop bc + pop de + dec b + jr nz, .asm_fef36 +.asm_fef5b + pop af + ld [wcf91], a + ret + +Func_fef60: + ld de, wMoves + hlcoord 0, 5 + ld b, 1 + ; fallthrough +Func_fef68: + call Func_fefc5 +.asm_fef6b + call DelayFrame + push de + push bc + call JoypadLowSensitivity + pop bc + pop de + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_fef92 + bit BIT_B_BUTTON, a + jp nz, Func_fef9e + bit BIT_START, a + jp nz, Func_ff12c + bit BIT_D_UP, a + jp nz, Func_fefa8 + bit BIT_D_DOWN, a + jp nz, Func_fefb5 + jr .asm_fef6b + +Func_fef92: + ld a, [de] + inc a + ld [de], a + cp NUM_ATTACKS + 1 + jr c, Func_fef68 ld a, 1 - ld [wUpdateSpritesEnabled], a - ldh [hAutoBGTransferEnabled], a - jr .loop + ld [de], a + jr Func_fef68 + +Func_fef9e: + ld a, [de] + dec a + ld [de], a + jr nz, Func_fef68 + ld a, NUM_ATTACKS + ld [de], a + jr Func_fef68 + +Func_fefa8: + dec de + dec b + jp z, Func_fee96 + push bc + ld bc, hMovingBGTilesCounter1 + add hl, bc + pop bc + jr Func_fef68 + +Func_fefb5: + inc de + inc b + ld a, b + cp 5 + jp z, Func_ff03b + push bc + ld bc, SCREEN_WIDTH * 2 + add hl, bc + pop bc + jr Func_fef68 + +Func_fefc5: + push hl + push de + push bc + push hl + push de + ld bc, hSpriteMapYCoord + add hl, bc + lb bc, 2, 11 + call ClearScreenArea + pop de + pop hl + push hl + ld [hl], "▶" + ld bc, hMovingBGTilesCounter1 + add hl, bc + ld [hl], " " + ld bc, SCREEN_WIDTH * 4 + add hl, bc + ld [hl], " " + pop hl + inc hl + ld a, [de] + ld de, wd11e + ld [de], a + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + ld a, [wd11e] + and a + jr z, .asm_ff002 + call Func_ff006 + inc hl + call GetMoveName + call PlaceString +.asm_ff002 + pop bc + pop de + pop hl + ret + +Func_ff006: + ld a, [wcf91] + push af + ld a, [wd11e] + push af + push hl + ld a, [wcf91] + ld [wd11e], a + callfar PokedexToIndex + ld a, [wd11e] + ld [wcf91], a + pop hl + pop af + ld [wd11e], a + push hl + callfar Func_3b079 + pop hl + jr c, .asm_ff036 + ld [hl], "×" +.asm_ff036 + pop af + ld [wcf91], a + ret + +Func_ff03b: + ld de, wEnemyMonOT + hlcoord 0, 13 + ld b, 1 + ; fallthrough +Func_ff043: + call Func_ff09e +.asm_ff046 + call DelayFrame + push de + push bc + call JoypadLowSensitivity + pop bc + pop de + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_ff06d + bit BIT_B_BUTTON, a + jp nz, Func_ff072 + bit BIT_START, a + jp nz, Func_ff12c + bit BIT_D_UP, a + jp nz, Func_ff077 + bit BIT_D_DOWN, a + jp nz, Func_ff08f + jr .asm_ff046 + +Func_ff06d: + ld a, [de] + inc a + ld [de], a + jr Func_ff043 + +Func_ff072: + ld a, [de] + dec a + ld [de], a + jr Func_ff043 + +Func_ff077: + dec de + dec b + jp z, Func_ff084 + push bc + ld bc, hMovingBGTilesCounter1 + add hl, bc + pop bc + jr Func_ff043 + +Func_ff084: + ld de, wMoves + 3 + hlcoord 0, 11 + ld b, NUM_MOVES + jp Func_fef68 + +Func_ff08f: + ld a, b + cp 3 + jr z, Func_ff043 + inc b + inc de + push bc + ld bc, SCREEN_WIDTH * 2 + add hl, bc + pop bc + jr Func_ff043 + +Func_ff09e: + push hl + push de + push bc + push hl + ld [hl], "▶" + ld bc, hMovingBGTilesCounter1 + add hl, bc + ld [hl], " " + ld bc, SCREEN_WIDTH * 4 + add hl, bc + ld [hl], " " + pop hl + inc hl + ld a, [de] + ld de, wd11e + ld [de], a + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + call Func_ff0c4 + pop bc + pop de + pop hl + ret + +Func_ff0c4: + hlcoord 12, 0 + lb bc, 18, 8 + call ClearScreenArea + hlcoord 13, 1 + ld de, Text_ff113 + call PlaceString + ld b, 10 + ld hl, wLoadedMonHPExp + ld a, [wEnemyMonOT + 2] +.asm_ff0de + ld [hli], a + dec b + jr nz, .asm_ff0de + ld a, [wEnemyMonOT] + ld [hli], a + ld a, [wEnemyMonOT + 1] + ld [hl], a + ld hl, wLoadedMonExp + 2 + ld de, wLoadedMonStats + ld b, 1 + call CalcStats + hlcoord 17, 1 + ld de, wLoadedMonStats + ld b, 5 +.asm_ff0fd + push bc + push de + push hl + lb bc, LEADING_ZEROES | 2, 3 + call PrintNumber + pop hl + ld bc, SCREEN_WIDTH * 2 + add hl, bc + pop de + inc de + inc de + pop bc + dec b + jr nz, .asm_ff0fd + ret + +Text_ff113: + db "たいりき" ; hp + next "こうげき" ; attack + next "ぼうぎょ" ; defense + next "すばやさ" ; speed + next "とくしゅ@" ; special + +Func_ff12c: + ld a, [wCurEnemyLVL] + ld [wEnemyMonLevel], a + ld a, [wcf91] + ld [wd11e], a + callfar PokedexToIndex + ld a, [wd11e] + ld [wcf91], a + ld [wd0b5], a + call GetMonHeader + ld hl, wEnemyMon + ld a, [wcf91] + ld [hli], a + ld a, [wLoadedMonStats] + ld [hli], a + ld a, [wLoadedMonStats + 1] + ld [hli], a + xor a + ld [hli], a + ld [hli], a + ld a, [wMonHTypes] + ld [hli], a + ld a, [wMonHType2] + ld [hli], a + ld a, [wMonHCatchRate] + ld [hli], a + ld a, [wMoves] + ld [hli], a + ld a, [wMoves + 1] + ld [hli], a + ld a, [wMoves + 2] + ld [hli], a + ld a, [wMoves + 3] + ld [hl], a + ld hl, wEnemyMonPP + xor a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld a, [wEnemyMonOT] + ld [wEnemyMonDVs], a + ld a, [wEnemyMonOT + 1] + ld [wEnemyMonDVs + 1], a + callfar SendNewMonToBox + ld b, 10 + ld hl, wBoxMon1HPExp + ld a, [wEnemyMonOT + 2] +.asm_ff19e + ld [hli], a + dec b + jr nz, .asm_ff19e + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + pop af + ld [wLetterPrintingDelayFlags], a + jr Func_ff1b3 +Func_ff1ad: + ld hl, Text_ff1b4 + call PrintText +Func_ff1b3: + ret + +Text_ff1b4: + text_far _BoxFullDebugText + text_end + +Func_ff1b9: + ld a, 1 + ldh [hJoy7], a + ld a, 2 + ld [wCurEnemyLVL], a + ld hl, Text_ff290 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, Func_ff286 + ld hl, Text_ff28f + call PrintText + callfar EmptyAllSRAMBoxes + ld hl, wNumInBox + xor a + ld [hli], a + dec a + ld [hl], a + ; fallthrough +Func_ff1e7: + hlcoord 2, 13 + ld [hl], "゙" + hlcoord 1, 14 + ld [hl], "レ" + inc hl + ld [hl], "へ" + inc hl + ld [hl], "ル" + inc hl + inc hl + ld de, wCurEnemyLVL + lb bc, LEADING_ZEROES | 1, 3 + call PrintNumber + call DelayFrame + call JoypadLowSensitivity + ldh a, [hJoy5] + bit BIT_A_BUTTON, a + jp nz, Func_ff21b + bit BIT_B_BUTTON, a + jp nz, Func_ff227 + bit BIT_START, a + jp nz, Func_ff236 + jr Func_ff1e7 + +Func_ff21b: + ld a, [wCurEnemyLVL] + inc a + cp MAX_LEVEL + 1 + jr c, Func_ff231 + ld a, 2 + jr Func_ff231 +Func_ff227: + ld a, [wCurEnemyLVL] + dec a + cp 2 + jr nc, Func_ff231 + ld a, MAX_LEVEL +Func_ff231: + ld [wCurEnemyLVL], a + jr Func_ff1e7 + +Func_ff236: + ld c, 0 + ld d, 0 +.asm_ff23a + push bc + push de + call Func_ff295 + ld hl, wChangeMonPicEnemyTurnSpecies + inc [hl] + pop de + pop bc + ld b, 30 +.asm_ff247 + inc c + push bc + push de + ld a, c + ld [wd11e], a + callfar PokedexToIndex + ld a, [wd11e] + ld [wEnemyMonSpecies2], a + ld [wcf91], a + xor a + ld [wEnemyBattleStatus3], a + callfar LoadEnemyMonData + ld a, [wEnemyMonSpecies2] + ld [wcf91], a + callfar SendNewMonToBox + pop de + pop bc + ld a, c + cp NUM_POKEMON + jr z, Func_ff286 + dec b + jr nz, .asm_ff247 + inc d + jr .asm_ff23a + ; fallthrough +Func_ff286: + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + xor a + ldh [hJoy7], a + ret + +Text_ff28f: + text_end + +Text_ff290: + text_far _BoxWillBeClearedText + text_end + +Func_ff295: + push de + ld a, SFX_SAVE + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + call Func_ff2d1 + ld e, l + ld d, h + ld hl, wNumInBox + call Func_ff2f3 + pop de + ld a, d + set 7, a + ld [wCurrentBoxNum], a + push de + call Func_ff2d1 + ld de, wNumInBox + call Func_ff2f3 + ld a, [wLetterPrintingDelayFlags] + push af + ld a, 1 + ld [wLetterPrintingDelayFlags], a + callfar SaveSAVtoSRAM + pop af + ld [wLetterPrintingDelayFlags], a + pop de + ret + +Func_ff2d1: + ld hl, Data_ff2eb + ld a, [wCurrentBoxNum] + and %01111111 + cp 4 + ld b, 2 + jr c, .asm_ff2e2 + inc b + and 3 +.asm_ff2e2 + ld e, a + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret + +Data_ff2eb: + dw sBox1 + dw sBox2 + dw sBox3 + dw sBox4 + +Func_ff2f3: + push hl + call Func_ff316 + ld a, b + ld [MBC1SRamBank], a + ld bc, sBox2 - sBox1 + call CopyData + pop hl + xor a + ld [hli], a + dec a + ld [hl], a + ld hl, sBox1 + ld bc, sBox5 - sBox1 + 1 + call Func_ff32a + ld [sBox5], a + call Func_ff321 + ret + +Func_ff316: + ld a, 1 + ld [MBC1SRamBankingMode], a + ld a, SRAM_ENABLE + ld [MBC1SRamEnable], a + ret + +Func_ff321: + ld a, 0 + ld [MBC1SRamBankingMode], a + ld [MBC1SRamEnable], a + ret + +Func_ff32a: + ld d, 0 +.asm_ff32c + ld a, [hli] + add d + ld d, a + dec bc + ld a, b + or c + jr nz, .asm_ff32c + ld a, d + cpl + ret +ELSE + ret +ENDC diff --git a/engine/debug/debug_party.asm b/engine/debug/debug_party.asm index 8545b848..637482eb 100644 --- a/engine/debug/debug_party.asm +++ b/engine/debug/debug_party.asm @@ -21,4 +21,139 @@ DebugTeam: 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 SetDebugTeam + + ; Pikachu gets Surf. + ld a, SURF + ld hl, wPartyMon4Moves + 2 + ld [hl], a + + ; Snorlax 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 + + ; 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 + + ; Player chose Pikachu. + ld hl, wRivalStarter + ld a, 1 + ld [hli], a + ld a, NUM_POKEMON + ld [hli], a ; hl = wUnknownDebugByte + ld a, PIKACHU + ld [hl], a ; hl = wPlayerStarter + + ; Give max money. + ld hl, wPlayerMoney + ld a, $99 + ld [hli], a + ld [hli], a + 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 MASTER_BALL, 99 + db TOWN_MAP, 1 + db BICYCLE, 1 + db FULL_RESTORE, 99 + db ESCAPE_ROPE, 99 + db RARE_CANDY, 99 + db SECRET_KEY, 1 + db CARD_KEY, 1 + db FULL_HEAL, 99 + db REVIVE, 99 + db FRESH_WATER, 99 + db S_S_TICKET, 1 + db LIFT_KEY, 1 + db PP_UP, 99 + db -1 ; end + +DebugUnusedList: + db OLD_AMBER, 1 + db DOME_FOSSIL, 1 + db HELIX_FOSSIL, 1 + db X_ACCURACY, 99 + db DIRE_HIT, 99 + db FRESH_WATER, 1 + db S_S_TICKET, 1 + db GOLD_TEETH, 1 + db COIN_CASE, 1 + db SILPH_SCOPE, 1 + db POKE_FLUTE, 1 + db LIFT_KEY, 1 + db ETHER, 99 + db MAX_ETHER, 99 + db ELIXER, 99 + db MAX_ELIXER, 99 + db TM_RAZOR_WIND, 10 + db TM_HORN_DRILL, 10 + db TM_TAKE_DOWN, 10 + db TM_BLIZZARD, 10 + db TM_HYPER_BEAM, 10 + db TM_SOLARBEAM, 10 + db TM_DRAGON_RAGE, 10 + db TM_MIMIC, 10 + db TM_BIDE, 10 + db TM_METRONOME, 10 + db TM_SELFDESTRUCT, 10 + db TM_SWIFT, 10 + db TM_SOFTBOILED, 10 + db TM_DREAM_EATER, 10 + db TM_REST, 10 + db TM_SUBSTITUTE, 10 + db -1 ; end +ELSE ret +ENDC diff --git a/engine/events/hidden_objects/safari_game.asm b/engine/events/hidden_objects/safari_game.asm index 5001a5d4..5a267346 100644 --- a/engine/events/hidden_objects/safari_game.asm +++ b/engine/events/hidden_objects/safari_game.asm @@ -7,6 +7,10 @@ SafariZoneCheck:: jr SafariZoneGameStillGoing SafariZoneCheckSteps:: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC ld a, [wSafariSteps] ld b, a ld a, [wSafariSteps + 1] diff --git a/engine/gfx/bg_map_attributes.asm b/engine/gfx/bg_map_attributes.asm index 6f81af63..55313846 100644 --- a/engine/gfx/bg_map_attributes.asm +++ b/engine/gfx/bg_map_attributes.asm @@ -1,5 +1,3 @@ -INCLUDE "data/cgb/bg_map_attributes.asm" - LoadBGMapAttributes:: ld hl, BGMapAttributesPointers ld a, c ; c = which packet diff --git a/engine/movie/title.asm b/engine/movie/title.asm index 11852ae4..cf1eecdb 100755 --- a/engine/movie/title.asm +++ b/engine/movie/title.asm @@ -164,7 +164,11 @@ DisplayTitleScreen: ldh a, [hJoyHeld] cp D_UP | SELECT | B_BUTTON jr z, .go_to_main_menu +IF DEF(_DEBUG) + and A_BUTTON | SELECT | START +ELSE and A_BUTTON | START +ENDC jr nz, .go_to_main_menu call DoTitleScreenFunction jr .titleScreenLoop @@ -190,7 +194,15 @@ DisplayTitleScreen: and D_UP | SELECT | B_BUTTON cp D_UP | SELECT | B_BUTTON jp z, .doClearSaveDialogue +IF DEF(_DEBUG) + ld a, b + bit BIT_SELECT, a + jp z, MainMenu + callfar DebugMenu + jp hl +ELSE jp MainMenu +ENDC .asm_42f0 ; unreferenced diff --git a/engine/pikachu/pikachu_emotions.asm b/engine/pikachu/pikachu_emotions.asm index 1378d383..61db6e80 100755 --- a/engine/pikachu/pikachu_emotions.asm +++ b/engine/pikachu/pikachu_emotions.asm @@ -164,7 +164,34 @@ StarterPikachuEmotionCommand_subcmd: dw PikachuBillsHouseCheck StarterPikachuEmotionCommand_nop2: +IF DEF(_DEBUG) + push hl + ld hl, wd732 + bit 1, [hl] + pop hl + ret z + push de + ld d, a + ld a, [wCurMap] + cp REDS_HOUSE_2F + ld a, d + pop de + ret nz + push de + call Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3 + call LoadFontTilePatterns + ld hl, ExpressionText + call PrintText + call Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3 + pop de + ret + +ExpressionText: + text_far _ExpressionText + text_end +ELSE ret +ENDC StarterPikachuEmotionCommand_9: push de @@ -184,7 +211,35 @@ DeletedFunction_fcffb: REPT 5 nop ENDR +IF DEF(_DEBUG) + push hl + ld hl, wd732 + bit 1, [hl] + pop hl + ret z + push de + ld d, a + ld a, [wCurMap] + cp REDS_HOUSE_2F + ld a, d + pop de + ret nz + ld a, [wExpressionNumber] + inc a + cp (PikachuEmotion33_id - PikachuEmotionTable) / 2 + jr c, .valid + ldpikaemotion a, PikachuEmotion1 +.valid + ld [wExpressionNumber], a + ret + +HallOfFamePCForever: + callfar HallOfFamePC + call WaitForTextScrollButtonPress + jr HallOfFamePCForever +ELSE ret +ENDC PlaySpecificPikachuEmotion: ld a, e diff --git a/engine/pikachu/pikachu_pic_animation.asm b/engine/pikachu/pikachu_pic_animation.asm index 755395ba..4f56d542 100755 --- a/engine/pikachu/pikachu_pic_animation.asm +++ b/engine/pikachu/pikachu_pic_animation.asm @@ -850,6 +850,3 @@ PikaPicAnimCommand_thunderbolt: ret INCLUDE "data/pikachu/pikachu_pic_animation.asm" - -Func_fe66e: - ret diff --git a/home/npc_movement.asm b/home/npc_movement.asm index 200d3983..40942bf3 100644 --- a/home/npc_movement.asm +++ b/home/npc_movement.asm @@ -49,4 +49,12 @@ EndNPCMovementScript:: farjp _EndNPCMovementScript DebugPressedOrHeldB:: +IF DEF(_DEBUG) + ldh a, [hJoyHeld] + bit BIT_B_BUTTON, a + ret nz + ldh a, [hJoyPressed] + bit BIT_B_BUTTON, a + ret +ENDC ret diff --git a/home/overworld.asm b/home/overworld.asm index 68d50695..26451bf1 100644 --- a/home/overworld.asm +++ b/home/overworld.asm @@ -2292,7 +2292,11 @@ CheckForUserInterruption:: jr z, .input ldh a, [hJoy5] +IF DEF(_DEBUG) + and START | SELECT | A_BUTTON +ELSE and START | A_BUTTON +ENDC jr nz, .input dec c diff --git a/home/text.asm b/home/text.asm index adb81425..70fade56 100644 --- a/home/text.asm +++ b/home/text.asm @@ -629,7 +629,11 @@ TextCommandJumpTable:: dw TextCommand_BOX ; TX_BOX dw TextCommand_LOW ; TX_LOW dw TextCommand_PROMPT_BUTTON ; TX_PROMPT_BUTTON +IF DEF(_DEBUG) + dw _ContTextNoPause ; TX_SCROLL +ELSE dw TextCommand_SCROLL ; TX_SCROLL +ENDC dw TextCommand_START_ASM ; TX_START_ASM dw TextCommand_NUM ; TX_NUM dw TextCommand_PAUSE ; TX_PAUSE diff --git a/home/trainers.asm b/home/trainers.asm index f407652a..468b63f8 100644 --- a/home/trainers.asm +++ b/home/trainers.asm @@ -127,6 +127,10 @@ TalkToTrainer:: ; checks if any trainers are seeing the player and wanting to fight CheckFightingMapTrainers:: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + jr nz, .trainerNotEngaging +ENDC call CheckForEngagingTrainers ld a, [wSpriteIndex] cp $ff diff --git a/layout.link b/layout.link index ef6da300..40b00dee 100644 --- a/layout.link +++ b/layout.link @@ -183,6 +183,7 @@ ROMX $2E "Pokédex Text" ROMX $2f "Move Names" + "BG Map Attributes (Debug)" org $5000 "BG Map Attributes" ROMX $30 @@ -311,15 +311,27 @@ INCLUDE "data/battle_anims/subanimations.asm" INCLUDE "data/battle_anims/frame_blocks.asm" +SECTION "BG Map Attributes (Debug)", ROMX + +IF DEF(_DEBUG) + INCLUDE "engine/gfx/bg_map_attributes.asm" +ENDC + + SECTION "BG Map Attributes", ROMX -INCLUDE "engine/gfx/bg_map_attributes.asm" +INCLUDE "data/cgb/bg_map_attributes.asm" +IF !DEF(_DEBUG) + INCLUDE "engine/gfx/bg_map_attributes.asm" +ENDC SECTION "bank30", ROMX ; This whole bank is garbage data. -INCBIN "garbage/bank30.bin" +IF !DEF(_DEBUG) + INCBIN "garbage/bank30.bin" +ENDC SECTION "bank3A", ROMX @@ -414,3 +426,4 @@ INCLUDE "engine/pikachu/pikachu_status.asm" INCLUDE "engine/pikachu/pikachu_emotions.asm" INCLUDE "engine/pikachu/pikachu_movement.asm" INCLUDE "engine/pikachu/pikachu_pic_animation.asm" +INCLUDE "engine/debug/debug_menu.asm" @@ -1 +1,2 @@ cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1 *pokeyellow.gbc +d44e96eddfbdad633cbe4e6e64915e9e198974b0 *pokeyellow_debug.gbc diff --git a/scripts/CeruleanCity.asm b/scripts/CeruleanCity.asm index 5a8ce978..7a8dc63c 100755 --- a/scripts/CeruleanCity.asm +++ b/scripts/CeruleanCity.asm @@ -35,6 +35,10 @@ CeruleanCityScript4: ret CeruleanCityScript0: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC CheckEvent EVENT_BEAT_CERULEAN_ROCKET_THIEF jr nz, .asm_194f7 ld hl, CeruleanCityCoords1 diff --git a/scripts/MtMoonB2F.asm b/scripts/MtMoonB2F.asm index 069fc1b3..d121f883 100755 --- a/scripts/MtMoonB2F.asm +++ b/scripts/MtMoonB2F.asm @@ -73,6 +73,10 @@ MtMoonB2F_ScriptPointers: dw MtMoon3Script15 MtMoon3Script0: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL call z, MtMoon3Script_49d28 CheckEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm index 33d00c07..45a675e7 100755 --- a/scripts/PalletTown.asm +++ b/scripts/PalletTown.asm @@ -271,30 +271,45 @@ PalletTownText_19002: text_far _OakWhewText text_end -PalletTownText8: ; girl +PalletTownText8: text_far _OakGrassText text_end -PalletTownText2: ; fat man +PalletTownText2: ; girl text_far _PalletTownText2 text_end -PalletTownText3: ; sign by lab +PalletTownText3: ; fat man text_far _PalletTownText3 text_end -PalletTownText4: ; sign by fence +PalletTownText4: ; sign by lab text_far _PalletTownText4 text_end -PalletTownText5: ; sign by Red's house +PalletTownText5: ; sign by fence +IF DEF(_DEBUG) + text_asm + ld a, 239 + inc a + ld [wWhichPewterGuy], a + ld hl, PalletTownText_502b + call PrintText + jp TextScriptEnd + +PalletTownText_502b: + text_decimal wWhichPewterGuy, 1, 3 + text "bit" + done +ELSE text_far _PalletTownText5 text_end +ENDC -PalletTownText6: ; sign by Blue's house +PalletTownText6: ; sign by Red's house text_far _PalletTownText6 text_end -PalletTownText7: +PalletTownText7: ; sign by Blue's house text_far _PalletTownText7 text_end diff --git a/scripts/PewterCity.asm b/scripts/PewterCity.asm index 26827bef..c1c2d190 100755 --- a/scripts/PewterCity.asm +++ b/scripts/PewterCity.asm @@ -26,6 +26,10 @@ PewterCityScript0: PewterCityScript_1925e: CheckEvent EVENT_BEAT_BROCK ret nz +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC ld hl, CoordsData_19277 call ArePlayerCoordsInArray ret nc diff --git a/scripts/PokemonTower2F.asm b/scripts/PokemonTower2F.asm index 5065e559..b9a46f85 100755 --- a/scripts/PokemonTower2F.asm +++ b/scripts/PokemonTower2F.asm @@ -17,6 +17,10 @@ PokemonTower2F_ScriptPointers: dw PokemonTower2Script2 PokemonTower2Script0: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC CheckEvent EVENT_BEAT_POKEMON_TOWER_RIVAL ret nz ld hl, CoordsData_6055e diff --git a/scripts/PokemonTower7F.asm b/scripts/PokemonTower7F.asm index ed128b3d..984322b6 100755 --- a/scripts/PokemonTower7F.asm +++ b/scripts/PokemonTower7F.asm @@ -27,6 +27,10 @@ PokemonTower7F_ScriptPointers: dw PokemonTower7Script11 PokemonTower7Script0: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0 call z, PokemonTower7Script_60d2a ret diff --git a/scripts/RocketHideoutB4F.asm b/scripts/RocketHideoutB4F.asm index 663d9345..f0b31d7f 100755 --- a/scripts/RocketHideoutB4F.asm +++ b/scripts/RocketHideoutB4F.asm @@ -69,6 +69,10 @@ RocketHideout4Script3: ret RocketHideout4Script0: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0 call z, RocketHideout4Script_455a5 CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2 diff --git a/scripts/SilphCo11F.asm b/scripts/SilphCo11F.asm index 725a5ab3..ff8bb85f 100755 --- a/scripts/SilphCo11F.asm +++ b/scripts/SilphCo11F.asm @@ -97,6 +97,10 @@ SilphCo11F_ScriptPointers: dw SilphCo11Script14 SilphCo11Script0: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC CheckEvent EVENT_BEAT_SILPH_CO_11F_TRAINER_0 call z, SilphCo11Script_6229c CheckEvent EVENT_782 @@ -3249,6 +3249,10 @@ wPlayerJumpingYScreenCoordsIndex:: wRivalStarter:: ds 1 +IF DEF(_DEBUG) +; This byte gets set to NUM_POKEMON by DebugStart. +wUnknownDebugByte:: +ENDC ds 1 wPlayerStarter:: |