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
1 user currently in Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - f-zero track hack | |
Pages: 1 2 3 4 5 6Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
firemaker

Level: 26

Posts: 33/247
EXP: 94178
For next: 8097

Since: 03-23-04
From: UK berkshire

Since last post: 17 days
Last activity: 11 days
Posted on 06-04-04 01:54 PM Link | Quote
Originally posted by Heian-794
Majin, I can only hear the first four seconds! Are you sure you uploaded the whole thing?

3C600 - 3C7FF White Land; someone else discovered this





that was nestie who discovered white landf anyway im gonna have a fiddle around with red canyon
Heian-794

Red Super Koopa
Level: 44

Posts: 25/896
EXP: 611014
For next: 271

Since: 06-01-04
From: Kyoto, Japan

Since last post: 21 days
Last activity: 10 days
Posted on 06-04-04 04:20 PM Link | Quote
Greeeg, schoolwork is bogging me down, but I will get a website up one of these
days! Fortunately there are boards like this one where people can share info!

Tyler (creator of that nifty track layout PNG creator), if you're out there, how did you
get the pictures of the panels? Do you know how to decipherr the raw code that puts
the little tiles together to create the 32x32 panels? That's the holy grail as far as
F-Zero track hacking is concerned!

I also posted this at DES: latest update!

------
I wanted to post an example of a track layout so everyone can see how simple it is.
The only thing you need to do is make your hex editor 32 bytes wide!

Look at this:


29880

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01 02 05 06 05 05 05 05 05 05 05 05 07 05 05 05 05 05 05 08 05 09 05 08 0a 0b 00 00 00 00 00 00
03 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 0d 00 00 00 00 00 00
0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00
0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00
11 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1b 1c 00 00 00 00 00 00
13 14 15 15 15 16 17 18 18 18 18 19 18 18 18 18 18 18 18 19 18 18 1a 18 1d 1e 00 00 00 00 00 00
00 00 00 00 00 00 1f 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 27 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 21 22 23 23 24 25 00 00 00 00 00 26 23 23 23 24 28 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 27 00 00 2a 2b 24 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 29 23 23 2c 2d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00



See the track in there? It's Death Wind, and since the background is the same for
the whole course (00=grassland), this one's easy to decipher!

Other bytes that can be figured out readily are 06 (boost panel on track going to the
right), 07 (starting line), 08 and 09 (rough on one side), 19 (boost panel goung left),
and 15 (pit area). The other bits in the 20s are the ones used in Death Wind II.

Wondering if the gibberish between track layouts is used to define the tiles, I thought
that the number of different panels used in a given course might be proportional to the
length of the code for that course, but this doesn't seem to be the case:

Corrected Data -- in fact, the tile data comes after the panel layout


Track Track Start-End -- Other Code -- Length/HiBlock
------------ ----- - ------------- ---- --
Big Blue 1A180 - 1A37F -- 1A380 - 1E6DF... 4360 ??
Silence/Sand 1E6E0 - 1E8DF -- 1E8E0 - 257FF ... 6F20 96
Port Town 25800 - 259FF -- 25A00 - 2987F ... 3E80 5E
Death Wind 29880 - 29A7F -- 298A0 - 2C18F ... 2710 2D
Red Canyon 2C190 - 2C38F -- 2C390 - 3059F ... 4210 90
Fire Field 305A0 - 3079F -- 307A0 - 36ACF... 6130 69
Mute City 36AD0 - 36CCF -- 36CD0 - 3C5FF ... 5930 5D
White Land 3C600 - 3C7FF -- 3C800 - ????? ... ???? B3



"HiBlock" is the largest byte seen in the track layout; presumably the number of
panels created for that course. The length is the number of bytes (in hex) in the code
preceding the track. All tracks are $200 bytes long.

It has occurred to me that this problem with the walls is due to having more than one
course per layout, and that maybe F-Zero 2 would be a better hgame to hack. I want
to hack that game's cars in anyway!

More to come, and excuse the Acmlm/DBS cross-posting!


(edited by Heian-794 on 06-04-04 07:21 AM)
(edited by Heian-794 on 06-04-04 11:45 AM)
(edited by Heian-794 on 06-04-04 11:45 AM)
(edited by Heian-794 on 06-05-04 07:02 AM)
firemaker

Level: 26

Posts: 35/247
EXP: 94178
For next: 8097

Since: 03-23-04
From: UK berkshire

Since last post: 17 days
Last activity: 11 days
Posted on 06-05-04 12:52 PM Link | Quote
damn that is really good because im lookinbg at mine in colums of 16

also how come you could copy and paste the data this is what happens when i try to 



 !$%()(,0145"#&'*+*-././236789>?BCFHI:;<=@ABDEGJKLOPSBBUVWX^MNQRTBBYZ[\]^_`fBij


that is white land. its really pissing me off so how do you do it


(edited by firemaker on 06-05-04 04:32 AM)
Heian-794

Red Super Koopa
Level: 44

Posts: 35/896
EXP: 611014
For next: 271

Since: 06-01-04
From: Kyoto, Japan

Since last post: 21 days
Last activity: 10 days
Posted on 06-05-04 10:33 PM Link | Quote
Firemaker, I use Translhextion and had to select "export as hexdump", then manually
delete the line numbers and the text interpretation of the hex. Why Translhextion
forces you to copy all that garbage instead of plain old hex, I'll never understand.

Also don't forget the HTML code "tt" (teletype) to make all the characters the same
width. This'll make things really easy to read.

Anyway, it's time for an update!

A mediocre one, as you'll soon see...

So we've established that the track layouts are grids of $20 x $10 panels, with the
data that forms the panels stored below the track. But since each panel is $20x$20
tiles, how can they cram them all in there? There aren't enough bytes between each track.

Let's look at Big Blue, since it has the advantage of having only one "background"
panel, namely the blue ocean stored at 00. The track data is as follows:


1a160

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 01 02 02 02 02 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
04 05 08 08 08 08 08 08 09 08 0a 0b 0b 0b 0b 0c 0d 0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
06 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 10 11 12 00 00 00 00 00 00 00 00 00 00 00 00
13 07 00 00 00 00 00 00 00 00 00 00 17 18 1b 1c 1f 20 22 23 24 25 27 28 00 00 00 00 00 00 00 00
14 15 16 00 00 00 00 00 00 00 00 00 19 1a 1d 1e 21 00 00 00 00 26 29 2a 00 00 00 00 00 00 00 00
00 2b 2c 2d 00 00 00 00 00 00 31 32 35 36 00 37 38 39 00 00 00 00 3c 3d 00 00 00 00 00 00 00 00
00 00 2e 2f 30 00 00 00 00 00 33 34 00 00 00 00 3a 3b 00 00 00 00 3e 3f 00 00 00 00 00 00 00 00
00 00 00 40 41 42 43 00 00 00 46 47 00 00 00 00 3a 3b 00 00 00 4d 50 51 00 00 00 00 00 00 00 00
00 00 00 00 00 00 44 00 00 45 48 49 00 00 00 00 4a 4b 4c 4c 4e 4f 52 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 44 00 00 54 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 53 00 55 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 58 5a 5b 5e 5f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 59 5c 5d 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 61 62 63 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00



Let's imagine that the next 32-byte line in the code is used to create panel 00. We
see that it consists of "BE 71 BE 71..." until the end of the line. Note also that the
lines below this also frequently contain BE 71. Maybe this corresponds to plain blue
ocean?

Try filling this line with something else -- my first stab was C4, which is a jumble of
some barrier parts and a single tile of plain track.

Replacing *only* the first two bytes with C4 results in a single line of left
barrier part / empty track and then another line of two different barrier parts.

You can see this in a vSNES screenshot here:

http://www.geocities.com/tuffydabubba/bigbluepanelC4andBE71.png

So this implies not only that each byte in the code corresponds to a horizontal line
of 32 tiles, but also that the same byte doesn't necessarily produce the same tiles
every time!

Does anyone have any ideas on how to work this out?


(edited by Heian-794 on 06-05-04 01:34 PM)
Nestea

Goomba
Level: 8

Posts: 11/20
EXP: 2185
For next: 2

Since: 03-15-04

Since last post: 85 days
Last activity: 53 days
Posted on 06-06-04 12:53 AM Link | Quote
Wow... I can't believe how much F-Zero is being hacked these days. I must say that I'm impressed with the status.

First, I did edit the palette using a palette editor. It's called SNESPal. It's got 255->32 conversion, easy searching, and easy editing.

Oh, and I've found an old document of mine that I forgot to put up!

16200+ - Start Positions
17000-17D00 - A.I.?

I haven't tested them recently, so I don't know if the above is correct. The bottom, however, is correct:

16329 - Knight 1 (Mute City I)
1632A - Knight 2 (Big Blue)
1632B - Knight 3 (Sand Ocean)
1632C - Knight 4 (Death Wind I)
1632D - Knight 5 (Silence)
1632E - Queen 1 (Mute City II)
1632F - Queen 2 (Port Town I)
16330 - Queen 3 (Red Canyon I)
16331 - Queen 4 (White Land I)
16332 - Queen 5 (White Land II)
16333 - King 1 (Mute City III)
16334 - King 2 (Death Wind II)
16335 - King 3 (Port Town II)
16336 - King 4 (Red Canyon II)
16337 - King 5 (Fire Field)
16338 - Practice 1 (Mute City I)
16339 - Practice 2 (Big Blue)
1633A - Practice 3 (Sand Ocean)
1633B - Practice 4 (Death Wind I)
1633C - Practice 5 (Silence)
1633D - Practice 6 (White Land I)
1633E - Practice 7 (Port Town II) (Title)
1633F - Practice 8 (White Land II)
16340 - Practice 9 (Fire Field)

C3 - Port Town I
C4 - Death Wind I
C5 - Red Canyon I
C6 - Fire Field
C7 - Mute City I
C8 - White Land I
D7 - Mute City II
E0 - Big Blue
E1 - Silence
E2 - Sand Ocean
E3 - Port Town II
E4 - Death Wind I
E5 - Red Canyon II
E6 - Fire Field
E7 - Mute City III
E8 - White Land II
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 2/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 06-06-04 01:06 AM Link | Quote
Wow the holy grail! Let me have it

I don't know if it has been mentionned elsewhere (well actually when I finished writing this post
I found Heian-794 was on the right track) . Anyway since this thread was running with only basic
discoveries (things I figured out long time ago), I'll share what I've found with you (after all it's the
old acmlm board that got me interested in ROM hacking, in the SMB2 Discombulator days).


