aboutsummaryrefslogtreecommitdiff
path: root/map/loading/dungeoninfos.gbasm
blob: 928ce6f4674fddbc297dfbf31c9d37d9f47e1e11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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