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
Heian-794

Red Super Koopa
Level: 44

Posts: 97/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-11-04 01:00 AM Link | Quote
100 posts in the F-Zero hacking derby! (many made by me as my job has lots of downtime)

VL-Tone, is the car obeying the rules (i. e. not driving over empty space) when you change its next checkpoint?

Is there a way to show all these 7Exxxx values while the emulator is running, or do you have to pause it and look for cheats each time? If so, I admire your patience!

I will mess around with the graphics a little more and try to get the Stonehenge course looking a little better.

Majin, your sound stuff is excellent and far beyond my abilities. If you've got some SPCs, let us hear them!
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 14/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-11-04 07:33 AM Link | Quote
The car doesn't obey these rules and will drive in a straight line to it's destination point,
even over empty spaces outside the track. But like I said I'm trying to figure out the details,
if you force the car to drive at a specific angle that is not towards the next checkpoint,
it will bounce of barriers like your car.

As for displaying ram values, I know that for me SNES9x Custom for *cough* mac *cough* can
show a ram value on-screen while you play, in hex or decimal and from 1 to 4 bytes long. I don't
know if SNES9x on other platforms does the same thing, but I'm sure some Windows snes emu
can do the same and probably with more options. Maybe someone here could tell which one(s).
I can run the DOS version of zSNES but I didn't find a way to display ram value in the emu screen.

I'm using different techniques to find these values, to find the checkpoint counter, I ran the cheat
search at various points in the race, looking for values that were higher than the last sample.
Eventually I got down to a dozens of bytes, and by putting them as watch points so they are
showing on the snes screen, I quickly found that one value cycled from 0 to 3A and back to 0
when the car made a complete lap. Since the value was incremented at various time intervals,
it was clear that this counter had to do with checkpoints. Then when I patched the value it
comfirmed that this was it.

I didn't try to find the actual point list since ( I had to go to work until 9:30pm), but I'll start again
after this post. I'm thinking of doing a program that draws paths from a list of 16-bit X and 16-bit Y
values. The program will take the values from the f-zero rom at successive adresses while hoping
to find a track path pattern.

EDIT:
Dang I found the cars A.I. path data in WRAM!!!!!

At $7E11FE in wram the X data is stored in 16-bit chunks.
And at $7E1467 in wram the Y data is stored again in 16-bits chunks.

Look at these pictures (in .png format) of the Mute City I car path.
They were done using a custom tool I made for the occasion.
The map on the background was made with Tyler's set of panels, but half are missing.

http://membres.lycos.fr/nes3d/MuteCityPath_HighByte.png
http://membres.lycos.fr/nes3d/MuteCityPath_16bits.png
http://membres.lycos.fr/nes3d/MuteCityPath_Fixed.png

-->The first one is drawn only using the high bytes of the data.
-->The second one is using the 16-bit value as normal, note the weird zig-zags this introduce.
-->And the last one is using inverted low bytes (FF-xx) and it seems to correct most anomalies.

Now the data can be found and extracted from savestates, but I cannot find it in ROM.
From what I concluded, the data is built when loading the track by adding a series of values
to the starting positions found at around $16200 in ROM. That explains why the path
of other cars is relative to the starting pos value. You can see that the first values at
$7E11FE and $7E1467 are the same as the starting pos in ROM. Just before each starting
pos values after $16200 in ROM are the checkpoint counts, which is 3A for Mute City I.



(edited by VL-Tone on 06-11-04 06:17 AM)
Heian-794

Red Super Koopa
Level: 44

Posts: 100/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-11-04 05:12 PM Link | Quote
VL-Tone, we'll soon have some more tracks on which to test new AI!

I was editing Death Wind I/II and managed to make a track that will still
run normally whether you select course I or II.

The original DW looks like 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

And my version looks like this:


29880

13 14 15 15 16 18 18 19 18 19 18 19 18 19 18 18 18 19 18 19 18 19 18 19 18 19 18 18 1d 1e 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
0e 00 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
0e 00 01 02 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
0e 00 03 04 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
0e 00 0e 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
0e 00 0f 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
0e 00 11 12 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
0e 00 13 14 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 08 09 08 09 05 05 05 0a 0b 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 00 00 00 0c 0d 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 00 00 00 00 10 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 00 00 00 00 1b 1c 00 00



But since the track loops in all four directions, you might get a better view by
shifting one row upward:

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
0e 00 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
0e 00 01 02 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
0e 00 03 04 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
0e 00 0e 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
0e 00 0f 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
0e 00 11 12 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
0e 00 13 14 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 08 09 08 09 05 05 05 0a 0b 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 00 00 00 0c 0d 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 00 00 00 00 10 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 00 00 00 00 1b 1c 00 00
13 14 15 15 16 18 18 19 18 19 18 19 18 19 18 18 18 19 18 19 18 19 18 19 18 19 18 18 1d 1e 00 00



This features the regular DW opening, then the fork which leads to DWI (my
greatly expanded course) or DWII (intact). Taking the regular route, we find
that the power strip has been replaced by a turn to the east (on the game map,
that is) and another loop around.

Some things to notice:

