Skip to content

双人联机的时候p2手柄有bug #58

@dahailiu123

Description

@dahailiu123

手柄是个坑,cpu只会发0x4016。 不会0x4017!!! 所以cpu写的时候要这样
FC 的硬件电路设计决定了:4016 的写操作会同时触发 P1 和 P2 两个手柄的锁存动作,根本不需要写 4017。
还有一个原因apu需要写4017,为了不冲突。锁存只发4016!
if (addr == 0x4016)
{
// "Lock In" controller state at this time
//printf("addr: %04X, controller[0]: %02X, controller[1]: %02X\n", addr, controller[0], controller[1]);
//controller_state[addr & 0x0001] = controller[addr & 0x0001];
//printf("addr: %04X, controller_state[0]: %02X, controller_state[1]: %02X\n", addr, controller_state[0], controller_state[1]);
controller_state[0] = controller[0];
controller_state[1] = controller[1];
}

cpu 读手柄是4016,4017交替发。
data = (controller_state[addr & 0x0001] & 0x80) > 0;
controller_state[addr & 0x0001] <<= 1;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions