=== S k y R o a d s ===

=== Game Description ===


1. A few words
  1.1. Legal Stuff & Contacting the Programmer
  1.2. About & Technical details

2. The Package & Installation
  2.1. What the package contains
  2.2. Installation

3. Game Playing
  3.1. Start up
  3.2. The Main Menu
  3.3. Game Settings
  3.4. The Level & Highscore List
  3.5. The Game / Functional keys
  3.6. Built - In Tool for Framerate Measurement
  3.7. To interrupt and continue a SkyRoads session

4. Creating your own level packs
  4.1. The SkyRoads Leveleditor V 1.0
    4.1.1. Editing Levels / Functional keys
    4.1.2. Level Properties
    4.1.3. Level Test Mode
    4.1.4. Level Sets - Basic files
    4.1.5. Level Sets - Properties, Saving/Opening/Deleting/Swapping levels
    4.1.6. Exporting Level Sets - I
  4.2. The SkyRoads LevelXtractor V 1.0
    4.2.1. Exporting Level Sets - II
    4.2.2. Importing Level Sets

5. Acknowledgments
  5.1. Credits
  5.2. Tools used
  5.3. Special Thanks

1. A Few Words

1.1. Legal Stuff & Contacting the Programmer

This game is freeware. That means, you may copy and distribute it like you want, but you may not modify any part of it (parts are all the files contained in the game package including this file). If you choose to copy or distribute it, you have to do this with the overall package, not with single components only (cause I would feel like you modified my package then).

Freeware means furthermore, that the package comes without any warranty. Although there are no known problems at the moment, I can guarantee for nothing. If the package or any of it's components causes damages to either your calculator, your PC or your data, I'm not liable for this.

If you encounter any bugs or problems, it would be very kind if you could mail me a report of this in spite of. Also any suggestions are welcome every time. My Email address(es) is(are) *:

The game's website is:

* In order to prevent spamming I chose this address form. When mailing me, you have to replace "at" by @ however, and if you'd create a nice level set, would be nice if you could send it me, too :-)

1.2. About & Technical details

Maybe you heard sth. about "SkyRoads" alredy. That's a quite cool, addictive old PC/DOS game created by Bluemoon Software in 1992 (and I have to admit that it STILL belongs to may favourite games :-D).

My SkyRoads version (that's the game this document is about) is a clone of this awesome PC/DOS game for Casio Graph100/AFX calculator series, and I tried to keep it as original as possible (as I think, that quite succeeded). Maybe you know this 3D game's principle already (accomplishing roads in the sky) or also not, but you should read this document at any rate.

Btw., this game is sth. special for me, because it's my first game for this calculator at all (it's my debut for AFX series).

Here are some technical details about SkyRoads:


M A Y   Y O U   H A V E   F U N

W I T H   S K Y R O A D S   : - D

2. The Package & Installation

2.1. What the package contains

 +- LevXtract.exe
 +- ROMDisks
 |   +- Disk1.cfx
 |   +- Disk2.cfx
 |   +- Disk1
 |   |   +- sklvstd.000
 |   |   +- sky.exe
 |   |   +- sky_ico.bmp
 |   +- Disk2
 |       +- help.dat
 |       +- skyedit.exe
 |       +- skyedit_ico.bmp
 +- ScrShots
     +- scrshot00.bmp
     +- ...
     +- scrshot22.bmp
 +- SkyRoads.htm
 +- SKYSCORE.cat

2.2. Installation

Installing SkyRoads to your calculator is quite easy.

There are TWO ROM disks in the package, where the first (it contains the SkyRoads game + the default level set called "Default Roads") is always required, and the second (that contains the SkyRoads Level Editor + the editor's help file) is optional and required only if you want to design your own levels.

Each ROM disk is provided in two versions: once as .CFX file and once as unpacked folder.

The .CFX file is a packed ROM disk already that you can transmit to your calculator directly using the "Casio Add-In Installer" Software. As this is not the most favourite of all, you also may pack the uncompressed disk folders (DISK1\*.*; DISK2\*.*) into other formats you like.

Done this, the first step of SkyRoads installation is complete and you can play the game right now. If you want to save highscores however, you have to install an additional basic file that can pick up the game's highscore data later (that's necessary because the game is unable to create it by itself). This is just any file named "SKYSCORES" with any content (SkyRoads will auto format it), but exactly 1580 bytes or more in length. You can create it by yourself, or if you want, install SKYSCORE.cat (with Communication Software handling the User data area like "Casio FA-123") delivered with the game package instead of.

Now you're ready!

Note: if you want to edit levels, you have to install other additional basic files too. See chapter "4.1.4. Level Sets - Basic files" for details.

3. Game Playing

3.1. Start up

You may install further SkyRoads levelsets than the default one on additional ROM disks or even the game's own. That's why on start up SkyRoads scans for levelsets available anywhere in the flash.

If it found additional sets, you can select the level set you want to play (use [Up], [Down] and [EXE] keys to navigate through the list), if not, the default set will be loaded.

