hDMARoutine EQU $FF80 hSoftReset EQU $FF8A ; Initialized to 16. ; Decremented each input iteration if the player ; presses the reset sequence (A+B+SEL+START). ; Soft reset when 0 is reached. ; base tile ID to which offsets are added hBaseTileID EQU $FF8B ; 3-byte BCD number hItemPrice EQU $FF8B hDexWeight EQU $FF8B hWarpDestinationMap EQU $FF8B hOAMTile EQU $FF8B hROMBankTemp EQU $FF8B hPreviousTileset EQU $FF8B hEastWestConnectedMapWidth EQU $FF8B hSlideAmount EQU $FF8B hRLEByteValue EQU $FF8B hSpriteWidth EQU $FF8B ; in tiles hSpriteInterlaceCounter EQU $FF8B hSpriteHeight EQU $FF8C ; in tiles hSpriteOffset EQU $FF8D ; counters for blinking down arrow hDownArrowBlinkCount1 EQU $FF8B hDownArrowBlinkCount2 EQU $FF8C hSpriteDataOffset EQU $FF8B hSpriteIndex EQU $FF8C hMapStride EQU $FF8B hMapWidth EQU $FF8C hNorthSouthConnectionStripWidth EQU $FF8B hNorthSouthConnectedMapWidth EQU $FF8C ; DisplayTextID's argument hSpriteIndexOrTextID EQU $FF8C hPartyMonIndex EQU $FF8C ; the total number of tiles being shifted each time the pic slides by one tile hSlidingRegionSize EQU $FF8C ; 2 bytes hEnemySpeed EQU $FF8D hVRAMSlot EQU $FF8D hFourTileSpriteCount EQU $FF8E ; -1 = left ; 0 = right hSlideDirection EQU $FF8D hSpriteFacingDirection EQU $FF8D hSpriteMovementByte2 EQU $FF8D hSpriteImageIndex EQU $FF8D hLoadSpriteTemp1 EQU $FF8D hLoadSpriteTemp2 EQU $FF8E hHalveItemPrices EQU $FF8E hSpriteOffset2 EQU $FF8F hOAMBufferOffset EQU $FF90 hSpriteScreenX EQU $FF91 hSpriteScreenY EQU $FF92 hFF8F EQU $FF8F hFF90 EQU $FF90 hFF91 EQU $FF91 hFF92 EQU $FF92 hTilePlayerStandingOn EQU $FF93 hSpritePriority EQU $FF94 ; 2 bytes hSignCoordPointer EQU $FF95 hNPCMovementDirections2Index EQU $FF95 hSwapItemID EQU $FF95 hSwapItemQuantity EQU $FF96 ; CalcPositionOfPlayerRelativeToNPC hNPCSpriteOffset EQU $FF95 ; temp value used when swapping bytes or words hSwapTemp EQU $FF95 hExperience EQU $FF96 ; 3 bytes, big endian hMutateWY EQU $FF96 hMutateWX EQU $FF97 ; Multiplication and division variables are meant ; to overlap for back-to-back usage. Big endian. hMultiplicand EQU $FF96 ; 3 bytes hMultiplier EQU $FF99 ; 1 byte hProduct EQU $FF95 ; 4 bytes hDividend EQU $FF95 ; 4 bytes hDivisor EQU $FF99 ; 1 byte hQuotient EQU $FF95 ; 4 bytes hRemainder EQU $FF99 ; 1 byte hDivideBuffer EQU $FF9A hMultiplyBuffer EQU $FF9B ; PrintNumber (big endian). hPastLeadingZeros EQU $FF95 ; last char printed hNumToPrint EQU $FF96 ; 3 bytes hPowerOf10 EQU $FF99 ; 3 bytes hSavedNumToPrint EQU $FF9C ; 3 bytes ; distance in steps between NPC and player hNPCPlayerYDistance EQU $FF95 hNPCPlayerXDistance EQU $FF96 hFindPathNumSteps EQU $FF97 ; bit 0: set when the end of the path's Y coordinate matches the target's ; bit 1: set when the end of the path's X coordinate matches the target's ; When both bits are set, the end of the path is at the target's position ; (i.e. the path has been found). hFindPathFlags EQU $FF98 hFindPathYProgress EQU $FF99 hFindPathXProgress EQU $FF9A ; 0 = from player to NPC ; 1 = from NPC to player hNPCPlayerRelativePosPerspective EQU $FF9B ; bit 0: ; 0 = target is to the south or aligned ; 1 = target is to the north ; bit 1: ; 0 = target is to the east or aligned ; 1 = target is to the west hNPCPlayerRelativePosFlags EQU $FF9D ; some code zeroes this for no reason when writing a coin amount hUnusedCoinsByte EQU $FF9F hMoney EQU $FF9F ; 3-byte BCD number hCoins EQU $FFA0 ; 2-byte BCD number hDivideBCDDivisor EQU $FFA2 ; 3-byte BCD number hDivideBCDQuotient EQU $FFA2 ; 3-byte BCD number hDivideBCDBuffer EQU $FFA5 ; 3-byte BCD number hSerialReceivedNewData EQU $FFA9 ; $01 = using external clock ; $02 = using internal clock ; $ff = establishing connection hSerialConnectionStatus EQU $FFAA hSerialIgnoringInitialData EQU $FFAB hSerialSendData EQU $FFAC hSerialReceiveData EQU $FFAD ; these values are copied to SCX, SCY, and WY during V-blank hSCX EQU $FFAE hSCY EQU $FFAF hWY EQU $FFB0 hJoyLast EQU $FFB1 hJoyReleased EQU $FFB2 hJoyPressed EQU $FFB3 hJoyHeld EQU $FFB4 hJoy5 EQU $FFB5 hJoy6 EQU $FFB6 hJoy7 EQU $FFB7 hLoadedROMBank EQU $FFB8 hSavedROMBank EQU $FFB9 ; is automatic background transfer during V-blank enabled? ; if nonzero, yes ; if zero, no hAutoBGTransferEnabled EQU $FFBA TRANSFERTOP EQU 0 TRANSFERMIDDLE EQU 1 TRANSFERBOTTOM EQU 2 ; 00 = top third of background ; 01 = middle third of background ; 02 = bottom third of background hAutoBGTransferPortion EQU $FFBB ; the destination address of the automatic background transfer hAutoBGTransferDest EQU $FFBC ; 2 bytes hRedrawMapViewRowOffset EQU $FFBE ; temporary storage for stack pointer during memory transfers that use pop ; to increase speed hSPTemp EQU $FFBF ; 2 bytes ; source address for VBlankCopyBgMap function ; the first byte doubles as the byte that enabled the transfer. ; if it is 0, the transfer is disabled ; if it is not 0, the transfer is enabled ; this means that XX00 is not a valid source address hVBlankCopyBGSource EQU $FFC1 ; 2 bytes ; destination address for VBlankCopyBgMap function hVBlankCopyBGDest EQU $FFC3 ; 2 bytes ; number of rows for VBlankCopyBgMap to copy hVBlankCopyBGNumRows EQU $FFC5 ; size of VBlankCopy transfer in 16-byte units hVBlankCopySize EQU $FFC6 ; source address for VBlankCopy function hVBlankCopySource EQU $FFC7 ; destination address for VBlankCopy function hVBlankCopyDest EQU $FFC9 ; size of source data for VBlankCopyDouble in 8-byte units hVBlankCopyDoubleSize EQU $FFCB ; source address for VBlankCopyDouble function hVBlankCopyDoubleSource EQU $FFCC ; destination address for VBlankCopyDouble function hVBlankCopyDoubleDest EQU $FFCE ; controls whether a row or column of 2x2 tile blocks is redrawn in V-blank ; 00 = no redraw ; 01 = redraw column ; 02 = redraw row hRedrawRowOrColumnMode EQU $FFD0 REDRAW_COL EQU 1 REDRAW_ROW EQU 2 hRedrawRowOrColumnDest EQU $FFD1 hRandomAdd EQU $FFD3 hRandomSub EQU $FFD4 hFrameCounter EQU $FFD5 ; decremented every V-blank (used for delays) ; V-blank sets this to 0 each time it runs. ; So, by setting it to a nonzero value and waiting for it to become 0 again, ; you can detect that the V-blank handler has run since then. hVBlankOccurred EQU $FFD6 ; 00 = indoor ; 01 = cave ; 02 = outdoor ; this is often set to 00 in order to turn off water and flower BG tile animations hTilesetType EQU $FFD7 hMovingBGTilesCounter1 EQU $FFD8 hCurrentSpriteOffset EQU $FFDA ; multiple of $10 hItemCounter EQU $FFDB hGymGateIndex EQU $FFDB hGymGateAnswer EQU $FFDC hGymTrashCanRandNumMask EQU $FFDB hDexRatingNumMonsSeen EQU $FFDB hDexRatingNumMonsOwned EQU $FFDC ; $00 = bag full ; $01 = got item ; $80 = didn't meet required number of owned mons ; $FF = player cancelled hOaksAideResult EQU $FFDB hSavedCoordIndex EQU $FFDB hOaksAideRequirement EQU $FFDB ; required number of owned mons hOaksAideRewardItem EQU $FFDC hOaksAideNumMonsOwned EQU $FFDD hPlayerFacing EQU $FFDB hPlayerYCoord EQU $FFDC hPlayerXCoord EQU $FFDD hMissableObjectIndex EQU $FFDB hItemToRemoveID EQU $FFDB hItemToRemoveIndex EQU $FFDC hVendingMachineItem EQU $FFDB hVendingMachinePrice EQU $FFDC ; 3-byte BCD number hFFDB EQU $FFDB hFFDC EQU $FFDC hBackupGymGateIndex EQU $FFE0 hUnlockedSilphCoDoors EQU $FFE0 ; the first tile ID in a sequence of tile IDs that increase by 1 each step hStartTileID EQU $FFE1 hNewPartyLength EQU $FFE4 hIsHiddenMissableObject EQU $FFE5 hDividend2 EQU $FFE5 hDivisor2 EQU $FFE6 hQuotient2 EQU $FFE7 hMapROMBank EQU $FFE8 hSpriteVRAMSlotAndFacing EQU $FFE9 hCoordsInFrontOfPlayerMatch EQU $FFEA hSpriteAnimFrameCounter EQU $FFEA hSpriteScreenYCoord EQU $FFEB hSpriteScreenXCoord EQU $FFEC hSpriteMapYCoord EQU $FFED hSpriteMapXCoord EQU $FFEE hItemAlreadyFound EQU $FFEB hDidntFindAnyHiddenObject EQU $FFEE hSavedMapTextPtr EQU $FFEC hWhoseTurn EQU $FFF3 ; 0 on player’s turn, 1 on enemy’s turn hClearLetterPrintingDelayFlags EQU $FFF4 ; bit 0: draw HP fraction to the right of bar instead of below (for party menu) ; bit 1: menu is double spaced hFlagsFFF6 EQU $FFF6 hFieldMoveMonMenuTopMenuItemX EQU $FFF7 hDisableJoypadPolling EQU $FFF9 hJoyInput EQU $FFF8