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.asm96
1 files changed, 96 insertions, 0 deletions
diff --git a/engine/overworld/init_map.asm b/engine/overworld/init_map.asm
new file mode 100644
index 00000000..72950ac7
--- /dev/null
+++ b/engine/overworld/init_map.asm
@@ -0,0 +1,96 @@
+ReanchorBGMap_NoOAMUpdate::
+ call DelayFrame
+ ldh a, [hOAMUpdate]
+ push af
+
+ ld a, $1
+ ldh [hOAMUpdate], a
+ ldh a, [hBGMapMode]
+ push af
+ xor a
+ ldh [hBGMapMode], a
+
+ call .ReanchorBGMap
+
+ pop af
+ ldh [hBGMapMode], a
+ pop af
+ ldh [hOAMUpdate], a
+ ret
+
+.ReanchorBGMap:
+ xor a
+ ldh [hLCDCPointer], a
+ ldh [hBGMapMode], a
+ ld hl, wEnteredMapFromContinue
+ set 7, [hl]
+ res 2, [hl]
+ ld a, $90
+ ldh [hWY], a
+ call OverworldTextModeSwitch
+ ld a, HIGH(vBGMap1)
+ call .LoadBGMapAddrIntoHRAM
+ call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
+ xor a
+ ldh [hBGMapMode], a
+ ldh [hWY], a
+ ld a, HIGH(vBGMap0)
+ call .LoadBGMapAddrIntoHRAM
+ call .WaitTransfer
+ xor a ; LOW(vBGMap0)
+ ld [wBGMapAnchor], a
+ ld a, HIGH(vBGMap0)
+ ld [wBGMapAnchor + 1], a
+ xor a
+ ldh [hSCX], a
+ ldh [hSCY], a
+ call ApplyBGMapAnchorToObjects
+ ret
+
+.LoadBGMapAddrIntoHRAM:
+ ldh [hBGMapAddress + 1], a
+ xor a
+ ldh [hBGMapAddress], a
+ ret
+
+.WaitTransfer:
+ 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 [hFF9E], a
+.asm_65bc
+ call DelayFrame
+ ldh a, [hFF9E]
+ and a
+ jr nz, .asm_65bc
+ pop af
+ ldh [hOAMUpdate], a
+ pop af
+ ldh [hBGMapMode], a
+ ret
+
+LoadFonts_NoOAMUpdate::
+ ldh a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ldh [hOAMUpdate], a
+
+ call .LoadGFX
+
+ pop af
+ ldh [hOAMUpdate], a
+ ret
+
+.LoadGFX:
+ call LoadFontsExtra
+ ld a, $90
+ ldh [hWY], a
+ call SafeUpdateSprites
+ call LoadStandardFont
+ ret