Checkpoint

This commit is contained in:
Angelo Salese 2012-08-29 15:56:17 +00:00
parent 13988f7ad1
commit 9d7806ba6f
6 changed files with 66 additions and 20 deletions

View File

@ -128,6 +128,17 @@ void mb90092_device::device_reset()
// READ/WRITE HANDLERS
//**************************************************************************
WRITE_LINE_MEMBER( mb90092_device::set_cs_line )
{
m_reset_line = state;
if(m_reset_line != CLEAR_LINE)
{
// ...
}
}
WRITE8_MEMBER( mb90092_device::write )
{
UINT16 dat;
@ -143,11 +154,11 @@ WRITE8_MEMBER( mb90092_device::write )
dat = ((m_cmd_param & 7)<<7) | (data & 0x7f);
switch(m_cmd)
{
case 0x80: // preset VRAM address
case 0x80: // Preset VRAM address
m_osd_addr = dat;
//printf("%04x %d %d\n",m_osd_addr,(m_osd_addr & 0x1f),(m_osd_addr & 0x1e0) >> 5);
break;
case 0x90: // write Character
case 0x90: // Write Character
int x,y;
x = (m_osd_addr & 0x1f);
y = (m_osd_addr & 0x1e0) >> 5;

View File

@ -41,6 +41,7 @@ public:
// I/O operations
DECLARE_WRITE8_MEMBER( write );
WRITE_LINE_MEMBER( set_cs_line );
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual const rom_entry *device_rom_region() const;
@ -56,6 +57,7 @@ private:
UINT8 m_cmd_ff;
UINT8 m_cmd,m_cmd_param;
UINT16 m_osd_addr;
UINT8 m_reset_line;
inline UINT16 read_word(offs_t address);
inline void write_word(offs_t address, UINT16 data);

View File

@ -856,24 +856,23 @@ static MACHINE_CONFIG_DERIVED( nss, snes )
MCFG_CPU_IO_MAP(bios_io_map)
MCFG_CPU_VBLANK_INT("screen", nss_vblank_irq)
MCFG_M50458_ADD("m50458",m50458_intf,4000000) /* TODO: clock */
MCFG_M50458_ADD("m50458",m50458_intf,4000000) /* TODO: correct clock */
MCFG_S3520CF_ADD("s3520cf") /* RTC */
MCFG_RP5H01_ADD("rp5h01")
MCFG_M6M80011AP_ADD("m6m80011ap")
/* TODO: the screen should actually superimpose, but for the time being let's just separate outputs for now */
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_MACHINE_START( nss )
MCFG_MACHINE_RESET( nss )
/* TODO: the screen should actually superimpose, but for the time being let's just separate outputs */
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("osd", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(24*12+22, 12*18+22)
MCFG_SCREEN_VISIBLE_AREA(0*8, 24*12-1, 0*8, 12*18-1)
MCFG_SCREEN_UPDATE_DRIVER(nss_state,screen_update)
MCFG_MACHINE_START( nss )
MACHINE_CONFIG_END
/***************************************************************************

View File

@ -135,6 +135,8 @@ public:
required_device <mb90092_device> m_mb90092;
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER( port_81_w );
};
UINT32 sfcbox_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
@ -179,13 +181,19 @@ static ADDRESS_MAP_START( sfcbox_map, AS_PROGRAM, 8, sfcbox_state )
AM_RANGE(0x60000, 0x67fff) AM_NOP // grom slot 1
ADDRESS_MAP_END
WRITE8_MEMBER( sfcbox_state::port_81_w )
{
device_set_input_line(m_maincpu, INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
device_set_input_line(m_soundcpu, INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
ioport("OSD_CS")->write(data, 0xff);
}
static ADDRESS_MAP_START( sfcbox_io, AS_IO, 8, sfcbox_state )
AM_RANGE(0x0b, 0x0b) AM_DEVWRITE("mb90092",mb90092_device,write)
AM_RANGE(0x00, 0x3f) AM_RAM // internal i/o
// AM_RANGE(0x80, 0x80) // Keyswitch and Button Inputs / SNES Transfer and Misc Output
// AM_RANGE(0x81, 0x81) // SNES Transfer and Misc Input / Misc Output
AM_RANGE(0x81, 0x81) AM_WRITE(port_81_w) // SNES Transfer and Misc Input / Misc Output
// AM_RANGE(0x82, 0x82) // Unknown/unused
// AM_RANGE(0x83, 0x83) // Joypad Input/Status / Joypad Output/Control
// AM_RANGE(0x84, 0x84) // Joypad 1, MSB (1st 8 bits) (eg. Bit7=ButtonB, 0=Low=Pressed)
@ -199,6 +207,9 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( snes )
PORT_START("OSD_CS")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mb90092", mb90092_device, set_cs_line)
PORT_START("SERIAL1_DATA1_L")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Button A") PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Button X") PORT_PLAYER(1)
@ -342,15 +353,38 @@ static MACHINE_CONFIG_START( snes, sfcbox_state )
MACHINE_CONFIG_END
static MACHINE_START( sfcbox )
{
sfcbox_state *state = machine.driver_data<sfcbox_state>();
MACHINE_START_CALL(snes);
state->m_is_sfcbox = 1;
}
static MACHINE_RESET( sfcbox )
{
sfcbox_state *state = machine.driver_data<sfcbox_state>();
MACHINE_RESET_CALL( snes );
/* start with both CPUs disabled */
device_set_input_line(state->m_maincpu, INPUT_LINE_RESET, ASSERT_LINE);
device_set_input_line(state->m_soundcpu, INPUT_LINE_RESET, ASSERT_LINE);
}
static MACHINE_CONFIG_DERIVED( sfcbox, snes )
MCFG_CPU_ADD("bios", Z180, XTAL_12MHz / 2) /* HD64180RF6X */
MCFG_CPU_PROGRAM_MAP(sfcbox_map)
MCFG_CPU_IO_MAP(sfcbox_io)
MCFG_MB90092_ADD("mb90092",XTAL_12MHz / 2) /* TODO: pixel clock */
MCFG_MB90092_ADD("mb90092",XTAL_12MHz / 2) /* TODO: correct clock */
/* TODO: the screen should actually superimpose, but for the time being let's just separate outputs for now */
MCFG_MACHINE_START( sfcbox )
MCFG_MACHINE_RESET( sfcbox )
/* TODO: the screen should actually superimpose, but for the time being let's just separate outputs */
MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
MCFG_SCREEN_ADD("osd", RASTER)
@ -375,6 +409,8 @@ MACHINE_CONFIG_END
ROM_LOAD( "spc700.rom", 0x00, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) ) \
ROM_REGION( 0x10000, "krom", 0 ) \
ROM_LOAD( "krom1.ic1", 0x00000, 0x10000, CRC(c9010002) SHA1(f4c74086a83b728b1c1af3a021a60efa80eff5a4) ) \
ROM_REGION( 0x100000, "user3", 0 ) \
ROM_LOAD( "atrom-4s-0.rom5", 0x00000, 0x80000, CRC(ad3ec05c) SHA1(a3d336db585fe02a37c323422d9db6a33fd489a6) ) \
ROM_START( sfcbox )
@ -386,13 +422,10 @@ ROM_END
ROM_START( pss61 )
SFCBOX_BIOS
ROM_REGION( 0x100000, "atrom", 0 )
ROM_LOAD( "atrom-4s-0.rom5", 0x00000, 0x80000, CRC(ad3ec05c) SHA1(a3d336db585fe02a37c323422d9db6a33fd489a6) )
ROM_REGION( 0x8000, "grom", 0 )
ROM_LOAD( "grom1-1.ic1", 0x0000, 0x8000, CRC(333bf9a7) SHA1(5d0cd9ca29e5580c3eebe9f136839987c879f979) )
ROM_REGION( 0x380000, "user3", 0 )
ROM_REGION( 0x380000, "game", 0 )
ROM_LOAD( "shvc-mk-0.rom6", 0x000000, 0x080000, CRC(c8002453) SHA1(cbb853bf911255c1d8eb27cd34fc7855a0dda218) )
ROM_LOAD( "shvc-4m-1.rom3", 0x080000, 0x200000, CRC(91b28d56) SHA1(b83dd73d3d6049450bb8092d73c3af879804f58c) )
ROM_LOAD( "shvc-fo-1.ic20", 0x280000, 0x100000, CRC(ad668a41) SHA1(39ff7354a7fa02295c899b7a7ec3556998ac2636) ) /* Super FX hook needed for Star Fox */
@ -404,7 +437,7 @@ ROM_START( pss62 )
ROM_REGION( 0x8000, "grom", 0 )
ROM_LOAD( "grom2-1.ic1", 0x0000, 0x8000, CRC(bcfc5642) SHA1(a96e52685bd3dcdf09d1b7acd6e1c1ab7726a640) )
ROM_REGION( 0x180000, "user3", 0 )
ROM_REGION( 0x180000, "game", 0 )
ROM_LOAD( "shvc-gc-0.rom1", 0x000000, 0x100000, CRC(b4fd7aff) SHA1(eb553b77418dedba25fc4d5dddcb04f424b0f6a9) )
ROM_LOAD( "shvc-2a-1.rom3", 0x100000, 0x080000, CRC(6b23e2e4) SHA1(684123a12ca1e31115bd6221d96f82461066877f) )
ROM_END
@ -415,7 +448,7 @@ ROM_START( pss63 )
ROM_REGION( 0x8000, "grom", 0 )
ROM_LOAD( "grom3-1.ic1", 0x0000, 0x8000, CRC(ebec4c1c) SHA1(d638ef1486b4c0b3d4d5b666929ca7947e16efad) )
ROM_REGION( 0x500000, "user3", 0 )
ROM_REGION( 0x500000, "game", 0 )
ROM_LOAD( "shvc-t2-1.rom3", 0x000000, 0x100000, CRC(4ae93c10) SHA1(5fa25d027940907b769578d7bf85a9d5ba94911a) )
ROM_LOAD( "shvc-8x-1.rom1", 0x100000, 0x400000, CRC(3adef543) SHA1(df02860e691fbee453e345dd343c08b6da08d4ea) )
ROM_END
@ -426,7 +459,7 @@ ROM_START( pss64 )
ROM_REGION( 0x8000, "grom", 0 )
ROM_LOAD( "grom4-1.ic1", 0x0000, 0x8000, NO_DUMP )
ROM_REGION( 0x500000, "user3", 0 )
ROM_REGION( 0x500000, "game", 0 )
ROM_LOAD( "shvc-m4-0.rom3", 0x000000, 0x100000, CRC(fb259f4f) SHA1(8faeb56f80e82dd042bdc84d19c526a979c6de8f) )
ROM_LOAD( "shvc-8x-1.rom1", 0x100000, 0x400000, CRC(3adef543) SHA1(df02860e691fbee453e345dd343c08b6da08d4ea) )
// Possibly reverse order :

View File

@ -427,12 +427,12 @@ public:
UINT16 m_vtime;
UINT16 m_vmadd;
/* HW flags */
/* non-SNES HW-specific flags / variables */
UINT8 m_is_nss;
UINT8 m_input_disabled;
UINT8 m_game_over_flag;
UINT8 m_joy_flag;
// UINT8 m_is_sfcbox;
UINT8 m_is_sfcbox;
/* timers */
emu_timer *m_scanline_timer;

View File

@ -1852,6 +1852,7 @@ MACHINE_START( snes )
}
state->m_is_nss = 0;
state->m_is_sfcbox = 0;
}
MACHINE_RESET( snes )