mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
Added preliminary sound to ghosteo.c by borrowing code from vegaeo.c. [Osso]
This commit is contained in:
parent
8c7486fa5d
commit
3b5555e720
@ -60,6 +60,7 @@ ToDo: hook up QS1000
|
||||
#include "machine/s3c2410.h"
|
||||
//#include "machine/smartmed.h"
|
||||
#include "machine/i2cmem.h"
|
||||
#include "sound/qs1000.h"
|
||||
|
||||
#define NAND_LOG 0
|
||||
|
||||
@ -83,29 +84,35 @@ class ghosteo_state : public driver_device
|
||||
public:
|
||||
ghosteo_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_system_memory(*this, "systememory"),
|
||||
m_maincpu(*this, "maincpu") ,
|
||||
m_i2cmem(*this, "i2cmem"),
|
||||
m_s3c2410(*this, "s3c2410"),
|
||||
m_maincpu(*this, "maincpu") { }
|
||||
m_system_memory(*this, "systememory") { }
|
||||
|
||||
required_shared_ptr<UINT32> m_system_memory;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<i2cmem_device> m_i2cmem;
|
||||
|
||||
required_device<s3c2410_device> m_s3c2410;
|
||||
required_shared_ptr<UINT32> m_system_memory;
|
||||
|
||||
int m_security_count;
|
||||
UINT32 m_bballoon_port[20];
|
||||
struct nand_t m_nand;
|
||||
DECLARE_WRITE32_MEMBER(sound_w);
|
||||
DECLARE_READ32_MEMBER(bballoon_speedup_r);
|
||||
DECLARE_READ32_MEMBER(touryuu_port_10000000_r);
|
||||
DECLARE_WRITE32_MEMBER(soundlatch_w);
|
||||
|
||||
DECLARE_READ8_MEMBER(qs1000_p1_r);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(qs1000_p1_w);
|
||||
DECLARE_WRITE8_MEMBER(qs1000_p2_w);
|
||||
DECLARE_WRITE8_MEMBER(qs1000_p3_w);
|
||||
|
||||
int m_rom_pagesize;
|
||||
UINT8* m_flash;
|
||||
required_device<s3c2410_device> m_s3c2410;
|
||||
DECLARE_DRIVER_INIT(touryuu);
|
||||
DECLARE_DRIVER_INIT(bballoon);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
required_device<cpu_device> m_maincpu;
|
||||
DECLARE_READ32_MEMBER(s3c2410_gpio_port_r);
|
||||
DECLARE_WRITE32_MEMBER(s3c2410_gpio_port_w);
|
||||
DECLARE_READ32_MEMBER(s3c2410_core_pin_r);
|
||||
@ -143,6 +150,34 @@ NAND Flash Controller (4KB internal buffer)
|
||||
24-ch external interrupts Controller (Wake-up source 16-ch)
|
||||
*/
|
||||
|
||||
READ8_MEMBER( ghosteo_state::qs1000_p1_r )
|
||||
{
|
||||
return soundlatch_byte_r(space, 0);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( ghosteo_state::qs1000_p1_w )
|
||||
{
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( ghosteo_state::qs1000_p2_w )
|
||||
{
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( ghosteo_state::qs1000_p3_w )
|
||||
{
|
||||
// .... .xxx - Data ROM bank (64kB)
|
||||
// ...x .... - ?
|
||||
// ..x. .... - /IRQ clear
|
||||
|
||||
qs1000_device *qs1000 = machine().device<qs1000_device>("qs1000");
|
||||
|
||||
membank("qs1000:bank")->set_entry(data & 0x07);
|
||||
|
||||
if (!BIT(data, 5))
|
||||
qs1000->set_irq(CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
// GPIO
|
||||
|
||||
static const UINT8 security_data[] = { 0x01, 0xC4, 0xFF, 0x22, 0xFF, 0xFF, 0xFF, 0xFF };
|
||||
@ -363,22 +398,6 @@ WRITE_LINE_MEMBER(ghosteo_state::s3c2410_i2c_sda_w )
|
||||
m_i2cmem->write_sda(state);
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(ghosteo_state::sound_w)
|
||||
{
|
||||
if ((data >= 0x20) && (data <= 0x7F))
|
||||
{
|
||||
logerror( "sound_w: music %d\n", data - 0x20);
|
||||
}
|
||||
else if ((data >= 0x80) && (data <= 0xFF))
|
||||
{
|
||||
logerror( "sound_w: effect %d\n", data - 0x80);
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror( "sound_w: unknown (%d)\n", data);
|
||||
}
|
||||
}
|
||||
|
||||
READ32_MEMBER( ghosteo_state::touryuu_port_10000000_r )
|
||||
{
|
||||
UINT32 port_g = m_bballoon_port[S3C2410_GPIO_PORT_G];
|
||||
@ -400,7 +419,7 @@ static ADDRESS_MAP_START( bballoon_map, AS_PROGRAM, 32, ghosteo_state )
|
||||
AM_RANGE(0x10000000, 0x10000003) AM_READ_PORT("10000000")
|
||||
AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000")
|
||||
AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000")
|
||||
AM_RANGE(0x10300000, 0x10300003) AM_WRITE(sound_w)
|
||||
AM_RANGE(0x10300000, 0x10300003) AM_WRITE(soundlatch_w)
|
||||
AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -408,7 +427,7 @@ static ADDRESS_MAP_START( touryuu_map, AS_PROGRAM, 32, ghosteo_state )
|
||||
AM_RANGE(0x10000000, 0x10000003) AM_READ(touryuu_port_10000000_r)
|
||||
AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000")
|
||||
AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000")
|
||||
AM_RANGE(0x10300000, 0x10300003) AM_WRITE(sound_w)
|
||||
AM_RANGE(0x10300000, 0x10300003) AM_WRITE(soundlatch_w)
|
||||
AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -582,9 +601,23 @@ READ32_MEMBER(ghosteo_state::bballoon_speedup_r)
|
||||
return ret;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(ghosteo_state::soundlatch_w)
|
||||
{
|
||||
qs1000_device *qs1000 = space.machine().device<qs1000_device>("qs1000");
|
||||
|
||||
soundlatch_byte_w(space, 0, data);
|
||||
qs1000->set_irq(ASSERT_LINE);
|
||||
|
||||
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
|
||||
}
|
||||
|
||||
void ghosteo_state::machine_start()
|
||||
{
|
||||
m_flash = (UINT8 *)memregion( "user1")->base();
|
||||
|
||||
// Set up the QS1000 program ROM banking, taking care not to overlap the internal RAM
|
||||
machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
|
||||
membank("qs1000:bank")->configure_entries(0, 8, memregion("qs1000:cpu")->base()+0x100, 0x10000);
|
||||
}
|
||||
|
||||
void ghosteo_state::machine_reset()
|
||||
@ -592,6 +625,22 @@ void ghosteo_state::machine_reset()
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x4d000010, 0x4d000013,read32_delegate(FUNC(ghosteo_state::bballoon_speedup_r), this));
|
||||
}
|
||||
|
||||
static QS1000_INTERFACE( qs1000_intf )
|
||||
{
|
||||
/* External ROM */
|
||||
true,
|
||||
|
||||
/* P1-P3 read handlers */
|
||||
DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p1_r),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
|
||||
/* P1-P3 write handlers */
|
||||
DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p1_w),
|
||||
DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p2_w),
|
||||
DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p3_w)
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( ghosteo, ghosteo_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -615,6 +664,11 @@ static MACHINE_CONFIG_START( ghosteo, ghosteo_state )
|
||||
// MCFG_I2CMEM_ADD("i2cmem", 0xA0, 0, 0x100, NULL)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( bballoon, ghosteo )
|
||||
@ -682,14 +736,12 @@ ROM_START( bballoon )
|
||||
ROM_LOAD( "flash.u1", 0x000000, 0x2000000, BAD_DUMP CRC(73285634) SHA1(4d0210c1bebdf3113a99978ffbcd77d6ee854168) ) // missing ECC data
|
||||
|
||||
// banked every 0x10000 bytes ?
|
||||
ROM_REGION( 0x080000, "user2", 0 )
|
||||
ROM_REGION( 0x080000, "qs1000:cpu", 0 )
|
||||
ROM_LOAD( "b2.u20", 0x000000, 0x080000, CRC(0a12334c) SHA1(535b5b34f28435517218100d70147d87809f485a) )
|
||||
|
||||
ROM_REGION( 0x100000, "sfx", 0 ) /* QDSP samples (SFX) */
|
||||
ROM_LOAD( "b1.u16", 0x000000, 0x100000, CRC(c42c1c85) SHA1(e1f49d556ffd6bc27142a7784c3bb8e37999857d) )
|
||||
|
||||
ROM_REGION( 0x080000, "wavetable", 0 ) /* QDSP wavetable rom */
|
||||
ROM_LOAD( "qs1001a.u17", 0x000000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
|
||||
ROM_REGION( 0x1000000, "qs1000", 0 )
|
||||
ROM_LOAD( "b1.u16", 0x000000, 0x100000, CRC(c42c1c85) SHA1(e1f49d556ffd6bc27142a7784c3bb8e37999857d) ) /* QDSP samples (SFX) */
|
||||
ROM_LOAD( "qs1001a.u17", 0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) ) /* QDSP wavetable rom */
|
||||
ROM_END
|
||||
|
||||
ROM_START( hapytour ) /* Same hardware: GHOST Ver1.1 2003.03.28 */
|
||||
@ -697,14 +749,12 @@ ROM_START( hapytour ) /* Same hardware: GHOST Ver1.1 2003.03.28 */
|
||||
ROM_LOAD( "flash.u1", 0x000000, 0x2000000, BAD_DUMP CRC(49deb7f9) SHA1(708a27d7177cf6261a49ded975c2bbb6c2427742) ) // missing ECC data
|
||||
|
||||
// banked every 0x10000 bytes ?
|
||||
ROM_REGION( 0x080000, "user2", 0 )
|
||||
ROM_REGION( 0x080000, "qs1000:cpu", 0 )
|
||||
ROM_LOAD( "ht.u20", 0x000000, 0x080000, CRC(c0581fce) SHA1(dafce679002534ffabed249a92e6b83301b8312b) )
|
||||
|
||||
ROM_REGION( 0x100000, "sfx", 0 ) /* QDSP samples (SFX) */
|
||||
ROM_LOAD( "ht.u16", 0x000000, 0x100000, CRC(6a590a3a) SHA1(c1140f70c919661162334db66c6aa0ad656bfc47) )
|
||||
|
||||
ROM_REGION( 0x080000, "wavetable", 0 ) /* QDSP wavetable rom */
|
||||
ROM_LOAD( "qs1001a.u17", 0x000000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
|
||||
ROM_REGION( 0x1000000, "qs1000", 0 )
|
||||
ROM_LOAD( "ht.u16", 0x000000, 0x100000, CRC(6a590a3a) SHA1(c1140f70c919661162334db66c6aa0ad656bfc47) ) /* QDSP samples (SFX) */
|
||||
ROM_LOAD( "qs1001a.u17", 0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) ) /* QDSP wavetable rom */
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -713,14 +763,12 @@ ROM_START( touryuu )
|
||||
ROM_LOAD( "u1.bin", 0x000000, 0x4200000, CRC(49b6856e) SHA1(639123d2fabac4e79c9315fb87f72b13f9ae8761) )
|
||||
|
||||
// banked every 0x10000 bytes ?
|
||||
ROM_REGION( 0x080000, "user2", 0 )
|
||||
ROM_REGION( 0x080000, "qs1000:cpu", 0 )
|
||||
ROM_LOAD( "4m.eeprom_c.s(bad1h).u20", 0x000000, 0x080000, CRC(f81a6530) SHA1(c7fa412102328d06823e73d7d07cadfc25db6d28) )
|
||||
|
||||
ROM_REGION( 0x100000, "sfx", 0 ) /* QDSP samples (SFX) */
|
||||
ROM_LOAD( "8m.eprom_c.s(f8b1h).u16", 0x000000, 0x100000, CRC(238a85ab) SHA1(ddd79429c0c1e67fcbca1e4ebded97ea46229f0b) )
|
||||
|
||||
ROM_REGION( 0x080000, "wavetable", 0 ) /* QDSP wavetable rom */
|
||||
ROM_LOAD( "qs1001a.u17", 0x000000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
|
||||
ROM_REGION( 0x1000000, "qs1000", 0 )
|
||||
ROM_LOAD( "8m.eprom_c.s(f8b1h).u16", 0x000000, 0x100000, CRC(238a85ab) SHA1(ddd79429c0c1e67fcbca1e4ebded97ea46229f0b) ) /* QDSP samples (SFX) */
|
||||
ROM_LOAD( "qs1001a.u17", 0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) ) /* QDSP wavetable rom */
|
||||
ROM_END
|
||||
|
||||
DRIVER_INIT_MEMBER(ghosteo_state,bballoon)
|
||||
@ -733,6 +781,6 @@ DRIVER_INIT_MEMBER(ghosteo_state,touryuu)
|
||||
m_rom_pagesize = 0x210;
|
||||
}
|
||||
|
||||
GAME( 2003, bballoon, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "Eolith", "BnB Arcade", GAME_NO_SOUND )
|
||||
GAME( 2005, hapytour, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "GAV Company", "Happy Tour", GAME_NO_SOUND )
|
||||
GAME( 2005, touryuu, 0, touryuu, touryuu, ghosteo_state, touryuu, ROT0, "Yuki Enterprise", "Touryuumon (V1.1)?", GAME_NO_SOUND ) // On first boot inputs won't work, TODO: hook-up default eeprom
|
||||
GAME( 2003, bballoon, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "Eolith", "BnB Arcade", GAME_IMPERFECT_SOUND )
|
||||
GAME( 2005, hapytour, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "GAV Company", "Happy Tour", GAME_IMPERFECT_SOUND )
|
||||
GAME( 2005, touryuu, 0, touryuu, touryuu, ghosteo_state, touryuu, ROT0, "Yuki Enterprise", "Touryuumon (V1.1)?", GAME_IMPERFECT_SOUND ) // On first boot inputs won't work, TODO: hook-up default eeprom
|
||||
|
Loading…
Reference in New Issue
Block a user