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