timer - Start implementing timer
This commit is contained in:
parent
6263386b11
commit
da91ec4d1b
3 changed files with 43 additions and 1 deletions
24
timer/timer.cpp
Normal file
24
timer/timer.cpp
Normal file
|
@ -0,0 +1,24 @@
|
|||
#include <timer/timer.h>
|
||||
|
||||
void TimerDiv::write8(u16 addr, u8 data)
|
||||
{
|
||||
switch(addr) {
|
||||
case 0x0000: // DIV
|
||||
divClock.restart();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
u8 TimerDiv::read8(u16 addr)
|
||||
{
|
||||
switch(addr) {
|
||||
case 0x0000: // DIV
|
||||
{
|
||||
sf::Time elapsed = divClock.getElapsedTime();
|
||||
sf::Int64 regval = elapsed.asMicroseconds();
|
||||
return (regval * 16384 / 1000000) & 0xFF;
|
||||
}
|
||||
default:
|
||||
return 0x00;
|
||||
}
|
||||
}
|
17
timer/timer.h
Normal file
17
timer/timer.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
#pragma once
|
||||
|
||||
#include <cpu/cpu.h>
|
||||
#include <misc/types.h>
|
||||
#include <memory/device.h>
|
||||
#include <SFML/System/Clock.hpp>
|
||||
|
||||
class TimerDiv : public Mem_device {
|
||||
private:
|
||||
sf::Clock divClock;
|
||||
|
||||
public:
|
||||
TimerDiv() = default;
|
||||
|
||||
virtual void write8(u16 addr, u8 data);
|
||||
virtual u8 read8(u16 addr);
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue