mirror of
https://github.com/pret/pokered.git
synced 2025-03-01 10:16:58 +00:00
371 lines
8.1 KiB
NASM
371 lines
8.1 KiB
NASM
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
|