I filled the back stretch, both directions, with boost panels, but none of them
function. This is normal when you try to go across a boost panel the wrong way
(as opposed to FZ Maximum Velocity or Falcon Densetsu, where the boost panels will
boost you "forward" no matter where you're facing). Since boost panels are composed
of 8x8 square tiles and half-filled square tiles, I had assumed that the forward
arrow shape was just a design, but now I'm thinking that the game must be keeping
track of which direction these panels "face" in.

Previous hacking with panel layouts resulted in tracks where you'd go right through
the wall if it wasn't one of the predetermined walls. This time, the outer wall
of the new backstretch functions, but the inner wall doesn't, and will pull your
car right into the "infield" and blow you up.

This track looked perfect on paper, but the 02-15 connection isn't seamless -- the
track is off by about three tiles. You can still drive across undamaged, though.
If I can iron out the flaws here, I'll get a patch ready. So far I haven't edited
the background at all.


(edited by Heian-794 on 06-11-04 08:13 AM)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 15/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-11-04 06:01 PM Link | Quote
I tried your DW hack, neat

The problem with the walls you can go through seems to be related to checkpoints.
The rival cars seems to behave the same way (what I described is now even clearer to me).

When you face a checkpoint you can go foward thru walls it seems, which is not a problem
normally because the checkpoints are arranged on the track in a perpendicular way to the sides.
So in the normal game you never have to face a wall and the next checkpoint at the same time.

Without changing the chekpoints paths anyway editing seems to be pretty limited for now.
I'm guessing that the checkpoints are also used by the game to see if you are going reverse.

Edit: also the boost panel direction is probably related to the same checkpoints.


(edited by VL-Tone on 06-11-04 09:06 AM)
Heian-794

Red Super Koopa
Level: 44

Posts: 101/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-11-04 06:38 PM Link | Quote
Given that boost pads (I'll use this word rather than "panel") only work in certain directions, perhaps the rule for them is not "increase speed a lot", but rather "fling the car at top speed towards the next checkpoint"?

Also, when you do go through a wall and int empty space, the car is definitely being pulled strongly towards something.

I wonder how Fire Field, and its only-one-in-the-game multiple path (towards the end) is handled, checkpoint-wise? One of my ideas for a new track -- the original idea which made me want to hack F-Zero to begin with -- was a grid-like city layout with some roads having boost panels and jumps, and others taking shortcuts but having nothing (or rough).

Once I figured out that boost pads had directions associated with them, I tried putting them right before 90-degree turns, forcing the driver to either intentionally miss them or somehow execute a "bounce off the wall and make a sharp tuen" maneuver.

The "REVERSE" takes a second to kick in sometimes, but other times you get it almost immediately. I'm betting that passing one of the checkpoints in reverse order triggers it.

Wouldn't Death Wind be an ideal track to test for checkpoints? It has a nice smooth layout.
firemaker

Level: 26

Posts: 44/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-12-04 10:31 PM Link | Quote
death wind maye be easy to see but i doubt that the checkpoints will be just as easy to find. think about it. almost nothing is gonna have a value of 00 00. its gonna take some massive corrupting
EDIT so if the A.I data is stored in the RAM where does it get the commands to say which point is a checkpoint? it would have to be somewhere in the rom. if we can crack this i reckon we are ready to start building an editor. but i cant seem to find any bytes that relate to the xy point.


(edited by firemaker on 06-14-04 12:43 PM)
Heian-794

Red Super Koopa
Level: 44

Posts: 103/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-15-04 08:53 AM Link | Quote
Firemaker, I'm guessing that someone with some real talent at using Evil Peer's tracker might be able to dig out the addresses that the game looks up when matching car positions with checkpoints.

Looking at the track layouts for the ever-instructive F-Zero II, Mute City has a similar course and thus probably has the same checkpoint layout, as does Big Blue II and Silence II. But the Sand Storm courses are brand new.

Also, has anyone ever found the byte that triggers the wind that blows on DW I and II, and also Sand Storm?
WolverineDK
Newcomer
Level: 4

Posts: 3/6
EXP: 248
For next: 31

Since: 01-20-05

Since last post: 8 days
Last activity: 5 hours
Posted on 06-03-05 01:12 AM Link | Quote
Heian-794: did you want an old bump here it is and please spank me moderators, since i have been bad at bumping.
Heian-794

Red Super Koopa
Level: 44

Posts: 696/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-03-05 01:49 AM Link | Quote
Thanks Wolverine; this is just what we needed!

VL-Tone has made some big discoveries in F-Zero and they won't make sense without the proper background, much of which is stored here. Good thing Acmlm doesn't purge old topics like, say, GameFAQs does!

Anyway, those of you who were wondering what VL-Tone and I were on about in his thread (regarding "row data") can look here; all is explained!
Violent J

Melon Bug
Level: 41

Posts: 402/749
EXP: 479154
For next: 991

Since: 05-05-04
From: The Lotus Pod

Since last post: 8 hours
Last activity: 8 hours
Posted on 06-03-05 06:31 AM Link | Quote
Supposed to be a link on those heres?
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.019 seconds.