trunk/src/mame/drivers/namcos22.c
| r24866 | r24867 | |
| 1131 | 1131 | */ |
| 1132 | 1132 | |
| 1133 | 1133 | #include "emu.h" |
| 1134 | | #include "cpu/m68000/m68000.h" |
| 1135 | 1134 | #include "includes/namcos22.h" |
| 1135 | #include "cpu/m68000/m68000.h" |
| 1136 | 1136 | #include "cpu/tms32025/tms32025.h" |
| 1137 | 1137 | #include "cpu/m37710/m37710.h" |
| 1138 | 1138 | #include "sound/c352.h" |
| 1139 | | #include "mcfglgcy.h" |
| 1140 | 1139 | |
| 1141 | 1140 | #define SS22_MASTER_CLOCK (XTAL_49_152MHz) /* info from Guru */ |
| 1142 | 1141 | |
| r24866 | r24867 | |
| 1550 | 1549 | } |
| 1551 | 1550 | |
| 1552 | 1551 | |
| 1553 | | WRITE32_MEMBER(namcos22_state::namcos22s_nvmem_w) |
| 1552 | WRITE8_MEMBER(namcos22_state::namcos22_nvmem_w) |
| 1554 | 1553 | { |
| 1555 | | mem_mask &= 0xff00ff00; // 8KB RAM over 16KB address &space |
| 1556 | | COMBINE_DATA(&m_nvmem[offset]); |
| 1554 | m_nvmem[offset] = data; |
| 1557 | 1555 | } |
| 1558 | 1556 | |
| 1557 | READ8_MEMBER(namcos22_state::namcos22_nvmem_r) |
| 1558 | { |
| 1559 | return m_nvmem[offset]; |
| 1560 | } |
| 1561 | |
| 1559 | 1562 | READ32_MEMBER(namcos22_state::namcos22_dspram_r) |
| 1560 | 1563 | { |
| 1561 | 1564 | return m_polygonram[offset] | 0xff000000; // only d0-23 are connected |
| r24866 | r24867 | |
| 1748 | 1751 | * Mounted position: CPU 9E |
| 1749 | 1752 | * Known chip type: HN58C65P-25 (8k x 8bit EEPROM) |
| 1750 | 1753 | */ |
| 1751 | | AM_RANGE(0x58000000, 0x58001fff) AM_RAM AM_SHARE("nvmem") |
| 1754 | AM_RANGE(0x58000000, 0x58001fff) AM_READWRITE8(namcos22_nvmem_r, namcos22_nvmem_w, 0xffffffff) |
| 1752 | 1755 | |
| 1753 | 1756 | /** |
| 1754 | 1757 | * C74 (Mitsubishi M37702 MCU) Shared RAM (0x60004000 - 0x6000bfff) |
| r24866 | r24867 | |
| 1862 | 1865 | AM_RANGE(0x420000, 0x42000f) AM_READ(namcos22_sci_r) AM_WRITEONLY /* C139 SCI registers */ |
| 1863 | 1866 | AM_RANGE(0x440000, 0x440003) AM_READWRITE16(namcos22_dipswitch_r, namcos22_cpuleds_w, 0xffffffff) |
| 1864 | 1867 | AM_RANGE(0x450008, 0x45000b) AM_READWRITE16(namcos22_portbit_r, namcos22_portbit_w, 0xffffffff) |
| 1865 | | AM_RANGE(0x460000, 0x463fff) AM_RAM_WRITE(namcos22s_nvmem_w) AM_SHARE("nvmem") |
| 1868 | AM_RANGE(0x460000, 0x463fff) AM_READWRITE8(namcos22_nvmem_r, namcos22_nvmem_w, 0xff00ff00) |
| 1866 | 1869 | AM_RANGE(0x700000, 0x70001f) AM_READWRITE8(namcos22_system_controller_r, namcos22s_system_controller_w, 0xffffffff) |
| 1867 | 1870 | AM_RANGE(0x800000, 0x800003) AM_WRITE(namcos22s_chipselect_w) |
| 1868 | 1871 | AM_RANGE(0x810000, 0x81000f) AM_RAM AM_SHARE("czattr") |
| r24866 | r24867 | |
| 3659 | 3662 | GFXDECODE_END |
| 3660 | 3663 | |
| 3661 | 3664 | |
| 3662 | | static NVRAM_HANDLER( namcos22 ) |
| 3663 | | { |
| 3664 | | namcos22_state *state = machine.driver_data<namcos22_state>(); |
| 3665 | | int i; |
| 3666 | | UINT8 data[4]; |
| 3667 | | if (read_or_write) |
| 3668 | | { |
| 3669 | | for (i = 0; i < state->m_nvmem.bytes() / 4; i++) |
| 3670 | | { |
| 3671 | | UINT32 dword = state->m_nvmem[i]; |
| 3672 | | data[0] = dword>>24; |
| 3673 | | data[1] = (dword&0x00ff0000)>>16; |
| 3674 | | data[2] = (dword&0x0000ff00)>>8; |
| 3675 | | data[3] = dword&0xff; |
| 3676 | | file->write(data, 4); |
| 3677 | | } |
| 3678 | | } |
| 3679 | | else |
| 3680 | | { |
| 3681 | | if (file) |
| 3682 | | { |
| 3683 | | for (i = 0; i < state->m_nvmem.bytes() / 4; i++) |
| 3684 | | { |
| 3685 | | file->read(data, 4); |
| 3686 | | state->m_nvmem[i] = (data[0]<<24)|(data[1]<<16)|(data[2]<<8)|data[3]; |
| 3687 | | } |
| 3688 | | } |
| 3689 | | else |
| 3690 | | { |
| 3691 | | memset(state->m_nvmem, 0x00, state->m_nvmem.bytes()); |
| 3692 | | if (machine.root_device().memregion("nvram")->bytes() == state->m_nvmem.bytes()) |
| 3693 | | { |
| 3694 | | UINT8* nvram = machine.root_device().memregion("nvram")->base(); |
| 3695 | | |
| 3696 | | for (i = 0; i < state->m_nvmem.bytes() / 4; i++) |
| 3697 | | { |
| 3698 | | state->m_nvmem[i] = (nvram[0+i*4]<<24)|(nvram[1+i*4]<<16)|(nvram[2+i*4]<<8)|nvram[3+i*4]; |
| 3699 | | } |
| 3700 | | } |
| 3701 | | } |
| 3702 | | } |
| 3703 | | } |
| 3704 | | |
| 3705 | 3665 | void namcos22_state::machine_reset() |
| 3706 | 3666 | { |
| 3707 | 3667 | m_master->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); |
| r24866 | r24867 | |
| 3748 | 3708 | |
| 3749 | 3709 | // MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) |
| 3750 | 3710 | |
| 3751 | | MCFG_NVRAM_HANDLER(namcos22) |
| 3711 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 3752 | 3712 | |
| 3753 | 3713 | /* video hardware */ |
| 3754 | 3714 | MCFG_SCREEN_ADD("screen", RASTER) |
| r24866 | r24867 | |
| 3799 | 3759 | // MCFG_QUANTUM_PERFECT_CPU("maincpu") |
| 3800 | 3760 | // MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) |
| 3801 | 3761 | |
| 3802 | | MCFG_NVRAM_HANDLER(namcos22) |
| 3762 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 3803 | 3763 | |
| 3804 | 3764 | /* video hardware */ |
| 3805 | 3765 | MCFG_SCREEN_ADD("screen", RASTER) |
| r24866 | r24867 | |
| 4838 | 4798 | ROM_LOAD( "cb1wavea.2l", 0x000000, 0x400000, CRC(b79a624d) SHA1(c0ee358a183ba6d0835731dbdd191b64718fde6e) ) |
| 4839 | 4799 | ROM_LOAD( "cb1waveb.1l", 0x800000, 0x200000, CRC(33bf08f6) SHA1(bf9d68b26a8158ea1abfe8428b7454cac25242c5) ) |
| 4840 | 4800 | |
| 4841 | | ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom |
| 4842 | | ROM_LOAD( "cybrcycc_defaults.nv", 0x0000, 0x4000, CRC(1ef95c25) SHA1(26b8bead9d62a420ee0ff770df83c4207a963065) ) |
| 4801 | ROM_REGION( 0x2000, "nvram", 0 ) // default eeprom |
| 4802 | ROM_LOAD( "cybrcycc_defaults.nv", 0x0000, 0x2000, CRC(57fbd7d3) SHA1(c93e0d7875f5e66a661aed757fb4a314fe2025c2) ) |
| 4843 | 4803 | ROM_END |
| 4844 | 4804 | |
| 4845 | 4805 | |
| r24866 | r24867 | |
| 4896 | 4856 | ROM_REGION( 0x1000000, "c352", 0 ) // Samples |
| 4897 | 4857 | ROM_LOAD( "ar1wavea.2l", 0, 0x200000, CRC(dbf64562) SHA1(454fd7d5b860f0e5557d8900393be95d6c992ad1) ) |
| 4898 | 4858 | |
| 4899 | | ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom |
| 4900 | | ROM_LOAD( "alpiner_defaults.nv", 0x0000, 0x4000, CRC(46c06e51) SHA1(df3a16fe3a0858b14c51d48539d9ab3eb3a213de) ) |
| 4859 | ROM_REGION( 0x2000, "nvram", 0 ) // default eeprom |
| 4860 | ROM_LOAD( "alpiner_defaults.nv", 0x0000, 0x2000, CRC(efbef3d8) SHA1(459035600655cd83780db6c59aba044981cdcdc4) ) |
| 4901 | 4861 | ROM_END |
| 4902 | 4862 | |
| 4903 | 4863 | ROM_START( alpinerc ) |
| r24866 | r24867 | |
| 4953 | 4913 | ROM_REGION( 0x1000000, "c352", 0 ) // Samples |
| 4954 | 4914 | ROM_LOAD( "ar1wavea.2l", 0, 0x200000, CRC(dbf64562) SHA1(454fd7d5b860f0e5557d8900393be95d6c992ad1) ) |
| 4955 | 4915 | |
| 4956 | | ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom |
| 4957 | | ROM_LOAD( "alpiner_defaults.nv", 0x0000, 0x4000, CRC(46c06e51) SHA1(df3a16fe3a0858b14c51d48539d9ab3eb3a213de) ) |
| 4916 | ROM_REGION( 0x2000, "nvram", 0 ) // default eeprom |
| 4917 | ROM_LOAD( "alpiner_defaults.nv", 0x0000, 0x2000, CRC(efbef3d8) SHA1(459035600655cd83780db6c59aba044981cdcdc4) ) |
| 4958 | 4918 | ROM_END |
| 4959 | 4919 | |
| 4960 | 4920 | |
| r24866 | r24867 | |
| 5009 | 4969 | ROM_LOAD( "ars1wavea.2l", 0x000000, 0x400000, CRC(f8d107e9) SHA1(5c418691f0b35403553f21f5570eda8bbb66890f) ) |
| 5010 | 4970 | ROM_LOAD( "ars2waveb.1l", 0x800000, 0x400000, CRC(deab4ad1) SHA1(580ad88d516280baaf6cc92b2e07cdc0cfc486f3) ) |
| 5011 | 4971 | |
| 5012 | | ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom |
| 5013 | | ROM_LOAD( "alpiner2_defaults.nv", 0x0000, 0x4000, CRC(1d660b8b) SHA1(e6047ad2d61fa55e8f054813f5c705fd7d145a73) ) |
| 4972 | ROM_REGION( 0x2000, "nvram", 0 ) // default eeprom |
| 4973 | ROM_LOAD( "alpiner2_defaults.nv", 0x0000, 0x2000, CRC(1f21154e) SHA1(a141d7d235955d042c60d013a89619d35c02308f) ) |
| 5014 | 4974 | ROM_END |
| 5015 | 4975 | |
| 5016 | 4976 | ROM_START( alpinr2a ) |
| r24866 | r24867 | |
| 5064 | 5024 | ROM_LOAD( "ars1wavea.2l", 0x000000, 0x400000, CRC(f8d107e9) SHA1(5c418691f0b35403553f21f5570eda8bbb66890f) ) |
| 5065 | 5025 | ROM_LOAD( "ars2waveb.1l", 0x800000, 0x400000, CRC(deab4ad1) SHA1(580ad88d516280baaf6cc92b2e07cdc0cfc486f3) ) |
| 5066 | 5026 | |
| 5067 | | ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom |
| 5068 | | ROM_LOAD( "alpiner2_defaults.nv", 0x0000, 0x4000, CRC(1d660b8b) SHA1(e6047ad2d61fa55e8f054813f5c705fd7d145a73) ) |
| 5027 | ROM_REGION( 0x2000, "nvram", 0 ) // default eeprom |
| 5028 | ROM_LOAD( "alpiner2_defaults.nv", 0x0000, 0x2000, CRC(1f21154e) SHA1(a141d7d235955d042c60d013a89619d35c02308f) ) |
| 5069 | 5029 | ROM_END |
| 5070 | 5030 | |
| 5071 | 5031 | |
| r24866 | r24867 | |
| 5110 | 5070 | ROM_REGION( 0x1000000, "c352", 0 ) /* sound samples */ |
| 5111 | 5071 | ROM_LOAD( "af1wavea.2l", 0x000000, 0x400000, CRC(28cca494) SHA1(4ff87ab85fd17bf8dbee5b03d99cc5c31dd6349a) ) |
| 5112 | 5072 | |
| 5113 | | ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom |
| 5114 | | ROM_LOAD( "alpinesa_defaults.nv", 0x0000, 0x4000, CRC(9744207c) SHA1(bbd34ee138c116d281c718f14740e2883a5cdf49) ) |
| 5073 | ROM_REGION( 0x2000, "nvram", 0 ) // default eeprom |
| 5074 | ROM_LOAD( "alpinesa_defaults.nv", 0x0000, 0x2000, CRC(d9e74daa) SHA1(aa2ddec61d8e9ae69726bab8ed5701e4c41b833b) ) |
| 5115 | 5075 | ROM_END |
| 5116 | 5076 | |
| 5117 | 5077 | |
| r24866 | r24867 | |
| 5273 | 5233 | ROM_REGION( 0x1000000, "c352", 0 ) // Samples |
| 5274 | 5234 | ROM_LOAD( "tw1wavea.2l", 0x000000, 0x400000, CRC(ebce6366) SHA1(44ebe90ff3c7af5bebbf1baba3b7a2b1863daebb) ) |
| 5275 | 5235 | |
| 5276 | | ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom |
| 5277 | | ROM_LOAD( "tokyowar_defaults.nv", 0x0000, 0x4000, CRC(a1fe05e4) SHA1(39a20b35394a43e12c66a6c0f5ecb204148c58de) ) |
| 5236 | ROM_REGION( 0x2000, "nvram", 0 ) // default eeprom |
| 5237 | ROM_LOAD( "tokyowar_defaults.nv", 0x0000, 0x2000, CRC(e8bd7d09) SHA1(7e59017b9d5eb78984b4f177b50a4727ad72a623) ) |
| 5278 | 5238 | ROM_END |
| 5279 | 5239 | |
| 5280 | 5240 | |
| r24866 | r24867 | |
| 5380 | 5340 | ROM_LOAD( "aj1wavea.2l", 0x000000, 0x400000, CRC(8c72ea59) SHA1(3ae8dbd8baae08f1daab2b218932ba9d9451231d) ) |
| 5381 | 5341 | ROM_LOAD( "aj1waveb.1l", 0x800000, 0x400000, CRC(ab5a457f) SHA1(c34531fd574eb0c3e78fc31a9af8658df3446adc) ) |
| 5382 | 5342 | |
| 5383 | | ROM_REGION( 0x4000, "nvram", 0 ) // default eeprom |
| 5384 | | ROM_LOAD( "aquajet_defaults.nv", 0x0000, 0x4000, CRC(7d03893c) SHA1(f75ca5d996a94da4136ed0a4f0f4c869f1412e38) ) |
| 5343 | ROM_REGION( 0x2000, "nvram", 0 ) // default eeprom |
| 5344 | ROM_LOAD( "aquajet_defaults.nv", 0x0000, 0x2000, CRC(a00b3e44) SHA1(6bdbb46f4176314b61bd5063ecc968189212cb4c) ) |
| 5385 | 5345 | ROM_END |
| 5386 | 5346 | |
| 5387 | 5347 | |
| r24866 | r24867 | |
| 5448 | 5408 | ROM_REGION( 0x1000000, "c352", 0 ) /* sound samples */ |
| 5449 | 5409 | ROM_LOAD( "am1wavea.2l", 0x000000, 0x400000, CRC(48f8c20c) SHA1(48b4fbcb7e9dbbb70a542ef7cb7ee0e46fad23fc) ) |
| 5450 | 5410 | ROM_LOAD( "am1waveb.1l", 0x800000, 0x400000, CRC(fd8e7384) SHA1(91e53ab0293f81f8357645fd319249abc128b78e) ) |
| 5451 | | |
| 5452 | | ROM_REGION( 0x4000, "nvram", ROMREGION_ERASE00 ) // default eeprom |
| 5453 | 5411 | ROM_END |
| 5454 | 5412 | |
| 5455 | 5413 | |
| r24866 | r24867 | |
| 5522 | 5480 | |
| 5523 | 5481 | void namcos22_state::namcos22_init(int game_type) |
| 5524 | 5482 | { |
| 5483 | m_nvmem = auto_alloc_array_clear(machine(), UINT8, 0x2000); |
| 5484 | m_nvram->set_base(m_nvmem, 0x2000); |
| 5485 | |
| 5525 | 5486 | m_gametype = game_type; |
| 5526 | 5487 | |
| 5527 | 5488 | m_keycus_id = 0; |
| r24866 | r24867 | |
| 5620 | 5581 | UINT32 *ROM = (UINT32 *)memregion("maincpu")->base(); |
| 5621 | 5582 | |
| 5622 | 5583 | /* patch out strange routine (uninitialized-eprom related?) */ |
| 5623 | | ROM[0x1992C/4] = 0x4E754E75; |
| 5584 | ROM[0x1992C/4] = 0x4e754e75; |
| 5624 | 5585 | |
| 5625 | 5586 | /** |
| 5626 | 5587 | * The dipswitch reading routine in Prop Cycle polls the |