deCYPHERNOID
	
						  the CYBERNOID editor
		
----------------------------------------------------------------------------------------
version 1.0.3	28-MAR-07
Copyright © 2007, 48K (Matt Neale)
----------------------------------------------------------------------------------------

What is it?
A screen and map editor for composing your own Cybernoid game - a popular flip screen shoot'em up written by programming guru, Raffaele Cecco, back in 1988.

What do you need to use it?
A ZX Spectrum emulator that reads/writes .szx or .sna files.
A ZX Spectrum emulator that permits export/import of binary data files.
Finished games should work on a real Spectrum (but I've not tested this...)

How was it written?
In Sinclair BASIC using, TextMate with a Sinclair BASIC plugin written by AndyHerbert (many thanks indeed!). Testing was performed in FUSE. Graphics were modified in SevenuP. All lovingly melded together on a G4 Powerbook running OS 10.4

Why?
Just for fun! I love maps, was a big fan of the Spectrum back in the day, and always wanted to write my own game of this type: this is about as close as I might ever get :-)

-----------------------------------------------------------------------------------------

Getting started

I recommend just getting stuck in with option 3 – Screen Editor, so that you can see what is possible. Once you are familiar with the screen editor, start planning your map on paper, then begin to build more systematically.

To save your work in progress, use: “SAVE Snapshot As” in the emulator FILE menu.

Being written 100% in BASIC, it is a little slow at doing some things. I recommend running your emulator at 2-3 times real Spectrum speed. 

-----------------------------------------------------------------------------------------

1 - The SHIP SETUP editor

This tool allows you to alter the amounts of each weapon on board the Cybernoid ship.
You can set the amounts that a new game begins with, that new ships begin with, and the maximum carrying capacity for each weapon (this can be higher than the starting amount for example). If you just wish to stick with Cybernoid defaults, don’t touch this editor. You also won’t need to bother exporting/importing “wpn_tab” (see below).

-----------------------------------------------------------------------------------------

2 – The LEVEL SETUP editor

This tool allows you to modify level-specific codes, including: the starting screen, the ship starting position and direction, the time limit, and the “width” of the level. This information is written to a 24 byte table (lev_tab). If you are just testing single screens (at position “0-18”) you may not need to export/import this table either (see below). Cybernoid defaults will be used (first screen = 0, width  = 6).

The “width” parameter controls the number of screens that are counted backward or forward when the ship leaves the screen at the top or bottom of the screen respectively. Levels should be designed with this parameter in mind, and screens positioned (numbered) within the linear map so that they link appropriately. 

(Refer to the Cybernoid.png map on WoS to get an idea of level layout.)

For example, if the width is selected as “4”, then screens 4,5,6,7 will be directly “below” screen “0,1,2,3”. And screens 8,9,10,11 will be below 4,5,6,7 etc.

To be clear: the Cybernoid logic is both robust and naive, allowing you to do many stupid things. So think carefully before you place a screen exit at the left or at the top of screen “0” for example - unless you enjoy flying through game logic/data code! ;-)

On the other hand, multiple routes to a screen is possible (a feature not implemented in the original game). In the above example, you can get to screen 4 by leaving screen 0 at the bottom AND by leaving screen 3 to the right. Thus place exits/blockades with thought.

During the game, screens CAN be reentered (another feature not implemented in the original game), but not directly upon leaving. Upon reentry, all features are reset.

-----------------------------------------------------------------------------------------

3 - The SCREEN EDITOR

Select a screen number to edit. Up to 73 screens can be held in memory, and used in the game. They are held in a linear order (0-72), but the Cybernoid game can access them in a non-linear way controlled by the “level width” parameter (see section 2). Space in the finished game is limited to 7765 bytes (approx 106 bytes per screen after compression).

Friendly warning: If you create overly complex screens, fewer screens will fit in the memory Cybernoid allots. In an extreme case, the maximum number you’ll be able to use is 48 (if no space-saving compression at all is possible). As you develop your map, it is worth performing test compressions (option 5) to see how frugal you are being.

General:

Use QAOP to move the cursor. 1-0 and W-U to place a tile as indicated.
SPACE places a blank tile.
Sorry, but there is no cut, paste, or undo – maybe next time...

Use S,X (+/-16) and D,C (+/-4) to change the 16 tiles currently selectable.

Press M at any time to return to previous menu.
DON”T PANIC! All edits will be remembered!

Special tiles: best to experiment really, but...

The top left tile of the destructible graphics act as detonators for their adjacent tiles. This would normally be the rest of the plant/gun, but you can destroy scenery instead!

Aliens are indicated by an arrow to show direction of entry into the screen. It doesn’t matter where you place this special tile. It is pointless placing more than one per screen: ONLY the bottom/right-most one will dictate where the aliens arise.

Lifts are indicated by “up” or “dn”, and the gap (in pixels) between the upper and lower platform/crusher. The chosen position is for the UPPER lift. (Infer the lower position.)

Caterpillars always move clockwise, stick to the walls/floor/ceilings, and move at the indicated speeds (s - slow, f - fast)

Pickups (mace, rear gun, cargo box) require there to be an empty tile above them.

-----------------------------------------------------------------------------------------

4 – The MAP EDITOR

Rather crude. Allows moving (X) or copying (C) of entire screens from one position in the map to another.

Useful for reorganizing the linear screen order in the map, or for duplicating a screen with the intent to use it as a template for a similar screen.

WARNING: Such changes are IRREVERSIBLE and WILL overwrite screen data if there is already a screen in the destination slot.

-----------------------------------------------------------------------------------------

5 – The SCREEN/MAP COMPRESSOR

This tool converts your edited screens (up to a maximum of 73) into the compressed Cybernoid format, stores these data in a separate memory area (map_data), and writes a table containing the start address of each screen (scr_tab).

If the compression fails (not enough space to compress all the screens into 7765 bytes), or you choose to make additional screen edits, don’t worry: your uncompressed screen data is not affected in any way.

This feature is a little S L O W. But, then: it IS written in BASIC! Perhaps turn you emulator up to full speed, and/or go and make a cup of tea.

-----------------------------------------------------------------------------------------

So, I’ve done all this: NOW WHAT!?! How do I play/test my game?

It’s a little involved I’m afraid. Until a more advanced (probably 128K version gets written), you have to manually export the relevant data and import them into a virgin ;-) Cybernoid game. But it’s dead easy really! Just follow these simple steps.

Still within the editor, save these binary exports to a new folder on your HD:

“lev_tab”:  Start address of export = 65184(#FEA0), length (24 bytes).
“map_data”: Start address of export = 56640(#DD40), length (7765 bytes).
“scr_tab”:  Start address of export = 65024(#FE00), length (146 bytes).
“wpn_tab”:  Start address of export = 64688(#FCB0), length (80 bytes).

Just to be safe – SAVE A SNAPSHOT OF THE EDITOR TOO!

Now, load a copy of Cybernoid into your emulator, and import the binaries as follows:

“lev_tab”:  Import at 29897 (#74C9), length (24 bytes).
“map_data”: Import at 42410 (#A5AA), length (7765 bytes).
“scr_tab”:  Import at 28956 (#711C), length (146 bytes).
“wpn_tab”:  Import at 31664 (#7BB0), length (80 bytes).

And you’re off! Save as a snapshot, and distribute for others to enjoy!

-----------------------------------------------------------------------------------------

Thanks to: Mr. Anonymous, FrankT, AndyHerbert, and various other WoS members for help.

Please submit all comments/suggestions/complaints/bugs to the WoS release thread.

http://www.worldofspectrum.org/forums/showthread.php?t=15335