From 54d88a3867175e31492053eab042c2c12c083de6 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 20 Feb 2021 18:20:02 +0200 Subject: [PATCH] Sprite hpos=0 condition update. --- custom.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/custom.cpp b/custom.cpp index cbc28786..3d79567a 100644 --- a/custom.cpp +++ b/custom.cpp @@ -4125,6 +4125,7 @@ static void decide_sprites(int hpos, bool usepointx, bool quick) int point; int sscanmask = 0x100 << sprite_buffer_res; int gotdata = 0; + int extrahpos = 13; // hpos 0 to this value is visible in right border if (thisline_decision.plfleft < 0 && !brdspractive() && !quick) return; @@ -4132,8 +4133,9 @@ static void decide_sprites(int hpos, bool usepointx, bool quick) // let sprite shift register empty completely // if sprite is at the very edge of right border point = hpos * 2; - if (hpos >= maxhpos) - point += (9 - 2) * 2; + if (hpos >= maxhpos) { + point += (extrahpos - 2) * 2; + } if (nodraw () || hpos < 0x14 || nr_armed == 0 || point == last_sprite_point) return; @@ -4161,7 +4163,8 @@ static void decide_sprites(int hpos, bool usepointx, bool quick) if (! spr[i].armed) continue; - if (hw_xp > last_sprite_point && hw_xp <= point + pointx) { + int end = 0x1d4; + if (hw_xp > last_sprite_point && hw_xp <= point + pointx && hw_xp <= maxhpos * 2 + 1) { add_sprite (&count, i, sprxp, posns, nrs); } @@ -4172,7 +4175,7 @@ static void decide_sprites(int hpos, bool usepointx, bool quick) if (hw_xp > last_sprite_point && hw_xp <= point + pointx) { add_sprite (&count, MAX_SPRITES + i, sprxp, posns, nrs); } - } else if (!(fmode & 0x80) && xpos >= (2 << sprite_buffer_res) && xpos <= (9 << sprite_buffer_res)) { + } else if (!(fmode & 0x80) && xpos >= (2 << sprite_buffer_res) && xpos <= (extrahpos << sprite_buffer_res)) { // right border wrap around. SPRxCTL horizontal bits do not matter. sprxp += (maxhpos * 2) << sprite_buffer_res; hw_xp = sprxp >> sprite_buffer_res; -- 2.47.3