Update to spice2x-25-04-25 (pre-apply)
> broken commit
This commit is contained in:
+58
-14
@@ -8,6 +8,10 @@
|
||||
|
||||
using namespace acioemu;
|
||||
|
||||
namespace acioemu {
|
||||
bool ICCA_DEVICE_HACK = false;
|
||||
}
|
||||
|
||||
ICCADevice::ICCADevice(bool flip_order, bool keypad_thread, uint8_t node_count) {
|
||||
|
||||
// init defaults
|
||||
@@ -98,11 +102,13 @@ bool ICCADevice::parse_msg(MessageData *msg_in,
|
||||
// send version data
|
||||
auto msg = this->create_msg(msg_in, MSG_VERSION_SIZE);
|
||||
if (
|
||||
avs::game::is_model({"LDJ", "TBS"}) ||
|
||||
avs::game::is_model({"LDJ", "TBS", "UJK"}) ||
|
||||
// SDVX Valkyrie cabinet mode
|
||||
(avs::game::is_model("KFC") && (avs::game::SPEC[0] == 'G' || avs::game::SPEC[0] == 'H'))
|
||||
) {
|
||||
this->set_version(msg, 0x3, 0, 1, 7, 0, "ICCA");
|
||||
} else if (avs::game::is_model({"VFG"})) {
|
||||
this->set_version(msg, 0x3, 0, 1, 7, 0, "ICCB");
|
||||
} else {
|
||||
this->set_version(msg, 0x3, 0, 1, 6, 0, "ICCA");
|
||||
}
|
||||
@@ -327,6 +333,9 @@ bool ICCADevice::parse_msg(MessageData *msg_in,
|
||||
}
|
||||
case ACIO_CMD_STARTUP:
|
||||
case ACIO_CMD_CLEAR:
|
||||
case 0x30: // GetBoardProductNumber
|
||||
case 0x31: // GetMicomInfo
|
||||
case 0x3A: // ???
|
||||
case 0x0116: // ???
|
||||
case 0x0120: // ???
|
||||
case 0xFF: // BROADCAST
|
||||
@@ -385,19 +394,48 @@ void ICCADevice::update_card(int unit) {
|
||||
static int KEYPAD_EAMUSE_MAPPING[] = {
|
||||
0, 1, 5, 9, 2, 6, 10, 3, 7, 11, 8, 4
|
||||
};
|
||||
|
||||
// map for KEYPAD_KEY_CODES:
|
||||
// 7 8 9 | 800 8000 8
|
||||
// 4 5 6 | 400 4000 4
|
||||
// 1 2 3 | 200 2000 2
|
||||
// 0 00 . | 100 1000 1
|
||||
static int KEYPAD_KEY_CODES[]{
|
||||
0x100,
|
||||
0x200,
|
||||
0x2000,
|
||||
2,
|
||||
0x400,
|
||||
0x4000,
|
||||
4,
|
||||
0x800,
|
||||
0x8000,
|
||||
8,
|
||||
1,
|
||||
0x1000
|
||||
0x100, // 0
|
||||
0x200, // 1
|
||||
0x2000, // 2
|
||||
2, // 3
|
||||
0x400, // 4
|
||||
0x4000, // 5
|
||||
4, // 6
|
||||
0x800, // 7
|
||||
0x8000, // 8
|
||||
8, // 9
|
||||
1, // .
|
||||
0x1000 // 00
|
||||
};
|
||||
|
||||
// map for KEYPAD_KEY_CODES_ALT:
|
||||
// 7 8 9 | 8 80 800
|
||||
// 4 5 6 | 4 40 400
|
||||
// 1 2 3 | 2 20 200
|
||||
// 0 00 . | 1 10 100
|
||||
//
|
||||
// note that the only game that needs this (SDVX VM) does not accept decimal,
|
||||
// so that key is untested
|
||||
static int KEYPAD_KEY_CODES_ALT[]{
|
||||
1, // 0
|
||||
2, // 1
|
||||
0x20, // 2
|
||||
0x200, // 3
|
||||
4, // 4
|
||||
0x40, // 5
|
||||
0x400, // 6
|
||||
8, // 7
|
||||
0x80, // 8
|
||||
0x800, // 9
|
||||
0x100, // .
|
||||
0x10 // 00
|
||||
};
|
||||
static uint8_t KEYPAD_KEY_CODE_NUMS[]{
|
||||
0, 1, 5, 9, 2, 6, 10, 3, 7, 11, 8, 4
|
||||
@@ -421,7 +459,13 @@ void ICCADevice::update_keypad(int unit, bool update_edge) {
|
||||
|
||||
// check if pressed
|
||||
if (eamu_state & (1 << KEYPAD_EAMUSE_MAPPING[i])) {
|
||||
this->keypad[unit] |= KEYPAD_KEY_CODES[i];
|
||||
|
||||
if (ICCA_DEVICE_HACK) {
|
||||
this->keypad[unit] |= KEYPAD_KEY_CODES_ALT[i];
|
||||
} else {
|
||||
this->keypad[unit] |= KEYPAD_KEY_CODES[i];
|
||||
}
|
||||
|
||||
if (!this->keypad_last[unit][i] && update_edge) {
|
||||
this->keydown[unit] = (this->keypad_capture[unit] << 4) | KEYPAD_KEY_CODE_NUMS[n];
|
||||
this->keypad_last[unit][i] = true;
|
||||
|
||||
Reference in New Issue
Block a user