mirror of
https://github.com/pret/pokered.git
synced 2024-11-26 23:50:41 +00:00
Thoroughly document debug code (#410)
This commit is contained in:
parent
d001ced41b
commit
f46db37d50
@ -13,7 +13,7 @@
|
||||
const POKE_BALL ; $04
|
||||
const TOWN_MAP ; $05
|
||||
const BICYCLE ; $06
|
||||
const SURFBOARD ; $07 buggy?
|
||||
const SURFBOARD ; $07
|
||||
const SAFARI_BALL ; $08
|
||||
const POKEDEX ; $09
|
||||
const MOON_STONE ; $0A
|
||||
|
@ -16,3 +16,6 @@ DEF TEXT_DELAY_SLOW EQU %101 ; 5
|
||||
const_def 6
|
||||
const BIT_BATTLE_SHIFT ; 6
|
||||
const BIT_BATTLE_ANIMATION ; 7
|
||||
|
||||
; wd732 flags
|
||||
DEF BIT_DEBUG_MODE EQU 1
|
||||
|
@ -44,15 +44,15 @@ MACRO special_warp_spec
|
||||
db \4
|
||||
ENDM
|
||||
|
||||
FirstMapSpec:
|
||||
NewGameWarp:
|
||||
special_warp_spec REDS_HOUSE_2F, 3, 6, REDS_HOUSE_2
|
||||
TradeCenterSpec1:
|
||||
TradeCenterPlayerWarp:
|
||||
special_warp_spec TRADE_CENTER, 3, 4, CLUB
|
||||
TradeCenterSpec2:
|
||||
TradeCenterFriendWarp:
|
||||
special_warp_spec TRADE_CENTER, 6, 4, CLUB
|
||||
ColosseumSpec1:
|
||||
ColosseumPlayerWarp:
|
||||
special_warp_spec COLOSSEUM, 3, 4, CLUB
|
||||
ColosseumSpec2:
|
||||
ColosseumFriendWarp:
|
||||
special_warp_spec COLOSSEUM, 6, 4, CLUB
|
||||
|
||||
|
||||
|
@ -2493,9 +2493,9 @@ MoveSelectionMenu:
|
||||
; so it is necessary to put the di ei block to not cause tearing
|
||||
call TextBoxBorder
|
||||
hlcoord 4, 12
|
||||
ld [hl], $7a
|
||||
ld [hl], "─"
|
||||
hlcoord 10, 12
|
||||
ld [hl], $7e
|
||||
ld [hl], "┘"
|
||||
ei
|
||||
hlcoord 6, 13
|
||||
call .writemoves
|
||||
@ -2557,11 +2557,12 @@ MoveSelectionMenu:
|
||||
ld a, [wLinkState]
|
||||
cp LINK_STATE_BATTLING
|
||||
jr z, .matchedkeyspicked
|
||||
; Disable left, right, and START buttons in regular battles.
|
||||
ld a, [wFlags_D733]
|
||||
bit BIT_TEST_BATTLE, a
|
||||
ld b, D_UP | D_DOWN | A_BUTTON | B_BUTTON | SELECT
|
||||
jr z, .matchedkeyspicked
|
||||
ld b, $ff
|
||||
ld b, D_UP | D_DOWN | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON | SELECT | START
|
||||
.matchedkeyspicked
|
||||
ld a, b
|
||||
ld [hli], a ; wMenuWatchedKeys
|
||||
@ -2585,8 +2586,12 @@ SelectMenuItem:
|
||||
call PlaceString
|
||||
jr .select
|
||||
.battleselect
|
||||
; Hide move swap cursor in TestBattle.
|
||||
ld a, [wFlags_D733]
|
||||
bit BIT_TEST_BATTLE, a
|
||||
; This causes PrintMenuItem to not run in TestBattle.
|
||||
; MoveSelectionMenu still draws part of its window, an issue
|
||||
; which did not seem to exist in the Japanese versions.
|
||||
jr nz, .select
|
||||
call PrintMenuItem
|
||||
ld a, [wMenuItemToSwap]
|
||||
@ -2648,8 +2653,9 @@ SelectMenuItem:
|
||||
jr z, .disabled
|
||||
ld a, [wPlayerBattleStatus3]
|
||||
bit 3, a ; transformed
|
||||
jr nz, .dummy ; game freak derp
|
||||
.dummy
|
||||
jr nz, .transformedMoveSelected
|
||||
.transformedMoveSelected ; pointless
|
||||
; Allow moves copied by Transform to be used.
|
||||
ld a, [wCurrentMenuItem]
|
||||
ld hl, wBattleMonMoves
|
||||
ld c, a
|
||||
@ -6085,6 +6091,7 @@ GetCurrentMove:
|
||||
jr .selected
|
||||
.player
|
||||
ld de, wPlayerMoveNum
|
||||
; Apply InitBattleVariables to TestBattle.
|
||||
ld a, [wFlags_D733]
|
||||
bit BIT_TEST_BATTLE, a
|
||||
ld a, [wTestBattlePlayerSelectedMove]
|
||||
@ -6768,12 +6775,12 @@ InitOpponent:
|
||||
|
||||
DetermineWildOpponent:
|
||||
ld a, [wd732]
|
||||
bit 1, a
|
||||
jr z, .notDebug
|
||||
bit BIT_DEBUG_MODE, a
|
||||
jr z, .notDebugMode
|
||||
ldh a, [hJoyHeld]
|
||||
bit BIT_B_BUTTON, a
|
||||
bit BIT_B_BUTTON, a ; disable wild encounters
|
||||
ret nz
|
||||
.notDebug
|
||||
.notDebugMode
|
||||
ld a, [wNumberOfNoRandomBattleStepsLeft]
|
||||
and a
|
||||
ret nz
|
||||
|
@ -20,7 +20,7 @@ InitBattleVariables:
|
||||
ld [hli], a ; wPlayerHPBarColor
|
||||
ld [hl], a ; wEnemyHPBarColor
|
||||
ld hl, wCanEvolveFlags
|
||||
ld b, $3c
|
||||
ld b, wMiscBattleDataEnd - wMiscBattleData
|
||||
.loop
|
||||
ld [hli], a
|
||||
dec b
|
||||
|
@ -56,7 +56,7 @@ IF DEF(_DEBUG)
|
||||
|
||||
; DEBUG
|
||||
ld hl, wd732
|
||||
set 1, [hl]
|
||||
set BIT_DEBUG_MODE, [hl]
|
||||
jp StartNewGameDebug
|
||||
|
||||
DebugBattlePlayerName:
|
||||
@ -72,18 +72,23 @@ ELSE
|
||||
ret
|
||||
ENDC
|
||||
|
||||
TestBattle:
|
||||
TestBattle: ; unreferenced except in _DEBUG
|
||||
.loop
|
||||
call GBPalNormal
|
||||
|
||||
; Don't mess around
|
||||
; with obedience.
|
||||
; Don't mess around with obedience.
|
||||
ld a, 1 << BIT_EARTHBADGE
|
||||
ld [wObtainedBadges], a
|
||||
|
||||
ld hl, wFlags_D733
|
||||
set BIT_TEST_BATTLE, [hl]
|
||||
|
||||
; wNumBagItems and wBagItems are not initialized here,
|
||||
; and their garbage values happen to act as if EXP_ALL
|
||||
; is in the bag at the end of the test battle.
|
||||
; pokeyellow fixes this by initializing them with a
|
||||
; list of items.
|
||||
|
||||
; Reset the party.
|
||||
ld hl, wPartyCount
|
||||
xor a
|
||||
@ -91,8 +96,7 @@ TestBattle:
|
||||
dec a
|
||||
ld [hl], a
|
||||
|
||||
; Give the player a
|
||||
; level 20 Rhydon.
|
||||
; Give the player a level 20 Rhydon.
|
||||
ld a, RHYDON
|
||||
ld [wcf91], a
|
||||
ld a, 20
|
||||
@ -102,15 +106,14 @@ TestBattle:
|
||||
ld [wCurMap], a
|
||||
call AddPartyMon
|
||||
|
||||
; Fight against a
|
||||
; level 20 Rhydon.
|
||||
; Fight against a level 20 Rhydon.
|
||||
ld a, RHYDON
|
||||
ld [wCurOpponent], a
|
||||
|
||||
predef InitOpponent
|
||||
|
||||
; When the battle ends,
|
||||
; do it all again.
|
||||
; When the battle ends, do it all again.
|
||||
; There are some graphical quirks in SGB mode.
|
||||
ld a, 1
|
||||
ld [wUpdateSpritesEnabled], a
|
||||
ldh [hAutoBGTransferEnabled], a
|
||||
|
@ -1,13 +1,5 @@
|
||||
; 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.
|
||||
; "Exeggutor is my favorite. That's because I was always using this character
|
||||
; while I was debugging the program."
|
||||
; http://www.ign.com/articles/2000/02/09/abc-news-pokamon-chat-transcript
|
||||
|
||||
SetIshiharaTeam:
|
||||
ld de, IshiharaTeam
|
||||
SetDebugNewGameParty: ; unreferenced except in _DEBUG
|
||||
ld de, DebugNewGameParty
|
||||
.loop
|
||||
ld a, [de]
|
||||
cp -1
|
||||
@ -20,7 +12,11 @@ SetIshiharaTeam:
|
||||
call AddPartyMon
|
||||
jr .loop
|
||||
|
||||
IshiharaTeam:
|
||||
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
|
||||
@ -35,13 +31,13 @@ IF DEF(_DEBUG)
|
||||
ENDC
|
||||
db -1 ; end
|
||||
|
||||
DebugStart:
|
||||
PrepareNewGameDebug: ; dummy except in _DEBUG
|
||||
IF DEF(_DEBUG)
|
||||
xor a ; PLAYER_PARTY_DATA
|
||||
ld [wMonDataLocation], a
|
||||
|
||||
; Fly anywhere.
|
||||
dec a ; $ff
|
||||
dec a ; $ff (all bits)
|
||||
ld [wTownVisitedFlag], a
|
||||
ld [wTownVisitedFlag + 1], a
|
||||
|
||||
@ -49,7 +45,7 @@ IF DEF(_DEBUG)
|
||||
ld a, ~(1 << BIT_EARTHBADGE)
|
||||
ld [wObtainedBadges], a
|
||||
|
||||
call SetIshiharaTeam
|
||||
call SetDebugNewGameParty
|
||||
|
||||
; Exeggutor gets four HM moves.
|
||||
ld hl, wPartyMon1Moves
|
||||
|
@ -121,7 +121,7 @@ MainMenu:
|
||||
ld [wDestinationMap], a
|
||||
ld hl, wd732
|
||||
set 2, [hl] ; fly warp or dungeon warp
|
||||
call SpecialWarpIn
|
||||
call PrepareForSpecialWarp
|
||||
jp SpecialEnterMap
|
||||
|
||||
InitOptions:
|
||||
@ -268,10 +268,10 @@ LinkMenu:
|
||||
ld c, 50
|
||||
call DelayFrames
|
||||
ld hl, wd732
|
||||
res 1, [hl]
|
||||
res BIT_DEBUG_MODE, [hl]
|
||||
ld a, [wDefaultMap]
|
||||
ld [wDestinationMap], a
|
||||
call SpecialWarpIn
|
||||
call PrepareForSpecialWarp
|
||||
ld c, 20
|
||||
call DelayFrames
|
||||
xor a
|
||||
@ -308,7 +308,12 @@ LinkCanceledText:
|
||||
|
||||
StartNewGame:
|
||||
ld hl, wd732
|
||||
res 1, [hl]
|
||||
; Ensure debug mode is not used when
|
||||
; starting a regular new game.
|
||||
; Debug mode persists in saved games for
|
||||
; both debug and non-debug builds, and is
|
||||
; only reset here by the main menu.
|
||||
res BIT_DEBUG_MODE, [hl]
|
||||
; fallthrough
|
||||
StartNewGameDebug:
|
||||
call OakSpeech
|
||||
|
@ -3,6 +3,11 @@ PrepareOakSpeech:
|
||||
push af
|
||||
ld a, [wOptions]
|
||||
push af
|
||||
; Retrieve BIT_DEBUG_MODE set in DebugMenu for StartNewGameDebug.
|
||||
; BUG: StartNewGame carries over bit 5 from previous save files,
|
||||
; which causes CheckForceBikeOrSurf to not return.
|
||||
; To fix this in debug builds, reset bit 5 here or in StartNewGame.
|
||||
; In non-debug builds, the instructions can be removed.
|
||||
ld a, [wd732]
|
||||
push af
|
||||
ld hl, wPlayerName
|
||||
@ -24,6 +29,7 @@ PrepareOakSpeech:
|
||||
call z, InitOptions
|
||||
; These debug names are used for StartNewGameDebug.
|
||||
; TestBattle uses the debug names from DebugMenu.
|
||||
; A variant of this process is performed in PrepareTitleScreen.
|
||||
ld hl, DebugNewGamePlayerName
|
||||
ld de, wPlayerName
|
||||
ld bc, NAME_LENGTH
|
||||
@ -49,15 +55,15 @@ OakSpeech:
|
||||
ld [wcf91], a
|
||||
ld a, 1
|
||||
ld [wItemQuantity], a
|
||||
call AddItemToInventory ; give one potion
|
||||
call AddItemToInventory
|
||||
ld a, [wDefaultMap]
|
||||
ld [wDestinationMap], a
|
||||
call SpecialWarpIn
|
||||
call PrepareForSpecialWarp
|
||||
xor a
|
||||
ldh [hTileAnimations], a
|
||||
ld a, [wd732]
|
||||
bit 1, a ; possibly a debug mode bit
|
||||
jp nz, .skipChoosingNames
|
||||
bit BIT_DEBUG_MODE, a
|
||||
jp nz, .skipSpeech
|
||||
ld de, ProfOakPic
|
||||
lb bc, BANK(ProfOakPic), $00
|
||||
call IntroDisplayPicCenteredOrUpperRight
|
||||
@ -93,7 +99,7 @@ OakSpeech:
|
||||
ld hl, IntroduceRivalText
|
||||
call PrintText
|
||||
call ChooseRivalName
|
||||
.skipChoosingNames
|
||||
.skipSpeech
|
||||
call GBFadeOutToWhite
|
||||
call ClearScreen
|
||||
ld de, RedPicFront
|
||||
@ -159,6 +165,7 @@ OakSpeechText1:
|
||||
text_end
|
||||
OakSpeechText2:
|
||||
text_far _OakSpeechText2A
|
||||
; BUG: The cry played does not match the sprite displayed.
|
||||
sound_cry_nidorina
|
||||
text_far _OakSpeechText2B
|
||||
text_end
|
||||
|
@ -1,4 +1,4 @@
|
||||
CopyDebugName:
|
||||
CopyDebugName: ; unused
|
||||
ld bc, NAME_LENGTH
|
||||
jp CopyData
|
||||
|
||||
@ -42,10 +42,10 @@ DisplayTitleScreen:
|
||||
ld bc, 5 tiles
|
||||
ld a, BANK(NintendoCopyrightLogoGraphics)
|
||||
call FarCopyData2
|
||||
ld hl, GamefreakLogoGraphics
|
||||
ld hl, GameFreakLogoGraphics
|
||||
ld de, vTitleLogo2 tile (16 + 5)
|
||||
ld bc, 9 tiles
|
||||
ld a, BANK(GamefreakLogoGraphics)
|
||||
ld a, BANK(GameFreakLogoGraphics)
|
||||
call FarCopyData2
|
||||
ld hl, PokemonLogoGraphics
|
||||
ld de, vTitleLogo
|
||||
@ -378,7 +378,7 @@ LoadCopyrightAndTextBoxTiles:
|
||||
LoadCopyrightTiles:
|
||||
ld de, NintendoCopyrightLogoGraphics
|
||||
ld hl, vChars2 tile $60
|
||||
lb bc, BANK(NintendoCopyrightLogoGraphics), (GamefreakLogoGraphicsEnd - NintendoCopyrightLogoGraphics) / $10
|
||||
lb bc, BANK(NintendoCopyrightLogoGraphics), (GameFreakLogoGraphicsEnd - NintendoCopyrightLogoGraphics) / $10
|
||||
call CopyVideoData
|
||||
hlcoord 2, 7
|
||||
ld de, CopyrightTextString
|
||||
|
@ -1,60 +1,60 @@
|
||||
SpecialWarpIn::
|
||||
PrepareForSpecialWarp::
|
||||
call LoadSpecialWarpData
|
||||
predef LoadTilesetHeader
|
||||
ld hl, wd732
|
||||
bit 2, [hl] ; dungeon warp or fly warp?
|
||||
res 2, [hl]
|
||||
jr z, .next
|
||||
; if dungeon warp or fly warp
|
||||
jr z, .debugNewGameWarp
|
||||
ld a, [wDestinationMap]
|
||||
jr .next2
|
||||
jr .next
|
||||
.debugNewGameWarp
|
||||
bit BIT_DEBUG_MODE, [hl]
|
||||
jr z, .setNewGameMatWarp ; apply to StartNewGameDebug only
|
||||
call PrepareNewGameDebug
|
||||
.setNewGameMatWarp
|
||||
; This is called by OakSpeech during StartNewGame and
|
||||
; loads the first warp event for the specified map index.
|
||||
ld a, PALLET_TOWN
|
||||
.next
|
||||
bit 1, [hl]
|
||||
jr z, .next3
|
||||
call DebugStart
|
||||
.next3
|
||||
ld a, 0
|
||||
.next2
|
||||
ld b, a
|
||||
ld a, [wd72d]
|
||||
and a
|
||||
jr nz, .next4
|
||||
jr nz, .next2
|
||||
ld a, b
|
||||
.next4
|
||||
.next2
|
||||
ld hl, wd732
|
||||
bit 4, [hl] ; dungeon warp?
|
||||
bit 4, [hl] ; dungeon warp
|
||||
ret nz
|
||||
; if not dungeon warp
|
||||
ld [wLastMap], a
|
||||
ret
|
||||
|
||||
; gets the map ID, tile block map view pointer, tileset, and coordinates
|
||||
LoadSpecialWarpData:
|
||||
ld a, [wd72d]
|
||||
cp TRADE_CENTER
|
||||
jr nz, .notTradeCenter
|
||||
ld hl, TradeCenterSpec1
|
||||
ld hl, TradeCenterPlayerWarp
|
||||
ldh a, [hSerialConnectionStatus]
|
||||
cp USING_INTERNAL_CLOCK ; which gameboy is clocking determines who is on the left and who is on the right
|
||||
cp USING_INTERNAL_CLOCK
|
||||
jr z, .copyWarpData
|
||||
ld hl, TradeCenterSpec2
|
||||
ld hl, TradeCenterFriendWarp
|
||||
jr .copyWarpData
|
||||
.notTradeCenter
|
||||
cp COLOSSEUM
|
||||
jr nz, .notColosseum
|
||||
ld hl, ColosseumSpec1
|
||||
ld hl, ColosseumPlayerWarp
|
||||
ldh a, [hSerialConnectionStatus]
|
||||
cp USING_INTERNAL_CLOCK
|
||||
jr z, .copyWarpData
|
||||
ld hl, ColosseumSpec2
|
||||
ld hl, ColosseumFriendWarp
|
||||
jr .copyWarpData
|
||||
.notColosseum
|
||||
ld a, [wd732]
|
||||
bit 1, a
|
||||
jr nz, .notFirstMap
|
||||
bit BIT_DEBUG_MODE, a
|
||||
; warp to wLastMap (PALLET_TOWN) for StartNewGameDebug
|
||||
jr nz, .notNewGameWarp
|
||||
bit 2, a
|
||||
jr nz, .notFirstMap
|
||||
ld hl, FirstMapSpec
|
||||
jr nz, .notNewGameWarp
|
||||
ld hl, NewGameWarp
|
||||
.copyWarpData
|
||||
ld de, wCurMap
|
||||
ld c, $7
|
||||
@ -68,18 +68,17 @@ LoadSpecialWarpData:
|
||||
ld [wCurMapTileset], a
|
||||
xor a
|
||||
jr .done
|
||||
.notFirstMap
|
||||
.notNewGameWarp
|
||||
ld a, [wLastMap] ; this value is overwritten before it's ever read
|
||||
ld hl, wd732
|
||||
bit 4, [hl] ; used dungeon warp (jumped down hole/waterfall)?
|
||||
jr nz, .usedDunegonWarp
|
||||
bit 6, [hl] ; return to last pokemon center (or player's house)?
|
||||
bit 4, [hl] ; dungeon warp
|
||||
jr nz, .usedDungeonWarp
|
||||
bit 6, [hl] ; blacked out
|
||||
res 6, [hl]
|
||||
jr z, .otherDestination
|
||||
; return to last pokemon center or player's house
|
||||
ld a, [wLastBlackoutMap]
|
||||
jr .usedFlyWarp
|
||||
.usedDunegonWarp
|
||||
.usedDungeonWarp
|
||||
ld hl, wd72d
|
||||
res 4, [hl]
|
||||
ld a, [wDungeonWarpDestinationMap]
|
||||
@ -142,7 +141,7 @@ LoadSpecialWarpData:
|
||||
.done
|
||||
ld [wYOffsetSinceLastSpecialWarp], a
|
||||
ld [wXOffsetSinceLastSpecialWarp], a
|
||||
ld a, $ff ; the player's coordinates have already been updated using a special warp, so don't use any of the normal warps
|
||||
ld a, -1 ; exclude normal warps
|
||||
ld [wDestinationWarpID], a
|
||||
ret
|
||||
|
||||
|
@ -15,8 +15,8 @@ BattleHudTiles3End:
|
||||
|
||||
NintendoCopyrightLogoGraphics: INCBIN "gfx/splash/copyright.2bpp"
|
||||
|
||||
GamefreakLogoGraphics: INCBIN "gfx/title/gamefreak_inc.2bpp"
|
||||
GamefreakLogoGraphicsEnd:
|
||||
GameFreakLogoGraphics: INCBIN "gfx/title/gamefreak_inc.2bpp"
|
||||
GameFreakLogoGraphicsEnd:
|
||||
|
||||
TextBoxGraphics:: INCBIN "gfx/font/font_extra.2bpp"
|
||||
TextBoxGraphicsEnd::
|
||||
|
@ -50,10 +50,12 @@ RunNPCMovementScript::
|
||||
EndNPCMovementScript::
|
||||
farjp _EndNPCMovementScript
|
||||
|
||||
DebugPressedOrHeldB::
|
||||
DebugPressedOrHeldB:: ; dummy except in _DEBUG
|
||||
; This is used to skip Trainer battles, the
|
||||
; Safari Game step counter, and some NPC scripts.
|
||||
IF DEF(_DEBUG)
|
||||
ld a, [wd732]
|
||||
bit 1, a
|
||||
bit BIT_DEBUG_MODE, a
|
||||
ret z
|
||||
ldh a, [hJoyHeld]
|
||||
bit BIT_B_BUTTON, a
|
||||
|
@ -117,7 +117,7 @@ OverworldLoopLessDelay::
|
||||
predef LoadSAV
|
||||
ld a, [wCurMap]
|
||||
ld [wDestinationMap], a
|
||||
call SpecialWarpIn
|
||||
call PrepareForSpecialWarp
|
||||
ld a, [wCurMap]
|
||||
call SwitchToMapRomBank ; switch to the ROM bank of the current map
|
||||
ld hl, wCurMapTileset
|
||||
@ -762,11 +762,11 @@ HandleBlackOut::
|
||||
call StopMusic
|
||||
ld hl, wd72e
|
||||
res 5, [hl]
|
||||
ld a, BANK(ResetStatusAndHalveMoneyOnBlackout) ; also BANK(SpecialWarpIn) and BANK(SpecialEnterMap)
|
||||
ld a, BANK(ResetStatusAndHalveMoneyOnBlackout) ; also BANK(PrepareForSpecialWarp) and BANK(SpecialEnterMap)
|
||||
ldh [hLoadedROMBank], a
|
||||
ld [MBC1RomBank], a
|
||||
call ResetStatusAndHalveMoneyOnBlackout
|
||||
call SpecialWarpIn
|
||||
call PrepareForSpecialWarp
|
||||
call PlayDefaultMusicFadeOutCurrent
|
||||
jp SpecialEnterMap
|
||||
|
||||
@ -793,10 +793,10 @@ HandleFlyWarpOrDungeonWarp::
|
||||
set 2, [hl] ; fly warp or dungeon warp
|
||||
res 5, [hl] ; forced to ride bike
|
||||
call LeaveMapAnim
|
||||
ld a, BANK(SpecialWarpIn)
|
||||
ld a, BANK(PrepareForSpecialWarp)
|
||||
ldh [hLoadedROMBank], a
|
||||
ld [MBC1RomBank], a
|
||||
call SpecialWarpIn
|
||||
call PrepareForSpecialWarp
|
||||
jp SpecialEnterMap
|
||||
|
||||
LeaveMapAnim::
|
||||
|
@ -111,10 +111,14 @@ NextChar::
|
||||
inc de
|
||||
jp PlaceNextChar
|
||||
|
||||
NullChar::
|
||||
NullChar:: ; unused
|
||||
ld b, h
|
||||
ld c, l
|
||||
pop hl
|
||||
; A "<NULL>" character in a printed string
|
||||
; displays an error message with the current value
|
||||
; of hSpriteIndexOrTextID in decimal format.
|
||||
; This is a debugging leftover.
|
||||
ld de, TextIDErrorText
|
||||
dec de
|
||||
ret
|
||||
|
@ -135,7 +135,9 @@ ENDC
|
||||
ld a, [wSpriteIndex]
|
||||
cp $ff
|
||||
jr nz, .trainerEngaging
|
||||
IF DEF(_DEBUG)
|
||||
.trainerNotEngaging
|
||||
ENDC
|
||||
xor a
|
||||
ld [wSpriteIndex], a
|
||||
ld [wTrainerHeaderFlagBit], a
|
||||
|
19
ram/wram.asm
19
ram/wram.asm
@ -420,6 +420,7 @@ wAddedToParty::
|
||||
; The purpose of these flags is to track which mons levelled up during the
|
||||
; current battle at the end of the battle when evolution occurs.
|
||||
; Other methods of evolution simply set it by calling TryEvolvingMon.
|
||||
wMiscBattleData::
|
||||
wCanEvolveFlags:: db
|
||||
|
||||
wForceEvolution:: db
|
||||
@ -433,8 +434,7 @@ wAILayer2Encouragement:: db
|
||||
wPlayerSubstituteHP:: db
|
||||
wEnemySubstituteHP:: db
|
||||
|
||||
; The player's selected move during a test battle.
|
||||
; InitBattleVariables sets it to the move Pound.
|
||||
; used for TestBattle (unused in non-debug builds)
|
||||
wTestBattlePlayerSelectedMove:: db
|
||||
|
||||
ds 1
|
||||
@ -502,6 +502,7 @@ wEnemyNumHits:: ; db
|
||||
wEnemyBideAccumulatedDamage:: dw
|
||||
|
||||
ds 8
|
||||
wMiscBattleDataEnd::
|
||||
ENDU
|
||||
|
||||
; This union spans 39 bytes.
|
||||
@ -2155,17 +2156,7 @@ wd730:: db
|
||||
ds 1
|
||||
|
||||
; bit 0: play time being counted
|
||||
; bit 1: remnant of debug mode; only set by the debug build.
|
||||
; if it is set:
|
||||
; 1. skips most of Prof. Oak's speech, and uses NINTEN as the player's name and SONY as the rival's name
|
||||
; 2. does not have the player start in floor two of the player's house (instead sending them to [wLastMap])
|
||||
; 3. allows wild battles to be avoided by holding down B
|
||||
; furthermore, in the debug build:
|
||||
; 4. allows trainers to be avoided by holding down B
|
||||
; 5. skips Safari Zone step counter by holding down B
|
||||
; 6. skips the NPC who blocks Route 3 before beating Brock by holding down B
|
||||
; 7. skips Cerulean City rival battle by holding down B
|
||||
; 8. skips Pokémon Tower rival battle by holding down B
|
||||
; bit 1: debug mode (unused and incomplete in non-debug builds)
|
||||
; bit 2: the target warp is a fly warp (bit 3 set or blacked out) or a dungeon warp (bit 4 set)
|
||||
; bit 3: used warp pad, escape rope, dig, teleport, or fly, so the target warp is a "fly warp"
|
||||
; bit 4: jumped into hole (Pokemon Mansion, Seafoam Islands, Victory Road) or went down waterfall (Seafoam Islands), so the target warp is a "dungeon warp"
|
||||
@ -2173,7 +2164,7 @@ wd730:: db
|
||||
; bit 6: map destination is [wLastBlackoutMap] (usually the last used pokemon center, but could be the player's house)
|
||||
wd732:: db
|
||||
|
||||
; bit 0: running a test battle
|
||||
; bit 0: running a test battle (unused in non-debug builds)
|
||||
; bit 1: prevent music from changing when entering new map
|
||||
; bit 2: skip the joypad check in CheckWarpsNoCollision (used for the forced warp down the waterfall in the Seafoam Islands)
|
||||
; bit 3: trainer wants to battle
|
||||
|
@ -32,7 +32,7 @@ HallOfFameResetEventsAndSaveScript:
|
||||
ld hl, wFlags_D733
|
||||
res 1, [hl]
|
||||
inc hl
|
||||
set 0, [hl]
|
||||
set BIT_TEST_BATTLE, [hl] ; debug, unused?
|
||||
xor a ; SCRIPT_*_DEFAULT
|
||||
ld hl, wLoreleisRoomCurScript
|
||||
ld [hli], a ; wLoreleisRoomCurScript
|
||||
|
Loading…
Reference in New Issue
Block a user