Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #if defined(_WIN32)
  2.   #define dllexport __declspec(dllexport)
  3. #else
  4.   #define dllexport
  5. #endif
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9.  
  10. typedef char     int8;
  11. typedef short    int16;
  12. typedef int    int32;
  13. typedef unsigned    uint8;
  14. typedef unsigned short  uint16;
  15. typedef unsigned int   uint32;
  16.  
  17. extern "C" {
  18.   void link_power();
  19.   void link_reset();
  20.   unsigned link_run();
  21.   uint8 link_read(unsigned addr);
  22.   void link_write(unsigned addr, uint8 data);
  23. }
  24.  
  25. struct BSX {
  26.  
  27.   struct Regs {
  28.     uint8 sat_test[2];
  29.     uint8 dl_size;
  30.     uint8 dl_main;
  31.     uint8 dl_sec;
  32.     uint8 dl_check;
  33.     //uint16 set_unknown;
  34.     bool dl_main_enable;
  35.     bool dl_sec_enable;
  36.  
  37.   } regs;
  38.  
  39.   unsigned run() {
  40.     return 2u;
  41.   }
  42.  
  43.   uint8 read(unsigned addr) {
  44.       addr&=0xFFFF;
  45.       switch (addr) {
  46.         case 0x2188:
  47.             return regs.sat_test[1];
  48.             break;
  49.         case 0x2189:
  50.             return regs.sat_test[2];
  51.             break;
  52.         default:
  53.             return 0x00;
  54.             break;
  55.       }
  56.   }
  57.  
  58.   void write(unsigned addr, uint8 data) {
  59.       addr&=0xFFFF;
  60.       switch (addr) {
  61.         case 0x2188:
  62.             regs.sat_test[1]=data;
  63.             break;
  64.         case 0x2189:
  65.             regs.sat_test[2]=data;
  66.             break;
  67.       }
  68.  
  69.   }
  70.  
  71.   void power() {
  72.     printf("Initialized BS-X");
  73.  
  74.     reset();
  75.   }
  76.  
  77.   void reset() {
  78.     printf("(Re)set.");
  79.   }
  80. };
  81.  
  82. static BSX bsx;
  83.  
  84. dllexport void link_power() {
  85.   return bsx.power();
  86. }
  87.  
  88. dllexport void link_reset() {
  89.   return bsx.reset();
  90. }
  91.  
  92. dllexport unsigned link_run() {
  93.   return bsx.run();
  94. }
  95.  
  96. dllexport uint8 link_read(unsigned addr) {
  97.   return bsx.read(addr);
  98. }
  99.  
  100. dllexport void link_write(unsigned addr, uint8 data) {
  101.   return bsx.write(addr, data);
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement