mirror of
https://github.com/holub/mame
synced 2025-05-24 23:05:32 +03:00
Sky Army: cleaned up the driver, also removed the GAME_WRONG_COLORS flag since the colors actually seems correct according to the references. [Angelo Salese]
This commit is contained in:
parent
449143fec6
commit
2ba1316646
@ -31,31 +31,22 @@ static tilemap* skyarmy_tilemap;
|
||||
|
||||
static TILE_GET_INFO( get_skyarmy_tile_info )
|
||||
{
|
||||
int code = skyarmy_videoram[tile_index];
|
||||
int attr = skyarmy_colorram[tile_index];
|
||||
|
||||
/* bit 0 <-> bit 2 ????? */
|
||||
switch(attr)
|
||||
{
|
||||
case 1: attr=4; break;
|
||||
case 3: attr=6; break;
|
||||
case 4: attr=1; break;
|
||||
case 6: attr=3; break;
|
||||
}
|
||||
int code = skyarmy_videoram[tile_index];
|
||||
int attr = BITSWAP8(skyarmy_colorram[tile_index], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
|
||||
|
||||
SET_TILE_INFO( 0, code, attr, 0);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( skyarmy_videoram_w )
|
||||
{
|
||||
skyarmy_videoram[offset] = data;
|
||||
tilemap_mark_tile_dirty(skyarmy_tilemap,offset);
|
||||
skyarmy_videoram[offset] = data;
|
||||
tilemap_mark_tile_dirty(skyarmy_tilemap,offset);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( skyarmy_colorram_w )
|
||||
{
|
||||
skyarmy_colorram[offset] = data;
|
||||
tilemap_mark_tile_dirty(skyarmy_tilemap,offset);
|
||||
skyarmy_colorram[offset] = data;
|
||||
tilemap_mark_tile_dirty(skyarmy_tilemap,offset);
|
||||
}
|
||||
|
||||
static PALETTE_INIT( skyarmy )
|
||||
@ -88,43 +79,38 @@ static PALETTE_INIT( skyarmy )
|
||||
|
||||
static VIDEO_START( skyarmy )
|
||||
{
|
||||
skyarmy_tilemap = tilemap_create(machine, get_skyarmy_tile_info,tilemap_scan_rows,8,8,32,32);
|
||||
tilemap_set_scroll_cols(skyarmy_tilemap,32);
|
||||
skyarmy_tilemap = tilemap_create(machine, get_skyarmy_tile_info,tilemap_scan_rows,8,8,32,32);
|
||||
tilemap_set_scroll_cols(skyarmy_tilemap,32);
|
||||
}
|
||||
|
||||
|
||||
static VIDEO_UPDATE( skyarmy )
|
||||
{
|
||||
UINT8 *spriteram = screen->machine->generic.spriteram.u8;
|
||||
int sx, sy, flipx, flipy, offs,pal;
|
||||
int i;
|
||||
for(i=0;i<0x20;i++)tilemap_set_scrolly( skyarmy_tilemap,i,skyarmy_scrollram[i]);
|
||||
int sx, sy, flipx, flipy, offs,pal;
|
||||
int i;
|
||||
|
||||
tilemap_draw(bitmap,cliprect,skyarmy_tilemap,0,0);
|
||||
for(i=0;i<0x20;i++)
|
||||
tilemap_set_scrolly( skyarmy_tilemap,i,skyarmy_scrollram[i]);
|
||||
|
||||
tilemap_draw(bitmap,cliprect,skyarmy_tilemap,0,0);
|
||||
|
||||
for (offs = 0 ; offs < 0x40; offs+=4)
|
||||
{
|
||||
pal = BITSWAP8(spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
|
||||
|
||||
pal=spriteram[offs+2]&0x7;
|
||||
|
||||
switch(pal)
|
||||
{
|
||||
case 1: pal=4; break;
|
||||
case 2: pal=2; break;
|
||||
case 3: pal=6; break;
|
||||
case 4: pal=1; break;
|
||||
case 6: pal=3; break;
|
||||
}
|
||||
sx = spriteram[offs+3];
|
||||
sy = 242-spriteram[offs];
|
||||
flipy = (spriteram[offs+1]&0x80)>>7;
|
||||
flipx = (spriteram[offs+1]&0x40)>>6;
|
||||
|
||||
drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[1],
|
||||
spriteram[offs+1]&0x3f,
|
||||
pal,
|
||||
flipx,flipy,
|
||||
sx,sy,0);
|
||||
spriteram[offs+1]&0x3f,
|
||||
pal,
|
||||
flipx,flipy,
|
||||
sx,sy,0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -132,13 +118,13 @@ static int skyarmy_nmi=0;
|
||||
|
||||
static INTERRUPT_GEN( skyarmy_nmi_source )
|
||||
{
|
||||
if(skyarmy_nmi) cpu_set_input_line(device,INPUT_LINE_NMI, PULSE_LINE) ;
|
||||
if(skyarmy_nmi) cpu_set_input_line(device,INPUT_LINE_NMI, PULSE_LINE);
|
||||
}
|
||||
|
||||
|
||||
static WRITE8_HANDLER( nmi_enable_w )
|
||||
{
|
||||
skyarmy_nmi=data&1;
|
||||
skyarmy_nmi=data&1;
|
||||
}
|
||||
|
||||
|
||||
@ -209,30 +195,30 @@ INPUT_PORTS_END
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
8,8,
|
||||
256,
|
||||
2,
|
||||
{ 0, 256*8*8 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
||||
8*8
|
||||
256,
|
||||
2,
|
||||
{ 0, 256*8*8 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
||||
8*8
|
||||
};
|
||||
|
||||
static const gfx_layout spritelayout =
|
||||
{
|
||||
16,16,
|
||||
32*2,
|
||||
2,
|
||||
{ 0, 256*8*8 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
|
||||
16*8,17*8,18*8,19*8,20*8,21*8,22*8,23*8 },
|
||||
32*8
|
||||
16,16,
|
||||
32*2,
|
||||
2,
|
||||
{ 0, 256*8*8 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
|
||||
16*8,17*8,18*8,19*8,20*8,21*8,22*8,23*8 },
|
||||
32*8
|
||||
};
|
||||
|
||||
static GFXDECODE_START( skyarmy )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 32 )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 8 )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 8 )
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_DRIVER_START( skyarmy )
|
||||
@ -283,5 +269,5 @@ ROM_START( skyarmy )
|
||||
ROM_LOAD( "a6.bin", 0x0000, 0x0020, CRC(c721220b) SHA1(61b3320fb616c0600d56840cb6438616c7e0c6eb) )
|
||||
ROM_END
|
||||
|
||||
GAME( 1982, skyarmy, 0, skyarmy, skyarmy, 0, ROT90, "Shoei", "Sky Army", GAME_WRONG_COLORS )
|
||||
GAME( 1982, skyarmy, 0, skyarmy, skyarmy, 0, ROT90, "Shoei", "Sky Army", 0 )
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user