···204204 call GetNeighborRoomIndex
205205 ld a, h
206206 cpl
207207+ cp a, 0
208208+ jp nz, .LoopContinue
209209+ push hl
210210+ push de
211211+ ld e, h
212212+ ld hl, dungeon_grid
213213+ ld a, l
214214+ add a, e
215215+ ld l, a
216216+ pop de
217217+ ld a, [hl]
218218+ ld hl, BIT_USED_ROOM
219219+ and a, [hl]
220220+ pop hl
221221+ jp nz, .LoopContinue
222222+ push bc ; b = opposite_door, cache earlier values
223223+ call GetOppositeDirectionBit
224224+ ld a, e
225225+ and a, d
226226+ cp a, e
227227+ jp nz, .LoopBody2
228228+ push hl
229229+ push de
230230+ ld e, l
231231+ ld hl, dungeon_grid
232232+ ld a, l
233233+ add a, e
234234+ ld l, a
235235+ pop de
236236+ ld a, [hl]
237237+ or a, e
238238+ ld [hl], a
239239+ push de
240240+ ld e, h
241241+ ld hl, dungeon_grid
242242+ ld a, l
243243+ add a, e
244244+ ld l, a
245245+ pop de
246246+ ld a, [hl]
247247+ or a, b
248248+ ld [hl], a
249249+ pop hl
250250+.LoopBody2
251251+ push hl
252252+ push de
253253+ ld e, h
254254+ ld hl, dungeon_grid
255255+ ld a, l
256256+ add a, e
257257+ ld l, a
258258+ pop de
259259+ ld a, [hl]
260260+ pop hl
261261+ cp a, b
262262+ jp nz, .LoopContinue
263263+ pop bc
264264+ push hl
265265+ push de
266266+ ld e, h
267267+ ld hl, generated_cells
268268+ ld a, l
269269+ add a, c
270270+ ld l, a
271271+ ld [hl], e
272272+ pop de
273273+ pop hl
274274+ inc c
207275.LoopContinue
208276 rlc e
209277 jp .LoopCheck
···212280 ret
213281214282GetNeighborRoomIndex::
283283+ ret
284284+285285+GetOppositeDirectionBit::
215286 ret