Previous 199869 Revisions Next

r26674 Friday 20th December, 2013 at 16:58:08 UTC by Osso
Added preliminary sound to ghosteo.c by borrowing code from vegaeo.c. [Osso]
[src/mame/drivers]ghosteo.c

trunk/src/mame/drivers/ghosteo.c
r26673r26674
6060#include "machine/s3c2410.h"
6161//#include "machine/smartmed.h"
6262#include "machine/i2cmem.h"
63#include "sound/qs1000.h"
6364
6465#define NAND_LOG 0
6566
r26673r26674
8384public:
8485   ghosteo_state(const machine_config &mconfig, device_type type, const char *tag)
8586      : driver_device(mconfig, type, tag),
86      m_system_memory(*this, "systememory"),
87      m_maincpu(*this, "maincpu") ,
8788      m_i2cmem(*this, "i2cmem"),
8889      m_s3c2410(*this, "s3c2410"),
89      m_maincpu(*this, "maincpu") { }
90      m_system_memory(*this, "systememory") { }
9091
92   required_device<cpu_device> m_maincpu;
93   required_device<i2cmem_device> m_i2cmem;
94   required_device<s3c2410_device> m_s3c2410;
9195   required_shared_ptr<UINT32> m_system_memory;
92   required_device<i2cmem_device> m_i2cmem;
93
96     
9497   int m_security_count;
9598   UINT32 m_bballoon_port[20];
9699   struct nand_t m_nand;
97   DECLARE_WRITE32_MEMBER(sound_w);
98100   DECLARE_READ32_MEMBER(bballoon_speedup_r);
99101   DECLARE_READ32_MEMBER(touryuu_port_10000000_r);
102   DECLARE_WRITE32_MEMBER(soundlatch_w);
100103
104   DECLARE_READ8_MEMBER(qs1000_p1_r);
105
106   DECLARE_WRITE8_MEMBER(qs1000_p1_w);
107   DECLARE_WRITE8_MEMBER(qs1000_p2_w);
108   DECLARE_WRITE8_MEMBER(qs1000_p3_w);
109
101110   int m_rom_pagesize;
102111   UINT8* m_flash;
103   required_device<s3c2410_device> m_s3c2410;
104112   DECLARE_DRIVER_INIT(touryuu);
105113   DECLARE_DRIVER_INIT(bballoon);
106114   virtual void machine_start();
107115   virtual void machine_reset();
108   required_device<cpu_device> m_maincpu;
109116   DECLARE_READ32_MEMBER(s3c2410_gpio_port_r);
110117   DECLARE_WRITE32_MEMBER(s3c2410_gpio_port_w);
111118   DECLARE_READ32_MEMBER(s3c2410_core_pin_r);
r26673r26674
14315024-ch external interrupts Controller (Wake-up source 16-ch)
144151*/
145152
153READ8_MEMBER( ghosteo_state::qs1000_p1_r )
154{
155   return soundlatch_byte_r(space, 0);
156}
157
158WRITE8_MEMBER( ghosteo_state::qs1000_p1_w )
159{
160}
161
162WRITE8_MEMBER( ghosteo_state::qs1000_p2_w )
163{
164}
165
166WRITE8_MEMBER( ghosteo_state::qs1000_p3_w )
167{
168   // .... .xxx - Data ROM bank (64kB)
169   // ...x .... - ?
170   // ..x. .... - /IRQ clear
171
172   qs1000_device *qs1000 = machine().device<qs1000_device>("qs1000");
173
174   membank("qs1000:bank")->set_entry(data & 0x07);
175
176   if (!BIT(data, 5))
177      qs1000->set_irq(CLEAR_LINE);
178}
179
180
146181// GPIO
147182
148183static const UINT8 security_data[] = { 0x01, 0xC4, 0xFF, 0x22, 0xFF, 0xFF, 0xFF, 0xFF };
r26673r26674
363398   m_i2cmem->write_sda(state);
364399}
365400
366WRITE32_MEMBER(ghosteo_state::sound_w)
367{
368   if ((data >= 0x20) && (data <= 0x7F))
369   {
370      logerror( "sound_w: music %d\n", data - 0x20);
371   }
372   else if ((data >= 0x80) && (data <= 0xFF))
373   {
374      logerror( "sound_w: effect %d\n", data - 0x80);
375   }
376   else
377   {
378      logerror( "sound_w: unknown (%d)\n", data);
379   }
380}
381
382401READ32_MEMBER( ghosteo_state::touryuu_port_10000000_r )
383402{
384403   UINT32 port_g = m_bballoon_port[S3C2410_GPIO_PORT_G];
r26673r26674
400419   AM_RANGE(0x10000000, 0x10000003) AM_READ_PORT("10000000")
401420   AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000")
402421   AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000")
403   AM_RANGE(0x10300000, 0x10300003) AM_WRITE(sound_w)
422   AM_RANGE(0x10300000, 0x10300003) AM_WRITE(soundlatch_w)
404423   AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000)
405424ADDRESS_MAP_END
406425
r26673r26674
408427   AM_RANGE(0x10000000, 0x10000003) AM_READ(touryuu_port_10000000_r)
409428   AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000")
410429   AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000")
411   AM_RANGE(0x10300000, 0x10300003) AM_WRITE(sound_w)
430   AM_RANGE(0x10300000, 0x10300003) AM_WRITE(soundlatch_w)
412431   AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000)
413432ADDRESS_MAP_END
414433
r26673r26674
582601   return ret;
583602}
584603
604WRITE32_MEMBER(ghosteo_state::soundlatch_w)
605{
606   qs1000_device *qs1000 = space.machine().device<qs1000_device>("qs1000");
607
608   soundlatch_byte_w(space, 0, data);
609   qs1000->set_irq(ASSERT_LINE);
610
611   machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
612}
613
585614void ghosteo_state::machine_start()
586615{
587616   m_flash = (UINT8 *)memregion( "user1")->base();
617   
618   // Set up the QS1000 program ROM banking, taking care not to overlap the internal RAM
619   machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "bank");
620   membank("qs1000:bank")->configure_entries(0, 8, memregion("qs1000:cpu")->base()+0x100, 0x10000);
588621}
589622
590623void ghosteo_state::machine_reset()
r26673r26674
592625   m_maincpu->space(AS_PROGRAM).install_read_handler(0x4d000010, 0x4d000013,read32_delegate(FUNC(ghosteo_state::bballoon_speedup_r), this));
593626}
594627
628static QS1000_INTERFACE( qs1000_intf )
629{
630   /* External ROM */
631   true,
632
633   /* P1-P3 read handlers */
634   DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p1_r),
635   DEVCB_NULL,
636   DEVCB_NULL,
637
638   /* P1-P3 write handlers */
639   DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p1_w),
640   DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p2_w),
641   DEVCB_DRIVER_MEMBER(ghosteo_state, qs1000_p3_w)
642};
643
595644static MACHINE_CONFIG_START( ghosteo, ghosteo_state )
596645
597646   /* basic machine hardware */
r26673r26674
615664//  MCFG_I2CMEM_ADD("i2cmem", 0xA0, 0, 0x100, NULL)
616665
617666   /* sound hardware */
667   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
668   
669   MCFG_QS1000_ADD("qs1000", XTAL_24MHz, qs1000_intf)
670   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
671   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
618672MACHINE_CONFIG_END
619673
620674static MACHINE_CONFIG_DERIVED( bballoon, ghosteo )
r26673r26674
682736   ROM_LOAD( "flash.u1",     0x000000, 0x2000000, BAD_DUMP CRC(73285634) SHA1(4d0210c1bebdf3113a99978ffbcd77d6ee854168) ) // missing ECC data
683737
684738   // banked every 0x10000 bytes ?
685   ROM_REGION( 0x080000, "user2", 0 )
739   ROM_REGION( 0x080000, "qs1000:cpu", 0 )
686740   ROM_LOAD( "b2.u20",       0x000000, 0x080000, CRC(0a12334c) SHA1(535b5b34f28435517218100d70147d87809f485a) )
687741
688   ROM_REGION( 0x100000, "sfx", 0 ) /* QDSP samples (SFX) */
689   ROM_LOAD( "b1.u16",       0x000000, 0x100000, CRC(c42c1c85) SHA1(e1f49d556ffd6bc27142a7784c3bb8e37999857d) )
690
691   ROM_REGION( 0x080000, "wavetable", 0 ) /* QDSP wavetable rom */
692   ROM_LOAD( "qs1001a.u17",  0x000000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
742   ROM_REGION( 0x1000000, "qs1000", 0 )
743   ROM_LOAD( "b1.u16",       0x000000, 0x100000, CRC(c42c1c85) SHA1(e1f49d556ffd6bc27142a7784c3bb8e37999857d) ) /* QDSP samples (SFX) */
744   ROM_LOAD( "qs1001a.u17",  0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) ) /* QDSP wavetable rom */
693745ROM_END
694746
695747ROM_START( hapytour ) /* Same hardware: GHOST Ver1.1 2003.03.28 */
r26673r26674
697749   ROM_LOAD( "flash.u1",     0x000000, 0x2000000, BAD_DUMP CRC(49deb7f9) SHA1(708a27d7177cf6261a49ded975c2bbb6c2427742) ) // missing ECC data
698750
699751   // banked every 0x10000 bytes ?
700   ROM_REGION( 0x080000, "user2", 0 )
752   ROM_REGION( 0x080000, "qs1000:cpu", 0 )
701753   ROM_LOAD( "ht.u20",       0x000000, 0x080000, CRC(c0581fce) SHA1(dafce679002534ffabed249a92e6b83301b8312b) )
702754
703   ROM_REGION( 0x100000, "sfx", 0 ) /* QDSP samples (SFX) */
704   ROM_LOAD( "ht.u16",       0x000000, 0x100000, CRC(6a590a3a) SHA1(c1140f70c919661162334db66c6aa0ad656bfc47) )
705
706   ROM_REGION( 0x080000, "wavetable", 0 ) /* QDSP wavetable rom */
707   ROM_LOAD( "qs1001a.u17",  0x000000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
755   ROM_REGION( 0x1000000, "qs1000", 0 )
756   ROM_LOAD( "ht.u16",       0x000000, 0x100000, CRC(6a590a3a) SHA1(c1140f70c919661162334db66c6aa0ad656bfc47) ) /* QDSP samples (SFX) */
757   ROM_LOAD( "qs1001a.u17",  0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) ) /* QDSP wavetable rom */
708758ROM_END
709759
710760
r26673r26674
713763   ROM_LOAD( "u1.bin",     0x000000, 0x4200000, CRC(49b6856e) SHA1(639123d2fabac4e79c9315fb87f72b13f9ae8761) )
714764
715765   // banked every 0x10000 bytes ?
716   ROM_REGION( 0x080000, "user2", 0 )
766   ROM_REGION( 0x080000, "qs1000:cpu", 0 )
717767   ROM_LOAD( "4m.eeprom_c.s(bad1h).u20",       0x000000, 0x080000, CRC(f81a6530) SHA1(c7fa412102328d06823e73d7d07cadfc25db6d28) )
718768
719   ROM_REGION( 0x100000, "sfx", 0 ) /* QDSP samples (SFX) */
720   ROM_LOAD( "8m.eprom_c.s(f8b1h).u16",       0x000000, 0x100000, CRC(238a85ab) SHA1(ddd79429c0c1e67fcbca1e4ebded97ea46229f0b) )
721
722   ROM_REGION( 0x080000, "wavetable", 0 ) /* QDSP wavetable rom */
723   ROM_LOAD( "qs1001a.u17",  0x000000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) )
769   ROM_REGION( 0x1000000, "qs1000", 0 )
770   ROM_LOAD( "8m.eprom_c.s(f8b1h).u16",       0x000000, 0x100000, CRC(238a85ab) SHA1(ddd79429c0c1e67fcbca1e4ebded97ea46229f0b) ) /* QDSP samples (SFX) */
771   ROM_LOAD( "qs1001a.u17",  0x200000, 0x080000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) ) /* QDSP wavetable rom */
724772ROM_END
725773
726774DRIVER_INIT_MEMBER(ghosteo_state,bballoon)
r26673r26674
733781   m_rom_pagesize = 0x210;
734782}
735783
736GAME( 2003, bballoon, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "Eolith", "BnB Arcade", GAME_NO_SOUND )
737GAME( 2005, hapytour, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "GAV Company", "Happy Tour", GAME_NO_SOUND )
738GAME( 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
784GAME( 2003, bballoon, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "Eolith", "BnB Arcade", GAME_IMPERFECT_SOUND )
785GAME( 2005, hapytour, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "GAV Company", "Happy Tour", GAME_IMPERFECT_SOUND )
786GAME( 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

Previous 199869 Revisions Next


© 1997-2024 The MAME Team