src/mess/drivers/pc6001.c
| r8748 | r8749 | |
| 21 | 21 | |
| 22 | 22 | TODO (game specific): |
| 23 | 23 | - (several AX* games, namely Simon, Arabian Rhapsody and others): inputs doesn't work |
| 24 | | - AX6 - Demo: When AY-based speech talks, screen should be a solid green (plain PC-6001) or solid white (Mk2 version) |
| 24 | - AX6 - Demo: When AY-based speech talks, other emus emulates the screen drawing to be a solid green (plain PC-6001) or solid white (Mk2 version), |
| 25 | but, according to an original video reference that I've seen, that screen should actually some kind of weird garbage on it ... |
| 26 | - AX6 - Powered Knight: doesn't work too well, according to the asm code it asks the player to press either 'B' or 'C' then a number but |
| 27 | nothing is shown on screen, other emus behaves the same, bad dump? |
| 25 | 28 | - AX10 - The Outlaw: gameplay is now broken due of the joycode stuff |
| 26 | | - Galaxy Mission Part I / II: can't start a play |
| 27 | | - Portopia Renzoku Satsujin Jiken: hangs after a bunch of text screens |
| 28 | 29 | (Mk2 mode 5 games) |
| 30 | - 3D Golf Simulation Super Version: gameplay / inputs looks broken |
| 29 | 31 | - American Truck: Screen is offset at the loading screen, loading bug? |
| 30 | 32 | - Castle Excellent: copyright text drawing is quite bogus, scans text in vertical instead of horizontal? |
| 33 | - Dezeni Land (ALL versions) / Hurry Fox 1/2: asks you to "load something", can't do it with current cassette kludge, also, for Dezeni Land(s) keyboard irqs |
| 34 | doesn't seem to work too well with halt opcode execution? |
| 35 | - Dezeni Land 1/4: dies after loading of main program |
| 36 | - Dezeni Land 2: dies at the "load something" screen with presumably wrong stack opcodes |
| 37 | - Forts 1: refuses to run, bad dump? |
| 31 | 38 | - Forts 2: ASCII gfxs are missing; |
| 32 | | - Hydlide: pressing down makes the player to die instantly |
| 39 | - Grobda: when "get ready" speech plays, screen should be full white but instead it's all black, same issue as AX-6 Demo? |
| 40 | |
| 33 | 41 | - Pac-Man: gameplay is too fast |
| 34 | 42 | - Yakyukyo: waits for an irq, check which one; |
| 35 | 43 | |
| r8748 | r8749 | |
| 972 | 980 | |
| 973 | 981 | static WRITE8_HANDLER ( pc6001m2_system_latch_w ) |
| 974 | 982 | { |
| 975 | | // UINT8 *work_ram = memory_region(space->machine, "maincpu"); |
| 976 | | |
| 977 | | // UINT32 startaddr[] = {WRAM(6), WRAM(6), WRAM(0), WRAM(5) }; //TODO: check me |
| 978 | | |
| 979 | | // pc6001_video_ram = work_ram + startaddr[(data >> 1) & 0x03]; |
| 980 | | |
| 981 | | // printf("%08x\n",startaddr[(data >> 1) & 0x03]); |
| 982 | | |
| 983 | 983 | if((!(sys_latch & 8)) && data & 0x8) //PLAY tape cmd |
| 984 | 984 | { |
| 985 | 985 | cas_switch = 1; |
| r8748 | r8749 | |
| 1322 | 1322 | PORT_BIT(0x00000010,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("GRPH") PORT_CODE(KEYCODE_LALT) |
| 1323 | 1323 | INPUT_PORTS_END |
| 1324 | 1324 | |
| 1325 | static UINT8 check_joy_press(running_machine *machine); |
| 1326 | |
| 1325 | 1327 | static INTERRUPT_GEN( pc6001_interrupt ) |
| 1326 | 1328 | { |
| 1329 | cur_keycode = check_joy_press(device->machine); |
| 1327 | 1330 | irq_vector = 0x16; |
| 1328 | 1331 | cpu_set_input_line(device, 0, ASSERT_LINE); |
| 1329 | 1332 | } |
| r8748 | r8749 | |
| 1533 | 1536 | old_key2 = key2; |
| 1534 | 1537 | old_key3 = key3; |
| 1535 | 1538 | } |
| 1539 | #if 0 |
| 1536 | 1540 | else /* joypad polling */ |
| 1537 | 1541 | { |
| 1538 | 1542 | cur_keycode = check_joy_press(space->machine); |
| 1539 | 1543 | if(cur_keycode) |
| 1540 | 1544 | { |
| 1541 | | irq_vector = 0x02; |
| 1545 | irq_vector = 0x16; |
| 1542 | 1546 | cputag_set_input_line(machine,"maincpu", 0, ASSERT_LINE); |
| 1543 | 1547 | } |
| 1544 | 1548 | } |
| 1549 | #endif |
| 1545 | 1550 | } |
| 1546 | 1551 | } |
| 1547 | 1552 | |
| r8748 | r8749 | |
| 1562 | 1567 | |
| 1563 | 1568 | static MACHINE_RESET(pc6001) |
| 1564 | 1569 | { |
| 1570 | UINT8 *work_ram = memory_region(machine, "maincpu"); |
| 1571 | |
| 1572 | pc6001_video_ram = work_ram + 0xc000; |
| 1573 | |
| 1565 | 1574 | port_c_8255=0; |
| 1566 | | //pc6001_video_ram = pc6001_ram; |
| 1567 | 1575 | |
| 1568 | 1576 | cpu_set_irq_callback(machine->device("maincpu"),pc6001_irq_callback); |
| 1569 | 1577 | cas_switch = 0; |
| r8748 | r8749 | |
| 1576 | 1584 | |
| 1577 | 1585 | static MACHINE_RESET(pc6001m2) |
| 1578 | 1586 | { |
| 1587 | UINT8 *work_ram = memory_region(machine, "maincpu"); |
| 1588 | |
| 1589 | pc6001_video_ram = work_ram + 0xc000 + 0x28000; |
| 1590 | |
| 1579 | 1591 | port_c_8255=0; |
| 1580 | | //pc6001_video_ram = pc6001_ram; |
| 1581 | 1592 | |
| 1582 | 1593 | cpu_set_irq_callback(machine->device("maincpu"),pc6001_irq_callback); |
| 1583 | 1594 | cas_switch = 0; |