diff options
author | Astatin <[email protected]> | 2025-06-17 17:42:44 +0200 |
---|---|---|
committer | Astatin <[email protected]> | 2025-06-17 17:42:44 +0200 |
commit | b84a1c2c0ebb484e23753c2f9db8742389fcc99a (patch) | |
tree | 0036439ad1a5cc4c08c4bef79c0255b851a894f2 | |
parent | a9142d0163f41c89196ea201ce8245899c701b82 (diff) |
loading ldtk tilemaps + adding dungeon structure that can be loaded at runtime
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | definitions.gbasm | 59 | ||||
-rw-r--r-- | main.gbasm | 21 | ||||
-rw-r--r-- | map/dungeons.gbasm | 40 | ||||
-rw-r--r-- | map/dungeons/morningforest.gbasm | 23 | ||||
-rw-r--r-- | map/generationevents.gbasm | 56 | ||||
-rw-r--r-- | map/loading/dungeoninfos.gbasm (renamed from map/loaddungeon.gbasm) | 48 | ||||
-rw-r--r-- | map/loading/dungeontiles.gbasm (renamed from map/loading.gbasm) | 166 | ||||
-rw-r--r-- | map/loading/romtiles.gbasm | 81 | ||||
-rw-r--r-- | map/maps/test.ldtk | 416 | ||||
-rw-r--r-- | map/maps/test.map.gbasm | 275 | ||||
-rw-r--r-- | modes/dungeongeneration.gbasm | 36 | ||||
-rw-r--r-- | modes/maploading.gbasm | 14 | ||||
-rw-r--r-- | modes/vblank_handler_list.gbasm | 4 | ||||
-rw-r--r-- | playerattacks/hop.gbasm | 16 | ||||
-rw-r--r-- | rng.gbasm | 3 | ||||
-rw-r--r-- | scripts/parse-ldtkmap.py | 37 | ||||
-rw-r--r-- | utils.gbasm | 18 |
18 files changed, 877 insertions, 438 deletions
@@ -22,7 +22,7 @@ build/main.rom: build/main.rom.unsigned cp build/main.rom.unsigned build/main.rom python scripts/set_checksums.py build/main.rom -build/main.rom.unsigned: main.gbasm tileset.gbasm text.gbasm dialogues/text.gbasm map/maps.gbasm $(wildcard ./*.gbasm) $(wildcard ./**/*.gbasm) +build/main.rom.unsigned: main.gbasm tileset.gbasm text.gbasm dialogues/text.gbasm map/maps.gbasm $(wildcard ./*.gbasm) $(wildcard ./**/*.gbasm) $(wildcard ./**/**/*.gbasm) mkdir -p build gbasm $< $@ > build/main.sym diff --git a/definitions.gbasm b/definitions.gbasm index 20724dc..c321de4 100644 --- a/definitions.gbasm +++ b/definitions.gbasm @@ -61,9 +61,10 @@ ; bit 4: animation step should start to go up on next frame ; bit 5: if entity collision map should be updated -.DEFINE mem_prepared_block_tile ($c00d) -.DEFINE mem_prepared_block_position_1 ($c00e) -.DEFINE mem_prepared_block_position_2 ($c00f) +.DEFINE mem_number_of_attacks ($c00d) +.DEFINE mem_entity_being_attacked_low ($c00e) + +; FREE SPACE POGPOGPOG $c00f .DEFINE mem_object_load_counter ($c010) .DEFINE mem_prepared_viewport_x ($c011) @@ -100,9 +101,7 @@ .DEFINE mem_last_button_action ($c020) .DEFINE mem_loading_step ($c021) -.DEFINE mem_prepared_loading_block_tile ($c022) -.DEFINE mem_prepared_loading_block_position_1 ($c023) -.DEFINE mem_prepared_loading_block_position_2 ($c024) +.DEFINE mem_rom_tilemap_addr $c022 ; Takes $c022 to $c024 (bank + ptr) .DEFINE mem_loading_mode_vblank_func_pointer_high ($c025) .DEFINE mem_loading_mode_vblank_func_pointer_low ($c026) @@ -128,38 +127,46 @@ .DEFINE mem_blinking_animation_counter ($c036) -.DEFINE mem_additional_loading_block_x ($c037) -.DEFINE mem_additional_loading_block_y ($c038) -.DEFINE mem_additional_loading_block_tile ($c039) -.DEFINE mem_additional_loading_block_position_1 ($c03a) -.DEFINE mem_additional_loading_block_position_2 ($c03b) +.DEFINE mem_entity_spawning_pattern ($c037) + +; 38-3a +.DEFINE mem_dialogue_script_bank ($c038) + +.DEFINE mem_dialogue_script_program_counter $c039 ; takes c039 and c03a + +.DEFINE mem_floor_count_bin ($c03b) .DEFINE mem_floor_count ($c03c) -.DEFINE mem_dialogue_script_bank ($c03d) +.DEFINE mem_loop_frame_timer ($c03d) + +.DEFINE mem_bunny_status_tile ($c03e) -.DEFINE mem_dialogue_script_program_counter $c03e ; takes c03e and c03f +.DEFINE mem_cursor_max_position ($c03f) -.DEFINE mem_entity_being_attacked_low ($c040) +.DEFINE mem_vblank_jump_instruction $c040 ; takes from c040 to c042 +.DEFINE mem_vblank_jump_destination $c041 ; takes from c041 to c042 +.DEFINE mem_stat_jump_instruction $c043 ; takes from c043 to c045 +.DEFINE mem_stat_jump_destination $c044 ; takes from c044 to c045 -.DEFINE mem_vblank_jump_instruction $c041 ; takes from c041 to c043 -.DEFINE mem_vblank_jump_destination $c042 ; takes from c042 to c043 -.DEFINE mem_stat_jump_instruction $c044 ; takes from c044 to c046 -.DEFINE mem_stat_jump_destination $c045 ; takes from c045 to c046 -.DEFINE mem_number_of_attacks ($c047) -.DEFINE mem_cursor_max_position ($c048) +.DEFINE mem_learn_attack_dialogue_ret_ptr $c046 ; Takes $c046 to $c048 (bank + ptr) +.DEFINE mem_learn_attack_attack_name_ptr $c049 ; Takes $c049 to $c04b (bank + ptr) -.DEFINE mem_learn_attack_dialogue_ret_ptr $c049 ; Takes $c049 and $c04b (bank + ptr) -.DEFINE mem_learn_attack_attack_name_ptr $c04c ; Takes $c04c and $c04e (bank + ptr) +; FREE SPACE $c04c -.DEFINE mem_loop_frame_timer ($c04f) +.DEFINE mem_prepared_loading_block_position $c04e ; Takes $c04e-$c04f +.DEFINE mem_prepared_loading_block_tile $c050 ; Takes $c050-c054 -.DEFINE mem_bunny_status_tile ($c050) +.DEFINE mem_additional_loading_block_x ($c055) +.DEFINE mem_additional_loading_block_y ($c056) +.DEFINE mem_additional_loading_block_position $c057 ; Takes $c057-$c058 +.DEFINE mem_additional_loading_block_tile $c059 ; Takes $c059-$c05c -.DEFINE mem_floor_count_bin ($c051) +.DEFINE mem_prepared_block_position $c05d ; Takes $c05d-$c05e +.DEFINE mem_prepared_block_tile $c05f ; Takes $c05f-$c062 -.DEFINE mem_entity_spawning_pattern ($c052) +.DEFINE mem_dungeon $c060 ; Takes $c060-$c062 ; ## WARNING THE SPACE BETWEEN $c400 and $c800 is used as a buffer for the loading map function during dungeon generation .DEFINE mem_map_loading_buffer $c400 @@ -98,14 +98,6 @@ Entrypoint: CALL =Initialize_RNG - LD A, $20 - LD $mem_bunny_health, A - LD A, $30 - LD $mem_bunny_mana, A - LD A, $01 - LD $mem_floor_count, A - LD A, $00 - LD $mem_floor_count_bin, A LD HL, $mem_bunny_attacks LD A, $01 @@ -117,7 +109,13 @@ Entrypoint: LD A, $01 LD $mem_number_of_attacks, A - CALL =Init_DemoQuest_Event + LD A, bank(=Morning_Forest) + LD ($mem_dungeon), A + LD HL, ptr(=Morning_Forest) + LD A, H + LD ($mem_dungeon+1), A + LD A, L + LD ($mem_dungeon+2), A CALL =Load_Tile @@ -129,7 +127,8 @@ Entrypoint: .INCLUDE "dialogues/utils.gbasm" .INCLUDE "buttons.gbasm" .INCLUDE "map/utils.gbasm" -.INCLUDE "map/loading.gbasm" +.INCLUDE "map/loading/dungeontiles.gbasm" +.INCLUDE "map/loading/romtiles.gbasm" .INCLUDE "map/generation.gbasm" .INCLUDE "map/objects.gbasm" .INCLUDE "map/generationevents.gbasm" @@ -146,7 +145,7 @@ Entrypoint: .INCLUDE "playerattacks.gbasm" .INCLUDE "enemiesattacks.gbasm" .INCLUDE "dialogues/functions.gbasm" -.INCLUDE "map/loaddungeon.gbasm" +.INCLUDE "map/loading/dungeoninfos.gbasm" .PADTO $4000 .INCLUDE "tileset.gbasm" diff --git a/map/dungeons.gbasm b/map/dungeons.gbasm index 4a37830..6c642ce 100644 --- a/map/dungeons.gbasm +++ b/map/dungeons.gbasm @@ -1 +1,41 @@ +; struct dungeon +; { +; name: *char (u24=bank+ptr), +; flags: 0b000mTSFM, +; M = whether or not this dungeon has a pregenerated tilemap (0 means that it's randomly generated) +; F = whether or not the floors are counted +; S = whether or not enemies can spawn +; T = whether or not there is a top bar shown +; m = whether or not you can open the attack menu +; tilemap: ptr (u24=bank+ptr) +; generation_event_size: u8 (size of the generation_eents_structure +; generation_events: [x]struct (8 bytes) { +; ...see definitions +; } +; max_floor: u8 +; inverted_max_floor: u8 (1/max_floor) +; spawning_pattern: [8]struct (5 bytes){ +; entities_idx: [4]u8 +; spawn_frequencies: u8 +; } + +.MACRODEF GEN_EVENT_DIALOGUE floor =dialogue + $start: + .DB low($floor), $01 + .DB bank(=dialogue), high(ptr(=dialogue)), low(ptr(=dialogue)) + .PADTO =$start+8 +.END + +.MACRODEF GEN_EVENT_SPECIAL_ENTITY floor entity_idx + $start: + .DB low($floor), $02, low($entity_idx) + .PADTO =$start+8 +.END + +.MACRODEF GEN_EVENT_REMOVE_STAIRS floor + $start: + .DB low($floor), $03 + .PADTO =$start+8 +.END + .INCLUDE "map/dungeons/morningforest.gbasm" diff --git a/map/dungeons/morningforest.gbasm b/map/dungeons/morningforest.gbasm index 4b79861..893ac57 100644 --- a/map/dungeons/morningforest.gbasm +++ b/map/dungeons/morningforest.gbasm @@ -1,6 +1,23 @@ -Dungeon: - .name: .DB =Dungeon_Name_1_Txt +Morning_Forest: + .name: + .DB bank(=Dungeon_Name_1_Txt) + .DB ptr(=Dungeon_Name_1_Txt) + + .flag: .DB 0b00011110 + + .tilemap_padding: .PADTO =.tilemap_padding+3 + + .generation_events.size: + .DB low(=.generation_events.end-=.generation_events) + .generation_events: + .GEN_EVENT_DIALOGUE $01 =Demo_quest_init + .GEN_EVENT_DIALOGUE $10 =Demo_quest_floor_reach + .GEN_EVENT_SPECIAL_ENTITY $10 $06 + .GEN_EVENT_REMOVE_STAIRS $10 + .generation_events.end: + .max_floor: .DB 0x0a, inv(0x0a) + .spawning_patterns: .DB $entity_cat_index, $entity_cat_index, $entity_cat_index, $entity_fimsh_index, 0b00000010 .DB $entity_cat_index, $entity_cat_index, $entity_penguin_index, $entity_fimsh_index, 0b00100011 @@ -10,3 +27,5 @@ Dungeon: .DB $entity_cat_index, $entity_fox_index, $entity_penguin_index, $entity_fimsh_index, 0b00011111 .DB $entity_fox_index, $entity_bug_index, $entity_penguin_index, $entity_fimsh_index, 0b00011111 .DB $entity_fox_index, $entity_mouse_index, $entity_penguin_index, $entity_fimsh_index, 0b00111111 + +.ASSERT bank(=Morning_Forest) bank(.) diff --git a/map/generationevents.gbasm b/map/generationevents.gbasm index 8a39b64..b540508 100644 --- a/map/generationevents.gbasm +++ b/map/generationevents.gbasm @@ -73,59 +73,3 @@ Generation_Event_Jump_Table: LD HL, $mem_object_list LD (HL), $00 RET - -Init_DemoQuest_Event: - LD HL, $mem_dungeon_generation_events - - LD (HL), $01 ; floor - INC HL - LD (HL), $01 ; jump table dialogue script - INC HL - LD (HL), bank(=Demo_quest_init) - INC HL - LD (HL), high(ptr(=Demo_quest_init)) - INC HL - LD (HL), low(ptr(=Demo_quest_init)) - INC HL - - INC HL - INC HL - INC HL - - LD (HL), $10 ; floor - INC HL - LD (HL), $02 ; jump table entity - INC HL - LD (HL), $06 ; demo quest bunny idx - INC HL - - INC HL - INC HL - INC HL - INC HL - INC HL - - LD (HL), $10 ; floor - INC HL - LD (HL), $03 ; jump table remove stairs - INC HL - INC HL - - INC HL - INC HL - INC HL - INC HL - INC HL - - LD (HL), $10 ; floor - INC HL - LD (HL), $01 ; jump table dialogue script - INC HL - LD (HL), bank(=Demo_quest_floor_reach) - INC HL - LD (HL), high(ptr(=Demo_quest_floor_reach)) - INC HL - LD (HL), low(ptr(=Demo_quest_floor_reach)) - -AAAAAAAAA: - RET diff --git a/map/loaddungeon.gbasm b/map/loading/dungeoninfos.gbasm index c2052c2..2b8fceb 100644 --- a/map/loaddungeon.gbasm +++ b/map/loading/dungeoninfos.gbasm @@ -2,9 +2,13 @@ Load_Dungeon_Txt: ; pointer to Dungeon struct in HL, bank in A .CHANGE_BANK_TO_A LD A, (HL+) + LD E, A + LD A, (HL+) LD B, A LD A, (HL+) LD C, A + LD A, E + .CHANGE_BANK_TO_A PUSH BC LD H, B @@ -30,8 +34,22 @@ Load_Dungeon_Txt: ; pointer to Dungeon struct in HL, bank in A Load_Dungeon_Spawn_patterns: ; pointer to Dungeon struct in HL bank in A .CHANGE_BANK_TO_A - INC HL - INC HL + LD A, L + ADD $07 + LD L, A + LD A, H + ADC $00 + LD H, A + + LD A, (HL+) + LD B, A + LD A, L + ADD B + LD L, A + LD A, H + ADC $00 + LD H, A + INC HL ; TODO FIX THE THING WHEN THERE'S MORE THAN 256/7 FLOORS @@ -86,3 +104,29 @@ Load_Dungeon_Spawn_patterns: ; pointer to Dungeon struct in HL bank in A LD $mem_entity_spawning_pattern, A RET + +Load_Generation_Events: ; bank in A, dungeon ptr in HL + .CHANGE_BANK_TO_A + LD A, L + ADD $07 + LD L, A + LD A, H + ADC $00 + LD H, A + LD B, $00 + LD C, (HL) + INC HL + LD D, H + LD E, L + LD HL, $mem_dungeon_generation_events + CALL =memcpy + + LD A, C + CPL + INC A + ADD $80 + LD C, A + + CALL =bzero + + RET diff --git a/map/loading.gbasm b/map/loading/dungeontiles.gbasm index dddf1a3..5f91197 100644 --- a/map/loading.gbasm +++ b/map/loading/dungeontiles.gbasm @@ -13,10 +13,10 @@ Load_Prepared_Map: .For_X: LD A, C CALL =Load_Block - LD A, $mem_prepared_block_position_1 + LD A, ($mem_prepared_block_position) SUB high($VRAM_tilemap_1) ADD high($mem_map_loading_buffer) - LD $mem_prepared_block_position_1, A + LD ($mem_prepared_block_position), A CALL =Display_Main_Prepared_Block INC C @@ -68,7 +68,6 @@ Load_Next_Block_Row: ; (+1/-1 direction in B, block number (between 0-f) in C RET Load_Next_Block_Column: ; (+1/-1 direction in B), block number (between 0-f) in C - PUSH AF PUSH BC PUSH DE @@ -116,7 +115,7 @@ Prepare_Scrolling_Map: AND $07 DEC A AND $01 - SLA A + ADD A DEC A LD B, A LD A, $mem_bunny_direction @@ -155,7 +154,7 @@ Construct_Tile_Address: ; Construct Tile Map address from A and B in DE RL D SLA E RL D - SLA A + ADD A OR E LD E, A LD A, D @@ -167,9 +166,12 @@ Construct_Tile_Address: ; Construct Tile Map address from A and B in DE RET -Load_Block: ; X in A, Y in B +Load_Block: +Load_Block_From_Solid: ; X in A, Y in B PUSH BC PUSH AF + .After_AF_BC_Push: + PUSH DE CALL =Construct_Tile_Address @@ -213,8 +215,6 @@ Load_Block: ; X in A, Y in B OR C LD C, A - INC C - LD A, $mem_map_loading_flags SET 2, A LD $mem_map_loading_flags, A @@ -223,9 +223,9 @@ Load_Block: ; X in A, Y in B POP DE LD A, D - LD $mem_prepared_block_position_1, A + LD ($mem_prepared_block_position), A LD A, E - LD $mem_prepared_block_position_2, A + LD ($mem_prepared_block_position+1), A POP AF @@ -235,13 +235,52 @@ Load_Block: ; X in A, Y in B JR Z, =Load_Block.Empty Load_Block.Solid: LD A, C - LD $mem_prepared_block_tile, A + AND 0b0101 + SRA A + RRA + RLCA + ADD $20 + + LD ($mem_prepared_block_tile), A + + LD A, C + AND 0b0110 + SRA A + ADD $24 + + LD ($mem_prepared_block_tile+1), A + + LD A, C + AND 0b1001 + SRA A + RRA + RLCA + SRA A + RRA + RLCA + ADD $28 + + LD ($mem_prepared_block_tile+2), A + + LD A, C + AND 0b1010 + SRA A + RRA + RRA + RLCA + ADD $2c + + LD ($mem_prepared_block_tile+3), A + JR =Load_Block.End Load_Block.Empty: LD A, $00 - LD $mem_prepared_block_tile, A + LD ($mem_prepared_block_tile), A + LD ($mem_prepared_block_tile+1), A + LD ($mem_prepared_block_tile+2), A + LD ($mem_prepared_block_tile+3), A Load_Block.End: @@ -258,12 +297,11 @@ Load_Additional_Block: LD B, A LD A, $mem_additional_loading_block_x CALL =Load_Block - LD A, $mem_prepared_block_tile - LD $mem_additional_loading_block_tile, A - LD A, $mem_prepared_block_position_1 - LD $mem_additional_loading_block_position_1, A - LD A, $mem_prepared_block_position_2 - LD $mem_additional_loading_block_position_2, A + .COPY_4BYTES $mem_additional_loading_block_tile, $mem_prepared_block_tile + LD A, ($mem_prepared_block_position) + LD ($mem_additional_loading_block_position), A + LD A, ($mem_prepared_block_position+1) + LD ($mem_additional_loading_block_position+1), A RET @@ -285,12 +323,12 @@ Display_Prepared_Blocks: RES 6, A LD $mem_display_flag, A - LD A, $mem_additional_loading_block_tile - LD $mem_prepared_block_tile, A - LD A, $mem_additional_loading_block_position_1 - LD $mem_prepared_block_position_1, A - LD A, $mem_additional_loading_block_position_2 - LD $mem_prepared_block_position_2, A + .COPY_4BYTES $mem_prepared_block_tile, $mem_additional_loading_block_tile + + LD A, ($mem_additional_loading_block_position) + LD ($mem_prepared_block_position), A + LD A, ($mem_additional_loading_block_position+1) + LD ($mem_prepared_block_position+1), A JP =Display_Main_Prepared_Block Display_Main_Prepared_Block: @@ -298,92 +336,28 @@ Display_Main_Prepared_Block: PUSH BC PUSH DE - LD A, $mem_prepared_block_position_1 + LD A, ($mem_prepared_block_position) LD D, A - LD A, $mem_prepared_block_position_2 + LD A, ($mem_prepared_block_position+1) LD E, A - LD A, $mem_prepared_block_tile - CP $00 - JR Z, =.Empty - DEC A - LD C, A - - AND 0b0101 - SCF - CCF - RR A - RR A - RLC A - ADD $20 - - LD (DE), A - - LD A, E - OR $20 - LD E, A - - LD A, C - AND 0b1001 - SCF - CCF - RR A - RR A - RLC A - SCF - CCF - RR A - RR A - RLC A - ADD $28 + LD A, ($mem_prepared_block_tile) LD (DE), A INC E - - LD A, C - AND 0b1010 - SRA A - RR A - RR A - RLC A - ADD $2c - - LD (DE), A - - LD A, E - AND $DF - LD E, A - - LD A, C - AND 0b0110 - SRA A - ADD $24 - + LD A, ($mem_prepared_block_tile+1) LD (DE), A - .End: - - POP DE - POP BC - POP AF - RET - - .Empty: - XOR A - LD (DE), A LD A, E OR $20 + DEC A LD E, A - XOR A + LD A, ($mem_prepared_block_tile+2) LD (DE), A + INC E - XOR A - LD (DE), A - LD A, E - AND $DF - LD E, A - XOR A + LD A, ($mem_prepared_block_tile+3) LD (DE), A POP DE diff --git a/map/loading/romtiles.gbasm b/map/loading/romtiles.gbasm new file mode 100644 index 0000000..989a201 --- /dev/null +++ b/map/loading/romtiles.gbasm @@ -0,0 +1,81 @@ +Load_ROM_Block: ; X in A, Y in B + PUSH BC + PUSH AF + + CP $20 + JP NC, =Load_Block_From_Solid.After_AF_BC_Push + + PUSH BC + LD C, A + LD A, B + CP $20 + LD A, C + POP BC + JP NC, =Load_Block_From_Solid.After_AF_BC_Push + + PUSH DE + PUSH HL + + LD C, A + + + CALL =Construct_Tile_Address + + LD A, $mem_map_loading_flags + SET 2, A + LD $mem_map_loading_flags, A + + LD A, ($mem_rom_tilemap_addr+1) + LD H, A + LD A, ($mem_rom_tilemap_addr+2) + LD L, A + LD A, ($mem_rom_tilemap_addr) + .CHANGE_BANK_TO_A + + SLA C + SLA B + LD A, $00 + SRA B + RR A + SRA B + RR A + OR C + LD C, A + + DBG + + LD A, L + ADD C + LD L, A + LD A, H + ADC B + LD H, A + + LD A, D + LD ($mem_prepared_block_position), A + LD A, E + LD ($mem_prepared_block_position+1), A + + LD A, (HL+) + LD ($mem_prepared_block_tile), A + LD A, (HL) + LD ($mem_prepared_block_tile+1), A + + LD A, L + DEC A + ADD $40 + LD L, A + LD A, H + ADC $00 + LD H, A + + LD A, (HL+) + LD ($mem_prepared_block_tile+2), A + LD A, (HL) + LD ($mem_prepared_block_tile+3), A + + POP HL + POP DE + POP AF + POP BC + RET diff --git a/map/maps/test.ldtk b/map/maps/test.ldtk index 238a266..ad0aa9d 100644 --- a/map/maps/test.ldtk +++ b/map/maps/test.ldtk @@ -11,7 +11,7 @@ "iid": "a44281a0-3740-11f0-9e9d-278017e89d25", "jsonVersion": "1.5.3", "appBuildId": 485696, - "nextUid": 100, + "nextUid": 125, "identifierStyle": "Capitalize", "toc": [], "worldLayout": "Free", @@ -114,7 +114,7 @@ "isOptional": false, "rules": [ { - "uid": 73, + "uid": 100, "active": true, "size": 3, "tileRectsIds": [[0]], @@ -141,12 +141,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 3803826, + "perlinSeed": 4244637, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 74, + "uid": 101, "active": true, "size": 3, "tileRectsIds": [[15]], @@ -173,12 +173,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 7198347, + "perlinSeed": 5068538, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 75, + "uid": 102, "active": true, "size": 3, "tileRectsIds": [[10]], @@ -205,12 +205,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 5339095, + "perlinSeed": 5164513, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 76, + "uid": 103, "active": true, "size": 3, "tileRectsIds": [[9]], @@ -237,12 +237,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 8227451, + "perlinSeed": 4068836, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 77, + "uid": 104, "active": true, "size": 3, "tileRectsIds": [[5]], @@ -269,15 +269,15 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 6349180, + "perlinSeed": 1289933, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 78, + "uid": 105, "active": true, "size": 3, - "tileRectsIds": [[4]], + "tileRectsIds": [[6]], "alpha": 1, "chance": 1, "breakOnMatch": true, @@ -301,12 +301,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 6851122, + "perlinSeed": 1592403, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 79, + "uid": 106, "active": true, "size": 3, "tileRectsIds": [[2]], @@ -333,12 +333,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 2018503, + "perlinSeed": 1841902, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 80, + "uid": 107, "active": true, "size": 3, "tileRectsIds": [[1]], @@ -365,12 +365,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 2346343, + "perlinSeed": 7382030, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 81, + "uid": 108, "active": true, "size": 3, "tileRectsIds": [[3]], @@ -397,12 +397,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 45566, + "perlinSeed": 2692299, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 82, + "uid": 109, "active": true, "size": 3, "tileRectsIds": [[8]], @@ -429,12 +429,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 9369893, + "perlinSeed": 4075634, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 83, + "uid": 110, "active": true, "size": 3, "tileRectsIds": [[4]], @@ -461,12 +461,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 3950552, + "perlinSeed": 4841810, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 84, + "uid": 111, "active": true, "size": 3, "tileRectsIds": [[12]], @@ -493,12 +493,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 4706061, + "perlinSeed": 704296, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 85, + "uid": 112, "active": true, "size": 3, "tileRectsIds": [[10]], @@ -525,12 +525,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 6408909, + "perlinSeed": 8309516, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 86, + "uid": 113, "active": true, "size": 3, "tileRectsIds": [[9]], @@ -557,12 +557,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 7141269, + "perlinSeed": 1027723, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 87, + "uid": 114, "active": true, "size": 3, "tileRectsIds": [[5]], @@ -589,12 +589,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 9407965, + "perlinSeed": 641287, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 88, + "uid": 115, "active": true, "size": 3, "tileRectsIds": [[6]], @@ -621,12 +621,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 4145457, + "perlinSeed": 7937538, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 89, + "uid": 116, "active": true, "size": 3, "tileRectsIds": [[11]], @@ -653,12 +653,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 1868485, + "perlinSeed": 2317231, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 90, + "uid": 117, "active": true, "size": 3, "tileRectsIds": [[13]], @@ -685,12 +685,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 1947474, + "perlinSeed": 3927948, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 91, + "uid": 118, "active": true, "size": 3, "tileRectsIds": [[7]], @@ -717,12 +717,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 7357459, + "perlinSeed": 7802878, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 92, + "uid": 119, "active": true, "size": 3, "tileRectsIds": [[14]], @@ -749,12 +749,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 5046169, + "perlinSeed": 72667, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 93, + "uid": 120, "active": true, "size": 3, "tileRectsIds": [[15]], @@ -781,12 +781,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 878430, + "perlinSeed": 8526192, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 94, + "uid": 121, "active": true, "size": 3, "tileRectsIds": [[15]], @@ -813,12 +813,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 3740860, + "perlinSeed": 5570921, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 95, + "uid": 122, "active": true, "size": 3, "tileRectsIds": [[15]], @@ -845,12 +845,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 746466, + "perlinSeed": 6697741, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 96, + "uid": 123, "active": true, "size": 3, "tileRectsIds": [[15]], @@ -877,12 +877,12 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 2011540, + "perlinSeed": 2048853, "perlinScale": 0.2, "perlinOctaves": 2 }, { - "uid": 97, + "uid": 124, "active": true, "size": 1, "tileRectsIds": [[15]], @@ -909,7 +909,7 @@ "outOfBoundsValue": 2, "invalidated": false, "perlinActive": false, - "perlinSeed": 6517407, + "perlinSeed": 4198929, "perlinScale": 0.2, "perlinOctaves": 2 } @@ -1098,162 +1098,162 @@ "optionalRules": [], "intGridCsv": [], "autoLayerTiles": [ - { "px": [208,176], "src": [48,48], "f": 0, "t": 15, "d": [97,365], "a": 1 }, - { "px": [192,176], "src": [48,48], "f": 0, "t": 15, "d": [96,364], "a": 1 }, - { "px": [224,176], "src": [48,48], "f": 0, "t": 15, "d": [95,366], "a": 1 }, - { "px": [208,192], "src": [48,48], "f": 0, "t": 15, "d": [95,397], "a": 1 }, - { "px": [192,160], "src": [48,48], "f": 0, "t": 15, "d": [94,332], "a": 1 }, - { "px": [224,160], "src": [48,48], "f": 0, "t": 15, "d": [93,334], "a": 1 }, - { "px": [208,64], "src": [32,48], "f": 0, "t": 14, "d": [92,141], "a": 1 }, - { "px": [384,96], "src": [32,48], "f": 0, "t": 14, "d": [92,216], "a": 1 }, - { "px": [384,112], "src": [32,48], "f": 0, "t": 14, "d": [92,248], "a": 1 }, - { "px": [176,160], "src": [32,48], "f": 0, "t": 14, "d": [92,331], "a": 1 }, - { "px": [352,224], "src": [32,48], "f": 0, "t": 14, "d": [92,470], "a": 1 }, - { "px": [352,464], "src": [48,16], "f": 0, "t": 7, "d": [91,950], "a": 1 }, - { "px": [112,160], "src": [16,48], "f": 0, "t": 13, "d": [90,327], "a": 1 }, - { "px": [240,160], "src": [16,48], "f": 0, "t": 13, "d": [90,335], "a": 1 }, - { "px": [400,96], "src": [48,32], "f": 0, "t": 11, "d": [89,217], "a": 1 }, - { "px": [208,160], "src": [48,32], "f": 0, "t": 11, "d": [89,333], "a": 1 }, - { "px": [352,208], "src": [48,32], "f": 0, "t": 11, "d": [89,438], "a": 1 }, - { "px": [368,208], "src": [48,32], "f": 0, "t": 11, "d": [89,439], "a": 1 }, - { "px": [176,176], "src": [32,16], "f": 0, "t": 6, "d": [88,363], "a": 1 }, - { "px": [192,192], "src": [32,16], "f": 0, "t": 6, "d": [88,396], "a": 1 }, - { "px": [400,112], "src": [16,16], "f": 0, "t": 5, "d": [87,249], "a": 1 }, - { "px": [240,176], "src": [16,16], "f": 0, "t": 5, "d": [87,367], "a": 1 }, - { "px": [224,192], "src": [16,16], "f": 0, "t": 5, "d": [87,398], "a": 1 }, - { "px": [368,224], "src": [16,16], "f": 0, "t": 5, "d": [87,471], "a": 1 }, - { "px": [192,144], "src": [16,32], "f": 0, "t": 9, "d": [86,300], "a": 1 }, - { "px": [240,144], "src": [16,32], "f": 0, "t": 9, "d": [86,303], "a": 1 }, - { "px": [176,144], "src": [32,32], "f": 0, "t": 10, "d": [85,299], "a": 1 }, - { "px": [224,144], "src": [32,32], "f": 0, "t": 10, "d": [85,302], "a": 1 }, - { "px": [32,48], "src": [0,48], "f": 0, "t": 12, "d": [84,98], "a": 1 }, - { "px": [240,48], "src": [0,48], "f": 0, "t": 12, "d": [84,111], "a": 1 }, - { "px": [32,64], "src": [0,48], "f": 0, "t": 12, "d": [84,130], "a": 1 }, - { "px": [96,64], "src": [0,48], "f": 0, "t": 12, "d": [84,134], "a": 1 }, - { "px": [128,64], "src": [0,48], "f": 0, "t": 12, "d": [84,136], "a": 1 }, - { "px": [176,64], "src": [0,48], "f": 0, "t": 12, "d": [84,139], "a": 1 }, - { "px": [208,80], "src": [0,48], "f": 0, "t": 12, "d": [84,173], "a": 1 }, - { "px": [416,80], "src": [0,48], "f": 0, "t": 12, "d": [84,186], "a": 1 }, - { "px": [464,96], "src": [0,48], "f": 0, "t": 12, "d": [84,221], "a": 1 }, - { "px": [304,112], "src": [0,48], "f": 0, "t": 12, "d": [84,243], "a": 1 }, - { "px": [464,112], "src": [0,48], "f": 0, "t": 12, "d": [84,253], "a": 1 }, - { "px": [304,128], "src": [0,48], "f": 0, "t": 12, "d": [84,275], "a": 1 }, - { "px": [464,128], "src": [0,48], "f": 0, "t": 12, "d": [84,285], "a": 1 }, - { "px": [112,144], "src": [0,48], "f": 0, "t": 12, "d": [84,295], "a": 1 }, - { "px": [464,144], "src": [0,48], "f": 0, "t": 12, "d": [84,317], "a": 1 }, - { "px": [320,160], "src": [0,48], "f": 0, "t": 12, "d": [84,340], "a": 1 }, - { "px": [112,176], "src": [0,48], "f": 0, "t": 12, "d": [84,359], "a": 1 }, - { "px": [320,176], "src": [0,48], "f": 0, "t": 12, "d": [84,372], "a": 1 }, - { "px": [448,288], "src": [0,48], "f": 0, "t": 12, "d": [84,604], "a": 1 }, - { "px": [256,304], "src": [0,48], "f": 0, "t": 12, "d": [84,624], "a": 1 }, - { "px": [448,304], "src": [0,48], "f": 0, "t": 12, "d": [84,636], "a": 1 }, - { "px": [256,320], "src": [0,48], "f": 0, "t": 12, "d": [84,656], "a": 1 }, - { "px": [256,336], "src": [0,48], "f": 0, "t": 12, "d": [84,688], "a": 1 }, - { "px": [336,336], "src": [0,48], "f": 0, "t": 12, "d": [84,693], "a": 1 }, - { "px": [368,336], "src": [0,48], "f": 0, "t": 12, "d": [84,695], "a": 1 }, - { "px": [432,336], "src": [0,48], "f": 0, "t": 12, "d": [84,699], "a": 1 }, - { "px": [176,80], "src": [0,16], "f": 0, "t": 4, "d": [83,171], "a": 1 }, - { "px": [384,128], "src": [0,16], "f": 0, "t": 4, "d": [83,280], "a": 1 }, - { "px": [208,208], "src": [0,16], "f": 0, "t": 4, "d": [83,429], "a": 1 }, - { "px": [352,240], "src": [0,16], "f": 0, "t": 4, "d": [83,502], "a": 1 }, - { "px": [384,304], "src": [0,16], "f": 0, "t": 4, "d": [83,632], "a": 1 }, - { "px": [336,352], "src": [0,16], "f": 0, "t": 4, "d": [83,725], "a": 1 }, - { "px": [368,352], "src": [0,16], "f": 0, "t": 4, "d": [83,727], "a": 1 }, - { "px": [176,32], "src": [0,32], "f": 0, "t": 8, "d": [82,75], "a": 1 }, - { "px": [96,48], "src": [0,32], "f": 0, "t": 8, "d": [82,102], "a": 1 }, - { "px": [128,48], "src": [0,32], "f": 0, "t": 8, "d": [82,104], "a": 1 }, - { "px": [368,320], "src": [0,32], "f": 0, "t": 8, "d": [82,663], "a": 1 }, - { "px": [320,448], "src": [0,32], "f": 0, "t": 8, "d": [82,916], "a": 1 }, - { "px": [352,448], "src": [0,32], "f": 0, "t": 8, "d": [82,918], "a": 1 }, - { "px": [384,448], "src": [0,32], "f": 0, "t": 8, "d": [82,920], "a": 1 }, - { "px": [48,32], "src": [48,0], "f": 0, "t": 3, "d": [81,67], "a": 1 }, - { "px": [192,48], "src": [48,0], "f": 0, "t": 3, "d": [81,108], "a": 1 }, - { "px": [224,64], "src": [48,0], "f": 0, "t": 3, "d": [81,142], "a": 1 }, - { "px": [432,64], "src": [48,0], "f": 0, "t": 3, "d": [81,155], "a": 1 }, - { "px": [48,80], "src": [48,0], "f": 0, "t": 3, "d": [81,163], "a": 1 }, - { "px": [112,80], "src": [48,0], "f": 0, "t": 3, "d": [81,167], "a": 1 }, - { "px": [336,80], "src": [48,0], "f": 0, "t": 3, "d": [81,181], "a": 1 }, - { "px": [352,80], "src": [48,0], "f": 0, "t": 3, "d": [81,182], "a": 1 }, - { "px": [368,80], "src": [48,0], "f": 0, "t": 3, "d": [81,183], "a": 1 }, - { "px": [224,96], "src": [48,0], "f": 0, "t": 3, "d": [81,206], "a": 1 }, - { "px": [96,128], "src": [48,0], "f": 0, "t": 3, "d": [81,262], "a": 1 }, - { "px": [432,176], "src": [48,0], "f": 0, "t": 3, "d": [81,379], "a": 1 }, - { "px": [96,192], "src": [48,0], "f": 0, "t": 3, "d": [81,390], "a": 1 }, - { "px": [384,208], "src": [48,0], "f": 0, "t": 3, "d": [81,440], "a": 1 }, - { "px": [416,272], "src": [48,0], "f": 0, "t": 3, "d": [81,570], "a": 1 }, - { "px": [432,272], "src": [48,0], "f": 0, "t": 3, "d": [81,571], "a": 1 }, - { "px": [272,288], "src": [48,0], "f": 0, "t": 3, "d": [81,593], "a": 1 }, - { "px": [288,288], "src": [48,0], "f": 0, "t": 3, "d": [81,594], "a": 1 }, - { "px": [336,464], "src": [48,0], "f": 0, "t": 3, "d": [81,949], "a": 1 }, - { "px": [368,464], "src": [48,0], "f": 0, "t": 3, "d": [81,951], "a": 1 }, - { "px": [64,32], "src": [16,0], "f": 0, "t": 1, "d": [80,68], "a": 1 }, - { "px": [64,80], "src": [16,0], "f": 0, "t": 1, "d": [80,164], "a": 1 }, - { "px": [240,96], "src": [16,0], "f": 0, "t": 1, "d": [80,207], "a": 1 }, - { "px": [304,384], "src": [16,0], "f": 0, "t": 1, "d": [80,787], "a": 1 }, - { "px": [224,32], "src": [32,0], "f": 0, "t": 2, "d": [79,78], "a": 1 }, - { "px": [160,48], "src": [32,0], "f": 0, "t": 2, "d": [79,106], "a": 1 }, - { "px": [80,128], "src": [32,0], "f": 0, "t": 2, "d": [79,261], "a": 1 }, - { "px": [96,160], "src": [32,0], "f": 0, "t": 2, "d": [79,326], "a": 1 }, - { "px": [80,192], "src": [32,0], "f": 0, "t": 2, "d": [79,389], "a": 1 }, - { "px": [400,368], "src": [32,0], "f": 0, "t": 2, "d": [79,761], "a": 1 }, - { "px": [32,80], "src": [0,16], "f": 0, "t": 4, "d": [78,162], "a": 1 }, - { "px": [96,80], "src": [0,16], "f": 0, "t": 4, "d": [78,166], "a": 1 }, - { "px": [448,80], "src": [0,16], "f": 0, "t": 4, "d": [78,188], "a": 1 }, - { "px": [208,96], "src": [0,16], "f": 0, "t": 4, "d": [78,205], "a": 1 }, - { "px": [304,144], "src": [0,16], "f": 0, "t": 4, "d": [78,307], "a": 1 }, - { "px": [320,192], "src": [0,16], "f": 0, "t": 4, "d": [78,404], "a": 1 }, - { "px": [336,208], "src": [0,16], "f": 0, "t": 4, "d": [78,437], "a": 1 }, - { "px": [304,304], "src": [0,16], "f": 0, "t": 4, "d": [78,627], "a": 1 }, - { "px": [320,320], "src": [0,16], "f": 0, "t": 4, "d": [78,660], "a": 1 }, - { "px": [256,352], "src": [0,16], "f": 0, "t": 4, "d": [78,720], "a": 1 }, - { "px": [272,368], "src": [0,16], "f": 0, "t": 4, "d": [78,753], "a": 1 }, - { "px": [288,384], "src": [0,16], "f": 0, "t": 4, "d": [78,786], "a": 1 }, - { "px": [320,464], "src": [0,16], "f": 0, "t": 4, "d": [78,948], "a": 1 }, - { "px": [240,64], "src": [16,16], "f": 0, "t": 5, "d": [77,143], "a": 1 }, - { "px": [128,80], "src": [16,16], "f": 0, "t": 5, "d": [77,168], "a": 1 }, - { "px": [320,96], "src": [16,16], "f": 0, "t": 5, "d": [77,212], "a": 1 }, - { "px": [416,96], "src": [16,16], "f": 0, "t": 5, "d": [77,218], "a": 1 }, - { "px": [464,160], "src": [16,16], "f": 0, "t": 5, "d": [77,349], "a": 1 }, - { "px": [448,176], "src": [16,16], "f": 0, "t": 5, "d": [77,380], "a": 1 }, - { "px": [112,192], "src": [16,16], "f": 0, "t": 5, "d": [77,391], "a": 1 }, - { "px": [416,192], "src": [16,16], "f": 0, "t": 5, "d": [77,410], "a": 1 }, - { "px": [400,208], "src": [16,16], "f": 0, "t": 5, "d": [77,441], "a": 1 }, - { "px": [400,288], "src": [16,16], "f": 0, "t": 5, "d": [77,601], "a": 1 }, - { "px": [448,320], "src": [16,16], "f": 0, "t": 5, "d": [77,668], "a": 1 }, - { "px": [432,352], "src": [16,16], "f": 0, "t": 5, "d": [77,731], "a": 1 }, - { "px": [416,368], "src": [16,16], "f": 0, "t": 5, "d": [77,762], "a": 1 }, - { "px": [384,464], "src": [16,16], "f": 0, "t": 5, "d": [77,952], "a": 1 }, - { "px": [240,32], "src": [16,32], "f": 0, "t": 9, "d": [76,79], "a": 1 }, - { "px": [208,48], "src": [16,32], "f": 0, "t": 9, "d": [76,109], "a": 1 }, - { "px": [448,64], "src": [16,32], "f": 0, "t": 9, "d": [76,156], "a": 1 }, - { "px": [384,80], "src": [16,32], "f": 0, "t": 9, "d": [76,184], "a": 1 }, - { "px": [464,80], "src": [16,32], "f": 0, "t": 9, "d": [76,189], "a": 1 }, - { "px": [112,128], "src": [16,32], "f": 0, "t": 9, "d": [76,263], "a": 1 }, - { "px": [320,144], "src": [16,32], "f": 0, "t": 9, "d": [76,308], "a": 1 }, - { "px": [336,192], "src": [16,32], "f": 0, "t": 9, "d": [76,405], "a": 1 }, - { "px": [448,272], "src": [16,32], "f": 0, "t": 9, "d": [76,572], "a": 1 }, - { "px": [304,288], "src": [16,32], "f": 0, "t": 9, "d": [76,595], "a": 1 }, - { "px": [320,304], "src": [16,32], "f": 0, "t": 9, "d": [76,628], "a": 1 }, - { "px": [336,320], "src": [16,32], "f": 0, "t": 9, "d": [76,661], "a": 1 }, - { "px": [272,352], "src": [16,32], "f": 0, "t": 9, "d": [76,721], "a": 1 }, - { "px": [288,368], "src": [16,32], "f": 0, "t": 9, "d": [76,754], "a": 1 }, - { "px": [32,32], "src": [32,32], "f": 0, "t": 10, "d": [75,66], "a": 1 }, - { "px": [416,64], "src": [32,32], "f": 0, "t": 10, "d": [75,154], "a": 1 }, - { "px": [320,80], "src": [32,32], "f": 0, "t": 10, "d": [75,180], "a": 1 }, - { "px": [304,96], "src": [32,32], "f": 0, "t": 10, "d": [75,211], "a": 1 }, - { "px": [448,160], "src": [32,32], "f": 0, "t": 10, "d": [75,348], "a": 1 }, - { "px": [416,176], "src": [32,32], "f": 0, "t": 10, "d": [75,378], "a": 1 }, - { "px": [400,192], "src": [32,32], "f": 0, "t": 10, "d": [75,409], "a": 1 }, - { "px": [400,272], "src": [32,32], "f": 0, "t": 10, "d": [75,569], "a": 1 }, - { "px": [256,288], "src": [32,32], "f": 0, "t": 10, "d": [75,592], "a": 1 }, - { "px": [384,288], "src": [32,32], "f": 0, "t": 10, "d": [75,600], "a": 1 }, - { "px": [432,320], "src": [32,32], "f": 0, "t": 10, "d": [75,667], "a": 1 }, - { "px": [416,352], "src": [32,32], "f": 0, "t": 10, "d": [75,730], "a": 1 }, - { "px": [176,48], "src": [48,48], "f": 0, "t": 15, "d": [74,107], "a": 1 }, - { "px": [48,144], "src": [0,0], "f": 0, "t": 0, "d": [73,291], "a": 1 }, - { "px": [48,176], "src": [0,0], "f": 0, "t": 0, "d": [73,355], "a": 1 }, - { "px": [336,416], "src": [0,0], "f": 0, "t": 0, "d": [73,853], "a": 1 }, - { "px": [368,416], "src": [0,0], "f": 0, "t": 0, "d": [73,855], "a": 1 } + { "px": [208,176], "src": [48,48], "f": 0, "t": 15, "d": [124,365], "a": 1 }, + { "px": [192,176], "src": [48,48], "f": 0, "t": 15, "d": [123,364], "a": 1 }, + { "px": [224,176], "src": [48,48], "f": 0, "t": 15, "d": [122,366], "a": 1 }, + { "px": [208,192], "src": [48,48], "f": 0, "t": 15, "d": [122,397], "a": 1 }, + { "px": [192,160], "src": [48,48], "f": 0, "t": 15, "d": [121,332], "a": 1 }, + { "px": [224,160], "src": [48,48], "f": 0, "t": 15, "d": [120,334], "a": 1 }, + { "px": [208,64], "src": [32,48], "f": 0, "t": 14, "d": [119,141], "a": 1 }, + { "px": [384,96], "src": [32,48], "f": 0, "t": 14, "d": [119,216], "a": 1 }, + { "px": [384,112], "src": [32,48], "f": 0, "t": 14, "d": [119,248], "a": 1 }, + { "px": [176,160], "src": [32,48], "f": 0, "t": 14, "d": [119,331], "a": 1 }, + { "px": [352,224], "src": [32,48], "f": 0, "t": 14, "d": [119,470], "a": 1 }, + { "px": [352,464], "src": [48,16], "f": 0, "t": 7, "d": [118,950], "a": 1 }, + { "px": [112,160], "src": [16,48], "f": 0, "t": 13, "d": [117,327], "a": 1 }, + { "px": [240,160], "src": [16,48], "f": 0, "t": 13, "d": [117,335], "a": 1 }, + { "px": [400,96], "src": [48,32], "f": 0, "t": 11, "d": [116,217], "a": 1 }, + { "px": [208,160], "src": [48,32], "f": 0, "t": 11, "d": [116,333], "a": 1 }, + { "px": [352,208], "src": [48,32], "f": 0, "t": 11, "d": [116,438], "a": 1 }, + { "px": [368,208], "src": [48,32], "f": 0, "t": 11, "d": [116,439], "a": 1 }, + { "px": [176,176], "src": [32,16], "f": 0, "t": 6, "d": [115,363], "a": 1 }, + { "px": [192,192], "src": [32,16], "f": 0, "t": 6, "d": [115,396], "a": 1 }, + { "px": [400,112], "src": [16,16], "f": 0, "t": 5, "d": [114,249], "a": 1 }, + { "px": [240,176], "src": [16,16], "f": 0, "t": 5, "d": [114,367], "a": 1 }, + { "px": [224,192], "src": [16,16], "f": 0, "t": 5, "d": [114,398], "a": 1 }, + { "px": [368,224], "src": [16,16], "f": 0, "t": 5, "d": [114,471], "a": 1 }, + { "px": [192,144], "src": [16,32], "f": 0, "t": 9, "d": [113,300], "a": 1 }, + { "px": [240,144], "src": [16,32], "f": 0, "t": 9, "d": [113,303], "a": 1 }, + { "px": [176,144], "src": [32,32], "f": 0, "t": 10, "d": [112,299], "a": 1 }, + { "px": [224,144], "src": [32,32], "f": 0, "t": 10, "d": [112,302], "a": 1 }, + { "px": [32,48], "src": [0,48], "f": 0, "t": 12, "d": [111,98], "a": 1 }, + { "px": [240,48], "src": [0,48], "f": 0, "t": 12, "d": [111,111], "a": 1 }, + { "px": [32,64], "src": [0,48], "f": 0, "t": 12, "d": [111,130], "a": 1 }, + { "px": [96,64], "src": [0,48], "f": 0, "t": 12, "d": [111,134], "a": 1 }, + { "px": [128,64], "src": [0,48], "f": 0, "t": 12, "d": [111,136], "a": 1 }, + { "px": [176,64], "src": [0,48], "f": 0, "t": 12, "d": [111,139], "a": 1 }, + { "px": [208,80], "src": [0,48], "f": 0, "t": 12, "d": [111,173], "a": 1 }, + { "px": [416,80], "src": [0,48], "f": 0, "t": 12, "d": [111,186], "a": 1 }, + { "px": [464,96], "src": [0,48], "f": 0, "t": 12, "d": [111,221], "a": 1 }, + { "px": [304,112], "src": [0,48], "f": 0, "t": 12, "d": [111,243], "a": 1 }, + { "px": [464,112], "src": [0,48], "f": 0, "t": 12, "d": [111,253], "a": 1 }, + { "px": [304,128], "src": [0,48], "f": 0, "t": 12, "d": [111,275], "a": 1 }, + { "px": [464,128], "src": [0,48], "f": 0, "t": 12, "d": [111,285], "a": 1 }, + { "px": [112,144], "src": [0,48], "f": 0, "t": 12, "d": [111,295], "a": 1 }, + { "px": [464,144], "src": [0,48], "f": 0, "t": 12, "d": [111,317], "a": 1 }, + { "px": [320,160], "src": [0,48], "f": 0, "t": 12, "d": [111,340], "a": 1 }, + { "px": [112,176], "src": [0,48], "f": 0, "t": 12, "d": [111,359], "a": 1 }, + { "px": [320,176], "src": [0,48], "f": 0, "t": 12, "d": [111,372], "a": 1 }, + { "px": [448,288], "src": [0,48], "f": 0, "t": 12, "d": [111,604], "a": 1 }, + { "px": [256,304], "src": [0,48], "f": 0, "t": 12, "d": [111,624], "a": 1 }, + { "px": [448,304], "src": [0,48], "f": 0, "t": 12, "d": [111,636], "a": 1 }, + { "px": [256,320], "src": [0,48], "f": 0, "t": 12, "d": [111,656], "a": 1 }, + { "px": [256,336], "src": [0,48], "f": 0, "t": 12, "d": [111,688], "a": 1 }, + { "px": [336,336], "src": [0,48], "f": 0, "t": 12, "d": [111,693], "a": 1 }, + { "px": [368,336], "src": [0,48], "f": 0, "t": 12, "d": [111,695], "a": 1 }, + { "px": [432,336], "src": [0,48], "f": 0, "t": 12, "d": [111,699], "a": 1 }, + { "px": [176,80], "src": [0,16], "f": 0, "t": 4, "d": [110,171], "a": 1 }, + { "px": [384,128], "src": [0,16], "f": 0, "t": 4, "d": [110,280], "a": 1 }, + { "px": [208,208], "src": [0,16], "f": 0, "t": 4, "d": [110,429], "a": 1 }, + { "px": [352,240], "src": [0,16], "f": 0, "t": 4, "d": [110,502], "a": 1 }, + { "px": [384,304], "src": [0,16], "f": 0, "t": 4, "d": [110,632], "a": 1 }, + { "px": [336,352], "src": [0,16], "f": 0, "t": 4, "d": [110,725], "a": 1 }, + { "px": [368,352], "src": [0,16], "f": 0, "t": 4, "d": [110,727], "a": 1 }, + { "px": [176,32], "src": [0,32], "f": 0, "t": 8, "d": [109,75], "a": 1 }, + { "px": [96,48], "src": [0,32], "f": 0, "t": 8, "d": [109,102], "a": 1 }, + { "px": [128,48], "src": [0,32], "f": 0, "t": 8, "d": [109,104], "a": 1 }, + { "px": [368,320], "src": [0,32], "f": 0, "t": 8, "d": [109,663], "a": 1 }, + { "px": [320,448], "src": [0,32], "f": 0, "t": 8, "d": [109,916], "a": 1 }, + { "px": [352,448], "src": [0,32], "f": 0, "t": 8, "d": [109,918], "a": 1 }, + { "px": [384,448], "src": [0,32], "f": 0, "t": 8, "d": [109,920], "a": 1 }, + { "px": [48,32], "src": [48,0], "f": 0, "t": 3, "d": [108,67], "a": 1 }, + { "px": [192,48], "src": [48,0], "f": 0, "t": 3, "d": [108,108], "a": 1 }, + { "px": [224,64], "src": [48,0], "f": 0, "t": 3, "d": [108,142], "a": 1 }, + { "px": [432,64], "src": [48,0], "f": 0, "t": 3, "d": [108,155], "a": 1 }, + { "px": [48,80], "src": [48,0], "f": 0, "t": 3, "d": [108,163], "a": 1 }, + { "px": [112,80], "src": [48,0], "f": 0, "t": 3, "d": [108,167], "a": 1 }, + { "px": [336,80], "src": [48,0], "f": 0, "t": 3, "d": [108,181], "a": 1 }, + { "px": [352,80], "src": [48,0], "f": 0, "t": 3, "d": [108,182], "a": 1 }, + { "px": [368,80], "src": [48,0], "f": 0, "t": 3, "d": [108,183], "a": 1 }, + { "px": [224,96], "src": [48,0], "f": 0, "t": 3, "d": [108,206], "a": 1 }, + { "px": [96,128], "src": [48,0], "f": 0, "t": 3, "d": [108,262], "a": 1 }, + { "px": [432,176], "src": [48,0], "f": 0, "t": 3, "d": [108,379], "a": 1 }, + { "px": [96,192], "src": [48,0], "f": 0, "t": 3, "d": [108,390], "a": 1 }, + { "px": [384,208], "src": [48,0], "f": 0, "t": 3, "d": [108,440], "a": 1 }, + { "px": [416,272], "src": [48,0], "f": 0, "t": 3, "d": [108,570], "a": 1 }, + { "px": [432,272], "src": [48,0], "f": 0, "t": 3, "d": [108,571], "a": 1 }, + { "px": [272,288], "src": [48,0], "f": 0, "t": 3, "d": [108,593], "a": 1 }, + { "px": [288,288], "src": [48,0], "f": 0, "t": 3, "d": [108,594], "a": 1 }, + { "px": [336,464], "src": [48,0], "f": 0, "t": 3, "d": [108,949], "a": 1 }, + { "px": [368,464], "src": [48,0], "f": 0, "t": 3, "d": [108,951], "a": 1 }, + { "px": [64,32], "src": [16,0], "f": 0, "t": 1, "d": [107,68], "a": 1 }, + { "px": [64,80], "src": [16,0], "f": 0, "t": 1, "d": [107,164], "a": 1 }, + { "px": [240,96], "src": [16,0], "f": 0, "t": 1, "d": [107,207], "a": 1 }, + { "px": [304,384], "src": [16,0], "f": 0, "t": 1, "d": [107,787], "a": 1 }, + { "px": [224,32], "src": [32,0], "f": 0, "t": 2, "d": [106,78], "a": 1 }, + { "px": [160,48], "src": [32,0], "f": 0, "t": 2, "d": [106,106], "a": 1 }, + { "px": [80,128], "src": [32,0], "f": 0, "t": 2, "d": [106,261], "a": 1 }, + { "px": [96,160], "src": [32,0], "f": 0, "t": 2, "d": [106,326], "a": 1 }, + { "px": [80,192], "src": [32,0], "f": 0, "t": 2, "d": [106,389], "a": 1 }, + { "px": [400,368], "src": [32,0], "f": 0, "t": 2, "d": [106,761], "a": 1 }, + { "px": [32,80], "src": [32,16], "f": 0, "t": 6, "d": [105,162], "a": 1 }, + { "px": [96,80], "src": [32,16], "f": 0, "t": 6, "d": [105,166], "a": 1 }, + { "px": [448,80], "src": [32,16], "f": 0, "t": 6, "d": [105,188], "a": 1 }, + { "px": [208,96], "src": [32,16], "f": 0, "t": 6, "d": [105,205], "a": 1 }, + { "px": [304,144], "src": [32,16], "f": 0, "t": 6, "d": [105,307], "a": 1 }, + { "px": [320,192], "src": [32,16], "f": 0, "t": 6, "d": [105,404], "a": 1 }, + { "px": [336,208], "src": [32,16], "f": 0, "t": 6, "d": [105,437], "a": 1 }, + { "px": [304,304], "src": [32,16], "f": 0, "t": 6, "d": [105,627], "a": 1 }, + { "px": [320,320], "src": [32,16], "f": 0, "t": 6, "d": [105,660], "a": 1 }, + { "px": [256,352], "src": [32,16], "f": 0, "t": 6, "d": [105,720], "a": 1 }, + { "px": [272,368], "src": [32,16], "f": 0, "t": 6, "d": [105,753], "a": 1 }, + { "px": [288,384], "src": [32,16], "f": 0, "t": 6, "d": [105,786], "a": 1 }, + { "px": [320,464], "src": [32,16], "f": 0, "t": 6, "d": [105,948], "a": 1 }, + { "px": [240,64], "src": [16,16], "f": 0, "t": 5, "d": [104,143], "a": 1 }, + { "px": [128,80], "src": [16,16], "f": 0, "t": 5, "d": [104,168], "a": 1 }, + { "px": [320,96], "src": [16,16], "f": 0, "t": 5, "d": [104,212], "a": 1 }, + { "px": [416,96], "src": [16,16], "f": 0, "t": 5, "d": [104,218], "a": 1 }, + { "px": [464,160], "src": [16,16], "f": 0, "t": 5, "d": [104,349], "a": 1 }, + { "px": [448,176], "src": [16,16], "f": 0, "t": 5, "d": [104,380], "a": 1 }, + { "px": [112,192], "src": [16,16], "f": 0, "t": 5, "d": [104,391], "a": 1 }, + { "px": [416,192], "src": [16,16], "f": 0, "t": 5, "d": [104,410], "a": 1 }, + { "px": [400,208], "src": [16,16], "f": 0, "t": 5, "d": [104,441], "a": 1 }, + { "px": [400,288], "src": [16,16], "f": 0, "t": 5, "d": [104,601], "a": 1 }, + { "px": [448,320], "src": [16,16], "f": 0, "t": 5, "d": [104,668], "a": 1 }, + { "px": [432,352], "src": [16,16], "f": 0, "t": 5, "d": [104,731], "a": 1 }, + { "px": [416,368], "src": [16,16], "f": 0, "t": 5, "d": [104,762], "a": 1 }, + { "px": [384,464], "src": [16,16], "f": 0, "t": 5, "d": [104,952], "a": 1 }, + { "px": [240,32], "src": [16,32], "f": 0, "t": 9, "d": [103,79], "a": 1 }, + { "px": [208,48], "src": [16,32], "f": 0, "t": 9, "d": [103,109], "a": 1 }, + { "px": [448,64], "src": [16,32], "f": 0, "t": 9, "d": [103,156], "a": 1 }, + { "px": [384,80], "src": [16,32], "f": 0, "t": 9, "d": [103,184], "a": 1 }, + { "px": [464,80], "src": [16,32], "f": 0, "t": 9, "d": [103,189], "a": 1 }, + { "px": [112,128], "src": [16,32], "f": 0, "t": 9, "d": [103,263], "a": 1 }, + { "px": [320,144], "src": [16,32], "f": 0, "t": 9, "d": [103,308], "a": 1 }, + { "px": [336,192], "src": [16,32], "f": 0, "t": 9, "d": [103,405], "a": 1 }, + { "px": [448,272], "src": [16,32], "f": 0, "t": 9, "d": [103,572], "a": 1 }, + { "px": [304,288], "src": [16,32], "f": 0, "t": 9, "d": [103,595], "a": 1 }, + { "px": [320,304], "src": [16,32], "f": 0, "t": 9, "d": [103,628], "a": 1 }, + { "px": [336,320], "src": [16,32], "f": 0, "t": 9, "d": [103,661], "a": 1 }, + { "px": [272,352], "src": [16,32], "f": 0, "t": 9, "d": [103,721], "a": 1 }, + { "px": [288,368], "src": [16,32], "f": 0, "t": 9, "d": [103,754], "a": 1 }, + { "px": [32,32], "src": [32,32], "f": 0, "t": 10, "d": [102,66], "a": 1 }, + { "px": [416,64], "src": [32,32], "f": 0, "t": 10, "d": [102,154], "a": 1 }, + { "px": [320,80], "src": [32,32], "f": 0, "t": 10, "d": [102,180], "a": 1 }, + { "px": [304,96], "src": [32,32], "f": 0, "t": 10, "d": [102,211], "a": 1 }, + { "px": [448,160], "src": [32,32], "f": 0, "t": 10, "d": [102,348], "a": 1 }, + { "px": [416,176], "src": [32,32], "f": 0, "t": 10, "d": [102,378], "a": 1 }, + { "px": [400,192], "src": [32,32], "f": 0, "t": 10, "d": [102,409], "a": 1 }, + { "px": [400,272], "src": [32,32], "f": 0, "t": 10, "d": [102,569], "a": 1 }, + { "px": [256,288], "src": [32,32], "f": 0, "t": 10, "d": [102,592], "a": 1 }, + { "px": [384,288], "src": [32,32], "f": 0, "t": 10, "d": [102,600], "a": 1 }, + { "px": [432,320], "src": [32,32], "f": 0, "t": 10, "d": [102,667], "a": 1 }, + { "px": [416,352], "src": [32,32], "f": 0, "t": 10, "d": [102,730], "a": 1 }, + { "px": [176,48], "src": [48,48], "f": 0, "t": 15, "d": [101,107], "a": 1 }, + { "px": [48,144], "src": [0,0], "f": 0, "t": 0, "d": [100,291], "a": 1 }, + { "px": [48,176], "src": [0,0], "f": 0, "t": 0, "d": [100,355], "a": 1 }, + { "px": [336,416], "src": [0,0], "f": 0, "t": 0, "d": [100,853], "a": 1 }, + { "px": [368,416], "src": [0,0], "f": 0, "t": 0, "d": [100,855], "a": 1 } ], "seed": 3670360, "overrideTilesetUid": null, diff --git a/map/maps/test.map.gbasm b/map/maps/test.map.gbasm index 9fce10d..b131ebd 100644 --- a/map/maps/test.map.gbasm +++ b/map/maps/test.map.gbasm @@ -1,10 +1,269 @@ ; THIS FILE IS GENERATED AUTOMATICALLY, DO NOT CHANGE _map_Test: - .DB $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $37, $e3, $ff, $ff, $42, $bb - .DB $e3, $ff, $16, $bb, $ca, $0f, $d6, $23, $d8, $e7, $1f, $ff, $dc, $f7, $ff, $ff - .DB $de, $f7, $ff, $1f, $df, $e7, $27, $77, $cf, $ef, $07, $3f, $e3, $ef, $07, $77 - .DB $f9, $cf, $8f, $1f, $fc, $1f, $df, $ff, $ff, $3f, $ff, $ff, $ff, $bf, $ff, $ff - .DB $ff, $ff, $ff, $ff, $e1, $ff, $ff, $ff, $ec, $f0, $ff, $ff, $ee, $e6, $ff, $ff - .DB $e7, $4e, $ff, $ff, $f7, $5e, $ff, $ff, $f3, $5c, $ff, $ff, $f9, $f9, $ff, $ff - .DB $ff, $f3, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $5f, $ff, $ff, $ff, $ff, $ff, $ff - .DB $fe, $af, $ff, $ff, $fe, $0f, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff + .collisons: + .DB $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $37, $e3, $ff, $ff, $42, $bb + .DB $e3, $ff, $16, $bb, $ca, $0f, $d6, $23, $d8, $e7, $1f, $ff, $dc, $f7, $ff, $ff + .DB $de, $f7, $ff, $1f, $df, $e7, $27, $77, $cf, $ef, $07, $3f, $e3, $ef, $07, $77 + .DB $f9, $cf, $8f, $1f, $fc, $1f, $df, $ff, $ff, $3f, $ff, $ff, $ff, $bf, $ff, $ff + .DB $ff, $ff, $ff, $ff, $e1, $ff, $ff, $ff, $ec, $f0, $ff, $ff, $ee, $e6, $ff, $ff + .DB $e7, $4e, $ff, $ff, $f7, $5e, $ff, $ff, $f3, $5c, $ff, $ff, $f9, $f9, $ff, $ff + .DB $ff, $f3, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $5f, $ff, $ff, $ff, $ff, $ff, $ff + .DB $fe, $af, $ff, $ff, $fe, $0f, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff + .tiles: + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $20, $25, $21, $25, $21, $24, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $20, $24, $00, $00, $00, $00, $20, $25, $21, $24 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $2a, $2f, $29, $2d, $29, $2c, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $28, $2d, $2b, $2e + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00, $20, $24, $00, $00 + .DB $20, $24, $00, $00, $20, $25, $23, $27, $21, $25, $21, $24, $00, $00, $22, $26 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00 + .DB $2a, $2e, $00, $00, $28, $2d, $2b, $2f, $29, $2d, $2b, $2e, $00, $00, $2a, $2e + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00 + .DB $22, $26, $00, $00, $00, $00, $22, $26, $00, $00, $22, $27, $21, $25, $23, $26 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $20, $25, $21, $25, $21, $24, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00 + .DB $2a, $2e, $00, $00, $00, $00, $2a, $2e, $00, $00, $2a, $2f, $29, $2d, $29, $2c + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $2a, $2f, $29, $2d, $2b, $2e, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $22, $27, $21, $25, $21, $24, $00, $00, $22, $27, $21, $25 + .DB $23, $26, $00, $00, $00, $00, $22, $26, $00, $00, $22, $26, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $20, $25, $21, $25, $21, $25, $21, $25 + .DB $21, $24, $00, $00, $22, $26, $00, $00, $22, $27, $21, $24, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $28, $2d, $29, $2d, $29, $2c, $00, $00, $28, $2d, $29, $2d + .DB $29, $2c, $00, $00, $00, $00, $28, $2c, $00, $00, $2a, $2e, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2f, $29, $2d, $29, $2d, $29, $2d + .DB $2b, $2e, $00, $00, $2a, $2e, $00, $00, $28, $2d, $2b, $2e, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $22, $27, $21, $25, $21, $24 + .DB $00, $00, $00, $00, $00, $00, $20, $25, $23, $26, $00, $00, $00, $00, $00, $00 + .DB $22, $27, $21, $25, $23, $26, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $28, $2d, $29, $2d, $29, $2c + .DB $00, $00, $00, $00, $00, $00, $2a, $2f, $29, $2c, $00, $00, $00, $00, $00, $00 + .DB $2a, $2f, $2b, $2f, $29, $2c, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $22, $27, $23, $26, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $64, $65, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $2a, $2f, $29, $2c, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $25, $21, $25, $21, $24 + .DB $00, $00, $00, $00, $00, $00, $00, $66, $67, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $22, $26, $00, $00, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $28, $2d, $29, $2d, $2b, $2e + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $28, $2c, $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $20, $24, $00, $00, $00, $00, $00, $00, $22, $26 + .DB $00, $00, $00, $00, $00, $00, $20, $25, $21, $24, $00, $00, $20, $25, $21, $24 + .DB $00, $00, $00, $00, $00, $00, $22, $27, $21, $24, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $28, $2c, $00, $00, $00, $00, $00, $00, $2a, $2e + .DB $00, $00, $00, $00, $00, $00, $2a, $2f, $2b, $2e, $00, $00, $2a, $2f, $2b, $2e + .DB $00, $00, $00, $00, $00, $00, $28, $2d, $2b, $2e, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $25, $23, $26 + .DB $00, $00, $00, $00, $00, $00, $22, $27, $23, $27, $21, $25, $23, $27, $23, $26 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $20, $25, $23, $26, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $28, $2d, $2b, $2e + .DB $00, $00, $00, $00, $00, $00, $2a, $2f, $2b, $2f, $2b, $2f, $2b, $2f, $2b, $2e + .DB $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2f, $29, $2c, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $20, $24, $00, $00, $00, $00, $00, $00, $22, $26 + .DB $00, $00, $00, $00, $00, $00, $22, $27, $23, $27, $23, $27, $23, $27, $23, $26 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $20, $25, $21, $25, $23, $26, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $28, $2c, $00, $00, $00, $00, $00, $00, $2a, $2e + .DB $00, $00, $00, $00, $00, $00, $28, $2d, $2b, $2f, $2b, $2f, $2b, $2f, $29, $2c + .DB $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $2a, $2f, $29, $2d, $29, $2c, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $25, $21, $25, $23, $26 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $22, $27, $23, $27, $23, $26, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $22, $27, $21, $24, $00, $00, $00, $00 + .DB $00, $00, $20, $25, $23, $26, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $28, $2d, $29, $2d, $29, $2c + .DB $00, $00, $00, $00, $00, $00, $00, $00, $28, $2d, $2b, $2f, $29, $2c, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $28, $2d, $2b, $2e, $00, $00, $00, $00 + .DB $00, $00, $2a, $2f, $29, $2c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $22, $27, $21, $25, $21, $25 + .DB $21, $25, $23, $26, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $28, $2c, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $28, $2d, $2b, $2f, $2b, $2f + .DB $29, $2d, $29, $2c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $22, $27, $23, $26 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2f, $29, $2c + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $64, $65, $00, $28, $2c, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $66, $67, $f0, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $f0, $f0, $f0, $00, $8a, $9c, $9d + .DB $8a, $9d, $92, $97, $00, $aa, $83, $00, $f0, $f0, $f0, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $20, $25, $21, $25, $21, $25, $21, $24, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $2a, $2f, $29, $2d, $29, $2d, $2b, $2e, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $20, $25, $21, $25, $21, $25, $21, $24, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $20, $25, $23, $26, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $2a, $2f, $29, $2d, $29, $2d, $2b, $2e, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $2a, $2f, $29, $2c, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $22, $26, $00, $00, $00, $00, $22, $27, $21, $24, $00, $00, $00, $00, $00, $00 + .DB $22, $26, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $2a, $2e, $00, $00, $00, $00, $28, $2d, $2b, $2e, $00, $00, $00, $00, $00, $00 + .DB $28, $2c, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $22, $26, $00, $00, $00, $00, $00, $00, $22, $27, $21, $24, $00, $00, $20, $24 + .DB $00, $00, $00, $00, $00, $00, $20, $25, $23, $26, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $2a, $2e, $00, $00, $00, $00, $00, $00, $28, $2d, $2b, $2e, $00, $00, $2a, $2e + .DB $00, $00, $00, $00, $00, $00, $2a, $2f, $29, $2c, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $22, $26, $00, $00, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $22, $26 + .DB $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $2a, $2e, $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $2a, $2e + .DB $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $22, $27, $21, $24, $00, $00, $00, $00, $00, $00, $22, $26, $00, $00, $22, $26 + .DB $00, $00, $00, $00, $20, $25, $23, $26, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $28, $2d, $2b, $2e, $00, $00, $00, $00, $00, $00, $28, $2c, $00, $00, $28, $2c + .DB $00, $00, $00, $00, $2a, $2f, $29, $2c, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $22, $27, $21, $24, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $20, $25, $23, $26, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $28, $2d, $2b, $2e, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $28, $2d, $29, $2c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $22, $27, $21, $24, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $28, $2d, $29, $2c, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $20, $24, $00, $00, $20, $24 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $28, $2c, $00, $00, $28, $2c + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $20, $24, $00, $00, $20, $24, $00, $00 + .DB $20, $24, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $2a, $2e, $00, $00, $2a, $2e, $00, $00 + .DB $2a, $2e, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $22, $27, $21, $25, $23, $27, $21, $25 + .DB $23, $26, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $28, $2d, $29, $2d, $29, $2d, $29, $2d + .DB $29, $2c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 +.ASSERT bank(=_map_Test) bank(.) diff --git a/modes/dungeongeneration.gbasm b/modes/dungeongeneration.gbasm index 172093f..b9d40ef 100644 --- a/modes/dungeongeneration.gbasm +++ b/modes/dungeongeneration.gbasm @@ -22,6 +22,30 @@ .END New_Dungeon: + LD A, $20 + LD $mem_bunny_health, A + LD A, $30 + LD $mem_bunny_mana, A + LD A, $01 + LD $mem_floor_count, A + LD A, $00 + LD $mem_floor_count_bin, A + + LD A, ($mem_dungeon+1) + LD H, A + LD A, ($mem_dungeon+2) + LD L, A + LD A, ($mem_dungeon) + CALL =Load_Dungeon_Txt + + LD A, ($mem_dungeon+1) + LD H, A + LD A, ($mem_dungeon+2) + LD L, A + LD A, ($mem_dungeon) + CALL =Load_Generation_Events + +New_Floor: LD SP, $fffe LD A, $00 @@ -32,10 +56,6 @@ New_Dungeon: LD A, $00 LD $mem_display_flag, A - LD A, bank(=Dungeon) - LD HL, ptr(=Dungeon) - CALL =Load_Dungeon_Txt - LD A, $f4 LD ($9ecb), A @@ -51,9 +71,11 @@ New_Dungeon: CALL =Reset_Map - - LD A, bank(=Dungeon) - LD HL, ptr(=Dungeon) + LD A, ($mem_dungeon+1) + LD H, A + LD A, ($mem_dungeon+2) + LD L, A + LD A, ($mem_dungeon) CALL =Load_Dungeon_Spawn_patterns LD A, $entity_questgoalbunny_index LD $mem_loaded_special_entity_index, A diff --git a/modes/maploading.gbasm b/modes/maploading.gbasm index 72f24ed..ab8ecbe 100644 --- a/modes/maploading.gbasm +++ b/modes/maploading.gbasm @@ -32,8 +32,11 @@ Map_Loading: LD A, $00 LD $mem_display_flag, A - LD A, bank(=Dungeon) - LD HL, ptr(=Dungeon) + LD A, ($mem_dungeon+1) + LD H, A + LD A, ($mem_dungeon+2) + LD L, A + LD A, ($mem_dungeon) CALL =Load_Dungeon_Txt LD A, $f4 @@ -57,8 +60,11 @@ Map_Loading: LD DE, ptr(=_map_Test) CALL =memcpy - LD A, bank(=Dungeon) - LD HL, ptr(=Dungeon) + LD A, ($mem_dungeon+1) + LD H, A + LD A, ($mem_dungeon+2) + LD L, A + LD A, ($mem_dungeon) CALL =Load_Dungeon_Spawn_patterns LD A, $entity_questgoalbunny_index LD $mem_loaded_special_entity_index, A diff --git a/modes/vblank_handler_list.gbasm b/modes/vblank_handler_list.gbasm index 99db063..004c782 100644 --- a/modes/vblank_handler_list.gbasm +++ b/modes/vblank_handler_list.gbasm @@ -26,8 +26,8 @@ VBlank_Handler_List: ; 2 (loading, animation) .DB =Loading_VBLANK_Entrypoint - ; 3 (new dungeon) - .DB =New_Dungeon + ; 3 (new floor) + .DB =New_Floor ; 4 (pregenerated map loading) .DB =Map_Loading diff --git a/playerattacks/hop.gbasm b/playerattacks/hop.gbasm index d8b280d..30c673f 100644 --- a/playerattacks/hop.gbasm +++ b/playerattacks/hop.gbasm @@ -38,12 +38,8 @@ Hop_Attack_Loading_VBlank: CALL =Display_Main_Prepared_Block - LD A, $mem_prepared_loading_block_tile - LD $mem_prepared_block_tile, A - LD A, $mem_prepared_loading_block_position_1 - LD $mem_prepared_block_position_1, A - LD A, $mem_prepared_loading_block_position_2 - LD $mem_prepared_block_position_2, A + .COPY_4BYTES $mem_prepared_block_tile, $mem_prepared_loading_block_tile + .COPY_2BYTES $mem_prepared_block_position, $mem_prepared_loading_block_position LD A, $mem_map_loading_flags SET 2, A @@ -121,12 +117,8 @@ Hop_Attack_Loading_Regular: RET NZ CALL =Preload_Map_Hop - LD A, $mem_prepared_block_tile - LD $mem_prepared_loading_block_tile, A - LD A, $mem_prepared_block_position_1 - LD $mem_prepared_loading_block_position_1, A - LD A, $mem_prepared_block_position_2 - LD $mem_prepared_loading_block_position_2, A + .COPY_4BYTES $mem_prepared_loading_block_tile, $mem_prepared_block_tile + .COPY_2BYTES $mem_prepared_loading_block_position, $mem_prepared_block_position LD A, $mem_bunny_direction SWAP A @@ -23,8 +23,7 @@ RNG_Step: LD E, A ; state << 7 - SCF - CCF + AND A LD A, $mem_rng_state_2 LD B, A LD A, $mem_rng_state_1 diff --git a/scripts/parse-ldtkmap.py b/scripts/parse-ldtkmap.py index 5071515..c80181b 100644 --- a/scripts/parse-ldtkmap.py +++ b/scripts/parse-ldtkmap.py @@ -5,14 +5,39 @@ import os filename = sys.argv[1] label = "_map_" + os.path.basename(filename)[:-5].replace(".", " ").title().replace(" ", "_") +check_same_bank = "_same_bank_check_"+label+"" print(label+":") + file = open(filename, "r") ldtk = json.loads(file.read()) intgridLayer = [i for i in ldtk['levels'][0]['layerInstances'] if i['__type'] == 'IntGrid'][0]['intGridCsv'] autoLayer = [i for i in ldtk['levels'][0]['layerInstances'] if i['__type'] == 'AutoLayer'][0]['autoLayerTiles'] +tiles = [i for i in ldtk['levels'][0]['layerInstances'] if i['__type'] == 'Tiles'][0] +tile_width = tiles['__cWid'] +tile_height = tiles['__cHei'] +grid_tiles = tiles['gridTiles'] + +tilemap = [0 for _ in range(0, tile_width*tile_height)] + +for tile in autoLayer: + x = int(tile['px'][0]/8) + y = int(tile['px'][1]/8) + t = tile['t'] + topleft = (((t & 0b100) >> 1) | (t & 0b1)) + 0x20 + topright = ((t & 0b110) >> 1) + 0x24 + bottomleft = (((t & 0b1000) >> 2) | (t & 0b1)) + 0x28 + bottomright = (((t & 0b1000) >> 2) | ((t & 0b10) >> 1)) + 0x2c + + tilemap[y * tile_width + x] = topleft + tilemap[y * tile_width + x+1] = topright + tilemap[(y+1) * tile_width + x] = bottomleft + tilemap[(y+1) * tile_width + x+1] = bottomright + +for tile in grid_tiles: + tilemap[tile['d'][0]] = tile['t'] collision_map = [] for y in range(0, 32): @@ -23,11 +48,21 @@ for y in range(0, 32): collision_u8 |= 1 << (7-i) collision_map.append(collision_u8 ^ 0xff) +print("\t.collisons:") for i in range(0, int(len(collision_map) / 16)): - print("\t.DB ", end="") + print("\t\t.DB ", end="") for j in range(0, 15): print("${:02x}, ".format(collision_map[i*16+j]), end="") print("${:02x}".format(collision_map[i*16+15])) +print("\t.tiles:") +for i in range(0, int(len(tilemap) / 16)): + print("\t\t.DB ", end="") + for j in range(0, 15): + print("${:02x}, ".format(tilemap[i*16+j]), end="") + print("${:02x}".format(tilemap[i*16+15])) + +print(".ASSERT", "bank(="+label+")", "bank(.)") + # print("============================") # print(autoLayer) diff --git a/utils.gbasm b/utils.gbasm index c16160c..1393e82 100644 --- a/utils.gbasm +++ b/utils.gbasm @@ -312,3 +312,21 @@ VBlank_Wait: POP AF CALL ptr(=addr) .END + +.MACRODEF COPY_4BYTES dest src + LD A, ($src) + LD ($dest), A + LD A, ($src+1) + LD ($dest+1), A + LD A, ($src+2) + LD ($dest+2), A + LD A, ($src+3) + LD ($dest+3), A +.END + +.MACRODEF COPY_2BYTES dest src + LD A, ($src) + LD ($dest), A + LD A, ($src+1) + LD ($dest+1), A +.END |