Previous 199869 Revisions Next

r31339 Sunday 20th July, 2014 at 16:16:10 UTC by Quench
Playmark update:

Fix the hand modified PIC16C57 code for HotMind and Lucky Boom so they correctly handle the OKI banking and work on the real hardware. (nw)
[src/emu/cpu/pic16c5x]pic16c5x.c
[src/mame/drivers]playmark.c
[src/mame/includes]playmark.h

trunk/src/mame/drivers/playmark.c
r31338r31339
3535- World Beach Volley histogram functions don't work.
3636
3737
38Hot Mind is currently missing the sound MCU internal program dump.
39So for now we're using PIC16C57 program code from Big Twin with modifications
40to correct the music playback sequencing.
41
42Lucky Boom is currently missing the sound MCU internal program dump.
38HotMind and Lucky Boom are currently missing the sound MCU internal program dump.
4339So for now we're using PIC16C57 program code from Excelsior with modifications
4440to correct the music playback sequencing and also allow sound effect samples to
4541play on any of the three available sample channels. The fourth channel is reserved
r31338r31339
229225
230226WRITE8_MEMBER(playmark_state::playmark_snd_control_w)
231227{
232   /*  This port controls communications to and from the 68K, and the OKI
233       device.
228   /*  This port controls communications to and from the 68K and the OKI device.
234229
235230       bit legend
236231       7w  ???  (No read or writes to Port B)
r31338r31339
251246   }
252247}
253248
249WRITE8_MEMBER(playmark_state::hrdtimes_snd_control_w)
250{
251   /*  This port controls communications to and from the 68K and the OKI device. See playmark_snd_control_w above. OKI banking is also handled here. */
254252
253   if (m_old_oki_bank != (data & 3))
254   {
255//      logerror("PC$%03x Writing %02x to PortC (OKI bank select bits). Previous bank was %02x\n",space.device().safe_pcbase(),(data&3),m_old_oki_bank);
256
257      m_old_oki_bank = data & 3;
258
259      if ((m_old_oki_bank * 0x40000) < memregion("oki")->bytes())
260      {
261         m_oki->set_bank_base(0x40000 * m_old_oki_bank);
262      }
263   }
264
265   m_oki_control = data;
266
267   if ((data & 0x38) == 0x18)
268   {
269//      logerror("PC$%03x Writing %02x to OKI1, PortC=%02x, Code=%02x\n",space.device().safe_pcbase(),m_oki_command,m_oki_control,m_snd_command);
270      m_oki->write(space, 0, m_oki_command);
271   }
272}
273
274
255275READ8_MEMBER(playmark_state::PIC16C5X_T0_clk_r)
256276{
257277   return 0;
r31338r31339
353373   AM_RANGE(0x106000, 0x107fff) AM_RAM
354374   AM_RANGE(0x108000, 0x109fff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") // 64*64?
355375   AM_RANGE(0x10a000, 0x10bfff) AM_RAM
376   AM_RANGE(0x10c000, 0x10ffff) AM_RAM // Unused
356377   AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w)
357378   AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram")
358379   AM_RANGE(0x280000, 0x2807ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
359   AM_RANGE(0x280800, 0x280fff) AM_RAM // unused
380   AM_RANGE(0x280800, 0x280fff) AM_RAM // Unused
360381   AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM")
361382   AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1")
362383   AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2")
r31338r31339
416437   AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r)
417438ADDRESS_MAP_END
418439
440static ADDRESS_MAP_START( hrdtimes_sound_io_map, AS_IO, 8, playmark_state )
441   AM_RANGE(0x00, 0x00) AM_NOP      /* AM_WRITE(playmark_oki_banking_w)  Banking data output but not wired. Port 2 (Port C) is wired to the OKI banking instead */
442   AM_RANGE(0x01, 0x01) AM_READWRITE(playmark_snd_command_r, playmark_oki_w)
443   AM_RANGE(0x02, 0x02) AM_READWRITE(playmark_snd_flag_r, hrdtimes_snd_control_w)
444   AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r)
445ADDRESS_MAP_END
419446
447
420448static INPUT_PORTS_START( bigtwin )
421449   PORT_START("SYSTEM")
422450   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
r31338r31339
13521380
13531381   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
13541382   /* Program and Data Maps are internal to the MCU */
1355   MCFG_CPU_IO_MAP(playmark_sound_io_map)
1383   MCFG_CPU_IO_MAP(hrdtimes_sound_io_map)
13561384   MCFG_DEVICE_DISABLE()       /* Internal code is not dumped yet */
13571385
13581386   MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark)
r31338r31339
13891417
13901418   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
13911419   /* Program and Data Maps are internal to the MCU */
1392   MCFG_CPU_IO_MAP(playmark_sound_io_map)
1420   MCFG_CPU_IO_MAP(hrdtimes_sound_io_map)
13931421
13941422   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
13951423   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
r31338r31339
14311459
14321460   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
14331461   /* Program and Data Maps are internal to the MCU */
1434   MCFG_CPU_IO_MAP(playmark_sound_io_map)
1462   MCFG_CPU_IO_MAP(hrdtimes_sound_io_map)
14351463
14361464   MCFG_NVRAM_ADD_0FILL("nvram")
14371465
r31338r31339
17531781   ROM_LOAD16_BYTE( "32.u66",       0x00001, 0x80000, CRC(f2c6b382) SHA1(d73affed091a261c4bfe17f409657e0a46b6c163) )
17541782
17551783   ROM_REGION( 0x1000, "audiocpu", ROMREGION_ERASE00 ) /* sound (PIC16C57) */
1756   ROM_LOAD( "pic16c57",     0x0000, 0x1000, NO_DUMP )
1784   /* ROM will be copied here by the init code from "user1" */
17571785
1786   ROM_REGION( 0x3000, "user1", 0 )
1787   ROM_LOAD( "pic16c57.hex",     0x0000, 0x1000, NO_DUMP )
1788
17581789   ROM_REGION( 0x200000, "gfx1", 0 )
17591790   ROM_LOAD16_BYTE( "33.u36",       0x000000, 0x80000, CRC(d1239ce5) SHA1(8e966a39a47f66c5e904ec4357c751e896ed47cb) )
17601791   ROM_LOAD16_BYTE( "37.u42",       0x000001, 0x80000, CRC(aa692005) SHA1(1e274da358a25ceebdc71cb8f7228ef39348a895) )
r31338r31339
17671798   ROM_LOAD16_BYTE( "35.u84",       0x100000, 0x80000, CRC(7bde46ec) SHA1(1d26d268e1fc937e23ae7d93a1f86386b899a0c2) )
17681799   ROM_LOAD16_BYTE( "39.u83",       0x100001, 0x80000, CRC(a0bae586) SHA1(0b2bb0c5c51b2717b820f0176d5775df21652667) )
17691800
1770   ROM_REGION( 0x80000, "user2", 0 )   /* OKIM6295 samples */
1771   ROM_LOAD( "30.io13",      0x00000, 0x80000, CRC(fa5e50ae) SHA1(f3bd87c83fca9269cc2f19db1fbf55540c96f931) )
1772
17731801   /* $00000-$20000 stays the same in all sound banks, */
17741802   /* the second half of the bank is what gets switched */
1775   ROM_REGION( 0xc0000, "oki", 0 ) /* Samples */
1776   ROM_COPY( "user2", 0x000000, 0x000000, 0x020000)
1777   ROM_COPY( "user2", 0x020000, 0x020000, 0x020000)
1778   ROM_COPY( "user2", 0x000000, 0x040000, 0x020000)
1779   ROM_COPY( "user2", 0x040000, 0x060000, 0x020000)
1780   ROM_COPY( "user2", 0x000000, 0x080000, 0x020000)
1781   ROM_COPY( "user2", 0x060000, 0x0a0000, 0x020000)
1803   ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
1804   ROM_LOAD( "30.io13",      0x00000, 0x20000, CRC(fa5e50ae) SHA1(f3bd87c83fca9269cc2f19db1fbf55540c96f931) )
1805   ROM_CONTINUE(             0x60000, 0x20000 )
1806   ROM_CONTINUE(             0xa0000, 0x20000 )
1807   ROM_CONTINUE(             0xe0000, 0x20000 )
1808   ROM_COPY( "oki", 0x00000, 0x20000, 0x20000 )
1809   ROM_COPY( "oki", 0x00000, 0x40000, 0x20000 )
1810   ROM_COPY( "oki", 0x00000, 0x80000, 0x20000 )
1811   ROM_COPY( "oki", 0x00000, 0xc0000, 0x20000 )
17821812ROM_END
17831813
17841814/* Different revision of the PCB, uses larger gfx ROMs, however the content is the same */
r31338r31339
17891819   ROM_LOAD16_BYTE( "u66.bin",       0x00001, 0x80000, CRC(041ec30a) SHA1(00476ebd0a64cbd027be159cae7666d2df6d11ba) )
17901820
17911821   ROM_REGION( 0x1000, "audiocpu", ROMREGION_ERASE00 ) /* sound (PIC16C57) */
1792   ROM_LOAD( "pic16c57",     0x0000, 0x1000, NO_DUMP )
1822   /* ROM will be copied here by the init code from "user1" */
17931823
1824   ROM_REGION( 0x3000, "user1", 0 )
1825   ROM_LOAD( "pic16c57.hex",     0x0000, 0x1000, NO_DUMP )
1826
17941827   ROM_REGION( 0x200000, "gfx1", 0 )
17951828   ROM_LOAD( "fh1_playmark_ht", 0x000000, 0x100000, CRC(3cca02b0) SHA1(22c57f4192bf81dd26caa6adfb1c80665bdc305c) )
17961829   ROM_LOAD( "fh2_playmark_ht", 0x100000, 0x100000, CRC(ed699acd) SHA1(23cf1da4e7462f7434e946a80bdd6df0395b3059) )
r31338r31339
17991832   ROM_LOAD( "mh1_playmark_ht", 0x000000, 0x100000, CRC(927e5989) SHA1(b01444a3ff57cc2e10594e23c0343c956ed3ee32) )
18001833   ROM_LOAD( "mh2_playmark_ht", 0x100000, 0x100000, CRC(e76f001b) SHA1(217c06ca3618275c22e33cfe318ec6c970d4862c) )
18011834
1802   ROM_REGION( 0x80000, "user2", 0 )   /* OKIM6295 samples */
1803   ROM_LOAD( "io13.bin",      0x00000, 0x80000, CRC(fa5e50ae) SHA1(f3bd87c83fca9269cc2f19db1fbf55540c96f931) )
1804
18051835   /* $00000-$20000 stays the same in all sound banks, */
18061836   /* the second half of the bank is what gets switched */
1807   ROM_REGION( 0xc0000, "oki", 0 ) /* Samples */
1808   ROM_COPY( "user2", 0x000000, 0x000000, 0x020000)
1809   ROM_COPY( "user2", 0x020000, 0x020000, 0x020000)
1810   ROM_COPY( "user2", 0x000000, 0x040000, 0x020000)
1811   ROM_COPY( "user2", 0x040000, 0x060000, 0x020000)
1812   ROM_COPY( "user2", 0x000000, 0x080000, 0x020000)
1813   ROM_COPY( "user2", 0x060000, 0x0a0000, 0x020000)
1837   ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
1838   ROM_LOAD( "io13.bin",     0x00000, 0x20000, CRC(fa5e50ae) SHA1(f3bd87c83fca9269cc2f19db1fbf55540c96f931) )
1839   ROM_CONTINUE(             0x60000, 0x20000 )
1840   ROM_CONTINUE(             0xa0000, 0x20000 )
1841   ROM_CONTINUE(             0xe0000, 0x20000 )
1842   ROM_COPY( "oki", 0x00000, 0x20000, 0x20000 )
1843   ROM_COPY( "oki", 0x00000, 0x40000, 0x20000 )
1844   ROM_COPY( "oki", 0x00000, 0x80000, 0x20000 )
1845   ROM_COPY( "oki", 0x00000, 0xc0000, 0x20000 )
18141846ROM_END
18151847
18161848/*
r31338r31339
18661898
18671899   ROM_REGION( 0x3000, "user1", 0 )
18681900   ROM_LOAD( "hotmind_pic16c57-hs_io15.hex", 0x0000, 0x2d4c, BAD_DUMP CRC(f3300d13) SHA1(78892453c7374ea3d1606cdb81197cc466e2a8c5) )  // protected, contains upper nibble?
1869   ROM_LOAD( "hotmind_pic16c57.hex",         0x0000, 0x2d4c, BAD_DUMP CRC(9aa269bf) SHA1(4f8112199b2aa327d98e10b9da54443df7caa17a) )  // Using modified BigTwin PIC code to make it suite this game
1901   ROM_LOAD( "hotmind_pic16c57.hex",         0x0000, 0x2d4c, BAD_DUMP CRC(11957803) SHA1(c2f87659819bfcf3a5b43fbccf81988c43b9c9c8) )  // Using modified Excelsior PIC code to make it suite this game
18701902
18711903   ROM_REGION( 0x080000, "gfx1", 0 )
18721904   ROM_LOAD16_BYTE( "23.u36",       0x000000, 0x10000, CRC(ddcf60b9) SHA1(0c0fbc44131cb7d36c21bf5aead87b498c5684f5) )
r31338r31339
18841916   ROM_LOAD16_BYTE( "25.u84",       0x40000, 0x20000, CRC(c4fd4445) SHA1(ab0c5a328a312740595b5c92a1050527140518f3) )
18851917   ROM_LOAD16_BYTE( "29.u83",       0x40001, 0x20000, CRC(0bebfb53) SHA1(d4342f808141b70af98c370004153a31d120e2a4) )
18861918
1887   ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
1888   ROM_LOAD( "20.io13",      0x00000, 0x40000, CRC(0bf3a3e5) SHA1(2ae06f37a6bcd20bc5fbaa90d970aba2ebf3cf5a) )
1919   ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
1920   ROM_LOAD( "20.io13",      0x00000, 0x20000, CRC(0bf3a3e5) SHA1(2ae06f37a6bcd20bc5fbaa90d970aba2ebf3cf5a) )
1921   ROM_CONTINUE(             0x60000, 0x20000 )
1922   ROM_COPY( "oki", 0x00000, 0x20000, 0x20000 )
1923   ROM_COPY( "oki", 0x00000, 0x40000, 0x20000 )
18891924
18901925   ROM_REGION( 0x8000, "plds", 0 )      /* These were read protected */
18911926   ROM_LOAD( "palce16v8h-25-pc4_u58.jed",   0x0000, 0xb89,  BAD_DUMP CRC(ba88c1da) SHA1(9b55e96eee44a467bdfbf760137ccb2fb3afedf0) )
r31338r31339
19061941   ROM_LOAD( "luckyboom_pic16c57-hs_io15.bin",  0x00000, 0x2000, BAD_DUMP CRC(c4b9c78e) SHA1(e85766383b22a62f19bf272d86d53c7fb1eb5ac4) ) // protected, contains upper nibble?
19071942
19081943   ROM_REGION( 0x3000, "user1", 0 )
1909   ROM_LOAD( "luckyboom_pic16c57.hex", 0x0000, 0x2d4c, BAD_DUMP CRC(01a317e9) SHA1(5352b31f346c84fd7f9deca6ab56efdfb4d93daa) )  // Using modified Excelsior PIC code to make it suite this game
1944   ROM_LOAD( "luckyboom_pic16c57.hex", 0x0000, 0x2d4c, BAD_DUMP CRC(5c4b5c39) SHA1(d24a097bb4a134406dd95d3ad5ed912f81a6a849) )  // Using modified Excelsior PIC code to make it suite this game
19101945
19111946   ROM_REGION( 0x080000, "gfx1", 0 )
19121947   ROM_LOAD16_BYTE( "23.u36",       0x000000, 0x10000, CRC(71840dd9) SHA1(9d0a75555dedb6fd28bb7c04b863f3ef5a1f8aac) )
r31338r31339
19241959   ROM_LOAD16_BYTE( "25.u84",       0x40000, 0x20000, CRC(e1ab5cf5) SHA1(f76d00537cfd6f09439e44071875bf021622fd07) )
19251960   ROM_LOAD16_BYTE( "29.u83",       0x40001, 0x20000, CRC(9572d2d4) SHA1(90d55b1f13dc93041160530e8c1ce8def6e02bcf) )
19261961
1927   ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
1928   ROM_LOAD( "20.io13",      0x00000, 0x40000, CRC(0d42c0a3) SHA1(1b1d4c7dcbb063e8bf133063770b753947d1a017) )
1962   ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
1963   ROM_LOAD( "20.io13",      0x00000, 0x20000, CRC(0d42c0a3) SHA1(1b1d4c7dcbb063e8bf133063770b753947d1a017) )
1964   ROM_CONTINUE(             0x60000, 0x20000 )
1965   ROM_COPY( "oki", 0x00000, 0x20000, 0x20000 )
1966   ROM_COPY( "oki", 0x00000, 0x40000, 0x20000 )
19291967ROM_END
19301968
19311969
trunk/src/mame/includes/playmark.h
r31338r31339
6565   DECLARE_READ8_MEMBER(playmark_snd_flag_r);
6666   DECLARE_WRITE8_MEMBER(playmark_oki_w);
6767   DECLARE_WRITE8_MEMBER(playmark_snd_control_w);
68   DECLARE_WRITE8_MEMBER(hrdtimes_snd_control_w);
6869   DECLARE_READ8_MEMBER(PIC16C5X_T0_clk_r);
6970   DECLARE_WRITE16_MEMBER(wbeachvl_txvideoram_w);
7071   DECLARE_WRITE16_MEMBER(wbeachvl_fgvideoram_w);
trunk/src/emu/cpu/pic16c5x/pic16c5x.c
r31338r31339
840840   state_add( PIC16C5x_TRSB, "TRSB", m_TRISB).formatstr("%02X");
841841   state_add( PIC16C5x_TRSC, "TRSC", m_TRISC).formatstr("%02X");
842842   state_add( PIC16C5x_FSR,  "FSR",  m_debugger_temp).mask(0xff).callimport().callexport().formatstr("%02X");
843   state_add( PIC16C5x_PSCL, "PSCL:%c%02X", m_debugger_temp).callimport().formatstr("%3s");
843   state_add( PIC16C5x_PSCL, "PSCL", m_debugger_temp).callimport().formatstr("%3s");
844844
845845   state_add( STATE_GENPC, "GENPC", m_PC).noshow();
846846   state_add( STATE_GENFLAGS, "GENFLAGS", m_OPTION).formatstr("%13s").noshow();

Previous 199869 Revisions Next


© 1997-2024 The MAME Team