git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

commit 05a81b7d4cdc70ad8adda5e2bbc8c800e7d0cdc5
parent 6ccf4819003e8880b9c74043afda55a7f7fd89fd
Author: toxa <untoxa@mail.ru>
Date:   Thu,  5 Nov 2020 18:08:38 +0300

hiramcpy() minor optimizations

Diffstat:
Dgbdk-lib/libc/gb/backup/get_xy_t.s75---------------------------------------------------------------------------
Mgbdk-lib/libc/gb/hiramcpy.s38++++++++++++++++++--------------------
2 files changed, 18 insertions(+), 95 deletions(-)

diff --git a/gbdk-lib/libc/gb/backup/get_xy_t.s b/gbdk-lib/libc/gb/backup/get_xy_t.s @@ -1,75 +0,0 @@ - .include "global.s" - - ;; BANKED: checked - .area _BASE - - ;; Store window tile table into (BC) at xy = DE of size WH = HL - ;; WH >= (1,1) -.get_xy_wtt:: - PUSH HL ; Store WH - PUSH HL ; Store WH - LDH A,(.LCDC) - BIT 6,A - JR NZ,1$ - LD HL,#0x9800 ; HL = origin - JR .get_xy_tt -1$: - LD HL,#0x9C00 ; HL = origin - JR .get_xy_tt - ;; Store background tile table into (BC) at XY = DE of size WH = HL - ;; WH >= (1,1) -.get_xy_btt:: - PUSH HL ; Store WH - LDH A,(.LCDC) - BIT 3,A - JR NZ,1$ - LD HL,#0x9800 ; HL = origin - JR .get_xy_tt -1$: - LD HL,#0x9C00 ; HL = origin -; JR .get_xy_tt - -.get_xy_tt:: - PUSH BC ; Store source - XOR A - OR E - JR Z,2$ - - LD BC,#0x20 ; One line is 20 tiles -1$: - ADD HL,BC ; Y coordinate - DEC E - JR NZ,1$ -2$: - LD B,#0x00 ; X coordinate - LD C,D - ADD HL,BC - - POP BC ; BC = source - POP DE ; DE = WH - PUSH HL ; Store origin - PUSH DE ; Store WH -3$: - WAIT_STAT - - LD A,(HL+) ; Copy W tiles - LD (BC),A - INC BC - DEC D - JR NZ,3$ - POP HL ; HL = WH - LD D,H ; Restore D = W - POP HL ; HL = origin - DEC E - JR Z,4$ - - PUSH BC ; Next line - LD BC,#0x20 ; One line is 20 tiles - ADD HL,BC - POP BC - - PUSH HL ; Store current origin - PUSH DE ; Store WH - JR 3$ -4$: - RET diff --git a/gbdk-lib/libc/gb/hiramcpy.s b/gbdk-lib/libc/gb/hiramcpy.s @@ -3,35 +3,33 @@ ;; BANKED: checked .area _BASE +_hiramcpy:: + LDA HL,4(SP) ; Skip return address and registers + LD E,(HL) ; E = dst + LDA HL,7(SP) + LD A,(HL-) + LD D, A ; D = n + LD A,(HL-) ; HL = src + LD L,(HL) + LD H,A + ;; Copy memory zone to HIRAM ;; ;; Entry conditions - ;; C = destination - ;; B = length + ;; E = destination + ;; D = length ;; HL = source ;; - ;; Register used: AF, BC, HL + ;; Preserves: BC .hiramcpy:: + LD A,E + LD E,C + LD C,A 1$: LD A,(HL+) LDH (C),A INC C - DEC B + DEC D JR NZ,1$ - RET - -_hiramcpy:: - PUSH BC - - LDA HL,4(SP) ; Skip return address and registers - LD C,(HL) ; C = dst - LDA HL,7(SP) - LD A,(HL-) ; B = n - LD B, A - LD A,(HL-) ; HL = src - LD L,(HL) - LD H,A - CALL .hiramcpy - - POP BC + LD C,E RET

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.