mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
Replace raw hex values with HRAM constants
To do: turn constants into labels and use ldh
This commit is contained in:
parent
35deb77113
commit
6ef36800b0
65 changed files with 311 additions and 248 deletions
|
|
@ -163,7 +163,7 @@ DrawFrameBlock:
|
|||
|
||||
PlayAnimation:
|
||||
xor a
|
||||
ld [$FF8B], a ; it looks like nothing reads this
|
||||
ld [hROMBankTemp], a ; it looks like nothing reads this
|
||||
ld [wSubAnimTransform], a
|
||||
ld a, [wAnimationID] ; get animation number
|
||||
dec a
|
||||
|
|
|
|||
|
|
@ -6870,9 +6870,9 @@ _LoadTrainerPic:
|
|||
ld d, a ; de contains pointer to trainer pic
|
||||
ld a, [wLinkState]
|
||||
and a
|
||||
ld a, Bank(TrainerPics) ; this is where all the trainer pics are (not counting Red's)
|
||||
ld a, BANK(TrainerPics) ; this is where all the trainer pics are (not counting Red's)
|
||||
jr z, .loadSprite
|
||||
ld a, Bank(RedPicFront)
|
||||
ld a, BANK(RedPicFront)
|
||||
.loadSprite
|
||||
call UncompressSpriteFromDE
|
||||
ld de, vFrontPic
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ ScaleFirstThreeSpriteColumnsByTwo:
|
|||
.columnInnerLoop
|
||||
push bc
|
||||
ld a, [de]
|
||||
ld bc, -(7*8)+1 ; $ffc9, scale lower nybble and seek to previous output column
|
||||
ld bc, -(7*8)+1 ; -$37, scale lower nybble and seek to previous output column
|
||||
call ScalePixelsByTwo
|
||||
ld a, [de]
|
||||
dec de
|
||||
|
|
@ -32,7 +32,7 @@ ScaleFirstThreeSpriteColumnsByTwo:
|
|||
dec de
|
||||
dec de
|
||||
ld a, b
|
||||
ld bc, -7*8 ; $ffc8, skip one output column (which has already been written along with the current one)
|
||||
ld bc, -7*8 ; -$38, skip one output column (which has already been written along with the current one)
|
||||
add hl, bc
|
||||
ld b, a
|
||||
dec b
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ GiveFossilToCinnabarLab::
|
|||
ld e, a
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld [$ffdb], a
|
||||
ld [hItemToRemoveID], a
|
||||
cp DOME_FOSSIL
|
||||
jr z, .choseDomeFossil
|
||||
cp HELIX_FOSSIL
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ UnusedPlayerNameLengthFunc:
|
|||
; Unused function that does a calculation involving the length of the player's
|
||||
; name.
|
||||
ld hl, wPlayerName
|
||||
ld bc, $ff00
|
||||
lb bc, $ff, $00
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp "@"
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ PrintBookshelfText::
|
|||
pop af
|
||||
call PrintPredefTextID
|
||||
xor a
|
||||
ld [$ffdb], a
|
||||
ld [hFFDB], a
|
||||
ret
|
||||
.nextBookshelfEntry1
|
||||
inc hl
|
||||
|
|
@ -33,7 +33,7 @@ PrintBookshelfText::
|
|||
jr .loop
|
||||
.noMatch
|
||||
ld a, $ff
|
||||
ld [$ffdb], a
|
||||
ld [hFFDB], a
|
||||
jpba PrintCardKeyText
|
||||
|
||||
INCLUDE "data/tilesets/bookshelf_tile_ids.asm"
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ CinnabarGymQuiz::
|
|||
pop af
|
||||
and $f0
|
||||
swap a
|
||||
ld [$ffdc], a
|
||||
ld [hGymGateAnswer], a
|
||||
ld hl, CinnabarGymQuizIntroText
|
||||
call PrintText
|
||||
ld a, [hGymGateIndex]
|
||||
|
|
@ -77,7 +77,7 @@ CinnabarGymGateFlagAction:
|
|||
|
||||
CinnabarGymQuiz_1ea92:
|
||||
call YesNoChoice
|
||||
ld a, [$ffdc]
|
||||
ld a, [hGymGateAnswer]
|
||||
ld c, a
|
||||
ld a, [wCurrentMenuItem]
|
||||
cp c
|
||||
|
|
@ -85,10 +85,10 @@ CinnabarGymQuiz_1ea92:
|
|||
ld hl, wCurrentMapScriptFlags
|
||||
set 5, [hl]
|
||||
ld a, [hGymGateIndex]
|
||||
ld [$ffe0], a
|
||||
ld [hBackupGymGateIndex], a
|
||||
ld hl, CinnabarGymQuizCorrectText
|
||||
call PrintText
|
||||
ld a, [$ffe0]
|
||||
ld a, [hBackupGymGateIndex]
|
||||
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
||||
ld c, a
|
||||
ld b, FLAG_SET
|
||||
|
|
@ -122,7 +122,7 @@ CinnabarGymQuizCorrectText:
|
|||
TX_BLINK
|
||||
TX_ASM
|
||||
|
||||
ld a, [$ffe0]
|
||||
ld a, [hBackupGymGateIndex]
|
||||
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
||||
ld c, a
|
||||
ld b, FLAG_TEST
|
||||
|
|
@ -162,7 +162,7 @@ UpdateCinnabarGymGateTileBlocks_::
|
|||
ld [wGymGateTileBlock], a
|
||||
push bc
|
||||
ld a, [hGymGateIndex]
|
||||
ld [$ffe0], a
|
||||
ld [hBackupGymGateIndex], a
|
||||
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
||||
ld c, a
|
||||
ld b, FLAG_TEST
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ PickUpItem:
|
|||
|
||||
.isMissable
|
||||
ld a, [hl]
|
||||
ld [$ffdb], a
|
||||
ld [hMissableObjectIndex], a
|
||||
|
||||
ld hl, wMapSpriteExtraData
|
||||
ld a, [hSpriteIndexOrTextID]
|
||||
|
|
@ -30,7 +30,7 @@ PickUpItem:
|
|||
call GiveItem
|
||||
jr nc, .BagFull
|
||||
|
||||
ld a, [$ffdb]
|
||||
ld a, [hMissableObjectIndex]
|
||||
ld [wMissableObjectIndex], a
|
||||
predef HideObject
|
||||
ld a, 1
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ RemoveGuardDrink::
|
|||
ld hl, GuardDrinksList
|
||||
.drinkLoop
|
||||
ld a, [hli]
|
||||
ld [$ffdb], a
|
||||
ld [hItemToRemoveID], a
|
||||
and a
|
||||
ret z
|
||||
push hl
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
WriteDMACodeToHRAM::
|
||||
; Since no other memory is available during OAM DMA,
|
||||
; DMARoutine is copied to HRAM and executed there.
|
||||
ld c, $ff80 % $100
|
||||
ld c, hDMARoutine % $100
|
||||
ld b, DMARoutineEnd - DMARoutine
|
||||
ld hl, DMARoutine
|
||||
.copy
|
||||
ld a, [hli]
|
||||
ld [$ff00+c], a
|
||||
ldh [c], a
|
||||
inc c
|
||||
dec b
|
||||
jr nz, .copy
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ PredefShakeScreenVertically:
|
|||
ld [wDisableVBlankWYUpdate], a
|
||||
xor a
|
||||
.loop
|
||||
ld [$ff96], a
|
||||
ld [hMutateWY], a
|
||||
call .MutateWY
|
||||
call .MutateWY
|
||||
dec b
|
||||
|
|
@ -30,9 +30,9 @@ PredefShakeScreenVertically:
|
|||
ret
|
||||
|
||||
.MutateWY
|
||||
ld a, [$ff96]
|
||||
ld a, [hMutateWY]
|
||||
xor b
|
||||
ld [$ff96], a
|
||||
ld [hMutateWY], a
|
||||
ld [rWY], a
|
||||
ld c, 3
|
||||
jp DelayFrames
|
||||
|
|
@ -43,7 +43,7 @@ PredefShakeScreenHorizontally:
|
|||
call GetPredefRegisters
|
||||
xor a
|
||||
.loop
|
||||
ld [$ff97], a
|
||||
ld [hMutateWX], a
|
||||
call .MutateWX
|
||||
ld c, 1
|
||||
call DelayFrames
|
||||
|
|
@ -58,9 +58,9 @@ PredefShakeScreenHorizontally:
|
|||
ret
|
||||
|
||||
.MutateWX
|
||||
ld a, [$ff97]
|
||||
ld a, [hMutateWX]
|
||||
xor b
|
||||
ld [$ff97], a
|
||||
ld [hMutateWX], a
|
||||
bit 7, a
|
||||
jr z, .skipZeroing
|
||||
xor a ; zero a if it's negative
|
||||
|
|
|
|||
|
|
@ -1341,7 +1341,7 @@ ItemUseMedicine:
|
|||
push hl
|
||||
push de
|
||||
ld d, a
|
||||
callab CalcExperience ; calculate experience for next level and store it at $ff96
|
||||
callab CalcExperience ; calculate experience for next level and store it at hExperience
|
||||
pop de
|
||||
pop hl
|
||||
ld bc, wPartyMon1Exp - wPartyMon1Level
|
||||
|
|
|
|||
|
|
@ -663,7 +663,7 @@ TradeCenter_PrintPartyListNames:
|
|||
push de
|
||||
push hl
|
||||
ld a, c
|
||||
ld [$ff95], a
|
||||
ld [hPastLeadingZeros], a
|
||||
call GetMonName
|
||||
pop hl
|
||||
call PlaceString
|
||||
|
|
@ -903,7 +903,7 @@ CableClub_Run:
|
|||
ld [wTilesetGfxPtr + 1], a
|
||||
ld a, l
|
||||
ld [wTilesetGfxPtr], a
|
||||
ld a, Bank(Club_GFX)
|
||||
ld a, BANK(Club_GFX)
|
||||
ld [wTilesetBank], a
|
||||
ld hl, Club_Coll
|
||||
ld a, h
|
||||
|
|
|
|||
|
|
@ -566,11 +566,11 @@ ShowPokedexDataInternal:
|
|||
pop hl
|
||||
inc hl ; hl = address of pokedex description text
|
||||
coord bc, 1, 11
|
||||
ld a, 2
|
||||
ld [$fff4], a
|
||||
ld a, %10
|
||||
ld [hClearLetterPrintingDelayFlags], a
|
||||
call TextCommandProcessor ; print pokedex description text
|
||||
xor a
|
||||
ld [$fff4], a
|
||||
ld [hClearLetterPrintingDelayFlags], a
|
||||
.waitForButtonPress
|
||||
call JoypadLowSensitivity
|
||||
ld a, [hJoy5]
|
||||
|
|
|
|||
|
|
@ -601,9 +601,9 @@ GetMonCountsForBoxesInBank:
|
|||
ret
|
||||
|
||||
SAVCheckRandomID:
|
||||
;checks if Sav file is the same by checking player's name 1st letter ($a598)
|
||||
; checks if Sav file is the same by checking player's name 1st letter
|
||||
; and the two random numbers generated at game beginning
|
||||
;(which are stored at wPlayerID)s
|
||||
; (which are stored at wPlayerID)s
|
||||
ld a, $0a
|
||||
ld [MBC1SRamEnable], a
|
||||
ld a, $01
|
||||
|
|
@ -702,7 +702,7 @@ ClearSAV:
|
|||
|
||||
PadSRAM_FF:
|
||||
ld [MBC1SRamBank], a
|
||||
ld hl, $a000
|
||||
ld bc, $2000
|
||||
ld hl, $a000 ; start of SRAM
|
||||
ld bc, $2000 ; size of SRAM
|
||||
ld a, $ff
|
||||
jp FillMemory
|
||||
|
|
|
|||
|
|
@ -77,18 +77,18 @@ HandleItemListSwapping::
|
|||
cp b
|
||||
jr z, .swapSameItemType
|
||||
.swapDifferentItems
|
||||
ld [$ff95], a ; [$ff95] = second item ID
|
||||
ld [hSwapItemID], a ; save second item ID
|
||||
ld a, [hld]
|
||||
ld [$ff96], a ; [$ff96] = second item quantity
|
||||
ld [hSwapItemQuantity], a ; save second item quantity
|
||||
ld a, [de]
|
||||
ld [hli], a ; put first item ID in second item slot
|
||||
inc de
|
||||
ld a, [de]
|
||||
ld [hl], a ; put first item quantity in second item slot
|
||||
ld a, [$ff96]
|
||||
ld a, [hSwapItemQuantity]
|
||||
ld [de], a ; put second item quantity in first item slot
|
||||
dec de
|
||||
ld a, [$ff95]
|
||||
ld a, [hSwapItemID]
|
||||
ld [de], a ; put second item ID in first item slot
|
||||
xor a
|
||||
ld [wMenuItemToSwap], a ; 0 means no item is currently being swapped
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ OakSpeech:
|
|||
bit 1, a ; possibly a debug mode bit
|
||||
jp nz, .skipChoosingNames
|
||||
ld de, ProfOakPic
|
||||
lb bc, Bank(ProfOakPic), $00
|
||||
lb bc, BANK(ProfOakPic), $00
|
||||
call IntroDisplayPicCenteredOrUpperRight
|
||||
call FadeInIntroPic
|
||||
ld hl, OakSpeechText1
|
||||
|
|
@ -76,7 +76,7 @@ OakSpeech:
|
|||
call GBFadeOutToWhite
|
||||
call ClearScreen
|
||||
ld de, RedPicFront
|
||||
lb bc, Bank(RedPicFront), $00
|
||||
lb bc, BANK(RedPicFront), $00
|
||||
call IntroDisplayPicCenteredOrUpperRight
|
||||
call MovePicLeft
|
||||
ld hl, IntroducePlayerText
|
||||
|
|
@ -85,7 +85,7 @@ OakSpeech:
|
|||
call GBFadeOutToWhite
|
||||
call ClearScreen
|
||||
ld de, Rival1Pic
|
||||
lb bc, Bank(Rival1Pic), $00
|
||||
lb bc, BANK(Rival1Pic), $00
|
||||
call IntroDisplayPicCenteredOrUpperRight
|
||||
call FadeInIntroPic
|
||||
ld hl, IntroduceRivalText
|
||||
|
|
@ -95,7 +95,7 @@ OakSpeech:
|
|||
call GBFadeOutToWhite
|
||||
call ClearScreen
|
||||
ld de, RedPicFront
|
||||
lb bc, Bank(RedPicFront), $00
|
||||
lb bc, BANK(RedPicFront), $00
|
||||
call IntroDisplayPicCenteredOrUpperRight
|
||||
call GBFadeInFromWhite
|
||||
ld a, [wd72d]
|
||||
|
|
|
|||
|
|
@ -14,14 +14,14 @@ IsPlayerOnDungeonWarp::
|
|||
set 4, [hl]
|
||||
ret
|
||||
|
||||
; if a hidden object was found, stores $00 in [$ffee], else stores $ff
|
||||
; if a hidden object was found, stores $00 in [hFoundHiddenObject], else stores $ff
|
||||
CheckForHiddenObject::
|
||||
ld hl, $ffeb
|
||||
ld hl, hFoundHiddenObjectOrBookshelf
|
||||
xor a
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
ld [hli], a ; [hFoundHiddenObjectOrBookshelf]
|
||||
ld [hli], a ; [hSavedMapTextPtr]
|
||||
ld [hli], a ; [hSavedMapTextPtr + 1]
|
||||
ld [hl], a ; [hFoundHiddenObject]
|
||||
ld de, $0
|
||||
ld hl, HiddenObjectMaps
|
||||
.hiddenMapLoop
|
||||
|
|
@ -81,7 +81,7 @@ CheckForHiddenObject::
|
|||
ret
|
||||
.noMatch
|
||||
ld a, $ff
|
||||
ld [$ffee], a
|
||||
ld [hFoundHiddenObject], a
|
||||
ret
|
||||
|
||||
; checks if the coordinates in front of the player's sprite match Y in b and X in c
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ IsObjectHidden:
|
|||
.notHidden
|
||||
xor a
|
||||
.hidden
|
||||
ld [$ffe5], a
|
||||
ld [hIsHiddenMissableObject], a
|
||||
ret
|
||||
|
||||
; adds missable object (items, leg. pokemon, etc.) to the map
|
||||
|
|
|
|||
|
|
@ -475,7 +475,7 @@ InitializeSpriteScreenPosition:
|
|||
; tests if sprite is off screen or otherwise unable to do anything
|
||||
CheckSpriteAvailability:
|
||||
predef IsObjectHidden
|
||||
ld a, [$ffe5]
|
||||
ld a, [hIsHiddenMissableObject]
|
||||
and a
|
||||
jp nz, .spriteInvisible
|
||||
ld h, wSpriteStateData2 / $100
|
||||
|
|
@ -564,7 +564,7 @@ UpdateSpriteImage:
|
|||
ld a, [hl] ; c1x9: facing direction
|
||||
add b
|
||||
ld b, a
|
||||
ld a, [$ff93] ; current sprite offset
|
||||
ld a, [hTilePlayerStandingOn]
|
||||
add b
|
||||
ld b, a
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ _GetTileAndCoordsInFrontOfPlayer:
|
|||
|
||||
GetTileTwoStepsInFrontOfPlayer:
|
||||
xor a
|
||||
ld [$ffdb], a
|
||||
ld [hPlayerFacing], a
|
||||
ld hl, wYCoord
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
|
|
@ -306,7 +306,7 @@ GetTileTwoStepsInFrontOfPlayer:
|
|||
and a ; cp SPRITE_FACING_DOWN
|
||||
jr nz, .notFacingDown
|
||||
; facing down
|
||||
ld hl, $ffdb
|
||||
ld hl, hPlayerFacing
|
||||
set 0, [hl]
|
||||
aCoord 8, 13
|
||||
inc d
|
||||
|
|
@ -315,7 +315,7 @@ GetTileTwoStepsInFrontOfPlayer:
|
|||
cp SPRITE_FACING_UP
|
||||
jr nz, .notFacingUp
|
||||
; facing up
|
||||
ld hl, $ffdb
|
||||
ld hl, hPlayerFacing
|
||||
set 1, [hl]
|
||||
aCoord 8, 5
|
||||
dec d
|
||||
|
|
@ -324,7 +324,7 @@ GetTileTwoStepsInFrontOfPlayer:
|
|||
cp SPRITE_FACING_LEFT
|
||||
jr nz, .notFacingLeft
|
||||
; facing left
|
||||
ld hl, $ffdb
|
||||
ld hl, hPlayerFacing
|
||||
set 2, [hl]
|
||||
aCoord 4, 9
|
||||
dec e
|
||||
|
|
@ -333,7 +333,7 @@ GetTileTwoStepsInFrontOfPlayer:
|
|||
cp SPRITE_FACING_RIGHT
|
||||
jr nz, .storeTile
|
||||
; facing right
|
||||
ld hl, $ffdb
|
||||
ld hl, hPlayerFacing
|
||||
set 3, [hl]
|
||||
aCoord 12, 9
|
||||
inc e
|
||||
|
|
@ -378,33 +378,33 @@ CheckForBoulderCollisionWithSprites:
|
|||
ld hl, wSpriteStateData2 + $14
|
||||
add hl, de
|
||||
ld a, [hli] ; map Y position
|
||||
ld [$ffdc], a
|
||||
ld [hPlayerYCoord], a
|
||||
ld a, [hl] ; map X position
|
||||
ld [$ffdd], a
|
||||
ld [hPlayerXCoord], a
|
||||
ld a, [wNumSprites]
|
||||
ld c, a
|
||||
ld de, $f
|
||||
ld hl, wSpriteStateData2 + $14
|
||||
ld a, [$ffdb]
|
||||
ld a, [hPlayerFacing]
|
||||
and $3 ; facing up or down?
|
||||
jr z, .pushingHorizontallyLoop
|
||||
.pushingVerticallyLoop
|
||||
inc hl
|
||||
ld a, [$ffdd]
|
||||
ld a, [hPlayerXCoord]
|
||||
cp [hl]
|
||||
jr nz, .nextSprite1 ; if X coordinates don't match
|
||||
dec hl
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [$ffdb]
|
||||
ld a, [hPlayerFacing]
|
||||
rrca
|
||||
jr c, .pushingDown
|
||||
; pushing up
|
||||
ld a, [$ffdc]
|
||||
ld a, [hPlayerYCoord]
|
||||
dec a
|
||||
jr .compareYCoords
|
||||
.pushingDown
|
||||
ld a, [$ffdc]
|
||||
ld a, [hPlayerYCoord]
|
||||
inc a
|
||||
.compareYCoords
|
||||
cp b
|
||||
|
|
@ -417,19 +417,19 @@ CheckForBoulderCollisionWithSprites:
|
|||
.pushingHorizontallyLoop
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [$ffdc]
|
||||
ld a, [hPlayerYCoord]
|
||||
cp b
|
||||
jr nz, .nextSprite2
|
||||
ld b, [hl]
|
||||
ld a, [$ffdb]
|
||||
ld a, [hPlayerFacing]
|
||||
bit 2, a
|
||||
jr nz, .pushingLeft
|
||||
; pushing right
|
||||
ld a, [$ffdd]
|
||||
ld a, [hPlayerXCoord]
|
||||
inc a
|
||||
jr .compareXCoords
|
||||
.pushingLeft
|
||||
ld a, [$ffdd]
|
||||
ld a, [hPlayerXCoord]
|
||||
dec a
|
||||
.compareXCoords
|
||||
cp b
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ _UpdateSprites::
|
|||
UpdateNonPlayerSprite:
|
||||
dec a
|
||||
swap a
|
||||
ld [$ff93], a ; $10 * sprite#
|
||||
ld [hTilePlayerStandingOn], a ; $10 * sprite#
|
||||
ld a, [wNPCMovementScriptSpriteOffset] ; some sprite offset?
|
||||
ld b, a
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
|
|
@ -79,7 +79,7 @@ DetectCollisionBetweenSprites:
|
|||
and $f0
|
||||
or c
|
||||
|
||||
ld [$ff90], a ; store Y coordinate adjusted for direction of movement
|
||||
ld [hFF90], a ; store Y coordinate adjusted for direction of movement
|
||||
|
||||
ld a, [hli] ; a = [$c1i5] (delta X) (-1, 0, or 1)
|
||||
call SetSpriteCollisionValues
|
||||
|
|
@ -92,7 +92,7 @@ DetectCollisionBetweenSprites:
|
|||
and $f0
|
||||
or c
|
||||
|
||||
ld [$ff91], a ; store X coordinate adjusted for direction of movement
|
||||
ld [hFF91], a ; store X coordinate adjusted for direction of movement
|
||||
|
||||
ld a, l
|
||||
add 7
|
||||
|
|
@ -102,15 +102,15 @@ DetectCollisionBetweenSprites:
|
|||
ld [hld], a ; zero [$c1id] XXX what's [$c1id] for?
|
||||
ld [hld], a ; zero [$c1ic] (directions in which collisions occurred)
|
||||
|
||||
ld a, [$ff91]
|
||||
ld a, [hFF91]
|
||||
ld [hld], a ; [$c1ib] = adjusted X coordinate
|
||||
ld a, [$ff90]
|
||||
ld a, [hFF90]
|
||||
ld [hl], a ; [$c1ia] = adjusted Y coordinate
|
||||
|
||||
xor a ; zero the loop counter
|
||||
|
||||
.loop
|
||||
ld [$ff8f], a ; store loop counter
|
||||
ld [hFF8F], a ; store loop counter
|
||||
swap a
|
||||
ld e, a
|
||||
ld a, [hCurrentSpriteOffset]
|
||||
|
|
@ -154,7 +154,7 @@ DetectCollisionBetweenSprites:
|
|||
cpl
|
||||
inc a
|
||||
.noCarry1
|
||||
ld [$ff90], a ; store the distance between the two sprites' adjusted Y values
|
||||
ld [hFF90], a ; store the distance between the two sprites' adjusted Y values
|
||||
|
||||
; Use the carry flag set by the above subtraction to determine which sprite's
|
||||
; Y coordinate is larger. This information is used later to set [$c1ic],
|
||||
|
|
@ -176,11 +176,11 @@ DetectCollisionBetweenSprites:
|
|||
ld b, 9
|
||||
|
||||
.next1
|
||||
ld a, [$ff90] ; a = distance between adjusted Y coordinates
|
||||
ld a, [hFF90] ; a = distance between adjusted Y coordinates
|
||||
sub b
|
||||
ld [$ff92], a ; store distance adjusted using sprite i's direction
|
||||
ld [hFF92], a ; store distance adjusted using sprite i's direction
|
||||
ld a, b
|
||||
ld [$ff90], a ; store 7 or 9 depending on sprite i's delta Y
|
||||
ld [hFF90], a ; store 7 or 9 depending on sprite i's delta Y
|
||||
jr c, .checkXDistance
|
||||
|
||||
; If sprite j's delta Y is 0, then b = 7, else b = 9.
|
||||
|
|
@ -193,7 +193,7 @@ DetectCollisionBetweenSprites:
|
|||
ld b, 9
|
||||
|
||||
.next2
|
||||
ld a, [$ff92] ; a = distance adjusted using sprite i's direction
|
||||
ld a, [hFF92] ; a = distance adjusted using sprite i's direction
|
||||
sub b ; adjust distance using sprite j's direction
|
||||
jr z, .checkXDistance
|
||||
jr nc, .next ; go to next sprite if distance is still positive after both adjustments
|
||||
|
|
@ -225,7 +225,7 @@ DetectCollisionBetweenSprites:
|
|||
cpl
|
||||
inc a
|
||||
.noCarry2
|
||||
ld [$ff91], a ; store the distance between the two sprites' adjusted X values
|
||||
ld [hFF91], a ; store the distance between the two sprites' adjusted X values
|
||||
|
||||
; Use the carry flag set by the above subtraction to determine which sprite's
|
||||
; X coordinate is larger. This information is used later to set [$c1ic],
|
||||
|
|
@ -247,11 +247,11 @@ DetectCollisionBetweenSprites:
|
|||
ld b, 9
|
||||
|
||||
.next3
|
||||
ld a, [$ff91] ; a = distance between adjusted X coordinates
|
||||
ld a, [hFF91] ; a = distance between adjusted X coordinates
|
||||
sub b
|
||||
ld [$ff92], a ; store distance adjusted using sprite i's direction
|
||||
ld [hFF92], a ; store distance adjusted using sprite i's direction
|
||||
ld a, b
|
||||
ld [$ff91], a ; store 7 or 9 depending on sprite i's delta X
|
||||
ld [hFF91], a ; store 7 or 9 depending on sprite i's delta X
|
||||
jr c, .collision
|
||||
|
||||
; If sprite j's delta X is 0, then b = 7, else b = 9.
|
||||
|
|
@ -264,15 +264,15 @@ DetectCollisionBetweenSprites:
|
|||
ld b, 9
|
||||
|
||||
.next4
|
||||
ld a, [$ff92] ; a = distance adjusted using sprite i's direction
|
||||
ld a, [hFF92] ; a = distance adjusted using sprite i's direction
|
||||
sub b ; adjust distance using sprite j's direction
|
||||
jr z, .collision
|
||||
jr nc, .next ; go to next sprite if distance is still positive after both adjustments
|
||||
|
||||
.collision
|
||||
ld a, [$ff91] ; a = 7 or 9 depending on sprite i's delta X
|
||||
ld a, [hFF91] ; a = 7 or 9 depending on sprite i's delta X
|
||||
ld b, a
|
||||
ld a, [$ff90] ; a = 7 or 9 depending on sprite i's delta Y
|
||||
ld a, [hFF90] ; a = 7 or 9 depending on sprite i's delta Y
|
||||
inc l
|
||||
|
||||
; If delta X isn't 0 and delta Y is 0, then b = %0011, else b = %1100.
|
||||
|
|
@ -294,7 +294,7 @@ DetectCollisionBetweenSprites:
|
|||
; set bit in [$c1ie] or [$c1if] to indicate which sprite the collision occurred with
|
||||
inc l
|
||||
inc l
|
||||
ld a, [$ff8f] ; a = loop counter
|
||||
ld a, [hFF8F] ; a = loop counter
|
||||
ld de, SpriteCollisionBitTable
|
||||
add a
|
||||
add e
|
||||
|
|
@ -311,7 +311,7 @@ DetectCollisionBetweenSprites:
|
|||
ld [hl], a
|
||||
|
||||
.next
|
||||
ld a, [$ff8f] ; a = loop counter
|
||||
ld a, [hFF8F] ; a = loop counter
|
||||
inc a
|
||||
cp $10
|
||||
jp nz, .loop
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ LoadTilesetHeader:
|
|||
ld a, [hl]
|
||||
ld [hTilesetType], a
|
||||
xor a
|
||||
ld [$ffd8], a
|
||||
ld [hMovingBGTilesCounter1], a
|
||||
pop hl
|
||||
ld a, [wCurMapTileset]
|
||||
push hl
|
||||
|
|
|
|||
|
|
@ -5,16 +5,16 @@ _GetSpritePosition1::
|
|||
ld [hSpriteIndex], a
|
||||
call GetSpriteDataPointer
|
||||
ld a, [hli] ; c1x4 (screen Y pos)
|
||||
ld [$ffeb], a
|
||||
ld [hSpriteScreenYCoord], a
|
||||
inc hl
|
||||
ld a, [hl] ; c1x6 (screen X pos)
|
||||
ld [$ffec], a
|
||||
ld [hSpriteScreenXCoord], a
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
add hl, de
|
||||
ld a, [hli] ; c2x4 (map Y pos)
|
||||
ld [$ffed], a
|
||||
ld [hSpriteMapYCoord], a
|
||||
ld a, [hl] ; c2x5 (map X pos)
|
||||
ld [$ffee], a
|
||||
ld [hSpriteMapXCoord], a
|
||||
ret
|
||||
|
||||
_GetSpritePosition2::
|
||||
|
|
@ -42,16 +42,16 @@ _SetSpritePosition1::
|
|||
ld a, [wSpriteIndex]
|
||||
ld [hSpriteIndex], a
|
||||
call GetSpriteDataPointer
|
||||
ld a, [$ffeb] ; c1x4 (screen Y pos)
|
||||
ld a, [hSpriteScreenYCoord] ; c1x4 (screen Y pos)
|
||||
ld [hli], a
|
||||
inc hl
|
||||
ld a, [$ffec] ; c1x6 (screen X pos)
|
||||
ld a, [hSpriteScreenXCoord] ; c1x6 (screen X pos)
|
||||
ld [hl], a
|
||||
ld de, (wSpriteStateData2 + $4) - (wSpriteStateData1 + $6)
|
||||
add hl, de
|
||||
ld a, [$ffed] ; c2x4 (map Y pos)
|
||||
ld a, [hSpriteMapYCoord] ; c2x4 (map Y pos)
|
||||
ld [hli], a
|
||||
ld a, [$ffee] ; c2x5 (map X pos)
|
||||
ld a, [hSpriteMapXCoord] ; c2x5 (map X pos)
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ RedrawMapView:
|
|||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld de, -2 * 32
|
||||
ld de, -2 * BG_MAP_WIDTH
|
||||
add hl, de
|
||||
ld a, h
|
||||
and $3
|
||||
|
|
@ -73,23 +73,23 @@ RedrawMapView:
|
|||
ld a, h
|
||||
ld [wBuffer + 1], a ; this copy of the address is not used
|
||||
ld a, 2
|
||||
ld [$ffbe], a
|
||||
ld c, 9 ; number of rows of 2x2 tiles (this covers the whole screen)
|
||||
ld [hRedrawMapViewRowOffset], a
|
||||
ld c, SCREEN_HEIGHT / 2 ; number of rows of 2x2 tiles (this covers the whole screen)
|
||||
.redrawRowLoop
|
||||
push bc
|
||||
push hl
|
||||
push hl
|
||||
ld hl, wTileMap - 2 * SCREEN_WIDTH
|
||||
ld de, SCREEN_WIDTH
|
||||
ld a, [$ffbe]
|
||||
ld a, [hRedrawMapViewRowOffset]
|
||||
.calcWRAMAddrLoop
|
||||
add hl, de
|
||||
dec a
|
||||
jr nz, .calcWRAMAddrLoop
|
||||
call CopyToRedrawRowOrColumnSrcTiles
|
||||
pop hl
|
||||
ld de, $20
|
||||
ld a, [$ffbe]
|
||||
ld de, BG_MAP_WIDTH
|
||||
ld a, [hRedrawMapViewRowOffset]
|
||||
ld c, a
|
||||
.calcVRAMAddrLoop
|
||||
add hl, de
|
||||
|
|
@ -104,7 +104,7 @@ RedrawMapView:
|
|||
ld a, REDRAW_ROW
|
||||
ld [hRedrawRowOrColumnMode], a
|
||||
call DelayFrame
|
||||
ld hl, $ffbe
|
||||
ld hl, hRedrawMapViewRowOffset
|
||||
inc [hl]
|
||||
inc [hl]
|
||||
pop hl
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue