git.y1.nz

gbdk-2020

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

commit 850253e69bb2c0fc39785234c8a3305be618e27c
parent 3315e81f0cee52df40b7bf6f6ad38b8e39a1f0cf
Author: Toxa <untoxa@mail.ru>
Date:   Mon,  9 May 2022 11:37:52 +0300

GB: fix set_tiles()/get_tiles()

Diffstat:
Mgbdk-lib/include/gb/gb.h4++--
Mgbdk-lib/libc/targets/sm83/get_t.s15+++++----------
Mgbdk-lib/libc/targets/sm83/get_wi_t.s38+++++++++++++++++++-------------------
Mgbdk-lib/libc/targets/sm83/set_bk_t.s38+++++++++++++++++++-------------------
Mgbdk-lib/libc/targets/sm83/set_t.s13++++---------
Mgbdk-lib/libc/targets/sm83/set_wi_t.s40++++++++++++++++++++--------------------
6 files changed, 69 insertions(+), 79 deletions(-)

diff --git a/gbdk-lib/include/gb/gb.h b/gbdk-lib/include/gb/gb.h @@ -1622,7 +1622,7 @@ void vmemcpy(uint8_t *dest, uint8_t *sour, uint16_t len) OLDCALL PRESERVES_REGS( @see set_bkg_tiles, set_win_tiles */ -void set_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, const uint8_t *tiles) OLDCALL PRESERVES_REGS(b, c); +void set_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, const uint8_t *tiles) OLDCALL; /** Sets VRAM Tile Pattern data starting from given base address without taking into account the state of LCDC bit 4. @@ -1657,7 +1657,7 @@ void set_tile_data(uint8_t first_tile, uint8_t nb_tiles, const uint8_t *data, ui @see get_bkg_tiles, get_win_tiles */ -void get_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, uint8_t *tiles) OLDCALL PRESERVES_REGS(b, c); +void get_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, uint8_t *tiles) OLDCALL; /** Sets VRAM Tile Pattern data in the native format diff --git a/gbdk-lib/libc/targets/sm83/get_t.s b/gbdk-lib/libc/targets/sm83/get_t.s @@ -5,18 +5,16 @@ ; void get_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, uint8_t *tiles); _get_tiles:: - PUSH BC - - LDHL SP, #7 - LD A, (HL-) - LD D, A + LDHL SP, #5 LD A, (HL-) LD E, A + LD A, (HL-) + LD D, A PUSH DE LD A, (HL-) LD E, A LD D, (HL) - LDHL SP, #13 + LDHL SP, #11 LD A, (HL-) LD B, A LD A, (HL-) @@ -25,7 +23,4 @@ _get_tiles:: LD L, (HL) LD H, A - CALL L.get_xy_tt ;; Store background tile table into (BC) at XY = DE, size WH on stack, from vram from address (HL) - - POP BC - RET + JP .get_xy_tt ;; Store background tile table into (BC) at XY = DE, size WH on stack, from vram from address (HL) diff --git a/gbdk-lib/libc/targets/sm83/get_wi_t.s b/gbdk-lib/libc/targets/sm83/get_wi_t.s @@ -1,26 +1,26 @@ - .include "global.s" + .include "global.s" - .globl .get_xy_wtt + .globl .get_xy_wtt - .area _HOME + .area _HOME _get_win_tiles:: - PUSH BC + PUSH BC - LDA HL,4(SP) ; Skip return address and registers - LD A,(HL+) ; D = x - LD D, A - LD E,(HL) ; E = y - LDA HL,9(SP) - LD A,(HL-) ; BC = tiles - LD B, A - LD A,(HL-) - LD C, A - LD A,(HL-) ; A = h - LD H,(HL) ; H = w - LD L,A ; L = h + LDA HL,4(SP) ; Skip return address and registers + LD A,(HL+) ; D = x + LD D, A + LD E,(HL) ; E = y + LDA HL,9(SP) + LD A,(HL-) ; BC = tiles + LD B, A + LD A,(HL-) + LD C, A + LD A,(HL-) ; A = h + LD H,(HL) ; H = w + LD L,A ; L = h - CALL .get_xy_wtt + CALL .get_xy_wtt - POP BC - RET + POP BC + RET diff --git a/gbdk-lib/libc/targets/sm83/set_bk_t.s b/gbdk-lib/libc/targets/sm83/set_bk_t.s @@ -1,26 +1,26 @@ - .include "global.s" + .include "global.s" - .globl .set_xy_btt + .globl .set_xy_btt - .area _HOME + .area _HOME _set_bkg_tiles:: - PUSH BC + PUSH BC - LDA HL,4(SP) ; Skip return address and registers - LD A,(HL+) ; D = x - LD D, A - LD E,(HL) ; E = y - LDA HL,9(SP) - LD A,(HL-) ; BC = tiles - LD B, A - LD A,(HL-) - LD C, A - LD A,(HL-) ; A = h - LD H,(HL) ; H = w - LD L,A ; L = h + LDA HL,4(SP) ; Skip return address and registers + LD A,(HL+) ; D = x + LD D, A + LD E,(HL) ; E = y + LDA HL,9(SP) + LD A,(HL-) ; BC = tiles + LD B, A + LD A,(HL-) + LD C, A + LD A,(HL-) ; A = h + LD H,(HL) ; H = w + LD L,A ; L = h - CALL .set_xy_btt + CALL .set_xy_btt - POP BC - RET + POP BC + RET diff --git a/gbdk-lib/libc/targets/sm83/set_t.s b/gbdk-lib/libc/targets/sm83/set_t.s @@ -7,21 +7,16 @@ ; void set_tiles(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t *vram_addr, const uint8_t *tiles); _set_tiles:: - PUSH BC - CALL 1$ - POP BC - RET -1$: - LDHL SP, #9 - LD A, (HL-) - LD D, A + LDHL SP, #5 LD A, (HL-) LD E, A + LD A, (HL-) + LD D, A PUSH DE LD A, (HL-) LD E, A LD D, (HL) - LDHL SP, #15 + LDHL SP, #11 LD A, (HL-) LD B, A LD A, (HL-) diff --git a/gbdk-lib/libc/targets/sm83/set_wi_t.s b/gbdk-lib/libc/targets/sm83/set_wi_t.s @@ -1,27 +1,27 @@ - .include "global.s" + .include "global.s" - .globl .set_xy_wtt + .globl .set_xy_wtt - ;; BANKED: checked, imperfect - .area _HOME + ;; BANKED: checked, imperfect + .area _HOME _set_win_tiles:: - PUSH BC + PUSH BC - LDA HL,4(SP) ; Skip return address and registers - LD A,(HL+) ; D = x - LD D, A - LD E,(HL) ; E = y - LDA HL,9(SP) - LD A,(HL-) ; BC = tiles - LD B, A - LD A,(HL-) - LD C, A - LD A,(HL-) ; A = h - LD H,(HL) ; H = w - LD L,A ; L = h + LDA HL,4(SP) ; Skip return address and registers + LD A,(HL+) ; D = x + LD D, A + LD E,(HL) ; E = y + LDA HL,9(SP) + LD A,(HL-) ; BC = tiles + LD B, A + LD A,(HL-) + LD C, A + LD A,(HL-) ; A = h + LD H,(HL) ; H = w + LD L,A ; L = h - CALL .set_xy_wtt + CALL .set_xy_wtt - POP BC - RET + POP BC + 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.