st010.hpp 938 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. class ST010 : public Memory {
  2. public:
  3. void init();
  4. void enable();
  5. void power();
  6. void reset();
  7. uint8 read (unsigned addr);
  8. void write(unsigned addr, uint8 data);
  9. private:
  10. uint8 ram[0x1000];
  11. static const int16 sin_table[256];
  12. static const int16 mode7_scale[176];
  13. static const uint8 arctan[32][32];
  14. //interfaces to sin table
  15. int16 sin(int16 theta);
  16. int16 cos(int16 theta);
  17. //interfaces to ram buffer
  18. uint8 readb (uint16 addr);
  19. uint16 readw (uint16 addr);
  20. uint32 readd (uint16 addr);
  21. void writeb(uint16 addr, uint8 data);
  22. void writew(uint16 addr, uint16 data);
  23. void writed(uint16 addr, uint32 data);
  24. //opcodes
  25. void op_01();
  26. void op_02();
  27. void op_03();
  28. void op_04();
  29. void op_05();
  30. void op_06();
  31. void op_07();
  32. void op_08();
  33. void op_01(int16 x0, int16 y0, int16 &x1, int16 &y1, int16 &quadrant, int16 &theta);
  34. };
  35. extern ST010 st010;