Hacker News new | comments | show | ask | jobs | submit login
Hacking Final Fantasy 1 on the NES (walknsqualk.com)
81 points by enrico50 216 days ago | hide | past | web | 14 comments | favorite

I designed and coded the FCEUXD hex editor shown here. I did this back in 2004 when I was a teenager -- built it in C in pure win32 API. It's great to see it still show up when people are hacking NES games.

I remember on my 1.33Ghz AMD machine at the time, it could not draw all of the RAM values in real time without causing considerable slowdown. I rewrote the code so that it only redraws ram values that changed, keeping a buffer of old values and checking for changes.

I also worked on other parts of FCEUXD including creating code/data logger. Parasyte coded the debugger.

hey bbitmaster :)

i remember when you were creating that debugger, long time no see. (what's it been, a decade?) Fceuxd was always the best romhacking emulator, gotta love those conditional break points!

this takes me back to the old days of beta testing, and hanging in #rom-hacking on irc hope you're well :)

Hey Gavin. Of course I remember you, it's been ages but great to hear from you. I would take this to PM but Hacker News doesn't seem to offer such a feature. I currently work in the bay area, in Machine Learning (I only mention it in case you happen to reside in the bay area). Anyway, feel free to e-mail me at my username at gmail.

Good times :-)

The NES Final Fantasy 1 had gobs of bugs. Some of them are very game-changing:

Major ones to know for playing the game well:

* the index in the weapons table is used rather than the value in the table, making later weapons much more powerful and making Axes (lower %hit, higher critical%) useless.

* No secondary effects of weapons work at all

* Intelligence has no effect on spell effectiveness (yet another reason why red-mages are more powerful than they ought to be)

* All enemies are immune to poison.

Interestingly enough, people have created patches for most of the known bugs!


Those older JRPGs really could use some unit testing.

Another one of my favorites is from the Gameboy (original) Final Fantasy Legend. There's a weapon, Saw, which performs an instant kill if it hits. It was supposed to work if your Strength is higher than the opponent's Defense, meaning it could take out random mobs in a single hit, i.e., the usual sort of useless instant kill technique that only instantly kills things that were already not a threat to you. However, the comparison sense is reversed, so it only instantly kills opponents whose defense is higher than your strength.

In particular, you can one-hit the final boss with this: https://youtu.be/bCyToT8jiJ4?t=1m26s As this predates the era of "post-game content" this is supposed to be the hardest fight in the game.


Article author here. Wow, I had no idea the game was so buggy. I just played as a kid and found a couple of the same things out, such as poison not working, but not nearly that many.

Ahh, the times before online updates where committing code meant burning it into ROM :)

Another one I know of is that the agility stat lookup is broken, which severely affects your chances to run from a battle. The character at position 1 looks up the agility stat of position 3, character 2 looks up the stat for character 4, and characters 3 and 4 read garbage data. In effect, this means that characters 3 and 4 have about 1/10 the chance of running away.

> " It does make me feel a bit less inclined to play old RPGs now, knowing that I’m grinding just to increase a few bytse of memory."

Superficially, most games can probably be judged the same way, even physical games like golf etc.

"You mean the main purpose of this game is to get a ball in a hole with as few hits as possible, why would I want to do that"?

or Idle/incremental games: On the surface the whole point is to play the game, just to play the games faster.

Of course we all know that there is far more going on here than meets the eye!

It's true, games are arbitrary.

Musing a bit though, we tend to convince ourselves there is value in our gold coins, exp, etc.

When you get right down to it though they only exist as arbitrary values stored on a computer. If you go in and change them, they can say whatever you want.

I think this is what he means about grinding.

Maybe subsequently the value of a good game isn't the end resulting Pokemon team or character build, but the journey to get there.

That is exactly what I meant.

I love RPGs when they present a new challenge or the story progresses a bit while you're leveling up.

It's just that some of the old RPGs, in particular, would leave you in a spot where you needed to gain a few levels fighting the same monsters, hitting attack over and over, without any real danger to your party, just so you could proceed to the next quest. That part is harder for me to stomach sitting through nowadays.

That's why I like games such as Chrono Trigger: basically no random encounters, you can see and avoid most enemies my running around etc. Most of the value of such games comes from the story. You're interested in how it's going to advance / end. And fights are just a nice addition to see heroes struggle to the end instead of just being passive spectators.

There's an old program, FFHackster[0] that is made just for editing this game. I remember poking around through it and being really impressed at how tightly everything was packed together. Its worth taking a look at because it has a lot of things like level progression, spell strength, etc, completely unwound.

As mentioned elsewhere, there are a lot of bugs and things that weren't quite right, but the overall quality and effort to fit all that on a tiny cartridge is astounding.

[0] http://slickproductions.org/ffhackster.php

Reminded me of Game Genie back in the day. It was always amazing to me, at five years old, that such a device existed.

This kind of stuff is so interesting. Makes sense when it's all laid out in a system.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact