trunk/src/mame/drivers/playmark.c
| r31338 | r31339 | |
| 35 | 35 | - World Beach Volley histogram functions don't work. |
| 36 | 36 | |
| 37 | 37 | |
| 38 | | Hot Mind is currently missing the sound MCU internal program dump. |
| 39 | | So for now we're using PIC16C57 program code from Big Twin with modifications |
| 40 | | to correct the music playback sequencing. |
| 41 | | |
| 42 | | Lucky Boom is currently missing the sound MCU internal program dump. |
| 38 | HotMind and Lucky Boom are currently missing the sound MCU internal program dump. |
| 43 | 39 | So for now we're using PIC16C57 program code from Excelsior with modifications |
| 44 | 40 | to correct the music playback sequencing and also allow sound effect samples to |
| 45 | 41 | play on any of the three available sample channels. The fourth channel is reserved |
| r31338 | r31339 | |
| 229 | 225 | |
| 230 | 226 | WRITE8_MEMBER(playmark_state::playmark_snd_control_w) |
| 231 | 227 | { |
| 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. |
| 234 | 229 | |
| 235 | 230 | bit legend |
| 236 | 231 | 7w ??? (No read or writes to Port B) |
| r31338 | r31339 | |
| 251 | 246 | } |
| 252 | 247 | } |
| 253 | 248 | |
| 249 | WRITE8_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. */ |
| 254 | 252 | |
| 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 | |
| 255 | 275 | READ8_MEMBER(playmark_state::PIC16C5X_T0_clk_r) |
| 256 | 276 | { |
| 257 | 277 | return 0; |
| r31338 | r31339 | |
| 353 | 373 | AM_RANGE(0x106000, 0x107fff) AM_RAM |
| 354 | 374 | AM_RANGE(0x108000, 0x109fff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") // 64*64? |
| 355 | 375 | AM_RANGE(0x10a000, 0x10bfff) AM_RAM |
| 376 | AM_RANGE(0x10c000, 0x10ffff) AM_RAM // Unused |
| 356 | 377 | AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w) |
| 357 | 378 | AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") |
| 358 | 379 | 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 |
| 360 | 381 | AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM") |
| 361 | 382 | AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1") |
| 362 | 383 | AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2") |
| r31338 | r31339 | |
| 416 | 437 | AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r) |
| 417 | 438 | ADDRESS_MAP_END |
| 418 | 439 | |
| 440 | static 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) |
| 445 | ADDRESS_MAP_END |
| 419 | 446 | |
| 447 | |
| 420 | 448 | static INPUT_PORTS_START( bigtwin ) |
| 421 | 449 | PORT_START("SYSTEM") |
| 422 | 450 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r31338 | r31339 | |
| 1352 | 1380 | |
| 1353 | 1381 | MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2) /* verified on pcb */ |
| 1354 | 1382 | /* 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) |
| 1356 | 1384 | MCFG_DEVICE_DISABLE() /* Internal code is not dumped yet */ |
| 1357 | 1385 | |
| 1358 | 1386 | MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark) |
| r31338 | r31339 | |
| 1389 | 1417 | |
| 1390 | 1418 | MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2) /* verified on pcb */ |
| 1391 | 1419 | /* 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) |
| 1393 | 1421 | |
| 1394 | 1422 | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 1395 | 1423 | MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) |
| r31338 | r31339 | |
| 1431 | 1459 | |
| 1432 | 1460 | MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2) /* verified on pcb */ |
| 1433 | 1461 | /* 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) |
| 1435 | 1463 | |
| 1436 | 1464 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 1437 | 1465 | |
| r31338 | r31339 | |
| 1753 | 1781 | ROM_LOAD16_BYTE( "32.u66", 0x00001, 0x80000, CRC(f2c6b382) SHA1(d73affed091a261c4bfe17f409657e0a46b6c163) ) |
| 1754 | 1782 | |
| 1755 | 1783 | 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" */ |
| 1757 | 1785 | |
| 1786 | ROM_REGION( 0x3000, "user1", 0 ) |
| 1787 | ROM_LOAD( "pic16c57.hex", 0x0000, 0x1000, NO_DUMP ) |
| 1788 | |
| 1758 | 1789 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 1759 | 1790 | ROM_LOAD16_BYTE( "33.u36", 0x000000, 0x80000, CRC(d1239ce5) SHA1(8e966a39a47f66c5e904ec4357c751e896ed47cb) ) |
| 1760 | 1791 | ROM_LOAD16_BYTE( "37.u42", 0x000001, 0x80000, CRC(aa692005) SHA1(1e274da358a25ceebdc71cb8f7228ef39348a895) ) |
| r31338 | r31339 | |
| 1767 | 1798 | ROM_LOAD16_BYTE( "35.u84", 0x100000, 0x80000, CRC(7bde46ec) SHA1(1d26d268e1fc937e23ae7d93a1f86386b899a0c2) ) |
| 1768 | 1799 | ROM_LOAD16_BYTE( "39.u83", 0x100001, 0x80000, CRC(a0bae586) SHA1(0b2bb0c5c51b2717b820f0176d5775df21652667) ) |
| 1769 | 1800 | |
| 1770 | | ROM_REGION( 0x80000, "user2", 0 ) /* OKIM6295 samples */ |
| 1771 | | ROM_LOAD( "30.io13", 0x00000, 0x80000, CRC(fa5e50ae) SHA1(f3bd87c83fca9269cc2f19db1fbf55540c96f931) ) |
| 1772 | | |
| 1773 | 1801 | /* $00000-$20000 stays the same in all sound banks, */ |
| 1774 | 1802 | /* 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 ) |
| 1782 | 1812 | ROM_END |
| 1783 | 1813 | |
| 1784 | 1814 | /* Different revision of the PCB, uses larger gfx ROMs, however the content is the same */ |
| r31338 | r31339 | |
| 1789 | 1819 | ROM_LOAD16_BYTE( "u66.bin", 0x00001, 0x80000, CRC(041ec30a) SHA1(00476ebd0a64cbd027be159cae7666d2df6d11ba) ) |
| 1790 | 1820 | |
| 1791 | 1821 | 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" */ |
| 1793 | 1823 | |
| 1824 | ROM_REGION( 0x3000, "user1", 0 ) |
| 1825 | ROM_LOAD( "pic16c57.hex", 0x0000, 0x1000, NO_DUMP ) |
| 1826 | |
| 1794 | 1827 | ROM_REGION( 0x200000, "gfx1", 0 ) |
| 1795 | 1828 | ROM_LOAD( "fh1_playmark_ht", 0x000000, 0x100000, CRC(3cca02b0) SHA1(22c57f4192bf81dd26caa6adfb1c80665bdc305c) ) |
| 1796 | 1829 | ROM_LOAD( "fh2_playmark_ht", 0x100000, 0x100000, CRC(ed699acd) SHA1(23cf1da4e7462f7434e946a80bdd6df0395b3059) ) |
| r31338 | r31339 | |
| 1799 | 1832 | ROM_LOAD( "mh1_playmark_ht", 0x000000, 0x100000, CRC(927e5989) SHA1(b01444a3ff57cc2e10594e23c0343c956ed3ee32) ) |
| 1800 | 1833 | ROM_LOAD( "mh2_playmark_ht", 0x100000, 0x100000, CRC(e76f001b) SHA1(217c06ca3618275c22e33cfe318ec6c970d4862c) ) |
| 1801 | 1834 | |
| 1802 | | ROM_REGION( 0x80000, "user2", 0 ) /* OKIM6295 samples */ |
| 1803 | | ROM_LOAD( "io13.bin", 0x00000, 0x80000, CRC(fa5e50ae) SHA1(f3bd87c83fca9269cc2f19db1fbf55540c96f931) ) |
| 1804 | | |
| 1805 | 1835 | /* $00000-$20000 stays the same in all sound banks, */ |
| 1806 | 1836 | /* 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 ) |
| 1814 | 1846 | ROM_END |
| 1815 | 1847 | |
| 1816 | 1848 | /* |
| r31338 | r31339 | |
| 1866 | 1898 | |
| 1867 | 1899 | ROM_REGION( 0x3000, "user1", 0 ) |
| 1868 | 1900 | 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 |
| 1870 | 1902 | |
| 1871 | 1903 | ROM_REGION( 0x080000, "gfx1", 0 ) |
| 1872 | 1904 | ROM_LOAD16_BYTE( "23.u36", 0x000000, 0x10000, CRC(ddcf60b9) SHA1(0c0fbc44131cb7d36c21bf5aead87b498c5684f5) ) |
| r31338 | r31339 | |
| 1884 | 1916 | ROM_LOAD16_BYTE( "25.u84", 0x40000, 0x20000, CRC(c4fd4445) SHA1(ab0c5a328a312740595b5c92a1050527140518f3) ) |
| 1885 | 1917 | ROM_LOAD16_BYTE( "29.u83", 0x40001, 0x20000, CRC(0bebfb53) SHA1(d4342f808141b70af98c370004153a31d120e2a4) ) |
| 1886 | 1918 | |
| 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 ) |
| 1889 | 1924 | |
| 1890 | 1925 | ROM_REGION( 0x8000, "plds", 0 ) /* These were read protected */ |
| 1891 | 1926 | ROM_LOAD( "palce16v8h-25-pc4_u58.jed", 0x0000, 0xb89, BAD_DUMP CRC(ba88c1da) SHA1(9b55e96eee44a467bdfbf760137ccb2fb3afedf0) ) |
| r31338 | r31339 | |
| 1906 | 1941 | ROM_LOAD( "luckyboom_pic16c57-hs_io15.bin", 0x00000, 0x2000, BAD_DUMP CRC(c4b9c78e) SHA1(e85766383b22a62f19bf272d86d53c7fb1eb5ac4) ) // protected, contains upper nibble? |
| 1907 | 1942 | |
| 1908 | 1943 | 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 |
| 1910 | 1945 | |
| 1911 | 1946 | ROM_REGION( 0x080000, "gfx1", 0 ) |
| 1912 | 1947 | ROM_LOAD16_BYTE( "23.u36", 0x000000, 0x10000, CRC(71840dd9) SHA1(9d0a75555dedb6fd28bb7c04b863f3ef5a1f8aac) ) |
| r31338 | r31339 | |
| 1924 | 1959 | ROM_LOAD16_BYTE( "25.u84", 0x40000, 0x20000, CRC(e1ab5cf5) SHA1(f76d00537cfd6f09439e44071875bf021622fd07) ) |
| 1925 | 1960 | ROM_LOAD16_BYTE( "29.u83", 0x40001, 0x20000, CRC(9572d2d4) SHA1(90d55b1f13dc93041160530e8c1ce8def6e02bcf) ) |
| 1926 | 1961 | |
| 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 ) |
| 1929 | 1967 | ROM_END |
| 1930 | 1968 | |
| 1931 | 1969 | |