summaryrefslogtreecommitdiff
path: root/engine/sprites.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/sprites.asm')
-rwxr-xr-xengine/sprites.asm75
1 files changed, 43 insertions, 32 deletions
diff --git a/engine/sprites.asm b/engine/sprites.asm
index 3bcad90b3..912983231 100755
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -23,8 +23,8 @@ PlaySpriteAnimations: ; 8cf69
push bc
push af
- ld a, $0
- ld [wc3b5], a
+ ld a, 0 * 4
+ ld [wOAMRetentionSize], a
call DoNextFrameForAllSprites
pop af
@@ -58,11 +58,11 @@ DoNextFrameForAllSprites: ; 8cf7a
dec e
jr nz, .loop
- ld a, [wc3b5]
+ ld a, [wOAMRetentionSize]
ld l, a
ld h, Sprites / $0100
-.loop2 ; Clear (Sprites + [wc3b5] --> SpritesEnd)
+.loop2 ; Clear (Sprites + [wOAMRetentionSize] --> SpritesEnd)
ld a, l
cp SpritesEnd % $100
jr nc, .done
@@ -98,11 +98,11 @@ DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8)
dec e
jr nz, .loop
- ld a, [wc3b5]
+ ld a, [wOAMRetentionSize]
ld l, a
ld h, (Sprites + $40) / $100
-.loop2 ; Clear (Sprites + [wc3b5] --> Sprites + $40)
+.loop2 ; Clear (Sprites + [wOAMRetentionSize] --> Sprites + $40)
ld a, l
cp (Sprites + 16 * 4) % $100
jr nc, .done
@@ -213,7 +213,7 @@ endr
Function8d036: ; 8d036
; Clear the index field of the struct in bc.
- ld hl, 0
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $0
ret
@@ -240,25 +240,29 @@ Function8d04c: ; 8d04c
cp -3
jr z, .done
cp -4
- jr z, .almost
+ jr z, .delete
call Function8d1a2 ; OAM?
- ld a, [wc3ba]
+ ; add byte to [wCurrAnimVTile]
+ ld a, [wCurrAnimVTile]
add [hl]
- ld [wc3ba], a
+ ld [wCurrAnimVTile], a
inc hl
+ ; load pointer into hl
ld a, [hli]
ld h, [hl]
ld l, a
push bc
- ld a, [wc3b5]
+ ld a, [wOAMRetentionSize]
ld e, a
ld d, Sprites / $100
ld a, [hli]
- ld c, a
+ ld c, a ; number of objects
.loop
- ld a, [wc3bc]
+ ; first byte: y (px)
+ ; [de] = [wCurrAnimYCoord] + [wCurrAnimYOffset] + [wc3bf] + Function8d0be([hl])
+ ld a, [wCurrAnimYCoord]
ld b, a
- ld a, [wc3be]
+ ld a, [wCurrAnimYOffset]
add b
ld b, a
ld a, [wc3bf]
@@ -269,9 +273,11 @@ Function8d04c: ; 8d04c
ld [de], a
inc hl
inc de
- ld a, [wc3bb]
+ ; second byte: x (px)
+ ; [de] = [wCurrAnimXCoord] + [wCurrAnimXOffset] + [wc3c0] + Function8d0ce([hl])
+ ld a, [wCurrAnimXCoord]
ld b, a
- ld a, [wc3bd]
+ ld a, [wCurrAnimXOffset]
add b
ld b, a
ld a, [wc3c0]
@@ -282,32 +288,36 @@ Function8d04c: ; 8d04c
ld [de], a
inc hl
inc de
- ld a, [wc3ba]
+ ; third byte: vtile
+ ; [de] = [wCurrAnimVTile] + [hl]
+ ld a, [wCurrAnimVTile]
add [hl]
ld [de], a
inc hl
inc de
+ ; fourth byte: attributes
+ ; [de] = Function8d0de([hl])
call Function8d0de
ld [de], a
inc hl
inc de
ld a, e
- ld [wc3b5], a
+ ld [wOAMRetentionSize], a
cp SpritesEnd % $100
- jr nc, .outofroom
+ jr nc, .reached_the_end
dec c
jr nz, .loop
pop bc
jr .done
-.almost
+.delete
call Function8d036
.done
and a
ret
-.outofroom
+.reached_the_end
pop bc
scf
ret
@@ -359,18 +369,18 @@ Function8d0de: ; 8d0de
Function8d0ec: ; 8d0ec
xor a
ld [wc3b8], a
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld a, [hli]
- ld [wc3ba], a
+ ld [wCurrAnimVTile], a
ld a, [hli]
- ld [wc3bb], a
+ ld [wCurrAnimXCoord], a
ld a, [hli]
- ld [wc3bc], a
+ ld [wCurrAnimYCoord], a
ld a, [hli]
- ld [wc3bd], a
+ ld [wCurrAnimXOffset], a
ld a, [hli]
- ld [wc3be], a
+ ld [wCurrAnimYOffset], a
ret
; 8d109
@@ -420,22 +430,22 @@ Function8d132: ; 8d132
add hl, bc
ld a, [hl]
and a
- jr z, .done ; finished the current sequence
+ jr z, .next_frame ; finished the current sequence
dec [hl]
call Function8d189 ; load pointer from Unknown_8d6e6
ld a, [hli]
push af
jr .okay
-.done
+.next_frame
ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
inc [hl]
call Function8d189 ; load pointer from Unknown_8d6e6
ld a, [hli]
- cp $fe
+ cp -2
jr z, .minus_2
- cp $ff
+ cp -1
jr z, .minus_1
push af
@@ -486,7 +496,7 @@ endr
Function8d189: ; 8d189
; Get the data for the current frame for the current animation sequence
- ; Unknown_8d6e6 + 2 * SpriteAnim[SPRITEANIMSTRUCT_01] + 3 * SpriteAnim[SPRITEANIMSTRUCT_FRAME]
+ ; Unknown_8d6e6[SpriteAnim[SPRITEANIMSTRUCT_01]][SpriteAnim[SPRITEANIMSTRUCT_FRAME]]
ld hl, SPRITEANIMSTRUCT_01
add hl, bc
ld e, [hl]
@@ -508,6 +518,7 @@ endr
; 8d1a2
Function8d1a2: ; 8d1a2
+; Load OAM data pointer
ld e, a
ld d, 0
ld hl, Unknown_8d94d