From adb2d9935253b0ea0e31b462f342aa7823697a7e Mon Sep 17 00:00:00 2001 From: Astatin Date: Tue, 7 Jan 2025 19:29:17 +0900 Subject: Add support for multiple enemies loaded (up to 4 loaded at dungeon gen time) --- definitions.gbasm | 4 + entity/actions.gbasm | 4 +- entity/init.gbasm | 77 +++++++++++++------ entity/list.gbasm | 60 +++++++++++++++ gui.gbasm | 8 ++ main.gbasm | 11 +++ scripts/generate-tiledata.py | 118 +++++++++++++++-------------- sprites/frog/side.png | Bin 168 -> 167 bytes test.rom | Bin 0 -> 8 bytes tiles.gbasm | 55 +++++++++++++- tileset.gbasm | 174 +++++++++++++++++++++++++++++++++++++++---- 11 files changed, 417 insertions(+), 94 deletions(-) create mode 100644 entity/list.gbasm create mode 100644 test.rom 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 Binary files a/sprites/frog/side.png and b/sprites/frog/side.png differ diff --git a/test.rom b/test.rom new file mode 100644 index 0000000..1b1cb4d Binary files /dev/null and b/test.rom 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 -- cgit v1.2.3-70-g09d2