Guest User

Untitled

a guest
Jan 23rd, 2018
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 64.80 KB | None | 0 0
  1. /***************************************************************************
  2.  
  3. Atari System 2 hardware
  4.  
  5. driver by Aaron Giles
  6.  
  7. Games supported:
  8. * Paperboy (1984)
  9. * 720 Degrees (1986) [2 sets]
  10. * Super Sprint (1986)
  11. * Championship Sprint (1986)
  12. * APB - All Points Bulletin (1987) [2 sets]
  13.  
  14. Known bugs:
  15. * none at this time
  16.  
  17. ****************************************************************************
  18.  
  19. Memory map
  20.  
  21. ****************************************************************************
  22.  
  23. ========================================================================
  24. MAIN CPU
  25. ========================================================================
  26. 0000-0FFF R/W xxxxxxxx xxxxxxxx Program RAM
  27. 1000-107F R/W xxxxxxxx xxxxxxxx Motion object palette RAM (64 entries)
  28. R/W xxxx---- -------- (Intensity)
  29. R/W ----xxxx -------- (Red)
  30. R/W -------- xxxx---- (Green)
  31. R/W -------- ----xxxx (Blue)
  32. 1080-10BF R/W xxxxxxxx xxxxxxxx Alphanumerics palette RAM (32 entries)
  33. 1100-11FF R/W xxxxxxxx xxxxxxxx Playfield palette RAM (128 entries)
  34. 1400 R -------- xxxxxxxx ADC data read
  35. 1400 W xxxxxx-- -------- Bank 1 ROM select
  36. 1402 W xxxxxx-- -------- Bank 2 ROM select
  37. 1480-148F W -------- -------- ADC strobe/select
  38. 1580 W -------- -------- Sound command read IRQ reset
  39. 15A0 W -------- -------- Sound CPU reset
  40. 15C0 W -------- -------- 32V IRQ reset
  41. 15E0 W -------- -------- VBLANK IRQ reset
  42. 1600 W -------- ----xxxx IRQ enable
  43. W -------- ----x--- (VBLANK IRQ enable)
  44. W -------- -----x-- (32V IRQ enable)
  45. W -------- ------x- (Sound response IRQ enable)
  46. W -------- -------x (Sound command read IRQ enable)
  47. 1680 W -------- xxxxxxxx Sound command
  48. 1700 W xxxxxxxx xx--xxxx Playfield X scroll/bank 1 select
  49. W xxxxxxxx xx------ (Playfield X scroll)
  50. W -------- ----xxxx (Playfield bank 1 select)
  51. 1780 W -xxxxxxx xx--xxxx Playfield Y scroll/bank 2 select
  52. W -xxxxxxx xx------ (Playfield Y scroll)
  53. W -------- ----xxxx (Playfield bank 2 select)
  54. 1800 R x------- xxxxxxxx Switch inputs
  55. R x------- -------- (Test switch)
  56. R -------- xx--xxxx (Game-specific switches)
  57. R -------- --x----- (Sound command buffer full)
  58. R -------- ---x---- (Sound response buffer full)
  59. 1800 W -------- -------- Watchdog reset
  60. 1C00 R -------- xxxxxxxx Sound response read
  61. 2000-37FF R/W xxx---xx xxxxxxxx Alphanumerics RAM (bank 0, 64x32 tiles)
  62. R/W xxx----- -------- (Palette select)
  63. R/W ------xx xxxxxxxx (Tile index)
  64. 3800-3FFF R/W xxxxxxxx xxxxxxxx Motion object RAM (bank 0, 256 entries x 4 words)
  65. R/W xxxxxxxx xx------ (0: Y position)
  66. R/W -------- -----xxx (0: Tile index, 3 MSB)
  67. R/W x------- -------- (1: Hold position from last object)
  68. R/W -x------ -------- (1: Horizontal flip)
  69. R/W --xxx--- -------- (1: Number of Y tiles - 1)
  70. R/W -----xxx xxxxxxxx (1: Tile index, 11 LSB)
  71. R/W xxxxxxxx xx------ (2: X position)
  72. R/W xx------ -------- (3: Priority)
  73. R/W -xxx---- -------- (3: Palette select)
  74. R/W -------- xxxxxxxx (3: Link to the next object)
  75. 2000-3FFF R/W --xxxxxx xxxxxxxx Playfield RAM (banks 2 & 3, 128x64 tiles)
  76. R/W --xxx--- -------- (Palette select)
  77. R/W -----x-- -------- (Tile bank select)
  78. R/W ------xx xxxxxxxx (Tile index, 10 LSB)
  79. 4000-5FFF R xxxxxxxx xxxxxxxx Bank 1 ROM
  80. 6000-7FFF R xxxxxxxx xxxxxxxx Bank 2 ROM
  81. 8000-FFFF R xxxxxxxx xxxxxxxx Program ROM (slapstic mapped here as well)
  82. ========================================================================
  83. Interrupts:
  84. IRQ0 = sound command read
  85. IRQ1 = sound command write
  86. IRQ2 = 32V
  87. IRQ3 = VBLANK
  88. ========================================================================
  89.  
  90.  
  91. ========================================================================
  92. SOUND CPU
  93. ========================================================================
  94. 0000-0FFF R/W xxxxxxxx Program RAM
  95. 1000-17FF R/W xxxxxxxx EEPROM
  96. 1800-180F R/W xxxxxxxx POKEY 1 (left) communications
  97. 1810-1813 R xxxxxxxx LETA analog inputs
  98. 1830-183F R/W xxxxxxxx POKEY 2 (right) communications
  99. 1850-1851 R/W xxxxxxxx YM2151 communications
  100. 1860 R xxxxxxxx Sound command read
  101. 1870 W xxxxxxxx TMS5220 data latch
  102. 1872 W -------- TMS5220 data strobe low
  103. 1873 W -------- TMS5220 data strobe high
  104. 1874 W xxxxxxxx Sound response write
  105. 1876 W ------xx Coin counters
  106. 1878 W -------- Interrupt acknowledge
  107. 187A W xxxxxxxx Mixer control
  108. W xxx----- (TMS5220 volume)
  109. W ---xx--- (POKEY volume)
  110. W -----xxx (YM2151 volume)
  111. 187C W --xxxx-- Misc. control bits
  112. W --x----- (TMS5220 frequency control)
  113. W ---x---- (LETA resolution control)
  114. W ----xx-- (LEDs)
  115. 187E W -------x Sound enable
  116. 4000-FFFF R xxxxxxxx Program ROM
  117. ========================================================================
  118. Interrupts:
  119. IRQ = YM2151 interrupt
  120. NMI = latch on sound command
  121. ========================================================================
  122.  
  123. ****************************************************************************/
  124.  
  125.  
  126. #include "driver.h"
  127. #include "cpu/t11/t11.h"
  128. #include "machine/atarigen.h"
  129. #include "slapstic.h"
  130. #include "atarisy2.h"
  131.  
  132.  
  133.  
  134. /*************************************
  135. *
  136. * Statics
  137. *
  138. *************************************/
  139.  
  140. static UINT8 interrupt_enable;
  141. static data16_t *bankselect;
  142.  
  143. static INT8 pedal_count;
  144.  
  145. static UINT8 has_tms5220;
  146. static UINT8 tms5220_data;
  147. static UINT8 tms5220_data_strobe;
  148.  
  149. static UINT8 which_adc;
  150.  
  151. static UINT8 p2portwr_state;
  152. static UINT8 p2portrd_state;
  153.  
  154.  
  155.  
  156. /*************************************
  157. *
  158. * Interrupt updating
  159. *
  160. *************************************/
  161.  
  162. static void update_interrupts(void)
  163. {
  164. if (atarigen_video_int_state)
  165. cpu_set_irq_line(0, 3, ASSERT_LINE);
  166. else
  167. cpu_set_irq_line(0, 3, CLEAR_LINE);
  168.  
  169. if (atarigen_scanline_int_state)
  170. cpu_set_irq_line(0, 2, ASSERT_LINE);
  171. else
  172. cpu_set_irq_line(0, 2, CLEAR_LINE);
  173.  
  174. if (p2portwr_state)
  175. cpu_set_irq_line(0, 1, ASSERT_LINE);
  176. else
  177. cpu_set_irq_line(0, 1, CLEAR_LINE);
  178.  
  179. if (p2portrd_state)
  180. cpu_set_irq_line(0, 0, ASSERT_LINE);
  181. else
  182. cpu_set_irq_line(0, 0, CLEAR_LINE);
  183. }
  184.  
  185.  
  186.  
  187. /*************************************
  188. *
  189. * Every 8-scanline update
  190. *
  191. *************************************/
  192.  
  193. static void scanline_update(int scanline)
  194. {
  195. if (scanline <= Machine->drv->screen_height)
  196. {
  197. /* generate the 32V interrupt (IRQ 2) */
  198. if ((scanline % 64) == 0)
  199. if (interrupt_enable & 4)
  200. atarigen_scanline_int_gen();
  201. }
  202. }
  203.  
  204.  
  205.  
  206. /*************************************
  207. *
  208. * Initialization
  209. *
  210. *************************************/
  211.  
  212. static MACHINE_INIT( atarisy2 )
  213. {
  214. atarigen_eeprom_reset();
  215. slapstic_reset();
  216. atarigen_interrupt_reset(update_interrupts);
  217. atarigen_sound_io_reset(1);
  218. atarigen_scanline_timer_reset(scanline_update, 64);
  219.  
  220. tms5220_data_strobe = 1;
  221.  
  222. p2portwr_state = 0;
  223. p2portrd_state = 0;
  224.  
  225. which_adc = 0;
  226. }
  227.  
  228.  
  229.  
  230. /*************************************
  231. *
  232. * Interrupt handlers
  233. *
  234. *************************************/
  235.  
  236. static INTERRUPT_GEN( vblank_int )
  237. {
  238. /* clock the VBLANK through */
  239. if (interrupt_enable & 8)
  240. atarigen_video_int_gen();
  241. }
  242.  
  243.  
  244. static WRITE16_HANDLER( int0_ack_w )
  245. {
  246. /* reset sound IRQ */
  247. p2portrd_state = 0;
  248. atarigen_update_interrupts();
  249. }
  250.  
  251.  
  252. static WRITE16_HANDLER( int1_ack_w )
  253. {
  254. /* reset sound CPU */
  255. if (ACCESSING_LSB)
  256. cpu_set_reset_line(1, (data & 1) ? ASSERT_LINE : CLEAR_LINE);
  257. }
  258.  
  259.  
  260. static void delayed_int_enable_w(int data)
  261. {
  262. interrupt_enable = data;
  263. }
  264.  
  265.  
  266. static WRITE16_HANDLER( int_enable_w )
  267. {
  268. if (offset == 0 && ACCESSING_LSB)
  269. timer_set(TIME_NOW, data, delayed_int_enable_w);
  270. }
  271.  
  272.  
  273.  
  274. /*************************************
  275. *
  276. * Bank selection.
  277. *
  278. *************************************/
  279.  
  280. static WRITE16_HANDLER( bankselect_w )
  281. {
  282. static int bankoffset[64] =
  283. {
  284. 0x28000, 0x20000, 0x18000, 0x10000,
  285. 0x2a000, 0x22000, 0x1a000, 0x12000,
  286. 0x2c000, 0x24000, 0x1c000, 0x14000,
  287. 0x2e000, 0x26000, 0x1e000, 0x16000,
  288. 0x48000, 0x40000, 0x38000, 0x30000,
  289. 0x4a000, 0x42000, 0x3a000, 0x32000,
  290. 0x4c000, 0x44000, 0x3c000, 0x34000,
  291. 0x4e000, 0x46000, 0x3e000, 0x36000,
  292. 0x68000, 0x60000, 0x58000, 0x50000,
  293. 0x6a000, 0x62000, 0x5a000, 0x52000,
  294. 0x6c000, 0x64000, 0x5c000, 0x54000,
  295. 0x6e000, 0x66000, 0x5e000, 0x56000,
  296. 0x88000, 0x80000, 0x78000, 0x70000,
  297. 0x8a000, 0x82000, 0x7a000, 0x72000,
  298. 0x8c000, 0x84000, 0x7c000, 0x74000,
  299. 0x8e000, 0x86000, 0x7e000, 0x76000
  300. };
  301.  
  302. int newword = bankselect[offset];
  303. UINT8 *base;
  304.  
  305. COMBINE_DATA(&newword);
  306. bankselect[offset] = newword;
  307.  
  308. base = &memory_region(REGION_CPU1)[bankoffset[(newword >> 10) & 0x3f]];
  309.  
  310. cpu_setbank(1 + offset, base);
  311. activecpu_set_reg(T11_BANK2 + offset, base - OP_RAM);
  312. }
  313.  
  314.  
  315.  
  316. /*************************************
  317. *
  318. * I/O read dispatch.
  319. *
  320. *************************************/
  321.  
  322. static READ16_HANDLER( switch_r )
  323. {
  324. int result = input_port_1_r(offset) | (input_port_2_r(offset) << 8);
  325.  
  326. if (atarigen_cpu_to_sound_ready) result ^= 0x20;
  327. if (atarigen_sound_to_cpu_ready) result ^= 0x10;
  328.  
  329. return result;
  330. }
  331.  
  332.  
  333. static READ_HANDLER( switch_6502_r )
  334. {
  335. int result = input_port_0_r(offset);
  336.  
  337. if (atarigen_cpu_to_sound_ready) result ^= 0x01;
  338. if (atarigen_sound_to_cpu_ready) result ^= 0x02;
  339. if (!has_tms5220 || tms5220_ready_r()) result ^= 0x04;
  340. if (!(input_port_2_r(offset) & 0x80)) result ^= 0x10;
  341.  
  342. return result;
  343. }
  344.  
  345.  
  346. static WRITE_HANDLER( switch_6502_w )
  347. {
  348. (void)offset;
  349.  
  350. if (has_tms5220)
  351. {
  352. data = 12 | ((data >> 5) & 1);
  353. tms5220_set_frequency(ATARI_CLOCK_20MHz/4 / (16 - data) / 2);
  354. }
  355. }
  356.  
  357.  
  358.  
  359. /*************************************
  360. *
  361. * Controls read
  362. *
  363. *************************************/
  364.  
  365. static WRITE16_HANDLER( adc_strobe_w )
  366. {
  367. which_adc = offset & 3;
  368. }
  369.  
  370.  
  371. static READ16_HANDLER( adc_r )
  372. {
  373. if (which_adc < pedal_count)
  374. return ~readinputport(3 + which_adc);
  375.  
  376. return readinputport(3 + which_adc) | 0xff00;
  377. }
  378.  
  379.  
  380. static READ_HANDLER( leta_r )
  381. {
  382. if (pedal_count == -1) /* 720 */
  383. {
  384. switch (offset & 3)
  385. {
  386. case 0:
  387. // <jake>
  388. // return readinputport(7) >> 8; // ORIGINAL LINE (returns 0)
  389. return readinputport(8) & 0xff;
  390. // </jake>
  391. case 1:
  392. return readinputport(7) & 0xff;
  393.  
  394. case 2: return 0xff;
  395. case 3: return 0xff;
  396. }
  397. }
  398.  
  399. return readinputport(7 + (offset & 3));
  400. }
  401.  
  402.  
  403.  
  404. /*************************************
  405. *
  406. * Global sound control
  407. *
  408. *************************************/
  409.  
  410. static WRITE_HANDLER( mixer_w )
  411. {
  412. atarigen_set_ym2151_vol((data & 7) * 100 / 7);
  413. atarigen_set_pokey_vol(((data >> 3) & 3) * 100 / 3);
  414. atarigen_set_tms5220_vol(((data >> 5) & 7) * 100 / 7);
  415. }
  416.  
  417.  
  418. static WRITE_HANDLER( sound_enable_w )
  419. {
  420. }
  421.  
  422.  
  423. static READ16_HANDLER( sound_r )
  424. {
  425. /* clear the p2portwr state on a p1portrd */
  426. p2portwr_state = 0;
  427. atarigen_update_interrupts();
  428.  
  429. /* handle it normally otherwise */
  430. return atarigen_sound_r(offset,0);
  431. }
  432.  
  433.  
  434. static WRITE_HANDLER( sound_6502_w )
  435. {
  436. /* clock the state through */
  437. p2portwr_state = (interrupt_enable & 2) != 0;
  438. atarigen_update_interrupts();
  439.  
  440. /* handle it normally otherwise */
  441. atarigen_6502_sound_w(offset, data);
  442. }
  443.  
  444.  
  445. static READ_HANDLER( sound_6502_r )
  446. {
  447. /* clock the state through */
  448. p2portrd_state = (interrupt_enable & 1) != 0;
  449. atarigen_update_interrupts();
  450.  
  451. /* handle it normally otherwise */
  452. return atarigen_6502_sound_r(offset);
  453. }
  454.  
  455.  
  456.  
  457. /*************************************
  458. *
  459. * Speech chip
  460. *
  461. *************************************/
  462.  
  463. static WRITE_HANDLER( tms5220_w )
  464. {
  465. tms5220_data = data;
  466. }
  467.  
  468.  
  469. static WRITE_HANDLER( tms5220_strobe_w )
  470. {
  471. if (!(offset & 1) && tms5220_data_strobe)
  472. if (has_tms5220)
  473. tms5220_data_w(0, tms5220_data);
  474. tms5220_data_strobe = offset & 1;
  475. }
  476.  
  477.  
  478.  
  479. /*************************************
  480. *
  481. * Misc. sound
  482. *
  483. *************************************/
  484.  
  485. static WRITE_HANDLER( coincount_w )
  486. {
  487. coin_counter_w(0, (data >> 0) & 1);
  488. coin_counter_w(1, (data >> 1) & 1);
  489. }
  490.  
  491.  
  492.  
  493. /*************************************
  494. *
  495. * Main CPU memory handlers
  496. *
  497. *************************************/
  498.  
  499. static MEMORY_READ16_START( main_readmem )
  500. { 0x0000, 0x0fff, MRA16_RAM },
  501. { 0x1000, 0x11ff, MRA16_RAM },
  502. { 0x1400, 0x1403, adc_r },
  503. { 0x1800, 0x1801, switch_r },
  504. { 0x1c00, 0x1c01, sound_r },
  505. { 0x2000, 0x3fff, atarisy2_videoram_r },
  506. { 0x4000, 0x5fff, MRA16_BANK1 },
  507. { 0x6000, 0x7fff, MRA16_BANK2 },
  508. { 0x8000, 0x81ff, atarisy2_slapstic_r },
  509. { 0x8200, 0xffff, MRA16_ROM },
  510. MEMORY_END
  511.  
  512.  
  513. static MEMORY_WRITE16_START( main_writemem )
  514. { 0x0000, 0x0fff, MWA16_RAM },
  515. { 0x1000, 0x11ff, atarisy2_paletteram_w, &paletteram16 },
  516. { 0x1400, 0x1403, bankselect_w, &bankselect },
  517. { 0x1480, 0x148f, adc_strobe_w },
  518. { 0x1580, 0x159f, int0_ack_w },
  519. { 0x15a0, 0x15bf, int1_ack_w },
  520. { 0x15c0, 0x15df, atarigen_scanline_int_ack_w },
  521. { 0x15e0, 0x15ff, atarigen_video_int_ack_w },
  522. { 0x1600, 0x1601, int_enable_w },
  523. { 0x1680, 0x1681, atarigen_sound_w },
  524. { 0x1700, 0x1701, atarisy2_xscroll_w, &atarigen_xscroll },
  525. { 0x1780, 0x1781, atarisy2_yscroll_w, &atarigen_yscroll },
  526. { 0x1800, 0x1801, watchdog_reset16_w },
  527. { 0x2000, 0x3fff, atarisy2_videoram_w },
  528. { 0x4000, 0x7fff, MWA16_ROM },
  529. { 0x8000, 0x81ff, atarisy2_slapstic_w, &atarisy2_slapstic },
  530. { 0x8200, 0xffff, MWA16_ROM },
  531. MEMORY_END
  532.  
  533.  
  534.  
  535. /*************************************
  536. *
  537. * Sound CPU memory handlers
  538. *
  539. *************************************/
  540.  
  541. static MEMORY_READ_START( sound_readmem )
  542. { 0x0000, 0x0fff, MRA_RAM },
  543. { 0x1000, 0x17ff, MRA_RAM },
  544. { 0x1800, 0x180f, pokey1_r },
  545. { 0x1810, 0x1813, leta_r },
  546. { 0x1830, 0x183f, pokey2_r },
  547. { 0x1840, 0x1840, switch_6502_r },
  548. { 0x1850, 0x1851, YM2151_status_port_0_r },
  549. { 0x1860, 0x1860, sound_6502_r },
  550. { 0x4000, 0xffff, MRA_ROM },
  551. MEMORY_END
  552.  
  553.  
  554. static MEMORY_WRITE_START( sound_writemem )
  555. { 0x0000, 0x0fff, MWA_RAM },
  556. { 0x1000, 0x17ff, MWA_RAM, (data8_t **)&atarigen_eeprom, &atarigen_eeprom_size },
  557. { 0x1800, 0x180f, pokey1_w },
  558. { 0x1830, 0x183f, pokey2_w },
  559. { 0x1850, 0x1850, YM2151_register_port_0_w },
  560. { 0x1851, 0x1851, YM2151_data_port_0_w },
  561. { 0x1870, 0x1870, tms5220_w },
  562. { 0x1872, 0x1873, tms5220_strobe_w },
  563. { 0x1874, 0x1874, sound_6502_w },
  564. { 0x1876, 0x1876, coincount_w },
  565. { 0x1878, 0x1878, atarigen_6502_irq_ack_w },
  566. { 0x187a, 0x187a, mixer_w },
  567. { 0x187c, 0x187c, switch_6502_w },
  568. { 0x187e, 0x187e, sound_enable_w },
  569. { 0x4000, 0xffff, MWA_ROM },
  570. MEMORY_END
  571.  
  572.  
  573.  
  574. /*************************************
  575. *
  576. * Port definitions
  577. *
  578. *************************************/
  579.  
  580. INPUT_PORTS_START( paperboy )
  581. PORT_START /* 1840 (sound) */
  582. PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL )
  583. PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL )
  584. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL )
  585. PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
  586. PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL )
  587. PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
  588. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  589. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
  590.  
  591. PORT_START /* 1800 */
  592. PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
  593. PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
  594. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  595. PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  596. PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )
  597. PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )
  598. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
  599. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  600. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
  601. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  602.  
  603. PORT_START /* 1801 */
  604. PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
  605. PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  606.  
  607. PORT_START /* ADC0 */
  608. PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_X | IPF_PLAYER1, 100, 10, 0x10, 0xf0 )
  609.  
  610. PORT_START /* ADC1 */
  611. PORT_ANALOG( 0xff, 0x80, IPT_AD_STICK_Y | IPF_PLAYER1, 100, 10, 0x10, 0xf0 )
  612.  
  613. PORT_START /* ADC2 */
  614. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  615.  
  616. PORT_START /* ADC3 */
  617. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  618.  
  619. PORT_START /* LETA0 */
  620. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  621.  
  622. PORT_START /* LETA1 */
  623. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  624.  
  625. PORT_START /* LETA2 */
  626. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  627.  
  628. PORT_START /* LETA3 */
  629. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  630.  
  631. PORT_START /* DSW0 */
  632. PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  633. PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
  634. PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
  635. PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
  636. PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
  637. PORT_DIPNAME( 0x0c, 0x00, "Right Coin" )
  638. PORT_DIPSETTING( 0x00, "*1" )
  639. PORT_DIPSETTING( 0x04, "*4" )
  640. PORT_DIPSETTING( 0x08, "*5" )
  641. PORT_DIPSETTING( 0x0c, "*6" )
  642. PORT_DIPNAME( 0x10, 0x00, "Left Coin" )
  643. PORT_DIPSETTING( 0x00, "*1" )
  644. PORT_DIPSETTING( 0x10, "*2" )
  645. PORT_DIPNAME( 0xe0, 0x00, "Bonus Coins" )
  646. PORT_DIPSETTING( 0x00, "None" )
  647. PORT_DIPSETTING( 0x80, "1 each 5" )
  648. PORT_DIPSETTING( 0x40, "1 each 4" )
  649. PORT_DIPSETTING( 0xa0, "1 each 3" )
  650. PORT_DIPSETTING( 0x60, "2 each 4" )
  651. PORT_DIPSETTING( 0x20, "1 each 2" )
  652. PORT_DIPSETTING( 0xc0, "1 each ?" )
  653. PORT_DIPSETTING( 0xe0, DEF_STR( Free_Play ) )
  654.  
  655. PORT_START /* DSW1 */
  656. PORT_DIPNAME( 0x03, 0x01, DEF_STR( Difficulty ) )
  657. PORT_DIPSETTING( 0x01, "Easy" )
  658. PORT_DIPSETTING( 0x02, "Medium" )
  659. PORT_DIPSETTING( 0x00, "Med. Hard" )
  660. PORT_DIPSETTING( 0x03, "Hard" )
  661. PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Bonus_Life ) )
  662. PORT_DIPSETTING( 0x08, "10000" )
  663. PORT_DIPSETTING( 0x00, "15000" )
  664. PORT_DIPSETTING( 0x0c, "20000" )
  665. PORT_DIPSETTING( 0x04, "None" )
  666. PORT_DIPNAME( 0x30, 0x20, DEF_STR( Lives ) )
  667. PORT_DIPSETTING( 0x20, "3" )
  668. PORT_DIPSETTING( 0x00, "4" )
  669. PORT_DIPSETTING( 0x30, "5" )
  670. PORT_BITX( 0, 0x10, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", IP_KEY_NONE, IP_JOY_NONE )
  671. PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  672. PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
  673. PORT_DIPSETTING( 0x40, DEF_STR( On ) )
  674. PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  675. PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
  676. PORT_DIPSETTING( 0x80, DEF_STR( On ) )
  677. INPUT_PORTS_END
  678.  
  679.  
  680. INPUT_PORTS_START( 720 )
  681. PORT_START /* 1840 (sound) */
  682. PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL )
  683. PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL )
  684. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL )
  685. PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
  686. PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL )
  687. PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
  688. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  689. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
  690.  
  691. PORT_START /* 1800 */
  692. PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  693. PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  694. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  695. PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  696. PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )
  697. PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )
  698. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
  699. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  700. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
  701. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  702.  
  703. PORT_START /* 1801 */
  704. PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
  705. PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  706.  
  707. PORT_START /* ADC0 */
  708. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  709.  
  710. PORT_START /* ADC1 */
  711. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  712.  
  713. PORT_START /* ADC2 */
  714. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  715.  
  716. PORT_START /* ADC3 */
  717. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  718.  
  719. PORT_START /* LETA0/1 */
  720. /* <Jake> */
  721. //PORT_ANALOG( 0xffff, 0x0000, IPT_DIAL | IPF_PLAYER1, 30, 10, 0, 0 ) // ORIGINAL LINE
  722. PORT_ANALOG( 0xffff, 0x00, IPT_TRACKBALL_X | IPF_PLAYER1, 30, 10, 0, 0 ) // TRACKBALL FROM MARBLE MADNESS & modified to look like 720 line
  723. /* <Jake> */
  724.  
  725. PORT_START /* filler */
  726. /* <Jake> */
  727. //PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) // Original line
  728. PORT_ANALOG( 0xffff, 0x00, IPT_TRACKBALL_Y | IPF_PLAYER1, 1, 0, 0, 0 ) // TRACKBALL FROM MARBLE MADNESS & modified to look like 720 line
  729. /* </Jake> */
  730.  
  731. PORT_START /* LETA2 */
  732. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  733.  
  734. PORT_START /* LETA3 */
  735. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  736.  
  737. PORT_START /* DSW0 */
  738. PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  739. PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
  740. PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
  741. PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
  742. PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
  743. PORT_DIPNAME( 0x0c, 0x00, "Right Coin" )
  744. PORT_DIPSETTING( 0x00, "*1" )
  745. PORT_DIPSETTING( 0x04, "*4" )
  746. PORT_DIPSETTING( 0x08, "*5" )
  747. PORT_DIPSETTING( 0x0c, "*6" )
  748. PORT_DIPNAME( 0x10, 0x00, "Left Coin" )
  749. PORT_DIPSETTING( 0x00, "*1" )
  750. PORT_DIPSETTING( 0x10, "*2" )
  751. PORT_DIPNAME( 0xe0, 0x00, "Bonus Coins" )
  752. PORT_DIPSETTING( 0x00, "None" )
  753. /* PORT_DIPSETTING( 0xc0, "None" )*/
  754. PORT_DIPSETTING( 0x80, "1 each 5" )
  755. PORT_DIPSETTING( 0x40, "1 each 4" )
  756. PORT_DIPSETTING( 0xa0, "1 each 3" )
  757. PORT_DIPSETTING( 0x60, "2 each 4" )
  758. PORT_DIPSETTING( 0x20, "1 each 2" )
  759. PORT_DIPSETTING( 0xe0, DEF_STR( Free_Play ) )
  760.  
  761. PORT_START /* DSW1 */
  762. PORT_DIPNAME( 0x03, 0x01, DEF_STR( Bonus_Life ) )
  763. PORT_DIPSETTING( 0x01, "3000" )
  764. PORT_DIPSETTING( 0x00, "5000" )
  765. PORT_DIPSETTING( 0x02, "8000" )
  766. PORT_DIPSETTING( 0x03, "12000" )
  767. PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Difficulty ) )
  768. PORT_DIPSETTING( 0x04, "Easy" )
  769. PORT_DIPSETTING( 0x00, "Medium" )
  770. PORT_DIPSETTING( 0x08, "Hard" )
  771. PORT_DIPSETTING( 0x0c, "Hardest" )
  772. PORT_DIPNAME( 0x30, 0x10, "Maximum Add. A. Coins" )
  773. PORT_DIPSETTING( 0x10, "0" )
  774. PORT_DIPSETTING( 0x20, "1" )
  775. PORT_DIPSETTING( 0x00, "2" )
  776. PORT_DIPSETTING( 0x30, "3" )
  777. PORT_DIPNAME( 0xc0, 0x40, "Coins Required" )
  778. PORT_DIPSETTING( 0x80, "3 to Start, 2 to Continue" )
  779. PORT_DIPSETTING( 0xc0, "3 to Start, 1 to Continue" )
  780. PORT_DIPSETTING( 0x00, "2 to Start, 1 to Continue" )
  781. PORT_DIPSETTING( 0x40, "1 to Start, 1 to Continue" )
  782. INPUT_PORTS_END
  783.  
  784.  
  785. INPUT_PORTS_START( ssprint )
  786. PORT_START /* 1840 (sound) */
  787. PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL )
  788. PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL )
  789. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL )
  790. PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
  791. PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL )
  792. PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
  793. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  794. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
  795.  
  796. PORT_START /* 1800 */
  797. PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
  798. PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
  799. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
  800. PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START3 )
  801. PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )
  802. PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )
  803. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  804. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  805.  
  806. PORT_START /* 1801 */
  807. PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
  808. PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  809.  
  810. PORT_START /* ADC0 */
  811. PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER1, 100, 4, 0x00, 0x3f )
  812.  
  813. PORT_START /* ADC1 */
  814. PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER2, 100, 4, 0x00, 0x3f )
  815.  
  816. PORT_START /* ADC2 */
  817. PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER3, 100, 4, 0x00, 0x3f )
  818.  
  819. PORT_START /* ADC3 */
  820. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  821.  
  822. PORT_START /* LETA0 */
  823. PORT_ANALOG( 0xff, 0x40, IPT_DIAL | IPF_PLAYER1, 25, 10, 0x00, 0x7f )
  824.  
  825. PORT_START /* LETA1 */
  826. PORT_ANALOG( 0xff, 0x40, IPT_DIAL | IPF_PLAYER2, 25, 10, 0x00, 0x7f )
  827.  
  828. PORT_START /* LETA2 */
  829. PORT_ANALOG( 0xff, 0x40, IPT_DIAL | IPF_PLAYER3, 25, 10, 0x00, 0x7f )
  830.  
  831. PORT_START /* LETA3 */
  832. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  833.  
  834. PORT_START /* DSW0 */
  835. PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  836. PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
  837. PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
  838. PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
  839. PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
  840. PORT_DIPNAME( 0x1c, 0x00, "Coin Multiplier" )
  841. PORT_DIPSETTING( 0x00, "*1" )
  842. PORT_DIPSETTING( 0x04, "*2" )
  843. PORT_DIPSETTING( 0x08, "*3" )
  844. PORT_DIPSETTING( 0x0c, "*4" )
  845. PORT_DIPSETTING( 0x10, "*5" )
  846. PORT_DIPSETTING( 0x14, "*6" )
  847. PORT_DIPSETTING( 0x18, "*7" )
  848. PORT_DIPSETTING( 0x1c, "*8" )
  849. PORT_DIPNAME( 0xe0, 0x00, "Bonus Coins" )
  850. PORT_DIPSETTING( 0x00, "None" )
  851. PORT_DIPSETTING( 0x80, "1 each 5" )
  852. PORT_DIPSETTING( 0x40, "1 each 4" )
  853. PORT_DIPSETTING( 0xa0, "1 each 3" )
  854. PORT_DIPSETTING( 0x60, "2 each 4" )
  855. PORT_DIPSETTING( 0x20, "1 each 2" )
  856. PORT_DIPSETTING( 0xc0, "1 each ?" )
  857. PORT_DIPSETTING( 0xe0, DEF_STR( Free_Play ) )
  858.  
  859. PORT_START /* DSW1 */
  860. PORT_DIPNAME( 0x03, 0x01, DEF_STR( Difficulty ) )
  861. PORT_DIPSETTING( 0x01, "Easy" )
  862. PORT_DIPSETTING( 0x00, "Medium" )
  863. PORT_DIPSETTING( 0x02, "Med. Hard" )
  864. PORT_DIPSETTING( 0x03, "Hard" )
  865. PORT_DIPNAME( 0x0c, 0x04, "Obstacles" )
  866. PORT_DIPSETTING( 0x04, "Easy" )
  867. PORT_DIPSETTING( 0x00, "Medium" )
  868. PORT_DIPSETTING( 0x08, "Med. Hard" )
  869. PORT_DIPSETTING( 0x0c, "Hard" )
  870. PORT_DIPNAME( 0x30, 0x00, "Wrenches" )
  871. PORT_DIPSETTING( 0x10, "2" )
  872. PORT_DIPSETTING( 0x00, "3" )
  873. PORT_DIPSETTING( 0x20, "4" )
  874. PORT_DIPSETTING( 0x30, "5" )
  875. PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  876. PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
  877. PORT_DIPSETTING( 0x40, DEF_STR( On ) )
  878. PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  879. PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
  880. PORT_DIPSETTING( 0x80, DEF_STR( On ) )
  881. INPUT_PORTS_END
  882.  
  883.  
  884. INPUT_PORTS_START( csprint )
  885. PORT_START /* 1840 (sound) */
  886. PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL )
  887. PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL )
  888. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL )
  889. PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
  890. PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL )
  891. PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
  892. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  893. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
  894.  
  895. PORT_START /* 1800 */
  896. PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  897. PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  898. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  899. PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
  900. PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )
  901. PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )
  902. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
  903. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  904.  
  905. PORT_START /* 1801 */
  906. PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
  907. PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  908.  
  909. PORT_START /* ADC0 */
  910. PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER1, 100, 4, 0x00, 0x3f )
  911.  
  912. PORT_START /* ADC1 */
  913. PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER2, 100, 4, 0x00, 0x3f )
  914.  
  915. PORT_START /* ADC2 */
  916. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  917.  
  918. PORT_START /* ADC3 */
  919. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  920.  
  921. PORT_START /* LETA0 */
  922. PORT_ANALOG( 0xff, 0x40, IPT_DIAL | IPF_PLAYER1, 25, 10, 0x00, 0x7f )
  923.  
  924. PORT_START /* LETA1 */
  925. PORT_ANALOG( 0xff, 0x40, IPT_DIAL | IPF_PLAYER2, 25, 10, 0x00, 0x7f )
  926.  
  927. PORT_START /* LETA2 */
  928. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  929.  
  930. PORT_START /* LETA3 */
  931. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  932.  
  933. PORT_START /* DSW0 */
  934. PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  935. PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
  936. PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
  937. PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
  938. PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
  939. PORT_DIPNAME( 0x1c, 0x00, "Coin Multiplier" )
  940. PORT_DIPSETTING( 0x00, "*1" )
  941. PORT_DIPSETTING( 0x04, "*2" )
  942. PORT_DIPSETTING( 0x08, "*3" )
  943. PORT_DIPSETTING( 0x0c, "*4" )
  944. PORT_DIPSETTING( 0x10, "*5" )
  945. PORT_DIPSETTING( 0x14, "*6" )
  946. PORT_DIPSETTING( 0x18, "*7" )
  947. PORT_DIPSETTING( 0x1c, "*8" )
  948. PORT_DIPNAME( 0xe0, 0x00, "Bonus Coins" )
  949. PORT_DIPSETTING( 0x00, "None" )
  950. PORT_DIPSETTING( 0x80, "1 each 5" )
  951. PORT_DIPSETTING( 0x40, "1 each 4" )
  952. PORT_DIPSETTING( 0xa0, "1 each 3" )
  953. PORT_DIPSETTING( 0x60, "2 each 4" )
  954. PORT_DIPSETTING( 0x20, "1 each 2" )
  955. PORT_DIPSETTING( 0xc0, "1 each ?" )
  956. PORT_DIPSETTING( 0xe0, DEF_STR( Free_Play ) )
  957.  
  958. PORT_START /* DSW1 */
  959. PORT_DIPNAME( 0x03, 0x01, DEF_STR( Difficulty ) )
  960. PORT_DIPSETTING( 0x01, "Easy" )
  961. PORT_DIPSETTING( 0x00, "Medium" )
  962. PORT_DIPSETTING( 0x02, "Med. Hard" )
  963. PORT_DIPSETTING( 0x03, "Hard" )
  964. PORT_DIPNAME( 0x0c, 0x04, "Obstacles" )
  965. PORT_DIPSETTING( 0x04, "Easy" )
  966. PORT_DIPSETTING( 0x00, "Medium" )
  967. PORT_DIPSETTING( 0x08, "Med. Hard" )
  968. PORT_DIPSETTING( 0x0c, "Hard" )
  969. PORT_DIPNAME( 0x30, 0x00, "Wrenches" )
  970. PORT_DIPSETTING( 0x10, "2" )
  971. PORT_DIPSETTING( 0x00, "3" )
  972. PORT_DIPSETTING( 0x20, "4" )
  973. PORT_DIPSETTING( 0x30, "5" )
  974. PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  975. PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
  976. PORT_DIPSETTING( 0x40, DEF_STR( On ) )
  977. PORT_DIPNAME( 0x80, 0x80, "Auto High Score Reset" )
  978. PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
  979. PORT_DIPSETTING( 0x00, DEF_STR( On ) )
  980. INPUT_PORTS_END
  981.  
  982.  
  983. INPUT_PORTS_START( apb )
  984. PORT_START /* 1840 (sound) */
  985. PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL )
  986. PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL )
  987. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL )
  988. PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
  989. PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL )
  990. PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
  991. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  992. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  993.  
  994. PORT_START /* 1800 */
  995. PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
  996. PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  997. PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
  998. PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
  999. PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL )
  1000. PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL )
  1001. PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
  1002. PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
  1003.  
  1004. PORT_START /* 1801 */
  1005. PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
  1006. PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  1007.  
  1008. PORT_START /* ADC0 */
  1009. PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
  1010.  
  1011. PORT_START /* ADC1 */
  1012. PORT_ANALOG( 0xff, 0x00, IPT_PEDAL | IPF_PLAYER1, 100, 4, 0x00, 0x3f )
  1013.  
  1014. PORT_START /* ADC2 */
  1015. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1016.  
  1017. PORT_START /* ADC3 */
  1018. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1019.  
  1020. PORT_START /* LETA0 */
  1021. PORT_ANALOG( 0xff, 0x40, IPT_DIAL | IPF_PLAYER1, 25, 10, 0x00, 0x7f )
  1022.  
  1023. PORT_START /* LETA1 */
  1024. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1025.  
  1026. PORT_START /* LETA2 */
  1027. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1028.  
  1029. PORT_START /* LETA3 */
  1030. PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1031.  
  1032. PORT_START /* DSW0 */
  1033. PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  1034. PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
  1035. PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
  1036. PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
  1037. PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
  1038. PORT_DIPNAME( 0x0c, 0x00, "Right Coin" )
  1039. PORT_DIPSETTING( 0x00, "*1" )
  1040. PORT_DIPSETTING( 0x04, "*4" )
  1041. PORT_DIPSETTING( 0x08, "*5" )
  1042. PORT_DIPSETTING( 0x0c, "*6" )
  1043. PORT_DIPNAME( 0x10, 0x00, "Left Coin" )
  1044. PORT_DIPSETTING( 0x00, "*1" )
  1045. PORT_DIPSETTING( 0x10, "*2" )
  1046. PORT_DIPNAME( 0xe0, 0x00, "Bonus Coins" )
  1047. PORT_DIPSETTING( 0x00, "None" )
  1048. PORT_DIPSETTING( 0xc0, "1 each 6" )
  1049. PORT_DIPSETTING( 0xa0, "1 each 5" )
  1050. PORT_DIPSETTING( 0x80, "1 each 4" )
  1051. PORT_DIPSETTING( 0x60, "1 each 3" )
  1052. PORT_DIPSETTING( 0x40, "1 each 2" )
  1053. PORT_DIPSETTING( 0x20, "1 each 1" )
  1054. PORT_DIPSETTING( 0xe0, DEF_STR( Free_Play ) )
  1055.  
  1056. PORT_START /* DSW1 */
  1057. PORT_DIPNAME( 0x01, 0x01, "Attract Lights" )
  1058. PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
  1059. PORT_DIPSETTING( 0x00, DEF_STR( On ) )
  1060. PORT_DIPNAME( 0x06, 0x06, "Max Continues" )
  1061. PORT_DIPSETTING( 0x02, "3" )
  1062. PORT_DIPSETTING( 0x04, "10" )
  1063. PORT_DIPSETTING( 0x00, "25" )
  1064. PORT_DIPSETTING( 0x06, "199" )
  1065. PORT_DIPNAME( 0x38, 0x38, DEF_STR( Difficulty ) )
  1066. PORT_DIPSETTING( 0x38, "1 (Easy)" )
  1067. PORT_DIPSETTING( 0x30, "2" )
  1068. PORT_DIPSETTING( 0x28, "3" )
  1069. PORT_DIPSETTING( 0x00, "4" )
  1070. PORT_DIPSETTING( 0x20, "5" )
  1071. PORT_DIPSETTING( 0x10, "6" )
  1072. PORT_DIPSETTING( 0x08, "7" )
  1073. PORT_DIPSETTING( 0x18, "8 (Hard)" )
  1074. PORT_DIPNAME( 0xc0, 0x40, "Coins Required" )
  1075. PORT_DIPSETTING( 0x80, "3 to Start, 2 to Continue" )
  1076. PORT_DIPSETTING( 0xc0, "3 to Start, 1 to Continue" )
  1077. PORT_DIPSETTING( 0x00, "2 to Start, 1 to Continue" )
  1078. PORT_DIPSETTING( 0x40, "1 to Start, 1 to Continue" )
  1079. INPUT_PORTS_END
  1080.  
  1081.  
  1082.  
  1083. /*************************************
  1084. *
  1085. * Graphics definitions
  1086. *
  1087. *************************************/
  1088.  
  1089. static struct GfxLayout anlayout =
  1090. {
  1091. 8,8,
  1092. RGN_FRAC(1,1),
  1093. 2,
  1094. { 0, 4 },
  1095. { 0, 1, 2, 3, 8, 9, 10, 11 },
  1096. { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
  1097. 8*16
  1098. };
  1099.  
  1100.  
  1101. static struct GfxLayout pflayout =
  1102. {
  1103. 8,8,
  1104. RGN_FRAC(1,2),
  1105. 4,
  1106. { 0, 4, RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4 },
  1107. { 0, 1, 2, 3, 8, 9, 10, 11 },
  1108. { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
  1109. 8*16
  1110. };
  1111.  
  1112.  
  1113. static struct GfxLayout molayout =
  1114. {
  1115. 16,16,
  1116. RGN_FRAC(1,2),
  1117. 4,
  1118. { 0, 4, RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4 },
  1119. { 0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27 },
  1120. { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
  1121. 8*64
  1122. };
  1123.  
  1124.  
  1125. static struct GfxDecodeInfo gfxdecodeinfo[] =
  1126. {
  1127. { REGION_GFX1, 0, &pflayout, 128, 8 },
  1128. { REGION_GFX2, 0, &molayout, 0, 4 },
  1129. { REGION_GFX3, 0, &anlayout, 64, 8 },
  1130. { -1 }
  1131. };
  1132.  
  1133.  
  1134.  
  1135. /*************************************
  1136. *
  1137. * Sound definitions
  1138. *
  1139. *************************************/
  1140.  
  1141. static struct YM2151interface ym2151_interface =
  1142. {
  1143. 1,
  1144. ATARI_CLOCK_14MHz/4,
  1145. { YM3012_VOL(80,MIXER_PAN_LEFT,80,MIXER_PAN_RIGHT) },
  1146. { 0 }
  1147. };
  1148.  
  1149.  
  1150. static struct POKEYinterface pokey_interface =
  1151. {
  1152. 2,
  1153. ATARI_CLOCK_14MHz/8,
  1154. { MIXER(60,MIXER_PAN_LEFT), MIXER(60,MIXER_PAN_RIGHT) },
  1155. /* The 8 pot handlers */
  1156. { 0, 0 },
  1157. { 0, 0 },
  1158. { 0, 0 },
  1159. { 0, 0 },
  1160. { 0, 0 },
  1161. { 0, 0 },
  1162. { 0, 0 },
  1163. { 0, 0 },
  1164. /* The allpot handler */
  1165. { input_port_11_r, input_port_12_r }, /* dip switches */
  1166. };
  1167.  
  1168.  
  1169. static struct TMS5220interface tms5220_interface =
  1170. {
  1171. ATARI_CLOCK_20MHz/4/4/2,
  1172. 100,
  1173. 0
  1174. };
  1175.  
  1176.  
  1177.  
  1178. /*************************************
  1179. *
  1180. * Machine driver
  1181. *
  1182. *************************************/
  1183.  
  1184. static struct t11_setup t11_data =
  1185. {
  1186. 0x36ff /* initial mode word has DAL15,14,11,8 pulled low */
  1187. };
  1188.  
  1189.  
  1190. static MACHINE_DRIVER_START( atarisy2 )
  1191.  
  1192. /* basic machine hardware */
  1193. MDRV_CPU_ADD_TAG("main", T11, ATARI_CLOCK_20MHz/2)
  1194. MDRV_CPU_CONFIG(t11_data)
  1195. MDRV_CPU_MEMORY(main_readmem,main_writemem)
  1196. MDRV_CPU_VBLANK_INT(vblank_int,1)
  1197.  
  1198. MDRV_CPU_ADD_TAG("sound", M6502, ATARI_CLOCK_14MHz/8)
  1199. MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
  1200. MDRV_CPU_PERIODIC_INT(atarigen_6502_irq_gen,(UINT32)(1000000000.0/((double)ATARI_CLOCK_20MHz/2/16/16/16/10)))
  1201.  
  1202. MDRV_FRAMES_PER_SECOND(60)
  1203. MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
  1204.  
  1205. MDRV_MACHINE_INIT(atarisy2)
  1206. MDRV_NVRAM_HANDLER(atarigen)
  1207.  
  1208. /* video hardware */
  1209. MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_UPDATE_BEFORE_VBLANK)
  1210. MDRV_SCREEN_SIZE(64*8, 48*8)
  1211. MDRV_VISIBLE_AREA(0*8, 64*8-1, 0*8, 48*8-1)
  1212. MDRV_GFXDECODE(gfxdecodeinfo)
  1213. MDRV_PALETTE_LENGTH(256)
  1214.  
  1215. MDRV_VIDEO_START(atarisy2)
  1216. MDRV_VIDEO_UPDATE(atarisy2)
  1217.  
  1218. /* sound hardware */
  1219. MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  1220. MDRV_SOUND_ADD_TAG("ym", YM2151, ym2151_interface)
  1221. MDRV_SOUND_ADD_TAG("pokey", POKEY, pokey_interface)
  1222. MDRV_SOUND_ADD_TAG("tms", TMS5220, tms5220_interface)
  1223. MACHINE_DRIVER_END
  1224.  
  1225.  
  1226. static MACHINE_DRIVER_START( 720 )
  1227.  
  1228. /* basic machine hardware */
  1229. MDRV_IMPORT_FROM(atarisy2)
  1230.  
  1231. MDRV_CPU_REPLACE("sound", M6502, 2200000) /* artifically high to prevent deadlock at startup ATARI_CLOCK_14MHz/8,*/
  1232. MACHINE_DRIVER_END
  1233.  
  1234.  
  1235. static MACHINE_DRIVER_START( sprint )
  1236.  
  1237. /* basic machine hardware */
  1238. MDRV_IMPORT_FROM(atarisy2)
  1239.  
  1240. /* sound hardware */
  1241. MDRV_SOUND_REMOVE("tms")
  1242. MACHINE_DRIVER_END
  1243.  
  1244.  
  1245.  
  1246. /*************************************
  1247. *
  1248. * ROM definition(s)
  1249. *
  1250. *************************************/
  1251.  
  1252. ROM_START( paperboy )
  1253. ROM_REGION( 0x90000, REGION_CPU1, 0 ) /* 9*64k for T11 code */
  1254. ROM_LOAD16_BYTE( "cpu_l07.bin", 0x08000, 0x04000, 0x4024bb9b )
  1255. ROM_LOAD16_BYTE( "cpu_n07.bin", 0x08001, 0x04000, 0x0260901a )
  1256. ROM_LOAD16_BYTE( "cpu_f06.bin", 0x10000, 0x04000, 0x3fea86ac )
  1257. ROM_LOAD16_BYTE( "cpu_n06.bin", 0x10001, 0x04000, 0x711b17ba )
  1258. ROM_LOAD16_BYTE( "cpu_j06.bin", 0x30000, 0x04000, 0xa754b12d )
  1259. ROM_LOAD16_BYTE( "cpu_p06.bin", 0x30001, 0x04000, 0x89a1ff9c )
  1260. ROM_LOAD16_BYTE( "cpu_k06.bin", 0x50000, 0x04000, 0x290bb034 )
  1261. ROM_LOAD16_BYTE( "cpu_r06.bin", 0x50001, 0x04000, 0x826993de )
  1262. ROM_LOAD16_BYTE( "cpu_l06.bin", 0x70000, 0x04000, 0x8a754466 )
  1263. ROM_LOAD16_BYTE( "cpu_s06.bin", 0x70001, 0x04000, 0x224209f9 )
  1264.  
  1265. ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for 6502 code */
  1266. ROM_LOAD( "cpu_a02.bin", 0x04000, 0x04000, 0x4a759092 )
  1267. ROM_LOAD( "cpu_b02.bin", 0x08000, 0x04000, 0xe4e7a8b9 )
  1268. ROM_LOAD( "cpu_c02.bin", 0x0c000, 0x04000, 0xd44c2aa2 )
  1269.  
  1270. ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
  1271. ROM_LOAD( "vid_a06.bin", 0x000000, 0x08000, 0xb32ffddf ) /* playfield, planes 0/1 */
  1272. ROM_LOAD( "vid_b06.bin", 0x00c000, 0x04000, 0x301b849d )
  1273. ROM_LOAD( "vid_c06.bin", 0x010000, 0x08000, 0x7bb59d68 ) /* playfield, planes 2/3 */
  1274. ROM_LOAD( "vid_d06.bin", 0x01c000, 0x04000, 0x1a1d4ba8 )
  1275.  
  1276. ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1277. ROM_LOAD( "vid_l06.bin", 0x000000, 0x08000, 0x067ef202 ) /* motion objects, planes 0/1 */
  1278. ROM_LOAD( "vid_k06.bin", 0x008000, 0x08000, 0x76b977c4 )
  1279. ROM_LOAD( "vid_j06.bin", 0x010000, 0x08000, 0x2a3cc8d0 )
  1280. ROM_LOAD( "vid_h06.bin", 0x018000, 0x08000, 0x6763a321 )
  1281. ROM_LOAD( "vid_s06.bin", 0x020000, 0x08000, 0x0a321b7b ) /* motion objects, planes 2/3 */
  1282. ROM_LOAD( "vid_p06.bin", 0x028000, 0x08000, 0x5bd089ee )
  1283. ROM_LOAD( "vid_n06.bin", 0x030000, 0x08000, 0xc34a517d )
  1284. ROM_LOAD( "vid_m06.bin", 0x038000, 0x08000, 0xdf723956 )
  1285.  
  1286. ROM_REGION( 0x2000, REGION_GFX3, ROMREGION_DISPOSE )
  1287. ROM_LOAD( "vid_t06.bin", 0x000000, 0x02000, 0x60d7aebb ) /* alphanumerics */
  1288. ROM_END
  1289.  
  1290.  
  1291. ROM_START( 720 )
  1292. ROM_REGION( 0x90000, REGION_CPU1, 0 ) /* 9 * 64k T11 code */
  1293. ROM_LOAD16_BYTE( "3126.rom", 0x08000, 0x04000, 0x43abd367 )
  1294. ROM_LOAD16_BYTE( "3127.rom", 0x08001, 0x04000, 0x772e1e5b )
  1295. ROM_LOAD16_BYTE( "3128.rom", 0x10000, 0x10000, 0xbf6f425b )
  1296. ROM_LOAD16_BYTE( "4131.rom", 0x10001, 0x10000, 0x2ea8a20f )
  1297. ROM_LOAD16_BYTE( "1129.rom", 0x30000, 0x10000, 0xeabf0b01 )
  1298. ROM_LOAD16_BYTE( "1132.rom", 0x30001, 0x10000, 0xa24f333e )
  1299. ROM_LOAD16_BYTE( "1130.rom", 0x50000, 0x10000, 0x93fba845 )
  1300. ROM_LOAD16_BYTE( "1133.rom", 0x50001, 0x10000, 0x53c177be )
  1301.  
  1302. ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for 6502 code */
  1303. ROM_LOAD( "1134.rom", 0x04000, 0x04000, 0x09a418c2 )
  1304. ROM_LOAD( "1135.rom", 0x08000, 0x04000, 0xb1f157d0 )
  1305. ROM_LOAD( "1136.rom", 0x0c000, 0x04000, 0xdad40e6d )
  1306.  
  1307. ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE )
  1308. ROM_LOAD( "1121.rom", 0x000000, 0x08000, 0x7adb5f9a ) /* playfield, planes 0/1 */
  1309. ROM_LOAD( "1122.rom", 0x008000, 0x08000, 0x41b60141 )
  1310. ROM_LOAD( "1123.rom", 0x010000, 0x08000, 0x501881d5 )
  1311. ROM_LOAD( "1124.rom", 0x018000, 0x08000, 0x096f2574 )
  1312. ROM_LOAD( "1117.rom", 0x020000, 0x08000, 0x5a55f149 ) /* playfield, planes 2/3 */
  1313. ROM_LOAD( "1118.rom", 0x028000, 0x08000, 0x9bb2429e )
  1314. ROM_LOAD( "1119.rom", 0x030000, 0x08000, 0x8f7b20e5 )
  1315. ROM_LOAD( "1120.rom", 0x038000, 0x08000, 0x46af6d35 )
  1316.  
  1317. ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1318. ROM_LOAD( "1109.rom", 0x020000, 0x08000, 0x0a46b693 ) /* motion objects, planes 0/1 */
  1319. ROM_CONTINUE( 0x000000, 0x08000 )
  1320. ROM_LOAD( "1110.rom", 0x028000, 0x08000, 0x457d7e38 )
  1321. ROM_CONTINUE( 0x008000, 0x08000 )
  1322. ROM_LOAD( "1111.rom", 0x030000, 0x08000, 0xffad0a5b )
  1323. ROM_CONTINUE( 0x010000, 0x08000 )
  1324. ROM_LOAD( "1112.rom", 0x038000, 0x08000, 0x06664580 )
  1325. ROM_CONTINUE( 0x018000, 0x08000 )
  1326. ROM_LOAD( "1113.rom", 0x060000, 0x08000, 0x7445dc0f )
  1327. ROM_CONTINUE( 0x040000, 0x08000 )
  1328. ROM_LOAD( "1114.rom", 0x068000, 0x08000, 0x23eaceb0 )
  1329. ROM_CONTINUE( 0x048000, 0x08000 )
  1330. ROM_LOAD( "1115.rom", 0x070000, 0x08000, 0x0cc8de53 )
  1331. ROM_CONTINUE( 0x050000, 0x08000 )
  1332. ROM_LOAD( "1116.rom", 0x078000, 0x08000, 0x2d8f1369 )
  1333. ROM_CONTINUE( 0x058000, 0x08000 )
  1334. ROM_LOAD( "1101.rom", 0x0a0000, 0x08000, 0x2ac77b80 ) /* motion objects, planes 2/3 */
  1335. ROM_CONTINUE( 0x080000, 0x08000 )
  1336. ROM_LOAD( "1102.rom", 0x0a8000, 0x08000, 0xf19c3b06 )
  1337. ROM_CONTINUE( 0x088000, 0x08000 )
  1338. ROM_LOAD( "1103.rom", 0x0b0000, 0x08000, 0x78f9ab90 )
  1339. ROM_CONTINUE( 0x090000, 0x08000 )
  1340. ROM_LOAD( "1104.rom", 0x0b8000, 0x08000, 0x77ce4a7f )
  1341. ROM_CONTINUE( 0x098000, 0x08000 )
  1342. ROM_LOAD( "1105.rom", 0x0e0000, 0x08000, 0xbef5a025 )
  1343. ROM_CONTINUE( 0x0c0000, 0x08000 )
  1344. ROM_LOAD( "1106.rom", 0x0e8000, 0x08000, 0x92a159c8 )
  1345. ROM_CONTINUE( 0x0c8000, 0x08000 )
  1346. ROM_LOAD( "1107.rom", 0x0f0000, 0x08000, 0x0a94a3ef )
  1347. ROM_CONTINUE( 0x0d0000, 0x08000 )
  1348. ROM_LOAD( "1108.rom", 0x0f8000, 0x08000, 0x9815eda6 )
  1349. ROM_CONTINUE( 0x0d8000, 0x08000 )
  1350.  
  1351. ROM_REGION( 0x4000, REGION_GFX3, ROMREGION_DISPOSE )
  1352. ROM_LOAD( "1125.rom", 0x000000, 0x04000, 0x6b7e2328 ) /* alphanumerics */
  1353. ROM_END
  1354.  
  1355.  
  1356. ROM_START( 720b )
  1357. ROM_REGION( 0x90000, REGION_CPU1, 0 ) /* 9 * 64k T11 code */
  1358. ROM_LOAD16_BYTE( "2126.7l", 0x08000, 0x04000, 0xd07e731c )
  1359. ROM_LOAD16_BYTE( "2127.7n", 0x08001, 0x04000, 0x2d19116c )
  1360. ROM_LOAD16_BYTE( "2128.6f", 0x10000, 0x10000, 0xedad0bc0 )
  1361. ROM_LOAD16_BYTE( "3131.6n", 0x10001, 0x10000, 0x704dc925 )
  1362. ROM_LOAD16_BYTE( "1129.rom", 0x30000, 0x10000, 0xeabf0b01 )
  1363. ROM_LOAD16_BYTE( "1132.rom", 0x30001, 0x10000, 0xa24f333e )
  1364. ROM_LOAD16_BYTE( "1130.rom", 0x50000, 0x10000, 0x93fba845 )
  1365. ROM_LOAD16_BYTE( "1133.rom", 0x50001, 0x10000, 0x53c177be )
  1366.  
  1367. ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for 6502 code */
  1368. ROM_LOAD( "1134.rom", 0x04000, 0x04000, 0x09a418c2 )
  1369. ROM_LOAD( "1135.rom", 0x08000, 0x04000, 0xb1f157d0 )
  1370. ROM_LOAD( "1136.rom", 0x0c000, 0x04000, 0xdad40e6d )
  1371.  
  1372. ROM_REGION( 0x40000, REGION_GFX1, ROMREGION_DISPOSE )
  1373. ROM_LOAD( "1121.rom", 0x000000, 0x08000, 0x7adb5f9a ) /* playfield, planes 0/1 */
  1374. ROM_LOAD( "1122.rom", 0x008000, 0x08000, 0x41b60141 )
  1375. ROM_LOAD( "1123.rom", 0x010000, 0x08000, 0x501881d5 )
  1376. ROM_LOAD( "1124.rom", 0x018000, 0x08000, 0x096f2574 )
  1377. ROM_LOAD( "1117.rom", 0x020000, 0x08000, 0x5a55f149 ) /* playfield, planes 2/3 */
  1378. ROM_LOAD( "1118.rom", 0x028000, 0x08000, 0x9bb2429e )
  1379. ROM_LOAD( "1119.rom", 0x030000, 0x08000, 0x8f7b20e5 )
  1380. ROM_LOAD( "1120.rom", 0x038000, 0x08000, 0x46af6d35 )
  1381.  
  1382. ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1383. ROM_LOAD( "1109.rom", 0x020000, 0x08000, 0x0a46b693 ) /* motion objects, planes 0/1 */
  1384. ROM_CONTINUE( 0x000000, 0x08000 )
  1385. ROM_LOAD( "1110.rom", 0x028000, 0x08000, 0x457d7e38 )
  1386. ROM_CONTINUE( 0x008000, 0x08000 )
  1387. ROM_LOAD( "1111.rom", 0x030000, 0x08000, 0xffad0a5b )
  1388. ROM_CONTINUE( 0x010000, 0x08000 )
  1389. ROM_LOAD( "1112.rom", 0x038000, 0x08000, 0x06664580 )
  1390. ROM_CONTINUE( 0x018000, 0x08000 )
  1391. ROM_LOAD( "1113.rom", 0x060000, 0x08000, 0x7445dc0f )
  1392. ROM_CONTINUE( 0x040000, 0x08000 )
  1393. ROM_LOAD( "1114.rom", 0x068000, 0x08000, 0x23eaceb0 )
  1394. ROM_CONTINUE( 0x048000, 0x08000 )
  1395. ROM_LOAD( "1115.rom", 0x070000, 0x08000, 0x0cc8de53 )
  1396. ROM_CONTINUE( 0x050000, 0x08000 )
  1397. ROM_LOAD( "1116.rom", 0x078000, 0x08000, 0x2d8f1369 )
  1398. ROM_CONTINUE( 0x058000, 0x08000 )
  1399. ROM_LOAD( "1101.rom", 0x0a0000, 0x08000, 0x2ac77b80 ) /* motion objects, planes 2/3 */
  1400. ROM_CONTINUE( 0x080000, 0x08000 )
  1401. ROM_LOAD( "1102.rom", 0x0a8000, 0x08000, 0xf19c3b06 )
  1402. ROM_CONTINUE( 0x088000, 0x08000 )
  1403. ROM_LOAD( "1103.rom", 0x0b0000, 0x08000, 0x78f9ab90 )
  1404. ROM_CONTINUE( 0x090000, 0x08000 )
  1405. ROM_LOAD( "1104.rom", 0x0b8000, 0x08000, 0x77ce4a7f )
  1406. ROM_CONTINUE( 0x098000, 0x08000 )
  1407. ROM_LOAD( "1105.rom", 0x0e0000, 0x08000, 0xbef5a025 )
  1408. ROM_CONTINUE( 0x0c0000, 0x08000 )
  1409. ROM_LOAD( "1106.rom", 0x0e8000, 0x08000, 0x92a159c8 )
  1410. ROM_CONTINUE( 0x0c8000, 0x08000 )
  1411. ROM_LOAD( "1107.rom", 0x0f0000, 0x08000, 0x0a94a3ef )
  1412. ROM_CONTINUE( 0x0d0000, 0x08000 )
  1413. ROM_LOAD( "1108.rom", 0x0f8000, 0x08000, 0x9815eda6 )
  1414. ROM_CONTINUE( 0x0d8000, 0x08000 )
  1415.  
  1416. ROM_REGION( 0x4000, REGION_GFX3, ROMREGION_DISPOSE )
  1417. ROM_LOAD( "1125.rom", 0x000000, 0x04000, 0x6b7e2328 ) /* alphanumerics */
  1418. ROM_END
  1419.  
  1420.  
  1421. ROM_START( ssprint )
  1422. ROM_REGION( 0x90000, REGION_CPU1, 0 ) /* 9*64k for T11 code */
  1423. ROM_LOAD16_BYTE( "136042.330", 0x08000, 0x04000, 0xee312027 )
  1424. ROM_LOAD16_BYTE( "136042.331", 0x08001, 0x04000, 0x2ef15354 )
  1425. ROM_LOAD16_BYTE( "136042.329", 0x10000, 0x08000, 0xed1d6205 )
  1426. ROM_LOAD16_BYTE( "136042.325", 0x10001, 0x08000, 0xaecaa2bf )
  1427. ROM_LOAD16_BYTE( "136042.127", 0x50000, 0x08000, 0xde6c4db9 )
  1428. ROM_LOAD16_BYTE( "136042.123", 0x50001, 0x08000, 0xaff23b5a )
  1429. ROM_LOAD16_BYTE( "136042.126", 0x70000, 0x08000, 0x92f5392c )
  1430. ROM_LOAD16_BYTE( "136042.122", 0x70001, 0x08000, 0x0381f362 )
  1431.  
  1432. ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for 6502 code */
  1433. ROM_LOAD( "136042.419", 0x08000, 0x4000, 0xb277915a )
  1434. ROM_LOAD( "136042.420", 0x0c000, 0x4000, 0x170b2c53 )
  1435.  
  1436. ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
  1437. ROM_LOAD( "136042.105", 0x020000, 0x08000, 0x911499fe ) /* playfield, planes 0/1 */
  1438. ROM_CONTINUE( 0x000000, 0x08000 )
  1439. ROM_LOAD( "136042.106", 0x008000, 0x08000, 0xa39b25ed )
  1440. ROM_LOAD( "136042.101", 0x030000, 0x08000, 0x6d015c72 )
  1441. ROM_CONTINUE( 0x010000, 0x08000 )
  1442. ROM_LOAD( "136042.102", 0x018000, 0x08000, 0x54e21f0a )
  1443. ROM_LOAD( "136042.107", 0x060000, 0x08000, 0xb7ded658 ) /* playfield, planes 2/3 */
  1444. ROM_CONTINUE( 0x040000, 0x08000 )
  1445. ROM_LOAD( "136042.108", 0x048000, 0x08000, 0x4a804a4c )
  1446. ROM_LOAD( "136042.104", 0x070000, 0x08000, 0x339644ed )
  1447. ROM_CONTINUE( 0x050000, 0x08000 )
  1448. ROM_LOAD( "136042.103", 0x058000, 0x08000, 0x64d473a8 )
  1449.  
  1450. ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1451. ROM_LOAD( "136042.113", 0x000000, 0x08000, 0xf869b0fc ) /* motion objects, planes 0/1 */
  1452. ROM_LOAD( "136042.112", 0x008000, 0x08000, 0xabcbc114 )
  1453. ROM_LOAD( "136042.110", 0x010000, 0x08000, 0x9e91e734 )
  1454. ROM_LOAD( "136042.109", 0x018000, 0x08000, 0x3a051f36 )
  1455. ROM_LOAD( "136042.117", 0x020000, 0x08000, 0xb15c1b90 ) /* motion objects, planes 2/3 */
  1456. ROM_LOAD( "136042.116", 0x028000, 0x08000, 0x1dcdd5aa )
  1457. ROM_LOAD( "136042.115", 0x030000, 0x08000, 0xfb5677d9 )
  1458. ROM_LOAD( "136042.114", 0x038000, 0x08000, 0x35e70a8d )
  1459.  
  1460. ROM_REGION( 0x4000, REGION_GFX3, ROMREGION_DISPOSE )
  1461. ROM_LOAD( "136042.218", 0x000000, 0x04000, 0x8e500be1 ) /* alphanumerics */
  1462. ROM_END
  1463.  
  1464.  
  1465. ROM_START( csprint )
  1466. ROM_REGION( 0x90000, REGION_CPU1, 0 ) /* 9*64k for T11 code */
  1467. ROM_LOAD16_BYTE( "045-2126.7l", 0x08000, 0x04000, 0x0ff83de8 )
  1468. ROM_LOAD16_BYTE( "045-1127.7mn", 0x08001, 0x04000, 0xe3e37258 )
  1469. ROM_LOAD16_BYTE( "045-1125.6f", 0x10000, 0x08000, 0x650623d2 )
  1470. ROM_LOAD16_BYTE( "045-1122.6mn", 0x10001, 0x08000, 0xca1b1cbf )
  1471. ROM_LOAD16_BYTE( "045-1124.6k", 0x50000, 0x08000, 0x47efca1f )
  1472. ROM_LOAD16_BYTE( "045-1121.6r", 0x50001, 0x08000, 0x6ca404bb )
  1473. ROM_LOAD16_BYTE( "045-1123.6l", 0x70000, 0x08000, 0x0a4d216a )
  1474. ROM_LOAD16_BYTE( "045-1120.6s", 0x70001, 0x08000, 0x103f3fde )
  1475.  
  1476. ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for 6502 code */
  1477. ROM_LOAD( "045-1118.2bc", 0x08000, 0x4000, 0xeba41b2f )
  1478. ROM_LOAD( "045-1119.2d", 0x0c000, 0x4000, 0x9e49043a )
  1479.  
  1480. ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
  1481. ROM_LOAD( "045-1105.6a", 0x000000, 0x08000, 0x3773bfbb ) /* playfield, planes 0/1 */
  1482. ROM_LOAD( "045-1106.6b", 0x008000, 0x08000, 0x13a24886 )
  1483. ROM_LOAD( "045-1101.7a", 0x030000, 0x08000, 0x5a55f931 )
  1484. ROM_CONTINUE( 0x010000, 0x08000 )
  1485. ROM_LOAD( "045-1102.7b", 0x018000, 0x08000, 0x37548a60 )
  1486. ROM_LOAD( "045-1107.6c", 0x040000, 0x08000, 0xe35e354e ) /* playfield, planes 2/3 */
  1487. ROM_LOAD( "045-1108.6d", 0x048000, 0x08000, 0x361db8b7 )
  1488. ROM_LOAD( "045-1104.7d", 0x070000, 0x08000, 0xd1f8fe7b )
  1489. ROM_CONTINUE( 0x050000, 0x08000 )
  1490. ROM_LOAD( "045-1103.7c", 0x058000, 0x08000, 0x8f8c9692 )
  1491.  
  1492. ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1493. ROM_LOAD( "045-1112.6t", 0x000000, 0x08000, 0xf869b0fc ) /* motion objects, planes 0/1 */
  1494. ROM_LOAD( "045-1111.6s", 0x008000, 0x08000, 0xabcbc114 )
  1495. ROM_LOAD( "045-1110.6p", 0x010000, 0x08000, 0x9e91e734 )
  1496. ROM_LOAD( "045-1109.6n", 0x018000, 0x08000, 0x3a051f36 )
  1497. ROM_LOAD( "045-1116.5t", 0x020000, 0x08000, 0xb15c1b90 ) /* motion objects, planes 2/3 */
  1498. ROM_LOAD( "045-1115.5s", 0x028000, 0x08000, 0x1dcdd5aa )
  1499. ROM_LOAD( "045-1114.5p", 0x030000, 0x08000, 0xfb5677d9 )
  1500. ROM_LOAD( "045-1113.5n", 0x038000, 0x08000, 0x35e70a8d )
  1501.  
  1502. ROM_REGION( 0x4000, REGION_GFX3, ROMREGION_DISPOSE )
  1503. ROM_LOAD( "045-1117.4t", 0x000000, 0x04000, 0x82da786d ) /* alphanumerics */
  1504. ROM_END
  1505.  
  1506.  
  1507. ROM_START( apb )
  1508. ROM_REGION( 0x90000, REGION_CPU1, 0 ) /* 9 * 64k T11 code */
  1509. ROM_LOAD16_BYTE( "2126", 0x08000, 0x04000, 0x8edf4726 )
  1510. ROM_LOAD16_BYTE( "2127", 0x08001, 0x04000, 0xe2b2aff2 )
  1511. ROM_LOAD16_BYTE( "5128", 0x10000, 0x10000, 0x4b4ff365 )
  1512. ROM_LOAD16_BYTE( "5129", 0x10001, 0x10000, 0x059ab792 )
  1513. ROM_LOAD16_BYTE( "1130", 0x30000, 0x10000, 0xf64c752e )
  1514. ROM_LOAD16_BYTE( "1131", 0x30001, 0x10000, 0x0a506e04 )
  1515. ROM_LOAD16_BYTE( "1132", 0x70000, 0x10000, 0x6d0e7a4e )
  1516. ROM_LOAD16_BYTE( "1133", 0x70001, 0x10000, 0xaf88d429 )
  1517.  
  1518. ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for 6502 code */
  1519. ROM_LOAD( "4134", 0x04000, 0x04000, 0x45e03b0e )
  1520. ROM_LOAD( "4135", 0x08000, 0x04000, 0xb4ca24b2 )
  1521. ROM_LOAD( "4136", 0x0c000, 0x04000, 0x11efaabf )
  1522.  
  1523. ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE )
  1524. ROM_LOAD( "1118", 0x000000, 0x08000, 0x93752c49 ) /* playfield, planes 0/1 */
  1525. ROM_LOAD( "1120", 0x028000, 0x08000, 0x043086f8 )
  1526. ROM_CONTINUE( 0x008000, 0x08000 )
  1527. ROM_LOAD( "1122", 0x030000, 0x08000, 0x5ee79481 )
  1528. ROM_CONTINUE( 0x010000, 0x08000 )
  1529. ROM_LOAD( "1124", 0x038000, 0x08000, 0x27760395 )
  1530. ROM_CONTINUE( 0x018000, 0x08000 )
  1531. ROM_LOAD( "1117", 0x040000, 0x08000, 0xcfc3f8a3 ) /* playfield, planes 2/3 */
  1532. ROM_LOAD( "1119", 0x068000, 0x08000, 0x68850612 )
  1533. ROM_CONTINUE( 0x048000, 0x08000 )
  1534. ROM_LOAD( "1121", 0x070000, 0x08000, 0xc7977062 )
  1535. ROM_CONTINUE( 0x050000, 0x08000 )
  1536. ROM_LOAD( "1123", 0x078000, 0x08000, 0x3c96c848 )
  1537. ROM_CONTINUE( 0x058000, 0x08000 )
  1538.  
  1539. ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1540. ROM_LOAD( "1105", 0x020000, 0x08000, 0x9b78a88e ) /* motion objects, planes 0/1 */
  1541. ROM_CONTINUE( 0x000000, 0x08000 )
  1542. ROM_LOAD( "1106", 0x028000, 0x08000, 0x4787ff58 )
  1543. ROM_CONTINUE( 0x008000, 0x08000 )
  1544. ROM_LOAD( "1107", 0x030000, 0x08000, 0x0e85f2ac )
  1545. ROM_CONTINUE( 0x010000, 0x08000 )
  1546. ROM_LOAD( "1108", 0x038000, 0x08000, 0x70ff9308 )
  1547. ROM_CONTINUE( 0x018000, 0x08000 )
  1548. ROM_LOAD( "1113", 0x060000, 0x08000, 0x4a445356 )
  1549. ROM_CONTINUE( 0x040000, 0x08000 )
  1550. ROM_LOAD( "1114", 0x068000, 0x08000, 0xb9b27f3c )
  1551. ROM_CONTINUE( 0x048000, 0x08000 )
  1552. ROM_LOAD( "1115", 0x070000, 0x08000, 0xa7671dd8 )
  1553. ROM_CONTINUE( 0x050000, 0x08000 )
  1554. ROM_LOAD( "1116", 0x078000, 0x08000, 0x879fc7de )
  1555. ROM_CONTINUE( 0x058000, 0x08000 )
  1556. ROM_LOAD( "1101", 0x0a0000, 0x08000, 0x0ef13513 ) /* motion objects, planes 2/3 */
  1557. ROM_CONTINUE( 0x080000, 0x08000 )
  1558. ROM_LOAD( "1102", 0x0a8000, 0x08000, 0x401e06fd )
  1559. ROM_CONTINUE( 0x088000, 0x08000 )
  1560. ROM_LOAD( "1103", 0x0b0000, 0x08000, 0x50d820e8 )
  1561. ROM_CONTINUE( 0x090000, 0x08000 )
  1562. ROM_LOAD( "1104", 0x0b8000, 0x08000, 0x912d878f )
  1563. ROM_CONTINUE( 0x098000, 0x08000 )
  1564. ROM_LOAD( "1109", 0x0e0000, 0x08000, 0x6716a408 )
  1565. ROM_CONTINUE( 0x0c0000, 0x08000 )
  1566. ROM_LOAD( "1110", 0x0e8000, 0x08000, 0x7e184981 )
  1567. ROM_CONTINUE( 0x0c8000, 0x08000 )
  1568. ROM_LOAD( "1111", 0x0f0000, 0x08000, 0x353a14fd )
  1569. ROM_CONTINUE( 0x0d0000, 0x08000 )
  1570. ROM_LOAD( "1112", 0x0f8000, 0x08000, 0x3af7c50f )
  1571. ROM_CONTINUE( 0x0d8000, 0x08000 )
  1572.  
  1573. ROM_REGION( 0x4000, REGION_GFX3, ROMREGION_DISPOSE )
  1574. ROM_LOAD( "1125", 0x000000, 0x04000, 0x05a0341c ) /* alphanumerics */
  1575. ROM_END
  1576.  
  1577.  
  1578. ROM_START( apb2 )
  1579. ROM_REGION( 0x90000, REGION_CPU1, 0 ) /* 9 * 64k T11 code */
  1580. ROM_LOAD16_BYTE( "2126", 0x08000, 0x04000, 0x8edf4726 )
  1581. ROM_LOAD16_BYTE( "2127", 0x08001, 0x04000, 0xe2b2aff2 )
  1582. ROM_LOAD16_BYTE( "4128", 0x10000, 0x10000, 0x46009f6b )
  1583. ROM_LOAD16_BYTE( "4129", 0x10001, 0x10000, 0xe8ca47e2 )
  1584. ROM_LOAD16_BYTE( "1130", 0x30000, 0x10000, 0xf64c752e )
  1585. ROM_LOAD16_BYTE( "1131", 0x30001, 0x10000, 0x0a506e04 )
  1586. ROM_LOAD16_BYTE( "1132", 0x70000, 0x10000, 0x6d0e7a4e )
  1587. ROM_LOAD16_BYTE( "1133", 0x70001, 0x10000, 0xaf88d429 )
  1588.  
  1589. ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for 6502 code */
  1590. ROM_LOAD( "5134", 0x04000, 0x04000, 0x1c8bdeed )
  1591. ROM_LOAD( "5135", 0x08000, 0x04000, 0xed6adb91 )
  1592. ROM_LOAD( "5136", 0x0c000, 0x04000, 0x341f8486 )
  1593.  
  1594. ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE )
  1595. ROM_LOAD( "1118", 0x000000, 0x08000, 0x93752c49 ) /* playfield, planes 0/1 */
  1596. ROM_LOAD( "1120", 0x028000, 0x08000, 0x043086f8 )
  1597. ROM_CONTINUE( 0x008000, 0x08000 )
  1598. ROM_LOAD( "1122", 0x030000, 0x08000, 0x5ee79481 )
  1599. ROM_CONTINUE( 0x010000, 0x08000 )
  1600. ROM_LOAD( "1124", 0x038000, 0x08000, 0x27760395 )
  1601. ROM_CONTINUE( 0x018000, 0x08000 )
  1602. ROM_LOAD( "1117", 0x040000, 0x08000, 0xcfc3f8a3 ) /* playfield, planes 2/3 */
  1603. ROM_LOAD( "1119", 0x068000, 0x08000, 0x68850612 )
  1604. ROM_CONTINUE( 0x048000, 0x08000 )
  1605. ROM_LOAD( "1121", 0x070000, 0x08000, 0xc7977062 )
  1606. ROM_CONTINUE( 0x050000, 0x08000 )
  1607. ROM_LOAD( "1123", 0x078000, 0x08000, 0x3c96c848 )
  1608. ROM_CONTINUE( 0x058000, 0x08000 )
  1609.  
  1610. ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1611. ROM_LOAD( "1105", 0x020000, 0x08000, 0x9b78a88e ) /* motion objects, planes 0/1 */
  1612. ROM_CONTINUE( 0x000000, 0x08000 )
  1613. ROM_LOAD( "1106", 0x028000, 0x08000, 0x4787ff58 )
  1614. ROM_CONTINUE( 0x008000, 0x08000 )
  1615. ROM_LOAD( "1107", 0x030000, 0x08000, 0x0e85f2ac )
  1616. ROM_CONTINUE( 0x010000, 0x08000 )
  1617. ROM_LOAD( "1108", 0x038000, 0x08000, 0x70ff9308 )
  1618. ROM_CONTINUE( 0x018000, 0x08000 )
  1619. ROM_LOAD( "1113", 0x060000, 0x08000, 0x4a445356 )
  1620. ROM_CONTINUE( 0x040000, 0x08000 )
  1621. ROM_LOAD( "1114", 0x068000, 0x08000, 0xb9b27f3c )
  1622. ROM_CONTINUE( 0x048000, 0x08000 )
  1623. ROM_LOAD( "1115", 0x070000, 0x08000, 0xa7671dd8 )
  1624. ROM_CONTINUE( 0x050000, 0x08000 )
  1625. ROM_LOAD( "1116", 0x078000, 0x08000, 0x879fc7de )
  1626. ROM_CONTINUE( 0x058000, 0x08000 )
  1627. ROM_LOAD( "1101", 0x0a0000, 0x08000, 0x0ef13513 ) /* motion objects, planes 2/3 */
  1628. ROM_CONTINUE( 0x080000, 0x08000 )
  1629. ROM_LOAD( "1102", 0x0a8000, 0x08000, 0x401e06fd )
  1630. ROM_CONTINUE( 0x088000, 0x08000 )
  1631. ROM_LOAD( "1103", 0x0b0000, 0x08000, 0x50d820e8 )
  1632. ROM_CONTINUE( 0x090000, 0x08000 )
  1633. ROM_LOAD( "1104", 0x0b8000, 0x08000, 0x912d878f )
  1634. ROM_CONTINUE( 0x098000, 0x08000 )
  1635. ROM_LOAD( "1109", 0x0e0000, 0x08000, 0x6716a408 )
  1636. ROM_CONTINUE( 0x0c0000, 0x08000 )
  1637. ROM_LOAD( "1110", 0x0e8000, 0x08000, 0x7e184981 )
  1638. ROM_CONTINUE( 0x0c8000, 0x08000 )
  1639. ROM_LOAD( "1111", 0x0f0000, 0x08000, 0x353a14fd )
  1640. ROM_CONTINUE( 0x0d0000, 0x08000 )
  1641. ROM_LOAD( "1112", 0x0f8000, 0x08000, 0x3af7c50f )
  1642. ROM_CONTINUE( 0x0d8000, 0x08000 )
  1643.  
  1644. ROM_REGION( 0x4000, REGION_GFX3, ROMREGION_DISPOSE )
  1645. ROM_LOAD( "1125", 0x000000, 0x04000, 0x05a0341c ) /* alphanumerics */
  1646. ROM_END
  1647.  
  1648.  
  1649.  
  1650. /*************************************
  1651. *
  1652. * Driver initialization
  1653. *
  1654. *************************************/
  1655.  
  1656. static DRIVER_INIT( paperboy )
  1657. {
  1658. static const data16_t compressed_default_eeprom[] =
  1659. {
  1660. 0x0000,0x4300,0x0113,0x0124,0x0150,0x0153,0x0154,0x0100,
  1661. 0x0112,0x01C0,0x0155,0x0143,0x0148,0x0100,0x0112,0x015C,
  1662. 0x0154,0x014F,0x0149,0x0100,0x0111,0x01F8,0x0120,0x0152,
  1663. 0x0153,0x0100,0x0111,0x0149,0x0159,0x0145,0x0120,0x0100,
  1664. 0x0111,0x0130,0x014F,0x0120,0x0154,0x0100,0x0110,0x01CC,
  1665. 0x0155,0x014F,0x0141,0x0100,0x0110,0x0168,0x0152,0x014E,
  1666. 0x0142,0x0100,0x0110,0x0104,0x0120,0x0154,0x014C,0x0100,
  1667. 0x010F,0x01A0,0x0120,0x014F,0x0145,0x0100,0x0126,0x01AC,
  1668. 0x0150,0x0149,0x0147,0x0100,0x0126,0x0148,0x0141,0x0153,
  1669. 0x0152,0x0100,0x0125,0x01E4,0x0150,0x0120,0x0145,0x0100,
  1670. 0x0125,0x0180,0x0145,0x0154,0x0141,0x0100,0x0125,0x011C,
  1671. 0x0152,0x0148,0x0154,0x0100,0x0124,0x01B8,0x0120,0x0245,
  1672. 0x0100,0x0124,0x0154,0x0142,0x0120,0x0153,0x0100,0x0123,
  1673. 0x01F0,0x014F,0x0120,0x0154,0x0100,0x0123,0x018C,0x0159,
  1674. 0x0220,0x0100,0x0123,0x0128,0x0320,0x0100,0x013A,0x0134,
  1675. 0x0144,0x0141,0x0154,0x0100,0x0139,0x01D0,0x0154,0x0148,
  1676. 0x0145,0x0100,0x0139,0x016C,0x0142,0x014F,0x0159,0x0100,
  1677. 0x0139,0x0108,0x0142,0x0146,0x0120,0x0100,0x0138,0x01A4,
  1678. 0x014D,0x0145,0x0143,0x0100,0x0138,0x0140,0x0143,0x014A,
  1679. 0x0120,0x0100,0x0137,0x01DC,0x014A,0x0145,0x0153,0x0100,
  1680. 0x0137,0x0178,0x0150,0x0143,0x0154,0x0100,0x0137,0x0114,
  1681. 0x014D,0x0241,0x0100,0x0136,0x01B0,0x0142,0x0141,0x0146,
  1682. 0x0101,0x0400,0x010F,0x017F,0x012A,0x017F,0x013D,0x010F,
  1683. 0x017F,0x012A,0x017F,0x013C,0x010F,0x017F,0x012A,0x017F,
  1684. 0x013B,0xFF00,0xFF00,0xFF00,0xFF00,0xFF00,0xFF00,0xFC00,
  1685. 0x0000
  1686. };
  1687. int i;
  1688.  
  1689. atarigen_eeprom_default = compressed_default_eeprom;
  1690. atarigen_init_6502_speedup(1, 0x410f, 0x4127);
  1691. slapstic_init(105);
  1692.  
  1693. /* expand the 16k program ROMs into full 64k chunks */
  1694. for (i = 0x10000; i < 0x90000; i += 0x20000)
  1695. {
  1696. memcpy(&memory_region(REGION_CPU1)[i + 0x08000], &memory_region(REGION_CPU1)[i], 0x8000);
  1697. memcpy(&memory_region(REGION_CPU1)[i + 0x10000], &memory_region(REGION_CPU1)[i], 0x8000);
  1698. memcpy(&memory_region(REGION_CPU1)[i + 0x18000], &memory_region(REGION_CPU1)[i], 0x8000);
  1699. }
  1700.  
  1701. pedal_count = 0;
  1702. has_tms5220 = 1;
  1703. }
  1704.  
  1705.  
  1706. static DRIVER_INIT( 720 )
  1707. {
  1708. atarigen_eeprom_default = NULL;
  1709. atarigen_init_6502_speedup(1, 0x410f, 0x4127);
  1710. slapstic_init(107);
  1711.  
  1712. pedal_count = -1;
  1713. has_tms5220 = 1;
  1714. }
  1715.  
  1716.  
  1717. static DRIVER_INIT( ssprint )
  1718. {
  1719. static const data16_t compressed_default_eeprom[] =
  1720. {
  1721. 0x0000,0x01FF,0x0E00,0x01FF,0x0100,0x0120,0x0100,0x0120,
  1722. 0x0300,0x0120,0x0500,0x0120,0x01FF,0x0100,0x0140,0x0100,
  1723. 0x0140,0x0110,0x0100,0x0110,0x0150,0x0100,0x0110,0x0300,
  1724. 0x0140,0x01FF,0x0100,0x0160,0x0100,0x0160,0x0300,0x0160,
  1725. 0x0500,0x0160,0x01FF,0x0100,0x0180,0x0100,0x0180,0x0300,
  1726. 0x0180,0x0500,0x0180,0x01FF,0x0100,0x01A0,0x0100,0x01A0,
  1727. 0x0300,0x01A0,0x0500,0x01A0,0x01FF,0x0100,0x01C0,0x0100,
  1728. 0x01C0,0x0300,0x01C0,0x0500,0x01C0,0xFFFF,0x1EFF,0x0103,
  1729. 0x01E8,0x0146,0x01D6,0x0103,0x01DE,0x0128,0x01B3,0x0103,
  1730. 0x01D4,0x0144,0x0123,0x0103,0x01CA,0x011C,0x010B,0x0103,
  1731. 0x01C0,0x0159,0x01BF,0x0103,0x01B6,0x0129,0x019F,0x0103,
  1732. 0x01AC,0x014A,0x01C2,0x0103,0x01A2,0x010E,0x01DF,0x0103,
  1733. 0x0198,0x0131,0x01BF,0x0103,0x018E,0x010D,0x0106,0x0103,
  1734. 0x0184,0x010E,0x0186,0x0103,0x017A,0x0124,0x010C,0x0103,
  1735. 0x0170,0x014A,0x0148,0x0103,0x0166,0x0151,0x01F2,0x0103,
  1736. 0x015C,0x013E,0x013F,0x0103,0x0152,0x0111,0x0106,0x0103,
  1737. 0x0148,0x0145,0x01B1,0x0103,0x013E,0x017E,0x0164,0x0103,
  1738. 0x0134,0x017F,0x01E0,0x0103,0x012A,0x017F,0x01F3,0x0103,
  1739. 0x0120,0x017F,0x01FF,0x0103,0x0116,0x012A,0x01D6,0x0103,
  1740. 0x010C,0x0125,0x0176,0x0103,0x0102,0x014C,0x0161,0x0102,
  1741. 0x01F8,0x0128,0x0101,0x0102,0x01EE,0x0101,0x0153,0x0102,
  1742. 0x01E4,0x0109,0x0132,0x0102,0x01DA,0x012C,0x0132,0x0102,
  1743. 0x01D0,0x0125,0x0186,0x0102,0x01C6,0x011D,0x011F,0xFF00,
  1744. 0xFF00,0xFF00,0xFF00,0xFF00,0xFF00,0x0800,0x0000
  1745. };
  1746. int i;
  1747.  
  1748. atarigen_eeprom_default = compressed_default_eeprom;
  1749. atarigen_init_6502_speedup(1, 0x8107, 0x811f);
  1750. slapstic_init(108);
  1751.  
  1752. /* expand the 32k program ROMs into full 64k chunks */
  1753. for (i = 0x10000; i < 0x90000; i += 0x20000)
  1754. memcpy(&memory_region(REGION_CPU1)[i + 0x10000], &memory_region(REGION_CPU1)[i], 0x10000);
  1755.  
  1756. pedal_count = 3;
  1757. has_tms5220 = 0;
  1758. }
  1759.  
  1760.  
  1761. static DRIVER_INIT( csprint )
  1762. {
  1763. static const data16_t compressed_default_eeprom[] =
  1764. {
  1765. 0x0000,0x01FF,0x0E00,0x0128,0x01D0,0x0127,0x0100,0x0120,
  1766. 0x0300,0x01F7,0x01D0,0x0107,0x0300,0x0120,0x010F,0x01F0,
  1767. 0x0140,0x0100,0x0140,0x0110,0x0100,0x0110,0x01A0,0x01F0,
  1768. 0x0110,0x0300,0x0140,0x01FF,0x0100,0x0160,0x0100,0x0160,
  1769. 0x0300,0x0160,0x0500,0x0160,0x01FF,0x0100,0x0180,0x0100,
  1770. 0x0180,0x0300,0x0180,0x0500,0x0180,0x01FF,0x0100,0x01A0,
  1771. 0x0100,0x01A0,0x0300,0x01A0,0x0500,0x01A0,0x01FF,0x0100,
  1772. 0x01C0,0x0100,0x01C0,0x0300,0x01C0,0x0500,0x01C0,0xFFFF,
  1773. 0x0100,0x0127,0x0110,0x0146,0x01D6,0x0100,0x0126,0x01AC,
  1774. 0x0128,0x01B3,0x0100,0x0126,0x0148,0x0144,0x0123,0x0100,
  1775. 0x0125,0x01E4,0x011C,0x010B,0x0100,0x0125,0x0180,0x0159,
  1776. 0x01BF,0x0100,0x0125,0x011C,0x0129,0x019F,0x0100,0x0124,
  1777. 0x0168,0x014A,0x01C2,0x0100,0x0124,0x0154,0x010E,0x01DF,
  1778. 0x0100,0x0123,0x01F0,0x0131,0x01BF,0x0100,0x0123,0x018C,
  1779. 0x010D,0x0106,0x0100,0x0123,0x0128,0x010E,0x0186,0x0100,
  1780. 0x0122,0x01C4,0x0124,0x010C,0x0100,0x0122,0x0160,0x014A,
  1781. 0x0148,0x0100,0x0121,0x01FC,0x0151,0x01F2,0x0100,0x0121,
  1782. 0x0198,0x013E,0x013F,0x0100,0x0121,0x0134,0x0111,0x0106,
  1783. 0x0100,0x0120,0x01D0,0x0145,0x01B1,0x0100,0x0120,0x016C,
  1784. 0x017E,0x0164,0x0100,0x0120,0x0108,0x017F,0x01E0,0x0100,
  1785. 0x011F,0x01A4,0x017F,0x01F3,0x0100,0x011F,0x0140,0x017F,
  1786. 0x01FF,0x0100,0x011E,0x01DC,0x012A,0x01D6,0x0100,0x011E,
  1787. 0x0178,0x0125,0x0176,0x0100,0x011E,0x0114,0x014C,0x0161,
  1788. 0x0100,0x011D,0x01B0,0x0128,0x0101,0x0100,0x011D,0x014C,
  1789. 0x0101,0x0153,0x0100,0x011C,0x01E8,0x0109,0x0132,0x0100,
  1790. 0x011C,0x0184,0x012C,0x0132,0x0100,0x011C,0x0120,0x0125,
  1791. 0x0186,0x0100,0x011B,0x01BC,0x011D,0x011F,0x0000
  1792. };
  1793. int i;
  1794.  
  1795. atarigen_eeprom_default = compressed_default_eeprom;
  1796. atarigen_init_6502_speedup(1, 0x8107, 0x811f);
  1797. slapstic_init(109);
  1798.  
  1799. /* expand the 32k program ROMs into full 64k chunks */
  1800. for (i = 0x10000; i < 0x90000; i += 0x20000)
  1801. memcpy(&memory_region(REGION_CPU1)[i + 0x10000], &memory_region(REGION_CPU1)[i], 0x10000);
  1802.  
  1803. pedal_count = 2;
  1804. has_tms5220 = 0;
  1805. }
  1806.  
  1807.  
  1808. static DRIVER_INIT( apb )
  1809. {
  1810. atarigen_eeprom_default = NULL;
  1811. atarigen_init_6502_speedup(1, 0x410f, 0x4127);
  1812. slapstic_init(110);
  1813.  
  1814. pedal_count = 2;
  1815. has_tms5220 = 1;
  1816. }
  1817.  
  1818.  
  1819.  
  1820. /*************************************
  1821. *
  1822. * Game driver(s)
  1823. *
  1824. *************************************/
  1825.  
  1826. GAME( 1984, paperboy, 0, atarisy2, paperboy, paperboy, ROT0, "Atari Games", "Paperboy" )
  1827. GAME( 1986, 720, 0, 720, 720, 720, ROT0, "Atari Games", "720 Degrees (set 1)" )
  1828. GAME( 1986, 720b, 720, 720, 720, 720 , ROT0, "Atari Games", "720 Degrees (set 2)" )
  1829. GAME( 1986, ssprint, 0, sprint, ssprint, ssprint, ROT0, "Atari Games", "Super Sprint" )
  1830. GAME( 1986, csprint, 0, sprint, csprint, csprint, ROT0, "Atari Games", "Championship Sprint" )
  1831. GAME( 1987, apb, 0, atarisy2, apb, apb, ROT270, "Atari Games", "APB - All Points Bulletin (set 1)" )
  1832. GAME( 1987, apb2, apb, atarisy2, apb, apb, ROT270, "Atari Games", "APB - All Points Bulletin (set 2)" )
Advertisement
Add Comment
Please, Sign In to add comment