aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--definitions.gbasm4
-rw-r--r--entity/actions.gbasm4
-rw-r--r--entity/init.gbasm77
-rw-r--r--entity/list.gbasm60
-rw-r--r--gui.gbasm8
-rw-r--r--main.gbasm11
-rw-r--r--scripts/generate-tiledata.py118
-rw-r--r--sprites/frog/side.pngbin168 -> 167 bytes
-rw-r--r--test.rombin0 -> 8 bytes
-rw-r--r--tiles.gbasm55
-rw-r--r--tileset.gbasm174
11 files changed, 417 insertions, 94 deletions
diff --git a/definitions.gbasm b/definitions.gbasm
index f166d8c..4fb03f2 100644
--- a/definitions.gbasm
+++ b/definitions.gbasm
@@ -123,6 +123,10 @@
; }
.DEFINE mem_number_of_rooms ($c8a0)
+.DEFINE mem_loaded_entities_indices $c8a8 ; Takes the memory from $c8a8 to $c8ae
+.DEFINE mem_loaded_enemies_indices $c8ab ; Takes the memory from $c8ab to $c8ae
+.DEFINE mem_loaded_entities_indices_end $c8af ; Takes the memory from $c8a8 to $c8ae
+
.DEFINE mem_object_list $c900 ; Takes the memory from c900 to c97f
; struct objects {
; sprite: u8,
diff --git a/entity/actions.gbasm b/entity/actions.gbasm
index 2616e49..a8045dd 100644
--- a/entity/actions.gbasm
+++ b/entity/actions.gbasm
@@ -140,14 +140,14 @@ Open_Dialogue:
LD BC, =Text_1
CALL =Print_str
- LD A, $01
+ LD A, $07
LD $mem_display_flag, A
LD A, $mem_bunny_direction
AND $0f
LD $mem_bunny_direction, A
- LD A, $enum_dungeon_menu_mode
+ LD A, $enum_dungeon_dialogue_mode
LD $mem_requested_mode, A
RET
diff --git a/entity/init.gbasm b/entity/init.gbasm
index ba23183..953e45e 100644
--- a/entity/init.gbasm
+++ b/entity/init.gbasm
@@ -66,11 +66,11 @@ Initialize_Entities:
LD A, $ff
LD $mem_bunny_current_room_idx, A
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
+ CALL =Initialize_Enemy
Fix_Bunny_screen:
LD A, $mem_bunny_x
@@ -95,22 +95,32 @@ Fix_Bunny_screen:
RET
-Initialize_Fox:
+Initialize_Enemy: ; HL => pointer to entity struct
LD A, $mem_enemies_alive_count
INC A
LD $mem_enemies_alive_count, A
- LD A, $0d
+ CALL =RNG_Step
+ AND $03
+ ADD $03
+ LD E, A
+ SLA A
+ SLA A
+ LD B, A
+ SLA A
+ ADD B
+ INC A
LD (HL+), A
+
LD A, $mem_bunny_current_room_idx
LD $tmp_var_6, A
CP $FF
- JR Z, =Initialize_Fox.All_rooms_allowed
+ JR Z, =Initialize_Enemy.All_rooms_allowed
LD B, A
- Initialize_Fox.Skip_bunny_room:
+ Initialize_Enemy.Skip_bunny_room:
LD A, $mem_number_of_rooms
CP $01
- JR Z, =Initialize_Fox.All_rooms_allowed
+ JR Z, =Initialize_Enemy.All_rooms_allowed
DEC A
CALL =RNG_Bound
@@ -120,14 +130,14 @@ Initialize_Fox:
LD A, B
CP C
LD A, C
- JR C, =Initialize_Fox.Room_restriction.end
+ JR C, =Initialize_Enemy.Room_restriction.end
DEC A
- JR =Initialize_Fox.Room_restriction.end
+ JR =Initialize_Enemy.Room_restriction.end
- Initialize_Fox.All_rooms_allowed:
+ Initialize_Enemy.All_rooms_allowed:
LD A, $mem_number_of_rooms
CALL =RNG_Bound
- Initialize_Fox.Room_restriction.end:
+ Initialize_Enemy.Room_restriction.end:
LD $tmp_var_4, A
SLA A
SLA A
@@ -136,7 +146,6 @@ Initialize_Fox:
LD B, $c8
- ; X
LD A, (BC)
LD D, A
INC BC
@@ -163,19 +172,45 @@ Initialize_Fox:
LD A, $03
LD (HL+), A
+ LD BC, =Entity_list
+ LD D, high($mem_loaded_entities_indices)
+ LD A, low($mem_loaded_entities_indices)
+ ADD E
+ LD E, A
+ LD A, (DE)
+ DBG
+ SLA A
+ SLA A
+ SLA A
+ ADD $02
+ ADD low(=Entity_list)
+ LD C, A
+ LD A, high(=Entity_list)
+ ADC $00
+ LD B, A
+
; Turn
- LD A, $02
+ LD A, (BC)
LD (HL+), A
+ DBG
+
+ INC BC
; Action
- LD A, $01
+ LD A, (BC)
LD (HL+), A
- LD A, $04
- LD (HL), A
+ INC BC
+
+ LD A, (BC)
+ LD (HL+), A
+
+ XOR A
+ LD (HL+), A
+ LD (HL+), A
LD A, L
- ADD $0a
+ ADD $07
LD L, A
RET
@@ -209,5 +244,5 @@ Respawn_Entities:
CP (HL)
JR NZ, =FindFreeEntity.loop
- CALL =Initialize_Fox
+ CALL =Initialize_Enemy
RET
diff --git a/entity/list.gbasm b/entity/list.gbasm
new file mode 100644
index 0000000..d534d4d
--- /dev/null
+++ b/entity/list.gbasm
@@ -0,0 +1,60 @@
+Entity_list:
+ .Fox:
+ ; Sprite address
+ .DB =OBJ_Tile_Image_Data.Fox
+
+ ; Turn Jump Table index
+ .DB $02
+
+ ; Interaction Jump Table index
+ .DB $01
+
+ ; Starting health
+ .DB $04
+
+ .PADTO =.Fox+8
+
+ .Frog:
+ ; Sprite address
+ .DB =OBJ_Tile_Image_Data.Frog
+
+ ; Turn Jump Table index
+ .DB $00
+
+ ; Interaction Jump Table index
+ .DB $02
+
+ ; Starting health
+ .DB $00
+
+ .PADTO =.Frog+8
+
+ .Mouse:
+ ; Sprite address
+ .DB =OBJ_Tile_Image_Data.Mouse
+
+ ; Turn Jump Table index
+ .DB $00
+
+ ; Interaction Jump Table index
+ .DB $02
+
+ ; Starting health
+ .DB $00
+
+ .PADTO =.Mouse+8
+
+ .Fimsh:
+ ; Sprite address
+ .DB =OBJ_Tile_Image_Data.Fimsh
+
+ ; Turn Jump Table index
+ .DB $00
+
+ ; Interaction Jump Table index
+ .DB $02
+
+ ; Starting health
+ .DB $00
+
+ .PADTO =.Fimsh+8
diff --git a/gui.gbasm b/gui.gbasm
index 6bfaae0..f0a3d0c 100644
--- a/gui.gbasm
+++ b/gui.gbasm
@@ -142,8 +142,12 @@ Move_dialogue_cursor:
Check_dialogue_action:
LD A, $mem_current_mode
CP $enum_dungeon_menu_mode
+ JR Z, =.Check_exit
+
+ CP $enum_dungeon_dialogue_mode
RET NZ
+ .Check_exit:
LD A, $mem_last_button_action
LD B, A
LD A, $mem_button_action
@@ -154,6 +158,10 @@ Check_dialogue_action:
BIT 0, A
RET Z
+ LD A, $mem_current_mode
+ CP $enum_dungeon_menu_mode
+ RET NZ
+
LD HL, $dialogue_menu_choice1_routine
LD A, $mem_menu_cursor_position
diff --git a/main.gbasm b/main.gbasm
index dd4f52a..0e8d6e5 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -76,12 +76,22 @@ Entrypoint:
LD $mem_bunny_health, A
New_Dungeon:
LD SP, $fffe
+ LD HL, $mem_loaded_enemies_indices
+ LD A, $00
+ LD (HL+), A
+ INC A
+ LD (HL+), A
+ INC A
+ LD (HL+), A
+ INC A
+ LD (HL+), A
CALL =Dungeon_Generation
CALL =Initialize_Entities
CALL =Initialize_Objects
CALL =Load_Tile
CALL =Load_Map
CALL =Load_Objects
+ CALL =Reload_Entities_Tile_Data
LD A, $00
LD $mem_bunny_flags, A
@@ -231,6 +241,7 @@ STAT_Entrypoint:
.INCLUDE "entity/actions.gbasm"
.INCLUDE "entity/collisions.gbasm"
.INCLUDE "entity/display.gbasm"
+.INCLUDE "entity/list.gbasm"
.INCLUDE "animation.gbasm"
.INCLUDE "attacks.gbasm"
.INCLUDE "gui.gbasm"
diff --git a/scripts/generate-tiledata.py b/scripts/generate-tiledata.py
index a381d5a..547e9e5 100644
--- a/scripts/generate-tiledata.py
+++ b/scripts/generate-tiledata.py
@@ -35,61 +35,15 @@ get_sprite_png_parse_output("./sprites/font.png")
sprite_idx = 0x02
print("\nOBJ_Tile_Image_Data:")
-# print("\n\t; Bunny side")
-# get_sprite_png_parse_output("./sprites/bunny/bunny-side.png", tallmode=True)
-# print("\n\t; Bunny back")
-# get_sprite_png_parse_output("./sprites/bunny/bunny-back.png", tallmode=True)
-# print("\n\t; Bunny front")
-# get_sprite_png_parse_output("./sprites/bunny/bunny-front.png", tallmode=True)
-#print("\n\t; Cat side")
-#get_sprite_png_parse_output("./sprites/cat/side.png", tallmode=True)
-#print("\n\t; Cat back")
-#get_sprite_png_parse_output("./sprites/cat/back.png", tallmode=True)
-#print("\n\t; Cat front")
-#get_sprite_png_parse_output("./sprites/cat/front.png", tallmode=True)
-
-# print("\n\t; Owl side")
-# get_sprite_png_parse_output("./sprites/owl/side.png", tallmode=True)
-# print("\n\t; Owl back")
-# get_sprite_png_parse_output("./sprites/owl/back.png", tallmode=True)
-# print("\n\t; Owl front")
-# get_sprite_png_parse_output("./sprites/owl/front.png", tallmode=True)
-
-# print("\n\t; Bug side")
-# get_sprite_png_parse_output("./sprites/bug/side.png", tallmode=True)
-# print("\n\t; Bug back")
-# get_sprite_png_parse_output("./sprites/bug/back.png", tallmode=True)
-# print("\n\t; Bug front")
-# get_sprite_png_parse_output("./sprites/bug/front.png", tallmode=True)
-
-# print("\n\t; Mouse side")
-# get_sprite_png_parse_output("./sprites/mouse/side.png", tallmode=True)
-# print("\n\t; Mouse back")
-# get_sprite_png_parse_output("./sprites/mouse/back.png", tallmode=True)
-# print("\n\t; Mouse front")
-# get_sprite_png_parse_output("./sprites/mouse/front.png", tallmode=True)
-
-# print("\n\t; Fimsh side")
-# get_sprite_png_parse_output("./sprites/fimsh/side.png", tallmode=True)
-# print("\n\t; Fimsh back")
-# get_sprite_png_parse_output("./sprites/fimsh/back.png", tallmode=True)
-# print("\n\t; Fimsh front")
-# get_sprite_png_parse_output("./sprites/fimsh/front.png", tallmode=True)
-
-# print("\n\t; Penguin side")
-# get_sprite_png_parse_output("./sprites/penguin/side.png", tallmode=True)
-# print("\n\t; Penguin back")
-# get_sprite_png_parse_output("./sprites/penguin/back.png", tallmode=True)
-# print("\n\t; Penguin front")
-# get_sprite_png_parse_output("./sprites/penguin/front.png", tallmode=True)
-
-print("\n\t; Frog side")
-get_sprite_png_parse_output("./sprites/frog/side.png", tallmode=True)
-print("\n\t; Frog back")
-get_sprite_png_parse_output("./sprites/frog/back.png", tallmode=True)
-print("\n\t; Frog front")
-get_sprite_png_parse_output("./sprites/frog/front.png", tallmode=True)
+print("\n.Bunny:")
+print("\n\t; Bunny side")
+get_sprite_png_parse_output("./sprites/bunny/bunny-side.png", tallmode=True)
+print("\n\t; Bunny back")
+get_sprite_png_parse_output("./sprites/bunny/bunny-back.png", tallmode=True)
+print("\n\t; Bunny front")
+get_sprite_png_parse_output("./sprites/bunny/bunny-front.png", tallmode=True)
+print("\n.Fox:")
print("\n\t; Fox side")
get_sprite_png_parse_output("./sprites/fox/fox-side1.png", tallmode=True)
print("\n\t; Fox back")
@@ -97,6 +51,62 @@ get_sprite_png_parse_output("./sprites/fox/fox-back.png", tallmode=True)
print("\n\t; Fox front")
get_sprite_png_parse_output("./sprites/fox/fox-front.png", tallmode=True)
+print("\n.Cat:")
+print("\n\t; Cat side")
+get_sprite_png_parse_output("./sprites/cat/side.png", tallmode=True)
+print("\n\t; Cat back")
+get_sprite_png_parse_output("./sprites/cat/back.png", tallmode=True)
+print("\n\t; Cat front")
+get_sprite_png_parse_output("./sprites/cat/front.png", tallmode=True)
+
+print("\n.Owl:")
+print("\n\t; Owl side")
+get_sprite_png_parse_output("./sprites/owl/side.png", tallmode=True)
+print("\n\t; Owl back")
+get_sprite_png_parse_output("./sprites/owl/back.png", tallmode=True)
+print("\n\t; Owl front")
+get_sprite_png_parse_output("./sprites/owl/front.png", tallmode=True)
+
+print("\n.Bug:")
+print("\n\t; Bug side")
+get_sprite_png_parse_output("./sprites/bug/side.png", tallmode=True)
+print("\n\t; Bug back")
+get_sprite_png_parse_output("./sprites/bug/back.png", tallmode=True)
+print("\n\t; Bug front")
+get_sprite_png_parse_output("./sprites/bug/front.png", tallmode=True)
+
+print("\n.Mouse:")
+print("\n\t; Mouse side")
+get_sprite_png_parse_output("./sprites/mouse/side.png", tallmode=True)
+print("\n\t; Mouse back")
+get_sprite_png_parse_output("./sprites/mouse/back.png", tallmode=True)
+print("\n\t; Mouse front")
+get_sprite_png_parse_output("./sprites/mouse/front.png", tallmode=True)
+
+print("\n.Fimsh:")
+print("\n\t; Fimsh side")
+get_sprite_png_parse_output("./sprites/fimsh/side.png", tallmode=True)
+print("\n\t; Fimsh back")
+get_sprite_png_parse_output("./sprites/fimsh/back.png", tallmode=True)
+print("\n\t; Fimsh front")
+get_sprite_png_parse_output("./sprites/fimsh/front.png", tallmode=True)
+
+print("\n.Penguin:")
+print("\n\t; Penguin side")
+get_sprite_png_parse_output("./sprites/penguin/side.png", tallmode=True)
+print("\n\t; Penguin back")
+get_sprite_png_parse_output("./sprites/penguin/back.png", tallmode=True)
+print("\n\t; Penguin front")
+get_sprite_png_parse_output("./sprites/penguin/front.png", tallmode=True)
+
+print("\n.Frog:")
+print("\n\t; Frog side")
+get_sprite_png_parse_output("./sprites/frog/side.png", tallmode=True)
+print("\n\t; Frog back")
+get_sprite_png_parse_output("./sprites/frog/back.png", tallmode=True)
+print("\n\t; Frog front")
+get_sprite_png_parse_output("./sprites/frog/front.png", tallmode=True)
+
sprite_idx = 0x60
print("\nAnimation_Sprites_Data:")
print("\n\t; Sparkles")
diff --git a/sprites/frog/side.png b/sprites/frog/side.png
index 4352c82..cfc4df9 100644
--- a/sprites/frog/side.png
+++ b/sprites/frog/side.png
Binary files differ
diff --git a/test.rom b/test.rom
new file mode 100644
index 0000000..1b1cb4d
--- /dev/null
+++ b/test.rom
Binary files differ
diff --git a/tiles.gbasm b/tiles.gbasm
index ae0e031..3f6df10 100644
--- a/tiles.gbasm
+++ b/tiles.gbasm
@@ -1,7 +1,7 @@
Load_Tile:
LD HL, $8020
- LD DE, =OBJ_Tile_Image_Data
- LD BC, $0180
+ LD DE, =OBJ_Tile_Image_Data.Bunny
+ LD BC, $00c0
CALL =memcpy
LD HL, $8800
@@ -25,6 +25,57 @@ Load_Tile:
CALL =memcpy
RET
+Reload_Entities_Tile_Data:
+ LD HL, $mem_loaded_enemies_indices
+ LD E, $03
+ .loop:
+ LD A, (HL)
+ SLA A
+ SLA A
+ SLA A
+ ADD low(=Entity_list)
+ LD C, A
+ LD A, high(=Entity_list)
+ ADC $00
+ LD B, A
+
+ PUSH HL
+ PUSH DE
+
+ LD A, E
+ SLA A
+ SLA A
+ LD E, A
+ SLA A
+ ADD E
+ ADD $02
+ SWAP A
+ LD H, A
+ AND $f0
+ LD L, A
+ LD A, H
+ AND $0f
+ OR $80
+ LD H, A
+
+ LD A, (BC)
+ LD D, A
+ INC BC
+ LD A, (BC)
+ LD E, A
+
+ LD BC, $00c0
+ CALL =memcpy
+
+ POP DE
+ POP HL
+
+ INC HL
+ INC E
+ LD A, low($mem_loaded_entities_indices_end)
+ CP L
+ JR NZ, =.loop
+
Dialogue_Box_Tilemap_data:
.DB 0x11, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.DB 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
diff --git a/tileset.gbasm b/tileset.gbasm
index 42027a1..27150f8 100644
--- a/tileset.gbasm
+++ b/tileset.gbasm
@@ -142,23 +142,27 @@ Font_Data:
OBJ_Tile_Image_Data:
- ; Frog side
- .DB $00, $00, $00, $00, $1c, $1c, $3e, $22, $3f, $33, $3e, $23, $1c, $1f, $20, $3f ; 0x02
- .DB $38, $3f, $20, $3f, $1a, $1f, $15, $1f, $26, $3f, $49, $79, $4a, $7b, $31, $31 ; 0x03
- .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $c0, $c0, $20, $e0, $10, $f0 ; 0x04
- .DB $08, $f8, $68, $f8, $84, $fc, $04, $fc, $84, $fc, $c2, $fe, $02, $fe, $fc, $fc ; 0x05
+.Bunny:
- ; Frog back
- .DB $00, $00, $38, $38, $7f, $4f, $70, $5f, $60, $7f, $40, $7f, $40, $7f, $40, $7f ; 0x06
- .DB $a0, $ff, $b0, $ff, $90, $ff, $90, $ff, $90, $ff, $88, $ff, $8c, $ff, $f3, $f3 ; 0x07
- .DB $00, $00, $38, $38, $fc, $e4, $1c, $f4, $0c, $fc, $04, $fc, $04, $fc, $04, $fc ; 0x08
- .DB $0a, $fe, $1a, $fe, $12, $fe, $12, $fe, $12, $fe, $22, $fe, $62, $fe, $9e, $9e ; 0x09
+ ; Bunny side
+ .DB $00, $00, $44, $44, $aa, $ee, $aa, $ee, $fe, $b2, $fc, $b4, $fc, $94, $75, $4d ; 0x02
+ .DB $ff, $82, $6f, $70, $3f, $20, $3f, $20, $31, $2e, $4e, $7f, $51, $71, $60, $60 ; 0x03
+ .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $c0, $c0 ; 0x04
+ .DB $34, $f4, $ce, $3a, $fe, $0a, $fc, $04, $bc, $44, $5c, $e4, $88, $f8, $f0, $f0 ; 0x05
- ; Frog front
- .DB $00, $00, $38, $38, $7f, $47, $7c, $57, $7c, $47, $38, $3f, $43, $7f, $c3, $fc ; 0x0a
- .DB $87, $f8, $87, $f8, $83, $fc, $97, $fc, $94, $ff, $a2, $ff, $62, $7f, $7f, $7f ; 0x0b
- .DB $00, $00, $38, $38, $fc, $c4, $7c, $d4, $7c, $c4, $38, $f8, $84, $fc, $86, $7e ; 0x0c
- .DB $c2, $3e, $c2, $3e, $82, $7e, $d2, $7e, $52, $fe, $8a, $fe, $8c, $fc, $fc, $fc ; 0x0d
+ ; Bunny back
+ .DB $00, $00, $00, $00, $00, $00, $1c, $1c, $2e, $32, $2f, $3b, $1f, $19, $0e, $0f ; 0x06
+ .DB $13, $1c, $27, $38, $2f, $30, $2f, $30, $2f, $30, $13, $1c, $15, $1b, $0e, $0e ; 0x07
+ .DB $00, $00, $40, $40, $a0, $e0, $a0, $e0, $e0, $a0, $e0, $20, $c0, $40, $e0, $e0 ; 0x08
+ .DB $d0, $30, $d0, $30, $e8, $18, $f8, $08, $f0, $10, $90, $70, $70, $90, $e0, $e0 ; 0x09
+
+ ; Bunny front
+ .DB $00, $00, $04, $04, $0a, $0e, $0a, $0e, $0e, $0a, $0f, $09, $07, $05, $0f, $0e ; 0x0a
+ .DB $17, $1c, $17, $1a, $2f, $30, $3f, $20, $1f, $10, $17, $1d, $0d, $0f, $06, $06 ; 0x0b
+ .DB $00, $00, $00, $00, $00, $00, $70, $70, $e8, $98, $e8, $b8, $f0, $30, $e0, $e0 ; 0x0c
+ .DB $d0, $70, $e8, $98, $e8, $18, $f8, $08, $f8, $08, $d0, $70, $60, $e0, $c0, $c0 ; 0x0d
+
+.Fox:
; Fox side
.DB $00, $00, $00, $00, $01, $01, $15, $15, $1f, $1f, $1a, $1e, $16, $1e, $12, $1e ; 0x0e
@@ -178,6 +182,146 @@ OBJ_Tile_Image_Data:
.DB $00, $00, $8e, $8e, $de, $d2, $de, $d2, $7e, $e2, $46, $fa, $e2, $be, $e2, $3e ; 0x18
.DB $c2, $fe, $22, $fe, $24, $fc, $64, $fc, $dc, $5c, $c0, $40, $c0, $40, $c0, $c0 ; 0x19
+.Cat:
+
+ ; Cat side
+ .DB $00, $00, $00, $00, $22, $22, $55, $77, $6b, $5d, $5d, $63, $7f, $43, $3c, $eb ; 0x1a
+ .DB $6b, $57, $24, $fb, $1f, $1c, $0f, $08, $0f, $0b, $0b, $0f, $0b, $0f, $06, $06 ; 0x1b
+ .DB $00, $00, $1e, $1e, $3f, $21, $2f, $3d, $2f, $3d, $17, $15, $07, $05, $0f, $09 ; 0x1c
+ .DB $fe, $f2, $fc, $04, $fc, $04, $fc, $0c, $ec, $3c, $ec, $fc, $2c, $3c, $18, $18 ; 0x1d
+
+ ; Cat back
+ .DB $00, $00, $08, $08, $15, $1d, $12, $1f, $1f, $10, $1f, $10, $1f, $37, $1f, $18 ; 0x1e
+ .DB $1f, $30, $1f, $10, $1f, $11, $1f, $10, $1f, $17, $15, $1d, $15, $1d, $0d, $0d ; 0x1f
+ .DB $00, $00, $90, $90, $68, $f8, $68, $f8, $fc, $64, $dc, $54, $dc, $74, $dc, $d4 ; 0x20
+ .DB $dc, $74, $fc, $e4, $f8, $08, $f0, $70, $c0, $40, $40, $c0, $40, $c0, $80, $80 ; 0x21
+
+ ; Cat front
+ .DB $00, $00, $08, $08, $15, $1d, $1a, $17, $17, $18, $1f, $10, $0f, $35, $15, $1a ; 0x22
+ .DB $08, $3f, $1f, $17, $1f, $10, $1f, $18, $1f, $1a, $1a, $1f, $1a, $1f, $0d, $0d ; 0x23
+ .DB $00, $00, $88, $88, $54, $dc, $d4, $5c, $5e, $d2, $ce, $4a, $8e, $6a, $4e, $ca ; 0x24
+ .DB $8e, $ea, $ce, $4a, $fe, $72, $fc, $c4, $f8, $f8, $c0, $c0, $c0, $c0, $80, $80 ; 0x25
+
+.Owl:
+
+ ; Owl side
+ .DB $00, $00, $07, $07, $08, $0f, $16, $19, $16, $1d, $36, $3d, $30, $3f, $18, $17 ; 0x26
+ .DB $1c, $17, $14, $1f, $1c, $17, $0c, $0f, $06, $07, $07, $07, $07, $07, $0f, $0f ; 0x27
+ .DB $00, $00, $e0, $e0, $10, $f0, $08, $f8, $08, $f8, $08, $f8, $08, $f8, $08, $f8 ; 0x28
+ .DB $28, $f8, $28, $f8, $28, $f8, $28, $f8, $4c, $fc, $c4, $fc, $fe, $fe, $00, $00 ; 0x29
+
+ ; Owl back
+ .DB $00, $00, $07, $07, $08, $0f, $10, $1f, $10, $1f, $10, $1f, $10, $1f, $30, $3f ; 0x2a
+ .DB $30, $3f, $30, $3f, $33, $3f, $36, $3f, $2c, $3f, $3c, $3f, $0f, $0f, $06, $06 ; 0x2b
+ .DB $00, $00, $e0, $e0, $10, $f0, $08, $f8, $08, $f8, $08, $f8, $08, $f8, $0c, $fc ; 0x2c
+ .DB $0c, $fc, $0c, $fc, $cc, $fc, $6c, $fc, $34, $fc, $3c, $fc, $f0, $f0, $60, $60 ; 0x2d
+
+ ; Owl front
+ .DB $00, $00, $07, $07, $08, $0f, $16, $19, $16, $1b, $17, $1a, $11, $1f, $20, $3f ; 0x2e
+ .DB $26, $3d, $27, $3c, $26, $3d, $25, $3e, $2a, $3d, $3d, $3a, $0f, $0f, $06, $06 ; 0x2f
+ .DB $00, $00, $e0, $e0, $10, $f0, $68, $98, $68, $d8, $e8, $58, $88, $f8, $04, $fc ; 0x30
+ .DB $64, $bc, $e4, $3c, $a4, $7c, $64, $bc, $b4, $5c, $5c, $bc, $f0, $f0, $60, $60 ; 0x31
+
+.Bug:
+
+ ; Bug side
+ .DB $00, $00, $08, $08, $13, $13, $24, $24, $48, $48, $50, $50, $60, $60, $ff, $df ; 0x32
+ .DB $eb, $bc, $88, $ff, $9c, $ff, $73, $7f, $0f, $0f, $0f, $0f, $15, $15, $69, $69 ; 0x33
+ .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $e0, $e0 ; 0x34
+ .DB $fc, $1c, $7c, $ec, $fe, $f6, $96, $fe, $fe, $fe, $18, $18, $08, $08, $8e, $8e ; 0x35
+
+ ; Bug back
+ .DB $00, $00, $00, $00, $00, $00, $00, $00, $18, $18, $25, $25, $4a, $4b, $47, $47 ; 0x36
+ .DB $4f, $4e, $1b, $1c, $1b, $1c, $3d, $3e, $2c, $2f, $26, $27, $61, $61, $00, $00 ; 0x37
+ .DB $00, $00, $00, $00, $00, $00, $00, $00, $18, $18, $a4, $a4, $52, $d2, $e2, $e2 ; 0x38
+ .DB $f2, $72, $d8, $38, $d8, $38, $bc, $7c, $34, $f4, $64, $e4, $86, $86, $00, $00 ; 0x39
+
+ ; Bug front
+ .DB $00, $00, $00, $00, $20, $20, $20, $20, $10, $10, $09, $09, $06, $07, $13, $13 ; 0x3a
+ .DB $17, $16, $3f, $3e, $2c, $2f, $2c, $2f, $6a, $6f, $0d, $0f, $1b, $1b, $02, $02 ; 0x3b
+ .DB $00, $00, $00, $00, $04, $04, $08, $08, $08, $08, $90, $90, $60, $e0, $c8, $c8 ; 0x3c
+ .DB $e8, $68, $fc, $7c, $34, $f4, $34, $f4, $56, $f6, $b0, $f0, $d8, $d8, $40, $40 ; 0x3d
+
+.Mouse:
+
+ ; Mouse side
+ .DB $00, $00, $00, $00, $00, $00, $00, $00, $0e, $0e, $11, $1f, $11, $1f, $11, $1f ; 0x3e
+ .DB $1f, $12, $3f, $20, $7f, $50, $bf, $c0, $7b, $7f, $06, $06, $00, $00, $00, $00 ; 0x3f
+ .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $e0, $e0, $90, $70 ; 0x40
+ .DB $98, $78, $cc, $3c, $ca, $3a, $89, $79, $d9, $f9, $32, $32, $04, $04, $f8, $f8 ; 0x41
+
+ ; Mouse back
+ .DB $00, $00, $00, $00, $1c, $1c, $22, $3e, $22, $3e, $23, $3f, $1b, $1c, $0f, $0f ; 0x42
+ .DB $1f, $18, $1f, $10, $1f, $11, $1f, $11, $0f, $0f, $06, $06, $00, $00, $00, $00 ; 0x43
+ .DB $00, $00, $00, $00, $70, $70, $88, $f8, $88, $f8, $88, $f8, $b0, $70, $e0, $e0 ; 0x44
+ .DB $f0, $30, $f0, $10, $f0, $10, $f0, $d0, $fc, $fc, $c6, $c6, $02, $02, $3e, $3e ; 0x45
+
+ ; Mouse front
+ .DB $00, $00, $00, $00, $01, $01, $01, $01, $01, $01, $0e, $0e, $11, $1f, $17, $19 ; 0x46
+ .DB $17, $19, $0f, $0c, $0f, $0d, $0f, $0a, $0f, $09, $0f, $08, $05, $07, $03, $03 ; 0x47
+ .DB $00, $00, $c0, $c0, $20, $20, $00, $00, $00, $00, $b8, $b8, $c4, $fc, $74, $cc ; 0x48
+ .DB $f4, $cc, $f8, $18, $f8, $58, $f8, $28, $78, $c8, $f8, $88, $d0, $f0, $60, $60 ; 0x49
+
+.Fimsh:
+
+ ; Fimsh side
+ .DB $00, $00, $00, $00, $00, $00, $01, $01, $07, $06, $0d, $0a, $15, $1a, $25, $3a ; 0x4a
+ .DB $34, $2b, $3a, $2d, $7a, $45, $3a, $25, $1f, $10, $0f, $0e, $01, $01, $00, $00 ; 0x4b
+ .DB $00, $00, $00, $00, $00, $00, $fc, $fc, $78, $88, $70, $90, $72, $92, $36, $d6 ; 0x4c
+ .DB $ae, $5a, $ae, $52, $be, $4a, $f6, $16, $f0, $10, $f0, $b0, $60, $60, $00, $00 ; 0x4d
+
+ ; Fimsh back
+ .DB $00, $00, $00, $00, $03, $03, $05, $06, $08, $0f, $1f, $10, $10, $1f, $3e, $21 ; 0x4e
+ .DB $21, $3e, $3c, $23, $3f, $20, $3e, $2f, $31, $31, $23, $22, $07, $07, $00, $00 ; 0x4f
+ .DB $00, $00, $40, $40, $e0, $a0, $f0, $10, $f8, $88, $18, $e8, $f8, $08, $1c, $e4 ; 0x50
+ .DB $f8, $08, $3c, $c4, $fc, $0c, $78, $b8, $c0, $40, $e0, $20, $e0, $e0, $00, $00 ; 0x51
+
+ ; Fimsh front
+ .DB $00, $00, $07, $07, $07, $04, $03, $02, $1e, $1d, $3f, $30, $3c, $23, $1f, $10 ; 0x52
+ .DB $38, $27, $1f, $10, $18, $17, $1f, $11, $0f, $08, $07, $05, $02, $02, $00, $00 ; 0x53
+ .DB $00, $00, $e0, $e0, $c4, $44, $8c, $8c, $7c, $f4, $fc, $04, $3c, $c4, $84, $7c ; 0x54
+ .DB $7c, $84, $08, $f8, $f8, $08, $10, $f0, $a0, $60, $c0, $c0, $00, $00, $00, $00 ; 0x55
+
+.Penguin:
+
+ ; Penguin side
+ .DB $00, $00, $07, $07, $0f, $0f, $0f, $0b, $0f, $0c, $07, $18, $0f, $09, $0f, $0f ; 0x56
+ .DB $0b, $0f, $0b, $0f, $0b, $0f, $0b, $0f, $0c, $0f, $0f, $0f, $07, $07, $00, $07 ; 0x57
+ .DB $00, $00, $e0, $e0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0 ; 0x58
+ .DB $b0, $f0, $b0, $f0, $b0, $f0, $70, $f0, $70, $f0, $f0, $f0, $e0, $e0, $00, $80 ; 0x59
+
+ ; Penguin back
+ .DB $00, $00, $07, $07, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $1f, $1f ; 0x5a
+ .DB $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $0f, $0f, $0f, $0f, $07, $07, $00, $0e ; 0x5b
+ .DB $00, $00, $e0, $e0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f0, $f8, $f8 ; 0x5c
+ .DB $fc, $fc, $fc, $fc, $fc, $fc, $fc, $fc, $f0, $f0, $f0, $f0, $e0, $e0, $00, $70 ; 0x5d
+
+ ; Penguin front
+ .DB $00, $00, $07, $07, $0f, $0f, $0f, $0d, $0f, $0a, $0e, $09, $0f, $0c, $1f, $1e ; 0x5e
+ .DB $3f, $3e, $3f, $3c, $3f, $3c, $3f, $3c, $0f, $0e, $0f, $0f, $07, $07, $00, $0e ; 0x5f
+ .DB $00, $00, $e0, $e0, $f0, $f0, $f0, $b0, $f0, $50, $70, $90, $f0, $30, $f8, $78 ; 0x60
+ .DB $fc, $7c, $fc, $3c, $fc, $3c, $fc, $3c, $f0, $70, $f0, $f0, $e0, $e0, $00, $70 ; 0x61
+
+.Frog:
+
+ ; Frog side
+ .DB $00, $00, $38, $38, $7f, $47, $7c, $67, $7c, $47, $38, $3f, $40, $7f, $70, $7f ; 0x62
+ .DB $40, $7f, $30, $3f, $10, $1f, $24, $3f, $4a, $7b, $9b, $fb, $94, $f7, $63, $63 ; 0x63
+ .DB $00, $00, $00, $00, $e0, $e0, $10, $f0, $08, $f8, $04, $fc, $04, $fc, $04, $fc ; 0x64
+ .DB $02, $fe, $02, $fe, $02, $fe, $82, $fe, $84, $fc, $e2, $fe, $02, $fe, $fe, $fe ; 0x65
+
+ ; Frog back
+ .DB $00, $00, $38, $38, $7f, $4f, $70, $5f, $60, $7f, $40, $7f, $40, $7f, $40, $7f ; 0x66
+ .DB $a0, $ff, $b0, $ff, $90, $ff, $90, $ff, $90, $ff, $88, $ff, $8c, $ff, $f3, $f3 ; 0x67
+ .DB $00, $00, $38, $38, $fc, $e4, $1c, $f4, $0c, $fc, $04, $fc, $04, $fc, $04, $fc ; 0x68
+ .DB $0a, $fe, $1a, $fe, $12, $fe, $12, $fe, $12, $fe, $22, $fe, $62, $fe, $9e, $9e ; 0x69
+
+ ; Frog front
+ .DB $00, $00, $38, $38, $7f, $47, $7c, $57, $7c, $47, $38, $3f, $43, $7f, $c3, $fc ; 0x6a
+ .DB $87, $f8, $87, $f8, $83, $fc, $97, $fc, $94, $ff, $a2, $ff, $62, $7f, $7f, $7f ; 0x6b
+ .DB $00, $00, $38, $38, $fc, $c4, $7c, $d4, $7c, $c4, $38, $f8, $84, $fc, $86, $7e ; 0x6c
+ .DB $c2, $3e, $c2, $3e, $82, $7e, $d2, $7e, $52, $fe, $8a, $fe, $8c, $fc, $fc, $fc ; 0x6d
+
Animation_Sprites_Data:
; Sparkles