Various changes to Inter Stellar, nw

This commit is contained in:
Angelo Salese 2012-08-05 19:59:29 +00:00
parent b21820f687
commit f3688c1e86

View File

@ -3,8 +3,8 @@ Funai / Gakken Interstellar Laser Fantasy laserdisc hardware
Driver by Andrew Gardner with help from Daphne Source Driver by Andrew Gardner with help from Daphne Source
Notes: Notes:
Holding down the TEST switch (T) while hitting reset will bring up the Self Test. Holding down the TEST switch while hitting reset will bring up the Self Test.
Hit T twice more for color and monitor calibration. Hit TEST switch again for color and monitor calibration.
This is somewhat strange hardware : More z80's than necessary This is somewhat strange hardware : More z80's than necessary
3 bpp sprites 3 bpp sprites
6-pin dip switches with odd handling 6-pin dip switches with odd handling
@ -58,34 +58,23 @@ public:
/* VIDEO GOODS */ /* VIDEO GOODS */
static SCREEN_UPDATE_IND16( istellar ) static SCREEN_UPDATE_RGB32( istellar )
{ {
istellar_state *state = screen.machine().driver_data<istellar_state>(); istellar_state *state = screen.machine().driver_data<istellar_state>();
int charx, chary; int x, y;
/* clear */ /* clear */
bitmap.fill(0, cliprect); bitmap.fill(0, cliprect);
/* DEBUG */
/*
for (charx = 0; charx < 0x400; charx ++)
{
printf ("%x ", state->m_sprite_ram[charx]) ;
}
printf("\n\n\n");
*/
/* Draw tiles */ /* Draw tiles */
for (charx = 0; charx < 32; charx++) for (y = 0; y < 32; y++)
{ {
for (chary = 0; chary < 32; chary++) for (x = 0; x < 32; x++)
{ {
int current_screen_character = (chary*32) + charx; int tile = state->m_tile_ram[x+y*32];
int attr = state->m_tile_control_ram[x+y*32];
drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[0], drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[0],tile,attr & 0x0f,0, 0, x*8, y*8, 0);
state->m_tile_ram[current_screen_character],
(state->m_tile_control_ram[current_screen_character] & 0x0f),
0, 0, charx*8, chary*8, 0);
} }
} }
@ -256,7 +245,7 @@ static INPUT_PORTS_START( istellar )
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:!5") /* Maybe SERVICE? */ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:!5") /* Maybe SERVICE? */
PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME( "TEST" ) PORT_CODE( KEYCODE_T ) PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_HIGH )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
@ -277,7 +266,6 @@ static PALETTE_INIT( istellar )
const UINT8 *color_prom = machine.root_device().memregion("proms")->base(); const UINT8 *color_prom = machine.root_device().memregion("proms")->base();
int i; int i;
/* Oddly enough, the top 4 bits of each byte is 0 */
for (i = 0; i < machine.total_colors(); i++) for (i = 0; i < machine.total_colors(); i++)
{ {
int r,g,b; int r,g,b;
@ -308,30 +296,27 @@ static PALETTE_INIT( istellar )
palette_set_color(machine,i,MAKE_RGB(r,g,b)); palette_set_color(machine,i,MAKE_RGB(r,g,b));
} }
/* make color 0 transparent */
palette_set_color(machine, 0, MAKE_ARGB(0,0,0,0));
} }
static const gfx_layout istellar_gfx_layout = static const gfx_layout istellar_gfx_layout =
{ {
8,8, 8,8,
0x2000/8, RGN_FRAC(1,3),
3, 3,
{ 0, 0x2000*8, 0x4000*8 }, { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) },
{ 0,1,2,3,4,5,6,7 }, { 0,1,2,3,4,5,6,7 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8 8*8
}; };
static GFXDECODE_START( istellar ) static GFXDECODE_START( istellar )
GFXDECODE_ENTRY( "gfx1", 0, istellar_gfx_layout, 0x0, 0x100 ) GFXDECODE_ENTRY( "gfx1", 0, istellar_gfx_layout, 0x0, 0x20 )
GFXDECODE_END GFXDECODE_END
static INTERRUPT_GEN( vblank_callback_istellar ) static INTERRUPT_GEN( vblank_callback_istellar )
{ {
/* Interrupt presumably comes from VBlank */ /* Interrupt presumably comes from VBlank */
device_set_input_line(device, 0, ASSERT_LINE); device_set_input_line(device, 0, HOLD_LINE);
/* Interrupt presumably comes from the LDP's status strobe */ /* Interrupt presumably comes from the LDP's status strobe */
cputag_set_input_line(device->machine(), "sub", 0, ASSERT_LINE); cputag_set_input_line(device->machine(), "sub", 0, ASSERT_LINE);
@ -417,6 +402,22 @@ static DRIVER_INIT( istellar )
{ {
istellar_state *state = machine.driver_data<istellar_state>(); istellar_state *state = machine.driver_data<istellar_state>();
state->m_z80_2_nmi_enable = 0; state->m_z80_2_nmi_enable = 0;
#if 0
{
UINT8 *ROM = machine.root_device().memregion("maincpu")->base();
ROM[0x4465] = 0x00;
ROM[0x4466] = 0x00;
ROM[0x4478] = 0x00;
ROM[0x4479] = 0x00;
ROM[0x43b4] = 0x00;
ROM[0x43b5] = 0x00;
ROM[0x4409] = 0x20;
ROM[0x46de] = 0x00;
ROM[0x46df] = 0x00;
}
#endif
} }
/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS) */ /* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS) */