o add my bsnes branch
This commit is contained in:
13
tools/bsnes/smp/ssmp/timing/timing.cpp
Executable file
13
tools/bsnes/smp/ssmp/timing/timing.cpp
Executable file
@@ -0,0 +1,13 @@
|
||||
#ifdef SSMP_CPP
|
||||
|
||||
void sSMP::add_clocks(unsigned clocks) {
|
||||
scheduler.addclocks_smp(clocks);
|
||||
}
|
||||
|
||||
void sSMP::tick_timers() {
|
||||
t0.tick();
|
||||
t1.tick();
|
||||
t2.tick();
|
||||
}
|
||||
|
||||
#endif
|
||||
34
tools/bsnes/smp/ssmp/timing/timing.hpp
Executable file
34
tools/bsnes/smp/ssmp/timing/timing.hpp
Executable file
@@ -0,0 +1,34 @@
|
||||
template<uint8 cycle_frequency>
|
||||
class sSMPTimer {
|
||||
public:
|
||||
uint8 target;
|
||||
uint8 stage1_ticks, stage2_ticks, stage3_ticks;
|
||||
bool enabled;
|
||||
|
||||
void tick() {
|
||||
//stage 1 increment
|
||||
stage1_ticks++;
|
||||
if(stage1_ticks < cycle_frequency) return;
|
||||
|
||||
stage1_ticks -= cycle_frequency;
|
||||
if(enabled == false) return;
|
||||
|
||||
//stage 2 increment
|
||||
stage2_ticks++;
|
||||
|
||||
if(stage2_ticks != target) return;
|
||||
|
||||
//stage 3 increment
|
||||
stage2_ticks = 0;
|
||||
stage3_ticks++;
|
||||
stage3_ticks &= 15;
|
||||
}
|
||||
};
|
||||
|
||||
sSMPTimer<128> t0;
|
||||
sSMPTimer<128> t1;
|
||||
sSMPTimer< 16> t2;
|
||||
|
||||
alwaysinline void add_clocks(unsigned clocks);
|
||||
alwaysinline void tick_timers();
|
||||
uint32 clocks_executed();
|
||||
Reference in New Issue
Block a user