proper fix for beast busters / mechanized attack sprite wrapping stuff. as simple as it is, I spent many many hours on this

This commit is contained in:
dinkc64 2016-04-05 03:13:25 +00:00
parent 86ed035148
commit 4816baca24
1 changed files with 5 additions and 8 deletions

View File

@ -933,7 +933,7 @@ static void draw_block(const UINT8 *scale_table_ptr,INT32 scale_line_count,INT32
scale_table_ptr--;
scale_line_count--;
}
}
} extern int counter;
static void draw_sprites(UINT8 *source8, INT32 bank, INT32 colval, INT32 colmask)
{
@ -946,18 +946,15 @@ static void draw_sprites(UINT8 *source8, INT32 bank, INT32 colval, INT32 colmask
INT32 sprite=source[offs+1];
INT32 colour=source[offs+0];
if ((colour==0xf7 || colour==0xffff) && (sprite==0x3fff || sprite==0xffff))
continue;
if ((colour==0xf7 || colour==0xffff || colour == 0x43f9) && (sprite==0x3fff || sprite==0xffff || sprite==0x0001))
continue; // sprite 1, color 0x43f9 is the dead sprite in the top-right of the screen in Mechanized Attack's High Score table.
INT32 y=source[offs+3];
INT16 y=source[offs+3];
INT32 x=source[offs+2];
if (x&0x200) x=-(0x100-(x&0xff));
if (bank == 2) { // only act on bbusters second sprite chip, causes issues in mechatt
y=(INT16)source[offs+3]; // needs to be casted from an INT16, otherwise the negative values aren't transfered to the INT32 from the UINT16 source
if (y > 320 || y < -256) y&=0xff; // fix for ending & Zing! attract-mode fullscreen zombie
}
if (y > 320 || y < -256) y &= 0x1ff; // fix for bbusters ending & "Zing!" attract-mode fullscreen zombie & Helicopter on the 3rd rotation of the attractmode sequence
colour>>=12;
INT32 block=(source[offs+0]>>8)&0x3;