mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-29 09:15:33 +01:00
816d056657
Faster, of course, since we avoid the interpreter, but also means we can get more a more accurate timer in long blocks by adding the offset from the start of the block to the retrieved timer. I don't know if this will actually fix any issues, but it's more correct and a nearly-free improvement.
50 lines
1.1 KiB
C++
50 lines
1.1 KiB
C++
// Copyright 2014 Dolphin Emulator Project
|
|
// Licensed under GPLv2
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include "Common/CommonTypes.h"
|
|
|
|
namespace SystemTimers
|
|
{
|
|
|
|
/*
|
|
GameCube MHz
|
|
flipper <-> ARAM bus: 81 (DSP)
|
|
gekko <-> flipper bus: 162
|
|
flipper <-> 1T-SRAM bus: 324
|
|
gekko: 486
|
|
|
|
These contain some guesses:
|
|
Wii MHz
|
|
hollywood <-> GDDR3 RAM bus: ??? no idea really
|
|
broadway <-> hollywood bus: 243
|
|
hollywood <-> 1T-SRAM bus: 486
|
|
broadway: 729
|
|
*/
|
|
// Ratio of TB and Decrementer to clock cycles.
|
|
// TB clk is 1/4 of BUS clk. And it seems BUS clk is really 1/3 of CPU clk.
|
|
// So, ratio is 1 / (1/4 * 1/3 = 1/12) = 12.
|
|
// note: ZWW is ok and faster with TIMER_RATIO=8 though.
|
|
// !!! POSSIBLE STABLE PERF BOOST HACK THERE !!!
|
|
|
|
enum
|
|
{
|
|
TIMER_RATIO = 12
|
|
};
|
|
|
|
u32 GetTicksPerSecond();
|
|
void PreInit();
|
|
void Init();
|
|
void Shutdown();
|
|
|
|
// Notify timing system that somebody wrote to the decrementer
|
|
void DecrementerSet();
|
|
u32 GetFakeDecrementer();
|
|
|
|
void TimeBaseSet();
|
|
u64 GetFakeTimeBase();
|
|
|
|
}
|