From b84a1c2c0ebb484e23753c2f9db8742389fcc99a Mon Sep 17 00:00:00 2001 From: Astatin Date: Tue, 17 Jun 2025 17:42:44 +0200 Subject: loading ldtk tilemaps + adding dungeon structure that can be loaded at runtime --- map/loading.gbasm | 431 ------------------------------------------------------ 1 file changed, 431 deletions(-) delete mode 100644 map/loading.gbasm (limited to 'map/loading.gbasm') diff --git a/map/loading.gbasm b/map/loading.gbasm deleted file mode 100644 index dddf1a3..0000000 --- a/map/loading.gbasm +++ /dev/null @@ -1,431 +0,0 @@ -Load_Prepared_Map: - LD A, $mem_viewport_x - SUB $02 - LD C, A - ADD $10 - LD E, A - LD A, $mem_viewport_y - SUB $02 - LD B, A - ADD $10 - LD D, A - .For_Y: - .For_X: - LD A, C - CALL =Load_Block - LD A, $mem_prepared_block_position_1 - SUB high($VRAM_tilemap_1) - ADD high($mem_map_loading_buffer) - LD $mem_prepared_block_position_1, A - CALL =Display_Main_Prepared_Block - - INC C - LD A, C - CP E - JR NZ, =.For_X - - INC B - LD A, B - CP D - JR NZ, =.For_Y - - RET - -Load_Next_Block_Row: ; (+1/-1 direction in B, block number (between 0-f) in C - PUSH AF - PUSH BC - PUSH DE - LD A, B - CP $01 - JR NZ, =Load_Next_Block_Row.Up - - LD A, $mem_viewport_y - ADD $0C - LD B, A - JR =Load_Next_Block_Row.Set_X_Limits - - Load_Next_Block_Row.Up: - LD A, $mem_viewport_y - SUB $02 - LD B, A - - Load_Next_Block_Row.Set_X_Limits: - LD A, $mem_viewport_x - SUB $03 - LD D, A - LD A, C - ADD D - LD D, A - LD A, $mem_viewport_x - ADD $0D - LD E, A - LD A, D - CALL =Load_Block - - POP DE - POP BC - POP AF - RET - -Load_Next_Block_Column: ; (+1/-1 direction in B), block number (between 0-f) in C - - PUSH AF - PUSH BC - PUSH DE - LD A, B - CP $01 - JR NZ, =Load_Next_Block_Column.Left - - LD A, $mem_viewport_x - ADD $0C - LD D, A - JR =Load_Next_Block_Column.Set_Y_Limits - - Load_Next_Block_Column.Left: - LD A, $mem_viewport_x - SUB $02 - LD D, A - - Load_Next_Block_Column.Set_Y_Limits: - LD A, $mem_viewport_y - SUB $03 - LD B, A - LD A, $mem_viewport_y - ADD $0D - LD E, A - LD A, C - ADD B - LD B, A - LD A, D - CALL =Load_Block - - POP DE - POP BC - POP AF - RET - -Prepare_Scrolling_Map: - LD A, $mem_map_loading_flags - BIT 0, A - JR Z, =Display_Scrolling_Map.End - - LD A, $mem_moving_animation_step - LD C, A - - LD A, $mem_bunny_direction - AND $07 - DEC A - AND $01 - SLA A - DEC A - LD B, A - LD A, $mem_bunny_direction - AND $07 - DEC A - - BIT 1, A - JR NZ, =Display_Scrolling_Map.vertical - - Display_Scrolling_Map.horizontal: - CALL =Load_Next_Block_Column - JR =Display_Scrolling_Map.End - - Display_Scrolling_Map.vertical: - CALL =Load_Next_Block_Row - - Display_Scrolling_Map.End: - RET - -Construct_Tile_Address: ; Construct Tile Map address from A and B in DE - PUSH AF - PUSH BC - - AND $0f - LD C, A - LD A, B - AND $0f - LD B, A - LD A, C - - LD D, $00 - LD E, $00 - LD E, B - SWAP E - SLA E - RL D - SLA E - RL D - SLA A - OR E - LD E, A - LD A, D - OR high($VRAM_tilemap_1) - LD D, A - - POP BC - POP AF - - RET - -Load_Block: ; X in A, Y in B - PUSH BC - PUSH AF - PUSH DE - - CALL =Construct_Tile_Address - - PUSH AF - PUSH DE - - LD C, $00 - LD D, A - - ; Checking down block - LD A, D - INC B - CALL =Is_Solid - OR C - LD C, A - DEC B - SLA C - - ; Checking up block - LD A, D - DEC B - CALL =Is_Solid - OR C - LD C, A - INC B - SLA C - - ; Checking right block - LD A, D - INC A - CALL =Is_Solid - OR C - LD C, A - SLA C - - ; Checking left block - LD A, D - DEC A - CALL =Is_Solid - OR C - LD C, A - - INC C - - LD A, $mem_map_loading_flags - SET 2, A - LD $mem_map_loading_flags, A - - - POP DE - - LD A, D - LD $mem_prepared_block_position_1, A - LD A, E - LD $mem_prepared_block_position_2, A - - POP AF - - CALL =Is_Solid - CP $00 - - JR Z, =Load_Block.Empty - Load_Block.Solid: - LD A, C - LD $mem_prepared_block_tile, A - - JR =Load_Block.End - - Load_Block.Empty: - LD A, $00 - LD $mem_prepared_block_tile, A - - Load_Block.End: - - POP DE - POP AF - POP BC - RET - -Load_Additional_Block: - LD A, $mem_display_flag - BIT 6, A - RET Z - LD A, $mem_additional_loading_block_y - 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 - - RET - -Display_Prepared_Blocks: - LD A, $mem_map_loading_flags - BIT 2, A - JR Z, =.Skip_Main - - LD A, $mem_map_loading_flags - RES 2, A - LD $mem_map_loading_flags, A - - CALL =Display_Main_Prepared_Block - - .Skip_Main: - LD A, $mem_display_flag - BIT 6, A - RET Z - 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 - JP =Display_Main_Prepared_Block - -Display_Main_Prepared_Block: - PUSH AF - PUSH BC - PUSH DE - - LD A, $mem_prepared_block_position_1 - LD D, A - - LD A, $mem_prepared_block_position_2 - 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 (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 (DE), A - - .End: - - POP DE - POP BC - POP AF - RET - - .Empty: - XOR A - LD (DE), A - LD A, E - OR $20 - LD E, A - XOR A - LD (DE), A - INC E - XOR A - LD (DE), A - LD A, E - AND $DF - LD E, A - XOR A - LD (DE), A - - POP DE - POP BC - POP AF - RET - -Is_Solid: ; X in A, Y in B, Result A - PUSH BC - - CP $20 - JR NC, =Is_Solid.Solid - - LD C, A - LD A, B - CP $20 - JR NC, =Is_Solid.Solid - LD A, C - - LD H, $00 - CP $10 - RL B - AND $0f - CP $08 - RL B - AND $07 - LD L, A - - LD C, B - LD B, high($mem_dungeon_map) - LD A, (BC) - - AND (HL) - CP $01 - LD A, $00 - RL A - - POP BC - RET - - Is_Solid.Solid: - LD A, $01 - POP BC - - RET -- cgit v1.2.3-70-g09d2