feat: add animation

main
Louis Pearson 2024-04-20 12:08:07 -06:00
parent 1c7f5f5918
commit e478de9875
2 changed files with 65 additions and 55 deletions

120
main.asm
View File

@ -69,7 +69,7 @@ WaitVBlank:
ld bc, 160
ld d, 0
call Memset
; Turn the LCD on
ld a, LCDCF_ON | LCDCF_BGON | LCDCF_OBJON | LCDCF_OBJ8
ld [rLCDC], a
@ -88,6 +88,7 @@ WaitVBlank:
ldh [rIF], a
; Enable interrupts
ei
jp Main
Main::
call ResetShadowOAM
@ -197,6 +198,21 @@ HandleInput::
ret
HandleRender::
; Calculate current frame for player
ld a, [hFrameCounter]
and a, %0000_0111
cp a, 0
jr nz, .skipAnim
ld a, [wMetaspritePosition.frame]
inc a
cp PlayerMetasprite.framesEnd - PlayerMetasprite.framesStart
jr nz, .skipAnimReset
ld a, 0
.skipAnimReset
ld [wMetaspritePosition.frame], a
.skipAnim
; Render the player
; load de
ld a, [wMetaspritePosition.x]
@ -216,7 +232,23 @@ HandleRender::
adc a, b
ld b, a
ld hl, CatMetasprite
; Add frameOffset
ld hl, PlayerMetasprite.framesStart
ld a, [wMetaspritePosition.frame]
add a, l
ld l, a
jr nc, .noCarry1
inc h
.noCarry1
ld a, [hl]
ld hl, PlayerMetasprite
add a, l
ld l, a
jr nc, .noCarry2
inc h
.noCarry2
call RenderMetasprite
; Render the shadow
@ -379,11 +411,13 @@ VBlankInterrupt:
SECTION "VBlank Handler", ROM0
VBlankHandler:
ldh a, [hFrameCounter]
ld a, HIGH(wShadowOAM)
call hOAMDMA
ldh a, [hFrameCounter]
inc a
ldh [hFrameCounter], a
; Reset registers to orignal state
pop hl
pop de
@ -407,68 +441,42 @@ Tilemap:
INCBIN "tileset.tilemap"
TilemapEnd:
SECTION "Level data", ROM0
db $03 ; width
db $03 ; height
; Each byte stores whether it is solid or not
; Z = 1
db $01
db $01
db $01
db $01
db $01
db $01
db $01
db $01
db $00
; Z = 2
db $01
db $01
db $01
db $01
db $01
db $01
db $00
db $00
db $00
; Z = 3
db $01
db $00
db $00
db $00
db $00
db $00
db $00
db $00
db $00
SECTION "Graphics", ROM0
GfxCat:
INCBIN "sprites.2bpp"
.end::
CatMetasprite:
db 0, 0, 2, 0
db 8, 0, 6, 0
db 128
ShadowMetasprite:
db 12, 0, 1, 0
db 128
PlayerMetasprite:
.vertWalk1:
db 0, 0, 2, 0
db 8, 0, 6, 0
db 128
.vertWalk2:
db 0, 0, 2, 0
db 8, 0, 7, 0
db 128
.vertWalk3:
db 0, 0, 2, 0
db 8, 0, 6, 0
db 128
.vertWalk4:
db 0, 0, 2, 0
db 8, 0, 8, 0
db 128
.framesStart
db .vertWalk1 - PlayerMetasprite
db .vertWalk2 - PlayerMetasprite
db .vertWalk3 - PlayerMetasprite
db .vertWalk4 - PlayerMetasprite
.framesEnd
SECTION "Position Vars", WRAM0
wMetaspriteBegin:
wMetaspriteBegin:
; Q12.4 fixed-point X posiition
wMetaspritePosition::
.x:
@ -477,6 +485,8 @@ wMetaspritePosition::
dw
.z:
dw
.frame:
db
; Q4.4 fixed-point velocity
wMetaspriteVelocity::

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 328 B