=== S k y R o a d s ===
=== Game Description ===
Contents
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) *:
mailofmarco"at"gmx.de (my default one) and
marco5327"at"yahoo.de (alternative)
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:
-
Real time 3D Game for Casio AFX series
-
Uses high speed AfxGfxB graphics engine, written in Assembler (thus, routines taking the main computing power are very optimized)
-
Framerates speed up to 12.5FPs (limited to 12.5 FPS to get them stable around 11/12 FPs depending on the level's complexity).
-
30 cool levels with different gravity forces
-
Special highlight: this game comes with a LEVELEDITOR! Yeah, you may create your own level sets (on the AFX directly, as the editor is an Add-In itself) and install them onto the flash.
-
Build-In tool shows the current framerate
-
The game uses 3 Colors Mode (+ Dithering -> 5 colors simulated), supports Page Flipping (to prevent flickering, also known as "double buffering") and 3D Detail Level selection (increasing / decreasing detail levels cause decreasing / increasing framerates)
- And last but not least: I claim, that this is the first game for Casio AFX series EVER that was completely created with Turbo Pascal :-D
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
Package
|
+- 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:
-
2 normal types that differ only in their color (one has a light - and the other a dark grey surface). There's nothing special about them
-
Icy blocks with a white surface. You can accelerate and decelerate on them as you want, but if you move left or right, your ship will slide until it falls of the block, touches another blocks side or slides onto another blocks surface that's not icy.
-
Tricky blocks that are to view very hard, because their surface is black. You can recognise them at their fronts and sides only.
b) There are different gravity forces
-
Each level may have another gravity force. The higher this force is, the faster your ships falls and the lower it can jump at most.
999 is the highest force, the ship can't jump then anymore. 125 is the lowest and 500 the default one you will find in the most levels probably.
So far for this. Functional keys available during game playing are the following:
-
[UP], [DOWN]: Increase or decrease the ship's speed
-
[Left], [Right]: Move left or right
-
[F1]: Jump
-
[EXE]: Switch Pause state
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.
The game package contains also tools that you can use to create your own level packs:
-
The SkyRoads Leveleditor V 1.0 as AFX Add In, that you can use to create level sets (on your calculator, only)
-
The SkyRoads LevelXtractor V 1.0 for PC, that you can use to extract level sets created with SkyRoads Leveleditor and make them level packs
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.
Either created or loaded a level, you are in the edit mode where you can modify it. You have the following functional keys available:
-
[Up], [Down], [Left], [Right]: Move the cursor
-
[Alpha], [A]: Increase or decrease the height of a block (where 8 steps are available; 0="no block" and 7="highest block")
-
[CTRL]: Select block type, (where 4 types are available: 2x normal, 1x icy, 1x tricky)
-
[OPTN]: Set ship start position equal to current cursor position. Note, that you may set the Z ordinate != 0 for test mode, but saving the level, start Z has to be 0.
-
[VARS]: Adjust gravity ({125,250,375,500,675,750,875,999}, where 125 indicates the weakest and 999 the most powerful force, and 500 is the default value)
-
[F5], [F6]: Insert / delete row at current cursor position
-
[EXE]: Test current level
-
[ESC]: Goto editor main menu (caution: current level's data is lost then; you have to load one or create a new afterwards)
-
[F1]: Show online help file
-
[F2], [F3], [F4]: Save, Open or Create a level
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".
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
-
it's hight (8 steps with 0="no block" and 7="highest block")
-
it's type
There are 4 types of blocks available:
-
2x normal (either with a light - or a dark grey surface)
-
icy blocks (with a white surface) where the ship is sliding on and
-
tricky blocks (with a black surface) that are hard to view
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"
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:
-
[Up], [Down], [Left], [Right], [F1], [EXE]: To control the ship like in the real game. Note, that other keys are are not available as in the game. Pressing either [EXE], getting of the road or crashing a block turns you back to edit mode.
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.
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:
-
load index a
-
store it at index b+1
-
delete index a
-
load index b-1
-
store it at index a
-
delete index b
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.
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.
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]".
SkyRoads for Casio AFX Series
Game Programming, Graphics, Levels and LIBs by
Marco Kaufmann
--- This was my introduction into AFX game programming at all ---
Idea
Marco Kaufmann (AFX Version)
Original Idea
Bluemoon Software (original PC/DOS Version)
In order to develop this game, I used the following tools:
Turbo Pascal 6.0 (by Borland)
Used for programming the Game and the LIBs
AFX Image V 1.0 beta (by me)
Used to convert BMPs into the AfxGfx Image format
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
Who made the great original DOS game :-). I doubt that I would have
thought about a SkyRoads clone for AFX series without their
original game.
Oliver Coupelon
Who made the one and only, awesome holy bible for every AFX coder out
there, the "AFX Programming Guide".
Without him, I never would have written even ONE single line of code for
AFX series.
John Wellesz alias "2072"
Whose idea it was to use basic files as additional save storage areas
for Add Ins. Without him, the SkyRoads Leveleditor and the game's
highscore table would not be possible (I was not able to use his original
memzones LIB for the game, but could manage a lame basic file
access however)