I did it again...
Running checks I realised a hack for Audio Artistic Demo (music speed) breaks ST Magazine STE Demo (Stax 65).
So I finally copied the "patch Timer D" of Hatari.

This part in mfp.c
Code: Select all
if (ConfigureParams.System.bPatchTimerD && !bAppliedTimerDPatch
&& pc >= TosAddress && pc <= TosAddress + TosSize)
{
/* Slow down Timer-D if set from TOS for the first time to gain
* more desktop performance.
* Obviously, we need to emulate all timers correctly but TOS sets
* up Timer-D at a very high rate (every couple of instructions).
* The interrupt isn't enabled but the emulator still needs to
* process the interrupt table and this HALVES our frame rate!!!
* Some games actually reference this timer but don't set it up
* (eg Paradroid, Speedball I) so we simply intercept the Timer-D
* setup code in TOS and fix the numbers with more 'laid-back'
* values. This still keeps 100% compatibility */
if ( new_tcdcr & 0x07 ) /* apply patch only if timer D is being started */
{
new_tcdcr = IoMem[0xfffa1d] = (IoMem[0xfffa1d] & 0xf0) | 7;
bAppliedTimerDPatch = true;
}
}
Notes:
- in next version of Steem this works in STF mode for Audio Artistic Demo, not STE, oddly.
Edit: it's in fact the memory, 1MB fine, 2MB doesn't work... funny
- in Hatari 1.7.0 ST Magazine STE Demo doesn't seem to load ? (I wanted to compare because "patch timer D" isn't a real fix and in Hatari Audio Artistic Demo also works without the patch).
Edit: OT, I noticed strange additions of the clipboard at the end of the post in this forum, quite often I need to edit to remove it, this time we had the copy/pasted hatari code coming right after "patch)."
This seems to happen when you use preview?