-
Notifications
You must be signed in to change notification settings - Fork 6
/
CookieboyEmulator.h
72 lines (56 loc) · 1.2 KB
/
CookieboyEmulator.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef COOKIEBOYEMULATOR_H
#define COOKIEBOYEMULATOR_H
#include "CookieboyDefs.h"
#include "CookieboyGPU.h"
#include "CookieboyJoypad.h"
namespace Cookieboy
{
class CPU;
class SpeedSwitcher;
class Interrupts;
class Memory;
class DividerTimer;
class TIMATimer;
class Joypad;
class SerialIO;
class Sound;
struct ROMInfo;
class Emulator
{
public:
Emulator(GPU::DMGPalettes palette = GPU::RGBPALETTE_REAL, int soundSampleRate = 44100, int soundSampleBufferLength = 1024);
~Emulator();
const ROMInfo* LoadROM(const char *ROMPath);
void Step();
void UpdateJoypad(Joypad::ButtonsState &state);
void Reset();
void UseBIOS(bool BIOS);
const DWORD** GPUFramebuffer();
bool IsNewGPUFrameReady();
void WaitForNewGPUFrame();
const short* SoundFrameBuffer();
bool IsNewSoundFrameReady();
void WaitForNewSoundFrame();
void ToggleLCDBackground();
void ToggleLCDWindow();
void ToggleLCDSprites();
void ToggleSound1();
void ToggleSound2();
void ToggleSound3();
void ToggleSound4();
private:
bool CGB;
bool CGBDoubleSpeed;
CPU *Cpu;
SpeedSwitcher *CGBSpeedSwitcher;
GPU *Gpu;
Interrupts *INT;
Memory *MMU;
DividerTimer *DIV;
TIMATimer *TIMA;
Joypad *Input;
SerialIO *Serial;
Sound *SPU;
};
}
#endif