Ejemplo n.º 1
0
static void controller_write_pak_command(struct game_controller* cont, uint8_t* cmd)
{
    enum pak_type pak;
    int connected = controller_input_is_connected(cont->cin, &pak);

    if (!connected)
    {
        cmd[1] |= 0x80;
        return;
    }

    switch (pak)
    {
    case PAK_NONE: /* do nothing */
        break;
    case PAK_MEM:
        mempak_write_command(&cont->mempak, cmd);
        break;
    case PAK_RUMBLE:
        rumblepak_write_command(&cont->rumblepak, cmd);
        break;
    case PAK_TRANSFER: /* TODO */
        break;
    default:
        DebugMessage(M64MSG_WARNING, "Unknown plugged pak %d", (int)pak);
    }

    cmd[0x25] = pak_data_crc(&cmd[5]);
}
Ejemplo n.º 2
0
static void controller_write_pak_command(struct game_controller* cont, uint8_t* cmd)
{
    enum pak_type pak;
    uint16_t address;
    uint8_t* data;
    uint8_t* crc;
    int connected = controller_input_is_connected(cont->cin, &pak);

    if (!connected)
    {
        cmd[1] |= 0x80;
        return;
    }

    address = (cmd[3] << 8) | (cmd[4] & 0xe0);
    data = &cmd[5];
    crc = &cmd[5 + PAK_CHUNK_SIZE];

    switch (pak)
    {
    case PAK_NONE: /* do nothing */ break;
    case PAK_MEM: mempak_write_command(&cont->mempak, address, data, PAK_CHUNK_SIZE); break;
    case PAK_RUMBLE: rumblepak_write_command(&cont->rumblepak, address, data, PAK_CHUNK_SIZE); break;
    case PAK_TRANSFER: /* TODO */ break;
    default:
        DebugMessage(M64MSG_WARNING, "Unknown plugged pak %d", (int)pak);
    }

    *crc = pak_data_crc(data);
}
static void controller_write_pak_command(struct game_controller* cont, uint8_t* cmd)
{
    enum pak_type pak;
    uint16_t address;
    const uint8_t *data = NULL;
    int       connected = game_controller_is_connected(cont, &pak);

    if (!connected)
    {
        cmd[1] |= 0x80;
        return;
    }

    address = (cmd[3] << 8) | (cmd[4] & 0xe0);
    data    = &cmd[5];

    switch (pak)
    {
       case PAK_NONE:
          /* do nothing */
          break;
       case PAK_MEM:
          mempak_write_command(&cont->mempak, address, data);
          break;
       case PAK_RUMBLE:
          rumblepak_write_command(&cont->rumblepak, address, data);
          break;
       case PAK_TRANSFER:
          transferpak_write_command(&cont->transferpak, address, data);
          break;
       default:
          DebugMessage(M64MSG_WARNING, "Unknown plugged pak %d", (int)pak);
    }

    cmd[0x25] = pak_data_crc((uint8_t*)data);
}