animation: Added animation ptr handling
authorLukas Krickl <lukas@krickl.dev>
Fri, 31 Jan 2025 04:36:51 +0000 (05:36 +0100)
committerLukas Krickl <lukas@krickl.dev>
Fri, 31 Jan 2025 04:36:51 +0000 (05:36 +0100)
src/actor.s
src/animation.s
src/mem.s
src/wram.s

index a02a9c158b349204ea1eef1f11036e476c3ea526..b5036e190d102106ab5629b6f6b2978a39881ccb 100644 (file)
@@ -526,4 +526,9 @@ who_next:
     ld a, WHO_PLAYER
 @no_player:
   ld [who], a
+
+  ; advance some other values 
+  ; related to the next turn starting 
+  call anim_next
+
   ret
index 6e39ae3b800798c2bef71ae325f59e0ce72cdfd3..5fc9ea2ed5edb132782003726176b10c6b39d8c1 100644 (file)
@@ -2,6 +2,36 @@
 ; each frame the latest animation is 
 ; updated
 
+  ; sets up animation ptr 
+anim_init:
+  ld hl, anim_table
+  ld a, l
+  ld [anim_ptr], a
+  ld a, h
+  ld [anim_ptr+1], a
+  ret
+
+  ; advances animation ptr to
+  ; its next value 
+anim_next:
+  ld a, [who]
+  cp a, 0
+  jp z, anim_init
+
+  ld a, [anim_ptr]
+  ld l, a
+  ld a, [anim_ptr+1]
+  ld h, a
+
+  ld de, anim_size
+  add hl, de ; hl = next animation ptr
+
+  ld a, l
+  ld [anim_ptr], a
+  ld a, h
+  ld [anim_ptr+1], a
+
+  ret
 
 anim_walk_north:
   ret
index 7e24aabe73d999868377c5096e4a72faa790652a..df73aa6676a12cb6e4cc6ac9d5fe52ca1f28256f 100644 (file)
--- a/src/mem.s
+++ b/src/mem.s
@@ -6,6 +6,7 @@ mem_init:
   call memset
   
   call rand_init
+  call anim_init 
 
   ; copy shadow oam dma function 
   ld de, shadow_oam_to_oam 
index 992f5e14647ce03ad0e3ebb56f93709267c70da7..2ab803b1bdd81947b726414d5a39c92a142807c4 100644 (file)
@@ -103,6 +103,10 @@ anim_step_x: .adv 1
 anim_target_y: .adv 1
 anim_target_x: .adv 1
 
+  ; pointing to current animation 
+  ; advanced in who_next 
+  ; l/h ptr
+anim_ptr: .adv 2
   ; 1 animation buffer for each actor + player
 anim_table: .adv anim_size * (ACTORS_MAX + 1)