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:
| M | gbdk-lib/libc/targets/gbz80/metasprites.s | 10 | ++++++++-- |
| M | gbdk-lib/libc/targets/gbz80/metasprites_flip.s | 30 | ++++++++++++++++++++++++------ |
| M | gbdk-lib/libc/targets/gbz80/metasprites_hide.s | 14 | ++++++++++++-- |
| M | gbdk-lib/libc/targets/gbz80/metasprites_hide_spr.s | 5 | ++++- |
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.