diff options
Diffstat (limited to 'engine/overworld/init_map.asm')
-rw-r--r-- | engine/overworld/init_map.asm | 96 |
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 |