* FPS counter displays target framerate
* fix potential hang and out-of-bounds drawing when VCount is modified during drawing
This commit is contained in:
parent
cfb9e20fe1
commit
0df3a29374
|
@ -651,8 +651,11 @@ void StartHBlank(u32 line)
|
|||
{
|
||||
// draw
|
||||
// note: this should start 48 cycles after the scanline start
|
||||
if (line < 192)
|
||||
{
|
||||
GPU2D_A->DrawScanline(line);
|
||||
GPU2D_B->DrawScanline(line);
|
||||
}
|
||||
|
||||
NDS::CheckDMAs(0, 0x02);
|
||||
}
|
||||
|
|
|
@ -607,6 +607,10 @@ int ClipPolygon(Vertex* vertices, int nverts, int clipstart)
|
|||
|
||||
// TODO: check for 1-dot polygons
|
||||
// TODO: the hardware seems to use a different algorithm. it reacts differently to vertices with W=0
|
||||
// some vertices that should get Y=-0x1000 get Y=0x1000 for some reason on hardware. it doesn't make sense.
|
||||
// clipping seems to process the Y plane before the X plane.
|
||||
|
||||
// also, polygons with any negative W are completely rejected. (TODO)
|
||||
|
||||
// X clipping
|
||||
nverts = ClipAgainstPlane<0, attribs>(vertices, nverts, clipstart);
|
||||
|
|
|
@ -1522,8 +1522,7 @@ void ScanlineFinalPass(s32 y)
|
|||
if (RenderDispCnt & (1<<5))
|
||||
{
|
||||
// edge marking
|
||||
|
||||
// TODO: is it applied to bottom pixels?
|
||||
// only applied to topmost pixels
|
||||
|
||||
for (int x = 0; x < 256; x++)
|
||||
{
|
||||
|
@ -1842,8 +1841,11 @@ void RenderThreadFunc()
|
|||
void RequestLine(int line)
|
||||
{
|
||||
if (RenderThreadRunning)
|
||||
{
|
||||
if (line < 192)
|
||||
Platform::Semaphore_Wait(Sema_ScanlineCount);
|
||||
}
|
||||
}
|
||||
|
||||
u32* GetLine(int line)
|
||||
{
|
||||
|
|
|
@ -400,6 +400,7 @@ u32 RunFrame()
|
|||
s32 ndscyclestorun;
|
||||
s32 ndscycles = 0;
|
||||
|
||||
// TODO: give it some margin, so it can directly do 17 cycles instead of 16 then 1
|
||||
CalcIterationCycles();
|
||||
|
||||
if (CPUStop & 0xFFFF)
|
||||
|
|
|
@ -496,8 +496,12 @@ wxThread::ExitCode EmuThread::Entry()
|
|||
u32 fps = (nframes * 1000) / diff;
|
||||
nframes = 0;
|
||||
|
||||
float fpstarget;
|
||||
if (framerate < 1) fpstarget = 999;
|
||||
else fpstarget = 1000.0f/framerate;
|
||||
|
||||
char melontitle[100];
|
||||
sprintf(melontitle, "%d FPS - melonDS " MELONDS_VERSION, fps);
|
||||
sprintf(melontitle, "%d/%.0f FPS | melonDS " MELONDS_VERSION, fps, fpstarget);
|
||||
SDL_SetWindowTitle(sdlwin, melontitle);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue