trunk/src/mess/drivers/rainbow.c
| r31155 | r31156 | |
| 8 | 8 | --------------------- |
| 9 | 9 | Driver is based entirely on the DEC-100 'B' variant (DEC-190 and DEC-100 A models are treated as clones). |
| 10 | 10 | While this is OK for the compatible -190, it doesn't do justice to ancient '100 A' hardware. |
| 11 | RBCONVERT.ZIP has details on how model 'A' differs from version B. |
| 11 | 12 | |
| 12 | | Currently, there are several issues here: |
| 13 | Issues with this driver: |
| 13 | 14 | (1) Keyboard emulation incomplete (inhibits the system from booting with ERROR 50). |
| 14 | | (2) after fixing (1), IRQ logic for 100-B should be verified (text in RBCONVERT.ZIP has details concerning -A versus -B. |
| 15 | |
| 16 | (2) IRQ / DMA / arbitration logic should be verified |
| 15 | 17 | DMA (needed for 'Extended communication option') or Z80-8088 arbitration is non-existent (E11/E13 dumps anyone?). |
| 16 | | (3) Read errors when booting CP/M 2.x or DOS 2.x (secondary boot; read errors beyond T >= 2). |
| 17 | | Seek (+ verify) and a number of signals (TRACK > 43 TG43, INDEX etc.) do not work (diag.disk aborts drive test). |
| 18 | 18 | |
| 19 | (3) Read errors when booting CPM 2 / DOS 2.x / DOS 3 (secondary boot loader finds errors on tracks >= 2). |
| 20 | Seek (+ verify) and a number of signals (TRACK > 43 TG43, INDEX etc.) appear to be incorrect (-> diag.disk aborts drive test). |
| 21 | UCSD systems (fort_sys, pas_sys) and diag disks boot! |
| 22 | |
| 19 | 23 | - NOT WORKING: serial (ERROR 60). |
| 20 | 24 | - NOT WORKING: printer interface (ERROR 40). Like error 60 not mission-critical. |
| 21 | 25 | |
| r31155 | r31156 | |
| 378 | 382 | FLOPPY_FORMATS_END |
| 379 | 383 | |
| 380 | 384 | static SLOT_INTERFACE_START( rainbow_floppies ) |
| 381 | | SLOT_INTERFACE( "525qd", FLOPPY_525_SSQD ) // "525ssdd" |
| 385 | SLOT_INTERFACE("525qd", FLOPPY_525_SSQD) |
| 382 | 386 | SLOT_INTERFACE_END |
| 383 | 387 | |
| 384 | 388 | |
| r31155 | r31156 | |
| 414 | 418 | rom[0xf4000 + 0x363b]= 0xeb; // COND => JMPS |
| 415 | 419 | |
| 416 | 420 | if (rom[0xf4174] == 0x75) |
| 417 | | { rom[0xf4174] = 0xeb; // jmps RAINBOW100_LOGO__loc_33D |
| 421 | { |
| 422 | rom[0xf4174] = 0xeb; // jmps RAINBOW100_LOGO__loc_33D |
| 418 | 423 | rom[0xf4175] = 0x08; |
| 419 | 424 | } |
| 420 | 425 | |
| r31155 | r31156 | |
| 559 | 564 | #endif |
| 560 | 565 | PORT_START("MONITOR TYPE") |
| 561 | 566 | PORT_DIPNAME( 0x03, 0x03, "MONOCHROME MONITOR") |
| 562 | | PORT_DIPSETTING( 0x01, "PAPER WHITE" ) |
| 567 | PORT_DIPSETTING(0x01, "WHITE") |
| 563 | 568 | PORT_DIPSETTING( 0x02, "GREEN" ) |
| 564 | 569 | PORT_DIPSETTING( 0x03, "AMBER" ) |
| 565 | 570 | |
| r31155 | r31156 | |
| 640 | 645 | /* configure RAM */ |
| 641 | 646 | address_space &program = m_maincpu->space(AS_PROGRAM); |
| 642 | 647 | if (m_inp8->read() < END_OF_RAM) |
| 643 | | { program.unmap_readwrite(m_inp8->read(), END_OF_RAM); |
| 648 | { |
| 649 | program.unmap_readwrite(m_inp8->read(), END_OF_RAM); |
| 644 | 650 | } |
| 645 | 651 | |
| 646 | 652 | // BIOS can't handle soft resets (=> triggers ERROR 16). |
| r31155 | r31156 | |
| 695 | 701 | |
| 696 | 702 | UINT32 rainbow_state::screen_update_rainbow(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 697 | 703 | { |
| 698 | | if (MOTOR_DISABLE_counter) |
| 699 | | return 0; |
| 700 | | |
| 701 | 704 | m_crtc->palette_select( m_inp9->read() ); |
| 702 | 705 | |
| 703 | 706 | if ( m_SCREEN_BLANK ) |
| r31155 | r31156 | |
| 1046 | 1049 | |
| 1047 | 1050 | floppy_connector *con = machine().device<floppy_connector>(names[drive]); |
| 1048 | 1051 | if (con) |
| 1049 | | { m_floppy = con->get_device(); |
| 1052 | { |
| 1053 | m_floppy = con->get_device(); |
| 1050 | 1054 | if (m_floppy) |
| 1051 | 1055 | { |
| 1052 | 1056 | selected_drive = drive; |
| r31155 | r31156 | |
| 1073 | 1077 | MOTOR_DISABLE_counter = 4800; // 2400 = 500 ms |
| 1074 | 1078 | |
| 1075 | 1079 | // m_fdc->set_force_ready(force_ready); |
| 1076 | | } else |
| 1080 | } |
| 1081 | else |
| 1077 | 1082 | { |
| 1078 | 1083 | // m_fdc->set_force_ready(false); |
| 1079 | 1084 | } |
| r31155 | r31156 | |
| 1090 | 1095 | data = data & (255 -3); |
| 1091 | 1096 | data = data | 8; // MOTOR 0 OFF |
| 1092 | 1097 | data = data | 16; // MOTOR 1 OFF |
| 1093 | | }else |
| 1094 | | { data = ( data & (255 -3) ) | m_unit; |
| 1098 | } |
| 1099 | else |
| 1100 | { |
| 1101 | data = (data & (255 - 3)) | m_unit; |
| 1095 | 1102 | |
| 1096 | 1103 | if(m_unit < 2) |
| 1097 | 1104 | data = data & (255 - 8); // MOTOR 0 (for A or B) |
| r31155 | r31156 | |
| 1110 | 1117 | INTERRUPT_GEN_MEMBER(rainbow_state::vblank_irq) |
| 1111 | 1118 | { |
| 1112 | 1119 | raise_8088_irq(IRQ_8088_VBL); |
| 1120 | m_crtc->notify_vblank(true); |
| 1113 | 1121 | } |
| 1114 | 1122 | |
| 1115 | 1123 | WRITE_LINE_MEMBER( rainbow_state::clear_video_interrupt ) |
| 1116 | 1124 | { |
| 1117 | 1125 | lower_8088_irq(IRQ_8088_VBL); |
| 1126 | m_crtc->notify_vblank(false); |
| 1118 | 1127 | } |
| 1119 | 1128 | |
| 1120 | | |
| 1121 | | |
| 1122 | 1129 | READ8_MEMBER( rainbow_state::diagnostic_r ) // 8088 (port 0A READ). Fig.4-29 + table 4-15 |
| 1123 | 1130 | { |
| 1124 | 1131 | // printf("%02x DIP value ORed to diagnostic\n", ( m_inp1->read() | m_inp2->read() | m_inp3->read() ) ); |
| r31155 | r31156 | |
| 1346 | 1353 | ROM_LOAD( "chargen.bin", 0x0000, 0x1000, CRC(1685e452) SHA1(bc299ff1cb74afcededf1a7beb9001188fdcf02f)) |
| 1347 | 1354 | ROM_END |
| 1348 | 1355 | |
| 1349 | | // ROM definition for 100-B (system module 70-1994-02, PSU H7842-D) |
| 1356 | // ROM definition for 100-B (system module 70-19974-02, PSU H7842-D) |
| 1350 | 1357 | // Built until ~ May 1986 (see MP-01491-00) |
| 1351 | 1358 | // - 32 K ROM (version 5.03) |
| 1352 | 1359 | // - 128 K base and 896 K max. mem. |
trunk/src/mess/video/vtvideo.c
| r31155 | r31156 | |
| 10 | 10 | ---------------------------------- |
| 11 | 11 | - TESTS REQUIRED : do line and character attributes (plus combinations) match real hardware? |
| 12 | 12 | |
| 13 | | - JUMPY SOFT SCROLL : Soft scroll *should* be synced with beam or DMA (line linking/unlinking is done during VBI, in less than 550ms). |
| 14 | | See 4.7.4 and up in VT manual. |
| 13 | - SCROLLING REGIONS / SPLIT SCREEN SCROLLING UNTESTED (if you open > 1 file with the VAX editor EDT) |
| 14 | See VT100 Technical Manual: 4.7.4 Address Shuffling to 4.7.9 Split Screen Smooth Scrolling. |
| 15 | More on scrolling regions: Rainbow 100 B technical documentation (QV069-GZ) April 1985 page 22 |
| 15 | 16 | |
| 16 | | - UNDOCUMENTED FEATURES of DC011 / DC012 (CLUES WANTED) |
| 17 | | A. (VT 100): DEC VT terminals are said to have a feature that doubles the number of lines |
| 18 | | (50 real lines or just interlaced mode with 500 instead of 250 scanlines?) |
| 17 | - INTERLACED MODE UNEMULATED: |
| 18 | There is no RAM (on a Rainbow-100) to hold twice as many vertical lines, so the video chip |
| 19 | doubles existing ones. Flickers on CRTs and is of dubious value on modern hosts. |
| 19 | 20 | |
| 20 | | B. (DEC-100-B) fun PD program SQUEEZE.COM _compresses_ display to X/2 and Y/2 |
| 21 | | - so picture takes a quarter of the original screen. How does it accomplish this? |
| 21 | - FUN WITH DC011 / DC012 REGISTERS (clues wanted): |
| 22 | Public domain program SQUEEZE.COM (for DEC-100-B) _compresses_ display to X/2 and Y/2 |
| 23 | so picture takes a quarter of the original screen. How does it accomplish this? |
| 22 | 24 | |
| 23 | 25 | - IMPROVEMENTS: |
| 24 | | - exact colors for different VR201 monitors ('paper white', green and amber) |
| 26 | exact colors for different VR201 monitors ('paper white', green and amber) |
| 25 | 27 | |
| 26 | 28 | Copyright MESS Team. |
| 27 | 29 | Visit http://mamedev.org for licensing and usage restrictions. |
| r31155 | r31156 | |
| 116 | 118 | m_lba7 = 0; |
| 117 | 119 | |
| 118 | 120 | m_scroll_latch = 0; |
| 119 | | m_scroll_latch_valid = 0; |
| 121 | m_scroll_latch_valid = false; |
| 122 | m_last_scroll = 0; |
| 120 | 123 | |
| 121 | 124 | m_blink_flip_flop = 0; |
| 122 | 125 | m_reverse_field = 0; |
| r31155 | r31156 | |
| 144 | 147 | m_lba7 = 0; |
| 145 | 148 | |
| 146 | 149 | m_scroll_latch = 0; |
| 147 | | m_scroll_latch_valid = 0; |
| 150 | m_scroll_latch_valid = false; |
| 151 | m_last_scroll = 0; |
| 148 | 152 | |
| 149 | 153 | m_blink_flip_flop = 0; |
| 150 | 154 | m_reverse_field = 0; |
| r31155 | r31156 | |
| 171 | 175 | |
| 172 | 176 | if (m_columns == 132) { |
| 173 | 177 | horiz_pix_total = m_columns * 9; // display 1 less filler pixel in 132 char. mode (DEC-100) |
| 174 | | } else { |
| 178 | } |
| 179 | else { |
| 175 | 180 | horiz_pix_total = m_columns * 10; // normal 80 character mode. |
| 176 | 181 | } |
| 177 | 182 | |
| r31155 | r31156 | |
| 210 | 215 | |
| 211 | 216 | if (!(data & 0x08)) |
| 212 | 217 | { |
| 213 | | // The scroll offset put in 'm_scroll_latch' is a decimal offset controlling 10 scan lines. |
| 214 | | // The BIOS first writes the least significant bits, then the 2 most significant bits. |
| 215 | | |
| 216 | | // If scrolling up (incrementing the scroll latch), the additional line is linked in at the bottom. |
| 217 | | // When the scroll latch is incremented back to 0, the top line of the scrolling region must be unlinked. |
| 218 | | |
| 219 | | // When scrolling down (decrementing the scroll latch), new lines must be linked in at the top of the scroll region |
| 220 | | // and unlinked down at the bottom. |
| 221 | | |
| 222 | | // Note that the scroll latch value will be used during the next frame rather than the current frame. |
| 223 | | // All line linking/unlinking is done during the vertical blanking interval (< 550ms). |
| 224 | | |
| 225 | | // More on scrolling regions: Rainbow 100 B technical documentation (QV069-GZ) April 1985 page 22 |
| 226 | | // Also see VT100 Technical Manual: 4.7.4 Address Shuffling to 4.7.9 Split Screen Smooth Scrolling. |
| 227 | 218 | if (!(data & 0x04)) |
| 228 | 219 | { |
| 229 | | m_scroll_latch_valid = 0; // LSB is written first. |
| 230 | | |
| 220 | m_scroll_latch_valid = false; // LSB is written first. |
| 231 | 221 | // set lower part scroll |
| 232 | 222 | m_scroll_latch = data & 0x03; |
| 233 | 223 | } |
| r31155 | r31156 | |
| 235 | 225 | { |
| 236 | 226 | // set higher part scroll |
| 237 | 227 | m_scroll_latch = (m_scroll_latch & 0x03) | ((data & 0x03) << 2); |
| 238 | | |
| 239 | | m_scroll_latch_valid = 1; // MSB is written last. |
| 228 | m_scroll_latch_valid = true; |
| 240 | 229 | } |
| 241 | 230 | } |
| 242 | 231 | else |
| r31155 | r31156 | |
| 492 | 481 | UINT16 y_preset; |
| 493 | 482 | UINT16 x_preset, d_x_preset; |
| 494 | 483 | if (m_columns == 132) |
| 495 | | { x_preset = x * 9; |
| 484 | { |
| 485 | x_preset = x * 9; |
| 496 | 486 | d_x_preset = x * 18; |
| 497 | | } else |
| 487 | } |
| 488 | else |
| 498 | 489 | { |
| 499 | 490 | x_preset = x * 10; |
| 500 | 491 | d_x_preset = x * 20; |
| r31155 | r31156 | |
| 513 | 504 | |
| 514 | 505 | display_type = display_type & 3; |
| 515 | 506 | |
| 516 | | static int old_scroll_region; |
| 517 | | |
| 518 | 507 | // * SCREEN ATTRIBUTES (see VT-180 manual 6-30) * |
| 519 | 508 | // 'reverse field' = reverse video over entire screen |
| 520 | 509 | |
| r31155 | r31156 | |
| 546 | 535 | bool double_width = (display_type != 3) ? true : false; // all except normal: double width |
| 547 | 536 | bool double_height = (display_type & 1) ? false : true; // 0,2 = double height |
| 548 | 537 | |
| 538 | int smooth_offset = 0; |
| 539 | if (scroll_region != 0) |
| 540 | smooth_offset = m_last_scroll; // valid after VBI |
| 541 | |
| 542 | int extra_scan_line = 0; |
| 549 | 543 | for (int scan_line = 0; scan_line < 10; scan_line++) |
| 550 | 544 | { |
| 551 | 545 | y_preset = y * 10 + scan_line; |
| 552 | 546 | |
| 553 | | // Offset to bitmap in char-rom (used later below) |
| 554 | | int i = scan_line; |
| 555 | | |
| 556 | | // Affects 'i' / 'y_preset' / 'scan_line' (= LOOP VARIABLE) |
| 557 | | if ( m_scroll_latch_valid == 1) |
| 547 | int i = scan_line + smooth_offset; // offset to bitmap in char-rom (+ scroll) |
| 548 | if (i > 9) // SMOOTH SCROLL - fill previous scan line: |
| 558 | 549 | { |
| 559 | | // **** START IF SCROLL REGION: |
| 560 | | if ( (old_scroll_region == 0) && (scroll_region == 1) ) |
| 561 | | { |
| 562 | | if (scan_line == 0) // * EXECUTED ONCE * |
| 563 | | { |
| 564 | | scan_line = m_scroll_latch; // write less lines ! SIDE EFFECT ON LOOP ! |
| 565 | | i = m_scroll_latch; // set hard offset to char-rom |
| 566 | | } |
| 567 | | } |
| 550 | extra_scan_line += 1; |
| 551 | i = smooth_offset - extra_scan_line; // correct bitmap |
| 568 | 552 | |
| 569 | | // **** MIDDLE OF REGION: |
| 570 | | if ( (old_scroll_region == 1) && (scroll_region == 1) ) |
| 571 | | { |
| 572 | | if ( ( y * 10 + scan_line - m_scroll_latch ) >= 0 ) |
| 573 | | y_preset = y * 10 + scan_line - m_scroll_latch; |
| 553 | y_preset -= scan_line; |
| 554 | if (y > 0) |
| 555 | y_preset -= extra_scan_line; // Y * 10 - extra_scan_line |
| 574 | 556 | } |
| 575 | 557 | |
| 576 | | // **** END OF SCROLL REGION: |
| 577 | | if ( (old_scroll_region == 1) && (scroll_region == 0) ) |
| 578 | | { |
| 579 | | if (i > (9 - m_scroll_latch) ) |
| 580 | | { old_scroll_region = m_scroll_latch_valid; // keep track |
| 581 | | return; // WHAT HAPPENS WITH THE REST OF THE LINE (BLANK ?) |
| 582 | | } |
| 583 | | } |
| 584 | | } // (IF) scroll latch valid |
| 585 | | |
| 586 | 558 | switch (display_type) |
| 587 | 559 | { |
| 588 | 560 | case 0 : // bottom half of 'double height, double width' char. |
| r31155 | r31156 | |
| 613 | 585 | if (invert == 0) |
| 614 | 586 | line = 0xff; // CASE 5 A) |
| 615 | 587 | else |
| 616 | | { line = 0x00; // CASE 5 B) |
| 588 | { |
| 589 | line = 0x00; // CASE 5 B) |
| 617 | 590 | back_intensity = 0; // OVERRIDE: BLACK BACKGROUND |
| 618 | 591 | } |
| 619 | 592 | } |
| r31155 | r31156 | |
| 622 | 595 | for (int b = 0; b < 8; b++) // 0..7 |
| 623 | 596 | { |
| 624 | 597 | if (blank) |
| 625 | | { bit = m_reverse_field ^ m_basic_attribute; |
| 598 | { |
| 599 | bit = m_reverse_field ^ m_basic_attribute; |
| 626 | 600 | } |
| 627 | 601 | else |
| 628 | 602 | { |
| r31155 | r31156 | |
| 652 | 626 | } |
| 653 | 627 | } // for (8 bit) |
| 654 | 628 | |
| 655 | | |
| 656 | 629 | // char interleave (X) is filled with last bit |
| 657 | 630 | if (double_width) |
| 658 | 631 | { |
| r31155 | r31156 | |
| 661 | 634 | bitmap.pix16(y_preset, d_x_preset + 17) = bit; |
| 662 | 635 | |
| 663 | 636 | if (m_columns == 80) |
| 664 | | { bitmap.pix16(y_preset, d_x_preset + 18) = bit; |
| 637 | { |
| 638 | bitmap.pix16(y_preset, d_x_preset + 18) = bit; |
| 665 | 639 | bitmap.pix16(y_preset, d_x_preset + 19) = bit; |
| 666 | 640 | } |
| 667 | 641 | } |
| r31155 | r31156 | |
| 672 | 646 | if (m_columns == 80) |
| 673 | 647 | bitmap.pix16(y_preset, x_preset + 9) = bit; |
| 674 | 648 | } |
| 675 | | |
| 676 | 649 | } // for (scan_line) |
| 677 | 650 | |
| 678 | 651 | } |
| r31155 | r31156 | |
| 765 | 738 | |
| 766 | 739 | } |
| 767 | 740 | |
| 741 | void rainbow_video_device::notify_vblank(bool v) |
| 742 | { |
| 743 | static bool v_last; |
| 744 | m_notify_vblank = v; |
| 768 | 745 | |
| 746 | if (m_scroll_latch_valid) |
| 747 | { |
| 748 | // Line linking / unlinking is done during VBI (see 4.7.4 and up in VT manual). |
| 749 | if ((v == false) && (v_last == true)) |
| 750 | m_last_scroll = m_scroll_latch; |
| 751 | } |
| 752 | |
| 753 | v_last = v; |
| 754 | } |
| 755 | |
| 769 | 756 | void rainbow_video_device::palette_select ( int choice ) |
| 770 | 757 | { |
| 771 | 758 | switch(choice) |
| r31155 | r31156 | |
| 778 | 765 | break; |
| 779 | 766 | |
| 780 | 767 | case 0x02: |
| 781 | | m_palette->set_pen_color(1, 0 , 205 -50, 70 - 50); // GREEN (dim) |
| 782 | | m_palette->set_pen_color(2, 0 , 205, 70 ); // GREEN (NORMAL) |
| 783 | | m_palette->set_pen_color(3, 0, 205 +50, 70 + 50); // GREEN (brighter) |
| 768 | m_palette->set_pen_color(1, 35, 200 - 55, 75); // GREEN (dim) |
| 769 | m_palette->set_pen_color(2, 35 + 55, 200, 75 + 55); // GREEN (NORMAL) |
| 770 | m_palette->set_pen_color(3, 35 + 110, 200 + 55, 75 + 110); // GREEN (brighter) |
| 784 | 771 | break; |
| 785 | 772 | |
| 786 | 773 | case 0x03: |
trunk/src/mame/drivers/chihiro.c
| r31155 | r31156 | |
| 27 | 27 | | | 2004 | Wangan Midnight Maximum Tune (Japan) | Namco | GDROM | GDX-0008 | 317-5101-JPN | |
| 28 | 28 | | | 2004 | Wangan Midnight Maximum Tune (Japan) (Rev A) | Namco | GDROM | GDX-0008A | 317-5101-JPN | |
| 29 | 29 | |*| 2004 | Wangan Midnight Maximum Tune (Japan) (Rev B) | Namco | GDROM | GDX-0008B | 317-5101-JPN | |
| 30 | | | | 2004 | Wangan Midnight Maximum Tune (export) | Namco | GDROM | GDX-0009 | 317-5101-COM | |
| 31 | | | | 2004 | Wangan Midnight Maximum Tune (export) (Rev A) | Namco | GDROM | GDX-0009A | 317-5101-COM | |
| 32 | | |*| 2004 | Wangan Midnight Maximum Tune (export) (Rev B) | Namco | GDROM | GDX-0009B | 317-5101-COM | |
| 30 | | | 2004 | Wangan Midnight Maximum Tune (Export) | Namco | GDROM | GDX-0009 | 317-5101-COM | |
| 31 | | | 2004 | Wangan Midnight Maximum Tune (Export) (Rev A) | Namco | GDROM | GDX-0009A | 317-5101-COM | |
| 32 | |*| 2004 | Wangan Midnight Maximum Tune (Export) (Rev B) | Namco | GDROM | GDX-0009B | 317-5101-COM | |
| 33 | 33 | | | 2004 | Outrun 2 SP (Japan) | Sega | GDROM | GDX-0011 | | |
| 34 | 34 | | | 2004 | Ghost Squad | Sega | GDROM | GDX-0012 | 317-0398-COM | |
| 35 | 35 | |*| 2004 | Ghost Squad (Rev A) | Sega | GDROM | GDX-0012A | 317-0398-COM | |
| r31155 | r31156 | |
| 38 | 38 | |*| 2004 | Outrun 2 Special Tours (Rev A) | Sega | GDROM | GDX-0014A | 317-0xxx-COM | |
| 39 | 39 | |*| 2005 | Wangan Midnight Maximum Tune 2 (Japan) | Namco | GDROM | GDX-0015 | 317-5106-JPN | |
| 40 | 40 | |*| 2005 | Wangan Midnight Maximum Tune 2 (Japan) (Rev A) | Namco | GDROM | GDX-0015A | 317-5106-JPN | |
| 41 | | |*| 2005 | Wangan Midnight Maximum Tune 2 (export) | Namco | GDROM | GDX-0016 | 317-5106-COM | |
| 41 | |*| 2005 | Wangan Midnight Maximum Tune 2 (Export) | Namco | GDROM | GDX-0016 | 317-5106-COM | |
| 42 | 42 | | | 2005 | Sega Network Taisen Mahjong MJ 3 | Sega | GDROM | GDX-0017 | 317-0414-JPN | |
| 43 | 43 | | | 2005 | Sega Network Taisen Mahjong MJ 3 (Rev A) | Sega | GDROM | GDX-0017A | 317-0414-JPN | |
| 44 | 44 | | | 2005 | Sega Network Taisen Mahjong MJ 3 (Rev B) | Sega | GDROM | GDX-0017B | 317-0414-JPN | |
| r31155 | r31156 | |
| 4883 | 4883 | // 0008 GAME( 2004, wangmdjo, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (GDX-0008)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4884 | 4884 | // 0008A GAME( 2004, wangmdja, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev A) (GDX-0008A)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4885 | 4885 | // 0008B GAME( 2004, wangmidj, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev B) (GDX-0008B)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4886 | | // 0009 GAME( 2004, wangmido, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (export) (GDX-0009)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4887 | | // 0009A GAME( 2004, wangmida, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (export) (Rev A) (GDX-0009A)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4888 | | /* 0009B */ GAME( 2004, wangmid, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (export) (Rev B) (GDX-0009B)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4886 | // 0009 GAME( 2004, wangmido, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (GDX-0009)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4887 | // 0009A GAME( 2004, wangmida, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev A) (GDX-0009A)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4888 | /* 0009B */ GAME( 2004, wangmid, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev B) (GDX-0009B)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4889 | 4889 | // 0011 GAME( 2004, outr2sp, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Out Run 2 SP (Japan) (GDX-0011)", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE ) |
| 4890 | 4890 | // 0012 GAME( 2004, ghostsqo, ghostsqu, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Ghost Squad (GDX-0012)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4891 | 4891 | /* 0012A */ GAME( 2004, ghostsqu, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Ghost Squad (Rev A) (GDX-0012A)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| r31155 | r31156 | |
| 4894 | 4894 | /* 0014A */ GAME( 2004, outr2st, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Out Run 2 Special Tours (Rev A) (GDX-0014A)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4895 | 4895 | // 0015 GAME( 2005, wanmd2bo, wangmd2b, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4896 | 4896 | /* 0015A */ GAME( 2005, wangmd2b, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (Rev A) (GDX-0015A)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4897 | | /* 0016 */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (export) (GDX-0016)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4897 | /* 0016 */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0016)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4898 | 4898 | // 0017 GAME( 2005, mj3o, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (GDX-0017)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4899 | 4899 | // 0017A GAME( 2005, mj3a, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev A) (GDX-0017A)", GAME_NO_SOUND|GAME_NOT_WORKING ) |
| 4900 | 4900 | // 0017B GAME( 2005, mj3b, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev B) (GDX-0017B)", GAME_NO_SOUND|GAME_NOT_WORKING ) |