otto_baynes

emu_chip.h

Jun 12th, 2012
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #ifndef CHIP_EMU_H
  2. #define CHIP_EMU_H
  3.  
  4. #include <string>
  5.  
  6. class ChipEmu
  7. {
  8. private:
  9.     unsigned short opcode;          // двухбайтовый опкод
  10.     unsigned char V[16];        // регистры общего назначения и флаг переноса VF  
  11.     unsigned short I;       // адрессный регистр
  12.     unsigned short PC;      // указатель кода
  13.     unsigned char SP;       // указаель стека
  14.    
  15.     unsigned short stack[16];       // массив хранящий в себе стек
  16.    
  17.     unsigned char memory[4096]; // память, в нее загружаем игру
  18.  
  19.     unsigned char delay_timer;      // таймеры задержки
  20.     unsigned char sound_timer;      // и звука
  21.  
  22.     // функция рисующая спрайт в массив screen
  23.     void drawSprite(unsigned char X, unsigned char Y, unsigned char N);
  24.  
  25.     unsigned char hp48_flags[8];    // флаги, необходимы для опкодов Fx75, Fx85
  26.  
  27. public:
  28.     int mode;                       // переменная определяющая текущий режим:
  29.                                     // 0 - CHIP-8
  30.                     // 1 - SCHIP
  31.  
  32.     unsigned char screen[128][64];  // массив представляющий экран
  33.  
  34.     unsigned char key[16];          // массив содержащий состояние клавиатуры:
  35.                                         // 0 - клавиша отпущена
  36.                     // 1 - клавиша нажата
  37.  
  38.     bool stop;          // переменная для опкода 00FD
  39.  
  40.     ChipEmu();
  41.  
  42.         // инициализация переменных, загрузка шрифтов
  43.     void init();
  44.  
  45.         // функция загрузки игры в память
  46.     bool loadGame(const char *filename);
  47.  
  48.         // функция выполняющая опкод
  49.     void executeNextOpcode();
  50.  
  51.         // функция уменьшающая значения таймеров
  52.     void decreaseTimers();
  53. };
  54. #endif
Advertisement
Add Comment
Please, Sign In to add comment