aboutsummaryrefslogtreecommitdiff
path: root/map/loading.gbasm
diff options
context:
space:
mode:
Diffstat (limited to 'map/loading.gbasm')
-rw-r--r--map/loading.gbasm431
1 files changed, 0 insertions, 431 deletions
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