summaryrefslogtreecommitdiff
path: root/engine/overworld/init_map.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/overworld/init_map.asm')
-rw-r--r--engine/overworld/init_map.asm91
1 files changed, 91 insertions, 0 deletions
diff --git a/engine/overworld/init_map.asm b/engine/overworld/init_map.asm
new file mode 100644
index 00000000..07cd07de
--- /dev/null
+++ b/engine/overworld/init_map.asm
@@ -0,0 +1,91 @@
+ReanchorBGMap_NoOAMUpdate:: ; 6551 (1:6551)
+ call DelayFrame
+ ldh a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ldh [hOAMUpdate], a
+ ldh a, [hBGMapMode]
+ push af
+ xor a
+ ldh [hBGMapMode], a
+ call Function656b
+ pop af
+ ldh [hBGMapMode], a
+ pop af
+ ldh [hOAMUpdate], a
+ ret
+
+Function656b: ; 656b (1:656b)
+ xor a
+ ldh [hLCDCPointer], a
+ ldh [hBGMapMode], a
+ ld hl, wd565
+ set 7, [hl]
+ res 2, [hl]
+ ld a, $90
+ ldh [hWY], a
+ call OverworldTextModeSwitch
+ ld a, $9c
+ call .LoadBGMapAddrIntoHRAM
+ call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
+ xor a
+ ldh [hBGMapMode], a
+ ldh [hWY], a
+ ld a, $98
+ call .LoadBGMapAddrIntoHRAM
+ call .WaitTransfer
+ xor a
+ ld [wd05b], a
+ ld a, $98
+ ld [wd05c], a
+ xor a
+ ldh [hSCX], a
+ ldh [hSCY], a
+ call ApplyBGMapAnchorToObjects
+ ret
+
+.LoadBGMapAddrIntoHRAM: ; 65a5 (1:65a5)
+ ldh [hBGMapAddress + 1], a
+ xor a
+ ldh [hBGMapAddress], a
+ ret
+
+.WaitTransfer: ; 65ab (1:65ab)
+ ldh a, [hBGMapMode]
+ push af
+ xor a
+ ldh [hBGMapMode], a
+ ldh a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ldh [hOAMUpdate], a
+ ld a, $3
+ ldh [hVBlankCounter + 1], a
+.asm_65bc
+ call DelayFrame
+ ldh a, [hVBlankCounter + 1]
+ and a
+ jr nz, .asm_65bc
+ pop af
+ ldh [hOAMUpdate], a
+ pop af
+ ldh [hBGMapMode], a
+ ret
+
+LoadFonts_NoOAMUpdate:: ; 65cb (1:65cb)
+ ldh a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ldh [hOAMUpdate], a
+ call .LoadGFX
+ pop af
+ ldh [hOAMUpdate], a
+ ret
+
+.LoadGFX: ; 65d9 (1:65d9)
+ call LoadFontsExtra
+ ld a, $90
+ ldh [hWY], a
+ call SafeUpdateSprites
+ call Functiond9e
+ ret \ No newline at end of file