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:
parent
86ed035148
commit
4816baca24
|
@ -933,7 +933,7 @@ static void draw_block(const UINT8 *scale_table_ptr,INT32 scale_line_count,INT32
|
||||||
scale_table_ptr--;
|
scale_table_ptr--;
|
||||||
scale_line_count--;
|
scale_line_count--;
|
||||||
}
|
}
|
||||||
}
|
} extern int counter;
|
||||||
|
|
||||||
static void draw_sprites(UINT8 *source8, INT32 bank, INT32 colval, INT32 colmask)
|
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 sprite=source[offs+1];
|
||||||
INT32 colour=source[offs+0];
|
INT32 colour=source[offs+0];
|
||||||
|
|
||||||
if ((colour==0xf7 || colour==0xffff) && (sprite==0x3fff || sprite==0xffff))
|
if ((colour==0xf7 || colour==0xffff || colour == 0x43f9) && (sprite==0x3fff || sprite==0xffff || sprite==0x0001))
|
||||||
continue;
|
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];
|
INT32 x=source[offs+2];
|
||||||
|
|
||||||
if (x&0x200) x=-(0x100-(x&0xff));
|
if (x&0x200) x=-(0x100-(x&0xff));
|
||||||
|
|
||||||
if (bank == 2) { // only act on bbusters second sprite chip, causes issues in mechatt
|
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
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
colour>>=12;
|
colour>>=12;
|
||||||
INT32 block=(source[offs+0]>>8)&0x3;
|
INT32 block=(source[offs+0]>>8)&0x3;
|
||||||
|
|
Loading…
Reference in New Issue