trunk/src/mame/drivers/mitchell.c
| r18053 | r18054 | |
| 92 | 92 | "0111" /* erase command */ |
| 93 | 93 | }; |
| 94 | 94 | |
| 95 | | static NVRAM_HANDLER( mitchell ) |
| 96 | | { |
| 97 | | mitchell_state *state = machine.driver_data<mitchell_state>(); |
| 98 | | if (read_or_write) |
| 99 | | { |
| 100 | | if (state->m_nvram_size) /* Super Pang, Block Block */ |
| 101 | | file->write(state->m_nvram,state->m_nvram_size); /* NVRAM */ |
| 102 | | } |
| 103 | | else |
| 104 | | { |
| 105 | | if (file) |
| 106 | | { |
| 107 | | if (state->m_nvram_size) /* Super Pang, Block Block */ |
| 108 | | file->read(state->m_nvram,state->m_nvram_size); /* NVRAM */ |
| 109 | | } |
| 110 | | } |
| 111 | | } |
| 112 | | |
| 113 | 95 | READ8_MEMBER(mitchell_state::pang_port5_r) |
| 114 | 96 | { |
| 115 | 97 | |
| r18053 | r18054 | |
| 1157 | 1139 | MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) |
| 1158 | 1140 | MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) |
| 1159 | 1141 | |
| 1160 | | MCFG_NVRAM_HANDLER(mitchell) |
| 1161 | 1142 | MCFG_EEPROM_ADD("eeprom", eeprom_intf) |
| 1162 | 1143 | |
| 1163 | 1144 | /* video hardware */ |
| r18053 | r18054 | |
| 1183 | 1164 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 1184 | 1165 | MACHINE_CONFIG_END |
| 1185 | 1166 | |
| 1167 | static MACHINE_CONFIG_DERIVED( pangnv, pang ) |
| 1168 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 1169 | MACHINE_CONFIG_END |
| 1170 | |
| 1171 | |
| 1186 | 1172 | static const gfx_layout blcharlayout = |
| 1187 | 1173 | { |
| 1188 | 1174 | 8,8, /* 8*8 characters */ |
| r18053 | r18054 | |
| 1220 | 1206 | }; |
| 1221 | 1207 | |
| 1222 | 1208 | |
| 1223 | | static MACHINE_CONFIG_DERIVED( spangbl, pang ) |
| 1209 | static MACHINE_CONFIG_DERIVED( spangbl, pangnv ) |
| 1224 | 1210 | |
| 1225 | 1211 | MCFG_CPU_MODIFY("maincpu") |
| 1226 | 1212 | MCFG_CPU_PROGRAM_MAP(spangbl_map) |
| r18053 | r18054 | |
| 1289 | 1275 | MCFG_CPU_IO_MAP(mitchell_io_map) |
| 1290 | 1276 | MCFG_TIMER_ADD_SCANLINE("scantimer", mitchell_irq, "screen", 0, 1) /* ??? one extra irq seems to be needed for music (see input5_r) */ |
| 1291 | 1277 | |
| 1292 | | MCFG_NVRAM_HANDLER(mitchell) |
| 1293 | 1278 | MCFG_EEPROM_ADD("eeprom", eeprom_intf) |
| 1294 | 1279 | |
| 1295 | 1280 | /* video hardware */ |
| r18053 | r18054 | |
| 1341 | 1326 | MCFG_CPU_IO_MAP(mitchell_io_map) |
| 1342 | 1327 | MCFG_TIMER_ADD_SCANLINE("scantimer", mitchell_irq, "screen", 0, 1) /* ??? one extra irq seems to be needed for music (see input5_r) */ |
| 1343 | 1328 | |
| 1344 | | MCFG_NVRAM_HANDLER(mitchell) |
| 1345 | 1329 | MCFG_EEPROM_ADD("eeprom", eeprom_intf) |
| 1346 | 1330 | |
| 1347 | 1331 | /* video hardware */ |
| r18053 | r18054 | |
| 2119 | 2103 | DRIVER_INIT_MEMBER(mitchell_state,dokaben) |
| 2120 | 2104 | { |
| 2121 | 2105 | m_input_type = 0; |
| 2122 | | m_nvram_size = 0; |
| 2123 | 2106 | mgakuen2_decode(machine()); |
| 2124 | 2107 | configure_banks(machine()); |
| 2125 | 2108 | } |
| 2126 | 2109 | DRIVER_INIT_MEMBER(mitchell_state,pang) |
| 2127 | 2110 | { |
| 2128 | 2111 | m_input_type = 0; |
| 2129 | | m_nvram_size = 0; |
| 2130 | 2112 | pang_decode(machine()); |
| 2131 | 2113 | configure_banks(machine()); |
| 2132 | 2114 | } |
| 2133 | 2115 | DRIVER_INIT_MEMBER(mitchell_state,pangb) |
| 2134 | 2116 | { |
| 2135 | 2117 | m_input_type = 0; |
| 2136 | | m_nvram_size = 0; |
| 2137 | 2118 | bootleg_decode(machine()); |
| 2138 | 2119 | configure_banks(machine()); |
| 2120 | if (m_nvram != NULL) |
| 2121 | m_nvram->set_base(&m_dummy_nvram, sizeof(m_dummy_nvram)); /* for pangba */ |
| 2139 | 2122 | } |
| 2140 | 2123 | DRIVER_INIT_MEMBER(mitchell_state,cworld) |
| 2141 | 2124 | { |
| 2142 | 2125 | m_input_type = 0; |
| 2143 | | m_nvram_size = 0; |
| 2144 | 2126 | cworld_decode(machine()); |
| 2145 | 2127 | configure_banks(machine()); |
| 2146 | 2128 | } |
| 2147 | 2129 | DRIVER_INIT_MEMBER(mitchell_state,hatena) |
| 2148 | 2130 | { |
| 2149 | 2131 | m_input_type = 0; |
| 2150 | | m_nvram_size = 0; |
| 2151 | 2132 | hatena_decode(machine()); |
| 2152 | 2133 | configure_banks(machine()); |
| 2153 | 2134 | } |
| 2154 | 2135 | DRIVER_INIT_MEMBER(mitchell_state,spang) |
| 2155 | 2136 | { |
| 2156 | 2137 | m_input_type = 3; |
| 2157 | | m_nvram_size = 0x80; |
| 2158 | | m_nvram = &memregion("maincpu")->base()[0xe000]; /* NVRAM */ |
| 2138 | m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80); /* NVRAM */ |
| 2159 | 2139 | spang_decode(machine()); |
| 2160 | 2140 | configure_banks(machine()); |
| 2161 | 2141 | } |
| r18053 | r18054 | |
| 2163 | 2143 | DRIVER_INIT_MEMBER(mitchell_state,spangbl) |
| 2164 | 2144 | { |
| 2165 | 2145 | m_input_type = 3; |
| 2166 | | m_nvram_size = 0x80; |
| 2167 | | m_nvram = &memregion("maincpu")->base()[0xe000]; /* NVRAM */ |
| 2146 | m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80); /* NVRAM */ |
| 2168 | 2147 | bootleg_decode(machine()); |
| 2169 | 2148 | configure_banks(machine()); |
| 2170 | 2149 | } |
| r18053 | r18054 | |
| 2172 | 2151 | DRIVER_INIT_MEMBER(mitchell_state,spangj) |
| 2173 | 2152 | { |
| 2174 | 2153 | m_input_type = 3; |
| 2175 | | m_nvram_size = 0x80; |
| 2176 | | m_nvram = &memregion("maincpu")->base()[0xe000]; /* NVRAM */ |
| 2154 | m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80); /* NVRAM */ |
| 2177 | 2155 | spangj_decode(machine()); |
| 2178 | 2156 | configure_banks(machine()); |
| 2179 | 2157 | } |
| 2180 | 2158 | DRIVER_INIT_MEMBER(mitchell_state,sbbros) |
| 2181 | 2159 | { |
| 2182 | 2160 | m_input_type = 3; |
| 2183 | | m_nvram_size = 0x80; |
| 2184 | | m_nvram = &memregion("maincpu")->base()[0xe000]; /* NVRAM */ |
| 2161 | m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80); /* NVRAM */ |
| 2185 | 2162 | sbbros_decode(machine()); |
| 2186 | 2163 | configure_banks(machine()); |
| 2187 | 2164 | } |
| 2188 | 2165 | DRIVER_INIT_MEMBER(mitchell_state,qtono1) |
| 2189 | 2166 | { |
| 2190 | 2167 | m_input_type = 0; |
| 2191 | | m_nvram_size = 0; |
| 2192 | 2168 | qtono1_decode(machine()); |
| 2193 | 2169 | configure_banks(machine()); |
| 2194 | 2170 | } |
| 2195 | 2171 | DRIVER_INIT_MEMBER(mitchell_state,qsangoku) |
| 2196 | 2172 | { |
| 2197 | 2173 | m_input_type = 0; |
| 2198 | | m_nvram_size = 0; |
| 2199 | 2174 | qsangoku_decode(machine()); |
| 2200 | 2175 | configure_banks(machine()); |
| 2201 | 2176 | } |
| r18053 | r18054 | |
| 2209 | 2184 | DRIVER_INIT_MEMBER(mitchell_state,mgakuen2) |
| 2210 | 2185 | { |
| 2211 | 2186 | m_input_type = 1; |
| 2212 | | m_nvram_size = 0; |
| 2213 | 2187 | mgakuen2_decode(machine()); |
| 2214 | 2188 | configure_banks(machine()); |
| 2215 | 2189 | } |
| 2216 | 2190 | DRIVER_INIT_MEMBER(mitchell_state,pkladies) |
| 2217 | 2191 | { |
| 2218 | 2192 | m_input_type = 1; |
| 2219 | | m_nvram_size = 0; |
| 2220 | 2193 | mgakuen2_decode(machine()); |
| 2221 | 2194 | configure_banks(machine()); |
| 2222 | 2195 | } |
| 2223 | 2196 | DRIVER_INIT_MEMBER(mitchell_state,pkladiesbl) |
| 2224 | 2197 | { |
| 2225 | 2198 | m_input_type = 1; |
| 2226 | | m_nvram_size = 0; |
| 2227 | 2199 | bootleg_decode(machine()); |
| 2228 | 2200 | configure_banks(machine()); |
| 2229 | 2201 | } |
| 2230 | 2202 | DRIVER_INIT_MEMBER(mitchell_state,marukin) |
| 2231 | 2203 | { |
| 2232 | 2204 | m_input_type = 1; |
| 2233 | | m_nvram_size = 0; |
| 2234 | 2205 | marukin_decode(machine()); |
| 2235 | 2206 | configure_banks(machine()); |
| 2236 | 2207 | } |
| 2237 | 2208 | DRIVER_INIT_MEMBER(mitchell_state,block) |
| 2238 | 2209 | { |
| 2239 | 2210 | m_input_type = 2; |
| 2240 | | m_nvram_size = 0x80; |
| 2241 | | m_nvram = &memregion("maincpu")->base()[0xff80]; /* NVRAM */ |
| 2211 | m_nvram->set_base(&memregion("maincpu")->base()[0xff80], 0x80); /* NVRAM */ |
| 2242 | 2212 | block_decode(machine()); |
| 2243 | 2213 | configure_banks(machine()); |
| 2244 | 2214 | } |
| 2245 | 2215 | DRIVER_INIT_MEMBER(mitchell_state,blockbl) |
| 2246 | 2216 | { |
| 2247 | 2217 | m_input_type = 2; |
| 2248 | | m_nvram_size = 0x80; |
| 2249 | | m_nvram = &memregion("maincpu")->base()[0xff80]; /* NVRAM */ |
| 2218 | m_nvram->set_base(&memregion("maincpu")->base()[0xff80], 0x80); /* NVRAM */ |
| 2250 | 2219 | bootleg_decode(machine()); |
| 2251 | 2220 | configure_banks(machine()); |
| 2252 | 2221 | } |
| r18053 | r18054 | |
| 2321 | 2290 | GAME( 1989, pompingw, pang, pang, pang, mitchell_state, pang, ROT0, "Mitchell", "Pomping World (Japan)", GAME_SUPPORTS_SAVE ) |
| 2322 | 2291 | GAME( 1989, cworld, 0, pang, qtono1, mitchell_state, cworld, ROT0, "Capcom", "Capcom World (Japan)", GAME_SUPPORTS_SAVE ) |
| 2323 | 2292 | GAME( 1990, hatena, 0, pang, qtono1, mitchell_state, hatena, ROT0, "Capcom", "Adventure Quiz 2 - Hatena? no Daibouken (Japan 900228)", GAME_SUPPORTS_SAVE ) |
| 2324 | | GAME( 1990, spang, 0, pang, pang, mitchell_state, spang, ROT0, "Mitchell", "Super Pang (World 900914)", GAME_SUPPORTS_SAVE ) |
| 2325 | | GAME( 1990, spangj, spang, pang, pang, mitchell_state, spangj, ROT0, "Mitchell", "Super Pang (Japan 901023)", GAME_SUPPORTS_SAVE ) |
| 2293 | GAME( 1990, spang, 0, pangnv, pang, mitchell_state, spang, ROT0, "Mitchell", "Super Pang (World 900914)", GAME_SUPPORTS_SAVE ) |
| 2294 | GAME( 1990, spangj, spang, pangnv, pang, mitchell_state, spangj, ROT0, "Mitchell", "Super Pang (Japan 901023)", GAME_SUPPORTS_SAVE ) |
| 2326 | 2295 | GAME( 1990, spangbl, spang, spangbl, spangbl, mitchell_state, spangbl, ROT0, "bootleg", "Super Pang (World 900914, bootleg)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // different sound hardware |
| 2327 | 2296 | GAME( 1994, mstworld, 0, mstworld,mstworld, mitchell_state, mstworld, ROT0, "bootleg (TCH)", "Monsters World (bootleg of Super Pang)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 2328 | | GAME( 1990, sbbros, spang, pang, pang, mitchell_state, sbbros, ROT0, "Mitchell (Capcom license)", "Super Buster Bros. (US 901001)", GAME_SUPPORTS_SAVE ) |
| 2297 | GAME( 1990, sbbros, spang, pangnv, pang, mitchell_state, sbbros, ROT0, "Mitchell (Capcom license)", "Super Buster Bros. (US 901001)", GAME_SUPPORTS_SAVE ) |
| 2329 | 2298 | GAME( 1990, marukin, 0, marukin, marukin, mitchell_state, marukin, ROT0, "Yuga", "Super Marukin-Ban (Japan 901017)", GAME_SUPPORTS_SAVE ) |
| 2330 | 2299 | GAME( 1991, qtono1, 0, pang, qtono1, mitchell_state, qtono1, ROT0, "Capcom", "Quiz Tonosama no Yabou (Japan)", GAME_SUPPORTS_SAVE ) |
| 2331 | 2300 | GAME( 1991, qsangoku, 0, pang, qtono1, mitchell_state, qsangoku, ROT0, "Capcom", "Quiz Sangokushi (Japan)", GAME_SUPPORTS_SAVE ) |
| 2332 | | GAME( 1991, block, 0, pang, block, mitchell_state, block, ROT270, "Capcom", "Block Block (World 910910)", GAME_SUPPORTS_SAVE ) |
| 2333 | | GAME( 1991, blockj, block, pang, block, mitchell_state, block, ROT270, "Capcom", "Block Block (Japan 910910)", GAME_SUPPORTS_SAVE ) |
| 2334 | | GAME( 1991, blockjoy, block, pang, blockjoy, mitchell_state, block, ROT270, "Capcom", "Block Block (World 911106 Joystick)", GAME_SUPPORTS_SAVE ) |
| 2335 | | GAME( 1991, blockbl, block, pang, block, mitchell_state, blockbl, ROT270, "bootleg", "Block Block (bootleg)", GAME_SUPPORTS_SAVE ) |
| 2301 | GAME( 1991, block, 0, pangnv, block, mitchell_state, block, ROT270, "Capcom", "Block Block (World 910910)", GAME_SUPPORTS_SAVE ) |
| 2302 | GAME( 1991, blockj, block, pangnv, block, mitchell_state, block, ROT270, "Capcom", "Block Block (Japan 910910)", GAME_SUPPORTS_SAVE ) |
| 2303 | GAME( 1991, blockjoy, block, pangnv, blockjoy, mitchell_state, block, ROT270, "Capcom", "Block Block (World 911106 Joystick)", GAME_SUPPORTS_SAVE ) |
| 2304 | GAME( 1991, blockbl, block, pangnv, block, mitchell_state, blockbl, ROT270, "bootleg", "Block Block (bootleg)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/bfm_sc2.c
| r18053 | r18054 | |
| 230 | 230 | int m_e2dummywrite; |
| 231 | 231 | int m_e2data_to_read; |
| 232 | 232 | UINT8 m_codec_data[256]; |
| 233 | void e2ram_init(nvram_device &nvram, void *data, size_t size); |
| 233 | 234 | DECLARE_WRITE8_MEMBER(bankswitch_w); |
| 234 | 235 | DECLARE_WRITE8_MEMBER(reel12_vid_w); |
| 235 | 236 | DECLARE_WRITE8_MEMBER(reel12_w); |
| r18053 | r18054 | |
| 296 | 297 | DECLARE_DRIVER_INIT(focus); |
| 297 | 298 | DECLARE_DRIVER_INIT(drwho); |
| 298 | 299 | DECLARE_DRIVER_INIT(drwho_common); |
| 300 | DECLARE_MACHINE_START(bfm_sc2); |
| 299 | 301 | DECLARE_MACHINE_RESET(init); |
| 300 | 302 | DECLARE_MACHINE_RESET(awp_init); |
| 301 | 303 | DECLARE_MACHINE_START(sc2dmd); |
| r18053 | r18054 | |
| 471 | 473 | |
| 472 | 474 | /////////////////////////////////////////////////////////////////////////// |
| 473 | 475 | |
| 474 | | static NVRAM_HANDLER( bfm_sc2 ) |
| 476 | void bfm_sc2_state::e2ram_init(nvram_device &nvram, void *data, size_t size) |
| 475 | 477 | { |
| 476 | | bfm_sc2_state *state = machine.driver_data<bfm_sc2_state>(); |
| 477 | 478 | static const UINT8 init_e2ram[10] = { 1, 4, 10, 20, 0, 1, 1, 4, 10, 20 }; |
| 478 | | if ( read_or_write ) |
| 479 | | { // writing |
| 480 | | file->write(state->m_e2ram,sizeof(state->m_e2ram)); |
| 481 | | } |
| 482 | | else |
| 483 | | { // reading |
| 484 | | if ( file ) |
| 485 | | { |
| 486 | | file->read(state->m_e2ram,sizeof(state->m_e2ram)); |
| 487 | | } |
| 488 | | else |
| 489 | | { |
| 490 | | memset(state->m_e2ram,0x00,sizeof(state->m_e2ram)); |
| 491 | | memcpy(state->m_e2ram,init_e2ram,sizeof(init_e2ram)); |
| 492 | | } |
| 493 | | } |
| 479 | memset(data,0x00,size); |
| 480 | memcpy(data,init_e2ram,size); |
| 494 | 481 | } |
| 495 | 482 | |
| 496 | 483 | /////////////////////////////////////////////////////////////////////////// |
| r18053 | r18054 | |
| 2150 | 2137 | // machine driver for scorpion2 board + adder2 expansion ////////////////// |
| 2151 | 2138 | /////////////////////////////////////////////////////////////////////////// |
| 2152 | 2139 | |
| 2140 | MACHINE_START_MEMBER(bfm_sc2_state,bfm_sc2) |
| 2141 | { |
| 2142 | nvram_device *e2ram = subdevice<nvram_device>("e2ram"); |
| 2143 | if (e2ram != NULL) |
| 2144 | e2ram->set_base(m_e2ram, sizeof(m_e2ram)); |
| 2145 | } |
| 2146 | |
| 2153 | 2147 | static MACHINE_CONFIG_START( scorpion2_vid, bfm_sc2_state ) |
| 2154 | 2148 | MCFG_MACHINE_RESET_OVERRIDE(bfm_sc2_state, init ) // main scorpion2 board initialisation |
| 2155 | 2149 | MCFG_QUANTUM_TIME(attotime::from_hz(960)) // needed for serial communication !! |
| r18053 | r18054 | |
| 2161 | 2155 | MCFG_BFMBD1_ADD("vfd0",0) |
| 2162 | 2156 | MCFG_BFMBD1_ADD("vfd1",1) |
| 2163 | 2157 | |
| 2158 | MCFG_MACHINE_START_OVERRIDE(bfm_sc2_state,bfm_sc2) |
| 2159 | |
| 2164 | 2160 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 2165 | | MCFG_NVRAM_HANDLER(bfm_sc2) |
| 2161 | MCFG_NVRAM_ADD_CUSTOM_DRIVER("e2ram", bfm_sc2_state, e2ram_init) |
| 2166 | 2162 | MCFG_DEFAULT_LAYOUT(layout_bfm_sc2) |
| 2167 | 2163 | |
| 2168 | 2164 | MCFG_SCREEN_ADD("adder", RASTER) |
| r18053 | r18054 | |
| 3691 | 3687 | |
| 3692 | 3688 | MACHINE_START_MEMBER(bfm_sc2_state,sc2dmd) |
| 3693 | 3689 | { |
| 3694 | | |
| 3690 | MACHINE_START_CALL_MEMBER(bfm_sc2); |
| 3695 | 3691 | address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); |
| 3696 | 3692 | space.install_write_handler(0x2800, 0x2800, 0, 0, write8_delegate(FUNC(bfm_sc2_state::vfd1_dmd_w),this)); |
| 3697 | 3693 | space.install_write_handler(0x2900, 0x2900, 0, 0, write8_delegate(FUNC(bfm_sc2_state::dmd_reset_w),this)); |
| r18053 | r18054 | |
| 3709 | 3705 | MCFG_BFMBD1_ADD("vfd0",0) |
| 3710 | 3706 | MCFG_BFMBD1_ADD("vfd1",1) |
| 3711 | 3707 | |
| 3708 | MCFG_MACHINE_START_OVERRIDE(bfm_sc2_state,bfm_sc2) |
| 3709 | |
| 3712 | 3710 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 3713 | 3711 | MCFG_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK) |
| 3714 | 3712 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| r18053 | r18054 | |
| 3717 | 3715 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 3718 | 3716 | |
| 3719 | 3717 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 3720 | | MCFG_NVRAM_HANDLER(bfm_sc2) |
| 3718 | MCFG_NVRAM_ADD_CUSTOM_DRIVER("e2ram", bfm_sc2_state, e2ram_init) |
| 3721 | 3719 | |
| 3722 | 3720 | /* video hardware */ |
| 3723 | 3721 | MCFG_DEFAULT_LAYOUT(layout_bfm_sc2) |
| r18053 | r18054 | |
| 3749 | 3747 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 3750 | 3748 | |
| 3751 | 3749 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 3752 | | MCFG_NVRAM_HANDLER(bfm_sc2) |
| 3750 | MCFG_NVRAM_ADD_CUSTOM_DRIVER("e2ram", bfm_sc2_state, e2ram_init) |
| 3753 | 3751 | |
| 3754 | 3752 | /* video hardware */ |
| 3755 | 3753 | MCFG_DEFAULT_LAYOUT(layout_sc2_dmd) |
trunk/src/mame/drivers/dgpix.c
| r18053 | r18054 | |
| 50 | 50 | *********************************************************************/ |
| 51 | 51 | |
| 52 | 52 | #include "emu.h" |
| 53 | #include "machine/nvram.h" |
| 53 | 54 | #include "cpu/e132xs/e132xs.h" |
| 54 | 55 | |
| 55 | 56 | |
| r18053 | r18054 | |
| 83 | 84 | |
| 84 | 85 | READ32_MEMBER(dgpix_state::flash_r) |
| 85 | 86 | { |
| 86 | | UINT32 *ROM = (UINT32 *)machine().root_device().memregion("user1")->base(); |
| 87 | UINT32 *ROM = (UINT32 *)memregion("flash")->base(); |
| 87 | 88 | |
| 88 | 89 | if(offset >= (0x2000000 - m_flash_roms * 0x400000) / 4) |
| 89 | 90 | { |
| r18053 | r18054 | |
| 120 | 121 | if(data == 0xd0d00000) |
| 121 | 122 | { |
| 122 | 123 | // point to game settings |
| 123 | | UINT8 *rom = (UINT8 *)machine().root_device().memregion("user1")->base() + offset*4; |
| 124 | UINT8 *rom = (UINT8 *)memregion("flash")->base() + offset*4; |
| 124 | 125 | |
| 125 | 126 | // erase one block |
| 126 | 127 | memset(rom, 0xff, 0x10000); |
| r18053 | r18054 | |
| 138 | 139 | } |
| 139 | 140 | else |
| 140 | 141 | { |
| 141 | | UINT16 *rom = (UINT16 *)machine().root_device().memregion("user1")->base(); |
| 142 | UINT16 *rom = (UINT16 *)memregion("flash")->base(); |
| 142 | 143 | |
| 143 | 144 | // write game settings |
| 144 | 145 | |
| r18053 | r18054 | |
| 209 | 210 | AM_RANGE(0x40000000, 0x4003ffff) AM_READWRITE(vram_r, vram_w) |
| 210 | 211 | AM_RANGE(0xe0000000, 0xe1ffffff) AM_READWRITE(flash_r, flash_w) |
| 211 | 212 | AM_RANGE(0xe2000000, 0xe3ffffff) AM_READWRITE(flash_r, flash_w) |
| 212 | | AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("user1", 0x1c00000) |
| 213 | AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("flash", 0x1c00000) AM_SHARE("nvram") |
| 213 | 214 | ADDRESS_MAP_END |
| 214 | 215 | |
| 215 | 216 | static ADDRESS_MAP_START( io_map, AS_IO, 32, dgpix_state ) |
| r18053 | r18054 | |
| 224 | 225 | ADDRESS_MAP_END |
| 225 | 226 | |
| 226 | 227 | |
| 227 | | static NVRAM_HANDLER( flashroms ) |
| 228 | | { |
| 229 | | if (read_or_write) |
| 230 | | { |
| 231 | | // point to game settings |
| 232 | | UINT8 *rom = (UINT8 *)machine.root_device().memregion("user1")->base() + 0x1c00000 + 0x360000; |
| 233 | | UINT8 tmp[0x40000]; |
| 234 | | int i; |
| 235 | | |
| 236 | | // save the new settings |
| 237 | | for( i = 0; i < 0x40000; i++ ) |
| 238 | | tmp[i] = rom[WORD_XOR_BE(i)]; |
| 239 | | |
| 240 | | file->write( tmp, 0x40000 ); |
| 241 | | } |
| 242 | | else if (file) |
| 243 | | { |
| 244 | | // point to game settings |
| 245 | | UINT8 *rom = (UINT8 *)machine.root_device().memregion("user1")->base() + 0x1c00000 + 0x360000; |
| 246 | | UINT8 tmp[0x40000]; |
| 247 | | int i; |
| 248 | | |
| 249 | | file->read( tmp, 0x40000 ); |
| 250 | | |
| 251 | | // overlap the default settings with the saved ones |
| 252 | | for( i = 0; i < 0x40000; i++ ) |
| 253 | | rom[WORD_XOR_BE(i)] = tmp[i]; |
| 254 | | } |
| 255 | | } |
| 256 | | |
| 257 | 228 | static INPUT_PORTS_START( dgpix ) |
| 258 | 229 | PORT_START("VBLANK") |
| 259 | 230 | PORT_BIT( 0x00000003, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") //value 2 is used by fmaniac3 |
| r18053 | r18054 | |
| 334 | 305 | running at 16.9MHz |
| 335 | 306 | */ |
| 336 | 307 | |
| 337 | | MCFG_NVRAM_HANDLER(flashroms) |
| 308 | MCFG_NVRAM_ADD_NO_FILL("nvram") |
| 338 | 309 | |
| 339 | 310 | /* video hardware */ |
| 340 | 311 | MCFG_SCREEN_ADD("screen", RASTER) |
| r18053 | r18054 | |
| 407 | 378 | */ |
| 408 | 379 | |
| 409 | 380 | ROM_START( xfiles ) |
| 410 | | ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */ |
| 381 | ROM_REGION32_BE( 0x2000000, "flash", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */ |
| 411 | 382 | /* 0 - 0x17fffff empty space */ |
| 412 | 383 | ROM_LOAD16_WORD_SWAP( "u8.bin", 0x1800000, 0x400000, CRC(3b2c2bc1) SHA1(1c07fb5bd8a8c9b5fb169e6400fef845f3aee7aa) ) |
| 413 | 384 | ROM_LOAD16_WORD_SWAP( "u9.bin", 0x1c00000, 0x400000, CRC(6ecdd1eb) SHA1(e26c9711e589865cc75ec693d382758fa52528b8) ) |
| r18053 | r18054 | |
| 482 | 453 | */ |
| 483 | 454 | |
| 484 | 455 | ROM_START( kdynastg ) |
| 485 | | ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */ |
| 456 | ROM_REGION32_BE( 0x2000000, "flash", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */ |
| 486 | 457 | /* 0 - 0x0ffffff empty space */ |
| 487 | 458 | ROM_LOAD16_WORD_SWAP( "flash.u6", 0x1000000, 0x400000, CRC(280dd64e) SHA1(0e23b227b1183fb5591c3a849b5a5fe7faa23cc8) ) |
| 488 | 459 | ROM_LOAD16_WORD_SWAP( "flash.u7", 0x1400000, 0x400000, CRC(f9125894) SHA1(abaad31f7a02143ea7029e47e6baf2976365f70c) ) |
| r18053 | r18054 | |
| 560 | 531 | */ |
| 561 | 532 | |
| 562 | 533 | ROM_START( fmaniac3 ) |
| 563 | | ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */ |
| 534 | ROM_REGION32_BE( 0x2000000, "flash", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */ |
| 564 | 535 | /* 0 - 0x17fffff empty space */ |
| 565 | 536 | ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(dc08a224) SHA1(4d14145eb84ad13674296f81e90b9d60403fa0de) ) |
| 566 | 537 | ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(c1fee95f) SHA1(0ed5ed9fa18e7da9242a6df2c210c46de25a2281) ) |
| r18053 | r18054 | |
| 574 | 545 | |
| 575 | 546 | DRIVER_INIT_MEMBER(dgpix_state,xfiles) |
| 576 | 547 | { |
| 577 | | UINT8 *rom = (UINT8 *)memregion("user1")->base() + 0x1c00000; |
| 548 | UINT8 *rom = (UINT8 *)memregion("flash")->base() + 0x1c00000; |
| 578 | 549 | |
| 579 | 550 | rom[BYTE4_XOR_BE(0x3aa92e)] = 3; |
| 580 | 551 | rom[BYTE4_XOR_BE(0x3aa92f)] = 0; |
| r18053 | r18054 | |
| 591 | 562 | |
| 592 | 563 | DRIVER_INIT_MEMBER(dgpix_state,kdynastg) |
| 593 | 564 | { |
| 594 | | UINT8 *rom = (UINT8 *)memregion("user1")->base() + 0x1c00000; |
| 565 | UINT8 *rom = (UINT8 *)memregion("flash")->base() + 0x1c00000; |
| 595 | 566 | |
| 596 | 567 | rom[BYTE4_XOR_BE(0x3aaa10)] = 3; // 129f0 - nopped call |
| 597 | 568 | rom[BYTE4_XOR_BE(0x3aaa11)] = 0; |
trunk/src/mame/drivers/bmcbowl.c
| r18053 | r18054 | |
| 103 | 103 | #include "emu.h" |
| 104 | 104 | #include "cpu/m68000/m68000.h" |
| 105 | 105 | #include "machine/6522via.h" |
| 106 | #include "machine/nvram.h" |
| 106 | 107 | #include "sound/ay8910.h" |
| 107 | 108 | #include "sound/okim6295.h" |
| 108 | 109 | |
| 110 | #define NVRAM_HACK |
| 109 | 111 | |
| 112 | |
| 110 | 113 | class bmcbowl_state : public driver_device |
| 111 | 114 | { |
| 112 | 115 | public: |
| 113 | 116 | bmcbowl_state(const machine_config &mconfig, device_type type, const char *tag) |
| 114 | 117 | : driver_device(mconfig, type, tag) , |
| 115 | | m_stats_ram(*this, "stats_ram", 16), |
| 118 | m_stats_ram(*this, "nvram", 16), |
| 116 | 119 | m_vid1(*this, "vid1"), |
| 117 | 120 | m_vid2(*this, "vid2"){ } |
| 118 | 121 | |
| r18053 | r18054 | |
| 143 | 146 | |
| 144 | 147 | |
| 145 | 148 | |
| 146 | | #define NVRAM_HACK |
| 147 | | |
| 148 | 149 | void bmcbowl_state::video_start() |
| 149 | 150 | { |
| 150 | 151 | } |
| r18053 | r18054 | |
| 311 | 312 | } |
| 312 | 313 | #endif |
| 313 | 314 | |
| 314 | | static NVRAM_HANDLER( bmcbowl ) |
| 315 | void bmcbowl_state::machine_reset() |
| 315 | 316 | { |
| 316 | | bmcbowl_state *state = machine.driver_data<bmcbowl_state>(); |
| 317 | | int i; |
| 318 | | |
| 319 | | if (read_or_write) |
| 320 | | file->write(state->m_stats_ram, state->m_stats_ram.bytes()); |
| 321 | | else |
| 322 | | |
| 323 | 317 | #ifdef NVRAM_HACK |
| 324 | | for (i = 0; i < state->m_stats_ram.bytes(); i++) |
| 325 | | state->m_stats_ram[i] = 0xff; |
| 318 | for (int i = 0; i < m_stats_ram.bytes(); i++) |
| 319 | m_stats_ram[i] = 0xff; |
| 326 | 320 | |
| 327 | | init_stats(state,bmc_nv1,ARRAY_LENGTH(bmc_nv1),0); |
| 328 | | init_stats(state,bmc_nv2,ARRAY_LENGTH(bmc_nv2),0x3b0); |
| 329 | | init_stats(state,bmc_nv3,ARRAY_LENGTH(bmc_nv3),0xfe2); |
| 330 | | #else |
| 331 | | if (file) |
| 332 | | file->read(state->m_stats_ram, state->m_stats_ram.bytes()); |
| 333 | | else |
| 334 | | |
| 335 | | for (i = 0; i < state->m_stats_ram.bytes(); i++) |
| 336 | | state->m_stats_ram[i] = 0xff; |
| 321 | init_stats(this,bmc_nv1,ARRAY_LENGTH(bmc_nv1),0); |
| 322 | init_stats(this,bmc_nv2,ARRAY_LENGTH(bmc_nv2),0x3b0); |
| 323 | init_stats(this,bmc_nv3,ARRAY_LENGTH(bmc_nv3),0xfe2); |
| 337 | 324 | #endif |
| 338 | | |
| 339 | 325 | } |
| 340 | 326 | |
| 341 | 327 | static ADDRESS_MAP_START( bmcbowl_mem, AS_PROGRAM, 16, bmcbowl_state ) |
| r18053 | r18054 | |
| 355 | 341 | AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8_LEGACY("aysnd", ay8910_data_address_w, 0xff00) |
| 356 | 342 | AM_RANGE(0x092802, 0x092803) AM_DEVREAD8_LEGACY("aysnd", ay8910_r, 0xff00) |
| 357 | 343 | AM_RANGE(0x093802, 0x093803) AM_READ_PORT("IN0") |
| 358 | | AM_RANGE(0x095000, 0x095fff) AM_RAM AM_SHARE("stats_ram") /* 8 bit */ |
| 344 | AM_RANGE(0x095000, 0x095fff) AM_RAM AM_SHARE("nvram") /* 8 bit */ |
| 359 | 345 | AM_RANGE(0x097000, 0x097001) AM_READNOP |
| 360 | 346 | AM_RANGE(0x140000, 0x1bffff) AM_ROM |
| 361 | 347 | AM_RANGE(0x1c0000, 0x1effff) AM_RAM AM_SHARE("vid1") |
| r18053 | r18054 | |
| 496 | 482 | /*irq */ DEVCB_DRIVER_MEMBER(bmcbowl_state,via_irq) |
| 497 | 483 | }; |
| 498 | 484 | |
| 499 | | void bmcbowl_state::machine_reset() |
| 500 | | { |
| 501 | | } |
| 502 | | |
| 503 | 485 | static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state ) |
| 504 | 486 | MCFG_CPU_ADD("maincpu", M68000, 21477270/2 ) |
| 505 | 487 | MCFG_CPU_PROGRAM_MAP(bmcbowl_mem) |
| r18053 | r18054 | |
| 514 | 496 | |
| 515 | 497 | MCFG_PALETTE_LENGTH(256) |
| 516 | 498 | |
| 499 | MCFG_NVRAM_ADD_1FILL("nvram") |
| 517 | 500 | |
| 518 | | MCFG_NVRAM_HANDLER(bmcbowl) |
| 519 | | |
| 520 | 501 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 521 | 502 | |
| 522 | 503 | MCFG_SOUND_ADD("aysnd", AY8910, 3579545/2) |