diff options
Diffstat (limited to 'home/copy2.asm')
-rw-r--r-- | home/copy2.asm | 136 |
1 files changed, 27 insertions, 109 deletions
diff --git a/home/copy2.asm b/home/copy2.asm index 538be572..82cb8349 100644 --- a/home/copy2.asm +++ b/home/copy2.asm @@ -1,135 +1,53 @@ -CopyBytes:: ; 0x3026 -; copy bc bytes from hl to de - inc b ; we bail the moment b hits 0, so include the last run - inc c ; same thing; include last byte - jr .HandleLoop -.CopyByte +CopyBytes:: ; 311a (0:311a) + inc b + inc c + jr .asm_3121 +.asm_311e ld a, [hli] ld [de], a inc de -.HandleLoop +.asm_3121 dec c - jr nz, .CopyByte + jr nz, .asm_311e dec b - jr nz, .CopyByte + jr nz, .asm_311e ret -SwapBytes:: ; 0x3034 -; swap bc bytes between hl and de -.Loop - ; stash [hl] away on the stack - ld a, [hl] - push af - - ; copy a byte from [de] to [hl] - ld a, [de] - ld [hli], a - - ; retrieve the previous value of [hl]; put it in [de] - pop af - ld [de], a - inc de - - ; handle loop stuff - dec bc - ld a, b - or c - jr nz, .Loop - ret - -ByteFill:: ; 0x3041 -; fill bc bytes with the value of a, starting at hl - inc b ; we bail the moment b hits 0, so include the last run - inc c ; same thing; include last byte - jr .HandleLoop -.PutByte - ld [hli], a -.HandleLoop - dec c - jr nz, .PutByte - dec b - jr nz, .PutByte - ret - -GetFarByte:: ; 0x304d -; retrieve a single byte from a:hl, and return it in a. - ; bankswitch to new bank - ld [hBuffer], a +SwapBytes:: ; 3128 (0:3128) + ld [wBuffer], a ld a, [hROMBank] push af - ld a, [hBuffer] + ld a, [wBuffer] rst Bankswitch - - ; get byte from new bank ld a, [hl] - ld [hBuffer], a - - ; bankswitch to previous bank + ld [wBuffer], a pop af rst Bankswitch - - ; return retrieved value in a - ld a, [hBuffer] + ld a, [wBuffer] ret -GetFarHalfword:: ; 0x305d -; retrieve a halfword from a:hl, and return it in hl. - ; bankswitch to new bank - ld [hBuffer], a +GetFarHalfword:: ; 313c (0:313c) + ld [wBuffer], a ld a, [hROMBank] push af - ld a, [hBuffer] + ld a, [wBuffer] rst Bankswitch - - ; get halfword from new bank, put it in hl ld a, [hli] ld h, [hl] ld l, a - - ; bankswitch to previous bank and return pop af rst Bankswitch ret -; 0x306b - -FarCopyWRAM:: ; 306b - ld [hBuffer], a - ld a, [rSVBK] - push af - ld a, [hBuffer] - ld [rSVBK], a - - call CopyBytes - - pop af - ld [rSVBK], a - ret -; 307b - -GetFarWRAMByte:: ; 307b - ld [hBuffer], a - ld a, [rSVBK] - push af - ld a, [hBuffer] - ld [rSVBK], a - ld a, [hl] - ld [hBuffer], a - pop af - ld [rSVBK], a - ld a, [hBuffer] - ret -; 308d -GetFarWRAMWord:: ; 308d - ld [hBuffer], a - ld a, [rSVBK] - push af - ld a, [hBuffer] - ld [rSVBK], a - ld a, [hli] - ld h, [hl] - ld l, a - pop af - ld [rSVBK], a +ByteFill:: ; 314c (0:314c) + inc b + inc c + jr .asm_3151 +.asm_3150 + ld [hli], a +.asm_3151 + dec c + jr nz, .asm_3150 + dec b + jr nz, .asm_3150 ret -; 309d |