From 6018d8ec9ab8c1155ca9915907d17aff8be935e1 Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Mon, 25 Nov 2024 15:24:28 +0100 Subject: [PATCH] Added bat tiles for simple animations --- src/actor.s | 73 ++++++++++++++++++++++++++++++++-------------- tiles/tileset0.inc | 24 +++++++-------- 2 files changed, 63 insertions(+), 34 deletions(-) diff --git a/src/actor.s b/src/actor.s index d36fef8..9a32880 100644 --- a/src/actor.s +++ b/src/actor.s @@ -31,6 +31,26 @@ ld [actor_soam_ptr], a #endmacro +actor_anim_table_bat: +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE1 +.db BAT_TILE_IDLE2 +.db BAT_TILE_IDLE2 +.db BAT_TILE_IDLE2 +.db BAT_TILE_IDLE2 +.db BAT_TILE_IDLE2 +.db BAT_TILE_IDLE2 +.db BAT_TILE_IDLE2 +.db BAT_TILE_IDLE2 + + ; function ptrs for each actor type ; inputs: ; bc: actor ptr @@ -56,6 +76,16 @@ actor_update_bat: actor_skip_turn @skip: + ; load tile to use into tmp + ld hl, actor_anim_table_bat + ld a, [frame_count] + and a, 0b1111 ; even and odd frames + ld d, 0 + ld e, a + add hl, de ; hl = correct tile index + ld a, [hl] + ld [tmp], a + ; load oam ptr ld a, [actor_soam_ptr] ld h, a @@ -72,7 +102,7 @@ actor_update_bat: ld a, [bc] ; a = x ld [hl+], a ; set x - ld a, BAT_TILE_IDLE1 + ld a, [tmp] ld [hl+], a xor a, a @@ -88,10 +118,10 @@ actor_update_bat: add a, 8 ld [hl+], a ; set x - ld a, BAT_TILE_IDLE2 + ld a, [tmp] ld [hl+], a - xor a, a + ld a, OAM_FXFLIP ld [hl+], a actor_store_soam_ptr @@ -147,28 +177,27 @@ actors_update: ld bc, actor_table @loop: - push de - push bc + push de + push bc - ; store current actor in act - ld a, d - dec a ; -1 to get 0-index counter - ld [act], a + ; store current actor in act + ld a, d + dec a ; -1 to get 0-index counter + ld [act], a - ld hl, actor_update_table - ld a, [bc] - cp a, 0 - call nz, call_tbl - call z, actor_update_null + ld hl, actor_update_table + ld a, [bc] + cp a, 0 + call nz, call_tbl + call z, actor_update_null - pop bc - pop de -@skip: - ; inc de sizeof(actor) times -.rep i, actor_size, 1, inc bc - dec d - ld a, d - cp a, 0 + pop bc + pop de + + ; inc de sizeof(actor) times + .rep i, actor_size, 1, inc bc + dec d + ld a, d jr nz, @loop REL ret diff --git a/tiles/tileset0.inc b/tiles/tileset0.inc index 8394c4a..2aeca1b 100644 --- a/tiles/tileset0.inc +++ b/tiles/tileset0.inc @@ -451,20 +451,20 @@ ; tile 50 .chr 00000000 .chr 00000000 -.chr 00000010 -.chr 02000333 -.chr 03003333 -.chr 03033333 -.chr 33333330 -.chr 31333300 +.chr 00000000 +.chr 00000020 +.chr 00000030 +.chr 00000030 +.chr 00000333 +.chr 00003313 ; tile 51 -.chr 31333000 +.chr 00033313 +.chr 00033333 +.chr 00333330 +.chr 03333200 +.chr 33330000 .chr 33300000 -.chr 03000000 -.chr 00200000 -.chr 00000000 -.chr 00000000 -.chr 00000000 +.chr 01000000 .chr 00000000 ; tile 52 .chr 00000000 -- 2.30.2