Hi,
I really like the new planar emulation. However, currently it is of limited use as applications writing directly to the planes have issues. Or, more practically speaking, in the end I cannot run Nuclear War and Pirates!, which where the two sample games using system screens that I tried. Both have issues, but for different reasons. Below I will address them and suggest improvements that probably will help these games (and others alike) to run on emulated screens, which would be a great achievement - at least for people like me, who have a VGA monitor without 15KHz support connected and like to run at least some games from time to time using a RTG card (a GPBAII++ in my case).
So the suggested improvements are:
1.) Option to force automatic fullscreen updates
Symptom: In games like nuclear War. The screen (320x200x5) itself can be currently (3.3.3.) retargeted to a planar screen, but most updates are only visible when the mouse moves over the respective area.
Problem: The game writes directly to the bitplanes of an OS screen. Since in the emulation these are only a backbuffer for the real display, nothing causes the real display to be updated.
Idea: Provide an option (via setenv) to enable periodic updates of the actual dispay from the backbuffer. However, there are performance considerations, as complete full screens updates may have serious performance implications (depending on resolutioin, bus speed, etc.). However, for most cases this will IMHO be used to redirect lores screens from classic amiga applications, so the resulting bandwidth would be 320x200x60 (~3,7 MB/s) for a classic NTSC game, which is almost in reach for a Zorro II card. PAL numbers are similar. Still, this is a little too much already and higher resolutions make things worse. Thus, I would propose a simple implementation, that for most games (particularly of the likes of Nuclear War and Pirates, with limited on-screen changes) and probably also many applications like DPaint would help:
- Besides the bitplanes provided to the application, also keep a full copy of the last values written to the graphics adapter
- update graphics card periodically (ideally on every graphics card retrace) from the back buffer by only transferrung changed data
As the local RAM of accelerators is by an order of magnitude faster as the Zorro II bus, this largely elimnates unnecessary bus transfers with moderate overhead and should be easy to implement.
Still, it may be reasonable to restrict the effect of this option to certain resolutions or (even better) applications, but for me it would be still fine if it jast affects all (when enabled).
Another way of improving performance / reducing required bandwidth might be an additional option to skip every other frame, so updates happen typically at 25/30 fps. This however might create artefacts, e.g., under a moving mouse pointer in nuclear war.
2,) Support for Extra Halfbrite Screen
Symptom: Pirates can only be redirected (by NewMode) to EHB screens.
Problem: RTG screens currently do not offer EHB.
Idea: It might be possible to advertise planar P96 Screens as having EHB support. To get this to work, palette handling for a 6 plane EHB screen needs to be modified to reflect the additional 32 colors.
What do You think?
Regards,
Pain