summaryrefslogtreecommitdiff
path: root/src/engine/home.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/home.asm')
-rw-r--r--src/engine/home.asm139
1 files changed, 72 insertions, 67 deletions
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 2335a89..ff887fd 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -11339,139 +11339,144 @@ Func_3ca4: ; 3ca4 (0:3ca4)
Func_3cb4: ; 3cb4 (0:3cb4)
ldh a, [hBankROM]
push af
- ld a, BANK(Func_12a21)
+ ld a, BANK(HandleAllSpriteAnimations)
call BankswitchROM
- call Func_12a21
+ call HandleAllSpriteAnimations
pop af
call BankswitchROM
ret
-; refresh sprites?
-Func_3cc4: ; 3cc4 (0:3cc4)
+; hl - pointer to animation frame
+; wd5d6 - bank of animation frame
+DrawSpriteAnimationFrame: ; 3cc4 (0:3cc4)
ldh a, [hBankROM]
push af
ld a, [wd5d6]
call BankswitchROM
- ld a, [wd5d1]
+ ld a, [wCurrSpriteXPos]
cp $f0
- ld a, $00
- jr c, .asm_3cd7
+ ld a, 0
+ jr c, .notNearRight
dec a
-.asm_3cd7
- ld [wd5d4], a
- ld a, [wd5d2]
+.notNearRight
+ ld [wCurrSpriteRightEdgeCheck], a
+ ld a, [wCurrSpriteYPos]
cp $f0
- ld a, $00
- jr c, .asm_3ce4
+ ld a, 0
+ jr c, .setBottomEdgeCheck
dec a
-.asm_3ce4
- ld [wd5d5], a
+.setBottomEdgeCheck
+ ld [wCurrSpriteBottomEdgeCheck], a
ld a, [hli]
or a
jp z, .done
ld c, a
-.asm_3ced
+.loop
push bc
push hl
- ld b, $00
+ ld b, 0
bit 7, [hl]
- jr z, .asm_3cf6
+ jr z, .beginY
dec b
-.asm_3cf6
- ld a, [wd5d0]
- bit 6, a
- jr z, .asm_3d10
+.beginY
+ ld a, [wCurrSpriteAttributes]
+ bit OAM_Y_FLIP, a
+ jr z, .unflippedY
ld a, [hl]
- add $08
+ add 8 ; size of a tile
ld c, a
- ld a, $00
+ ld a, 0
adc b
ld b, a
- ld a, [wd5d2]
+ ld a, [wCurrSpriteYPos]
sub c
ld e, a
- ld a, [wd5d5]
+ ld a, [wCurrSpriteBottomEdgeCheck]
sbc b
- jr .asm_3d19
-.asm_3d10
- ld a, [wd5d2]
+ jr .finishYPosition
+.unflippedY
+ ld a, [wCurrSpriteYPos]
add [hl]
ld e, a
- ld a, [wd5d5]
+ ld a, [wCurrSpriteBottomEdgeCheck]
adc b
-.asm_3d19
+.finishYPosition
or a
- jr nz, .asm_3d64
+ jr nz, .endCurrentIteration
inc hl
- ld b, $00
+ ld b, 0
bit 7, [hl]
- jr z, .asm_3d24
+ jr z, .beginX
dec b
-.asm_3d24
- ld a, [wd5d0]
- bit 5, a
- jr z, .asm_3d3e
+.beginX
+ ld a, [wCurrSpriteAttributes]
+ bit OAM_X_FLIP, a
+ jr z, .unflippedX
ld a, [hl]
- add $08
+ add 8 ; size of a tile
ld c, a
- ld a, $00
+ ld a, 0
adc b
ld b, a
- ld a, [wd5d1]
+ ld a, [wCurrSpriteXPos]
sub c
ld d, a
- ld a, [wd5d4]
+ ld a, [wCurrSpriteRightEdgeCheck]
sbc b
- jr .asm_3d47
-.asm_3d3e
- ld a, [wd5d1]
+ jr .finishXPosition
+.unflippedX
+ ld a, [wCurrSpriteXPos]
add [hl]
ld d, a
- ld a, [wd5d4]
+ ld a, [wCurrSpriteRightEdgeCheck]
adc b
-.asm_3d47
+.finishXPosition
or a
- jr nz, .asm_3d64
+ jr nz, .endCurrentIteration
inc hl
- ld a, [wd5d3]
+ ld a, [wCurrSpriteTileID]
add [hl]
ld c, a
inc hl
- ld a, [wd5d0]
+ ld a, [wCurrSpriteAttributes]
add [hl]
- and $17
+ and OAM_PALETTE | (1 << OAM_OBP_NUM)
ld b, a
- ld a, [wd5d0]
+ ld a, [wCurrSpriteAttributes]
xor [hl]
- and $e0
+ and (1 << OAM_X_FLIP) | (1 << OAM_Y_FLIP) | (1 << OAM_PRIORITY)
or b
ld b, a
inc hl
call SetOneObjectAttributes
-.asm_3d64
+.endCurrentIteration
pop hl
- ld bc, $4
+ ld bc, 4 ; size of info for one sub tile
add hl, bc
pop bc
dec c
- jr nz, .asm_3ced
+ jr nz, .loop
.done
pop af
call BankswitchROM
ret
-Func_3d72: ; 3d72 (0:3d72)
+; Loads a pointer to the current animation frame into SPRITE_ANIM_FRAME_DATA_POINTER using
+; the current frame's offset
+; [wd4ca] - current frame offset
+; wTempPointer* - Pointer to current Animation
+GetAnimationFramePointer: ; 3d72 (0:3d72)
ldh a, [hBankROM]
push af
push hl
push hl
ld a, [wd4ca]
cp $ff
- jr nz, .asm_3d84
- ld de, Unknown_80e5a
+ jr nz, .useLoadedOffset
+ ld de, SpriteNullAnimationPointer
xor a
- jr .asm_3da1
-.asm_3d84
+ jr .loadPointer
+.useLoadedOffset
ld a, [wTempPointer]
ld l, a
ld a, [wTempPointer + 1]
@@ -11487,13 +11492,13 @@ Func_3d72: ; 3d72 (0:3d72)
ld e, a
inc hl
ld a, [hl]
- adc $0
+ adc 0
ld d, a
pop af
-.asm_3da1
- add BANK(Unknown_80e5a)
+.loadPointer
+ add BANK(SpriteNullAnimationPointer)
pop hl
- ld bc, $000b
+ ld bc, SPRITE_ANIM_FRAME_BANK
add hl, bc
ld [hli], a
call BankswitchROM
@@ -11509,7 +11514,7 @@ Func_3d72: ; 3d72 (0:3d72)
GetFirstSpriteAnimBufferProperty: ; 3db7 (0:3db7)
push bc
- ld c, SPRITE_ANIM_FIELD_00
+ ld c, SPRITE_ANIM_ENABLED
call GetSpriteAnimBufferProperty
pop bc
ret
@@ -11543,7 +11548,7 @@ GetSpriteAnimBufferProperty_SpriteInA:
Func_3ddb: ; 3ddb (0:3ddb)
push hl
push bc
- ld c, SPRITE_ANIM_FIELD_0F
+ ld c, SPRITE_ANIM_FLAGS
call GetSpriteAnimBufferProperty_SpriteInA
res 2, [hl]
pop bc
@@ -11553,7 +11558,7 @@ Func_3ddb: ; 3ddb (0:3ddb)
Func_3de7: ; 3de7 (0:3de7)
push hl
push bc
- ld c, SPRITE_ANIM_FIELD_0F
+ ld c, SPRITE_ANIM_FLAGS
call GetSpriteAnimBufferProperty_SpriteInA
set 2, [hl]
pop bc