Skip to content

Commit

Permalink
Identify the unnamed HRAM variables and one WRAM label (#438)
Browse files Browse the repository at this point in the history
  • Loading branch information
Vortyne committed Nov 20, 2023
1 parent 3bbd38a commit 7a7a6d6
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 33 deletions.
4 changes: 2 additions & 2 deletions engine/events/hidden_objects/bookshelves.asm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ PrintBookshelfText::
pop af
call PrintPredefTextID
xor a
ldh [hFFDB], a
ldh [hInteractedWithBookshelf], a
ret
.nextBookshelfEntry1
inc hl
Expand All @@ -33,7 +33,7 @@ PrintBookshelfText::
jr .loop
.noMatch
ld a, $ff
ldh [hFFDB], a
ldh [hInteractedWithBookshelf], a
farjp PrintCardKeyText

INCLUDE "data/tilesets/bookshelf_tile_ids.asm"
4 changes: 2 additions & 2 deletions engine/gfx/sprite_oam.asm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ PrepareOAMData::
inc e
inc e
ld a, [de] ; [x#SPRITESTATEDATA1_IMAGEINDEX]
ld [wd5cd], a
ld [wSpriteImageIndexBackup], a
cp $ff ; off-screen (don't draw)
jr nz, .visible

Expand Down Expand Up @@ -98,7 +98,7 @@ PrepareOAMData::
push bc
ld b, a

ld a, [wd5cd] ; temp copy of [x#SPRITESTATEDATA1_IMAGEINDEX]
ld a, [wSpriteImageIndexBackup]
swap a ; high nybble determines sprite used (0 is always player sprite, next are some npcs)
and $f

Expand Down
38 changes: 19 additions & 19 deletions engine/overworld/sprite_collisions.asm
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ DetectCollisionBetweenSprites:
and $f0
or c

ldh [hFF90], a ; store Y coordinate adjusted for direction of movement
ldh [hCollidingSpriteTempYValue], a ; y adjusted for direction of movement

ld a, [hli] ; a = [i#SPRITESTATEDATA1_XSTEPVECTOR] (-1, 0, or 1)
call SetSpriteCollisionValues
Expand All @@ -93,7 +93,7 @@ DetectCollisionBetweenSprites:
and $f0
or c

ldh [hFF91], a ; store X coordinate adjusted for direction of movement
ldh [hCollidingSpriteTempXValue], a ; x adjusted for direction of movement

ld a, l
add 7
Expand All @@ -103,15 +103,15 @@ DetectCollisionBetweenSprites:
ld [hld], a ; zero [i#SPRITESTATEDATA1_0D] XXX what's this for?
ld [hld], a ; zero [i#SPRITESTATEDATA1_COLLISIONDATA]

ldh a, [hFF91]
ldh a, [hCollidingSpriteTempXValue]
ld [hld], a ; [i#SPRITESTATEDATA1_XADJUSTED]
ldh a, [hFF90]
ldh a, [hCollidingSpriteTempYValue]
ld [hl], a ; [i#SPRITESTATEDATA1_YADJUSTED]

xor a ; zero the loop counter

.loop
ldh [hFF8F], a ; store loop counter
ldh [hCollidingSpriteOffset], a
swap a
ld e, a
ldh a, [hCurrentSpriteOffset]
Expand Down Expand Up @@ -155,7 +155,7 @@ DetectCollisionBetweenSprites:
cpl
inc a
.noCarry1
ldh [hFF90], a ; store the distance between the two sprites' adjusted Y values
ldh [hCollidingSpriteTempYValue], 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
Expand All @@ -177,11 +177,11 @@ DetectCollisionBetweenSprites:
ld b, 9

.next1
ldh a, [hFF90] ; a = distance between adjusted Y coordinates
ldh a, [hCollidingSpriteTempYValue] ; a = distance between adjusted Y coordinates
sub b
ldh [hFF92], a ; store distance adjusted using sprite i's direction
ldh [hCollidingSpriteAdjustedDistance], a
ld a, b
ldh [hFF90], a ; store 7 or 9 depending on sprite i's delta Y
ldh [hCollidingSpriteTempYValue], 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.
Expand All @@ -194,7 +194,7 @@ DetectCollisionBetweenSprites:
ld b, 9

.next2
ldh a, [hFF92] ; a = distance adjusted using sprite i's direction
ldh a, [hCollidingSpriteAdjustedDistance]
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
Expand Down Expand Up @@ -226,7 +226,7 @@ DetectCollisionBetweenSprites:
cpl
inc a
.noCarry2
ldh [hFF91], a ; store the distance between the two sprites' adjusted X values
ldh [hCollidingSpriteTempXValue], 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
Expand All @@ -248,11 +248,11 @@ DetectCollisionBetweenSprites:
ld b, 9

.next3
ldh a, [hFF91] ; a = distance between adjusted X coordinates
ldh a, [hCollidingSpriteTempXValue] ; a = distance between adjusted X coordinates
sub b
ldh [hFF92], a ; store distance adjusted using sprite i's direction
ldh [hCollidingSpriteAdjustedDistance], a
ld a, b
ldh [hFF91], a ; store 7 or 9 depending on sprite i's delta X
ldh [hCollidingSpriteTempXValue], 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.
Expand All @@ -265,15 +265,15 @@ DetectCollisionBetweenSprites:
ld b, 9

.next4
ldh a, [hFF92] ; a = distance adjusted using sprite i's direction
ldh a, [hCollidingSpriteAdjustedDistance]
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
ldh a, [hFF91] ; a = 7 or 9 depending on sprite i's delta X
ldh a, [hCollidingSpriteTempXValue] ; a = 7 or 9 depending on sprite i's delta X
ld b, a
ldh a, [hFF90] ; a = 7 or 9 depending on sprite i's delta Y
ldh a, [hCollidingSpriteTempYValue] ; 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.
Expand All @@ -296,7 +296,7 @@ DetectCollisionBetweenSprites:
; to indicate which sprite the collision occurred with
inc l
inc l
ldh a, [hFF8F] ; a = loop counter
ldh a, [hCollidingSpriteOffset]
ld de, SpriteCollisionBitTable
add a
add e
Expand All @@ -313,7 +313,7 @@ DetectCollisionBetweenSprites:
ld [hl], a

.next
ldh a, [hFF8F] ; a = loop counter
ldh a, [hCollidingSpriteOffset]
inc a
cp $10
jp nz, .loop
Expand Down
2 changes: 1 addition & 1 deletion home/hidden_objects.asm
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ CheckForHiddenObjectOrBookshelfOrCardKeyDoor::
jr .done
.hiddenObjectNotFound
farcall PrintBookshelfText
ldh a, [hFFDB]
ldh a, [hInteractedWithBookshelf]
and a
jr z, .done
.nothingFound
Expand Down
13 changes: 5 additions & 8 deletions ram/hram.asm
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ hSpriteScreenX:: db
hSpriteScreenY:: db

NEXTU
hFF8F:: db
hFF90:: db
hFF91:: db
hFF92:: db
hCollidingSpriteOffset:: db
hCollidingSpriteTempYValue:: db
hCollidingSpriteTempXValue:: db
hCollidingSpriteAdjustedDistance:: db
ENDU

hTilePlayerStandingOn:: db
Expand Down Expand Up @@ -327,11 +327,8 @@ hItemCounter::
hSavedCoordIndex::
hMissableObjectIndex::
hGymTrashCanRandNumMask::
hInteractedWithBookshelf::
db

NEXTU
hFFDB:: db
hFFDC:: db
ENDU

ds 1
Expand Down
2 changes: 1 addition & 1 deletion ram/wram.asm
Original file line number Diff line number Diff line change
Expand Up @@ -1914,7 +1914,7 @@ wMissableObjectFlagsEnd::
ds 7

; temp copy of SPRITESTATEDATA1_IMAGEINDEX (used for sprite facing/anim)
wd5cd:: db
wSpriteImageIndexBackup:: db

; each entry consists of 2 bytes
; * the sprite ID (depending on the current map)
Expand Down

0 comments on commit 7a7a6d6

Please sign in to comment.