mirror of https://github.com/pret/pokecrystal.git
Merge pull request #743 from Rangi42/master
Disassemble the final English debug ROMs
This commit is contained in:
commit
d626a0dc3b
7
FAQ.md
7
FAQ.md
|
@ -4,7 +4,7 @@
|
|||
## Questions
|
||||
|
||||
- [What is pokecrystal11.gbc?](#what-is-pokecrystal11gbc)
|
||||
- [What is pokecrystal-au.gbc?](#what-is-pokecrystal-augbc)
|
||||
- [What is pokecrystal_au.gbc?](#what-is-pokecrystal_augbc)
|
||||
- [I can't build the ROM, `make` just prints an error!](#i-cant-build-the-rom-make-just-prints-an-error)
|
||||
- [`gcc`: command not found](#gcc-command-not-found)
|
||||
- ["ERROR: `UNION` already defined"](#error-union-already-defined)
|
||||
|
@ -25,9 +25,10 @@
|
|||
|
||||
Version 1.1 of Pokémon Crystal, which fixed some issues with the initial international release. `make crystal11` defines `_CRYSTAL11` so the assembly builds the changed version.
|
||||
|
||||
## What is pokecrystal-au.gbc?
|
||||
|
||||
The Australian release of Pokémon Crystal, which is based on the international 1.1 release but censors gambling references from the Game Corners. `make crystal-au` defines `_CRYSTAL11` and `_CRYSTAL_AU` so the assembly builds the changed version.
|
||||
## What is pokecrystal_au.gbc?
|
||||
|
||||
The Australian release of Pokémon Crystal, which is based on the international 1.1 release but censors gambling references from the Game Corners. `make crystal_au` defines `_CRYSTAL11` and `_CRYSTAL_AU` so the assembly builds the changed version.
|
||||
|
||||
|
||||
## I can't build the ROM, `make` just prints an error!
|
||||
|
|
60
Makefile
60
Makefile
|
@ -1,6 +1,6 @@
|
|||
roms := pokecrystal.gbc pokecrystal11.gbc pokecrystal-au.gbc
|
||||
roms := pokecrystal.gbc pokecrystal11.gbc pokecrystal_au.gbc pokecrystal_debug.gbc pokecrystal11_debug.gbc
|
||||
|
||||
crystal_obj := \
|
||||
rom_obj := \
|
||||
audio.o \
|
||||
home.o \
|
||||
main.o \
|
||||
|
@ -17,8 +17,11 @@ gfx/sprites.o \
|
|||
gfx/tilesets.o \
|
||||
lib/mobile/main.o
|
||||
|
||||
crystal11_obj := $(crystal_obj:.o=11.o)
|
||||
crystal_au_obj := $(crystal_obj:.o=_au.o)
|
||||
pokecrystal_obj := $(rom_obj:.o=.o)
|
||||
pokecrystal11_obj := $(rom_obj:.o=11.o)
|
||||
pokecrystal_au_obj := $(rom_obj:.o=_au.o)
|
||||
pokecrystal_debug_obj := $(rom_obj:.o=_debug.o)
|
||||
pokecrystal11_debug_obj := $(rom_obj:.o=11_debug.o)
|
||||
|
||||
|
||||
### Build tools
|
||||
|
@ -39,24 +42,26 @@ RGBLINK ?= $(RGBDS)rgblink
|
|||
### Build targets
|
||||
|
||||
.SUFFIXES:
|
||||
.PHONY: all crystal crystal11 crystal_au clean tidy compare tools
|
||||
.PHONY: all crystal crystal11 crystal_au crystal_debug crystal11_debug clean tidy compare tools
|
||||
.SECONDEXPANSION:
|
||||
.PRECIOUS:
|
||||
.SECONDARY:
|
||||
|
||||
all: crystal
|
||||
crystal: pokecrystal.gbc
|
||||
crystal11: pokecrystal11.gbc
|
||||
crystal-au: pokecrystal-au.gbc
|
||||
crystal: pokecrystal.gbc
|
||||
crystal11: pokecrystal11.gbc
|
||||
crystal_au: pokecrystal_au.gbc
|
||||
crystal_debug: pokecrystal_debug.gbc
|
||||
crystal11_debug: pokecrystal11_debug.gbc
|
||||
|
||||
clean:
|
||||
rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(crystal_au_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym) rgbdscheck.o
|
||||
rm -f $(roms) $(pokecrystal_obj) $(pokecrystal11_obj) $(pokecrystal_au_obj) $(pokecrystal_debug_obj) $(pokecrystal11_debug_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym) rgbdscheck.o
|
||||
find gfx \( -name "*.[12]bpp" -o -name "*.lz" -o -name "*.gbcpal" -o -name "*.sgb.tilemap" \) -delete
|
||||
find gfx/pokemon -mindepth 1 ! -path "gfx/pokemon/unown/*" \( -name "bitmask.asm" -o -name "frames.asm" -o -name "front.animated.tilemap" -o -name "front.dimensions" \) -delete
|
||||
$(MAKE) clean -C tools/
|
||||
|
||||
tidy:
|
||||
rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(crystal_au_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym) rgbdscheck.o
|
||||
rm -f $(roms) $(pokecrystal_obj) $(pokecrystal11_obj) $(pokecrystal_au_obj) $(pokecrystal_debug_obj) $(pokecrystal11_debug_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym) rgbdscheck.o
|
||||
$(MAKE) clean -C tools/
|
||||
|
||||
compare: $(roms)
|
||||
|
@ -72,9 +77,11 @@ ifeq ($(DEBUG),1)
|
|||
RGBASMFLAGS += -E
|
||||
endif
|
||||
|
||||
$(crystal_obj): RGBASMFLAGS +=
|
||||
$(crystal11_obj): RGBASMFLAGS += -D _CRYSTAL11
|
||||
$(crystal_au_obj): RGBASMFLAGS += -D _CRYSTAL11 -D _CRYSTAL_AU
|
||||
$(pokecrystal_obj): RGBASMFLAGS +=
|
||||
$(pokecrystal11_obj): RGBASMFLAGS += -D _CRYSTAL11
|
||||
$(pokecrystal_au_obj): RGBASMFLAGS += -D _CRYSTAL11 -D _CRYSTAL_AU
|
||||
$(pokecrystal_debug_obj): RGBASMFLAGS += -D _DEBUG
|
||||
$(pokecrystal11_debug_obj): RGBASMFLAGS += -D _CRYSTAL11 -D _DEBUG
|
||||
|
||||
rgbdscheck.o: rgbdscheck.asm
|
||||
$(RGBASM) -o $@ $<
|
||||
|
@ -93,24 +100,25 @@ ifeq (,$(filter clean tools,$(MAKECMDGOALS)))
|
|||
|
||||
$(info $(shell $(MAKE) -C tools))
|
||||
|
||||
$(foreach obj, $(crystal_au_obj), $(eval $(call DEP,$(obj),$(obj:_au.o=.asm))))
|
||||
$(foreach obj, $(crystal11_obj), $(eval $(call DEP,$(obj),$(obj:11.o=.asm))))
|
||||
$(foreach obj, $(crystal_obj), $(eval $(call DEP,$(obj),$(obj:.o=.asm))))
|
||||
# Dependencies for shared objects objects
|
||||
$(foreach obj, $(pokecrystal_obj), $(eval $(call DEP,$(obj),$(obj:.o=.asm))))
|
||||
$(foreach obj, $(pokecrystal11_obj), $(eval $(call DEP,$(obj),$(obj:11.o=.asm))))
|
||||
$(foreach obj, $(pokecrystal_au_obj), $(eval $(call DEP,$(obj),$(obj:_au.o=.asm))))
|
||||
$(foreach obj, $(pokecrystal_debug_obj), $(eval $(call DEP,$(obj),$(obj:_debug.o=.asm))))
|
||||
$(foreach obj, $(pokecrystal11_debug_obj), $(eval $(call DEP,$(obj),$(obj:11_debug.o=.asm))))
|
||||
|
||||
endif
|
||||
|
||||
|
||||
pokecrystal.gbc: $(crystal_obj) layout.link
|
||||
$(RGBLINK) -n pokecrystal.sym -m pokecrystal.map -l layout.link -p 0 -o $@ $(crystal_obj)
|
||||
$(RGBFIX) -Cjv -t PM_CRYSTAL -i BYTE -k 01 -l 0x33 -m 0x10 -r 3 -p 0 $@
|
||||
pokecrystal_opt = -Cjv -t PM_CRYSTAL -i BYTE -n 0 -k 01 -l 0x33 -m 0x10 -r 3 -p 0
|
||||
pokecrystal11_opt = -Cjv -t PM_CRYSTAL -i BYTE -n 1 -k 01 -l 0x33 -m 0x10 -r 3 -p 0
|
||||
pokecrystal_au_opt = -Cjv -t PM_CRYSTAL -i BYTU -n 0 -k 01 -l 0x33 -m 0x10 -r 3 -p 0
|
||||
pokecrystal_debug_opt = -Cjv -t PM_CRYSTAL -i BYTE -n 0 -k 01 -l 0x33 -m 0x10 -r 3 -p 0
|
||||
pokecrystal11_debug_opt = -Cjv -t PM_CRYSTAL -i BYTE -n 1 -k 01 -l 0x33 -m 0x10 -r 3 -p 0
|
||||
|
||||
pokecrystal11.gbc: $(crystal11_obj) layout.link
|
||||
$(RGBLINK) -n pokecrystal11.sym -m pokecrystal11.map -l layout.link -p 0 -o $@ $(crystal11_obj)
|
||||
$(RGBFIX) -Cjv -t PM_CRYSTAL -i BYTE -n 1 -k 01 -l 0x33 -m 0x10 -r 3 -p 0 $@
|
||||
|
||||
pokecrystal-au.gbc: $(crystal_au_obj) layout.link
|
||||
$(RGBLINK) -n pokecrystal-au.sym -m pokecrystal-au.map -l layout.link -p 0 -o $@ $(crystal_au_obj)
|
||||
$(RGBFIX) -Cjv -t PM_CRYSTAL -i BYTU -k 01 -l 0x33 -m 0x10 -r 3 -p 0 $@
|
||||
%.gbc: $$(%_obj) layout.link
|
||||
$(RGBLINK) -n $*.sym -m $*.map -l layout.link -o $@ $(filter %.o,$^)
|
||||
$(RGBFIX) $($*_opt) $@
|
||||
|
||||
|
||||
### LZ compression rules
|
||||
|
|
|
@ -7,6 +7,8 @@ It builds the following ROMs:
|
|||
- Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc `sha1: f4cd194bdee0d04ca4eac29e09b8e4e9d818c133`
|
||||
- Pokemon - Crystal Version (UE) (V1.1) [C][!].gbc `sha1: f2f52230b536214ef7c9924f483392993e226cfb`
|
||||
- Pokemon - Crystal Version (A) [C][!].gbc `sha1: a0fc810f1d4e124434f7be2c989ab5b5892ddf36`
|
||||
- CRYSTAL_ps3_010328d.bin `sha1: c60d57a24bbe8ecf7cba54ab3f90669f97bd330d`
|
||||
- CRYSTAL_ps3_us_revise_010710d.bin `sha1: 391ae86b1d5a26db712ffe6c28bbf2a1f804c3c4`
|
||||
|
||||
To set up the repository, see [INSTALL.md](INSTALL.md).
|
||||
|
||||
|
|
|
@ -47,6 +47,8 @@ MAX_BALLS EQU 12
|
|||
MAX_KEY_ITEMS EQU 25
|
||||
MAX_PC_ITEMS EQU 50
|
||||
|
||||
MAX_ITEM_STACK EQU 99
|
||||
|
||||
; mail
|
||||
MAIL_LINE_LENGTH EQU $10
|
||||
MAIL_MSG_LENGTH EQU $20
|
||||
|
|
|
@ -19,6 +19,9 @@ GS_VERSION EQU 0
|
|||
SAVE_CHECK_VALUE_1 EQU 99
|
||||
SAVE_CHECK_VALUE_2 EQU 127
|
||||
|
||||
; RTC halted check value
|
||||
RTC_HALT_VALUE EQU $1234
|
||||
|
||||
; time of day boundaries
|
||||
MORN_HOUR EQU 4 ; 4 AM
|
||||
DAY_HOUR EQU 10 ; 10 AM
|
||||
|
|
|
@ -3432,7 +3432,24 @@ DoEnemyDamage:
|
|||
ld [wBuffer4], a
|
||||
sbc b
|
||||
ld [wEnemyMonHP], a
|
||||
if DEF(_DEBUG)
|
||||
push af
|
||||
ld a, BANK(sSkipBattle)
|
||||
call OpenSRAM
|
||||
ld a, [sSkipBattle]
|
||||
call CloseSRAM
|
||||
or a
|
||||
; If [sSkipBattle] is nonzero, skip the "jr nc, .no_underflow" check,
|
||||
; so any attack deals maximum damage to the enemy.
|
||||
jr nz, .debug_skip
|
||||
pop af
|
||||
jr nc, .no_underflow
|
||||
push af
|
||||
.debug_skip
|
||||
pop af
|
||||
else
|
||||
jr nc, .no_underflow
|
||||
endc
|
||||
|
||||
ld a, [wBuffer4]
|
||||
ld [hli], a
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -168,7 +168,7 @@ PutItemInPocket:
|
|||
jr z, .terminator
|
||||
cp c
|
||||
jr nz, .next
|
||||
ld a, 99
|
||||
ld a, MAX_ITEM_STACK
|
||||
sub [hl]
|
||||
add b
|
||||
ld b, a
|
||||
|
@ -205,14 +205,14 @@ PutItemInPocket:
|
|||
jr nz, .loop2
|
||||
ld a, [wItemQuantityBuffer]
|
||||
add [hl]
|
||||
cp 100
|
||||
cp MAX_ITEM_STACK + 1
|
||||
jr nc, .newstack
|
||||
ld [hl], a
|
||||
jr .done
|
||||
|
||||
.newstack
|
||||
ld [hl], 99
|
||||
sub 99
|
||||
ld [hl], MAX_ITEM_STACK
|
||||
sub MAX_ITEM_STACK
|
||||
ld [wItemQuantityBuffer], a
|
||||
jr .loop2
|
||||
|
||||
|
@ -408,7 +408,7 @@ ReceiveTMHM:
|
|||
add hl, bc
|
||||
ld a, [wItemQuantityChangeBuffer]
|
||||
add [hl]
|
||||
cp 100
|
||||
cp MAX_ITEM_STACK + 1
|
||||
jr nc, .toomany
|
||||
ld [hl], a
|
||||
scf
|
||||
|
|
|
@ -498,7 +498,7 @@ BuyMenuLoop:
|
|||
ret
|
||||
|
||||
StandardMartAskPurchaseQuantity:
|
||||
ld a, 99
|
||||
ld a, MAX_ITEM_STACK
|
||||
ld [wItemQuantityBuffer], a
|
||||
ld a, MARTTEXT_HOW_MANY
|
||||
call LoadBuyMenuText
|
||||
|
@ -557,7 +557,7 @@ RooftopSaleAskPurchaseQuantity:
|
|||
ld a, MARTTEXT_HOW_MANY
|
||||
call LoadBuyMenuText
|
||||
call .GetSalePrice
|
||||
ld a, 99
|
||||
ld a, MAX_ITEM_STACK
|
||||
ld [wItemQuantityBuffer], a
|
||||
farcall RooftopSale_SelectQuantityToBuy
|
||||
call ExitMenu
|
||||
|
|
|
@ -96,11 +96,11 @@ Function249a7:
|
|||
jr nz, .asm_249cd
|
||||
ld a, [wScrollingMenuCursorPosition]
|
||||
call Function24a97
|
||||
cp 99
|
||||
cp MAX_ITEM_STACK
|
||||
jr z, .asm_249cd
|
||||
ld a, [wSwitchItem]
|
||||
call Function24a97
|
||||
cp 99
|
||||
cp MAX_ITEM_STACK
|
||||
jr nz, .asm_249cf
|
||||
.asm_249cd
|
||||
and a
|
||||
|
@ -121,14 +121,14 @@ Function249d1:
|
|||
ld a, [hl]
|
||||
pop hl
|
||||
add [hl]
|
||||
cp 100
|
||||
cp MAX_ITEM_STACK + 1
|
||||
jr c, .asm_24a01
|
||||
sub 99
|
||||
sub MAX_ITEM_STACK
|
||||
push af
|
||||
ld a, [wScrollingMenuCursorPosition]
|
||||
call ItemSwitch_GetNthItem
|
||||
inc hl
|
||||
ld [hl], 99
|
||||
ld [hl], MAX_ITEM_STACK
|
||||
ld a, [wSwitchItem]
|
||||
call ItemSwitch_GetNthItem
|
||||
inc hl
|
||||
|
|
|
@ -88,6 +88,12 @@ AreYouABoyOrAreYouAGirl:
|
|||
farcall InitMobileProfile ; mobile
|
||||
ret
|
||||
|
||||
if DEF(_DEBUG)
|
||||
DebugRoom: ; unreferenced
|
||||
farcall _DebugRoom
|
||||
ret
|
||||
endc
|
||||
|
||||
ResetWRAM:
|
||||
xor a
|
||||
ldh [hBGMapMode], a
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
const MAINMENUITEM_MYSTERY_GIFT ; 3
|
||||
const MAINMENUITEM_MOBILE ; 4
|
||||
const MAINMENUITEM_MOBILE_STUDIUM ; 5
|
||||
const MAINMENUITEM_DEBUG_ROOM ; 6
|
||||
|
||||
MobileMenuGFX:
|
||||
INCBIN "gfx/mobile/mobile_menu.2bpp"
|
||||
|
@ -70,6 +71,9 @@ MainMenu:
|
|||
db "MYSTERY GIFT@"
|
||||
db "MOBILE@"
|
||||
db "MOBILE STUDIUM@"
|
||||
if DEF(_DEBUG)
|
||||
db "DEBUG ROOM@"
|
||||
endc
|
||||
|
||||
.Jumptable:
|
||||
; entries correspond to MAINMENUITEM_* constants
|
||||
|
@ -79,6 +83,9 @@ MainMenu:
|
|||
dw MainMenu_MysteryGift
|
||||
dw MainMenu_Mobile
|
||||
dw MainMenu_MobileStudium
|
||||
if DEF(_DEBUG)
|
||||
dw MainMenu_DebugRoom
|
||||
endc
|
||||
|
||||
MainMenuItems:
|
||||
; entries correspond to MAINMENU_* constants
|
||||
|
@ -90,71 +97,95 @@ MainMenuItems:
|
|||
db -1
|
||||
|
||||
; MAINMENU_CONTINUE
|
||||
db 3
|
||||
db 3 + DEF(_DEBUG)
|
||||
db MAINMENUITEM_CONTINUE
|
||||
db MAINMENUITEM_NEW_GAME
|
||||
db MAINMENUITEM_OPTION
|
||||
if DEF(_DEBUG)
|
||||
db MAINMENUITEM_DEBUG_ROOM
|
||||
endc
|
||||
db -1
|
||||
|
||||
; MAINMENU_MOBILE_MYSTERY
|
||||
db 5
|
||||
db 5 + DEF(_DEBUG)
|
||||
db MAINMENUITEM_CONTINUE
|
||||
db MAINMENUITEM_NEW_GAME
|
||||
db MAINMENUITEM_OPTION
|
||||
db MAINMENUITEM_MYSTERY_GIFT
|
||||
db MAINMENUITEM_MOBILE
|
||||
if DEF(_DEBUG)
|
||||
db MAINMENUITEM_DEBUG_ROOM
|
||||
endc
|
||||
db -1
|
||||
|
||||
; MAINMENU_MOBILE
|
||||
db 4
|
||||
db 4 + DEF(_DEBUG)
|
||||
db MAINMENUITEM_CONTINUE
|
||||
db MAINMENUITEM_NEW_GAME
|
||||
db MAINMENUITEM_OPTION
|
||||
db MAINMENUITEM_MOBILE
|
||||
if DEF(_DEBUG)
|
||||
db MAINMENUITEM_DEBUG_ROOM
|
||||
endc
|
||||
db -1
|
||||
|
||||
; MAINMENU_MOBILE_STUDIUM
|
||||
db 5
|
||||
db 5 + DEF(_DEBUG)
|
||||
db MAINMENUITEM_CONTINUE
|
||||
db MAINMENUITEM_NEW_GAME
|
||||
db MAINMENUITEM_OPTION
|
||||
db MAINMENUITEM_MOBILE
|
||||
db MAINMENUITEM_MOBILE_STUDIUM
|
||||
if DEF(_DEBUG)
|
||||
db MAINMENUITEM_DEBUG_ROOM
|
||||
endc
|
||||
db -1
|
||||
|
||||
; MAINMENU_MYSTERY_MOBILE_STUDIUM
|
||||
db 6
|
||||
db 6 + DEF(_DEBUG)
|
||||
db MAINMENUITEM_CONTINUE
|
||||
db MAINMENUITEM_NEW_GAME
|
||||
db MAINMENUITEM_OPTION
|
||||
db MAINMENUITEM_MYSTERY_GIFT
|
||||
db MAINMENUITEM_MOBILE
|
||||
db MAINMENUITEM_MOBILE_STUDIUM
|
||||
if DEF(_DEBUG)
|
||||
db MAINMENUITEM_DEBUG_ROOM
|
||||
endc
|
||||
db -1
|
||||
|
||||
; MAINMENU_MYSTERY
|
||||
db 4
|
||||
db 4 + DEF(_DEBUG)
|
||||
db MAINMENUITEM_CONTINUE
|
||||
db MAINMENUITEM_NEW_GAME
|
||||
db MAINMENUITEM_OPTION
|
||||
db MAINMENUITEM_MYSTERY_GIFT
|
||||
if DEF(_DEBUG)
|
||||
db MAINMENUITEM_DEBUG_ROOM
|
||||
endc
|
||||
db -1
|
||||
|
||||
; MAINMENU_MYSTERY_STUDIUM
|
||||
db 5
|
||||
db 5 + DEF(_DEBUG)
|
||||
db MAINMENUITEM_CONTINUE
|
||||
db MAINMENUITEM_NEW_GAME
|
||||
db MAINMENUITEM_OPTION
|
||||
db MAINMENUITEM_MYSTERY_GIFT
|
||||
db MAINMENUITEM_MOBILE_STUDIUM
|
||||
if DEF(_DEBUG)
|
||||
db MAINMENUITEM_DEBUG_ROOM
|
||||
endc
|
||||
db -1
|
||||
|
||||
; MAINMENU_STUDIUM
|
||||
db 4
|
||||
db 4 + DEF(_DEBUG)
|
||||
db MAINMENUITEM_CONTINUE
|
||||
db MAINMENUITEM_NEW_GAME
|
||||
db MAINMENUITEM_OPTION
|
||||
db MAINMENUITEM_MOBILE_STUDIUM
|
||||
if DEF(_DEBUG)
|
||||
db MAINMENUITEM_DEBUG_ROOM
|
||||
endc
|
||||
db -1
|
||||
|
||||
MainMenu_GetWhichMenu:
|
||||
|
|
|
@ -25,6 +25,20 @@ NextCallReceiveDelay:
|
|||
ld hl, .ReceiveCallDelays
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
if DEF(_DEBUG)
|
||||
ld h, a
|
||||
ld a, BANK(sDebugTimeCyclesSinceLastCall)
|
||||
call OpenSRAM
|
||||
ld a, [sDebugTimeCyclesSinceLastCall]
|
||||
call CloseSRAM
|
||||
dec a
|
||||
cp 2
|
||||
jr nc, .debug_ok
|
||||
xor 1
|
||||
ld h, a
|
||||
.debug_ok
|
||||
ld a, h
|
||||
endc
|
||||
jp RestartReceiveCallDelay
|
||||
|
||||
.ReceiveCallDelays:
|
||||
|
|
|
@ -185,6 +185,10 @@ EggStatsJoypad:
|
|||
.check
|
||||
bit A_BUTTON_F, a
|
||||
jr nz, .quit
|
||||
if DEF(_DEBUG)
|
||||
cp START
|
||||
jr z, .hatch
|
||||
endc
|
||||
and D_DOWN | D_UP | A_BUTTON | B_BUTTON
|
||||
jp StatsScreen_JoypadAction
|
||||
|
||||
|
@ -193,6 +197,39 @@ EggStatsJoypad:
|
|||
call StatsScreen_SetJumptableIndex
|
||||
ret
|
||||
|
||||
if DEF(_DEBUG)
|
||||
.hatch
|
||||
ld a, [wMonType]
|
||||
or a
|
||||
jr nz, .skip
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
ld a, [wCurPartyMon]
|
||||
ld bc, PARTYMON_STRUCT_LENGTH
|
||||
ld hl, wPartyMon1Happiness
|
||||
call AddNTimes
|
||||
ld [hl], 1
|
||||
ld a, 1
|
||||
ld [wTempMonHappiness], a
|
||||
ld a, 127
|
||||
ld [wStepCount], a
|
||||
ld de, .HatchSoonString
|
||||
hlcoord 8, 17
|
||||
call PlaceString
|
||||
ld hl, wcf64
|
||||
set 5, [hl]
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
.skip
|
||||
xor a
|
||||
jp StatsScreen_JoypadAction
|
||||
|
||||
.HatchSoonString:
|
||||
db "▶HATCH SOON!@"
|
||||
endc
|
||||
|
||||
StatsScreen_LoadPage:
|
||||
call StatsScreen_LoadGFX
|
||||
ld hl, wcf64
|
||||
|
@ -970,6 +1007,17 @@ EggStatsScreen:
|
|||
ld de, FiveQMarkString
|
||||
hlcoord 11, 5
|
||||
call PlaceString
|
||||
if DEF(_DEBUG)
|
||||
ld de, .PushStartString
|
||||
hlcoord 8, 17
|
||||
call PlaceString
|
||||
jr .placed_push_start
|
||||
|
||||
.PushStartString:
|
||||
db "▶PUSH START.@"
|
||||
|
||||
.placed_push_start
|
||||
endc
|
||||
ld a, [wTempMonHappiness] ; egg status
|
||||
ld de, EggSoonString
|
||||
cp $6
|
||||
|
|
24
home/map.asm
24
home/map.asm
|
@ -1138,7 +1138,7 @@ MaskObject::
|
|||
ld d, $0
|
||||
ld hl, wObjectMasks
|
||||
add hl, de
|
||||
ld [hl], -1 ; , masked
|
||||
ld [hl], -1 ; masked
|
||||
ret
|
||||
|
||||
UnmaskObject::
|
||||
|
@ -1150,6 +1150,28 @@ UnmaskObject::
|
|||
ld [hl], 0 ; unmasked
|
||||
ret
|
||||
|
||||
if DEF(_DEBUG)
|
||||
ComputeROMXChecksum::
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, c
|
||||
rst Bankswitch
|
||||
ld hl, $4000 ; ROMX start
|
||||
.loop
|
||||
ld a, [hli]
|
||||
add e
|
||||
ld e, a
|
||||
ld a, d
|
||||
adc 0
|
||||
ld d, a
|
||||
ld a, h
|
||||
cp $80 ; HIGH(ROMX end)
|
||||
jr c, .loop
|
||||
pop af
|
||||
rst Bankswitch
|
||||
ret
|
||||
endc
|
||||
|
||||
ScrollMapUp::
|
||||
hlcoord 0, 0
|
||||
ld de, wBGMapBuffer
|
||||
|
|
|
@ -2,6 +2,22 @@ OpenSRAM::
|
|||
; if invalid bank, sram is disabled
|
||||
cp NUM_SRAM_BANKS
|
||||
jr c, .valid
|
||||
if DEF(_DEBUG)
|
||||
push af
|
||||
push bc
|
||||
ld b, 1
|
||||
.loop
|
||||
sla b
|
||||
dec a
|
||||
jr nz, .loop
|
||||
ld a, BANK(sOpenedInvalidSRAM)
|
||||
call OpenSRAM
|
||||
ld a, [sOpenedInvalidSRAM]
|
||||
or b
|
||||
ld [sOpenedInvalidSRAM], a
|
||||
pop bc
|
||||
pop af
|
||||
endc
|
||||
jr CloseSRAM
|
||||
|
||||
.valid:
|
||||
|
|
4
hram.asm
4
hram.asm
|
@ -165,6 +165,10 @@ hSGB:: db
|
|||
hDMATransfer:: db
|
||||
hMobile:: db
|
||||
hSystemBooted:: db
|
||||
|
||||
if DEF(_DEBUG)
|
||||
hDebugRoomMenuPage::
|
||||
endc
|
||||
hClockResetTrigger:: db
|
||||
|
||||
ds 19
|
||||
|
|
|
@ -294,6 +294,7 @@ ROMX $77
|
|||
"Tileset Data 7"
|
||||
"bank77_2"
|
||||
ROMX $78
|
||||
"Debug Room"
|
||||
"Tileset Data 8"
|
||||
ROMX $7b
|
||||
"Battle Tower Text"
|
||||
|
|
17
main.asm
17
main.asm
|
@ -290,7 +290,7 @@ INCLUDE "engine/overworld/player_movement.asm"
|
|||
INCLUDE "engine/events/engine_flags.asm"
|
||||
INCLUDE "engine/overworld/variables.asm"
|
||||
INCLUDE "data/text/battle.asm"
|
||||
INCLUDE "engine/menus/debug.asm"
|
||||
INCLUDE "engine/debug/color_picker.asm"
|
||||
|
||||
|
||||
SECTION "bank21", ROMX
|
||||
|
@ -696,6 +696,13 @@ INCBIN "gfx/pokegear/pokegear.2bpp.lz"
|
|||
INCLUDE "engine/pokemon/european_mail.asm"
|
||||
|
||||
|
||||
SECTION "Debug Room", ROMX
|
||||
|
||||
if DEF(_DEBUG)
|
||||
INCLUDE "engine/debug/debug_room.asm"
|
||||
endc
|
||||
|
||||
|
||||
SECTION "Battle Tower Text", ROMX
|
||||
|
||||
INCLUDE "data/battle_tower/trainer_text.asm"
|
||||
|
@ -722,7 +729,15 @@ SECTION "Mobile Stadium 2", ROMX
|
|||
if DEF(_CRYSTAL_AU)
|
||||
INCBIN "mobile/stadium/stadium2_au.bin"
|
||||
elif DEF(_CRYSTAL11)
|
||||
if DEF(_DEBUG)
|
||||
INCBIN "mobile/stadium/stadium2_11_debug.bin"
|
||||
else
|
||||
INCBIN "mobile/stadium/stadium2_11.bin"
|
||||
endc
|
||||
else
|
||||
if DEF(_DEBUG)
|
||||
INCBIN "mobile/stadium/stadium2_debug.bin"
|
||||
else
|
||||
INCBIN "mobile/stadium/stadium2.bin"
|
||||
endc
|
||||
endc
|
||||
|
|
|
@ -844,3 +844,9 @@ Function4a6d8:
|
|||
dec b
|
||||
jr nz, Function4a6d8
|
||||
ret
|
||||
|
||||
if DEF(_DEBUG)
|
||||
MainMenu_DebugRoom:
|
||||
farcall _DebugRoom
|
||||
ret
|
||||
endc
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,3 +1,5 @@
|
|||
f4cd194bdee0d04ca4eac29e09b8e4e9d818c133 *pokecrystal.gbc
|
||||
f2f52230b536214ef7c9924f483392993e226cfb *pokecrystal11.gbc
|
||||
a0fc810f1d4e124434f7be2c989ab5b5892ddf36 *pokecrystal-au.gbc
|
||||
a0fc810f1d4e124434f7be2c989ab5b5892ddf36 *pokecrystal_au.gbc
|
||||
c60d57a24bbe8ecf7cba54ab3f90669f97bd330d *pokecrystal_debug.gbc
|
||||
391ae86b1d5a26db712ffe6c28bbf2a1f804c3c4 *pokecrystal11_debug.gbc
|
||||
|
|
8
sram.asm
8
sram.asm
|
@ -90,6 +90,14 @@ sBackupCheckValue2:: db ; loaded with SAVE_CHECK_VALUE_2, used to check save cor
|
|||
|
||||
sStackTop:: dw
|
||||
|
||||
if DEF(_DEBUG)
|
||||
sRTCHaltCheckValue:: dw
|
||||
sSkipBattle:: db
|
||||
sDebugTimeCyclesSinceLastCall:: db
|
||||
sOpenedInvalidSRAM:: db
|
||||
sIsBugMon:: db
|
||||
endc
|
||||
|
||||
|
||||
SECTION "Save", SRAM
|
||||
|
||||
|
|
43
wram.asm
43
wram.asm
|
@ -1177,6 +1177,49 @@ wccb5:: ds 3
|
|||
wccb8:: ds 1
|
||||
wccb9:: ds 1
|
||||
wccba:: ds 102
|
||||
|
||||
if DEF(_DEBUG)
|
||||
NEXTU
|
||||
; debug room
|
||||
|
||||
; debug room RTC values
|
||||
wDebugRoomRTCSec:: db
|
||||
wDebugRoomRTCMin:: db
|
||||
wDebugRoomRTCHour:: db
|
||||
wDebugRoomRTCDay:: dw
|
||||
wDebugRoomRTCCurSec:: db
|
||||
wDebugRoomRTCCurMin:: db
|
||||
wDebugRoomRTCCurHour:: db
|
||||
wDebugRoomRTCCurDay:: dw
|
||||
|
||||
; debug room paged values
|
||||
wDebugRoomCurPage:: db
|
||||
wDebugRoomCurValue:: db
|
||||
wDebugRoomAFunction:: dw
|
||||
wDebugRoomStartFunction:: dw
|
||||
wDebugRoomSelectFunction:: dw
|
||||
wDebugRoomAutoFunction:: dw
|
||||
wDebugRoomPageCount:: db
|
||||
wDebugRoomPagedValuesPtr:: dw
|
||||
|
||||
wDebugRoomROMChecksum:: dw
|
||||
wDebugRoomCurChecksumBank:: db
|
||||
|
||||
UNION
|
||||
; debug room new item values
|
||||
wDebugRoomItemID:: db
|
||||
wDebugRoomItemQuantity:: db
|
||||
NEXTU
|
||||
; debug room new pokemon values
|
||||
wDebugRoomMon:: box_struct wDebugRoomMon
|
||||
wDebugRoomMonBox:: db
|
||||
NEXTU
|
||||
; debug room GB ID values
|
||||
wDebugRoomGBID:: dw
|
||||
ENDU
|
||||
|
||||
endc
|
||||
|
||||
ENDU
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue