trunk/src/mame/drivers/zac_1.c
| r17581 | r17582 | |
| 4 | 4 | |
| 5 | 5 | These games allow for up to 4 players at the same time. |
| 6 | 6 | Setup is via a menu - there are no dipswitches. |
| 7 | | Most of the games flash 6 and 9 at start- this indicates the battery is flat, |
| 7 | If you see 6 and 9 flashing at start- this indicates the battery is flat, |
| 8 | 8 | and a full setup is required before it can be used. |
| 9 | 9 | At start, the highscore will be set to a random value. Beating this score will |
| 10 | 10 | award a bonus. Tilting will cause the high score to advance by 100,000. |
| r17581 | r17582 | |
| 40 | 40 | DECLARE_WRITE8_MEMBER(ctrl_w); |
| 41 | 41 | DECLARE_READ8_MEMBER(serial_r); |
| 42 | 42 | DECLARE_WRITE8_MEMBER(serial_w); |
| 43 | DECLARE_READ8_MEMBER(reset_int_r); |
| 43 | 44 | DECLARE_WRITE8_MEMBER(reset_int_w); |
| 44 | 45 | UINT8 m_t_c; |
| 45 | 46 | UINT8 m_out_offs; |
| r17581 | r17582 | |
| 60 | 61 | ADDRESS_MAP_GLOBAL_MASK(0x1fff) |
| 61 | 62 | AM_RANGE(0x0000, 0x13ff) AM_ROM |
| 62 | 63 | AM_RANGE(0x1400, 0x17ff) AM_WRITE(reset_int_w) |
| 63 | | AM_RANGE(0x1800, 0x1bff) AM_RAM AM_SHARE("ram") |
| 64 | AM_RANGE(0x1800, 0x18ff) AM_MIRROR(0x300) AM_RAM AM_SHARE("ram") |
| 64 | 65 | AM_RANGE(0x1c00, 0x1fff) AM_ROM |
| 65 | 66 | ADDRESS_MAP_END |
| 66 | 67 | |
| 67 | | static ADDRESS_MAP_START(zac_1_io, AS_IO, 8, zac_1_state) |
| 68 | static ADDRESS_MAP_START( zac_1_io, AS_IO, 8, zac_1_state ) |
| 68 | 69 | ADDRESS_MAP_UNMAP_HIGH |
| 69 | 70 | AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(ctrl_r,ctrl_w) |
| 70 | 71 | AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(serial_r,serial_w) |
| r17581 | r17582 | |
| 179 | 180 | void zac_1_state::machine_reset() |
| 180 | 181 | { |
| 181 | 182 | m_t_c = 0; |
| 183 | // init system if invalid (from pinmame) |
| 184 | if (m_p_ram[0xf7] == 5 && m_p_ram[0xf8] == 0x0a) |
| 185 | {} |
| 186 | else |
| 187 | { |
| 188 | m_p_ram[0xc0] = 3; // 3 balls |
| 189 | for (UINT8 i=0xc1; i < 0xd6; i++) |
| 190 | m_p_ram[i] = 1; // enable match & coin slots |
| 191 | m_p_ram[0xf7] = 5; |
| 192 | m_p_ram[0xf8] = 0x0a; |
| 193 | } |
| 182 | 194 | } |
| 183 | 195 | |
| 184 | 196 | static TIMER_DEVICE_CALLBACK( zac_1_inttimer ) |
| r17581 | r17582 | |
| 206 | 218 | UINT8 digit = state->m_out_offs & 7; |
| 207 | 219 | output_set_digit_value(display * 10 + digit, patterns[state->m_p_ram[state->m_out_offs]&15]); |
| 208 | 220 | } |
| 209 | | // not sure yet but seems scores = 1800-182D; solenoids = 1840-187F; |
| 221 | // seems scores = 1800-182D; solenoids = 1840-187F; |
| 210 | 222 | // lamps = 1880-18BF; bookkeeping=18C0-18FF. 4-tone osc=1850-1853. |
| 211 | 223 | // 182E-183F is a storage area for inputs. |
| 212 | 224 | } |
| r17581 | r17582 | |
| 223 | 235 | MCFG_DEFAULT_LAYOUT(layout_zac_1) |
| 224 | 236 | MACHINE_CONFIG_END |
| 225 | 237 | |
| 238 | /*************************** LOCOMOTION ********************************/ |
| 226 | 239 | |
| 240 | static ADDRESS_MAP_START( locomotp_map, AS_PROGRAM, 8, zac_1_state ) |
| 241 | ADDRESS_MAP_GLOBAL_MASK(0x1fff) |
| 242 | AM_RANGE(0x0000, 0x17ff) AM_ROM |
| 243 | AM_RANGE(0x1800, 0x18ff) AM_MIRROR(0x300) AM_RAM AM_SHARE("ram") |
| 244 | AM_RANGE(0x1c00, 0x1fff) AM_ROM |
| 245 | ADDRESS_MAP_END |
| 246 | |
| 247 | static ADDRESS_MAP_START( locomotp_io, AS_IO, 8, zac_1_state) |
| 248 | ADDRESS_MAP_UNMAP_HIGH |
| 249 | AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(ctrl_r,ctrl_w) |
| 250 | AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(reset_int_r) |
| 251 | AM_RANGE(S2650_SENSE_PORT, S2650_FO_PORT) AM_READWRITE(serial_r,serial_w) |
| 252 | ADDRESS_MAP_END |
| 253 | |
| 254 | READ8_MEMBER( zac_1_state::reset_int_r ) |
| 255 | { |
| 256 | device_set_input_line(m_maincpu, INPUT_LINE_IRQ0, CLEAR_LINE); |
| 257 | return 0; |
| 258 | } |
| 259 | |
| 260 | static MACHINE_CONFIG_DERIVED( locomotp, zac_1 ) |
| 261 | /* basic machine hardware */ |
| 262 | MCFG_CPU_MODIFY("maincpu") |
| 263 | MCFG_CPU_PROGRAM_MAP(locomotp_map) |
| 264 | MCFG_CPU_IO_MAP(locomotp_io) |
| 265 | // also has sound cpu |
| 266 | MACHINE_CONFIG_END |
| 267 | |
| 268 | |
| 227 | 269 | /*-------------------------------- |
| 228 | 270 | / Earth Wind Fire (04/81) |
| 229 | 271 | /-------------------------------*/ |
| r17581 | r17582 | |
| 372 | 414 | ROM_LOAD ( "ws5.bin", 0x1000, 0x0400, CRC(5ef51ced) SHA1(390579d0482ceabf87924f7718ef33e336726d92)) |
| 373 | 415 | ROM_END |
| 374 | 416 | |
| 375 | | GAME(1981, ewf, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Earth Wind Fire", GAME_MECHANICAL | GAME_NO_SOUND) |
| 376 | | GAME(1980, firemntn, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Fire Mountain", GAME_IS_SKELETON_MECHANICAL) |
| 377 | | GAME(1978, futurwld, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Future World", GAME_IS_SKELETON_MECHANICAL) |
| 378 | | GAME(1979, hotwheel, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Hot Wheels", GAME_IS_SKELETON_MECHANICAL) |
| 379 | | GAME(1978, hod, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "House of Diamonds", GAME_IS_SKELETON_MECHANICAL) |
| 380 | | GAME(1981, locomotp, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Locomotion", GAME_IS_SKELETON_MECHANICAL) |
| 381 | | GAME(1979, strapids, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Shooting the Rapids", GAME_IS_SKELETON_MECHANICAL) |
| 382 | | GAME(1980, sshtlzac, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Space Shuttle (Zaccaria)", GAME_MECHANICAL | GAME_NO_SOUND) |
| 383 | | GAME(1980, stargod, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Star God", GAME_IS_SKELETON_MECHANICAL) |
| 384 | | GAME(1980, stargoda, stargod, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Star God (alternate sound)", GAME_IS_SKELETON_MECHANICAL) |
| 385 | | GAME(1978, wsports, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Winter Sports", GAME_IS_SKELETON_MECHANICAL) |
| 417 | GAME(1981, ewf, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Earth Wind Fire", GAME_MECHANICAL | GAME_NO_SOUND) |
| 418 | GAME(1980, firemntn, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Fire Mountain", GAME_MECHANICAL | GAME_NO_SOUND) |
| 419 | GAME(1978, futurwld, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Future World", GAME_MECHANICAL | GAME_NO_SOUND) |
| 420 | GAME(1979, hotwheel, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Hot Wheels", GAME_MECHANICAL | GAME_NO_SOUND) |
| 421 | GAME(1978, hod, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "House of Diamonds", GAME_MECHANICAL | GAME_NO_SOUND) |
| 422 | GAME(1981, locomotp, 0, locomotp, zac_1, driver_device, 0, ROT0, "Zaccaria", "Locomotion", GAME_MECHANICAL | GAME_NO_SOUND) |
| 423 | GAME(1979, strapids, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Shooting the Rapids", GAME_MECHANICAL | GAME_NO_SOUND) |
| 424 | GAME(1980, sshtlzac, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Space Shuttle (Zaccaria)", GAME_MECHANICAL | GAME_NO_SOUND) |
| 425 | GAME(1980, stargod, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Star God", GAME_MECHANICAL | GAME_NO_SOUND) |
| 426 | GAME(1980, stargoda, stargod, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Star God (alternate sound)", GAME_MECHANICAL | GAME_NO_SOUND) |
| 427 | GAME(1978, wsports, 0, zac_1, zac_1, driver_device, 0, ROT0, "Zaccaria", "Winter Sports", GAME_MECHANICAL | GAME_NO_SOUND) |