Two days to the race

A high (steam) pressure story

Introduction
The gameplay
If you think I should use Inform
If you finished the game
Some important notes
Conclusion
More of that, please!

Introduction

Two days to the race is an interactive fiction game developed by Davide Bucci in 2018-2019 with the Adventure Writing System. The gameplay takes place in a somewhat steampunk Turin at the beginning of the twentieth century.

The version for the C64 has been obtained with my aws2c converter and then compiled with Cc65. To run the game (distributed as a "PRG" file), you can use an emulator such as VICE x64, you have to click and drag the file on the emulator. With something like the iec2sd you can also test it on the real hardware, if you have it.

The version for MS-DOS machines has been compiled with Borland Turbo C++ 3.0 for MS-DOS and tested with DOSbox. There is almost no difference in the source code, apart the configuration code for colours etc. Gosh... I love the C language! I tried the game with an Olivetti M200 with MS-DOS 3.30 and it worked fine. If you don't see colors in the MS-DOS version and you see plenty of strange things, please read the important notes below. I even compiled a version for the venerable Olivetti M20 with the PCOS operating system.

Fig. 1: Two Days to the Race

PlatformFree download linkLanguageNotes
Commodore 64two-days-c64.d64English .d64 with loader
Commodore Plus/4two-days-plus4.prgEnglish .prg, intro and music by Luca/FIRE ("Come le rose", 1918)
Commodore VIC-20+24KTWO-DAYS-VIC-20.d64English D64 image containing the game split in 3 files. Normal VIC-20 screen
Commodore VIC-20+32KVIC20-40C-2-DAYS.d64English D64 image containing the game split in 3 files. 40 columns on screen.
Commodore 1282-DAYS-C128.d64English D64 image containing the game split in 3 files
MS-DOSTWOD.zipEnglish zipped .exe, requires ANSI.SYS
Olivetti M20two_days_Olivetti_M20.zipEnglish compressed archive containing the game split in three parts for the PCOS operating system
ZX Spectrum 48KZX_spectrum_filtered_en.zipEnglish compressed archive containing the game split in three parts as WAV and TAP files
Commodore 64due-g-c64.d64Italiano .d64 con caricatore
Commodore Plus/42-days-plus4-ita.prgItaliano .prg, introduzione e musica: Luca/FIRE ("Come le rose", 1918)
Commodore VIC-20+24KDUE-GIORNI-VIC-20.d64Italiano Immagine disco D64 contenente il gioco, diviso in tre parti
Commodore VIC-20+32KVIC20-40C-2-DAYS-IT.d64Italiano Immagine disco D64 contenente il gioco, diviso in tre parti. Schermo a 40 colonne.
Commodore 1282-GIORNI-C128.d64Italiano Immagine disco D64 contenente il gioco, diviso in tre parti
MS-DOSDUEG.zipItaliano .exe compresso, richiede ANSI.SYS
Olivetti M20two_days_Olivetti_M20_it.zipItaliano Archivio compresso contenente il gioco, diviso in tre parti per PCOS
ZX Spectrum 48KZX_spectrum_filtered.zipItaliano Archivio compresso contenente il gioco in 3 parti in formato WAV e TAP

Table 1: All versions of Two Days to the Race, that you can freely download and play as much as you want.


Video 1: Two Days to the Race loaded and played on a Commodore 128D in C64 mode

Fig. 2: Two Days to the Race running on a Commodore 64

Fig. 3: The venerable Borland Turbo C++ 3.0. It was a very good tool back in 1992.

The gameplay

Your name is Emilia Vittorini, You're the daughter of Augusto Vittorini, who founded the Industria Torinese Automobili (ITA) with his brother Tullio. Your father is abroad trying to raise funds, but something went wrong and you heard your uncle coming back slamming the door. Your mission is to find what happened and how you can help your family. I will be your ears and eyes. Good luck.


An interactive fiction game is based on commands typed in a relatively natural language. Here are some hints:

look: describe again the location where the player is present
examine object: describe the specified object
north or n or go to north: moves to the north, if possible. Other directions are s, e, w, up, down.
The command bye allows to exit from the game and restart well... it restarts it. You can take objects that you "notice" and you can have a list of carried objects with inventory.

The following abbreviations are available:


The game is divided in parts. When you complete one of them, you will get a code that allows to immediately jump to the beginning of the next part. Write down that to resume the game in the future.

It is not possible to save or load the game, so passwords are important. Let me know about typos, errors and bugs in the game!

I drawn some artwork for the game and I really enjoyed crafting the load screen for the C64 and for CGA MS-DOS. I learnt to appreciate the C64 colour palette, by the way. I've been puzzled by the absence of saturated colours such as a bright red, but I understood that it allows to blend beautifully colours together and it's really useful (figure 7 or video 1). I have also been pleased of the results I got with CGA graphics (figure 8) and with the classic "cold" palette i.e. black, cyan, magenta and white. It has been really fun to draw with those constraints!

By the way, the C64 loader recognizes automatically from which device it has been loaded and continues loading from it. I have a C128D with an internal floppy that is device 8 and a SD2IEC that is device 9. It is frustrating to see how many loaders (even for games developed recently) only load from device 8. They give me an error if I try to use them with my SD2IEC!

Fig. 4: The game running on a DOS machine, emulated by DOSbox

Fig. 5: The game running on an Olivetti M200 computer, with MS-DOS 3.30

Fig. 6: The game running on an emulated Plus 4


If you think I should use Inform

