怎样使系统时钟变快?(100分)

  • 主题发起人 主题发起人 CaoAizu
  • 开始时间 开始时间
到bj.163.com进入mud论坛用“变速齿轮”查一下
 
不是啦!某些时候写仿真软件的时候也会用到这个技术——比如,一个化工的反应要好几天
不可能傻不拉叽等几天吧,这就会用到这种技术,通过改写中断使时钟加快。
/*0x1c时钟中断保存*/
void interrupt(*oldint1ch)();
void changetime(unsigned int count)
{shudu=count;count=1192737/count;
outp(0x43,0x3c);outp(0x40,(count&0xff));
outp(0x40,(count>>8)&0xff);
}
/*获复时钟*/
void restoretime()
{outp(0x43,0x3c);outp(0x40,0xff);
outp(0x40,0xff);
}
/*新的多任务时钟中断0x1ch函数*/
void interrupt newint1ch()
{
int n,i;
(*oldint1ch)();/*执行旧的时钟软中断*/
if(busy){enable();return;}/*系统太忙返回*/
if(foodflag==1)foodcontrol();/*调用食物控制*/
outtime(0); /*显示当前时间*/
if(lifebusy){enable();return;}/*lifebusy是球是否的状态标志*/
if(int1chflag){enable();return;}
if(soundflag==1)/*背景音乐处理*/
{ if(soundn>7){soundflag=0;nosound();}
else if(sound1n<soundword[soundn][1]){gamesound(soundword[soundn][0]);sound1n++;}
else{soundn++;sound1n=0;}
}ballcontrol();/*调用弹子球控制*/
}
/*恢复时钏中断*/
int close1ch(int fg)
{if(fg==1){int1chflag=0;return;}
else if(fg==0)setvect(0x1c,oldint1ch);
}
/*设置时钟中断0x1ch*/
int init1ch(int fg)
{if(fg==1)int1chflag=1;
else
{ oldint1ch=getvect(0x1c);
changetime(shudu);
setvect(0x1c,newint1ch);
}
}
原理是这样的,不过在window下怎么实现我就不是很清楚了。
 
to Chenlili:
0x1ch中断是每秒18.2次,要精确计时的话,底层恐怕不是这样实现的,
MM的Timer函数精确度就比这个高,好像可以精确到1ms——反正可以肯
定光改这个恐怕不行的说
 
可以的
没有听过现在有个软件叫兄弟加速器吗?
可以通过设置系统时钟发生器来使系统变快
源码公开
http://my.6to23.com/vrbrothers/
 
最上面所说的那个软件 叫 游戏齿轮..... 下载地址:http://pge.yeah.net/
 
“XXXX工作室”是合法的。
现在中国人的品牌意思真是大有提高了,连D版都
有“大草原”、“藏经阁”之类叫得响的牌子了。
 
多人接受答案了。
 
后退
顶部