diff options
author | mid-kid <esteve.varela@gmail.com> | 2018-03-25 16:18:33 +0200 |
---|---|---|
committer | mid-kid <esteve.varela@gmail.com> | 2018-03-25 16:18:33 +0200 |
commit | 0d9241889fc8a2f047b9fd6db25e55de1e721877 (patch) | |
tree | 4ae588ae9d97639b456e6d2ba64a94676ddcf703 /engine/phone | |
parent | 60e21a86638cad5fd25133cda1c545461304d902 (diff) |
Organize the engine/ directory, take 3
Renamed `title` to `movies`.
Moved some functions from `engine/routines/` to their fitting
directories, and cleaned up the base `engine/` directory.
Moved `engine/pokemon/tmhm.asm` back to `engine/items/`.
Made a new subdirectory:
* engine/tilesets: Contains all map-related graphics routines.
Diffstat (limited to 'engine/phone')
-rw-r--r-- | engine/phone/phonering_copytilemapatonce.asm | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/engine/phone/phonering_copytilemapatonce.asm b/engine/phone/phonering_copytilemapatonce.asm new file mode 100644 index 000000000..b0d4ffa1e --- /dev/null +++ b/engine/phone/phonering_copytilemapatonce.asm @@ -0,0 +1,80 @@ +PhoneRing_CopyTilemapAtOnce: ; 4d188 + ld a, [hCGB] + and a + jp z, WaitBGMap + ld a, [wSpriteUpdatesEnabled] + cp $0 + jp z, WaitBGMap + +; What follows is a modified version of CopyTilemapAtOnce. + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a +.wait + ld a, [rLY] + cp LY_VBLANK - 1 + jr c, .wait + + di + ld a, BANK(vBGMap2) + ld [rVBK], a + hlcoord 0, 0, wAttrMap + call .CopyTilemapAtOnce + ld a, BANK(vBGMap0) + ld [rVBK], a + hlcoord 0, 0 + call .CopyTilemapAtOnce +.wait2 + ld a, [rLY] + cp LY_VBLANK - 1 + jr c, .wait2 + ei + + pop af + ld [hMapAnims], a + pop af + ld [hBGMapMode], a + ret + +.CopyTilemapAtOnce: ; 4d1cb + ld [hSPBuffer], sp + ld sp, hl + ld a, [hBGMapAddress + 1] + ld h, a + ld l, 0 + ld a, SCREEN_HEIGHT + ld [hTilesPerCycle], a + ld b, 1 << 1 ; not in v/hblank + ld c, LOW(rSTAT) + +.loop +rept SCREEN_WIDTH / 2 + pop de +.loop\@ + ld a, [$ff00+c] + and b + jr nz, .loop\@ + ld [hl], e + inc l + ld [hl], d + inc l +endr + + ld de, BG_MAP_WIDTH - SCREEN_WIDTH + add hl, de + ld a, [hTilesPerCycle] + dec a + ld [hTilesPerCycle], a + jr nz, .loop + + ld a, [hSPBuffer] + ld l, a + ld a, [hSPBuffer + 1] + ld h, a + ld sp, hl + ret |