Fix sky skipper sprites
This commit is contained in:
parent
2e9e221835
commit
d0c24f35ed
|
@ -47,7 +47,7 @@ static UINT8 m_prot_shift;
|
||||||
static UINT8 m_invertmask = 0xff;
|
static UINT8 m_invertmask = 0xff;
|
||||||
static INT32 bgbitmapwh; // 512 for popeye, 1024 for skyskipr
|
static INT32 bgbitmapwh; // 512 for popeye, 1024 for skyskipr
|
||||||
|
|
||||||
static UINT8 skyskiprmode;
|
static UINT8 skyskiprmode = 0;
|
||||||
|
|
||||||
static UINT8 DrvJoy1[8];
|
static UINT8 DrvJoy1[8];
|
||||||
static UINT8 DrvJoy2[8];
|
static UINT8 DrvJoy2[8];
|
||||||
|
@ -491,7 +491,7 @@ static INT32 MemIndex()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT8 __fastcall port_read(UINT16 port)
|
static UINT8 __fastcall port_read(UINT16 port)
|
||||||
{
|
{
|
||||||
switch (port & 0xff) {
|
switch (port & 0xff) {
|
||||||
case 0x00: return DrvInput[0];
|
case 0x00: return DrvInput[0];
|
||||||
|
@ -502,7 +502,7 @@ UINT8 __fastcall port_read(UINT16 port)
|
||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __fastcall port_write(UINT16 port, UINT8 data)
|
static void __fastcall port_write(UINT16 port, UINT8 data)
|
||||||
{
|
{
|
||||||
switch (port & 0xff) {
|
switch (port & 0xff) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
|
@ -574,7 +574,7 @@ static INT32 DrvInit()
|
||||||
if (BurnLoadRom(DrvTempRom + 0x1000, 9, 1)) return 1;
|
if (BurnLoadRom(DrvTempRom + 0x1000, 9, 1)) return 1;
|
||||||
if (BurnLoadRom(DrvTempRom + 0x2000,10, 1)) return 1;
|
if (BurnLoadRom(DrvTempRom + 0x2000,10, 1)) return 1;
|
||||||
if (BurnLoadRom(DrvTempRom + 0x3000,11, 1)) return 1;
|
if (BurnLoadRom(DrvTempRom + 0x3000,11, 1)) return 1;
|
||||||
GfxDecode(0x200, 2, 16, 16, SpritePlaneOffsets, SpriteXOffsets, SpriteYOffsets, 0x80, DrvTempRom, DrvSpriteGFX);
|
GfxDecode(0x100 /*((0x4000*8)/2)/(16*16))*/, 2, 16, 16, SpritePlaneOffsets, SpriteXOffsets, SpriteYOffsets, 0x80, DrvTempRom, DrvSpriteGFX);
|
||||||
|
|
||||||
if (BurnLoadRom(DrvColorPROM + 0x0000, 12, 1)) return 1;
|
if (BurnLoadRom(DrvColorPROM + 0x0000, 12, 1)) return 1;
|
||||||
if (BurnLoadRom(DrvColorPROM + 0x0020, 13, 1)) return 1;
|
if (BurnLoadRom(DrvColorPROM + 0x0020, 13, 1)) return 1;
|
||||||
|
@ -713,6 +713,7 @@ static void draw_background_skyskipr()
|
||||||
static void draw_sprites()
|
static void draw_sprites()
|
||||||
{
|
{
|
||||||
UINT8 *spriteram = DrvSpriteRAM;
|
UINT8 *spriteram = DrvSpriteRAM;
|
||||||
|
INT32 sprmask = ((skyskiprmode) ? 0xff : 0x1ff);
|
||||||
|
|
||||||
for (INT32 offs = 0; offs < 0x27b; offs += 4)
|
for (INT32 offs = 0; offs < 0x27b; offs += 4)
|
||||||
{
|
{
|
||||||
|
@ -739,22 +740,23 @@ static void draw_sprites()
|
||||||
|
|
||||||
if (sx <= -6) sx += 512;
|
if (sx <= -6) sx += 512;
|
||||||
|
|
||||||
|
code = (code ^ 0x1ff) & sprmask;
|
||||||
|
|
||||||
if (flipy) { // we need a macro for this -dink
|
if (flipy) { // we need a macro for this -dink
|
||||||
if (flipx) {
|
if (flipx) {
|
||||||
Render16x16Tile_Mask_FlipXY_Clip(pTransDraw, code ^ 0x1ff, sx, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
Render16x16Tile_Mask_FlipXY_Clip(pTransDraw, code, sx, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
||||||
Render16x16Tile_Mask_FlipXY_Clip(pTransDraw, code ^ 0x1ff, sx-512, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
Render16x16Tile_Mask_FlipXY_Clip(pTransDraw, code, sx-512, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
||||||
} else {
|
} else {
|
||||||
Render16x16Tile_Mask_FlipY_Clip(pTransDraw, code ^ 0x1ff, sx, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
Render16x16Tile_Mask_FlipY_Clip(pTransDraw, code, sx, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
||||||
Render16x16Tile_Mask_FlipY_Clip(pTransDraw, code ^ 0x1ff, sx-512, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
Render16x16Tile_Mask_FlipY_Clip(pTransDraw, code, sx-512, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (flipx) {
|
if (flipx) {
|
||||||
Render16x16Tile_Mask_FlipX_Clip(pTransDraw, code ^ 0x1ff, sx, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
Render16x16Tile_Mask_FlipX_Clip(pTransDraw, code, sx, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
||||||
Render16x16Tile_Mask_FlipX_Clip(pTransDraw, code ^ 0x1ff, sx-512, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
Render16x16Tile_Mask_FlipX_Clip(pTransDraw, code, sx-512, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
||||||
} else {
|
} else {
|
||||||
Render16x16Tile_Mask_Clip(pTransDraw, code ^ 0x1ff, sx, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
Render16x16Tile_Mask_Clip(pTransDraw, code, sx, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
||||||
Render16x16Tile_Mask_Clip(pTransDraw, code ^ 0x1ff, sx-512, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
Render16x16Tile_Mask_Clip(pTransDraw, code, sx-512, sy, color, 2, 0, 0x200, DrvSpriteGFX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -772,7 +774,7 @@ static INT32 DrvDraw()
|
||||||
|
|
||||||
draw_background_skyskipr();
|
draw_background_skyskipr();
|
||||||
draw_sprites();
|
draw_sprites();
|
||||||
draw_chars();
|
draw_chars();
|
||||||
|
|
||||||
BurnTransferCopy(DrvPalette);
|
BurnTransferCopy(DrvPalette);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue