Added basic bat rendering
authorLukas Krickl <lukas@krickl.dev>
Wed, 20 Nov 2024 15:52:35 +0000 (16:52 +0100)
committerLukas Krickl <lukas@krickl.dev>
Wed, 20 Nov 2024 15:52:35 +0000 (16:52 +0100)
src/actor.s

index 11dfe2a2111ce8f311bf048080dcfc95ce2ef649..715715885908e77da8e69ca5c7605596db77f1d0 100644 (file)
@@ -1,4 +1,7 @@
 
+#define BAT_TILE_IDLE1 0x22
+#define BAT_TILE_IDLE2 0x32
+
   ; skips actor if acto != who
   ; returns:
   ;   nz: if actor is not who
   call who_next
 #endmacro 
 
+  ; stores hl back into soam ptr
+#macro actor_store_soam_ptr
+  ; store soam ptr again
+  ld a, l
+  ld [actor_soam_ptr+1], a
+  ld a, h
+  ld [actor_soam_ptr], a
+#endmacro
+
 ; function ptrs for each actor type 
 ; inputs:
 ;   bc: actor ptr
@@ -51,24 +63,37 @@ actor_update_bat:
   
   inc bc ; bc = actor_y 
 
+  ; tile 1
   ld a, [bc] ; a = y
   ld [hl+], a ; set y
-  inc bc
+  inc bc ; bc = actor_x
 
   ld a, [bc] ; a = x
   ld [hl+], a ; set x
 
-  ld a, PLAYER_TILE_IDLE1
+  ld a, BAT_TILE_IDLE1
   ld [hl+], a
   
   xor a, a
   ld [hl+], a
-  
-  ; store soam ptr again
-  ld a, l
-  ld [actor_soam_ptr+1], a
-  ld a, h
-  ld [actor_soam_ptr], a
+
+  ; tile 2
+  dec bc ; bc = actor_y
+  ld a, [bc]
+  ld [hl+], a ; set y
+
+  inc bc ; bc = actor_x 
+  ld a, [bc]
+  add a, 8 
+  ld [hl+], a ; set x
+
+  ld a, BAT_TILE_IDLE2
+  ld [hl+], a
+
+  xor a, a
+  ld [hl+], a
+
+  actor_store_soam_ptr
 
   ret
 
@@ -102,11 +127,7 @@ actor_update_rock:
   xor a, a
   ld [hl+], a
   
-  ; store soam ptr again
-  ld a, l
-  ld [actor_soam_ptr+1], a
-  ld a, h
-  ld [actor_soam_ptr], a
+  actor_store_soam_ptr
 
   ret