mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
move emu loop to common; redo timing; add pollux timer
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@721 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
bbc8ceb9c0
commit
b24e0f6ce6
13 changed files with 385 additions and 319 deletions
|
@ -208,6 +208,31 @@ static int gp2x_read_battery_(void)
|
|||
}
|
||||
}
|
||||
|
||||
#define TIMER_BASE3 0x1980
|
||||
#define TIMER_REG(x) memregl[(TIMER_BASE3 + x) >> 2]
|
||||
|
||||
unsigned int gp2x_get_ticks_us_(void)
|
||||
{
|
||||
TIMER_REG(0x08) = 0x4b; /* run timer, latch value */
|
||||
return TIMER_REG(0);
|
||||
}
|
||||
|
||||
unsigned int gp2x_get_ticks_ms_(void)
|
||||
{
|
||||
unsigned long long v64;
|
||||
v64 = (unsigned long long)gp2x_get_ticks_us_() * 4195;
|
||||
return v64 >> 22;
|
||||
}
|
||||
|
||||
static void timer_cleanup(void)
|
||||
{
|
||||
TIMER_REG(0x40) = 0x0c; /* be sure clocks are on */
|
||||
TIMER_REG(0x08) = 0x23; /* stop the timer, clear irq in case it's pending */
|
||||
TIMER_REG(0x00) = 0; /* clear counter */
|
||||
TIMER_REG(0x40) = 0; /* clocks off */
|
||||
TIMER_REG(0x44) = 0; /* dividers back to default */
|
||||
}
|
||||
|
||||
void pollux_init(void)
|
||||
{
|
||||
struct fb_fix_screeninfo fbfix;
|
||||
|
@ -264,6 +289,14 @@ void pollux_init(void)
|
|||
if (battdev < 0)
|
||||
perror("Warning: could't open pollux_batt");
|
||||
|
||||
/* setup timer */
|
||||
if (TIMER_REG(0x08) & 8)
|
||||
timer_cleanup();
|
||||
|
||||
TIMER_REG(0x44) = 0x922; /* using PLL1, divider value 147 */
|
||||
TIMER_REG(0x40) = 0x0c; /* clocks on */
|
||||
TIMER_REG(0x08) = 0x6b; /* run timer, clear irq, latch value */
|
||||
|
||||
pllsetreg0 = memregl[0xf004>>2];
|
||||
memtimex_old[0] = memregs[0x14802>>1];
|
||||
memtimex_old[1] = memregs[0x14804>>1];
|
||||
|
@ -284,6 +317,9 @@ void pollux_init(void)
|
|||
set_ram_timings = set_ram_timings_;
|
||||
unset_ram_timings = unset_ram_timings_;
|
||||
gp2x_read_battery = gp2x_read_battery_;
|
||||
|
||||
gp2x_get_ticks_ms = gp2x_get_ticks_ms_;
|
||||
gp2x_get_ticks_us = gp2x_get_ticks_us_;
|
||||
}
|
||||
|
||||
void pollux_finish(void)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue