sdd1.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "sdd1emu.hpp"
  2. class SDD1 : public MMIO, public Memory {
  3. public:
  4. void init();
  5. void enable();
  6. void power();
  7. void reset();
  8. uint8 mmio_read(unsigned addr);
  9. void mmio_write(unsigned addr, uint8 data);
  10. uint8 read(unsigned addr);
  11. void write(unsigned addr, uint8 data);
  12. SDD1();
  13. ~SDD1();
  14. private:
  15. MMIO *cpu_mmio[0x80]; //bus spying hooks to glean information for struct dma[]
  16. uint8 sdd1_enable; //channel bit-mask
  17. uint8 xfer_enable; //channel bit-mask
  18. unsigned mmc[4]; //memory map controller ROM indices
  19. struct {
  20. unsigned addr; //$43x2-$43x4 -- DMA transfer address
  21. uint16 size; //$43x5-$43x6 -- DMA transfer size
  22. } dma[8];
  23. SDD1emu sdd1emu;
  24. struct {
  25. uint8 *data; //pointer to decompressed S-DD1 data (65536 bytes)
  26. uint16 offset; //read index into S-DD1 decompression buffer
  27. unsigned size; //length of data buffer; reads decrement counter, set ready to false at 0
  28. bool ready; //true when data[] is valid; false to invoke sdd1emu.decompress()
  29. } buffer;
  30. };
  31. extern SDD1 sdd1;