Important note: this documentation has been modified to apply to the online version of SFXedit.

Please read the included documentation with the downloadable version.

SFXedit online 0.8 beta
©2005 VL-Tone -- ant00@lycos.com


This is a prerelease online demo of an upcoming Starfox level editor.

There are 2 banks used for the level in the game at $000005 and $00000D.
Most if not all hex adress used in the editor are in reverse byte order, and
that may change in the future.


The real ROM addresses of these can be found by multiplying the high byte by
32768 and then adding the remaining 16-bit chunk +512
The online includes an extra 32k bank at $000020.
In the standalone version, you must extend the ROM by 32k to have this bank.

 

In the editor you can:
-Select multiple objects with the shift key.
-Copy them and paste them in empty spaces.
-Delete objects to free space.
-Please note that empty spaces (FF) will crash the game if it reads them.
-That’s why I suggest you work in the extra bank instead of trying to modify
the original levels too much.
-If you click on “warp:” or “br1:” etc. the editor will jump to the warp
address. Use the Go Back button to get back.
-Click on a location in the blue list to jump to other levels, default is Training.
-You can edit any property of any object that has it’s value hilighted by
clicking on it. You can even edit the br1, br2, br3 and b4 properties of h78
asm objects without having to edit the code.
-When “duplicate at:” is selected, the duplicate button will duplicate objects
at the next empty space found after the address (default is “000020” the start
of the empty extra bank)
-If the next empty location is too far or there is not enough space there,
the editor will spit out an error.
-Most levels are initialised in the 0D bank but jump back in the 05 bank, you
can use this warp object to jump to a new level at the 20 bank for example.
-To create new objects, you can choose them by clicking the popup menu field at
the right of the “new object” button, then click the "new object" button.
-To paste and create objects, you must select an empty byte object that is
followed by enough empty bytes objects to fit the object length.
-When you click on the animated preview icon for an object it will open it in the 3d
viewer on top (don't click on asteroids though in the online version).
-You can rotate objects in the 3d viewer by dragging in the 3d view, holding
alt will rotate on another axis.
-You can use the “.” and “,” keys to step frames of an object when the
animation is stopped.
-When you click on the asm property of an h78 object, you get a disassembled
version of the included asm code in the red upper right text field.
-You can set initial conditions for the register emulation bits, most h78 objects
don’t require a change from the default. (this only affects disassembling)
-If you click the Hex Data Mode button, you’ll get an hexdata: property field
for objects instead of the individual properties.
-The hexdata: property fields contains raw hex bytes not including the first
byte wich is the “objtyp:” byte.
-You can copy and paste values when they are selected. You can even copy some
uneditable properties like “addr:” to a “warp:” property.
-Click on “Normal Mode” to get the normal view of properties.

The ztimer value is a decrementing counter that is very important to the game
engine. Until this counter reach zero, the games moves forward without drawing
and loading anything.


When the value reaches zero, the next object is loaded and displayed if it’s a
polygon object. The game will then load and draw any following objects at a
position relative to the current one, until it reaches a new ztimer setting.
The h8A and h12 objects are used to set the ztimer, but most objects with
x y z coords also can set the ztimer.


It’s used to make gaps in game, but it makes the x y z coord system always
relative to the last ztimer setting and that is one of the reason a more visual
editor will be hard to do. Other reasons include the fact that the game is not
as linear as we would think, and expressing level branches and warps
in a 3d level editor would not be an easy task. The ztimer is also used to
manage the number of polygons on screen, if you feel a created level slows
down too much, you can set higher values for the ztimer.

That’s all folks for now!
I intend to release better documentation with the official release.