mirror of
https://github.com/pret/pokegold-spaceworld.git
synced 2026-03-21 17:45:52 -05:00
Some checks failed
CI / build (push) Has been cancelled
* Split bank $0f into engine/battle/core.asm and engine/overworld/wildmons.asm * Split wildmon probabilities into separate data/wild/probabilities.inc file for consistency
1876 lines
32 KiB
NASM
1876 lines
32 KiB
NASM
INCLUDE "constants.asm"
|
|
|
|
|
|
SECTION "Music engine RAM", WRAM0
|
|
|
|
wMusic::
|
|
|
|
wChannels::
|
|
wChannel1:: channel_struct wChannel1
|
|
wChannel2:: channel_struct wChannel2
|
|
wChannel3:: channel_struct wChannel3
|
|
wChannel4:: channel_struct wChannel4
|
|
|
|
wSFXChannels::
|
|
wChannel5:: channel_struct wChannel5
|
|
wChannel6:: channel_struct wChannel6
|
|
wChannel7:: channel_struct wChannel7
|
|
wChannel8:: channel_struct wChannel8
|
|
|
|
ds 1
|
|
|
|
wCurTrackDuty:: db
|
|
wCurTrackIntensity:: db
|
|
wCurTrackFrequency:: dw
|
|
wSoundLength:: db
|
|
wCurNoteDuration:: db
|
|
wCurMusicByte:: db
|
|
|
|
wCurChannel:: db
|
|
wVolume:: db
|
|
wSoundOutput::
|
|
; corresponds to $ff25
|
|
; bit 4-7: ch1-4 so2 on/off
|
|
; bit 0-3: ch1-4 so1 on/off
|
|
db
|
|
|
|
wPitchSweep:: db
|
|
|
|
wMusicID:: dw
|
|
wMusicBank:: db
|
|
|
|
wNoiseSampleAddress:: dw
|
|
wNoiseSampleDelay:: db
|
|
wc1a2:: db
|
|
wNoiseSampleSet:: db
|
|
|
|
wLowHealthAlarm::
|
|
; bit 7: on/off
|
|
; bit 4: pitch
|
|
; bit 0-3: counter
|
|
db
|
|
|
|
wMusicFade::
|
|
; fades volume over x frames
|
|
; bit 7: fade in/out
|
|
; bit 0-6: number of frames for each volume level
|
|
; $00 = none (default)
|
|
db
|
|
wMusicFadeCount:: db
|
|
wMusicFadeID:: dw
|
|
|
|
wSweepingFadeIndex:: db
|
|
wSweepingFadeCounter:: db
|
|
|
|
wIncrementTempo: dw
|
|
wMapMusic:: db
|
|
wCryPitch:: dw
|
|
wCryLength:: dw
|
|
wLastVolume:: db
|
|
wc1b3:: db
|
|
wSFXPriority:: db
|
|
wChannel1JumpCondition:: db
|
|
wChannel2JumpCondition:: db
|
|
wChannel3JumpCondition:: db
|
|
wChannel4JumpCondition:: db
|
|
|
|
wStereoPanningMask:: db
|
|
|
|
wCryTracks:: db
|
|
; either wChannelsEnd or wMusicEnd, unsure
|
|
|
|
wSFXDuration:: db
|
|
|
|
wMusicInitEnd::
|
|
|
|
|
|
SECTION "OAM Buffer", WRAM0
|
|
|
|
wShadowOAM::
|
|
; wShadowOAMSprite00 - wShadowOAMSprite39
|
|
for n, NUM_SPRITE_OAM_STRUCTS
|
|
wShadowOAMSprite{02d:n}:: sprite_oam_struct wShadowOAMSprite{02d:n}
|
|
endr
|
|
wShadowOAMEnd::
|
|
|
|
wTileMap::
|
|
ds SCREEN_HEIGHT * SCREEN_WIDTH
|
|
|
|
UNION
|
|
|
|
wTileMapBackup::
|
|
ds SCREEN_HEIGHT * SCREEN_WIDTH
|
|
|
|
NEXTU
|
|
|
|
wc408:: db
|
|
wc409:: db
|
|
|
|
NEXTU
|
|
wSpriteAnimData::
|
|
; wSpriteAnimDict pairs keys with values
|
|
; keys: SPRITE_ANIM_DICT_* indexes (taken from SpriteAnimObjects)
|
|
; values: vTiles0 offsets
|
|
wSpriteAnimDict::
|
|
ds NUM_SPRITEANIMDICT_ENTRIES * 2
|
|
|
|
wSpriteAnimationStructs::
|
|
; field 0: index
|
|
; fields 1-3: loaded from SpriteAnimSeqData
|
|
wSpriteAnim1:: sprite_anim_struct wSpriteAnim1
|
|
wSpriteAnim2:: sprite_anim_struct wSpriteAnim2
|
|
wSpriteAnim3:: sprite_anim_struct wSpriteAnim3
|
|
wSpriteAnim4:: sprite_anim_struct wSpriteAnim4
|
|
wSpriteAnim5:: sprite_anim_struct wSpriteAnim5
|
|
wSpriteAnim6:: sprite_anim_struct wSpriteAnim6
|
|
wSpriteAnim7:: sprite_anim_struct wSpriteAnim7
|
|
wSpriteAnim8:: sprite_anim_struct wSpriteAnim8
|
|
wSpriteAnim9:: sprite_anim_struct wSpriteAnim9
|
|
wSpriteAnim10:: sprite_anim_struct wSpriteAnim10
|
|
wSpriteAnimationStructsEnd::
|
|
|
|
wSpriteAnimCount:: db
|
|
NEXTU
|
|
|
|
ds 1
|
|
|
|
wClockDialogArrowBlinkCounter:: ds 1
|
|
|
|
|
|
wc40a:: ds 1
|
|
|
|
; Monster or Trainer test?
|
|
wWhichPicTest::
|
|
db
|
|
|
|
|
|
wc40c:: ds 1
|
|
wc40d:: ds 1
|
|
wc40e:: ds 1
|
|
NEXTU
|
|
wOptionsMenuCursorX:: db
|
|
wOptionsMenuCursorY:: db
|
|
wOptionsTextSpeedCursorX:: db
|
|
wOptionsBattleAnimCursorX:: db
|
|
wOptionsBattleStyleCursorX:: db
|
|
wOptionsAudioSettingsCursorX:: db
|
|
wOptionsBottomRowCursorX:: db
|
|
NEXTU
|
|
ds 7
|
|
|
|
ds 3
|
|
|
|
wDayOfWeekBuffer:: db
|
|
|
|
ds 7
|
|
|
|
wc41a:: db
|
|
ds 1
|
|
wHourBuffer:: db
|
|
ds 9
|
|
wMinuteBuffer:: db
|
|
ds 150
|
|
|
|
UNION
|
|
wCurSpriteOAMAddr:: dw
|
|
NEXTU
|
|
ds 1
|
|
wCurIcon:: db
|
|
ENDU
|
|
wCurIconTile:: db
|
|
|
|
UNION
|
|
wCurSpriteOAMFlags:: db
|
|
NEXTU
|
|
wSpriteAnimAddrBackup:: dw
|
|
ENDU
|
|
|
|
wCurAnimVTile:: db
|
|
|
|
wCurAnimXCoord:: db
|
|
wCurAnimYCoord:: db
|
|
wCurAnimXOffset:: db
|
|
wCurAnimYOffset:: db
|
|
|
|
wGlobalAnimYOffset:: db
|
|
wGlobalAnimXOffset:: db
|
|
|
|
wSpriteAnimDataEnd::
|
|
|
|
ds 7
|
|
|
|
wNamingScreenDestinationPointer:: dw
|
|
wNamingScreenCurNameLength:: db
|
|
wNamingScreenMaxNameLength:: db
|
|
wNamingScreenType:: db
|
|
wNamingScreenCursorObjectPointer:: dw
|
|
wNamingScreenLastCharacter:: db
|
|
wNamingScreenStringEntryCoordY:: db
|
|
wNamingScreenStringEntryCoordX:: db
|
|
|
|
NEXTU
|
|
|
|
ds 200
|
|
|
|
wSlots::
|
|
wReel1:: slot_reel wReel1
|
|
wReel2:: slot_reel wReel2
|
|
wReel3:: slot_reel wReel3
|
|
wReel1Stopped:: ds 3
|
|
wReel2Stopped:: ds 3
|
|
wReel3Stopped:: ds 3
|
|
wSlotBias:: db
|
|
wSlotBet:: db
|
|
wFirstTwoReelsMatching:: db
|
|
wFirstTwoReelsMatchingSevens:: db
|
|
wSlotMatched:: db
|
|
wCurReelStopped:: ds 3
|
|
wPayout:: dw
|
|
wCurReelXCoord:: db
|
|
wCurReelYCoord:: db
|
|
ds 2
|
|
wSlotBuildingMatch:: db
|
|
wSlotsDataEnd::
|
|
ds 2
|
|
wc51a:: ds 1
|
|
ds 25
|
|
wSlotsEnd:: db
|
|
|
|
NEXTU
|
|
|
|
ds 200
|
|
|
|
wMemoryGameCards:: ds 9 * 5
|
|
wMemoryGameCardsEnd::
|
|
wMemoryGameLastCardPicked:: db
|
|
wMemoryGameCard1:: db
|
|
wMemoryGameCard2:: db
|
|
wMemoryGameCard1Location:: db
|
|
wMemoryGameCard2Location:: db
|
|
wMemoryGameNumberTriesRemaining:: db
|
|
wMemoryGameLastMatches:: ds 5
|
|
wMemoryGameCounter:: db
|
|
wMemoryGameNumCardsMatched:: db
|
|
|
|
NEXTU
|
|
|
|
ds 200
|
|
|
|
wPokedexOrder:: ds $100
|
|
wPokedexOrderEnd::
|
|
|
|
wDexListingScrollOffset:: db
|
|
wPokedexHandCursorPosIndex:: db
|
|
wCurDexMode:: db
|
|
wPokedexInputFlags:: db
|
|
wPokedexHandCursorStructAddress:: dw
|
|
|
|
wPokedexCursorStructAddress:: dw
|
|
wPokedexSlowpokeAnimStructAddress:: dw
|
|
|
|
wDexListingEnd:: db
|
|
wDexTempCursorY:: db
|
|
wDexTempListingScrollOffset:: db
|
|
wDexListingCursor:: db
|
|
|
|
wDexUnownCount::
|
|
wDexSearchMonType1:: db
|
|
|
|
wDexUnownModeListLength::
|
|
wDexSearchMonType2:: db
|
|
wDexArrowCursorPosIndex:: db
|
|
|
|
wDexCurUnownIndex::
|
|
wDexConvertedMonType:: db
|
|
|
|
wDexSearchResultCount:: db
|
|
wc5e3:: db
|
|
wc5e4:: db
|
|
wc5e5:: db
|
|
wc5e6:: db
|
|
wDexPlaySlowpokeAnimation:: db
|
|
|
|
ENDU
|
|
|
|
SECTION "Map Buffer", WRAM0
|
|
|
|
wMapBuffer::
|
|
wMapScriptNumber:: db
|
|
wMapScriptNumberLocation:: dw
|
|
wMapScriptPointerLocation:: dw ; TODO
|
|
; setting bit 7 seems to disable overworld updates and player control?
|
|
; setting bit 6 disables map connections
|
|
wOverworldFlags:: db
|
|
ds 18
|
|
wMapBufferEnd::
|
|
|
|
|
|
UNION
|
|
|
|
wc600::
|
|
wOverworldMapBlocks:: ds 1300
|
|
wOverworldMapBlocksEnd::
|
|
|
|
NEXTU
|
|
|
|
wLYOverrides:: ds SCREEN_HEIGHT_PX
|
|
wLYOverridesEnd:: db
|
|
ds 15
|
|
wLYOverrides2:: ds SCREEN_HEIGHT_PX
|
|
wLYOverrides2End::
|
|
|
|
NEXTU
|
|
|
|
; Pikachu minigame
|
|
|
|
wPikachuMinigamePikachuObjectPointer:: ds 2
|
|
wPikachuMinigamePikachuTailObjectPointer:: ds 2
|
|
wPikachuMinigamePikachuNextAnim:: ds 1
|
|
|
|
wPikachuMinigameControlEnable:: ds 1
|
|
|
|
wc606:: ds 1 ; written to, but is this read from?
|
|
|
|
wPikachuMinigamePikachuYOffset:: ds 1
|
|
wPikachuMinigameNoteTimer:: ds 1
|
|
wPikachuMinigameScore:: ds 2
|
|
wPikachuMinigameNoteCounter:: ds 2 ; not used for anything meaningful?
|
|
|
|
wPikachuMinigameSpawnTypeIndex:: ds 1
|
|
wPikachuMinigameSpawnDataIndex:: ds 1
|
|
wPikachuMinigameScoreModifier:: ds 1
|
|
|
|
wPikachuMinigameNoteCaught:: ds 1
|
|
|
|
; Time keeping
|
|
wPikachuMinigameTimeFrames:: ds 1
|
|
wPikachuMinigameTimeSeconds:: ds 1
|
|
|
|
; are these two used?
|
|
wc613:: ds 1
|
|
wc614:: ds 1
|
|
|
|
wPikachuMinigameRedrawTimer:: ds 1
|
|
wc616:: ds 1
|
|
wPikachuMinigameScrollSpeed:: ds 1
|
|
|
|
wPikachuMinigameColumnFlags:: ds 1
|
|
wPikachuMinigameSavedColumnPointer:: ds 2
|
|
wPikachuMinigameColumnPointer:: ds 2
|
|
|
|
wPikachuMinigameRepeatColumnCounter:: ds 1
|
|
wPikachuMinigameRepeatColumnCounter2:: ds 1
|
|
|
|
wPikachuMinigameSceneTimer:: ds 1
|
|
|
|
wPikachuMinigameJumptableIndex:: ds 1
|
|
|
|
wPikachuMinigameBGMapPointer:: ds 2
|
|
wPikachuMinigameTilemapPointer:: ds 2
|
|
wPikachuMinigameTilesPointer:: ds 2
|
|
|
|
wPikachuMinigameColumnBuffer:: ds 16
|
|
|
|
NEXTU
|
|
|
|
wPicrossCursorSpritePointer:: ds 2
|
|
wPicrossCurrentGridNumber:: ds 1
|
|
wPicrossCurrentCellNumber:: ds 1
|
|
wPicrossCurrentCellType:: ds 1
|
|
wPicrossJoypadAction:: ds 1
|
|
wPicrossJoyStateBuffer:: ds 1
|
|
|
|
wPicrossCursorMovementDelay:: ds 1
|
|
wPicrossMarkedCells:: ds 4*4*4*4
|
|
ds 1
|
|
wPicrossLayoutBuffer:: ds $20
|
|
wPicrossLayoutBuffer2:: ds $20 - 1
|
|
wPicrossBitmap:: ds 4*4*4*4
|
|
wPicrossBase2bppPointer:: ds 2
|
|
wPicrossBaseGFXPointer:: ds 2
|
|
wPicrossDrawingRoutineCounter:: ds 1
|
|
ds 11
|
|
wPicrossNumbersBuffer:: ds 4*4*4*4
|
|
wPicrossRowGFX2bppBuffer:: ds 144
|
|
ds 112
|
|
wPicrossErrorCheck:: ds 1
|
|
ds 1
|
|
NEXTU
|
|
; Battle-related
|
|
ds $140
|
|
|
|
wBattleAnimTileDict::
|
|
; wBattleAnimTileDict pairs keys with values
|
|
; keys: BATTLE_ANIM_GFX_* indexes (taken from anim_*gfx arguments)
|
|
; values: vTiles0 offsets
|
|
ds NUM_BATTLEANIMTILEDICT_ENTRIES * 2
|
|
|
|
wActiveAnimObjects::
|
|
; wAnimObject1 - wAnimObject10
|
|
for n, 1, NUM_BATTLE_ANIM_STRUCTS + 1
|
|
wAnimObject{d:n}:: battle_anim_struct wAnimObject{d:n}
|
|
endr
|
|
|
|
wActiveBGEffects::
|
|
wBGEffect1:: battle_bg_effect wBGEffect1
|
|
wBGEffect2:: battle_bg_effect wBGEffect2
|
|
wBGEffect3:: battle_bg_effect wBGEffect3
|
|
wBGEffect4:: battle_bg_effect wBGEffect4
|
|
wBGEffect5:: battle_bg_effect wBGEffect5
|
|
wActiveBGEffectsEnd::
|
|
|
|
wLastAnimObjectIndex:: db
|
|
|
|
wBattleAnimFlags:: db
|
|
wBattleAnimAddress:: dw
|
|
wBattleAnimDuration:: db
|
|
wBattleAnimParent:: dw
|
|
wBattleAnimLoops:: db
|
|
wBattleAnimVar:: db
|
|
wBattleAnimByte:: db
|
|
wBattleAnimOAMPointerLo:: db
|
|
db
|
|
|
|
UNION
|
|
wBattleObjectTempID:: db
|
|
wBattleObjectTempXCoord:: db
|
|
wBattleObjectTempYCoord:: db
|
|
wBattleObjectTempParam:: db
|
|
|
|
NEXTU
|
|
wBattleBGEffectTempID:: db
|
|
wBattleBGEffectTempJumptableIndex:: db
|
|
wBattleBGEffectTempTurn:: db
|
|
wBattleBGEffectTempParam:: db
|
|
|
|
NEXTU
|
|
wBattleSineWaveTempProgress:: db
|
|
wBattleSineWaveTempOffset:: db
|
|
wBattleSineWaveTempAmplitude:: db
|
|
wBattleSineWaveTempTimer:: db
|
|
|
|
NEXTU
|
|
wBattleAnimTempOAMFlags:: db
|
|
wBattleAnimTempFixY:: db
|
|
wBattleAnimTempTileID:: db
|
|
wBattleAnimTempXCoord:: db
|
|
wBattleAnimTempYCoord:: db
|
|
wBattleAnimTempXOffset:: db
|
|
wBattleAnimTempYOffset:: db
|
|
wBattleAnimTempFrameOAMFlags:: db
|
|
wBattleAnimTempPalette:: db
|
|
wBattleAnimEnd::
|
|
|
|
NEXTU
|
|
wBattleAnimGFXTempTileID::
|
|
wBattleAnimGFXTempPicHeight:: db
|
|
wBattlePicResizeTempPointer:: dw
|
|
|
|
ENDU
|
|
|
|
ds 50
|
|
wActualBattleAnimEnd::
|
|
|
|
ds $1a3 ; TODO
|
|
|
|
wBattle::
|
|
wEnemyMoveStruct:: move_struct wEnemyMoveStruct
|
|
wPlayerMoveStruct:: move_struct wPlayerMoveStruct
|
|
|
|
wEnemyMonNickname:: ds 6
|
|
wBattleMonNickname:: ds 6
|
|
|
|
UNION
|
|
; battle mon
|
|
wBattleMon:: battle_struct wBattleMon
|
|
|
|
NEXTU
|
|
; intro water/grass/fire cutscene data
|
|
ds 14
|
|
wIntroJumptableIndex:: db
|
|
wIntroBGMapPointer:: ds 2
|
|
wIntroTilemapPointer:: ds 2
|
|
wIntroTilesPointer:: ds 2
|
|
wIntroFrameCounter1:: ds 1
|
|
wIntroFrameCounter2:: ds 1
|
|
wIntroSpriteStateFlag:: ds 1
|
|
ENDU
|
|
|
|
wTrainerClass:: db
|
|
wEnemyTrainerGraphicsPointer:: dw
|
|
ds 2
|
|
wEnemyTrainerBaseReward:: db
|
|
ds 3
|
|
wOTClassName:: ds TRAINER_CLASS_NAME_LENGTH
|
|
wCurOTMon:: db
|
|
|
|
wBattleParticipantsNotFainted::
|
|
; Bit array. Bits 0 - 5 correspond to party members 1 - 6.
|
|
; Bit set if the mon appears in battle.
|
|
; Bit cleared if the mon faints.
|
|
; Backed up if the enemy switches.
|
|
; All bits cleared if the enemy faints.
|
|
db
|
|
|
|
wTypeModifier::
|
|
; >10: super-effective
|
|
; 10: normal
|
|
; <10: not very effective
|
|
; bit 7: stab
|
|
db
|
|
|
|
wCriticalHit::
|
|
; 0 if not critical
|
|
; 1 for a critical hit
|
|
; 2 for a OHKO
|
|
db
|
|
|
|
wAttackMissed::
|
|
; nonzero for a miss
|
|
wca3a:: db
|
|
|
|
wPlayerSubStatus1:: db
|
|
wPlayerSubStatus2:: db
|
|
wPlayerSubStatus3:: db
|
|
wPlayerSubStatus4:: db
|
|
wPlayerSubStatus5:: db
|
|
|
|
wEnemySubStatus1:: db
|
|
wEnemySubStatus2:: db
|
|
wEnemySubStatus3:: db
|
|
wEnemySubStatus4:: db
|
|
wEnemySubStatus5:: db
|
|
|
|
wPlayerRolloutCount:: db
|
|
wPlayerConfuseCount:: db
|
|
wPlayerToxicCount:: db
|
|
wPlayerDisableCount:: db
|
|
wPlayerEncoreCount:: db
|
|
wPlayerPerishCount:: db
|
|
wPlayerFuryCutterCount:: db
|
|
|
|
ds 1
|
|
|
|
wEnemyRolloutCount:: db
|
|
wEnemyConfuseCount:: db
|
|
wEnemyToxicCount:: db
|
|
wEnemyDisableCount:: db
|
|
wEnemyEncoreCount:: db
|
|
wEnemyPerishCount:: db
|
|
wEnemyFuryCutterCount:: db
|
|
|
|
ds 1
|
|
|
|
|
|
wPlayerDamageTaken:: dw
|
|
wEnemyDamageTaken:: dw
|
|
|
|
UNION
|
|
wBattleReward:: ds 3
|
|
NEXTU
|
|
wPicrossAnimateDust:: ds 1
|
|
ENDU
|
|
|
|
wBattleAnimParam::
|
|
wca5c:: ds 1
|
|
|
|
wBattleScriptBuffer:: ds 30
|
|
|
|
wBattleScriptBufferAddress:: dw
|
|
wTurnEnded:: db
|
|
|
|
ds $15
|
|
|
|
wPlayerStats::
|
|
wPlayerAttack:: dw
|
|
wPlayerDefense:: dw
|
|
wPlayerSpeed:: dw
|
|
wPlayerSpAtk:: dw
|
|
wPlayerSpDef:: dw
|
|
ds 1
|
|
|
|
wEnemyStats::
|
|
wEnemyAttack:: dw
|
|
wEnemyDefense:: dw
|
|
wEnemySpeed:: dw
|
|
wEnemySpAtk:: dw
|
|
wEnemySpDef:: dw
|
|
ds 1
|
|
|
|
wPlayerStatLevels::
|
|
wPlayerAtkLevel::
|
|
wcaa9:: ds 1
|
|
|
|
wPlayerDefLevel:: db
|
|
wPlayerSpdLevel:: db
|
|
wPlayerSAtkLevel:: db
|
|
wPlayerSDefLevel:: db
|
|
wPlayerAccLevel:: db
|
|
wPlayerEvaLevel:: db
|
|
|
|
ds 1
|
|
|
|
|
|
wEnemyStatLevels::
|
|
wEnemyAtkLevel::
|
|
wcab1:: ds 1
|
|
|
|
wEnemyDefLevel:: db
|
|
wEnemySpdLevel:: db
|
|
wEnemySAtkLevel:: db
|
|
wEnemySDefLevel:: db
|
|
wEnemyAccLevel:: db
|
|
wEnemyEvaLevel:: db
|
|
|
|
ds 1
|
|
|
|
wForceEvolution:: db
|
|
|
|
wEnemyTurnsTaken:: db
|
|
|
|
ds 1
|
|
|
|
wPlayerSubstituteHP:: ds 1
|
|
wEnemySubstituteHP:: ds 1
|
|
wPlayerDebugSelectedMove:: ds 1
|
|
|
|
ds 1
|
|
|
|
wMoveSelectionMenuType:: ds 1
|
|
|
|
wCurPlayerMove:: db
|
|
wCurEnemyMove:: db
|
|
|
|
wLinkBattleRNCount:: db
|
|
|
|
wEnemyItemState:: db
|
|
|
|
ds 2
|
|
|
|
wCurEnemyMoveNum:: db
|
|
wEnemyHPAtTimeOfPlayerSwitch:: dw
|
|
|
|
UNION
|
|
wPayDayMoney:: ds 3
|
|
NEXTU
|
|
wcaca:: ds 1
|
|
wcacb:: ds 1
|
|
wcacc:: ds 1
|
|
ENDU
|
|
|
|
wUnused_SafariEscapeFactor:: db
|
|
wUnused_SafariBaitFactor:: db
|
|
|
|
ds 1
|
|
|
|
wEnemyBackupDVs:: dw
|
|
|
|
wAlreadyDisobeyed:: db
|
|
|
|
wDisabledMove:: db
|
|
wEnemyDisabledMove:: db
|
|
wWhichMonFaintedFirst:: db
|
|
|
|
wLastPlayerCounterMove:: db
|
|
wLastEnemyCounterMove:: db
|
|
|
|
wEnemyMinimized:: db
|
|
wAlreadyFailed:: db
|
|
|
|
wBattleParticipantsIncludingFainted:: db
|
|
wBattleLowHealthAlarm:: db
|
|
wPlayerMinimized:: db
|
|
|
|
wPlayerScreens:: db
|
|
wEnemyScreens:: db
|
|
|
|
wPlayerSafeguardCount:: db
|
|
wEnemySafeguardCount:: db
|
|
|
|
; There's got to be a better name for this...
|
|
wMonSGBPaletteFlagsBuffer:: db
|
|
|
|
wBattleWeather:: db
|
|
wWeatherCount:: db
|
|
|
|
ENDU
|
|
|
|
|
|
|
|
SECTION "CB14", WRAM0[$CB14]
|
|
wBattleEnd::
|
|
|
|
UNION
|
|
wRedrawRowOrColumnSrcTiles::
|
|
; the tiles of the row or column to be redrawn by RedrawRowOrColumn
|
|
ds SCREEN_WIDTH * 2
|
|
NEXTU
|
|
wRedrawFlashlightDst0:: dw
|
|
wRedrawFlashlightSrc0:: dw
|
|
wRedrawFlashlightBlackDst0:: dw
|
|
wRedrawFlashlightDst1:: dw
|
|
wRedrawFlashlightSrc1:: dw
|
|
wRedrawFlashlightBlackDst1:: dw
|
|
wRedrawFlashlightWidthHeight:: db
|
|
; width or height of flashlight redraw region
|
|
; in units of two tiles (people event meta tile)
|
|
ENDU
|
|
|
|
SECTION "CB56", WRAM0[$CB4C]
|
|
UNION
|
|
wOtherPlayerLinkMode:: db
|
|
wOtherPlayerLinkAction::
|
|
wBattleAction:: db
|
|
ds 3 ; TODO
|
|
|
|
wPlayerLinkAction:: db
|
|
ds 4 ; TODO
|
|
NEXTU
|
|
wLinkReceivedSyncBuffer:: ds 5
|
|
wLinkPlayerSyncBuffer:: ds 5
|
|
ENDU
|
|
|
|
wLinkTimeoutFrames:: dw
|
|
wLinkByteTimeout:: dw
|
|
wMonType:: db
|
|
|
|
wSelectedItem::
|
|
wCurSpecies:: db
|
|
wNamedObjectTypeBuffer:: db
|
|
|
|
SECTION "CB5E", WRAM0[$CB5E]
|
|
wJumptableIndex:: db
|
|
|
|
wSlotsDelay::
|
|
wMemoryGameCardChoice::
|
|
wFlyDestination::
|
|
wIntroSceneFrameCounter::
|
|
wTrainerGearPointerPosition::
|
|
wPokedexSlowpokeNumSearchEntries::
|
|
wNestIconBlinkCounter::
|
|
wBattleTransitionCounter:: db
|
|
|
|
UNION
|
|
wBattleTransitionSineWaveOffset::
|
|
wBattleTransitionSpinQuadrant::
|
|
wIntroSceneTimer::
|
|
wTrainerGearCard::
|
|
wcb60:: ds 1
|
|
|
|
wTrainerGearRadioIndex::
|
|
wSlotReelIconDelay:: db
|
|
NEXTU
|
|
wFlyIconAnimStructPointer:: dw
|
|
ENDU
|
|
|
|
wVBCopySize:: ds 1
|
|
wVBCopySrc:: ds 2
|
|
wVBCopyDst:: ds 2
|
|
wVBCopyDoubleSize:: ds 1
|
|
wVBCopyDoubleSrc:: ds 2
|
|
wVBCopyDoubleDst:: ds 2
|
|
wPlayerStepVectorX:: db
|
|
wPlayerStepVectorY:: db
|
|
wPlayerStepFlags:: db
|
|
wPlayerStepDirection:: db
|
|
|
|
SECTION "CB71", WRAM0[$CB70]
|
|
|
|
wQueuedMinorObjectGFX:: db
|
|
|
|
wVBCopyFarSize:: ds 1
|
|
wVBCopyFarSrc:: ds 2
|
|
wVBCopyFarDst:: ds 2
|
|
wVBCopyFarSrcBank:: ds 1
|
|
wPlayerMovement:: db
|
|
wMovementObject:: db
|
|
ptrba wMovementData
|
|
|
|
wIndexedMovement2Pointer:: dw
|
|
|
|
SECTION "Collision buffer", WRAM0[$CB90]
|
|
|
|
wTileDown:: db
|
|
wTileUp:: db
|
|
wTileLeft:: db
|
|
wTileRight:: db
|
|
|
|
wScreenSave::
|
|
ds 6 * 5
|
|
|
|
SECTION "CBB2", WRAM0[$CBB2]
|
|
wToolgearBuffer::
|
|
ds $40
|
|
|
|
SECTION "CBF2", WRAM0[$CBF2]
|
|
|
|
wWindowData::
|
|
wWindowStackPointer:: dw
|
|
wMenuJoypad:: db
|
|
wMenuSelection:: db
|
|
wMenuSelectionQuantity:: db
|
|
wFieldDebugPage::
|
|
wWhichIndexSet::
|
|
wActiveBackpackPocket:: db
|
|
wScrollingMenuCursorPosition:: db
|
|
wWindowStackSize:: db
|
|
|
|
SECTION "CC09", WRAM0[$CC02]
|
|
|
|
wMenuDataHeader::
|
|
wMenuFlags:: db
|
|
wMenuBorderTopCoord:: db
|
|
wMenuBorderLeftCoord:: db
|
|
wMenuBorderBottomCoord:: db
|
|
wMenuBorderRightCoord:: db
|
|
wMenuDataPointer:: dw
|
|
wMenuCursorPosition:: db
|
|
ds 8
|
|
wMenuDataHeaderEnd::
|
|
|
|
wMenuData::
|
|
wMenuDataFlags:: db
|
|
|
|
UNION
|
|
wMenuDataItems:: db
|
|
wMenuDataIndicesPointer:: dw
|
|
wMenuDataDisplayFunctionPointer:: dw
|
|
wMenuDataPointerTableAddr:: dw
|
|
wMenuDataEnd::
|
|
ds 2
|
|
NEXTU
|
|
; 2D Menu
|
|
wMenuData_2DMenuDimensions:: db
|
|
wMenuData_2DMenuSpacing:: db
|
|
wMenuData_2DMenuItemStringsBank:: db
|
|
wMenuData_2DMenuItemStringsAddr:: dw
|
|
wMenuData_2DMenuFunctionBank:: db
|
|
wMenuData_2DMenuFunctionAddr:: dw
|
|
NEXTU
|
|
wMenuData_ScrollingMenuHeight:: db
|
|
wMenuData_ScrollingMenuWidth:: db
|
|
wMenuData_ScrollingMenuItemFormat:: db
|
|
wMenuData_ItemsPointerBank:: db
|
|
wMenuData_ItemsPointerAddr:: dw
|
|
wMenuData_ScrollingMenuFunction1:: ds 3
|
|
wMenuData_ScrollingMenuFunction2:: ds 3
|
|
wMenuData_ScrollingMenuFunction3:: ds 3
|
|
ENDU
|
|
|
|
wMoreMenuData::
|
|
|
|
w2DMenuCursorInitY:: db
|
|
w2DMenuCursorInitX:: db
|
|
w2DMenuNumRows:: db
|
|
w2DMenuNumCols:: db
|
|
w2DMenuFlags1::
|
|
; bit 7: Disable checking of wMenuJoypadFilter
|
|
; bit 6: Enable sprite animations
|
|
; bit 5: Wrap around vertically
|
|
; bit 4: Wrap around horizontally
|
|
; bit 3: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 5 is disabled and we tried to go too far down
|
|
; bit 2: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 5 is disabled and we tried to go too far up
|
|
; bit 1: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 4 is disabled and we tried to go too far left
|
|
; bit 0: Set bit 7 in w2DMenuFlags2 and exit the loop if bit 4 is disabled and we tried to go too far right
|
|
db
|
|
w2DMenuFlags2:: db
|
|
w2DMenuCursorOffsets:: db
|
|
wMenuJoypadFilter:: db
|
|
w2DMenuDataEnd::
|
|
|
|
wMenuCursorY:: db
|
|
wMenuCursorX:: db
|
|
wCursorOffCharacter:: db
|
|
wCursorCurrentTile:: dw
|
|
|
|
SECTION "CC32", WRAM0[$CC32] ; Please merge when more is disassembled
|
|
wVBlankJoyFrameCounter: db
|
|
|
|
wVBlankOccurred: db
|
|
wLastSpawnMapGroup: db
|
|
wLastSpawnMapNumber: db
|
|
|
|
ds 2
|
|
|
|
;Controls what type of opening (fire/notes) you get.
|
|
wcc38::
|
|
wTitleSequenceOpeningType::
|
|
db
|
|
|
|
wDefaultSpawnPoint::
|
|
db
|
|
|
|
|
|
UNION
|
|
|
|
wcc3a::
|
|
wChargeMoveNum::
|
|
wPrevPartyLevel::
|
|
wRodResponse_Old::
|
|
wPokeFluteCuredSleep::
|
|
wTempRestorePPItem:: db
|
|
|
|
NEXTU
|
|
|
|
wMovementBufferCount:: db
|
|
wMovementBufferObject:: db
|
|
|
|
ptrba wMovementBufferPointer
|
|
|
|
wMovementBuffer::
|
|
ds 55
|
|
|
|
NEXTU
|
|
|
|
wSpriteViewerMenuStartingItem:: db
|
|
|
|
ds 2
|
|
|
|
wSpriteViewerSavedMenuPointerY:: db
|
|
wSpriteViewerJumptableIndex:: db
|
|
|
|
NEXTU
|
|
; trainer HUD data
|
|
ds 1
|
|
wPlaceBallsDirection:: db
|
|
wTrainerHUDTiles:: ds 4
|
|
|
|
NEXTU
|
|
; switching items in pack
|
|
wSwitchItemBuffer:: ds 2
|
|
|
|
NEXTU
|
|
|
|
wBattleMenuRows:: db
|
|
wBattleMenuColumns:: db
|
|
|
|
NEXTU
|
|
|
|
wTempBoxName:: ds BOX_NAME_LENGTH
|
|
|
|
ENDU
|
|
|
|
SECTION "CC9A", WRAM0[$CC9A]
|
|
|
|
wSkatingDirection:: db
|
|
wCompanionCollisionFrameCounter:: db
|
|
|
|
wObjectMasks::
|
|
ds NUM_OBJECTS
|
|
|
|
|
|
wSpriteCurPosX:: ds 1
|
|
wSpriteCurPosY:: ds 1
|
|
wSpriteWidth:: ds 1
|
|
wSpriteHeight:: ds 1
|
|
wSpriteInputCurByte:: ds 1
|
|
wSpriteInputBitCounter:: ds 1
|
|
wSpriteOutputBitOffset:: ds 1
|
|
wSpriteLoadFlags:: ds 1
|
|
wSpriteUnpackMode:: ds 1
|
|
wSpriteFlipped:: ds 1
|
|
wSpriteInputPtr:: ds 2
|
|
wSpriteOutputPtr:: ds 2
|
|
wSpriteOutputPtrCached:: ds 2
|
|
wSpriteDecodeTable0Ptr:: ds 2
|
|
wSpriteDecodeTable1Ptr:: ds 2
|
|
|
|
wFXAnimID:: dw
|
|
|
|
wPlaceBallsX:: db
|
|
wPlaceBallsY:: db
|
|
|
|
; Both RBY and final GSC write directly to wLowHealth, this prototype writes it here.
|
|
; TODO: Investigate how it actually functions.
|
|
wLowHealthAlarmBuffer:: db
|
|
|
|
SECTION "CCC7", WRAM0[$CCC7]
|
|
|
|
wDisableVBlankOAMUpdate:: db
|
|
|
|
SECTION "CCCA", WRAM0[$CCCA]
|
|
|
|
wBGP:: db
|
|
wOBP0:: db
|
|
wOBP1:: db
|
|
|
|
wNumHits:: db
|
|
|
|
wDisableVBlankWYUpdate:: db
|
|
wSGB:: db
|
|
|
|
SECTION "CCD0", WRAM0[$CCD0]
|
|
|
|
wccd0:: ds 1
|
|
wPlayerHPPal:: ds 1
|
|
wEnemyHPPal:: ds 1
|
|
|
|
wHPPals:: ds PARTY_LENGTH
|
|
wCurHPPal:: db
|
|
|
|
ds 7
|
|
|
|
; Todo: Replace instances of wcce1-f4 with "wSGBPals + #"
|
|
wSGBPals:: ; ds PALPACKET_LENGTH * 3
|
|
wcce1:: ds 1
|
|
wcce2:: ds 1
|
|
wcce3:: ds 1
|
|
wcce4:: ds 1
|
|
|
|
ds 6
|
|
|
|
wcceb:: ds 1
|
|
|
|
ds 5
|
|
|
|
wccf1:: ds 1
|
|
wccf2:: ds 1
|
|
wccf3:: ds 1
|
|
wccf4:: ds 1
|
|
|
|
SECTION "CD11", WRAM0[$CD11]
|
|
|
|
wMonOrItemNameBuffer:: ds MON_NAME_LENGTH
|
|
|
|
ds MON_NAME_LENGTH
|
|
|
|
wTMHMMoveNameBackup:: ds 8
|
|
|
|
ds 1
|
|
|
|
|
|
wStringBuffer1:: ds STRING_BUFFER_LENGTH
|
|
|
|
SECTION "CD31", WRAM0[$CD31]
|
|
|
|
UNION
|
|
wStartDay:: db
|
|
wStartHour:: db
|
|
wStartMinute:: db
|
|
|
|
NEXTU
|
|
wHPBarTempHP:: dw
|
|
|
|
NEXTU
|
|
wStringBuffer2:: ds STRING_BUFFER_LENGTH
|
|
|
|
NEXTU
|
|
|
|
ds 2
|
|
wGainBoostedExp:: db
|
|
|
|
NEXTU
|
|
|
|
wcd31:: db
|
|
wcd32:: db
|
|
wcd33:: db
|
|
|
|
ENDU
|
|
|
|
SECTION "CD3C", WRAM0[$CD3C]
|
|
|
|
wPartyMenuCursor::
|
|
wBillsPCCursor:: db
|
|
wRegularItemsCursor:: db
|
|
wBackpackAndKeyItemsCursor:: db
|
|
|
|
wBattleMenuCursorPosition::
|
|
wStartmenuCursor:: db
|
|
|
|
wCurMoveNum:: db
|
|
wCurBattleMon:: db
|
|
|
|
wTMHolderCursor:: db
|
|
wFieldDebugMenuCursorBuffer:: db
|
|
wRegularItemsScrollPosition:: db
|
|
wBackpackAndKeyItemsScrollPosition:: db
|
|
wBillsPCScrollPosition:: db
|
|
wTMHolderScrollPosition:: db
|
|
|
|
; TODO: change to wSwitchItem, wSwitchMon, wSwappingMove
|
|
wSelectedSwapPosition:: db
|
|
wMenuScrollPosition:: db
|
|
|
|
wTextDest:: ds 2
|
|
|
|
wQueuedScriptBank:: db
|
|
wQueuedScriptAddr:: dw
|
|
|
|
wPredefID::
|
|
db
|
|
|
|
wPredefHL::
|
|
dw
|
|
wPredefDE::
|
|
dw
|
|
wPredefBC::
|
|
|
|
wFarCallBCBuffer::
|
|
dw
|
|
|
|
wcd56:: ds 1
|
|
wNumMoves::
|
|
wcd57:: ds 1
|
|
|
|
wItemEffectSucceeded::
|
|
wFieldMoveSucceeded::
|
|
; 0 - use move
|
|
; 1 - use item
|
|
; 2 - switch
|
|
wBattlePlayerAction:: db
|
|
|
|
wStateFlags:: db
|
|
|
|
ds 3
|
|
|
|
wBattleResult:: db
|
|
|
|
ds 1
|
|
|
|
wChosenStarter:: db
|
|
wcd60:: db
|
|
|
|
SECTION "CD70", WRAM0[$CD70]
|
|
wListPointer:: dw
|
|
wNamesPointer:: dw
|
|
wItemAttributesPointer:: dw
|
|
|
|
wCurItem:: db
|
|
wCurItemQuantity::
|
|
wItemIndex:: db
|
|
|
|
wCurPartySpecies: db
|
|
wCurPartyMon: db
|
|
|
|
ds 1
|
|
|
|
wWhichHPBar:: db
|
|
wPokemonWithdrawDepositParameter:: db
|
|
|
|
wItemQuantity:: db
|
|
wItemQuantityBuffer:: db
|
|
|
|
wTempMon:: party_struct wTempMon
|
|
|
|
wSpriteFlags:: db
|
|
|
|
wTalkingTargetType:: db
|
|
;bit 0 = has engaged NPC in dialogue
|
|
;bit 1 = has engaged sign in dialogue
|
|
|
|
wcdb1:: ds 1
|
|
wHandlePlayerStep:: ds 1
|
|
|
|
ds 1
|
|
|
|
wcdb4:: ds 1
|
|
wcdb5:: ds 1
|
|
wcdb6:: ds 1
|
|
|
|
ds 2
|
|
|
|
wPartyMenuActionText:: ds 1
|
|
|
|
wItemAttributeValue:: db
|
|
|
|
wCurPartyLevel:: db
|
|
|
|
wScrollingMenuListSize:: db
|
|
|
|
wLinkMode:: db
|
|
; 00 -
|
|
; 01 -
|
|
; 02 -
|
|
; 03 -
|
|
|
|
wNextWarp:: db
|
|
wNextMapGroup:: db
|
|
wNextMapNumber:: db
|
|
wPrevWarp:: db
|
|
|
|
wEvolvableFlags:: db
|
|
|
|
UNION
|
|
wBoostExpByExpAll::
|
|
wSkipMovesBeforeLevelUp::
|
|
wListMovesLineSpacing::
|
|
wFieldMoveScriptID:: db
|
|
wMapBlocksAddress:: dw
|
|
wReplacementBlock:: db
|
|
|
|
NEXTU
|
|
wMonSubmenuCount:: db
|
|
wMonSubmenuItems:: ds NUM_MONMENU_ITEMS + 1
|
|
|
|
NEXTU
|
|
; general-purpose HP buffers
|
|
wHPBuffer1:: dw
|
|
wHPBuffer2:: dw
|
|
wHPBuffer3:: dw
|
|
|
|
NEXTU
|
|
|
|
wHPBarMaxHP:: dw
|
|
wHPBarOldHP:: dw
|
|
wHPBarNewHP:: dw
|
|
wHPBarDelta:: dw
|
|
wHPBarHPDifference:: dw
|
|
|
|
NEXTU
|
|
; switch AI
|
|
wEnemyEffectivenessVsPlayerMons:: flag_array PARTY_LENGTH
|
|
wPlayerEffectivenessVsEnemyMons:: flag_array PARTY_LENGTH
|
|
|
|
NEXTU
|
|
wBuySellItemPrice:: dw
|
|
|
|
NEXTU
|
|
; Used for an old nickname function
|
|
wMiscStringBuffer:: ds STRING_BUFFER_LENGTH
|
|
|
|
NEXTU
|
|
wExpToNextLevel:: ds 3
|
|
|
|
NEXTU
|
|
wcdc3:: db
|
|
wcdc4:: db
|
|
wcdc5:: db
|
|
|
|
wcdc6:: db
|
|
wcdc7:: db
|
|
wcdc8:: db
|
|
ds 1
|
|
wEnemyItemUsed:: db
|
|
|
|
NEXTU
|
|
; battle HUD
|
|
wBattleHUDTiles:: ds PARTY_LENGTH
|
|
|
|
NEXTU
|
|
; thrown ball data
|
|
wFinalCatchRate:: db
|
|
wThrownBallWobbleCount:: db
|
|
|
|
NEXTU
|
|
; move AI
|
|
wEnemyAIMoveScores:: ds NUM_MOVES
|
|
|
|
NEXTU
|
|
; evolution data
|
|
wEvolutionOldSpecies:: db
|
|
wEvolutionNewSpecies:: db
|
|
wEvolutionPicOffset:: db
|
|
wEvolutionCanceled:: db
|
|
|
|
ENDU
|
|
|
|
wLinkBattleRNs:: ds 10
|
|
|
|
wTempEnemyMonSpecies:: ds 1
|
|
wTempBattleMonSpecies:: ds 1
|
|
|
|
|
|
wEnemyMon:: battle_struct wEnemyMon
|
|
wEnemyMonBaseStats:: ds NUM_EXP_STATS
|
|
wEnemyMonCatchRate:: db
|
|
wEnemyMonBaseExp:: db
|
|
wEnemyMonEnd::
|
|
|
|
wBattleMode:: db
|
|
wTempWildMonSpecies:: ds 1
|
|
wOtherTrainerClass:: ds 1
|
|
wBattleType:: db
|
|
wUnused_GymLeaderNo:: ds 1 ; Unused
|
|
wOtherTrainerID:: ds 1
|
|
wBattleEnded:: ds 1
|
|
|
|
wMonHeader::
|
|
|
|
wMonHIndex::
|
|
; In the ROM base stats data structure, this is the dex number, but it is
|
|
; overwritten with the dex number after the header is copied to WRAM.
|
|
ds 1
|
|
|
|
wMonHBaseStats::
|
|
wMonHBaseHP::
|
|
ds 1
|
|
wMonHBaseAttack::
|
|
ds 1
|
|
wMonHBaseDefense::
|
|
ds 1
|
|
wMonHBaseSpeed::
|
|
ds 1
|
|
wMonHBaseSpecialAtt::
|
|
ds 1
|
|
wMonHBaseSpecialDef::
|
|
ds 1
|
|
|
|
wMonHTypes::
|
|
wMonHType1::
|
|
ds 1
|
|
wMonHType2::
|
|
ds 1
|
|
|
|
wMonHCatchRate::
|
|
ds 1
|
|
wMonHBaseEXP::
|
|
ds 1
|
|
|
|
wMonHItems::
|
|
wMonHItem1::
|
|
ds 1
|
|
wMonHItem2::
|
|
ds 1
|
|
|
|
wMonHGenderRatio::
|
|
ds 1
|
|
|
|
wMonHUnk0::
|
|
ds 1
|
|
wMonHUnk1::
|
|
ds 1
|
|
wMonHUnk2::
|
|
ds 1
|
|
|
|
wMonHSpriteDim::
|
|
ds 1
|
|
wMonHFrontSprite::
|
|
ds 2
|
|
wMonHBackSprite::
|
|
ds 2
|
|
|
|
wMonHGrowthRate::
|
|
ds 1
|
|
|
|
wMonHLearnset::
|
|
; bit field
|
|
flag_array 50 + 5 ; size = 7
|
|
ds 1
|
|
wMonHeaderEnd::
|
|
|
|
|
|
wMapAnimsBackup:: db
|
|
|
|
ds 2
|
|
|
|
wCurDamage:: dw
|
|
|
|
ds 2
|
|
|
|
wRepelEffect:: db
|
|
|
|
wListMoves_MoveIndicesBuffer:: ds NUM_MOVES
|
|
wPutativeTMHMMove:: db
|
|
wce33:: ds 1
|
|
wce34:: ds 1
|
|
wWildMon:: db
|
|
wBattleHasJustStarted:: db
|
|
|
|
wNamedObjectIndexBuffer::
|
|
wNumSetBits::
|
|
wTextDecimalByte::
|
|
wTempIconSpecies::
|
|
wTempPP::
|
|
wTempTMHM::
|
|
wUsePPUp::
|
|
wTempSpecies::
|
|
wMoveGrammar::
|
|
wTypeMatchup::
|
|
wCurType::
|
|
wBreedingCompatibility::
|
|
wTempByteValue::
|
|
wApplyStatLevelMultipliersToEnemy::
|
|
wce37::
|
|
db
|
|
|
|
wFailedToFlee:: db
|
|
wNumFleeAttempts:: db
|
|
|
|
wMonTriedToEvolve:: db
|
|
|
|
wVBlankSavedROMBank::
|
|
db
|
|
|
|
wBuffer::
|
|
db
|
|
|
|
wTimeOfDay:: db
|
|
; based on RTC
|
|
; Time of Day Regular Debug
|
|
; 00 - Day 09--15h 00--30s
|
|
; 01 - Night 15--06h 30--35s
|
|
; 02 - Cave 35--50s
|
|
; 03 - Morning 06--09h 50--59s
|
|
|
|
wcd3e: ds 1
|
|
wcd3f: ds 1
|
|
|
|
SECTION "Options", WRAM0[$CE5F]
|
|
|
|
wOptions::
|
|
; bit 0-2: number of frames to delay when printing text
|
|
; fast 1; mid 3; slow 5
|
|
; bit 3: ?
|
|
; bit 4: no text delay
|
|
; bit 5: stereo off/on
|
|
; bit 6: battle style shift/set
|
|
; bit 7: battle scene off/on
|
|
db
|
|
|
|
|
|
; Used as a buffer for sOptions to check if a save file exists.
|
|
; Only checks the bottom bit (since all valid text speeds have that bit set).
|
|
wSaveFileExists::
|
|
wSaveFileFlags:: db
|
|
|
|
wActiveFrame:: db
|
|
|
|
; bit 0: 1-frame text delay
|
|
; bit 1: when unset, no text delay
|
|
wTextboxFlags:: db
|
|
|
|
wDebugFlags:: db
|
|
; Bit 0: Debug battle indicator
|
|
; Bit 1: Debug field indicator
|
|
; Bit 2-3: Game is continued (set when selecting continue on the main menu)
|
|
|
|
wce64:: ds 1
|
|
wce65:: ds 1
|
|
wce66:: ds 1
|
|
|
|
wGameData::
|
|
wPlayerName:: ds 6
|
|
|
|
wMomsName:: ds 6
|
|
|
|
wPlayerID:: dw
|
|
|
|
ds 1
|
|
|
|
wObjectFollow_Leader::
|
|
db
|
|
wObjectFollow_Follower::
|
|
db
|
|
wCenteredObject::
|
|
db
|
|
wFollowerMovementQueueLength::
|
|
db
|
|
wFollowMovementQueue::
|
|
ds 5
|
|
|
|
wObjectStructs::
|
|
; Object struct reserved for the map viewer cursor and for Blue in Silent Hill.
|
|
; Presumably needed any time they needed something to have a higher priority than the player.
|
|
wReservedObjectStruct:: object_struct wReservedObject
|
|
|
|
wPlayerStruct:: object_struct wPlayer
|
|
; wObjectStruct1 - wObjectStruct12
|
|
for n, 1, NUM_OBJECT_STRUCTS - 1
|
|
wObject{d:n}Struct:: object_struct wObject{d:n}
|
|
endr
|
|
|
|
wMinorObjects::
|
|
for n, 0, NUM_MINOR_OBJECTS
|
|
wMinorObject{d:n}Struct:: minor_object wMinorObject{d:n}
|
|
endr
|
|
|
|
wMapObjects::
|
|
wPlayerObject:: map_object wPlayer ; player is map object 0
|
|
; wMap1Object - wMap15Object
|
|
for n, 1, NUM_OBJECTS
|
|
wMap{d:n}Object:: map_object wMap{d:n}
|
|
endr
|
|
|
|
wd14f::
|
|
wToolgearFlags:: db
|
|
; 76543210
|
|
; | | \- show toolgear
|
|
; | |
|
|
; | \--- transfer toolgear to window
|
|
; \-------- hide toolgear
|
|
|
|
ds 2 ; TODO
|
|
|
|
wTimeOfDayPal:: db
|
|
; Applied according to wCurTimeOfDay from wTimeOfDayPalset
|
|
|
|
wd153:: db
|
|
; 76543210
|
|
; | \- show player coords in toolgear instead of time
|
|
; \-------- switch overworld palettes according to minutes not hours
|
|
|
|
ds 3 ; TODO
|
|
wTimeOfDayPalFlags:: db
|
|
; 76543210
|
|
; \-------- disable overworld palette switch
|
|
|
|
wTimeOfDayPalset:: db
|
|
; 76543210
|
|
; \/\/\/\/
|
|
; | | | \- Map Palette for TimeOfDay $00 (MORN)
|
|
; | | \--- Map Palette for TimeOfDay $01 (DAY)
|
|
; | \----- Map Palette for TimeOfDay $02 (NITE)
|
|
; \------- Map Palette for TimeOfDay $03 (DARK)
|
|
|
|
wCurTimeOfDay:: db
|
|
|
|
ds 1
|
|
|
|
wCoins:: dw
|
|
wMoney:: ds 3
|
|
|
|
ds 3
|
|
|
|
wBadges::
|
|
wJohtoBadges::
|
|
flag_array NUM_JOHTO_BADGES
|
|
wKantoBadges::
|
|
flag_array NUM_KANTO_BADGES
|
|
|
|
wTMsHMs:: ds NUM_TM_HM
|
|
|
|
wItems::
|
|
wNumBagItems:: db
|
|
wBagItems:: ds MAX_ITEMS * 2 + 1
|
|
|
|
wNumKeyItems:: db
|
|
wKeyItems:: ds MAX_KEY_ITEMS + 1
|
|
|
|
wNumBallItems:: db
|
|
wBallQuantities:: ds MAX_BALLS + 1
|
|
|
|
wNumPCItems:: db
|
|
wPCItems:: ds MAX_PC_ITEMS * 2 + 1
|
|
|
|
ds 6
|
|
|
|
wRegisteredItem:: db
|
|
wRegisteredItemQuantity:: db
|
|
wRivalName:: ds 6
|
|
ds 6
|
|
|
|
wPlayerState:: db
|
|
; 00 - walking
|
|
; 01 - bicycle
|
|
; 02 - skateboard
|
|
; 04 - surfing
|
|
|
|
wd265:: db
|
|
wd266:: db
|
|
|
|
;The starting house's map script number is stored at d29a. Others are probably nearby.
|
|
SECTION "D29A", WRAM0[$D29A]
|
|
wPlayerHouse2FCurScript:: db
|
|
wPlayerHouse1FCurScript:: db
|
|
wSilentHillCurScript:: db
|
|
wSilentHillLabFrontCurScript:: db
|
|
wSilentHillLabBackCurScript:: db
|
|
wSilentHillPokecenterCurScript:: db
|
|
wSilentHillHouseCurScript:: db
|
|
wRoute1P1CurScript:: db
|
|
wRoute1P2CurScript:: db
|
|
wRoute1Gate1FCurScript:: db
|
|
wRoute1Gate2FCurScript:: db
|
|
wShizukanaOkaCurScript:: db
|
|
wd2a6:: db
|
|
|
|
|
|
|
|
SECTION "D39D", WRAM0[$D39A]
|
|
wd39a:: db
|
|
wd39b:: db
|
|
wd39c:: db
|
|
wd39d:: db
|
|
|
|
SECTION "D3A5", WRAM0[$D3A5]
|
|
wd3a5:: db
|
|
|
|
SECTION "Game Event Flags", WRAM0[$D41A]
|
|
wd41a:: db
|
|
; 76543210
|
|
; | \- read email?
|
|
; \-------- talked to Blue, triggers Oak
|
|
wd41b:: db
|
|
; 76543210
|
|
; |\-- followed Oak to his back room
|
|
; \--- chose a starter
|
|
wd41c:: db
|
|
; 76543210
|
|
; \----- recieved pokedexes
|
|
wd41d:: db
|
|
; 76543210
|
|
; \--- beat rival in the lab
|
|
wd41e:: db
|
|
|
|
SECTION "D4A9", WRAM0[$D4A7]
|
|
; Bit 0 set when exiting a battle.
|
|
; Bit 1 set when viewing summary/opening new dex entry, and reset when closing new dex entry.
|
|
wd4a7:: db
|
|
ds 1
|
|
wd4a9:: db
|
|
ds 1 ; TODO
|
|
|
|
; TODO: change to wJoypadDisable, constantify flags
|
|
wJoypadFlags:: db
|
|
; 76543210
|
|
; ||||\__/
|
|
; |||| \-- unkn
|
|
; |||\----- set for rival intro textbox
|
|
; ||\------ don't wait for keypress to close text box
|
|
; |\------- joypad sync mtx
|
|
; \-------- joypad disabled
|
|
ds 1
|
|
wMovementFlags_Old:: db
|
|
|
|
SECTION "wDigWarpNumber", WRAM0[$D4B2]
|
|
|
|
wDigWarpNumber:: db
|
|
wd4b3:: ds 1
|
|
wd4b4:: ds 1
|
|
wd4b5:: ds 1
|
|
|
|
; Doesn't get written to at any point yet, but it's read... once.
|
|
wCurBox:: db
|
|
|
|
ds 2
|
|
|
|
wBoxNames:: ds BOX_NAME_LENGTH * NUM_BOXES
|
|
|
|
|
|
SECTION "Warp data", WRAM0[$D513]
|
|
|
|
wWarpNumber:: db
|
|
|
|
wCurrMapWarpCount::
|
|
db
|
|
|
|
wCurrMapWarps::
|
|
REPT 32 ; TODO: confirm this
|
|
ds 5
|
|
ENDR
|
|
|
|
|
|
wCurMapBGEventCount::
|
|
db
|
|
|
|
wCurrMapBGEvents::
|
|
REPT 16 ; TODO: confirm this
|
|
ds 4
|
|
ENDR
|
|
|
|
wCurrMapObjectCount::
|
|
db
|
|
|
|
wCurrMapInlineTrainers::
|
|
REPT NUM_OBJECTS
|
|
ds 2 ; inline trainers. each pair of bytes is direction, distance
|
|
ENDR
|
|
ds 32
|
|
|
|
wMapStatus:: db ;OW battle state? $3 wild battle, $8 is trainer battle $4 is left battle, $B is load overworld? $0 is in overworld
|
|
wLastMapStatus:: db ;wMapStatus's last written-to value
|
|
|
|
wGameDataEnd::
|
|
|
|
; Sort of redundant to separate data like this when they're right next to each other.
|
|
wGameData2::
|
|
|
|
ds 9
|
|
|
|
wUnusedAddOutdoorSpritesReturnValue:: db
|
|
wBGMapAnchor::
|
|
dw
|
|
|
|
wUsedSprites::
|
|
ds 2
|
|
|
|
wUsedNPCSprites::
|
|
ds 8
|
|
|
|
wUsedStaticSprites::
|
|
ds 2
|
|
|
|
wUsedSpritesEnd::
|
|
|
|
|
|
SECTION "Map header", WRAM0[$D656]
|
|
|
|
wMapGroup:: db
|
|
wMapId:: db
|
|
|
|
wOverworldMapAnchor::
|
|
dw
|
|
|
|
wYCoord:: db
|
|
wXCoord:: db
|
|
|
|
wMetatileNextY:: db
|
|
wMetatileNextX:: db
|
|
|
|
wd65e::
|
|
db
|
|
|
|
wMapPartial::
|
|
wMapAttributesBank::
|
|
db
|
|
wMapTileset::
|
|
db
|
|
wMapPermissions::
|
|
db
|
|
wMapAttributesPtr::
|
|
dw
|
|
wMapPartialEnd::
|
|
|
|
wMapAttributes::
|
|
wMapHeight::
|
|
db
|
|
wMapWidth::
|
|
db
|
|
wMapBlocksPointer::
|
|
dw
|
|
wMapTextPtr::
|
|
dw
|
|
wMapScriptPtr::
|
|
dw
|
|
wMapObjectsPtr::
|
|
dw
|
|
wMapConnections::
|
|
db
|
|
wMapAttributesEnd::
|
|
|
|
wNorthMapConnection:: map_connection_struct wNorth
|
|
wSouthMapConnection:: map_connection_struct wSouth
|
|
wWestMapConnection:: map_connection_struct wWest
|
|
wEastMapConnection:: map_connection_struct wEast
|
|
|
|
|
|
wTileset::
|
|
wTilesetBank::
|
|
db
|
|
wTilesetBlocksAddress::
|
|
dw
|
|
wTilesetTilesAddress::
|
|
dw
|
|
wTilesetCollisionAddress::
|
|
dw
|
|
wTilesetAnim::
|
|
dw
|
|
ds 2 ; TODO
|
|
wTilesetEnd::
|
|
|
|
wGameData2End::
|
|
|
|
wPokemonData::
|
|
wPartyCount:: db
|
|
wPartySpecies:: ds PARTY_LENGTH
|
|
wPartyEnd:: db
|
|
|
|
wPartyMons::
|
|
; wPartyMon1 - wPartyMon6
|
|
for n, 1, PARTY_LENGTH + 1
|
|
wPartyMon{d:n}:: party_struct wPartyMon{d:n}
|
|
endr
|
|
|
|
wPartyMonOTs::
|
|
; wPartyMon1OT - wPartyMon6OT
|
|
for n, 1, PARTY_LENGTH + 1
|
|
wPartyMon{d:n}OT:: ds PLAYER_NAME_LENGTH
|
|
endr
|
|
|
|
wPartyMonNicknames::
|
|
; wPartyMon1Nickname - wPartyMon6Nickname
|
|
for n, 1, PARTY_LENGTH + 1
|
|
wPartyMon{d:n}Nickname:: ds MON_NAME_LENGTH
|
|
endr
|
|
wPartyMonNicknamesEnd::
|
|
|
|
wPokedexCaught:: flag_array NUM_POKEMON
|
|
wEndPokedexCaught::
|
|
|
|
wPokedexSeen:: flag_array NUM_POKEMON
|
|
wEndPokedexSeen::
|
|
|
|
wUnownDex:: ds NUM_UNOWN
|
|
|
|
wAnnonID:: ds 1
|
|
|
|
ds 1
|
|
|
|
; Buffer used for withdrawing Breeder Pokémon, as well as checking gender.
|
|
|
|
wBufferMonNickname:: ds MON_NAME_LENGTH
|
|
wBufferMonOT:: ds PLAYER_NAME_LENGTH
|
|
wBufferMon:: box_struct wBufferMon
|
|
|
|
; 1 = One Pokémon deposited.
|
|
; 2 = Two Pokémon deposited.
|
|
; 3 = Egg laid.
|
|
; 4 = Egg received, don't lay another egg.
|
|
wBreederStatus:: ds 1
|
|
|
|
ds 2
|
|
|
|
wBreedMon1Nickname:: ds MON_NAME_LENGTH
|
|
wBreedMon1OT:: ds PLAYER_NAME_LENGTH
|
|
wBreedMon1:: box_struct wBreedMon1
|
|
|
|
wBreedMon2Nickname:: ds MON_NAME_LENGTH
|
|
wBreedMon2OT:: ds PLAYER_NAME_LENGTH
|
|
wBreedMon2:: box_struct wBreedMon2
|
|
|
|
; Uses the last two bits to keep track of your breeder mons' genders.
|
|
; Bit clear = male, bit set = female
|
|
wBreedMonGenders:: db
|
|
wOTPlayerName:: ds PLAYER_NAME_LENGTH
|
|
|
|
SECTION "D913", WRAM0[$D913]
|
|
|
|
wOTPartyData::
|
|
wOTPartyCount:: db
|
|
wOTPartySpecies:: ds PARTY_LENGTH
|
|
wOTPartySpeciesEnd:: db
|
|
|
|
SECTION "Wild mon buffer", WRAM0[$D91B]
|
|
|
|
UNION
|
|
wWildMonData::
|
|
|
|
wMornEncounterRate:: db
|
|
wDayEncounterRate:: db
|
|
wNiteEncounterRate:: db
|
|
|
|
wWildMons:: ds NUM_GRASSMON * 2
|
|
|
|
ds 2
|
|
|
|
NEXTU
|
|
wOTPartyMons::
|
|
; wOTPartyMon1 - wOTPartyMon6
|
|
for n, 1, PARTY_LENGTH + 1
|
|
wOTPartyMon{d:n}:: party_struct wOTPartyMon{d:n}
|
|
endr
|
|
|
|
wOTPartyMonOT::
|
|
; wOTPartyMon1OT - wOTPartyMon6OT
|
|
for n, 1, PARTY_LENGTH + 1
|
|
wOTPartyMon{d:n}OT:: ds PLAYER_NAME_LENGTH
|
|
endr
|
|
|
|
wOTPartyMonNicknames::
|
|
; wOTPartyMon1Nickname - wOTPartyMon6Nickname
|
|
for n, 1, PARTY_LENGTH + 1
|
|
wOTPartyMon{d:n}Nickname:: ds MON_NAME_LENGTH
|
|
endr
|
|
wOTPartyDataEnd::
|
|
ENDU
|
|
|
|
wPokemonDataEnd::
|
|
|
|
wBox:: box wBox
|
|
|
|
SECTION "Stack Bottom", WRAM0
|
|
|
|
; Where SP is set at game init
|
|
wStackBottom::
|
|
; Due to the way the stack works (`push` first decrements, then writes), the byte at $DFFF is actually wasted
|