VOGONS


1000 Miglia

Topic actions

First post, by rcblanke

User metadata
Rank Oldbie
Rank
Oldbie

1000 Miglia (http://www.mobygames.com/game/dos/1000-miglia) seems to be broken in CVS (was working fine in 0.65). I can start the game, but not the actual racing (the screen remains blank).

Regards,
Ronald

Reply 1 of 10, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Seems to be hanging in a timer-loop.
out 43,e8
in al,42
and al,80
je loop

The out 43,e8 sets the counterstatus_set so they don't
receive the counter (which they seem to expect) but the
status reg. No idea how to fix it though.

Reply 2 of 10, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

They may as well be checking for the counter output bit.
loop: is before out 43?
What mode is Timer2 set to?

1+1=10

Reply 3 of 10, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

> They may as well be checking for the counter output bit

Actually they do that, right.

> loop: is before out 43?

Yes, just that tight loop.

The timer mode is zero, but maybe the p->new_mode
should be reset somewhere (game is on abandonia btw.)

Reply 4 of 10, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

This makes the game work but since undocmented behavior is "exploited" I'm not completely sure it is right. Maybe I'll check on real hardware.

Edit: removed bad patch.

Last edited by h-a-l-9000 on 2006-08-03, 11:03. Edited 1 time in total.

Reply 5 of 10, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Bochs has two different pit implementations, one of them has the
status-reading function (not documented too well) so maybe i can
check the behaviour against that implementation.

Reply 6 of 10, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The problem is not the status readback but the timer is set to mode 0 without the timer value being written. My patch simulates it to be set to 0xffff in that case but it probably keeps the old value (which is the same as about 0xffff for that game).

1+1=10

Reply 7 of 10, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Never mind, I found the actual bug.
new_mode was only reset for timer 0, not for timer 2. The game doesn't use anything undocumented.

Reply 8 of 10, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Somehow i knew the new_mode is to blame (not really).
Thanks, will add this.

Reply 9 of 10, by rcblanke

User metadata
Rank Oldbie
Rank
Oldbie

Thanks fellows, nice work!

Reply 10 of 10, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Somebody could test the rocket science games again 😀

Something interesting: Preferrably games that have ports for different platforms seem to make more use of timers. Could it be that those platforms are equipped with more timers and programmers desperately looked for a way to replace those on the IBM PC platform when porting?

1+1=10