I recently released another free upgrade patch for the original RISC
OS version of the game 'Star Fighter 3000', which can be downloaded
from the usual place:
http://starfighter.acornarcade.com/sfdownloads.htm
'Star Fighter 3000' is a futuristic combat-dedicated flight action
shooter rather than a realistic flight simulator, which places it in
broadly the same genre as games such as 'Apocalypse' and 'Terminal
Velocity'. It was first published in 1994.
This latest release is mainly to pander to RISC OS 6, although there
are miscellaneous other improvements. I baulked at circumventing the
game's reliance on OS_Byte 251 because support for that reason code
should never have been removed from the OS (in my opinion). The only
ill-effect is that error reports won't be visible in full-screen mode,
on RISC OS 6.
The changes since version 3.09 are as follows:
1) Various internal changes to use tables of data in preference to
in-line code in the desktop front-end.
2) Fixed a bug where the key transition buffer would be flushed
whenever a task started that had a name partially matching "ShellCLI"
from the start of both strings (e.g. "S", "Sh", "She", etc.) Instead,
this buffer is now flushed whenever a mode change message is received
(should catch termination of *GOS and single-tasking programs as well
as the Task Manager's CLI shell).
3) If the game has been configured to start up in full screen mode,
but that isn't possible for any reason (e.g. screen mode not
available) then the user is now offered the opportunity to continue
instead of quitting. This allows the game to be reconfigured to
prevent a recurrence.
4) Fixed an incompatibility with RISC OS 6 which caused "No writable
memory at this address" to be reported if the game started up in full
screen mode. The title screen was being decompressed directly into the
frame buffer but OS_ValidateAddress faults physically mapped dynamic
areas (such as that used by the VIDC hardware video driver).
5) Fixed a potential memory leak in the case where SWI
OS_ReadModeVariable returns an error (probably never happened in
practice).
6) SWI Wimp_SetMode is now used to restore the desktop screen mode and
palette upon return from full-screen mode, just like when a 'grubby'
task exits. Previously, the game used custom code which wasn't full
compatible with RISC OS 6 (window furniture was not always drawn).
7) The colour translation table required to redraw the contents of the
game window is now recalculated 'just in time' instead of whenever the
game is notified that the desktop screen mode or palette has changed.
This is more efficient because such notifications typically arrive in
tandem.
8) The palette for the game's native screen mode is no longer held
persistently in memory whilst in the desktop environment.
9) More robust in the case where SWI ColourTrans_ReadPalette tries to
output more data than the previously estimated buffer size.
10) If an error occurs during redraw of the game window (e.g. not
enough memory for colour translation table) then the rest of the
window will be filled with black and the game automatically suspended
in fairness to the player.
--
Chris Bazley
Star Fighter 3000: http://starfighter.acornarcade.com/