Load_Dungeon_Infos: ; pointer to Dungeon struct in HL, bank in A ; Load_Dungeon_Txt LD D, 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 HL PUSH BC LD H, B LD L, C CALL =strlen LD B, A LD A, $14 SUB B SRA A LD HL, $9ea0 ADD L LD L, A LD A, H ADC $00 LD H, A POP BC CALL =Print_str POP HL LD A, D .CHANGE_BANK_TO_A ; Load dungeon flags LD A, (HL+) LD $mem_dungeon_flags, A ; Load tilemap LD A, (HL+) LD ($mem_rom_tilemap_addr), A LD ($mem_rom_collision_map_addr), A LD A, (HL+) LD B, A LD A, (HL+) LD ($mem_rom_collision_map_addr+2), A ADD $80 LD ($mem_rom_tilemap_addr+2), A LD A, B LD ($mem_rom_collision_map_addr+1), A ADC $00 LD ($mem_rom_tilemap_addr+1), A ; Load_Generation_Events LD A, D .CHANGE_BANK_TO_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 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