Here is what I discovered:
The format is actually very close to the Zelda 1 overworld data.

Like mentioned before there is a 200 bytes meta map of 32x16 track parts or panels (let's use
this term for clarity) making up the whole track.
The panels are themselves made of 32x32 8x8 tiles.

Now HERE IS HOW THE 32x32 TRACK PANELS ARE STORED IN F-ZERO: Columns... or
actually rows

Each row is 32x2 tiles and 16 of them are needed to fill the 32x32 panel. The row is referenced
by a 16-bits pointer so each panel definition data is taking up 32 bytes.

As an example:

9E 70 30 75 F2 91 F2 91 F2 91 F2 91 F2 91 F2 91 F2 91 F2 91 F2 91 F2 91 3E 7C 06 78 FC 9F 92 77

is the starting line panel in Mute City (at 7F5140 in RAM and 15E93 in a ZST).

This data is somewhere in the ROM and is compressed... BUT... it is decompressed in RAM
starting at 7F5000 and in a ZST savestate from 15C13 to 16B93. Finding the row pointers for a
specific panel simply involve adding 32 bytes X the panel number to the base address. Just
before that are 2 versions of the 200 bytes 32x16 track map. As you may know, if you try to edit
these maps in the ROM, they end up being patched at a few places by the game depending on if
you are on Mute City I or II for example. From what I saw it seems the two RAM versions are
already patched versions of the I and II track.

So the first row of the starting line for Mute City is at 7F5140 in RAM and at 15E93 in a ZST
savestate. Note that this base address is the same for all tracks and the data content will change
when you switch tracks in games and for the ZST state it depends on when you saved it.

