LuigiBlood

BS-X Project

Aug 15th, 2011
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #if defined(_WIN32)
  2.   #define dllexport __declspec(dllexport)
  3. #else
  4.   #define dllexport
  5. #endif
  6.  
  7. //BS-X Project Link DLL for bsnes by Seru-kun/LuigiBlood
  8. //link_read and link_write doesn't work.
  9. //Little update
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <stdint.h>
  13. #include <windows.h>
  14.  
  15. /*
  16. typedef signed char     int8;
  17. typedef signed short    int16;
  18. typedef signed int    int32;
  19. typedef unsigned char    uint8;
  20. typedef unsigned short  uint16;
  21. typedef unsigned int   uint32;
  22. */
  23.  
  24. extern "C" {
  25.   void link_power();
  26.   void link_reset();
  27.   unsigned link_run();
  28.   uint8_t link_read(unsigned addr);
  29.   void link_write(unsigned addr, uint8_t data);
  30. }
  31.  
  32. BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
  33. {
  34.     return TRUE;
  35. }
  36.  
  37. struct BSX {
  38.  
  39.   struct Regs {
  40.     uint8_t sat_test[1];
  41.     uint8_t dl_size;
  42.     uint8_t dl_main;
  43.     uint8_t dl_sec;
  44.     uint8_t dl_check;
  45.     //uint16 set_unknown;
  46.     bool dl_main_enable;
  47.     bool dl_sec_enable;
  48.  
  49.   } regs;
  50.  
  51.   unsigned run() {
  52.     return 20000u;
  53.   }
  54.  
  55.   uint8_t read(unsigned addr) {
  56.       printf("Read! %X\n", addr);
  57.       addr&=0xFFFF;
  58.       switch (addr) {
  59.         case 0x2188:
  60.             return regs.sat_test[0];
  61.             break;
  62.         case 0x2189:
  63.             return regs.sat_test[1];
  64.             break;
  65.         default:
  66.             return 0x00;
  67.             break;
  68.       }
  69.   }
  70.  
  71.   void write(unsigned addr, uint8_t data) {
  72.       printf("Write! %X\n", addr);
  73.       addr&=0xFFFF;
  74.       switch (addr) {
  75.         case 0x2188:
  76.             regs.sat_test[0]=data;
  77.             break;
  78.         case 0x2189:
  79.             regs.sat_test[1]=data;
  80.             break;
  81.       }
  82.  
  83.   }
  84.  
  85.   void power() {
  86.     printf("Initialized BS-X\n");
  87.  
  88.     reset();
  89.   }
  90.  
  91.   void reset() {
  92.     printf("(Re)set.\n");
  93.   }
  94. };
  95.  
  96. static BSX bsx;
  97. //Exported functions
  98. dllexport void link_power() {
  99.   bsx.power();
  100. }
  101.  
  102. dllexport void link_reset() {
  103.   bsx.reset();
  104. }
  105.  
  106. dllexport unsigned link_run() {
  107.   return bsx.run();
  108. }
  109.  
  110. dllexport uint8_t link_read(unsigned addr) {
  111.   return bsx.read(addr);
  112. }
  113.  
  114. dllexport void link_write(unsigned addr, uint8_t data) {
  115.   bsx.write(addr, data);
  116. }
Advertisement
Add Comment
Please, Sign In to add comment