1
0
This commit is contained in:
otya128
2016-12-16 20:18:47 +09:00
parent 66dad65ab7
commit aedb1ffd4e
2 changed files with 17 additions and 4 deletions

View File

@@ -283,7 +283,7 @@ class BuiltinFunction
static void WAIT(PetitComputer p, DefaultValue!int time)
{
time.setDefaultValue(1);
p.vsync(cast(int)time);
p.wait(cast(int)time);
}
//TODO:プチコンのCLSには引数の個数制限がない
static void CLS(PetitComputer p/*vaarg*/)

View File

@@ -321,11 +321,21 @@ class PetitComputer
SDL_Renderer* renderer;
int vsyncFrame;
int vsyncCount;
bool isVSync;
bool waitFlag;
void vsync(int f)
{
waitFlag = true;
isVSync = true;
vsyncCount = 0;
vsyncFrame = f;
}
void wait(int f)
{
waitFlag = true;
isVSync = false;
vsyncFrame = f;
}
Graphic graphic;
Mutex keybuffermutex;
int keybufferpos;
@@ -1080,7 +1090,7 @@ class PetitComputer
{
try
{
for(int i = 0; !quit && maincntRender == oldmaincnt && !vsyncFrame && running; i++)
for(int i = 0; !quit && maincntRender == oldmaincnt && !waitFlag && running; i++)
{
//writefln("%04X:%s", vm.pc, vm.getCurrent);
running = vm.runStep();
@@ -1142,23 +1152,26 @@ class PetitComputer
{
maincnt++;
}
if(vsyncFrame)
if(waitFlag)
{
//FIXME:VSYNC IS NOT WAIT
//A=MAINCNT:WAIT 50:A=MAINCNT-A->A=50
//A=MAINCNT:VSYNC 50:A=MAINCNT-A->A=0~50
graphic.updateVM();
auto endmaincnt = maincnt + vsyncFrame;
oldmaincnt = maincntRender;
while (maincnt < endmaincnt && !quit)
{
oldmaincnt = maincntRender;
SDL_Delay(1);
if (maincntRender != oldmaincnt)
{
maincnt++;
oldmaincnt = maincntRender;
}
}
vsyncFrame = 0;
waitFlag = false;
isVSync = false;
}
//maincnt = cast(int)((SDL_GetTicks() - startcnt) / frame);
graphic.updateVM();