summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordannye <33dannye@gmail.com>2020-11-06 23:11:17 -0600
committerdannye <33dannye@gmail.com>2020-11-06 23:11:17 -0600
commit989545f0e03b7e32d8ea80d8ab4455576dbd7116 (patch)
treeb12573ca87d345ede7d40f7cf991032ee4b2650e
parent338f1276b48ce1394cb9de52b7646e9f8618b1b9 (diff)
Start disassembling debug yellow
non matching
-rw-r--r--Makefile31
-rw-r--r--engine/debug/debug_party.asm135
-rwxr-xr-xengine/movie/title.asm8
-rw-r--r--home/npc_movement.asm8
-rw-r--r--home/trainers.asm4
-rw-r--r--roms.sha11
-rwxr-xr-xscripts/PalletTown.asm29
7 files changed, 199 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index 52b6e875..e6ca41ce 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/engine/debug/debug_party.asm b/engine/debug/debug_party.asm
index 8545b848..2d8a4f1a 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 ; ???
+ 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/movie/title.asm b/engine/movie/title.asm
index 11852ae4..546b136d 100755
--- a/engine/movie/title.asm
+++ b/engine/movie/title.asm
@@ -190,7 +190,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 Func_fe66e
+ jp hl
+ELSE
jp MainMenu
+ENDC
.asm_42f0
; unreferenced
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/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/roms.sha1 b/roms.sha1
index e61e2279..624d47f3 100644
--- a/roms.sha1
+++ b/roms.sha1
@@ -1 +1,2 @@
cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1 *pokeyellow.gbc
+d44e96eddfbdad633cbe4e6e64915e9e198974b0 *pokeyellow_debug.gbc
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