The 16-bits row pointers works this way: Let's take the first row from the starting line panel in
Mute City. It's value is 709E (9E70 in the data), the 709 will point to one of the row, and the E
will actualy shift the data in 2 (8x8 pixel) tiles increment so you can position barriers ect...
at 16 different positions for each row. My explanation is probably confusing, but its really simple:
If you skip 16 bytes increments you will skip full rows, if you skip less than 16 (let's say 8) you
will end up in between 2 rows, which can be very usefull and is used all over the game and the
row data is designed accordingly. A level editor would probably include a way to "scroll thru" the
row data in one or 16 bytes steps while you edit. Some usefull features could include shifting all
the rows from a panel at the same time (by dragging the mouse over them) so you can align the
whole road with other surrounding panels.


Now for the unconfirmed stuff:
The data defining each row , is probably using single bytes macro tiles like zelda did to describe
each 4x4 tiles forming the 16x16 pixels tiles referenced by the column definition data. This part is
still experimentation for me, but I'm almost sure that the row definition data in F-Zero is starting
at hex 38620 in the ROM, and that it's 16 bytes for each visible 32x2 tiles row, and uncompressed.

Back to mostly confimed stuff:
The list below is an overview of the range of row types used in Mute City. As I discovered, if you
try values outside of this range in Mute City (for example 500x) you'll mostly end up with garbage
rows, they are rows for other tracks with the wrong graphic set. Each track can only access a
set of rows but some rows are shared by multiple graphic sets it seems, I didn't map those out
yet, but it clearly looks like the whole row data ranges from 0000 to FFFF (64k), which means a
whopping 4096 different 16 bytes rows are available in F-Zero, and actually with the 16 bytes
shifting it's about 65 000 different combinations!


-----Row pointer range for Mute City----
404x 407x 40Bx 414x 417x 41Ax 41Bx 424x 429x 42Ax 434x 43Ax 444x 447x 449x 44Ax 44Bx 454x 706x 707x 708x 709x 70Ax 70Bx 70Cx 717x 718x 71Ax 727x 729x 72Ax 72Bx 737x 739x 747x 748x 757x 759x 767x 768x 769x 76Ax 777x 778x 779x 77Bx 787x 789x 78Cx 797x 798x 799x 79Bx 7A7x 7A9x 7AAx 7ABx 7ACx 7B7x 7B8x 7B9x 7BAx 7C7x 7C8x 7C9x 7CAx 7CBx 7D7x 7D8x 7D9x 7DAx 7DBx 7E4x 7E8x 7E9x 7EAx 7EBx 7F7x 7F8x 7F9x 807x 808x 809x 80Ax 80Bx 817x 818x 819x 81Cx 824x 827x 828x 829x 82Bx 837x 838x 839x 83Ax 844x 847x 848x 849x 84Ax 857x 858x 859x 85Ax 85Cx 867x 868x 86Bx 874x 877x 878x 879x 87Bx 888x 889x 88Ax 897x 898x 899x 8A7x 8A8x 8A9x 8B7x 8B8x 8B9x 8C8x 8CBx 8D7x 8D8x 8D9x 8DBx 8E7x 8E8x 8E9x 8EBx 8F7x 8F8x 8F9x 908x 909x 90Ax 917x 918x 919x 91Ax 91Bx 927x 928x 929x 92Bx 937x 938x 939x 93Ax 947x 948x 949x 958x 959x 95Ax 964x 967x 968x 969x 96Ax 96Bx 977x 978x 979x 97Ax 97Bx 988x 989x 98Ax 998x 999x 99Ax 9A7x 9A8x 9A9x 9AAx 9B7x 9B8x 9B9x 9C7x 9C8x 9C9x 9CAx 9D8x 9D9x 9DAx 9E4x 9E8x 9E9x 9EAx 9EBx 9ECx 9F7x 9F9x 9FAx A07x A08x A09x A0Ax A0Bx A19x A1Ax A1Bx A24x A27x A2Ax A37x A39x A3Ax A47x A49x A4Ax A54x A57x A58x A59x A5Ax A5Bx A5Cx A6Ax A6Bx A74x A77x A79x A7Ax A84x A87x A8Ax A97x A98x A99x A9Ax A9Bx AA7x AA8x AA9x AAAx AABx AB7x AB8x AB9x ABAx ABBx AC9x ACAx ADAx ADBx ADCx AE9x AEAx AEBx AECx AF4x AF7x AFAx AFBx AFCx B07x B0Ax B0Bx B19x B1Bx B1Cx B28x B2Ax B2Bx B2Cx B34x B37x B38x B39x B3Ax B3Bx B48x B4Ax B4Bx B57x B58x B5Ax B5Bx B68x B6Ax B6Bx B7Ax B7Bx B7Cx B8Bx B99x B9Bx B9Cx BAAx BABx BACx BB8x BBAx BBBx BBCx BC7x BCAx BCBx BCCx BDAx BDBx BDCx BE7x BEBx BF8x BFBx C08x C09x C0Ax C0Bx C0Cx C17x C18x C19x C1Bx C1Cx C27x C2Ax C2Bx C2Cx

One last thing try these cheats: 7E0BB0:1A 7E0D51:80 7E0BB1:00 7E0BC0:6F
they enable your car to go everywhere on the track map including outside the road without being
harmed, loads of fun!

That's pretty much what I have for now...I hope I didn't make any big mistakes.
I'll let you speculate about what we could do with this...


Metroid Cubed, Zelda Cubed, 100 Marios and other NES related Shockwave silliness are at:
http://pages.infinit.net/voxel/home.htm




(edited by VL-Tone on 06-06-04 08:59 PM)
Nestea

Goomba
Level: 8

Posts: 12/20
EXP: 2185
For next: 2

Since: 03-15-04

Since last post: 85 days
Last activity: 53 days
Posted on 06-06-04 01:28 AM Link | Quote
Okay, I've found stuff for F-Zero II.

1602C - Ace 1 (Mute City IV)
1602D - Ace 2 (Big Blue II)
1602E - Ace 3 (Sand Storm I)
1602F - Ace 4 (Silence II)
16030 - Ace 5 (Sand Storm II)
16031 - 1603A - Queen & King Data (Unused)
1603B - Practice 1 (Mute City IV)
1603C - Practice 2 (Big Blue II)
1603D - Practice 3 (Sand Storm I)
1603E - Practice 4 (Silence II)
1603F - Practice 5 (Sand Storm II)
16040-16041 - Practice 6 & 7 Data (Unused)

C3 - Sand Storm II (with Port Town I music and map)
C4 - Death Wind I (with Mute City IV track)
C5 - Red Canyon I (with Mute City IV track)
C6 - Sand Storm I
C7 - Mute City IV
C8 - White Land I (with Mute City IV track)
D7 - Mute City II (with Mute City IV track)
E0 - Big Blue II
E1 - Silence II
E2 - Sand Storm II (with Sand Ocean music and a blank map)
E3 - Sand Storm II
E4 - Death Wind II (with Mute City IV track)
E5 - Red Canyon II (with Mute City IV track)
E6 - Sand Storm I
E7 - Mute City IV (with Mute City map)
E8 - White Land II (with Mute City IV track)

Replacing Ace I with C4, C5, C8, D7, E4, E5, and E8 is amazing. Try it. Now.


(edited by Nestea on 06-05-04 04:33 PM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 4/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 06-06-04 02:03 AM Link | Quote
Damn I'm stupid at times... I'm sure I verified that the data i found in RAM describing each panels
with 16 rows, was not also in the ROM...uncompressed

It seems that it's actually uncompressed just after the 32x16 maps!! Exactly where Heian-794
was fiddling around! (I found the horizontal line format before I read the post though) So just take
my other post, and apply it to $36CD0 in the ROM instead of the RAM and ZST offsets.


This is too cool! I thought that we would have to crack down the compression format and all... or
make a ZST track editor... But no, a good old ROM track editor will do!

Now forget the $38620 address for row tile definitions... it's actually part of the panel data....

I guess the row tile definition is compressed in RLE somewhere in the ROM because its at least
64k uncompressed with many tiles repeating.

Metroid Cubed, Zelda Cubed, 100 Marios and other NES related Shockwave silliness are at:

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

VL-Tone
---Everything counts in large amounts---

(Edit: found out that the $38620 address meant nothing )


(edited by VL-Tone on 06-05-04 05:06 PM)
(edited by VL-Tone on 06-05-04 05:15 PM)
(edited by VL-Tone on 06-06-04 08:59 PM)
Keitaro

Iron Knuckle
ウラシマ ケイタロウ
Level: 54

Posts: 377/1342
EXP: 1201569
For next: 32301

Since: 03-15-04
From: Hinata, Japan

Since last post: 2 days
Last activity: 2 days
Posted on 06-06-04 02:29 AM Link | Quote
haha....finished a few more F-Zero X songs and starting now on Port Town I'll post some more up later....anyone else check out the SPC? I have an updated version, also will go up after Once I figure somthing out, I can make room for the strings sample I wanna add and do the Staff Roll. It's such a neat diverse song :O
Heian-794

Red Super Koopa
Level: 44

Posts: 38/896
EXP: 611014
For next: 271

Since: 06-01-04
From: Kyoto, Japan

Since last post: 21 days
Last activity: 10 days
Posted on 06-06-04 02:07 PM Link | Quote
VL-Tone and Nestea, that is some fantastic analysis; I'm going through it right now
and testing various F-Zero II courses with different track graphics. I'll continue
fiddling with it and will post any discoveries. One thing I wanted to share was some
info about the 8x8 pixel tiles. They're stored in Genesis format in the ROM, with a
two-dot separator between each of the 256 possible tiles (meaning that you can't see
all of them at once in TLP).

I posted this on DES already, but will re-post it here. All numbers are in decimal,
since that's how vSNES gives them.


Regular straight side barriers (formed by circles):

0 top left part of side barrier, driveable track on outside
1 top right part, driveable track on outside
2 bot. left part, driveable track on outside
3 bot. right part, driveable track on outside
8 top middle of barrier
9 bottom middle of barrier

52 top left part, black wall on outside
53 top right part, black wall on outside
54 bot. left part, black wall on outside
55 bot. right part, black wall on outside

Angled side barriers (lots more to get here):

108, 60, 30 straight-to-upper-right angled sequence top part; black outside
9, 135 bottom part of that

45-degree diagonal conbinations:

000 001 ... ... ...
054 051 147 ... ...
... 125 104 150 ... <- track on SE side; wall on NE side
... 127 128 048 001
... ... ... 054 051

052 053 ... ... ...
002 103 123 124 ...
... 149 104 126 ... <- track on NE side; wall on SE side
... ... 152 100 ...

014 015 140 141
068 069 070 071 <- NW-SE curve 30-degrees; track above
114 115 118 119

066 067 116 117
016 017 018 019 <- Same, but with track below
138 139 142 143

Other track elements (these are from Mute City):

105 pure black space; seen outside the barriers
154 ordinary gray track

167 rough
169 bottom left rough
170 bottom right rough
171 top left rough
172 right rough

154 174 154
172 206 173 <- remnants of a mine; 154 is regular track
154 175 154

185 pit area

194 lighter track

200 201
202 203 <-landmine


City/landscape outside the track (love this stuff!):

216-219 four corners of a circular rotating thingy
222 regular road far below the F-Zero course, horizontal
223 same road, vertical
232-233 other smaller roads (horiz, vert)
234-235 again w/other border
236-237 glowing line (MC; palette is metal gray in Port Town)

241 badge-like thing
242 glowing dot; green in MC2, magenta in MC3
244-247, 251-2 miscellaneous junk

These later ones are different in Port Town:

235 black space
238-246 purple elements
247-252 green forest elements



This means that the combination (converting to hex now) with $34 (52) and $35 (53)
on top and 02 and 03 on the bottom forms a barrier with track on the bottom and
black wall on the top. You'd have 16 such groups forming a full panel-wide barrier,
then maybe many rows of all $9A (154) or $E2 (194) (two different forms of plain
track), then a row full of $00 - $01 - $36 (54) - $37 (55) squares to form the lower
barrier. I'd love to be able to relate the raw data to these numbers.

FZII has some really nice tracks, plus some elements (jump panels as walls in
Silence that I'd love to incorporate into a new game.

One problem with making a new game out of FZII is that the ROM is glitchy;
sometimes it doesn't run, and S9X and ZSNES each have their own emulation errors
(specifically, SNES9X doesn't load the horizon backgrounds correctly -- Silence in
particular looks awful -- and ZSNES thinks that the default time is 6'56"56 instead of
9'59"99). While I really like the five courses that that game offers, the four cooler and
more balanced cars, and all the empty space in the ROM, it would take some
heavy-duty hacking talent to put new tracks in that empty space and point to them
correctly. So an FZII hack might be limited to five tracks.

I have several ideas for new tracks and will try to produce a preliminary patch using
them as soon as I can make what I want to make out of the panel data. Have any of
your figured out why the number of 32-byte strings of data doesn't match with the
number of panels used in each course?

Edit -- could some of you put line breaks into your posts, or remove some of the really long lines, so that we don't have to scroll to the right so far just to read each line?


(edited by Heian-794 on 06-06-04 05:10 AM)
Nestea

Goomba
Level: 8

Posts: 13/20
EXP: 2185
For next: 2

Since: 03-15-04

Since last post: 85 days
Last activity: 53 days
Posted on 06-06-04 08:25 PM Link | Quote
The badge-like thing is a booster and the glowing dot explodes... I thought you knew that!

The FZII ROM is also rather glitchy on me, except that it's not that much glitchy. The only problems I've encountered with my FZII ROM (BS F-Zero 2 (J)) is that there is no title screen and the default time is 6'56"56... although they MIGHT have put in that on purpose.
Heian-794

Red Super Koopa
Level: 44

Posts: 47/896
EXP: 611014
For next: 271

Since: 06-01-04
From: Kyoto, Japan

Since last post: 21 days
Last activity: 10 days
Posted on 06-07-04 12:27 AM Link | Quote
Nestea, mine has a title screen, and the 6'56"56 time only occurs with ZSNES (for me).

I was under the impression that the game we call "F-Zero 2 (J)" was actually hacked together using the original BS F-Zero games (there were three; King, Ace, and something?) Or was that ROM a regular game?

Do the horizon backgrounds load correctly for you in SNES9X?

If the badge thing is a booster, can I jump off the track in Mute City, land on it, and get another booster? ;

greeeg

Micro-Goomba
Level: 7

Posts: 7/15
EXP: 1320
For next: 128

Since: 06-03-04
From: France

Since last post: 503 days
Last activity: 339 days
Posted on 06-07-04 01:15 AM Link | Quote
in the goodsnes set, there are:

BS F-ZERO (J) 524 ko
BS F-ZERO Ace League (J) 1048 ko
BS F-ZERO Grand Prix 2 (J) 1048 ko
BS F-ZERO King League (J) 1048 ko
BS F-ZERO Knight League (J) 1048 ko
BS F-ZERO Knight League (J) [a1] 1048 ko
BS F-ZERO Queen League (J) 1048 ko

and that's it...
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 6/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 06-07-04 01:50 AM Link | Quote
Sorry about the long lines, I didn't know it was a problem for some of you, I have no problems
seeing all the lines even at 800x600.

Heian-794 very cool data you have there. I'm not sure what you are talking about when you
say the graphic data for the tiles are in genesis format in rom with a two-dot separrator.
For some reason I don't have access to all of the Windows tools like tile layer pro,
I can use DOS utilities though, I hope you can still see me as helpfull I used BGMapper
to view and copy the tile graphic data, and with one of it's mode, they all show sequencially
with no trace of a two-dot sepparator (do you mean 2 bytes?), and in the same order you
describe. BGMapper opens ZST states so maybe the sepparator is not kept when copied
to RAM. Bgmapper also have the very usefull ability to show and save the whole Mode-7 graphic
plane (that include like 9 panels, some partial), and that's how Tyler extracted the panels
graphics. If he didn't automate the process, it probably was very time consumming.

Now using the same method, but creating new panels for the starting line for example.
Those panels would be made of the numerical sequence of rows usable in that track.
For example at first we would generate a panel with:
0040 1040 2040 3040 4040 5040 6040 7040 8040 9040 A040 B040 C040 D040 E040 F040
That would cover all the possible rows between $4000 and $40F0, 16 different rows.
If we generate panels for all possible rows in Mute City, by modifiying a ZST, that would
make around 90 different panels to do. If we modifiy all the panels visible in a "scene"
from bgmapper we could get around 4 (probably more) panels showing a total of 64 different
rows for each mode-7 plane. By saving the graphics for all these planes we would end up
having the graphics for all the possible rows for a track, and we could make an editor just
from that without having to crack the row definition format.

That's actually how I did my own never finished Zelda 1 overworld editor years ago.
But yes it would be ideal if we had the row def format, but I'm not sure editing the rows
would be so simple as they are used all over the game and it would be hard to track down
what is being affected by a change on a single row. Anyway the 4096 possible rows with the
shifting can generate tens of thousands of possibilities, that should be enough i guess...

I thought the $20x$2 rows were made of 2x2 (not 4x4...) TSA macro tiles, well guess what,
I think I found where this data is (or maybe it's full row data but it doesn't look like it).
I found it by searching for a $9A $9A $9A $9A sequence.

This 2x2 tile definition starts at $64580. The 4 tiles have to be drawn in this order:
top-left, down-left, top-right, down-right. The format seems to be more complicated than
that since some macro tiles have a broken parts. and the data seems to be offseted at
different places as you progress thru the data. Because tiles can be from $00 to $FF they
couldn't fit extra data, so maybe some table elsewhere govern the way this data is read,
enabling mirroring of 2 tiles to form a 4 tile macro tile and things like repetition
and rotation of tiles.

Anyway I'll let you look at it and try to figure it out.

I used a custom tool to build these examples, the first one is from $64580 to $645AF.
These are drawn four 8x8 pixel tiles at a time using the order I mentioned, 16 of them
sequencially from left to right. Though some data seems to be arranged in row like
fashion, I don't think its all the raw data for all the rows since it would take much more
space than that.

I looked all over the ROM and didn't find any other data that produced structured 2x2 tiles.
There are much more good results than these examples though starting at $64580.


















As for F-Zero 2, aside from the problems you have mentionned, one of the problem is the
rarity of this rom. Another problem is that most people wanting a F-Zero editor want it for
nostalgic reasons. Since not too many people ever had a BS system, it would limit the appeal
and people would end up requesting one for F-Zero 1 anyway. So F-Zero 1 should be our
priority, and F-Zero 2 as an extra. Anyway do whatever you feel, if F-Zero 2 makes you
work harder to crack it, go ahead


Metroid Cubed, Zelda Cubed, 100 Marios and other NES related Shockwave silliness are at:
http://pages.infinit.net/voxel/home.htm

VL-Tone
---Everything counts in large amounts---


(edited by VL-Tone on 06-06-04 05:22 PM)
(edited by VL-Tone on 06-06-04 09:00 PM)
(edited by VL-Tone on 06-07-04 11:00 AM)
greeeg

Micro-Goomba
Level: 7

Posts: 8/15
EXP: 1320
For next: 128

Since: 06-03-04
From: France

Since last post: 503 days
Last activity: 339 days
Posted on 06-07-04 02:49 AM Link | Quote
[quote=VL-Tone]As for F-Zero 2, aside from the problems you have mentionned, one of the problem is the
rarity of this rom. Another problem is that most people wanting a F-Zero editor want it for
nostalgic reasons. Since not too many people ever had a BS system, it would limit the appeal
and people would end up requesting one for F-Zero 1 anyway. So F-Zero 1 should be our
priority, and F-Zero 2 as an extra. [/quote]

I totally agree... Moreover, BS Fzero cannot be launched on real hardware via snes copiers (wildcards...).
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 8/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 06-07-04 06:35 AM Link | Quote
I'll just add that people currently experimenting with F-Zero 2 like Heian-794 shouldn't stop,
continue your great work

Most of the things found in FZ-2 will also apply to FZ-1. And comparing could help us understand both games.




(edited by VL-Tone on 06-07-04 10:59 AM)
d4s

Panser
Level: 29

Posts: 34/325
EXP: 142151
For next: 5734

Since: 03-23-04

Since last post: 13 days
Last activity: 1 day
Posted on 06-07-04 12:45 PM Link | Quote
fzero 2 does work on copiers.
the problem is that there are multiple fzero 2 roms out there
and there is always some confusion which rom works and wich one doesnt.

the roms that only display the picture with the robot and the instructions
are waiting for input from the satellaview system but this waitloop can be bypassed easily with the zsnes debugger(sorry, forgot the actual offset but i can track it down again if somebodys interested) wich makes the rom display some nifty 8bpp fullscreen images and a selfrunning demo, however, i wasnt able to enter gameplay-mode.

plus, the fzero2 roms are practically the same as fzero1, with an added intro picture and slightly changed tracks.
most offsets are even the same in both roms (car sprites, mode7 tiles etc).

VL-Tone:
your info is really great, saved me lots of time searching around. =)
have you also searched for the pointertables to all the data sets?
from what i saw, it used 2byte pointers.
ok, the data isnt compressed, so there isnt any real need to move the data around or expand the rom, but you can atleast be sure you didnt miss any data if you have them.

regarding the mode7 tiles:
they are CERTANLY not in genesis format,
the point here is that the snes mode7 format is (opposed to the usual tile-based graphics) a raw-bitmap format, relatively similar to the format the genesis uses.

the 2byte you mentioned are most likely palette-information, thats used to expand the graphics to 8bpp in vram.






(edited by d4s on 06-07-04 03:48 AM)
greeeg

Micro-Goomba
Level: 7

Posts: 9/15
EXP: 1320
For next: 128

Since: 06-03-04
From: France

Since last post: 503 days
Last activity: 339 days
Posted on 06-07-04 12:51 PM Link | Quote
I'm quoting Nestea:

"1633F - Practice 8 (White Land II)
16340 - Practice 9 (Fire Field)"


These two levels can be played in practice !?
I remember ten years ago in a magazine, there was an action replay code to play them... Anyone knows more about it ?
Nestea

Goomba
Level: 8

Posts: 14/20
EXP: 2185
For next: 2

Since: 03-15-04

Since last post: 85 days
Last activity: 53 days
Posted on 06-07-04 01:15 PM Link | Quote
They can be played in practice mode. Here are some codes:

7E005307 - Practice Level Selection Always White Land II
7E005308 - Practice Level Selection Always Fire Field

EDIT: MAJOR BREAKTHROUGH!

16206 - Big Blue Starting Position X
16207 - Big Blue Starting Position Y
16211 - Sand Ocean Starting Position X
16212 - Sand Ocean Starting Position Y
1621A - Silence Starting Position X
1621B - Silence Starting Position Y

In this information, the XY is for the actual code. If you're thinking about the ingame map, then it should be YX. Also, this effects the A.I. routes.


(edited by Nestea on 06-07-04 04:55 AM)
(edited by Nestea on 06-08-04 02:12 AM)
firemaker

Level: 26

Posts: 41/247
EXP: 94178
For next: 8097

Since: 03-23-04
From: UK berkshire

Since last post: 17 days
Last activity: 11 days
Posted on 06-07-04 03:26 PM Link | Quote
in what wayb does it affect the A.I??? Or is the actual A.I data stored somewhere else because even if we create a f-zero editor the A.I will b just like in mario kart which doesnt look so good.
Pages: 1 2 3 4 5 6Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - f-zero track hack | |


ABII


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



Page rendered in 0.022 seconds.