Inform is a great program, used by many interactive fiction enthusiasts to write their games, setting the golden standard for interactive fiction in 2019. If you know it, you may reasonably be wondering why I decided not to use this tool.

What I wanted to do was to write a game for severely constrained machines such as the Commodore 64. It is true that I could have devoted myself fully to the story and the gameplay using a more advanced tool instead of starting almost from scratch. However, as I enjoy coding, putting together the tools was an integral part of the pleasure I enjoyed crafting the game. I would probably never have written anything, if I could only use Inform.

If you played the game and you are still dubious, I will not be offended by your criticism, I am sure that things can always be done in a better way. Just please keep in mind the goal that was to write a game that could be fully loaded and played by a standard C64.

Fig. 7: The graphic loader on a Commodore 64

If you finished the game

If you have played at least version 1.4 of the game and you have finished it, send me (privately) the final code word and I will put your name in the following list. To contact me, feel free to use PM and Twitter (@davbucci), or drop me an email at davbucci at tiscali dot it.

You may also be interested to read a post I wrote about the background of the game.

Fig. 8: Working on the splash screen MS-DOS in all the glittering glory of the CGA's four colour palette.

Fig. 9: Maybe a day I may consider a physical release if there is enough request :-)

Fig. 10: The game running on a ZX Spectrum 48K.

Some important notes

Fig. 11: If the game appears this way, your terminal does not interpret ANSI control codes. You can use DOSbox that understands them natively.

If you are using the MS-DOS version and the game does not show colours and there are strange characters appearing, be sure that you have something like DEVICE=ANSI.SYS or DEVICE=DOS\ANSI.SYS in your CONFIG.SYS file, so that the console can correctly interpret ANSI commands for colours. Microsoft supported ANSI.SYS since MS-DOS 2.0 but for some reasons did not include ANSI support in the Windows console until 2016. If you use Windows console and the game appears as in figure 11, use DOSbox instead!

The versions for the C64, Plus/4 and MS-DOS contain everything in one file, plus in some cases a graphical loader. Versions for ZX Spectrum and VIC-20+24KB split the game in three files. A special version for the VIC-20+32KB contains a 40-column driver that allows to play the game much more comfortably. You can load the appropriate part if you want to jump straight to this part of the game, but you will be asked the corresponding password in order to play it. I included in the compressed archive both TAP versions as well as WAV files. If you use DivMMC Future, there is a minor incompatibility that makes sort that scrambled characters may be shown in the user input (see figure 12). With my DivMMC Future, if I see this I can reset the machine (with the appropriate button on the interface) and type LOAD "". The game will be loaded again and will be working fine. If you load the game using the audio files, you will have to wait a few minutes, but at least you can enjoy the screen of figure 13.

Fig. 12: Input can be scrambled (and the game unplayable) when the game is loaded with DivMMC Future from a SD card. There are solutions. Read text.

Fig. 13: Loading the game on a ZX Spectrum 48K. I used the audio cable I described in this page.

Fig. 14: The game running on an emulated VIC-20, with a 24 KB RAM expansion.

Fig. 15: The game running on an emulated VIC-20, with a 32 KB RAM expansion. It shows 40 columns of text!

Fig. 16: The game running on an Olivetti M20

Conclusion

This game is the first interactive fiction game that I write from scratch. The AWS system works well and it is effective: the source is about 78 KB and the result still fits in the 49 KB available for a C executable on the C64.

I also like the main character of the game, Emilia is determined and brave and solves the situation by herself. It has been interesting to create a character like her (I discussed a lot with my partner) and after a while she seemed alive while I was writing. I also really like to use again the Borland Turbo C++ environment, as it was the first serious compiler I used, on which I learnt C and C++ many years ago.

I had some great fun working on the game and I hope you will enjoy it!

More of that, please!

If you liked this program, have a look at the other things I wrote for old computers.


La piramide di Innuh The Innuh pyramid (En/It, 2011-2018) for C64, C128, VIC-20, Plus4, ZX Spectrum
Alien Invasion Alien Invasion: a VIC20 game written in 2018 for the VIC-20
Cavern Explorer Cavern Explorer, another modern VIC-20 game (2018)
3D maze for the Commodore 64 3D maze for the Commodore 64 (2017)

Log

March 14, 2019: Added the 40 column VIC-20+32KB version (game in italian).

March 12, 2019: Updated english game to version 1.7 final with many improvements about the English language.

March 9, 2019: Added the 40 column VIC-20+32KB version (game in english).

February 23, 2019: Added the Olivetti M20 and Commodore 128 versions.

February 18, 2019: Corrected VIC-20+32KB into VIC-20+24KB.

February 17, 2019: Stable version of the game in Italian (ZX Spectrum), English version for VIC-20+24KB

February 16, 2019: Stable version of the game in Italian (C64, Plus4, MS-DOS)

February 14, 2019: Stable version of the game in English (C64, Plus4, ZX Spectrum, MS-DOS)

February 3, 2019: It and En version of the game for the Sinclair ZX Spectrum.

February 1, 2019: Bug correction in the game.

January 22, 2019: Italian version of the game available for the C64. Added a paragraph about artwork.

January 19, 2019: Added the Italian version of the game for MS-DOS to download.

January 2, 2019: Italian translation of the page.

December 28 2018: Many improvements, added the PLUS4 version.

December 22 2018: Add new version of the game, with a password system.

December 17, 2018: Added MS-DOS version and some screenshot.

December 16, 2018: Page for beta testers with the C64 version.

--------   
Copyright (C) 2018-2019  Davide Bucci davbucci at tiscali dot it
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.