aboutsummaryrefslogtreecommitdiff
path: root/map/loaddungeon.gbasm
diff options
context:
space:
mode:
Diffstat (limited to 'map/loaddungeon.gbasm')
-rw-r--r--map/loaddungeon.gbasm88
1 files changed, 88 insertions, 0 deletions
diff --git a/map/loaddungeon.gbasm b/map/loaddungeon.gbasm
new file mode 100644
index 0000000..c2052c2
--- /dev/null
+++ b/map/loaddungeon.gbasm
@@ -0,0 +1,88 @@
+Load_Dungeon_Txt: ; pointer to Dungeon struct in HL, bank in A
+ .CHANGE_BANK_TO_A
+
+ LD A, (HL+)
+ LD B, A
+ LD A, (HL+)
+ LD C, 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
+ INC HL
+ INC HL
+ 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