diff options
Diffstat (limited to 'map/loading/dungeoninfos.gbasm')
-rw-r--r-- | map/loading/dungeoninfos.gbasm | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/map/loading/dungeoninfos.gbasm b/map/loading/dungeoninfos.gbasm new file mode 100644 index 0000000..2b8fceb --- /dev/null +++ b/map/loading/dungeoninfos.gbasm @@ -0,0 +1,132 @@ +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 + LD L, C + + CALL =strlen + LD B, A + + LD A, $14 + SUB B + SRA A + + LD HL, $9e80 + ADD L + LD L, A + LD A, H + ADC $00 + LD H, A + POP BC + CALL =Print_str + + RET + +Load_Dungeon_Spawn_patterns: ; pointer to Dungeon struct in HL bank in A + .CHANGE_BANK_TO_A + 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 + LD A, $mem_floor_count_bin + LD C, A + LD B, $07 + CALL =MUL + LD C, A + LD B, (HL) + CALL =MUL + CALL =RNG_Step + AND $01 + ADD E + LD E, A + LD D, $00 + LD B, D + LD C, E + SLA E + RL D + SLA E + RL D + LD A, E + ADD C + LD E, A + LD A, D + ADC B + LD D, A + + + INC HL + LD A, L + ADD E + LD L, A + LD A, H + ADC D + LD H, A + + LD BC, $mem_loaded_enemies_indices + LD A, (HL+) + LD (BC), A + INC BC + LD A, (HL+) + LD (BC), A + INC BC + LD A, (HL+) + LD (BC), A + INC BC + LD A, (HL+) + LD (BC), A + + LD A, (HL) + 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 |