Steven Seagal's Atari ST Web Site
"A Dangerous Emulator"
| Development screen of Steem SSE 3.8.1.
We pursue refactoring in this version.
Large display size
In Steem SSE there's an option on the Display page where you can choose
the size of borders.
There were some problems with palette change timing with larger display modes.
Some were fixed in v3.8.0 but all the little hacks that corrected the display with the bigger borders eventually backlashed.
Those hacks implemented the feature "no 4 pixel shift when the left border is removed".
So in v3.8.1, a new method was developed. New set of hacks? Maybe, but they should be more robust. At least, some trouble cases - like the one pictured - display fine now. It is exactly like on my STE with a CRT monitor.
By the way, another fine screen by TEX, didn't know this one until it was reported.
Video counter reckoning
In Steem, a single variable, shifter_draw_pointer, was used for both rendering the scanline
at each video "event", and for holding the value of the video counter
(addresses $FF8205, $FF8207 and $FF8209). Because of that, rendering could interfere with
video counter reckoning. It was complicated in part because the ST needs
some cycles to render what's inside the video RAM.
So, this was refactored too. Now Steem SSE uses a second variable, MMU.VideoCounter and many funny hacks could be eliminated.
Also, a simple test program allowed us to demystify writes to the video counter.
It is actually straightforward, here's the rule:
The byte in the MMU register is replaced with the byte on the bus, that's it, even if the counter is running at the time (Display Enable), and whatever words are in the Shifter.
It's logical after all. The video counter resides in the MMU and the Shifter never sees it.
At the same time, all those GLU/Shifter tricks that affect the video counter ("line +26" etc.) will also cease to interfere with rendering, again allowing us to remove confusing hacks (with differences according to border size). Now the video counter is recomputed at each scanline and the source has gained much clarity (that is, if you abstract all those #if defined...)
Games (1) (2)
Demos (1) (2) (3) (4)