trunk/src/mame/drivers/8080bw.c
| r20026 | r20027 | |
| 2850 | 2850 | |
| 2851 | 2851 | |
| 2852 | 2852 | |
| 2853 | | /* Taito Galactica / Space Missile |
| 2853 | /************************************************************************************** |
| 2854 | |
| 2855 | Taito Galactica / Space Missile |
| 2856 | |
| 2854 | 2857 | This game was officially only distributed in Brazil. |
| 2855 | 2858 | Regarding release data, not much information is available online. |
| 2856 | 2859 | |
| 2857 | | ROM dump came from a collection of old 5 1/4 disks (Apple II) that used to be in the possession of an arcade operator in the early 80s. |
| 2860 | ROM dump came from a collection of old 5 1/4 disks (Apple II) that used to be in the |
| 2861 | possession of an arcade operator in the early 80s. |
| 2858 | 2862 | |
| 2859 | | TODO sound (currently same as invaders): |
| 2860 | | - sound mutes when a few aliens are left? |
| 2861 | | - port 7 write is used too |
| 2862 | | */ |
| 2863 | TODO sound to be verified. |
| 2863 | 2864 | |
| 2865 | ***************************************************************************************/ |
| 2866 | |
| 2867 | static ADDRESS_MAP_START( galactic_io_map, AS_IO, 8, _8080bw_state ) |
| 2868 | AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") |
| 2869 | AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") |
| 2870 | AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w) |
| 2871 | AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(galactic_sh_port_1_w) |
| 2872 | AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w) |
| 2873 | AM_RANGE(0x05, 0x05) AM_WRITE(galactic_sh_port_2_w) |
| 2874 | AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) |
| 2875 | AM_RANGE(0x07, 0x07) AM_WRITE(galactic_07_w) |
| 2876 | ADDRESS_MAP_END |
| 2877 | |
| 2878 | |
| 2879 | static MACHINE_CONFIG_DERIVED_CLASS( galactic, mw8080bw_root, _8080bw_state ) |
| 2880 | |
| 2881 | /* basic machine hardware */ |
| 2882 | MCFG_CPU_MODIFY("maincpu") |
| 2883 | MCFG_CPU_IO_MAP(galactic_io_map) |
| 2884 | MCFG_MACHINE_START_OVERRIDE(_8080bw_state,extra_8080bw) |
| 2885 | |
| 2886 | /* add shifter */ |
| 2887 | MCFG_MB14241_ADD("mb14241") |
| 2888 | |
| 2889 | /* sound hardware */ |
| 2890 | MCFG_FRAGMENT_ADD(invaders_samples_audio) |
| 2891 | MCFG_DISCRETE_ADD("discrete", 0, galactic) |
| 2892 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 2893 | |
| 2894 | /* video hardware */ |
| 2895 | MCFG_SCREEN_MODIFY("screen") |
| 2896 | MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invaders) |
| 2897 | MACHINE_CONFIG_END |
| 2898 | |
| 2899 | |
| 2864 | 2900 | static INPUT_PORTS_START( galactic ) |
| 2865 | 2901 | PORT_START("IN0") |
| 2866 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 2867 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 2868 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 2869 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 2870 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 2871 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 2872 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 2873 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // tilt? |
| 2902 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // gets read into memory (0x2012) then never used |
| 2874 | 2903 | |
| 2875 | 2904 | PORT_START("IN1") |
| 2876 | 2905 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| r20026 | r20027 | |
| 4392 | 4421 | GAME( 1980, ballbomb, 0, ballbomb, ballbomb, driver_device, 0, ROT270, "Taito", "Balloon Bomber", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) /* missing clouds */ |
| 4393 | 4422 | GAME( 1980, indianbt, 0, indianbt, indianbt, driver_device, 0, ROT270, "Taito", "Indian Battle", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) |
| 4394 | 4423 | GAME( 1980, steelwkr, 0, steelwkr, steelwkr, driver_device, 0, ROT0 , "Taito", "Steel Worker", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) |
| 4395 | | GAMEL(1980?,galactic, 0, invaders, galactic, driver_device, 0, ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_galactic ) |
| 4396 | | GAMEL(1980?,spacmiss, galactic, invaders, galactic, driver_device, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_galactic ) |
| 4424 | GAMEL(1980?,galactic, 0, galactic, galactic, driver_device, 0, ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_galactic ) |
| 4425 | GAMEL(1980?,spacmiss, galactic, galactic, galactic, driver_device, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_galactic ) |
| 4397 | 4426 | |
| 4398 | 4427 | // Misc. manufacturers |
| 4399 | 4428 | GAME( 1979, galxwars, 0, invadpt2, galxwars, driver_device, 0, ROT270, "Universal", "Galaxy Wars (Universal set 1)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) |
trunk/src/mame/audio/8080bw.c
| r20026 | r20027 | |
| 1259 | 1259 | } |
| 1260 | 1260 | } |
| 1261 | 1261 | |
| 1262 | |
| 1263 | /*****************************************/ |
| 1264 | /* "Darth Vader" preliminary sound */ |
| 1265 | /* Proper samples are unavailable */ |
| 1266 | /*****************************************/ |
| 1267 | |
| 1262 | 1268 | WRITE8_MEMBER( _8080bw_state::darthvdr_00_w ) |
| 1263 | 1269 | { |
| 1264 | 1270 | m_flip_screen = BIT(data, 0) & ioport(CABINET_PORT_TAG)->read(); |
| r20026 | r20027 | |
| 1289 | 1295 | m_port_1_last_extra = data; |
| 1290 | 1296 | } |
| 1291 | 1297 | |
| 1298 | |
| 1299 | /*******************************************************/ |
| 1300 | /* */ |
| 1301 | /* "Galactic" and "Space Missile" */ |
| 1302 | /* Due to no schematics, these sounds are nothing */ |
| 1303 | /* more than speculation. */ |
| 1304 | /*******************************************************/ |
| 1305 | |
| 1306 | /************************************* |
| 1307 | * |
| 1308 | * Discrete Sound |
| 1309 | * (copied from indianbt) |
| 1310 | * |
| 1311 | *************************************/ |
| 1312 | |
| 1313 | static const discrete_dac_r1_ladder galactic_music_dac = |
| 1314 | {3, {0, RES_K(47), RES_K(12)}, 0, 0, 0, CAP_U(0.1)}; |
| 1315 | |
| 1316 | #define GALACTIC_MUSIC_CLK (150000) |
| 1317 | |
| 1318 | /* Nodes - Inputs */ |
| 1319 | #define GALACTIC_MUSIC_DATA NODE_01 |
| 1320 | /* Nodes - Sounds */ |
| 1321 | #define GALACTIC_MUSIC NODE_11 |
| 1322 | |
| 1323 | DISCRETE_SOUND_START(galactic) |
| 1324 | |
| 1325 | DISCRETE_INPUT_DATA (GALACTIC_MUSIC_DATA) |
| 1326 | |
| 1327 | /****************************************************************************** |
| 1328 | * |
| 1329 | * Music Generator |
| 1330 | * |
| 1331 | ******************************************************************************/ |
| 1332 | DISCRETE_NOTE(NODE_20, 1, GALACTIC_MUSIC_CLK, GALACTIC_MUSIC_DATA, 255, 5, DISC_CLK_IS_FREQ) |
| 1333 | |
| 1334 | // Convert count to 7492 output |
| 1335 | DISCRETE_TRANSFORM2(NODE_21, NODE_20, 2, "01>0+") |
| 1336 | |
| 1337 | DISCRETE_DAC_R1(NODE_22, NODE_21, DEFAULT_TTL_V_LOGIC_1, &galactic_music_dac) |
| 1338 | |
| 1339 | /****************************************************************************** |
| 1340 | * |
| 1341 | * Final Mixing and Output |
| 1342 | * |
| 1343 | ******************************************************************************/ |
| 1344 | DISCRETE_CRFILTER(NODE_90, NODE_22, RES_K(10), CAP_U(0.1)) |
| 1345 | |
| 1346 | DISCRETE_OUTPUT(NODE_90, 21000) |
| 1347 | |
| 1348 | DISCRETE_SOUND_END |
| 1349 | |
| 1350 | WRITE8_MEMBER( _8080bw_state::galactic_07_w ) |
| 1351 | { |
| 1352 | discrete_sound_w(m_discrete, space, GALACTIC_MUSIC_DATA, data | 0xc0); |
| 1353 | } |
| 1354 | |
| 1355 | WRITE8_MEMBER(_8080bw_state::galactic_sh_port_1_w) |
| 1356 | { |
| 1357 | UINT8 rising_bits = data & ~m_port_1_last_extra; |
| 1358 | |
| 1359 | if (rising_bits & 0x02) m_samples->start(2, 2); /* Killed an enemy */ |
| 1360 | if (rising_bits & 0x04) m_samples->start(1, 1); /* Lost a life */ |
| 1361 | |
| 1362 | m_port_1_last_extra = data; |
| 1363 | } |
| 1364 | |
| 1365 | // bits 0-3 could make a variable background tone |
| 1366 | WRITE8_MEMBER(_8080bw_state::galactic_sh_port_2_w) |
| 1367 | { |
| 1368 | UINT8 rising_bits = data & ~m_port_2_last_extra; |
| 1369 | |
| 1370 | if (rising_bits & 0x10) m_samples->start(0, 0); /* Shoot */ |
| 1371 | |
| 1372 | m_flip_screen = BIT(data, 5) & ioport(CABINET_PORT_TAG)->read(); |
| 1373 | |
| 1374 | m_port_2_last_extra = data; |
| 1375 | } |
| 1376 | |
| 1377 | |