Done this, the game scans for a basic file named "SKYSCORE" with >= 1580 Bytes, where it can store high scores (see chapter "2.2. Installation" for details).

3.2. The Main Menu

After playing the intro (you may skip it by [EXE] however) you are in the game's main menu, use [Up], [Down], [EXE], [Esc] here. Your options are either to play the game ("Start!"), call the Game Settings panel ("Controls"), show the help screen ("Help") or to leave the game ([Esc]).

Special Highlight: SkyRoads has also a demo player integrated. When you either (wait about 30 seconds without pressing a key) or (press [D] key), the demo player is called and plays a random selected level until you press any key or the level is finished.

3.3. The Game Settings panel

Here you can configure Skyroads. Things that are selectable are the 3D Graphics Detail Level and the display's contrast.

Lower 3D Detail Levels will increase the framerate in the game but make graphics more ugly, increasing the detail level however will cause nice graphics but lower the framerate. Although the pre selected value is probably the best for the most levels, you may play a bit with this option. Lower the detail level when you notice stuttering movements in very complex levels for example.

3.4. Level List & Highscore Table

When selecting "Start!" in the game's main menu, game starts not immediately, but you get into the level selection list.

Here, all levels (Roads) are listed that are available (in the currently selected level set), and you can choose any one you want for playing (use [Up], [Down], [F5], [F6], [EXE] and [Esc] keys).

Further, the list is combined with the highscore table directly: After each level number it's shown how often this Road was completed yet ("*"), what time the best player needed to complete it ("Best") and who the best player was ("Name").

Note, that if the SKYSCORE basic file isn't available, this list will be cleared every time you leave the game. You also should know, that there's one highscore file for all levels only, and thus if you want to record high scores for every level set separated, you have to rename your original SKYSCORE and use another file as SKYSCORE for each set.

3.5. The Game / Functional keys

Your goal is to complete a road in the sky with your ship, whereby you have to avoid obstacles: blocks on the road that you mustn't collide with and gaps in the road that you mustn't fall through (note that you may touch block's sides however, that's not the same as colliding with their fronts). If you either collide or fall off, you failed the level and have to try it again from the beginning, but the count of tries you have is unlimited (there's no "Game Over").

You can accelerate and decelerate your ship, move it left and right, and jump, so you have the option to jump over gaps and onto blocks surfaces or move around obstacles. The faster you travel, the faster you also can move left or right and the wider you can jump.

During game playing, you have to take care of the following things:

a) There are 4 different types of blocks:
b) There are different gravity forces
So far for this. Functional keys available during game playing are the following:

3.6. Built - In Tool for Framerate Measurement

When you are in the game, you can view the framerate the engine is currently running on. Simply press [EXE] for this purpose to set the game pause state. On the screen showed then you have two running texts, one at the top and at the bottom the other. The text at the bottom is that one showing you the current framerate.

Additional info - how the tool measures:

Following conditions have to be met: first, the value shown has to be "stable". That doesn't mean that it has to be constant all the time, but that the measurement period should be about more than one or two pictures only, because else the value the tool gets will not be very exact. The other condition is, that the rate being shown should not be the average rate through the complete level, but always the current rate at a certain point. Thus, the measurement period has to be as short as possible.

So we have two contracting conditions: keep the measurement as short as possible to get it at a certain point, but make it as long as possible to get it stable and exact. I did a compromise that's why: the tools measures during 32 frames in a ringbuffer. The rate shown is "stable" and exact enough this way, and it's always the average rate of the last 3 to 4 seconds (so nearly the rate at a certain point). The result achieved by that is quite reasonable.

3.7. To interrupt and continue a SkyRoads session

You also may interrupt a SkyRoads session and continue it later. For this purpose, you simply have to switch off your calculator. When switching it on later again, the game will be at exactly the same state you left it, so you can continue playing now.

Note, that you may switch off the calculator in game pause state or in the Level List / Highscore Table only, because when booting up the calc, the BIOS restores the last running program's environment (in fact, except the CPU registers values this environment was never destroyed) but switches the display to BW mode and the game has no possibility to notice that. Thus, you should turn off power just when the game is in BW mode, and that's the case in the game pause state and the level list, only.

4. Creating your own level packs

The game package contains also tools that you can use to create your own level packs:

4.1. The SkyRoads Leveleditor

The SkyRoads Leveleditor is for use on the Casio AFX, only (you might use it with an Casio AFX emulator, however, to create levels on your PC).

See chapter
"2. Installation" for information how to get it onto your AFX.

When starting the editor, you are asked for a storage area. Read chapter "4.1.4. Level sets - Basic files" for detailed information. Then you come into the editor's main menu, where you may choose to create, load or delete a level.

Note: An online help file is also available in the editor.

4.1.1. Editing Levels / Functional keys

Either created or loaded a level, you are in the edit mode where you can modify it. You have the following functional keys available:
For further details see chapter
"4.1.2. Level Properties".

During level test mode, you have other functional keys available. This are described in chapter "4.1.3. Test Mode".

4.1.2. Level Properties

