diff options
author | yenatch <yenatch@gmail.com> | 2017-12-24 20:29:55 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-24 20:29:55 -0500 |
commit | c2a7216d9b8689591ede817015bf96f263396bb8 (patch) | |
tree | 008635aac62c3fdbb446453d308c2255fb0554d9 /engine/routines/savemenu_copytilemapatonce.asm | |
parent | 0b8b6f9259bedacad55bb4667de5b2bbe6eafda7 (diff) | |
parent | c6b12b07b302b82765181b2521e1e0f2ca5f7725 (diff) |
Merge pull request #424 from roukaour/master
Rename a routine and some maps; remove all code from main.asm
Diffstat (limited to 'engine/routines/savemenu_copytilemapatonce.asm')
-rw-r--r-- | engine/routines/savemenu_copytilemapatonce.asm | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/engine/routines/savemenu_copytilemapatonce.asm b/engine/routines/savemenu_copytilemapatonce.asm new file mode 100644 index 000000000..de7cbaa8f --- /dev/null +++ b/engine/routines/savemenu_copytilemapatonce.asm @@ -0,0 +1,77 @@ +SaveMenu_CopyTilemapAtOnce: ; 4cf45 (13:4f45) + ld a, [hCGB] + and a + jp z, WaitBGMap + +; The following 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 +.WaitLY: + ld a, [rLY] + cp $60 + jr c, .WaitLY + + di + ld a, BANK(VBGMap2) + ld [rVBK], a + hlcoord 0, 0, AttrMap + call .CopyTilemapAtOnce + ld a, BANK(VBGMap0) + ld [rVBK], a + hlcoord 0, 0 + call .CopyTilemapAtOnce +.WaitLY2: + ld a, [rLY] + cp $60 + jr c, .WaitLY2 + ei + + pop af + ld [hMapAnims], a + pop af + ld [hBGMapMode], a + ret + +.CopyTilemapAtOnce: ; 4cf80 (13:4f80) + ld [hSPBuffer], sp ; $ffd9 + ld sp, hl + ld a, [hBGMapAddress + 1] + ld h, a + ld l, 0 + ld a, SCREEN_HEIGHT + ld [hTilesPerCycle], a + ld b, 1 << 1 + ld c, rSTAT % $100 + +.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 |