feat: add animation
parent
1c7f5f5918
commit
e478de9875
116
main.asm
116
main.asm
|
@ -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,66 +441,40 @@ 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:
|
||||
; Q12.4 fixed-point X posiition
|
||||
|
@ -477,6 +485,8 @@ wMetaspritePosition::
|
|||
dw
|
||||
.z:
|
||||
dw
|
||||
.frame:
|
||||
db
|
||||
|
||||
; Q4.4 fixed-point velocity
|
||||
wMetaspriteVelocity::
|
||||
|
|
BIN
sprites.png
BIN
sprites.png
Binary file not shown.
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 328 B |
Loading…
Reference in New Issue