trunk/src/mame/drivers/zodiack.c
| r22619 | r22620 | |
| 21 | 21 | All it does is scanning the whole 64k z80 space via all those pop opcodes ... |
| 22 | 22 | DE register values are always discarded ... bug in coding or ROM patch? |
| 23 | 23 | |
| 24 | TODO: |
| 25 | - improve video emulation (especially moguchan colors) |
| 26 | - where do the sound related irqs come from exactly? |
| 27 | - can eventually be merged with espial.c |
| 28 | |
| 24 | 29 | ============================================================================ |
| 25 | 30 | |
| 26 | 31 | Zodiack |
| r22619 | r22620 | |
| 99 | 104 | |
| 100 | 105 | WRITE8_MEMBER( zodiack_state::nmi_mask_w ) |
| 101 | 106 | { |
| 102 | | m_nmi_enable = (data & 1) ^ 1; |
| 107 | m_main_nmi_enabled = (data & 1) ^ 1; |
| 103 | 108 | } |
| 104 | 109 | |
| 105 | 110 | WRITE8_MEMBER( zodiack_state::sound_nmi_enable_w ) |
| r22619 | r22620 | |
| 107 | 112 | m_sound_nmi_enabled = data & 1; |
| 108 | 113 | } |
| 109 | 114 | |
| 110 | | |
| 111 | | TIMER_DEVICE_CALLBACK_MEMBER(zodiack_state::zodiack_scanline) |
| 115 | INTERRUPT_GEN_MEMBER(zodiack_state::zodiack_main_nmi_gen) |
| 112 | 116 | { |
| 113 | | int scanline = param; |
| 114 | | |
| 115 | | if(scanline == 240 && m_nmi_enable) // vblank-out irq |
| 116 | | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 117 | | |
| 118 | | if(scanline == 0 ) // vblank-in irq |
| 119 | | m_maincpu->set_input_line(0, HOLD_LINE); |
| 117 | if (m_main_nmi_enabled) |
| 118 | nmi_line_pulse(device); |
| 120 | 119 | } |
| 121 | 120 | |
| 122 | 121 | INTERRUPT_GEN_MEMBER(zodiack_state::zodiack_sound_nmi_gen) |
| r22619 | r22620 | |
| 547 | 546 | void zodiack_state::machine_start() |
| 548 | 547 | { |
| 549 | 548 | save_item(NAME(m_sound_nmi_enabled)); |
| 550 | | save_item(NAME(m_nmi_enable)); |
| 549 | save_item(NAME(m_main_nmi_enabled)); |
| 550 | save_item(NAME(m_flipscreen)); |
| 551 | 551 | } |
| 552 | 552 | |
| 553 | 553 | void zodiack_state::machine_reset() |
| 554 | 554 | { |
| 555 | | m_sound_nmi_enabled = FALSE; |
| 556 | | m_nmi_enable = 0; |
| 555 | m_sound_nmi_enabled = 0; |
| 556 | m_main_nmi_enabled = 0; |
| 557 | m_flipscreen = 0; |
| 557 | 558 | } |
| 558 | 559 | |
| 559 | 560 | |
| r22619 | r22620 | |
| 562 | 563 | /* basic machine hardware */ |
| 563 | 564 | MCFG_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) |
| 564 | 565 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 565 | | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", zodiack_state, zodiack_scanline, "screen", 0, 1) |
| 566 | MCFG_CPU_VBLANK_INT_DRIVER("screen", zodiack_state, zodiack_main_nmi_gen) |
| 567 | MCFG_CPU_PERIODIC_INT_DRIVER(zodiack_state, irq0_line_hold, 1*60) // sound related - unknown source, timing is guessed |
| 566 | 568 | |
| 567 | 569 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_18_432MHz/6) |
| 568 | 570 | MCFG_CPU_PROGRAM_MAP(sound_map) |
| 569 | 571 | MCFG_CPU_IO_MAP(io_map) |
| 570 | | MCFG_CPU_PERIODIC_INT_DRIVER(zodiack_state, zodiack_sound_nmi_gen, 8*60) /* IRQs are triggered by the main CPU */ |
| 572 | MCFG_CPU_PERIODIC_INT_DRIVER(zodiack_state, zodiack_sound_nmi_gen, 8*60) // sound tempo - unknown source, timing is guessed |
| 571 | 573 | |
| 572 | 574 | /* video hardware */ |
| 573 | 575 | MCFG_SCREEN_ADD("screen", RASTER) |
| r22619 | r22620 | |
| 586 | 588 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 587 | 589 | MACHINE_CONFIG_END |
| 588 | 590 | |
| 589 | | static MACHINE_CONFIG_DERIVED_CLASS( percuss, zodiack, percuss_state ) |
| 590 | | MACHINE_CONFIG_END |
| 591 | 591 | |
| 592 | | |
| 593 | 592 | /*************************************************************************** |
| 594 | 593 | |
| 595 | 594 | Game driver(s) |
| r22619 | r22620 | |
| 697 | 696 | ROM_END |
| 698 | 697 | |
| 699 | 698 | |
| 700 | | GAME( 1983, zodiack, 0, zodiack, zodiack, driver_device, 0, ROT270, "Orca (Esco Trading Co., Inc. license)", "Zodiack", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) /* bullet color needs to be verified */ |
| 701 | | GAME( 1983, dogfight, 0, zodiack, dogfight, driver_device, 0, ROT270, "Orca / Thunderbolt", "Dog Fight (Thunderbolt)", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) /* bullet color needs to be verified */ |
| 702 | | GAME( 1982, moguchan, 0, percuss, moguchan, driver_device, 0, ROT270, "Orca (Eastern Commerce Inc. license)", "Mogu Chan (bootleg?)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) /* license copyright taken from ROM string at $0b5c */ |
| 703 | | GAME( 1981, percuss, 0, percuss, percuss, driver_device, 0, ROT270, "Orca", "The Percussor (bootleg?)", GAME_SUPPORTS_SAVE ) |
| 704 | | GAME( 1982, bounty, 0, percuss, bounty, driver_device, 0, ROT180, "Orca", "The Bounty", GAME_SUPPORTS_SAVE ) |
| 699 | DRIVER_INIT_MEMBER(zodiack_state,zodiack) |
| 700 | { |
| 701 | m_percuss_hardware = false; |
| 702 | } |
| 703 | |
| 704 | DRIVER_INIT_MEMBER(zodiack_state,percuss) |
| 705 | { |
| 706 | m_percuss_hardware = true; |
| 707 | } |
| 708 | |
| 709 | GAME( 1983, zodiack, 0, zodiack, zodiack, zodiack_state, zodiack, ROT270, "Orca (Esco Trading Co., Inc. license)", "Zodiack", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) /* bullet color needs to be verified */ |
| 710 | GAME( 1983, dogfight, 0, zodiack, dogfight, zodiack_state, zodiack, ROT270, "Orca / Thunderbolt", "Dog Fight (Thunderbolt)", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) /* bullet color needs to be verified */ |
| 711 | GAME( 1982, moguchan, 0, zodiack, moguchan, zodiack_state, percuss, ROT270, "Orca (Eastern Commerce Inc. license)", "Mogu Chan (bootleg?)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) /* license copyright taken from ROM string at $0b5c */ |
| 712 | GAME( 1981, percuss, 0, zodiack, percuss, zodiack_state, percuss, ROT270, "Orca", "The Percussor", GAME_SUPPORTS_SAVE ) |
| 713 | GAME( 1982, bounty, 0, zodiack, bounty, zodiack_state, percuss, ROT180, "Orca", "The Bounty", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/taitojc.c
| r22619 | r22620 | |
| 391 | 391 | // lookup tables for densha de go analog controls/meters |
| 392 | 392 | static const int dendego_odometer_table[0x100] = |
| 393 | 393 | { |
| 394 | | 0, 3, 7, 10, 14, 17, 21, 24, 28, 31, 34, 38, 41, 45, 48, 52, |
| 395 | | 55, 59, 62, 66, 69, 72, 76, 79, 83, 86, 90, 93, 97, 100, 105, 111, |
| 396 | | 116, 121, 126, 132, 137, 142, 147, 153, 158, 163, 168, 174, 179, 184, 189, 195, |
| 397 | | 200, 206, 211, 217, 222, 228, 233, 239, 244, 250, 256, 261, 267, 272, 278, 283, |
| 398 | | 289, 294, 300, 306, 311, 317, 322, 328, 333, 339, 344, 350, 356, 361, 367, 372, |
| 399 | | 378, 383, 389, 394, 400, 406, 412, 418, 424, 429, 435, 441, 447, 453, 459, 465, |
| 400 | | 471, 476, 482, 488, 494, 500, 505, 511, 516, 521, 526, 532, 537, 542, 547, 553, |
| 401 | | 558, 563, 568, 574, 579, 584, 589, 595, 600, 607, 613, 620, 627, 633, 640, 647, |
| 402 | | 653, 660, 667, 673, 680, 687, 693, 700, 705, 711, 716, 721, 726, 732, 737, 742, |
| 403 | | 747, 753, 758, 763, 768, 774, 779, 784, 789, 795, 800, 806, 812, 818, 824, 829, |
| 404 | | 835, 841, 847, 853, 859, 865, 871, 876, 882, 888, 894, 900, 906, 911, 917, 922, |
| 405 | | 928, 933, 939, 944, 950, 956, 961, 967, 972, 978, 983, 989, 994, 1000, 1005, 1011, |
| 394 | 0, 3, 7, 10, 14, 17, 21, 24, 28, 31, 34, 38, 41, 45, 48, 52, |
| 395 | 55, 59, 62, 66, 69, 72, 76, 79, 83, 86, 90, 93, 97, 100, 105, 111, |
| 396 | 116, 121, 126, 132, 137, 142, 147, 153, 158, 163, 168, 174, 179, 184, 189, 195, |
| 397 | 200, 206, 211, 217, 222, 228, 233, 239, 244, 250, 256, 261, 267, 272, 278, 283, |
| 398 | 289, 294, 300, 306, 311, 317, 322, 328, 333, 339, 344, 350, 356, 361, 367, 372, |
| 399 | 378, 383, 389, 394, 400, 406, 412, 418, 424, 429, 435, 441, 447, 453, 459, 465, |
| 400 | 471, 476, 482, 488, 494, 500, 505, 511, 516, 521, 526, 532, 537, 542, 547, 553, |
| 401 | 558, 563, 568, 574, 579, 584, 589, 595, 600, 607, 613, 620, 627, 633, 640, 647, |
| 402 | 653, 660, 667, 673, 680, 687, 693, 700, 705, 711, 716, 721, 726, 732, 737, 742, |
| 403 | 747, 753, 758, 763, 768, 774, 779, 784, 789, 795, 800, 806, 812, 818, 824, 829, |
| 404 | 835, 841, 847, 853, 859, 865, 871, 876, 882, 888, 894, 900, 906, 911, 917, 922, |
| 405 | 928, 933, 939, 944, 950, 956, 961, 967, 972, 978, 983, 989, 994, 1000, 1005, 1011, |
| 406 | 406 | 1016, 1021, 1026, 1032, 1037, 1042, 1047, 1053, 1058, 1063, 1068, 1074, 1079, 1084, 1089, 1095, |
| 407 | 407 | 1100, 1107, 1113, 1120, 1127, 1133, 1140, 1147, 1153, 1160, 1167, 1173, 1180, 1187, 1193, 1200, |
| 408 | 408 | 1203, 1206, 1209, 1212, 1216, 1219, 1222, 1225, 1228, 1231, 1234, 1238, 1241, 1244, 1247, 1250, |
| r22619 | r22620 | |
| 411 | 411 | |
| 412 | 412 | static const int dendego_pressure_table[0x100] = |
| 413 | 413 | { |
| 414 | | 0, 0, 0, 0, 5, 10, 14, 19, 24, 29, 33, 38, 43, 48, 52, 57, |
| 415 | | 62, 67, 71, 76, 81, 86, 90, 95, 100, 106, 112, 119, 125, 131, 138, 144, |
| 416 | | 150, 156, 162, 169, 175, 181, 188, 194, 200, 206, 212, 219, 225, 231, 238, 244, |
| 417 | | 250, 256, 262, 269, 275, 281, 288, 294, 300, 306, 312, 318, 324, 329, 335, 341, |
| 418 | | 347, 353, 359, 365, 371, 376, 382, 388, 394, 400, 407, 413, 420, 427, 433, 440, |
| 419 | | 447, 453, 460, 467, 473, 480, 487, 493, 500, 507, 514, 521, 529, 536, 543, 550, |
| 420 | | 557, 564, 571, 579, 586, 593, 600, 607, 614, 621, 629, 636, 643, 650, 657, 664, |
| 421 | | 671, 679, 686, 693, 700, 706, 712, 719, 725, 731, 738, 744, 750, 756, 762, 769, |
| 422 | | 775, 781, 788, 794, 800, 807, 814, 821, 829, 836, 843, 850, 857, 864, 871, 879, |
| 423 | | 886, 893, 900, 907, 914, 921, 929, 936, 943, 950, 957, 964, 971, 979, 986, 993, |
| 414 | 0, 0, 0, 0, 5, 10, 14, 19, 24, 29, 33, 38, 43, 48, 52, 57, |
| 415 | 62, 67, 71, 76, 81, 86, 90, 95, 100, 106, 112, 119, 125, 131, 138, 144, |
| 416 | 150, 156, 162, 169, 175, 181, 188, 194, 200, 206, 212, 219, 225, 231, 238, 244, |
| 417 | 250, 256, 262, 269, 275, 281, 288, 294, 300, 306, 312, 318, 324, 329, 335, 341, |
| 418 | 347, 353, 359, 365, 371, 376, 382, 388, 394, 400, 407, 413, 420, 427, 433, 440, |
| 419 | 447, 453, 460, 467, 473, 480, 487, 493, 500, 507, 514, 521, 529, 536, 543, 550, |
| 420 | 557, 564, 571, 579, 586, 593, 600, 607, 614, 621, 629, 636, 643, 650, 657, 664, |
| 421 | 671, 679, 686, 693, 700, 706, 712, 719, 725, 731, 738, 744, 750, 756, 762, 769, |
| 422 | 775, 781, 788, 794, 800, 807, 814, 821, 829, 836, 843, 850, 857, 864, 871, 879, |
| 423 | 886, 893, 900, 907, 914, 921, 929, 936, 943, 950, 957, 964, 971, 979, 986, 993, |
| 424 | 424 | 1000, 1008, 1015, 1023, 1031, 1038, 1046, 1054, 1062, 1069, 1077, 1085, 1092, 1100, 1108, 1115, |
| 425 | 425 | 1123, 1131, 1138, 1146, 1154, 1162, 1169, 1177, 1185, 1192, 1200, 1207, 1214, 1221, 1229, 1236, |
| 426 | 426 | 1243, 1250, 1257, 1264, 1271, 1279, 1286, 1293, 1300, 1307, 1314, 1321, 1329, 1336, 1343, 1350, |