k573mcal.cpp: Clean up code further using multibyte.h helpers

This commit is contained in:
AJR 2023-11-04 15:07:14 -04:00
parent a140272be0
commit c95313c5a3

View File

@ -87,21 +87,16 @@ int k573mcal_device::handle_message(const uint8_t* send_buffer, uint32_t send_si
system_time systime;
machine().base_datetime(systime);
uint8_t resp[] = {
0x01, // status, must be 1
uint8_t(systime.local_time.year % 100),
uint8_t(systime.local_time.month + 1),
systime.local_time.mday,
systime.local_time.weekday,
systime.local_time.hour,
systime.local_time.minute,
seconds // Can't be the same value twice in a row
};
*recv_buffer++ = 0x01; // status, must be 1
*recv_buffer++ = uint8_t(systime.local_time.year % 100);
*recv_buffer++ = uint8_t(systime.local_time.month + 1);
*recv_buffer++ = systime.local_time.mday;
*recv_buffer++ = systime.local_time.weekday;
*recv_buffer++ = systime.local_time.hour;
*recv_buffer++ = systime.local_time.minute;
*recv_buffer++ = seconds; // Can't be the same value twice in a row
seconds = (seconds + 1) % 60;
memcpy(recv_buffer, resp, sizeof(resp));
recv_buffer += sizeof(resp);
return 1;
}
@ -112,13 +107,9 @@ int k573mcal_device::handle_message(const uint8_t* send_buffer, uint32_t send_si
// Only encountered and tested on Hornet games.
// msg: 71 ff ff 01 -> Offset = 0xffff, requested size = 0x01 bytes, special request for the area specification flag? Used by Sys573
uint8_t resp[] = {
0x01, // status, must be 1
uint8_t(m_in1->read() & 0x0f), // Area specification
};
*recv_buffer++ = 0x01; // status, must be 1
*recv_buffer++ = uint8_t(m_in1->read() & 0x0f); // Area specification
memcpy(recv_buffer, resp, sizeof(resp));
recv_buffer += sizeof(resp);
return 4;
}
@ -128,25 +119,22 @@ int k573mcal_device::handle_message(const uint8_t* send_buffer, uint32_t send_si
if (val == 0x7f00) {
// Return main ID
uint8_t resp[] = {
0x01, // status, must be 1
uint8_t((mainId >> 24) & 0xff), uint8_t((mainId >> 16) & 0xff), uint8_t((mainId >> 8) & 0xff), uint8_t(mainId & 0xff),
};
memcpy(recv_buffer, resp, sizeof(resp));
recv_buffer += sizeof(resp);
*recv_buffer++ = 0x01; // status, must be 1
put_u32be(recv_buffer, mainId);
recv_buffer += 4;
}
else if (val == 0x8000) {
// Return sub ID
uint8_t resp[] = {
0x01, // status, must be 1
'<', 'I', 'N', 'I', 'T', ' ', 'C', 'O', 'M', 'P', 'L', 'E', 'T', 'E', '!', '>',
uint8_t((subId >> 24) & 0xff), uint8_t((subId >> 16) & 0xff), uint8_t((subId >> 8) & 0xff), uint8_t(subId & 0xff),
uint8_t((~subId >> 24) & 0xff), uint8_t((~subId >> 16) & 0xff), uint8_t((~subId >> 8) & 0xff), uint8_t(~subId & 0xff),
};
using namespace std::literals;
static const std::string_view init_complete = "<INIT COMPLETE!>"sv;
memcpy(recv_buffer, resp, sizeof(resp));
recv_buffer += sizeof(resp);
// Return sub ID
*recv_buffer++ = 0x01; // status, must be 1
memcpy(recv_buffer, init_complete.data(), init_complete.size());
recv_buffer += init_complete.size();
put_u32be(recv_buffer, subId);
recv_buffer += 4;
put_u32be(recv_buffer, ~subId);
recv_buffer += 4;
}
return 4;
@ -160,12 +148,7 @@ int k573mcal_device::handle_message(const uint8_t* send_buffer, uint32_t send_si
// Set next sub ID
subId = get_u32be(&send_buffer[4]);
uint8_t resp[] = {
0x01, // status, must be 1
};
memcpy(recv_buffer, resp, sizeof(resp));
recv_buffer += sizeof(resp);
*recv_buffer++ = 0x01; // status, must be 1
}
return 12;
@ -179,14 +162,9 @@ int k573mcal_device::handle_message(const uint8_t* send_buffer, uint32_t send_si
// 000000000000B5 is ???
// msg: 7e xx
uint8_t resp[] = {
// 0x01 - Breaks loop, sends next byte
// 0x04 - Resends byte
0x01,
};
memcpy(recv_buffer, resp, sizeof(resp));
recv_buffer += sizeof(resp);
// status: 0x01 - Breaks loop, sends next byte
// 0x04 - Resends byte
*recv_buffer++ = 0x01;
return 2;
}