The default mode is BaseMode. The other modes simply augment, or override, it. Many features of a mode can be set in the Mode Choices dialog box.
Other features have to be specified in the mode’s ModeFile and must be written in StrongED’s own command language. BaseMode’s ModeFile will be displayed if you click Ctrl-Adjust on StrongED’s iconbar icon.
It is a commonplace that programming languages can use variables to denote expressions. Thus
x = “this is some text”
is a piece of text in BBC BASIC. The variable x is defined in it to denote the literal text this is some text. The doublequote characters are used by BASIC to distinguish the literal text. Other languages may use other means to distinguish which parts of the program text refer to literal text; position, for example. Consider the command
echo hello there
in an Obeyfile. The word echo is a command, whereas hello there is literal text. If we put in doublequotes here we do not get the same result.
In BBC BASIC, as in other languages, we distinguish between a number 57 and a string “57”. Many languages, not BBC BASIC unfortunately, deal with patterns that can occur in text. It took time for people to realize the advantages of distinguishing separate types of value; that boolean values are distinct from number values, for example, – a distinction that BASIC fails to make but which was recognized fairly early in the history of programming. The distinction between patterns and strings took a little longer to sink in. Similarly, replacement strings (other languages talk of format strings) should really be distinguished from plain vanilla strings. Many languages, and among them StrongED’s command language, use strings to denote patterns, with certain characters, known as magic characters, playing a special role. This means that there has to be an escape character to indicate that the character following is to be taken in its literal and non-magical sense. In C, for example, the backslash (\) is used as an escape character.
These observations should be kept in mind if you look at StrongED’s help files, because the use of variables defining patterns is fundamental to StrongED’s command language. I do not intend to rehearse, or even summarize, these help files here. I mentioned in part 1 that I use a non-standard BaseMode Modefile. Instead, I will describe the steps I took to modify the standard one.
The first thing I wanted to do was get rid of the icons in the smartbar that I knew I was not going to use. Scroll down in the BaseMode Modefile until you reach
#— Toolbar and mode-menu functions
The lines starting —>Icon define the icons in the smartbar, from left to right. The lines that follow each of these commands specify how they behave. The first group I removed (or commented out by inserting # at the beginning of the line) was
This removed the ListOfWindows icon (I very rarely have more than a couple of windows open at the same time). As well as removing groups I also changed the order in which the groups appeared in the ModeFile. For some groups I provided my own icons, which must go in BaseMode.Sprites or BaseMode.Sprites22. For what happens when you click on,or drag to, an icon it is useful to consult Help->Reference section->List of Functions from StrongED’s iconbar menu. In this way it is not too difficult to create new facilities for your own modes, but remember that a mode’s own smartbar icons will appear to the right of those provided by the BaseMode. Similarly, the menu items that you provide in a mode’s Modefile will appear beneath those furnished by the BaseMode.
So, at least superficially, it is not too difficult to personalize StrongED. It goes without saying that you should always put your modified files only in StrED_cfg, leaving StrongED itself alone. That way, if you are over-ambitious or if your syntax is not correct, you can always restore StrongED to its proper state.
A little while ago Chris Gransden mentioned on the RISC OS Open forums that a test version of the DarkPlaces Quake engine for RISC OS on the Raspberry Pi was available for download.
The game uses the Khronos module to take advantage of DarkPlaces’ hardware acceleration, something I haven’t really seen in RISC OS before. So six months late to the party, I thought I’d take it for a whirl and see what it could do on my little Pi 3.
What is DarkPlaces Quake?
DarkPlaces is a Quake modification that uses its own custom OpenGL-only engine and features improved graphics and image quality when compared to the original Quake – which saw its engine released under the open-source GPL license a few years ago.
Taken from DarkPlaces’ website, developer LordHavoc says he wasn’t happy with the custom modifications and engines available after the Quake engine was initially open-sourced, and he decided to create his own project with a focus on improving the quality of effects and image quality.
“DarkPlaces engine was started because I was unsatisfied with the other engines available soon after the Quake source release (which did little more than add some flashy effects), and craved modding features for my DarkPlaces mod, and wanted some real enhancements to the online gaming experience as well.” Said Lord Havoc on the DarkPlaces website.
Some features specific to DarkPlaces Quake include:
- Fully integrated per pixel lighting and shadowing technology, lightmapping and deluxe mapping as well as a variety of material effects fully integrated into one shader system that deals with all situations
- Support for a variety of file formats (Quake1 and Quake3 file formats, skeletal models, various image formats, ogg vorbis etc.)
- Game logic scripting in QuakeC programming languageAdvanced networking support
- Realistic global fog feature with height limit for seamless blending with sky.
- ODE physics engine integration
- Per-polygon collision detection optimized for large static meshes, as well as Quake brush technology.
- Background music support with sequential and random playlists and playlist switching (
- CD audio support
Setting it up
DarkPlaces for RISC OS can be downloaded here. You’ll need to source your own PAK files, which contain the levels for the game. The freely available shareware file is available for download from here, if you have a full copy of Quake then you can extract the PAK files and use them with DarkPlaces.
Once you’ve extracted !DarkPlaces from the zip file and into a location on your hard drive, you’ll to need to create a ‘id1’ folder in the !DarkPlaces folder and drop a PAK file into it.
The game uses hardware accelerated graphics so you’ll need Khronos for it to run. Just merge the !Boot and !System folders with your current ones, it’ll then add the Khronos module and necessary shared libraries to your system.
DarkPlaces Quake is currently only compatible with the Raspberry Pi due to it using the GPU for hardware acceleration. It will however run on all versions of the Pi including the Pi 3 and Zero.
Gameplay and performance
Running on the Raspberry Pi 3, I found DarkPlaces to run reasonably smoothly using a 1920×1080 resolution. Occasionally there is some flickering on the screen, this is down to VSync not working but it doesn’t hinder gameplay for the most part. The game is test quality as it stands so encountering issues like this is to be expected.
The FPS rate when playing averaged about 50fps which if you look at the hardware its running on and the massive improvement in graphics and effects quality when compared to the original Quake, it’s pretty impressive.
Chris has also tested DarkPlaces on a Raspberry Pi Zero running RISC OS, the performance wasn’t quite up-to-par with the Pi 3 obviously, but it was running at 20fps at 1920×1080 which is not bad.
Another issue that can be annoying is if you press multiple keys together at the same time, the game will completely ignore the presses all together. Also, the Escape key will exit the game without warning – so be warned!
Overall, Chris’ port of DarkPlaces is a very impressive demonstration of the hardware accelerated graphics capabilities that the Khronos module can be provided on RISC OS. If you fancy having a play and don’t mind the little quirks that this test version of the game has, then go give it a shot – you can grab it from here.
The 2017 RISC OS South West Show takes place on Saturday, February 25th and it’s set to be another big show, with lots of exhibitors confirmed and hopefully a few interesting launches – developers tend to time new releases or major updates to coincide with the show so hopefully something juicy comes up.
The show will run from 10.30am to 5pm, with tickets being £5 at the door.
RISC OS Open will be showing off their recent developments at the show, including selling their usual range of goodies like media stick/cards with RISC OS on it as well as their RISC OS documentation range.
R-Comp will be in attendance with their usual range of computers and software. Andrew and Co. will undoubtedly be showing off their ARMX6 computers running on 4K displays as well as demonstrating their massive range of software and hardware.
CJE Micro’s will be flogging their usual wide range of wares – including their Raspberry Pi based laptop, the PiTop RO.