From: Toni Wilen Date: Sat, 20 Feb 2021 16:20:02 +0000 (+0200) Subject: Sprite hpos=0 condition update. X-Git-Tag: 4900~184 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=54d88a3867175e31492053eab042c2c12c083de6;p=francis%2Fwinuae.git Sprite hpos=0 condition update. --- 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;