1
0
Fork 0
- Fix regression with Romantic Blue caused by the midnight overflow patch
- Preserve AH
- Derive conversion value from known constants instead of using a magic number
Thanks to ripsaw8080.

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3720
This commit is contained in:
Ralf Grillenberger 2011-06-12 16:58:14 +00:00
parent 73cc716621
commit 039e32658a

View file

@ -429,17 +429,19 @@ static Bitu DOS_21Handler(void) {
reg_ax=0; // get time
CALLBACK_RunRealInt(0x1a);
if(reg_al) DOS_AddDays(reg_al);
reg_ah=0x2c;
Bitu time=((Bitu)reg_cx<<16)|reg_dx;
Bitu ticks=(Bitu)(5.49254945 * (double)time);
Bitu ticks=((Bitu)reg_cx<<16)|reg_dx;
if(time_start<=ticks) ticks-=time_start;
Bitu time=(Bitu)((100.0/((double)PIT_TICK_RATE/65536.0)) * (double)ticks);
reg_dl=(Bit8u)((Bitu)ticks % 100); // 1/100 seconds
ticks/=100;
reg_dh=(Bit8u)((Bitu)ticks % 60); // seconds
ticks/=60;
reg_cl=(Bit8u)((Bitu)ticks % 60); // minutes
ticks/=60;
reg_ch=(Bit8u)((Bitu)ticks % 24); // hours
reg_dl=(Bit8u)((Bitu)time % 100); // 1/100 seconds
time/=100;
reg_dh=(Bit8u)((Bitu)time % 60); // seconds
time/=60;
reg_cl=(Bit8u)((Bitu)time % 60); // minutes
time/=60;
reg_ch=(Bit8u)((Bitu)time % 24); // hours
//Simulate DOS overhead for timing-sensitive games
//Robomaze 2