wrapemu.cpp
1 #include <stdio.h> 2 #include <string.h> 3 4 extern "C" { 5 #include "emuapi.h" 6 #include "platform_config.h" 7 } 8 #include <Arduino.h> 9 10 11 // Emulation includes 12 13 14 static int ik; // joypad key 15 static int pik=0; 16 17 static int ihk; // I2C keyboard key 18 static int iusbhk; // USB keyboard key 19 20 void xxxx_Input(int bClick) { 21 ik = emu_GetPad(); 22 ihk = emu_ReadI2CKeyboard(); 23 } 24 25 void emu_KeyboardOnDown(int keymodifer, int key) { 26 int keyCode = -1; //INV_KEY; 27 if ((key >=0xc0) && (key <=0xdf)) { 28 keyCode = ((key-0xc0) & 0x1f) + 0x7f; 29 } 30 else { 31 keyCode = key & 0x7f; 32 } 33 34 //Serial.println(keyCode); 35 36 if (keyCode != -1) { 37 iusbhk = keyCode; 38 } 39 } 40 41 void emu_KeyboardOnUp(int keymodifer, int key) { 42 iusbhk = 0; 43 } 44 45 void xxxx_Init(void) 46 { 47 #ifdef HAS_SND 48 emu_sndInit(); 49 #endif 50 } 51 52 53 void xxxx_Start(char * filename) 54 { 55 emu_printf("emu starting"); 56 57 emu_printf("emu started"); 58 } 59 60 static int prev_hk = 0; 61 void xxxx_Step(void) 62 { 63 int k=ik; 64 #ifdef TEECOMPUTER 65 int hk = ihk; 66 if (hk == 'q') { // SELECT 67 //emu_printf("selectd"); 68 } 69 else if (hk == 'w') { // START 70 //emu_printf("startd"); 71 } 72 else { 73 if (prev_hk == 'q') { 74 //emu_printf("selectu"); 75 } 76 else if (prev_hk == 'w') { 77 //emu_printf("startu"); 78 } 79 } 80 prev_hk = hk; 81 // Ignore joypad if shift/fn is pressed!!! 82 //if ( !(k & MASK_KEY_USER1) && !(k & MASK_KEY_USER2) ) 83 #endif 84 { 85 if ( ( !(pik & MASK_JOY2_BTN) && (k & MASK_JOY2_BTN) ) || ( !(pik & MASK_JOY1_BTN) && (k & MASK_JOY1_BTN) ) ) { 86 87 } 88 else if ( ( (pik & MASK_JOY2_BTN) && !(k & MASK_JOY2_BTN) ) || ( (pik & MASK_JOY1_BTN) && !(k & MASK_JOY1_BTN) ) ) { 89 90 } 91 if ( ( !(pik & MASK_JOY2_UP) && (k & MASK_JOY2_UP) ) || ( !(pik & MASK_JOY1_UP) && (k & MASK_JOY1_UP) ) ) { 92 93 } 94 else if ( ( (pik & MASK_JOY2_UP) && !(k & MASK_JOY2_UP) ) || ( (pik & MASK_JOY1_UP) && !(k & MASK_JOY1_UP) ) ) { 95 96 } 97 if ( ( !(pik & MASK_JOY2_DOWN) && (k & MASK_JOY2_DOWN) ) || ( !(pik & MASK_JOY1_DOWN) && (k & MASK_JOY1_DOWN) ) ) { 98 99 } 100 else if ( ( (pik & MASK_JOY2_DOWN) && !(k & MASK_JOY2_DOWN) ) || ( (pik & MASK_JOY1_DOWN) && !(k & MASK_JOY1_DOWN) ) ) { 101 102 } 103 if ( ( !(pik & MASK_JOY2_RIGHT) && (k & MASK_JOY2_RIGHT) ) || ( !(pik & MASK_JOY1_RIGHT) && (k & MASK_JOY1_RIGHT) ) ) { 104 105 } 106 else if ( ( (pik & MASK_JOY2_RIGHT) && !(k & MASK_JOY2_RIGHT) ) || ( (pik & MASK_JOY1_RIGHT) && !(k & MASK_JOY1_RIGHT) ) ) { 107 108 } 109 if ( ( !(pik & MASK_JOY2_LEFT) && (k & MASK_JOY2_LEFT) ) || ( !(pik & MASK_JOY1_LEFT) && (k & MASK_JOY1_LEFT) ) ) { 110 111 } 112 else if ( ( (pik & MASK_JOY2_LEFT) && !(k & MASK_JOY2_LEFT) ) || ( (pik & MASK_JOY1_LEFT) && !(k & MASK_JOY1_LEFT) ) ) { 113 114 } 115 } 116 117 pik = k; 118 119 } 120 121 #ifdef HAS_SND 122 void SND_Process( void * stream, int len ) 123 { 124 } 125 #endif 126