git.y1.nz

gbdk-2020

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

commit f177cf413f1422c54d442219e99c544383131e93
parent 7a411e64cc2d4940dc04906f73a9ac3c68adbb41
Author: Toxa <untoxa@mail.ru>
Date:   Fri, 14 Jan 2022 16:09:56 +0300

GB/MD/AP: check for overflow in metasprites routines

Diffstat:
Mgbdk-lib/libc/targets/gbz80/metasprites.s10++++++++--
Mgbdk-lib/libc/targets/gbz80/metasprites_flip.s30++++++++++++++++++++++++------
Mgbdk-lib/libc/targets/gbz80/metasprites_hide.s14++++++++++++--
Mgbdk-lib/libc/targets/gbz80/metasprites_hide_spr.s5++++-
4 files changed, 48 insertions(+), 11 deletions(-)

diff --git a/gbdk-lib/libc/targets/gbz80/metasprites.s b/gbdk-lib/libc/targets/gbz80/metasprites.s @@ -28,6 +28,9 @@ ___move_metasprite:: ld a, (hl-) ld c, a ld a, (hl) + cp #40 + jr nc, 3$ + add a add a ld e, a @@ -64,12 +67,15 @@ ___move_metasprite:: ld (de), a inc e - jr 1$ + ld a, e + cp #160 + jr c, 1$ 2$: - ldhl sp, #2 ld a, e srl a srl a + ldhl sp, #2 +3$: sub (hl) ld e, a diff --git a/gbdk-lib/libc/targets/gbz80/metasprites_flip.s b/gbdk-lib/libc/targets/gbz80/metasprites_flip.s @@ -18,6 +18,9 @@ ___move_metasprite_hflip:: ld a, (hl-) ld c, a ld a, (hl) + cp #40 + jr nc, 3$ + add a add a ld e, a @@ -57,12 +60,15 @@ ___move_metasprite_hflip:: ld (de), a inc e - jr 1$ + ld a, e + cp #160 + jr c, 1$ 2$: - ldhl sp, #2 ld a, e srl a srl a + ldhl sp, #2 +3$: sub (hl) ld e, a @@ -75,6 +81,9 @@ ___move_metasprite_vflip:: ld a, (hl-) ld c, a ld a, (hl) + cp #40 + jr nc, 3$ + add a add a ld e, a @@ -114,12 +123,15 @@ ___move_metasprite_vflip:: ld (de), a inc e - jr 1$ + ld a, e + cp #160 + jr c, 1$ 2$: - ldhl sp, #2 ld a, e srl a srl a + ldhl sp, #2 +3$: sub (hl) ld e, a @@ -132,6 +144,9 @@ ___move_metasprite_hvflip:: ld a, (hl-) ld c, a ld a, (hl) + cp #40 + jr nc, 3$ + add a add a ld e, a @@ -173,12 +188,15 @@ ___move_metasprite_hvflip:: ld (de), a inc e - jr 1$ + ld a, e + cp #160 + jr c, 1$ 2$: - ldhl sp, #2 ld a, e srl a srl a + ldhl sp, #2 +3$: sub (hl) ld e, a diff --git a/gbdk-lib/libc/targets/gbz80/metasprites_hide.s b/gbdk-lib/libc/targets/gbz80/metasprites_hide.s @@ -12,7 +12,10 @@ ___hide_metasprite:: ldhl sp, #2 - ld a, (hl-) + ld a, (hl) + cp #40 + ret nc + add a add a ld e, a @@ -40,4 +43,10 @@ ___hide_metasprite:: inc e inc e inc e - jr 1$ + + ld a, e + cp #160 + + jr c, 1$ + + ret + diff --git a/gbdk-lib/libc/targets/gbz80/metasprites_hide_spr.s b/gbdk-lib/libc/targets/gbz80/metasprites_hide_spr.s @@ -13,6 +13,9 @@ _hide_sprites_range:: ldhl sp, #2 ld a, (hl+) + cp #40 + ret nc + add a add a ld e, a @@ -38,7 +41,7 @@ _hide_sprites_range:: ret z ; z is not affected by 16-bit add 0$: - rra ; carry is never set here + srl a jr nc, 1$ ld (hl), d

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