Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
Acmlm's Board - I2 Archive - - Posts by VL-Tone
Pages: 1 2 3 4 5 6 7 8 9 10
User Post
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 21/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 08-02-04 11:11 AM, in Starfox 2 hacking information? Link
Nice work Dart Zaidyer and FuSoYa

I made a (major) discovery yesterday in Starfox 1. I found where the actual polygon data is for all objects and most of its format!!

I'll have to look a little deeper into it until I post more but I already found how to individually change the color of the object faces (polygons), or to use one of the uncompressed polygon textures instead of a flat color on any polys. The data is uncompressed and seems pretty crackable, mostly ressembling the most basic 3d formats. For each object a basic set of vertices positions is defined, then these are connected together in a second list that uses numbers refering to the vertices position list. There is more to it in StarFox (like animated objects) but it's basically that same format. It's probably also not so far from the Starglider II object format.

I would guess that all FX games use this format and what I found is the polygonal data read directly by the chip.

Now I have to wonder if a 3d object editor/converter compatible with most of the SNES FX chip games couldn't be more interesting/feasible (to me) than a Starfox level editor...
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 22/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 08-13-04 10:35 AM, in Metroid Zero Mission Link
Hmmmm... Zero Mission Cubed... nahhh don't count on it... (I couldn't resist mentioning it )
and don't count on Super Metroid Cubed either, the game is just too big, it would take me years.

