On Sun, Nov 05, 2000 at 11:51:19PM +0100, Omar Cornut wrote:
> Beware! None of the emulators is accurate in term of speed.
Softvms is much more accurate with this patch:
--- cpu.c.orig Fri Oct 20 17:02:37 2000
+++ cpu.c Fri Oct 20 16:55:18 2000
@@ -68,7 +68,7 @@
int pc;
int lcd_updated, lcdon, imask, intreq, hasbios=0;
-int spd;
+int spd = 328, oldspd = 328, mcy;
int t0h, t0l, t0base, t0scale;
int t1h, t1l;
int gamesize;
@@ -356,12 +356,14 @@
}
break;
case 0x10e:
+ oldspd = spd;
switch(value&0xa0) {
- case 0x00: spd = 3000; break;
- case 0x20: spd = 164; break;
- case 0x80: spd = 6000; break;
- case 0xa0: spd = 328; break;
+ case 0x00: spd = 3000/6; break;
+ case 0x20: spd = 164/6; break;
+ case 0x80: spd = 6000/6; break;
+ case 0xa0: spd = 328/6; break;
}
+ mcy = mcy * spd / oldspd;
break;
case 0x110:
if(!(value&0x40))
@@ -633,8 +635,9 @@
void run_cpu()
{
struct timeval epoch;
- int mcy = 0, tick = 0;
+ int tick = 0;
+ mcy = 0;
GETTIMEOFDAY(&epoch);
for(;;) {
int r, s, c, cy = 1, i = rom[pc];