git.y1.nz

gbdk-2020

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

commit b133b51177ce1a04cf1eaaa3d8ea9d8f4f521de8
parent 3382fd97d738c98e81717a6951c8f02ca7fb839d
Author: Toxa <untoxa@mail.ru>
Date:   Tue,  4 May 2021 23:25:06 +0300

fix broken get_tiles()/set_tiles() https://github.com/gbdk-2020/gbdk-2020/issues/182; unify parameter order of get_tiles() with set_tiles()

Diffstat:
Mgbdk-lib/include/gb/gb.h6+++---
Mgbdk-lib/libc/gb/get_t.s50++++++++++++++++++++++++++------------------------
Mgbdk-lib/libc/gb/set_t.s52+++++++++++++++++++++++++++-------------------------
3 files changed, 56 insertions(+), 52 deletions(-)

diff --git a/gbdk-lib/include/gb/gb.h b/gbdk-lib/include/gb/gb.h @@ -1339,8 +1339,8 @@ void set_tiles(UINT8 x, @param y Y Start position in Background Map tile coordinates. Range 0 - 31 @param w Width of area to copy in tiles. Range 0 - 31 @param h Height of area to copy in tiles. Range 0 - 31 - @param tiles Pointer to destination buffer for Tile Map data @param vram_addr Pointer to source VRAM Address + @param tiles Pointer to destination buffer for Tile Map data Entries are copied into __tiles__ from the Background Tile Map starting at __x__, __y__ reading across for __w__ tiles and down for __h__ tiles. @@ -1355,8 +1355,8 @@ void get_tiles(UINT8 x, UINT8 y, UINT8 w, UINT8 h, - unsigned char *tiles, - unsigned char *vram_addr) NONBANKED __preserves_regs(b, c); + unsigned char *vram_addr, + unsigned char *tiles) NONBANKED __preserves_regs(b, c); diff --git a/gbdk-lib/libc/gb/get_t.s b/gbdk-lib/libc/gb/get_t.s @@ -1,30 +1,32 @@ - .include "global.s" + .include "global.s" - ;; BANKED: checked - .area _BASE + ;; BANKED: checked + .area _BASE + +; void get_tiles(UINT8 x, UINT8 y, UINT8 w, UINT8 h, unsigned char *vram_addr, unsigned char *tiles); _get_tiles:: - PUSH BC + PUSH BC - LDA HL,11(SP) ; Skip return address and registers - LD A,(HL-) ; DE = src - LD D, A - LD A,(HL-) - LD E, A - LD A,(HL-) ; BC = dst - LD B, A - LD C,(HL) - LDA HL,4(SP) ; Skip return address and registers - PUSH DE ; Store address on stack for set_xy_tt - LD A,(HL+) ; D = x - LD D, A - LD A,(HL+) ; E = y - LD E, A - LD A,(HL+) ; A = w - LD L,(HL) ; L = h - LD H,A ; H = w + LDHL SP, #7 + LD A, (HL-) + LD D, A + LD A, (HL-) + LD E, A + PUSH DE + LD A, (HL-) + LD E, A + LD D, (HL) + LDHL SP, #13 + LD A, (HL-) + LD B, A + LD A, (HL-) + LD C, A + LD A, (HL-) + LD L, (HL) + LD H, A - CALL .get_xy_tt + 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 + POP BC + RET diff --git a/gbdk-lib/libc/gb/set_t.s b/gbdk-lib/libc/gb/set_t.s @@ -1,32 +1,34 @@ - .include "global.s" + .include "global.s" - .globl .set_xy_tt + .globl .set_xy_tt - ;; BANKED: checked, imperfect - .area _BASE + ;; BANKED: checked, imperfect + .area _BASE + +; void set_tiles(UINT8 x, UINT8 y, UINT8 w, UINT8 h, unsigned char *vram_addr, const unsigned char *tiles); _set_tiles:: - PUSH BC + PUSH BC - LDA HL,11(SP) ; Skip return address and registers - LD A,(HL-) ; BC = src - LD B, A - LD A,(HL-) - LD C, A - LD A,(HL-) ; DE = dst - LD D, A - LD E,(HL) - LDA HL,4(SP) ; Skip return address and registers - PUSH DE ; Store address on stack for set_xy_tt - LD A,(HL+) ; D = x - LD D, A - LD A,(HL+) ; E = y - LD E, A - LD A,(HL+) ; A = w - LD L,(HL) ; L = h - LD H,A ; H = w + LDHL SP, #7 + LD A, (HL-) + LD D, A + LD A, (HL-) + LD E, A + PUSH DE + LD A, (HL-) + LD E, A + LD D, (HL) + LDHL SP, #13 + LD A, (HL-) + LD B, A + LD A, (HL-) + LD C, A + LD A, (HL-) + LD L, (HL) + LD H, A - CALL .set_xy_tt + CALL .set_xy_tt ;; Set background tile from (BC) at XY = DE, size WH on stack, to vram from address (HL) - 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.