Added bat tiles for simple animations
authorLukas Krickl <lukas@krickl.dev>
Mon, 25 Nov 2024 14:24:28 +0000 (15:24 +0100)
committerLukas Krickl <lukas@krickl.dev>
Mon, 25 Nov 2024 14:24:28 +0000 (15:24 +0100)
src/actor.s
tiles/tileset0.inc

index d36fef805bd22c849bc33417d26b23ac4044c16d..9a32880d8cb5351ebabf64fdb50641e2667145c5 100644 (file)
   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
index 8394c4a7d9ef57bb59dc9a3103fe46dfb86402fb..2aeca1b65ac1faabe3da22f025d7d800e909521b 100644 (file)
 ; 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