bsx.hpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. class BSXBase : public MMIO {
  2. public:
  3. void init();
  4. void enable();
  5. void power();
  6. void reset();
  7. uint8 mmio_read(unsigned addr);
  8. void mmio_write(unsigned addr, uint8 data);
  9. private:
  10. struct {
  11. uint8 r2188, r2189, r218a, r218b;
  12. uint8 r218c, r218d, r218e, r218f;
  13. uint8 r2190, r2191, r2192, r2193;
  14. uint8 r2194, r2195, r2196, r2197;
  15. uint8 r2198, r2199, r219a, r219b;
  16. uint8 r219c, r219d, r219e, r219f;
  17. uint8 r2192_counter;
  18. uint8 r2192_hour, r2192_minute, r2192_second;
  19. } regs;
  20. };
  21. class BSXCart : public MMIO {
  22. public:
  23. void init();
  24. void enable();
  25. void power();
  26. void reset();
  27. uint8 mmio_read(unsigned addr);
  28. void mmio_write(unsigned addr, uint8 data);
  29. MappedRAM sram;
  30. MappedRAM psram;
  31. BSXCart();
  32. ~BSXCart();
  33. private:
  34. uint8 *sram_data; //256kbit SRAM
  35. uint8 *psram_data; // 4mbit PSRAM
  36. struct {
  37. uint8 r[16];
  38. } regs;
  39. void update_memory_map();
  40. };
  41. class BSXFlash : public Memory {
  42. public:
  43. void init();
  44. void enable();
  45. void power();
  46. void reset();
  47. unsigned size() const;
  48. uint8 read(unsigned addr);
  49. void write(unsigned addr, uint8 data);
  50. private:
  51. struct {
  52. unsigned command;
  53. uint8 write_old;
  54. uint8 write_new;
  55. bool flash_enable;
  56. bool read_enable;
  57. bool write_enable;
  58. } regs;
  59. };
  60. extern BSXBase bsxbase;
  61. extern BSXCart bsxcart;
  62. extern BSXFlash bsxflash;