As for why people seem to find more data in RAM these days, I guess that's because more
SNES games have compressed data than NES games, and usually there is an uncompressed
version somewhere in RAM. A simple way to find the level data in RAM for most games is to
use cheat finders. Go to a level in a game, save current RAM values, go to another level and
then search for values that have changed. Go to another level and repeat a few times until
you get the fewest results (not too few though, if you find only a dozen values then it's most
likely the level data and either you screwed something while doing it or the data is read directly
from the ROM.

There are ways to remove unwanted results by exluding values that change while doing different
things in a same level. Now try to locate big chunks of RAM that have changed and note the
adresses. You can then enable cheats at those adresses to check what is affected while playing
the game. You may find for example that changing byte x at adress y changes a tile in a game.
Sometimes you may have to enter a level for it to be changed.

If you find relevant data you can take a little sequence of hex bytes from RAM, 6-8 bytes
should be enough, and search for it in the ROM file using an hex editor. If you are lucky
and that data is uncompressed in ROM, you hit the jackpot Try not to search using a part
that could likely occur somewhere in the ROM like "00 00 00 00 00 00 00 00".

Anyway if these ZM adresses are in RAM, then this last procedure could help in finding the data
in ROM. If it's uncompressed... but if it's not, the uncompressed RAM data can still be very
usefull in trying to crack the compression format. There is no single way to convert RAM
adresses to ROM adresses since since the processor can write values anywhere
in RAM using a programmed routine. Using tracers and looking at the source code can be
usefull in finding exactly how this happens.
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 23/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 08-15-04 09:17 PM, in StarFox 1 and 2 Polygonal Object Decoder/Viewer Demo release! Link
Ahhh StarFox, the first polygonal game I ever played on a console at home...

Now I present you, The StarFox 1 and 2 Polygonal Object Decoder/Viewer!
It's in Shockwave, so you can try it in your browser.

It's at:
http://pages.infinit.net/voxel/StarFoxObjectDecoder.htm

If you don't fell like installing Shockwave there are more screenshots there:
http://pages.infinit.net/voxel/SFXdecoderScreenshots.htm



It includes about 1/3 of the objects in Starfox 1, 2 early beta and final beta.
Still 1/3 is alot considering there is about 450, 200 and 500 objects in the 3 versions.

You can rotate, move and zoom each object made available in a similar fashion to
the continue screen in StarFox 1 and StarGlider 2.

Missing for now is color and texture assignation, and all animated objects are absent.
I know how the colors and textures are assigned, but there is 256 color/texture
possibilities that I will have to get a screenshot of, that will take hours!

I'm still trying to figure out the details in the format of animated objects, but
it's pretty much a matter of finding in what order the vertices positions are stored.

There are other bytes that I just skip for now in the data, I'm not sure what they
do for now.

There is a couple of objects unused in the game, like a parrot in StarFox 1,
it looks better in color tough. To see it in the real SNES game, go on the continue
screen (you must earn bonus credits and be game over) you'll be able to rotate and
zoom the high poly arwing. If you press buttons on controller 2 you'll be able to
switch to various enemies and power ups.

Use the following cheats/PAR codes 7E0020:60 7E0021:BC. Now you can see and rotate
the hidden parrot object!

Anyhow aside from finding a parrot, I guess I could either try to make an object
editor and/or do a whole new fangame in Shockwave using all objects found in StarFox.

Maybe StarFox converted to 4d like someone proposed in another thread!
The shield item in StarFox 1 is actually much like the wireframe shadow of an
hypercube (which is a 4d cube), that can be a good start!.




VL-Tone

Red Cheep-cheep
Level: 23

Posts: 24/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 08-17-04 03:59 AM, in StarFox 1 and 2 Polygonal Object Decoder/Viewer Demo release! Link
Well thanks for the kind comments

Yes I was thinking about using the DXF ascii format to export and import 3d models.

Exporting should be relatively easy to implement, importing back could cause problems.
You wouldhave to make sure that your 3d program doesn't create extra polygons and
informationwhen saving to DXF. The other problem is some of the data is still unknown to me, things that are not needed to reconstruct a visual equivalent but are used in the game and
they are dependent on the vertice data. One part seems to be related to "normals", so
that the light angle of each face is already calculated. I'll try to crack this before I can
try to edit objects.

Now I'm planning to try to implement an editor myself. It would be a matter of enabling
manipulation of the X Y Z vertice positions and their connection order, and then saving
the changes back to the ROM. It would be much more limited than a full featured 3d
program, but the FX chip polygon format is limited... You have to work with very few
polygons, and usually you are better off doing vertice-level editing. One thing my editor
would help to is predicting the size of an object in ROM, an external editor wouldn't
be able to do that.

Just as I suspected, most of not all FX chip games use the same polygon format so games
like Stunt Race FX could be editable too. Removing the eyes on the cars could be interesting,
though it would be a little cruel, they are soo cute after all

So I'm not sure about the idea of implementing import for now, maybe exports only could
still be usefull to many. Though I would have liked to be the first to do a Starfox
fangame remake with the exact polygon shapes as the original

I'll see what I can do about basic importing, but I'm not promising anything...

Edit:major typo


(edited by VL-Tone on 08-23-04 01:58 AM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 25/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 09-07-04 05:19 AM, in Starfox Level data found, and hidden new weapon. Link

I updated the Starfox object Decoder. Now it includes 75% of objects from the 2 SNES StarFox.
Including most of the animated ones like the Andross animated face and morphing ships from
SF2. Some little quirks here and there, still no colors, but I'm working on it.

http://pages.infinit.net/voxel/StarFoxObjectDecoder.htm

There are screenshots there but these were not updated.
http://pages.infinit.net/voxel/SFXdecoderScreenshots.htm

So aside from cracking the animation format for polygons, I found the location of Level data, and began to crack it.

Here is the part of the data for the training level begining at $6F0F8 in StarFox v1.0
I hope this makes sense (Edit: added monospaced font html tag)

Type: 00 Z: 00 00 X: B0 04 Y: 00 00 -- 88 13 -- objnum: 44 end00obj: 68 <-- Scenery small white box (44)
00 D0 07 50 FB 00 00 88 13 3D 68 <-- Scenery white high rise box (3D)
Type: 86 Z: 00 00 X: 00 00 Y: F4 01 -- 88 13 -- objaddress: 30 DD -- Palettes?: A6 F7 0A 00 00 00 <--Shootable cone (30 DD)
B0 04 00 00 88 13 3C 68 <-- ??
00 D0 07 50 FB 00 00 88 13 3E 68 <-- High rise with flashing corner (3E)
00 00 00 B0 04 00 00 88 13 3D 68 <-- Scenery white high rise box
00 D0 07 50 FB 00 00 88 13 3D 68 <-- Scenery white high rise box
74 00 00 E8 03 00 00 88 13 64 <--Antenna tower
74 D0 07 18 FC 00 00 88 13 64 <--Antenna tower
86 00 00 00 00 9C FF 88 13 40 BD 04 80 04 8C 62 00 <--Training ring (color=62)

...

00 00 00 B0 04 00 00 88 13 43 68 <--High building with starfox logo
00 D0 07 50 FB 00 00 88 13 43 68 <--High building with starfox logo
86 00 00 00 00 9C FF 88 13 40 BD 04 80 04 8C 58 00 <--Training ring (color=58)
8A 3E <--??
00 20 03 00 00 00 00 88 13 43 68 <--High building with StarFox logo

...

The type $00 object uses one refering byte. For example the small white box uses the number $44.
At $2848 in the ROM there is a sequence of 16-bits pointers. The $00 object byte will referer to
one of these 16-bits adress.The $86 objects directly use 16-bits pointers instead of refering to a list.

Take the refered 16-bits address from either the $00 or $86 objects, substract $8000 and add
$2E15 to them to get the actual ROM position of the 28 bytes long string defining a couple of
things about the object like palettes, relative scale and pointers to the polygon data. The $86
objects seems to have additional palette data that overides the one in the 28 bytes string.
$74 objects also use one refering byte, but from another list (that I didn't find yet), mostly
these are moving and interactive objects like enemies and bosses. They can be composed of
more than one sub-object. The Z position of all object types is relative to where you are in the
level when you reach this object.

You can look at an early decoding of the training level here:



Yesterday while corrupting the level data, I found a new special weapon! It's activated when you
reach the part of a level that contains it. It's object type $74 and object number $E0. For example
it could be hacked in the level data as:
74 00 00 00 00 00 00 88 13 E0

The hidden weapon uses the same sprites as Nova bombs. A flashing bomb
sprite circles your arwing, like it would be protecting it (like in SF64?), if
any enemies goes in the line of sight of the arwing, your ship automatically
begins to shoot multiple smart bombs that aim and destroy enemies.
Note that these smart bombs also aim and shoot on your teamates




If you want to try it you can apply this IPS patch to version 1.0 of StarFox.
http://pages.infinit.net/voxel/fox1newwp.ips

Note that version 1.0 is the one with a bright red contour over the logo,
while 1.2 has a brownish one, and the Japanese a blue contour.

To see the new weapon, you have to go to either the Training level, or
Corneria route 2. It should be activated at the begining of the level.

I tried to find a cheat to activate the weapon permanently but failed,
maybe someone else could give it a shot. So for now with this IPS patch,
you have a limited amount of ammo, in Corneria you run out of it quickly.
In the training level you may be able to see the weapon in action a longer time.

Little side note, it seems that the namco Japan StarFox dev team stumbled on
my site and I got many visits from them last week, I wonder what they think of it




(edited by VL-Tone on 09-09-04 12:36 AM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 26/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 09-07-04 10:52 PM, in Starfox Level data found, and hidden new weapon. Link
Hey thanks for the nice comments

As for how I know namco visited me, yeah I could have checked logs if it was my server, but
since is not I'm using a "tracker" which is like a counter but without having the numbers on my
page. Since it's the free version I only get the IP and referer for the last 20 visitors... So I have to
check often. My stats are actually public, you can see them at
http://extremetracking.com/open?login=antoooo You'll see that I had two huge spikes in
visitors in May and June and that since then the traffic dropped (I don't really advertise it). The
June spike coincide with the release of Metroid Zero Mission in Japan, and I got many visits from
Japan in that time and even since then Japanese make like 25% of my site's visitors.

The IPs I had last week from from namco looked like that: gw**.yccext2.namco.co.jp
Actually, last week I also was visited by just about every major Japanese game companies,
Capcom, Konami, Midway, Sega, Nintendo of Japan... They all were refered from an article about
my site in a blog at http://fumufumu.q-games.com . Now Q-games is a Japanese game company
founded by Dylan Cuthbert... who is that guy? I'll let you find out by yourself.

As for the difficulty of doing this in Flash, well yeah it would be next to impossible to do this in
Flash. The only thing is that my demo is not in Flash. It's in Shockwave I know Flash
files are .SWF files, but they are not Shockwave files. Shockwave files are .DCR

Shockwave files are produced by an app called "Macromedia Director" which can be used for
many other things than online games Shockwave is actually a run-time for Director project with
security limitations (restricted access to local disks). Director/Shockwave has a nice extensive
set of true 3d tools and it uses OpenGL or Direct X when possible or an included software
renderer. Doing the same thing in Flash would have required drawing the polygons using vector
shapes, calculate lighting and z-sort them manually, and it would have end up being slow and
clumsy.


Cool to know that Namco visited you. Just keep an eye out if they release something like
"Namco VOXELized collection 1.0"


Lol yeah we never know You know in 5-10 years classics will still be classics, maybe
companies will look for a different way of presenting their games while keeping the original bitmap
look. I thought about doing a voxel PacMan conversion but given the simplicity of the game,
I would be better off using polygonal 3d, but that would be too "ordinary" for my tastes, it would
end up looking like Pac-Mania.

Anyway I'm looking foward to hack deeper into StarFox, and I'll keep you informed with that. Now
if anyone wants to help me, I wouldn't mind, but it seems the rom hacker pros here have other
games in their minds to hack Or maybe they don't like the fact that I'm using Shockwave to
present most of my hacks... Or both Anyhow I'm doing this mainly for fun, learning many things
in the process.

VL-Tone

Red Cheep-cheep
Level: 23

Posts: 27/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 09-09-04 06:53 AM, in Starfox Level data found, and hidden new weapon. Link
Neko54123 I examined the source code a few times but never actually started from the begining,
I was looking for specific values. And for some obscure reasons I don't use tracers (yet).

I'll try too look for what you found. I think the graphics you found are the SFX chip textures as the
rest of the bitmap graphics are compressed as far as I know.

I noticed the Hover, Tank etc. long time ago. I thought the same as you but here is what I learned:

These are from an early demo presented to Miyamoto, which was essentially a StarGlider II
clone for the SNES. When Miyamoto saw the demo he said no (didn't like the free roaming), and
the team went to produce a foward-going demo that became StarFox. Supposedly all the unused
code was removed and there is nothing left. Still I found a couple of unused things in the game,
this weapon, a parrot and a weird asteroid.

Also, very cool easter egg you found there from Dylan in StarFox 2

Ailura, I know it's not that extraordinary, but still it's cool to see that they were refered by an
article about my site in the blog of a company founded by the main programmer of StarFox 1 & 2.
I saw that glitch hack and was a little sad to see that they claim this as the first hack of a 3d
console game...oh well they are right Anyway like I often say I do this mainly for fun and to
learn, not "to be the first".

Edit: Forgot to address a question from Xkeeper
How can you run out of ammo and/or how can you tell?

The weapon simply shoots everything it can aim until it simply stops. It's all automatic
and independent of the normal beam. It's hard to count how many projectiles are shot because
many can be fired at the same time. I tried find a value in RAM that you could lock using a cheat
so the weapon didn't stop but failed... I'm used to find these kinds of things in RAM , but for
some reason I couldn't find any decreasing values associated with shooting these projectiles.

Edits: Typos and bla bla.



(edited by VL-Tone on 09-09-04 12:24 AM)
(edited by VL-Tone on 09-09-04 12:41 AM)
(edited by VL-Tone on 09-09-04 12:49 AM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 28/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 09-10-04 07:44 AM, in Starfox Level data found, and hidden new weapon. Link

From all the info I dugged up, I would suspect that the FX chip is actually something like a
hardware version of the StarGlider 2 polygon engine. I didn't find any detailed docs about the FX
chip though...

X (or Xekkusu) is the first game Argonaut and Nintendo co-developed, with Dylan Cuthbert as a
main programmer, Miyamoto as a director, and Hirokazu "Hip" Tanaka for sound effects
and music, the guy responsible for the DK arcade and Metroid 1 sounds and music, GameBoy
Camera etc. So X is a GameBoy game featuring wireframe graphics (like Star Glider 1) and that
was released only in Japan. I wish someone could translate it since I get stuck after the third
training level and those levels are so boring that the title screen demo is more interesting.

In 1991, Argonaut and Nintendo officially revealed a partership. We could deduce that
01 NOV 1991 is the date they started to code what became StarFox, but they used the
Starglider (2) source code at first, since they ported the game to many platforms before.
That would make 2 years in the making of StarFox 1, which is a realist time frame.

I tried to play the DOS version of SG 2 but didn't get far, something was wrong with the
controls, I'll have to try back since I didn't try much. I did try the "Painting with Rolf" mode
which is essentially the exact same thing as the continue screen in StarFox, where you can
spin the objects and optionally "draw" with them. Unlike StarFox, you can view all the
objects in the game, and you can see how much the StarFox team was inspired by StarGlider 2.
You can find space fishes, whales and birds in both games.One of the alternate arwing ship in
StarFox 2 is actually much like the Icarus, the StarGlider ship.

It could be interesting to try to make sense of the data surrounding the STAR GLIDER 01 NOV 1991
Maybe it's really old code and/or data. I suspect they started with an older code base for
StarFox 2 since maybe Starfox 1 didn't have any all-range mode code left.






(edited by VL-Tone on 09-09-04 10:48 PM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 29/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-08-04 03:06 PM, in Starfox Polygon Viewer, Now in Color! Link
Hi there!

Just wanted to give you a little update about my StarFox reverse-engineering project. My Shockwave polygon decoder now
shows animated objects and more recently I added color at last. It wasn't easy but after a few days of intense hacking
I found how the palette/texture animation data was stored. Color animation and bitmap textures are not yet enabled in
my demo. Try it in your browser at http://pages.infinit.net/voxel/StarFoxObjectDecoder.htm and/or look at larger
screenshots there:
http://www.angelfire.com/electronic/dokidoki/http://membres.lycos.fr/nes3d/SFXDecoderScreenshots.html

If this page was to go down in the next few days, a mirror is set up there
http://membres.lycos.fr/nes3d/StarFoxObjectDecoder.htm but you'll be annoyed with the french banner frame




The StarFox 2 betas can use most of the StarFox 1 palettes it seems, though bitmap textures are different. As you can
see I pretty much figured out all things pertaining to the bitmap textures in SF 1, so it's mostly a matter of finding
an efficient way to deal with them in Shockwave. Not that it's hard, but I never dealt with texture mapping before.

One thing I figured out pretty quickly is that StarFox only uses a fixed palette of 16 colors to display all polygons!


Using a checkerboard pattern the FX chip can simulate up to 256 colors on the screen (more like 128 though). These
pseudo-colors are refered as a XY byte in hex so X and Y are the 2 colors used in the pattern. Color 0 on the 16 colors
palette is a transparent color so when you use it with a normal color, lets say F0 with F being green, you get a
semi-transparent green color polygon. As far as I know this is not used in the game except for bitmap texture masking
but in theory everything could be semi-transparent with probably no loss on speed. Each object face can either use a
solid color, a light sourced color or a bitmap texture. The faces color number refers to the type of color/texture
using a byte, that gives 256 possibilities. Those possibilities are defined somewhere begining at $18200 in the ROM.
Each entry can be static or an animated sequence of colors/textures. There are about 9 of these sets and the 28 byte
object definition has a pointer to tell which one is used, for example 13 82 is the most commonly used palette (refer
to my other post to know where the 28 bytes object definition table is.) That 13 82 number translate to
$18213+$200=$18413 in the ROM. At this address you can find 256 2 bytes color/texture references. Here is a little
description of the format:

XX 00 to XX 08= Nine light sourced colors, the different variations are stored at $19000 in ROM.
The 9 colors are stored as 10 shades so that makes 90 bytes. There are 4 conscecutive shade variations of these 90
bytes.


XX 3E= Color where XX is Color from one of the twenty 32 color palette sets starting at $18D8A in ROM.
Which of one of the 20 palettes variations is used can be changed dynamically by the game (like when you crash).


XX 3F= Color where each X is from the standard StarFox 4-bit palette to form the checkerboard pattern


XX 40= 32x32 Texture where XX is texture position number, 80$+ is on texture page two
XX 41= 64x64 Texture flip horiz
XX 42= 8x8 Texture flip horiz
XX 43= 64x16 Texture flip horiz
XX 44= 32x8 Texture flip horiz
XX 45= 32x8 Texture
XX 46= 64x64 Texture
XX 47= 16x8 Texture
XX 48= 32x32 Texture
XX 49= 64x64 Texture Polar Mapping Down Left
XX 4A= 64x64 Texture Polar Mapping Down Right

As many figured out textures are stored as two 256x256 pages using 4 bits per pixel (they use the same 16 colors
palette). The pages are interleaved meaning that for each XY$ byte in hex, X is used for page 1 and Y for page 2.

XX 8X= Animated color/texture where XXX is anim data offset (18XXX$+200$ in ROM).
First byte of animated data is the number of frames, then the data is in this same format (some entries seems unused
and corrupted).

So thats about it, I didnt check all of the other types because they are not used in the game objects, but there are
some weird unused things like the polar mapping texture effect which creates a circular pattern from a bitmap.

Note that in the pictured palettes, I blended the checkerboard pattern to obtain a solid color, anyway Shockwave uses
opengl and I don't see a way to do this silkscreening effect on a standard 3d videocard, it's really an FX chip thing.
(no it's not a matter of applying a checkerboard pattern to a polygon, as it would get distorted by perspective)

Here is the most common 256 colors/textures palette (13 82) used in the game, decoded to rgb color, note that bitmap
textures and the transparent color are represented as white and black . Colors going down are animated.


As for level data, I'm still working on documenting it's format, if you click on the StarFox logo in my demo you'll be
able to play in the training level, decoded from the game, with some missing parts. There are still many things to
figure out and document before I can think of making a level editor or a remake, but it seems less impossible than a
few months ago. There is a category of objects that moves on paths and/or are somewhat interactive, these are mostly
enemies and bosses (and the hidden multi bomb weapon). One of the objects I found in this category is an arwing that
comes in front of you, and mimick all of your movements, or another that does it while inverting the horizontal or
vertical movements! Really fun to play with (for a few seconds at least), maybe I should release an IPS patch. I'm
waiting to have a more complete hack before releasing something else. Sure I could change many things in a level,
moving and changing objects, changing colors, put textures and transparency on most objects and call it "the first REAL
hack ever released for StarFox 1", but you know, I'm not like that

I'm interested in the in the StarFox 2 translation effort, as it includes finding out about the only compressed
part of the game, which is the graphics used for text, characters and the title screen, and that applies to StarFox 1
too. As you know the textures for the polygons shown up here are not in the same format, and they are uncompressed, and
all the data I found was too. I would sure like to be able to hack the bitmap part of the title screen Also, StarFox
can also use the compressed graphics as polygon textures, and it does in a few rare cases, such as the big text flying
towards you in the credits, and the Nintendo logo when you boot the game. Ah that makes me think, I found a cheat that
enables you to regain control of the arwing during the credits and (end of level sequences) and then you can shoot the
names! What a great way to waste time on the weekend
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 30/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-09-04 07:36 AM, in Starfox Polygon Viewer, Now in Color! Link
Hey thanks for the pleasant comments

Flobo wrote
So what about an object-editor in the future?
Yes I would like to make an object editor, but there is a problem, part of the polygon object data includes ways for
the FX chip to do Z-Sorting, and this format looks a little complicated, I haven't figured it out. For small
modifications it wouldn't matter, for example if you keep the same number of faces and vertices. Maybe just enabling
editing of colors/textures and moving vertices positions could be fun enough and that should'nt be tough to implement.
I'm evaluating possibilities for now.


windwaker wrote: Was this done in Flash?
No it wasn't This demo and all my other demos are Shockwave files (.DCR not .SWF... go figure ) produced with
Macromedia Director. I'll try not to rant too much about how Shockwave and Flash are different. Both are from the same
company. Flash started with very limited interactivity but got better over the time. Still you can do most everything
in Shockwave that you can do in Flash, but much much more. For example, Flash cannot do real 3d, the best it could do
is animating vectors shapes with calculated perspective, but it's a pain in the a** to program, it's real slow and it
doesn't use 3d cards. Shockwave 3d uses OpenGL or Direct X and has like 150 commands to modify and create every aspect
of 3d worlds right down to the vertex. Shockwave also have extensive commands to compose bitmap images (offscreen) and
draw into them.

I could go on and on about the many things that you can do in Shockwave that either simply cannot be done in or is very
complicated to do Flash. And you can even insert and control flash movies in Director/Shockwave projects.

Anyway the models in my StarFox demo have polygon meshes generated from decoding the ROM data, and they are real 3d
polygon objects displayed in a real 3d engine, I didn't have to program the part that actually displays them. I can
issue simple commands once the model is built and inserted into the 3d world, for example
theworld.model[1].transform.rotation (0,10,45) that will rotate objects.

I hope my work can inspire some people into trying to hack Mario 64 or GoldenEye polygons and levels (or even StarFox
64!), you know, it's not that impossible to do
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 31/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-10-04 10:09 AM, in Starfox Polygon Viewer, Now in Color! Link
Its ok, its still on the topic of extracting and modifying polygon data of a 3d console game.

For now I'm not really into n64 hacking, though I would be happy to see other people find the polygon and level data for Mario 64. What I hope to show is that 3d hacking is not that hard. Most polygon engines share the same good old basic format, vertex lists and face lists.

I began yesterday to implement basic editing features in my StarFox object viewer. I hope to release something soon.


VL-Tone

Red Cheep-cheep
Level: 23

Posts: 32/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-15-04 05:25 AM, in Starfox Polygon Viewer, Now in Color! Link
I was wondering the same thing about the Jackpot and Hold textures, and came to the same conclusions
Maybe we could try to find if there is a coin count tracking byte somewhere in RAM.

Professor Hanger is a reference to StarGlider II, in the game, a boss is named "Professor Halsen Taymar"

I figured the rest of the polygon data format yesterday, which is the "BSP tree" data.
What I found is that objects in SF use Binary Space Partitioning to do the Z-sorting.
This means implementing object editing will be tough, but still feasible.
I already made a demo where you can select and move vertices and change faces color.
It saves an IPS patch containing the edited object, the problem is that it doesn't
take BSP data into account so Z ordering can be messed up.

I'll have to find a way to generate new suitable BSP trees for edited objects.
If you have questions about what are normals and BSP trees etc, don't hesitate to ask.
I'm not a 3d pro either, but I'm learning

So here is a preliminary doc about the polygon format which uses the standard Arwing as an example.




Annotated Deconstruction Of Low Polygon Arwing Object From The Original StarFox.
--------------------------------------------------------------------------------


Notes about this document:

Hex numbers in brackets [] is all the actual ROM data for this object,in the same order.
The low polygon Arwing is entry 294 in the StarFox Decoder demo.
This data can be found at $8F373 in the StarFox 1.0 ROM
(Version 1.0 has a bright red contour on title screen Starfox logo)
As shown below, the first bytes in ROM are 04 04 00 00 F6 00 01 00 00 FA 00.
Everything outside the brackets are annotations.
The animated object data format is not covered in this document.


***Vertex Lump Data***

[04] Normal vertex list following (list type is $04)
[04] Number of vertices in list (as is)

XX YY ZZ 8-bits signed integers
--------
[00 00 F6] 000 000 -010
[00 01 00] 000 001 000
[00 FA 00] 000 -006 000
[00 02 50] 000 002 080
[38] Mirrored (X-axis) vertex list following (list type is $38)
[06] Number of vertices in list (will generate 2x that amount of vertices.)

XX YY ZZ 8-bits signed integers
--------
[24 0E D8] 036 014 -040 (mirror point is -036 014 -040)
[14 F5 EC] 020 -011 -020
[EE 09 FA] -018 009 -006
[F6 04 00] -010 004 000
[14 04 00] 020 004 000
[F2 0A 14] -014 010 020

[0C] End vertex list ($0C)

There are other types of vertex lists (other than $38 and $04 used in this object)
List type $1C is for animated objects.
List type $34 is ehmmm I'm not sure yet, it's along the lines of mirroring where
vertices are doubled, it's mostly used for the wireframe rectangular rotating beams.
I think there are others not documented yet.

***End of Vertex Lump Data***


***Triangles Data for BSP and Normals***

[30] Begin triangle list used to calculate normals and are used by the BSP tree. ($30)

[14] Number of triangles (equal to the number of faces) wich is twenty in this case

P1 P2 P3
--------
[00 0A 01] Three point numbers referencing to the calculated vertex list (The list above + mirror points)
[01 0B 00] In this case there is 4 normal points and six mirrored points so that makes 4+(6*2)=16 vertices.
[0A 0B 01] The order in this case: 4 normal vertex, then 6 vertex with their position intact, and 6 mirrored ones.
[0B 02 00]
[00 02 0A]
[03 0B 0A]
[03 02 0B]
[0A 02 03]
[0B 0C 09]
[04 09 0C]
[0A 0D 05]
[08 0D 0A]
[06 0F 0B]
[0B 0F 06]
[0A 0E 07]
[07 0E 0A]
[0D 08 05]
[08 0A 05]
[04 0B 09]
[0C 0B 04]

***End of Triangles Data for BSP and Normals***


***BSP Tree Data***

[3C] Start of BSP tree

This is a node-based BSP tree, the number of entries is equal to the number of convex faces groups in the face data.

[28 06 18 00 0C] Leaf node ($28) where in that case $06 is refering to a triangle in the list above.
This triangle is the splitting triangle used to divide which face group is in front or behind.
$0018 (reversed byte order) is the number of bytes to skip to get to this faces group data (leaf part of the node).
0C is the number of bytes to skip to get to the one of the two branches for this node. "28 01 7C 00 04" in this case.
The other branch is simply the next BSP entry, "28 0E 1E 00 04" in this case.

[28 0E 1E 00 04]
[44 25 00] Leaf ($44) where $0025 (reversed byte order) is the number of bytes to skip to get to this face group data.
[44 48 00]
[28 01 7C 00 04]
[44 83 00]
[44 94 00]

***End of BSP Tree Data***


***Face Data***

[14] Start of Face group (convex shape) ($14)

Ns Fn Co NX NY NZ V1 V2 V3... Ns is the number of sides for this face. Fn is face number or ID.
-------------------------- Co is color/texture number, refer to my documentation (first post in thread) about the color/texture sets.
NX NY and NZ is the vector of the calculated normal for this face normalized to 128 (or is it 127?)
Vx refers to the vertex numbers as defined by the vertex lump list just like the triangle list (see above)
The number of Vx vertex references is equal to the number of sides, in this case three.
Supported number of sides are 1 (point),2 (line),3,4,5,6 and 8 sides.
Ns Fn Co NX NY NZ V1 V2 V3
--------------------------
[03 06 10 A6 5A F7 03 02 0B] ->This face is a triangle with a gray tint ($10), with a normal vector of (-90,90,9), connecting vertex 3, 2 and 11.
[FF] End of faces group($FF)
[14] Start of Face group (convex shape) ($14)
[03 0E 07 BF 64 D5 0A 0E 07]
[FF]
[14]
[03 0A 00 00 7B 1F 0A 0D 05]
[03 0B 2C 00 9E AF 08 0D 0A]
[03 10 00 48 A5 CC 0D 08 05]
[03 11 01 B0 A2 1D 08 0A 05]
[FF]
[14]
[03 07 14 5A 5A F7 0A 02 03]
[03 00 0A DC 87 0C 00 0A 01]
[03 02 2B 00 00 7F 0A 0B 01]
[03 04 12 53 53 32 00 02 0A]
[03 05 00 00 81 FD 03 0B 0A]
[03 0F 07 41 9C 2B 07 0E 0A]
[FF]
[14]
[03 01 0A 24 87 0C 01 0B 00]
[FF]
[14]
[03 0C 07 41 64 D5 06 0F 0B]
[03 0D 07 BF 9C 2B 0B 0F 06]
[FF]
[14]
[03 03 0E AD 53 32 0B 02 00]
[03 12 00 50 A2 1D 04 0B 09]
[03 13 00 00 7B 1F 0C 0B 04]
[03 08 2C 00 9E AF 0B 0C 09]
[03 09 01 B8 A5 CC 04 09 0C]

[FF 00] End of face group data and end of object data (sometimes is FE00 and sometimes there is nothing indicating the end?)
***End of Face Data***



(edited by VL-Tone on 10-14-04 08:33 PM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 33/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 03-14-05 10:49 AM, in StarFox Level Editor Demo! Link
Hi there!

I
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 34/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 03-14-05 11:37 AM, in StarFox Level Editor Demo! Link
You said it yourself, it's for the (few) people who like Starfox

But thanks for the encouragement

Anyway like I said many times, I do this mainly for myself, for fun, and because it can fit well
in a resume: "Reverse engineered the 3d classic SNES game Starfox, decyphered the polygon
mesh and level data and built editors/viewers for them"
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 35/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 03-15-05 04:33 AM, in StarFox Level Editor Demo! Link
I know you are waiting for the stand-alone version, it should be done in the next few days.

In the mean time I took a few minutes to cook a cool little demo:

It builds a new level in Asteroid (route 1) according to a text string you type.
The new level will be composed with the letters built from orange asteroids!
Now you can have a Starfox level with your name in it!

Just before looping, the level gives you the hidden weapon, which is lot of fun
on the asteroids.

All of this with a simple 28k Shockwave that you can try there:
http://membres.lycos.fr/nes3d/StarFoxAsteroLetters.htm

The thing will produce an ips patch that is downloaded thru your browser from
the text string you enter.

Note that you better do a savestate before entering Asteroid so you won't have
to play in Corneria 1 each time.




As always only work on backups, since the patch overwrites the asteroid level.

Have fun!
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 36/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 03-15-05 02:56 PM, in StarFox Level Editor Demo! Link
Since you are so impatient, here is a prerelease stand-alone version.
That's right, the thing will actually edit ROMs and save changes.

There is a Windows version (should work on XP and most other versions)
And there is a *cough* Mac OS X *cough* version.

Go there to download it:
http://membres.lycos.fr/nes3d/SFXed_Download.htm

To start it, double-click on the "Start SFXedit" icon (duh!)

You need StarFox version 1.0 with the red contour over the title logo.
I highly recommend that you extend the ROM with at least 32768 bytes of FFs
(more on this in the read me)

I plan on supporting other version like 1.2, Japanese, Competition and StarWing.
But for now the editor is modeled after 1.0 which has different offsets.
Starfox Competition has a few new/replaced objects like moving bonus rings etc.

As for SFX 2 well as much as I'm interested in learning more about it,
I didn't play it very much and have almost no nostalgia attached to it.
Still it looks like a great game and I have a high respect for the team
who worked on both game so I enjoy it too but I probably won't invest
the time required to do it, I have to set priorities...

I work on games that I have fond memories of. I still remember about
being impressed by SFX 1 in 1993 and asking myself how they did it.
Now I know, in part at least

As for future features, I'll add a way to add addresses bookmarks, and a way
to add custom menu items for the properties.

A real Undo feature will be more than welcome.

I'm thinking about creating a series of macro objects, for example a standard
level initialisation block with all it's standard included objects could be inserted.
Other things could include a macro object for the enterable armada battleships,
since they have to be built from special objects in a special order.
I could also build custom macros like asteroids shaping letters

Also something like a semi-random level generator would be cool.

I'm thinking of labeling all the h78 asm objects with a short description if I can.
I plan on having a more visual approach to edit x y z coords for objects.
I'll add some kind of 3d and 2d level preview in the way for sure.
(it's already done, but needs lots of tweaking)

I can't think of anything else right now, but I had many ideas about it.
Thank God I don't work today


Have fun!


(edited by VL-Tone on 03-15-05 06:14 AM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 37/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 03-21-05 04:49 PM, in StarFox level editor standalone fixed Link
Hi there,

There was a stupid bug that prevented the stand-alone editor from starting (it had something to do with the pref file not being found). Now I combined the data, pref and runtime engine file into a single .exe so version 0.91b should now work as intended.

Go there to download the new fixed version.
http://membres.lycos.fr/nes3d/SFXed_Download.htm

I know some downloaded the editor but noone told me it didn't work

So please, if you download the thing, I would just like to be sure that the thing actually starts on your system so I need a little feedback here. (I tested it on a couple of PCs so it should work fine this time).

Sorry for the inconvenience.



(edited by VL-Tone on 03-21-05 07:50 AM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 38/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 05-29-05 12:45 PM, in Metroid Data Link
You might be interested in this doc I made about the item data format (it was not part of SnowBro's Metroid Level data format doc) It may not be 100% accurate but you can see that there could be more flexibility in positioning items than MetEdit allows.

http://membres.lycos.fr/nes3d/MetroidItemData.txt

Item editing is missing from my own never-officialy-released Metroid editor called "Metroid RomEdit" and I only implemented part of item data decoding in Metroid Cubed.

Anyway if you have more questions about Metroid I could try to answer them, though I wouldn't know about the sprite format...


(edited by VL-Tone on 05-28-05 08:04 PM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 39/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 05-29-05 01:03 PM, in New StarFox Level Editor version 0.93b Link
Hey there

Dropping by to announce the release of a new version of SFXedit: The StarFox Level Editor 0.93b.

No WYSIWYG editing yet (What You See Is What You Get), but improvements in the number of sub-menus including commonly used values for most types of chunk objects.

Most bugs were fixed

Most notably, there is a new integrated 3d object viewer (pictured here) where you have a bigger viewport and additional controls like palette sets switching. You can also directly view from just about every 400+ objects found in the game via a scrolling list.

You can also save the currently displayed object as a .OBJ file. It's only monochromatic output as I'm working around some color palette issues.


For a full-size screenshot:
http://membres.lycos.fr/nes3d/SFXedit_objview.png

The object viewer may be morphed into an object editor in the future so you can move vertices and change face colors and textures. For now, the object viewer cannot really change anything in the game. (It should be noted that the level editor part does indeed work and save changes to the ROM file)

A really useful addition in the documentation for version 0.93b is a list of all level object types with detailed descriptions and info about how to use them. I guess that most people were clueless about using the first version because this info was missing.

Another much needed feature, the editor will now check for the correct StarFox 1.0 US ROM version and if it's not 1.0 US, it will present you with a dialog box reporting the version of the StarFox ROM you tried to open, and give a way to open another file.

Go there to the download page for SFX Editor 0.93b for Windows and Mac OS X (or try the older online Shockwave demo v0.8 which doesn't include the new object viewer).

http://membres.lycos.fr/nes3d/SFXed_Download.htm

Documentation is included but you
can read it online there: http://pages.infinit.net/voxel/SFXedit0.93Readme.htm

I would love to add editing of the text found in the game as text for character dialogs, bosses and levels descriptions.

But I would need to find all pointers so that it could be done more easily. It's not my first priority though and since I know many of you here are experimented with finding pointers for text... if anyone is bored enough to find pointers for the text in StarFox, I would be happy to include the feature in the editor. Just to intice you, imagine making Slippy say even sillier things!

(Edits:well I forgot to mention a bunch of things... it's late )


(edited by VL-Tone on 05-28-05 08:25 PM)
(edited by VL-Tone on 05-28-05 08:33 PM)
(edited by VL-Tone on 05-28-05 08:41 PM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 40/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 05-31-05 01:42 PM, in Complete F-Zero tracks images (at last!) Link








Higher resolution versions (2048x1024) can be seen at the urls below. The full resolution would be 8192x4096 but I didn't generate those yet. These would make great posters

http://membres.lycos.fr/nes3d/FZ_MuteCity.png
http://membres.lycos.fr/nes3d/FZ_BigBlue.png
http://membres.lycos.fr/nes3d/FZ_Sand&Silence.png
http://membres.lycos.fr/nes3d/FZ_DeathWind.png
http://membres.lycos.fr/nes3d/FZ_FireField.png
http://membres.lycos.fr/nes3d/FZ_PortTown.png
http://membres.lycos.fr/nes3d/FZ_RedCayon.png
Pages: 1 2 3 4 5 6 7 8 9 10
Acmlm's Board - I2 Archive - - Posts by VL-Tone


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.012 seconds.