A SkyRoads level is called a "SkyRoad". A Skyroad is an array with 6 columns (X) and up to 654 rows (Z). Each array field represents a block (thus, a Skyroad may consist of up to 6x654 blocks), where a block's properties are
There are 4 types of blocks available:
Note, that tricky blocks are drawn as dark grey fence in edit mode, so you can see them easily and it's simplified to edit level using this special blocks thus. In test mode as well as in the real game, they'll vanish however.

Further level properties are it's gravity and the ship's start position. For more details about this both properties, see chapter
"4.1.1. Editing Levels"

4.1.3. Level Test Mode

Note, that you should never publish or distribute levels that you have not tested and solved by yourself. To prevent levels without a solution getting published, the level editor has a level test mode integrated. You reach it simply by pressing EXE in edit mode.

Keys available here are the following:

4.1.4. Level Sets - Basic files

The way how to store and export level sets is a bit lame, as moduls providing better ways aren't ready yet. Maybe a second version of the level editor will come thus. The editor can store it's level sets in Basic files only, but is unable to create them. So you have to create a basicfile where the level set can be stored to by yourself.

Note, that they should be large enough: a levelset takes 128x6 Bytes for its header, and 6*columns+2 Bytes for each level (where columns may vary for each level). If you'd like to create a set with 20 levels a 200 columns for example, you had to allocate 24808 Bytes thus. The size doesn't need to match exact, but the file needs to be big enough to contain all data, else you will not be able to store your levels.

You also can extend a level set peu a peu in more than one sessions and you may manage more than one levelset basic files at the same time, too, because when starting the editor, it asks you for the levelset's basicfile name.

4.1.5. Level Sets - Properties, Saving/Opening/Deleting/Swapping levels

Level sets are limited to 128 levels per set (you may use less than, of course). The levels are completely nondependent from each other, means, each level may have an individual size, gravity and ship start position.

A level set in fact is a list of levels. When opening a level, you have to enter the index of the level (beginning at 1). When saving, you may write the level to the first free index (levelsount+1) or to a previous one. If so, the level of this index doesn't get deleted, but it (and all levels beyond) get moved one index upwards.

You also can delete the level at a certain index (all levels beyond get moved one index down then), and you can also realise swapping levels at index a and b the following way:

4.1.6. Exporting Level Sets - I

This issue is a bit tricky, as the editor can store level sets in basic files only, but the game expects them to be in the flash. That's why you have to store the basic files containing your level sets onto your PC in binary format in the first step. As the default Comm Software handling the user data area of the AFX (Casio FA123, CasioCom and others) is unable to manage this special format (cause it tries to interpret the sequence of bytes it receipt as Casio Basic commands immediately), you have to transmit a backup of the whole RAM each time. The Comm Software stores it as Hexdump.

Then you can use the SkyRoads LevelXtractor V 1.0 on your PC to extract the level sets from the RAM image and make them level packs.

Important Note: LevelXtractor expects the RAM image to be stored exactly in the same format Casio FA123 uses. Thus, use Casio FA123 either to receive backups (and use others only if you know that their format is exactly the same), or level packs created by LevelXtractor may contain invalid data later.

4.2. The SkyRoads LevelXtractor V 1.0

4.2.1. Exporting Level Sets - II

When you have created a backup file of the AFX RAM with Casio FA123 or compatible as described in "4.1.6. Exporting Level Sets - I", you can load it into the LevelXtractor and enter the basicfile names containing the sets you want to export.

NOTE: it's absolutely necessary to use Casio FA123 or a 100% compatible software for this purpose, cause else the LevelXtractor will misinterpret the data contained in the backup and might generate level packs containing invalid data.

You may load even more than one sets and more than one backups at the same time and can recombine all or some of the levels you have loaded to the new level set that is shown in the destination window now. You also may redefine the level order (what you want to be level 1, level 2 and so on).

When you are ready with that, just click the "export" button to save the destination levels as level pack file.

4.2.2. Importing Level Sets

Level pack files are what the SkyRoads game expects. So you just have to pack this files in ROM disks now and to install them onto your calculator.

The only condition thereby is, that the first level pack on a disk has to be named SkLvStD.000, the second SkLvStD.001 and so on. The game will recognize the packs automatically then, no matter on which disk they are.

Furthermore, SkLvStD.000 on the game's own disk is the default level set and should not be replaced by another pack. But you also may pack further level packs into the game's own disk.

Note: in each ROM disk there should be an executable linked to the icon menu. So you should create a little stub program four your disks that just says "This disk contains the following SkyRoads level sets: [this and that]".

5. Acknowledgments

5.1. Credits

SkyRoads for Casio AFX Series

Game Programming, Graphics, Levels and LIBs by

Marco Kaufmann

--- This was my introduction into AFX game programming at all ---


Marco Kaufmann (AFX Version)

Original Idea

Bluemoon Software (original PC/DOS Version)

5.2. Tools used

In order to develop this game, I used the following tools:

5.3. Special Thanks

Although this nice calculator game is my own work, there where some other people who made this work possible at all. Special Thanks go to:

Bluemoon Software
Oliver Coupelon
John Wellesz alias "2072"