SHARP X1 Emulator 'eX1'
SHARP X1twin Emulator 'eX1twin'
SHARP X1turbo Emulator 'eX1turbo'
+ SHARP X1turboZ Emulator 'eX1turboZ'
Author : Takeda.Toshiya
Date : 2013.05.01-
#define CAPS 0xfe
#define KANA 0xff
+namespace X1 {
+
static const uint8_t matrix[15][8] = {
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // (CMT buttons ???)
{0x1b, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37}, // ESC 1 2 3 4 5 6 7
}
// check phantom keys (thanks Mr.Sato)
- for(int i = 1; i < 15; i++) {
+ for(int i = 0; i < 15; i++) {
if(!(column & (1 << i))) {
uint8_t row_hold;
- uint8_t row_byte = key_map[i];
+ uint8_t row_reak = key_map[i] & (~diode[i]);
do {
- row_hold = row_byte;
+ row_hold = row_reak;
for(int c = 0; c < 15; c++) {
if(c != i){
- uint8_t row_bridge = (key_map[c] & (~diode[c]));
- if(row_byte & row_bridge) {
- row_byte |= key_map[c];
+ uint8_t row_bridge = key_map[c] & (~diode[c]);
+ if(row_reak & row_bridge) {
+ row_reak |= row_bridge;
}
- if(row_hold != row_byte) break;
+ if(row_hold != row_reak) break;
}
}
- } while(row_hold != row_byte);
- value |= row_byte;
+ } while(row_hold != row_reak);
+ value |= key_map[i] | row_reak;
}
}
return ~value;
#define STATE_VERSION 1
-void KEYBOARD::save_state(FILEIO* state_fio)
+bool KEYBOARD::process_state(FILEIO* state_fio, bool loading)
{
- state_fio->FputUint32(STATE_VERSION);
- state_fio->FputInt32(this_device_id);
-
- state_fio->FputUint8(caps_locked);
- state_fio->FputUint8(kana_locked);
- state_fio->FputUint16(column);
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ if(!state_fio->StateCheckInt32(this_device_id)) {
+ return false;
+ }
+ state_fio->StateUint8(caps_locked);
+ state_fio->StateUint8(kana_locked);
+ state_fio->StateUint16(column);
+ return true;
}
-bool KEYBOARD::load_state(FILEIO* state_fio)
-{
- if(state_fio->FgetUint32() != STATE_VERSION) {
- return false;
- }
- if(state_fio->FgetInt32() != this_device_id) {
- return false;
- }
- caps_locked = state_fio->FgetUint8();
- kana_locked= state_fio->FgetUint8();
- column = state_fio->FgetUint16();
- return true;
}
-