The Unforgivable Innocent
(c) Garrafon Software, 2023-2024

============================

GAME INSTRUCTIONS

You must collect all Powers on each level avoiding the deathly Rays
before Time runs out to escape the depth of Underworld.

Karma decreases when you get touched by a deathly Ray. It's on you to
decide if it's worth to sacrifice some Karma to save Time. Additional
Time and maybe some Karma can be obtained by collecting Powers.

Controls:
- Q = Up, A = Down, O = Left, P = Right
- Sinclair joystick

Don't get still and move fast! Good luck!

============================

DEVELOPMENT COMMENTS (for the Sinclair BASIC version)

This game has been developed using Visual Studio Code (with NextBASIC plugin for syntax
highlighting), zmakebas, Fuse, a notebook, a pen and several packets of roasted salted
sunflower seeds.

To convert the BASIC source code into a tape file:
$ zmakebas -a 10 -n TUI -o TheUnforgivableInnocent.tap TheUnforgivableInnocent.bas
zmakebas can be downloaded from: https://github.com/z00m128/zmakebas

Some considerations and lessons learned:
- Manual line renumbering is a nuisance, even more when you have variable based jumps.
- The INT function returns the integer part of a float, but when the BASIC interpreter
  needs to convert a float to an integer value, it calculates INT(f+0.5) with 'f' being
  the float value. This behaviour can be tested with this program:
    10 LET a=RND:POKE 65e3,a:PRINT a;" - ";INT(a);" - ";PEEK 65e3:GO TO 10
- DRAW is not exact, as it seems not to plot the initial point.
- Completely miss ELSE availability for IF statements.
- The key principle "90% of the time is spent developing 10% of the program" is SO true.

============================

DEVELOPMENT COMMENTS (for the MCoder III compiled version)

This game has been compiled from the Sinclair BASIC version using MCoder III and FuseX emulator.

The only source code change made is adding a FOR delay in line 30:

30 FOR A=0 TO 1500:NEXT A:...

I did just to try if the MCoder III compilation worked... and it did! So impressive that a software
developed back in 1985 gave these results.

MCoder III was downloaded from: https://spectrumcomputing.co.uk/entry/8421/ZX-Spectrum/ZX_Spectrum_Compilateur

============================

DEVELOPMENT COMMENTS (for the Boriel BASIC version)

This game has been converted from the Sinclair BASIC version using Visual Studio Code,
Boriel BASIC compiler and zxsp emulator.

In the end lots of changes were done. Now seems more like a Sinclair BASIC program with functions and subroutines.
I had to "unoptimize" several Sinclair BASIC tricks as they were unneeded because of Boriel BASIC speed gains, some
delays had to be added in the game.

To convert the Boriel BASIC source code into a tape file:
$ zxbc.py --arch=zx48k --output-format=tap --explicit --strict --autorun --BASIC --optimize=3 --output=TheUnforgivableInnocent-BorielBasic.tap TheUnforgivableInnocent-BorielBasic.bas

Boriel BASIC compiler can be downloaded from: http://zxbasic.net

============================

THANKS

- EddieTheWild and LocoMJJ, for beta-testing and some playability advices.
- Radastan, for organizing the Bytemaniacos BASIC programming contest 2023 (and congratulations for its 20th anniversary!).
- Boriel, for developing Boriel BASIC compiler (http://zxbasic.net).
- Sir Clive Sinclair, for such a wonderful computer not conceived to play games.

============================

CONTACT

- Web: https://garrafonsoftware.com
- Twitter: @garrafonsoft
