trunk/src/mame/machine/snes.c
| r21566 | r21567 | |
| 527 | 527 | case RDIO: /* Programmable I/O port - echos back what's written to WRIO */ |
| 528 | 528 | return SNES_CPU_REG_STATE(WRIO); |
| 529 | 529 | case JOY1L: /* Joypad 1 status register (low) */ |
| 530 | | if(state->m_is_nss && state->m_input_disabled) |
| 531 | | return 0; |
| 532 | | |
| 533 | | return state->m_joy1l; |
| 534 | 530 | case JOY1H: /* Joypad 1 status register (high) */ |
| 535 | | if(state->m_is_nss && state->m_input_disabled) |
| 536 | | return 0; |
| 537 | | |
| 538 | | return state->m_joy1h; |
| 539 | 531 | case JOY2L: /* Joypad 2 status register (low) */ |
| 540 | | if(state->m_is_nss && state->m_input_disabled) |
| 541 | | return 0; |
| 542 | | |
| 543 | | return state->m_joy2l; |
| 544 | 532 | case JOY2H: /* Joypad 2 status register (high) */ |
| 545 | | if(state->m_is_nss && state->m_input_disabled) |
| 546 | | return 0; |
| 547 | | |
| 548 | | return state->m_joy2h; |
| 549 | 533 | case JOY3L: /* Joypad 3 status register (low) */ |
| 550 | | if(state->m_is_nss && state->m_input_disabled) |
| 551 | | return 0; |
| 552 | | |
| 553 | | return state->m_joy3l; |
| 554 | 534 | case JOY3H: /* Joypad 3 status register (high) */ |
| 555 | | if(state->m_is_nss && state->m_input_disabled) |
| 556 | | return 0; |
| 557 | | |
| 558 | | return state->m_joy3h; |
| 559 | 535 | case JOY4L: /* Joypad 4 status register (low) */ |
| 560 | | if(state->m_is_nss && state->m_input_disabled) |
| 561 | | return 0; |
| 562 | | |
| 563 | | return state->m_joy4l; |
| 564 | 536 | case JOY4H: /* Joypad 4 status register (high) */ |
| 565 | 537 | if(state->m_is_nss && state->m_input_disabled) |
| 566 | 538 | return 0; |
| 539 | return SNES_CPU_REG_STATE(offset); |
| 567 | 540 | |
| 568 | | return state->m_joy4h; |
| 569 | | |
| 570 | 541 | case 0x4100: /* NSS Dip-Switches */ |
| 571 | 542 | { |
| 572 | 543 | if (state->m_is_nss) |
| r21566 | r21567 | |
| 1499 | 1470 | // this actually works like reading the first 16bits from oldjoy1/2 in reverse order |
| 1500 | 1471 | if (SNES_CPU_REG_STATE(NMITIMEN) & 1) |
| 1501 | 1472 | { |
| 1502 | | state->m_joy1l = (state->m_data1[0] & 0x00ff) >> 0; |
| 1503 | | state->m_joy1h = (state->m_data1[0] & 0xff00) >> 8; |
| 1504 | | state->m_joy2l = (state->m_data1[1] & 0x00ff) >> 0; |
| 1505 | | state->m_joy2h = (state->m_data1[1] & 0xff00) >> 8; |
| 1506 | | state->m_joy3l = (state->m_data2[0] & 0x00ff) >> 0; |
| 1507 | | state->m_joy3h = (state->m_data2[0] & 0xff00) >> 8; |
| 1508 | | state->m_joy4l = (state->m_data2[1] & 0x00ff) >> 0; |
| 1509 | | state->m_joy4h = (state->m_data2[1] & 0xff00) >> 8; |
| 1473 | SNES_CPU_REG_STATE(JOY1L) = (state->m_data1[0] & 0x00ff) >> 0; |
| 1474 | SNES_CPU_REG_STATE(JOY1H) = (state->m_data1[0] & 0xff00) >> 8; |
| 1475 | SNES_CPU_REG_STATE(JOY2L) = (state->m_data1[1] & 0x00ff) >> 0; |
| 1476 | SNES_CPU_REG_STATE(JOY2H) = (state->m_data1[1] & 0xff00) >> 8; |
| 1477 | SNES_CPU_REG_STATE(JOY3L) = (state->m_data2[0] & 0x00ff) >> 0; |
| 1478 | SNES_CPU_REG_STATE(JOY3H) = (state->m_data2[0] & 0xff00) >> 8; |
| 1479 | SNES_CPU_REG_STATE(JOY4L) = (state->m_data2[1] & 0x00ff) >> 0; |
| 1480 | SNES_CPU_REG_STATE(JOY4H) = (state->m_data2[1] & 0xff00) >> 8; |
| 1510 | 1481 | |
| 1511 | 1482 | // make sure read_idx starts returning all 1s because the auto-read reads it :-) |
| 1512 | 1483 | state->m_read_idx[0] = 16; |
| r21566 | r21567 | |
| 1591 | 1562 | } |
| 1592 | 1563 | |
| 1593 | 1564 | /* Inititialize registers/variables */ |
| 1594 | | state->m_joy1l = state->m_joy1h = state->m_joy2l = state->m_joy2h = state->m_joy3l = state->m_joy3h = 0; |
| 1565 | SNES_CPU_REG_STATE(JOY1L) = SNES_CPU_REG_STATE(JOY1H) = 0; |
| 1566 | SNES_CPU_REG_STATE(JOY2L) = SNES_CPU_REG_STATE(JOY2H) = 0; |
| 1567 | SNES_CPU_REG_STATE(JOY3L) = SNES_CPU_REG_STATE(JOY3H) = 0; |
| 1568 | SNES_CPU_REG_STATE(JOY4L) = SNES_CPU_REG_STATE(JOY4H) = 0; |
| 1595 | 1569 | state->m_data1[0] = state->m_data2[0] = state->m_data1[1] = state->m_data2[1] = 0; |
| 1596 | 1570 | |
| 1597 | 1571 | state->m_io_read = nss_io_read; |
| r21566 | r21567 | |
| 1742 | 1716 | state->save_item(NAME(state->m_htime)); |
| 1743 | 1717 | state->save_item(NAME(state->m_vtime)); |
| 1744 | 1718 | state->save_item(NAME(state->m_hdmaen)); |
| 1745 | | state->save_item(NAME(state->m_joy1l)); |
| 1746 | | state->save_item(NAME(state->m_joy1h)); |
| 1747 | | state->save_item(NAME(state->m_joy2l)); |
| 1748 | | state->save_item(NAME(state->m_joy2h)); |
| 1749 | | state->save_item(NAME(state->m_joy3l)); |
| 1750 | | state->save_item(NAME(state->m_joy3h)); |
| 1751 | | state->save_item(NAME(state->m_joy4l)); |
| 1752 | | state->save_item(NAME(state->m_joy4h)); |
| 1753 | 1719 | state->save_item(NAME(state->m_data1)); |
| 1754 | 1720 | state->save_item(NAME(state->m_data2)); |
| 1755 | 1721 | state->save_item(NAME(state->m_read_idx)); |
trunk/src/mess/drivers/snes.c
| r21566 | r21567 | |
| 591 | 591 | // this actually works like reading the first 16bits from oldjoy1/2 in reverse order |
| 592 | 592 | if (SNES_CPU_REG_STATE(NMITIMEN) & 1) |
| 593 | 593 | { |
| 594 | | state->m_joy1l = (state->m_data1[0] & 0x00ff) >> 0; |
| 595 | | state->m_joy1h = (state->m_data1[0] & 0xff00) >> 8; |
| 596 | | state->m_joy2l = (state->m_data1[1] & 0x00ff) >> 0; |
| 597 | | state->m_joy2h = (state->m_data1[1] & 0xff00) >> 8; |
| 598 | | state->m_joy3l = (state->m_data2[0] & 0x00ff) >> 0; |
| 599 | | state->m_joy3h = (state->m_data2[0] & 0xff00) >> 8; |
| 600 | | state->m_joy4l = (state->m_data2[1] & 0x00ff) >> 0; |
| 601 | | state->m_joy4h = (state->m_data2[1] & 0xff00) >> 8; |
| 594 | SNES_CPU_REG_STATE(JOY1L) = (state->m_data1[0] & 0x00ff) >> 0; |
| 595 | SNES_CPU_REG_STATE(JOY1H) = (state->m_data1[0] & 0xff00) >> 8; |
| 596 | SNES_CPU_REG_STATE(JOY2L) = (state->m_data1[1] & 0x00ff) >> 0; |
| 597 | SNES_CPU_REG_STATE(JOY2H) = (state->m_data1[1] & 0xff00) >> 8; |
| 598 | SNES_CPU_REG_STATE(JOY3L) = (state->m_data2[0] & 0x00ff) >> 0; |
| 599 | SNES_CPU_REG_STATE(JOY3H) = (state->m_data2[0] & 0xff00) >> 8; |
| 600 | SNES_CPU_REG_STATE(JOY4L) = (state->m_data2[1] & 0x00ff) >> 0; |
| 601 | SNES_CPU_REG_STATE(JOY4H) = (state->m_data2[1] & 0xff00) >> 8; |
| 602 | 602 | |
| 603 | 603 | // make sure read_idx starts returning all 1s because the auto-read reads it :-) |
| 604 | 604 | state->m_read_idx[0] = 16; |