gameboy wormboy manboy gameworm gameman wormgame mangame manworm

Dependencies:   mbed SDFileSystem2

Committer:
dicarloj
Date:
Sun Jan 13 19:00:10 2019 +0000
Revision:
17:c9afe1a7b423
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dicarloj 17:c9afe1a7b423 1 #ifndef GBC_CPU_H
dicarloj 17:c9afe1a7b423 2 #define GBC_CPU_H
dicarloj 17:c9afe1a7b423 3
dicarloj 17:c9afe1a7b423 4 #include "types.h"
dicarloj 17:c9afe1a7b423 5
dicarloj 17:c9afe1a7b423 6 // 16 bit register
dicarloj 17:c9afe1a7b423 7 union reg {
dicarloj 17:c9afe1a7b423 8 u16 v;
dicarloj 17:c9afe1a7b423 9 struct {
dicarloj 17:c9afe1a7b423 10 u8 lo;
dicarloj 17:c9afe1a7b423 11 u8 hi;
dicarloj 17:c9afe1a7b423 12 };
dicarloj 17:c9afe1a7b423 13 };
dicarloj 17:c9afe1a7b423 14
dicarloj 17:c9afe1a7b423 15 struct CpuState {
dicarloj 17:c9afe1a7b423 16 // registers
dicarloj 17:c9afe1a7b423 17 reg bc, de, hl;
dicarloj 17:c9afe1a7b423 18 u8 f;
dicarloj 17:c9afe1a7b423 19 u8 a;
dicarloj 17:c9afe1a7b423 20 u16 sp, pc;
dicarloj 17:c9afe1a7b423 21
dicarloj 17:c9afe1a7b423 22 bool halt;
dicarloj 17:c9afe1a7b423 23 uint64_t cycleCount;
dicarloj 17:c9afe1a7b423 24 uint64_t divOffset;
dicarloj 17:c9afe1a7b423 25 u8 ime;
dicarloj 17:c9afe1a7b423 26 u32 timSubcount;
dicarloj 17:c9afe1a7b423 27 };
dicarloj 17:c9afe1a7b423 28
dicarloj 17:c9afe1a7b423 29 // external interface:
dicarloj 17:c9afe1a7b423 30 extern CpuState globalState;
dicarloj 17:c9afe1a7b423 31 void resetCpu(); // reinitialize the cpu
dicarloj 17:c9afe1a7b423 32 u32 cpuStep(); // step 1 instruction, returns number of clock cycles elapsed
dicarloj 17:c9afe1a7b423 33
dicarloj 17:c9afe1a7b423 34
dicarloj 17:c9afe1a7b423 35 bool getZeroFlag();
dicarloj 17:c9afe1a7b423 36 bool getSubtractFlag();
dicarloj 17:c9afe1a7b423 37 bool getHalfCarryFlag();
dicarloj 17:c9afe1a7b423 38 bool getCarryFlag();
dicarloj 17:c9afe1a7b423 39 void setZeroFlag();
dicarloj 17:c9afe1a7b423 40 void clearZeroFlag();
dicarloj 17:c9afe1a7b423 41 void setSubtractFlag();
dicarloj 17:c9afe1a7b423 42 void clearSubtractFlag();
dicarloj 17:c9afe1a7b423 43 void setHalfCarryFlag();
dicarloj 17:c9afe1a7b423 44 void clearHalfCarryFlag();
dicarloj 17:c9afe1a7b423 45 void setCarryFlag();
dicarloj 17:c9afe1a7b423 46 void clearCarryFlag();
dicarloj 17:c9afe1a7b423 47 void clearAllFlags();
dicarloj 17:c9afe1a7b423 48
dicarloj 17:c9afe1a7b423 49 #endif //GBC_CPU_H