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
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
ld a, [bc] ; a = x
ld [hl+], a ; set x
- ld a, BAT_TILE_IDLE1
+ ld a, [tmp]
ld [hl+], a
xor a, a
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
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