11 March 2016 - Forum Rules

Main Menu

Project: FF7 NES Upgrade

Started by Vanya, December 27, 2008, 10:58:55 PM

Previous topic - Next topic


Project Overview:
The aim of this project is to take Lindblum's FF7 NES translation and make it more FF7-ish. Basically it will be a face-lift project.

*Redraw all sprites in the game to match FF7 better. This will include changing a lot of enemies into those from FF7 instead of FF3. The spell effects could use a face-lift also.
*Redraw all tile sets to match their FF7 locations better. The train station shouldn't look like Castle Sasoon, right?
*Arrange FF7 music and insert to replace FF2 & 3 tunes.
*Any other cool ideas we come up with. ^_^

Vanya > director, digital artist.
Lindblum > Special adviser.

Update (12/14/2009): Lindblum Lives!!
As stated in my last post, Lindblum has gotten into contact with me about he project once more.
He will be providing support in the form of notes and tools he developed for the translation and subsequent enhancements he was working on. Yay!!

I've been slowly working on some new tiles for the game and will have some screen shots up by months end. Huzzah!!

Update (10/28/2009): Project Reset!
After several months of nothing going on here, and much real life happening, I'm back to work on this project.
At this point I'm going to start anew and will be asking for help from anyone that is interested in getting this project done.

I'm going to need help in two particular areas; music and ASM. I still don't know jack about composing, remixing or what not so I will need someone who can down-mix the FF7 music. I'm still learning ASM myself, so I could really use a hand on that end as well. There are some improvements to the games engine and some additional features that will require someone fluent in 6502 ASM. If you are interested in contributing or were on the team before and would like to help out again, please feel free to drop me a PM.

Screen shots for sprite reference
Witch & Nightmare --- BigRat --- Ninja --- Griffin --- Pygman & Naga --- Pteragon

Soldier --- Scorpion

Screen shots for tile reference
NES Platform 1 --- NES Platform 2
PSX Platform 1 --- PSX Platform 2 --- PSX Platform 3


If you want to change the overhead sprites you'll have to do it for every location.  Sprite tilesets appear across the entire ROM, so you'd probably have to search for their tiles' byte sequences to make sure you've found every instance in the file. 
Avatars, enemies, and spells are all coded similarly.  Their tilesets are preceded by data chunks that contain layout maps of tile reference numbers and what I suspect are palette references.  Each object has a local tileset that starts with a local index of 0x00.  Avatars have 4x4 maps.  Spells have three 4x4 contiguous maps to account for their 3-frame animations. 

Please excuse if I'm about to explain things that you already know.

If you have to insert an object larger than the original, then you will need to know how to correct the pointers to all its consecutive objects.  The pointer arrays are almost always at the top of the bank page (a multiple of 0x8000 + 0x10).  These are 2-byte big-endian and point to their corresponding addresses as they appear in the FCEUX hex editor.  $8000-$FFFF is the currently loaded bank of the ROM, so these pointer values will always be above $8000 (The game bank switches by writing the bank# to $5000.  e.g. Soldier tiles are stored at 0x1A00B2, 0x1A0000 = 0x8000*0x34, so it's in bank 0x34).  0x1A0020 is loaded to $8010, and is a pointer to $806B, which is 0x1A007B in the ROM.  The tileset starts at $80A2, so graphic object header is 0x37 (55) bytes.  Notice the 4x6 pattern grid starting at 0x1A0082 (actually I don't understand every byte in there yet).  Since this is the first enemy in the game, play around with 0x1A007B-0x1A00B1 (header) and 0x1A00B2-1A0221 (tiles)  to learn to manipulate its appearance.  Palette references are around the end of the header.  They let you change palettes of 16x16 blocks of the sprite.

Understand all the above and you're pretty much set to figure out the rest.
Confidence is the feeling you have before you understand the situation.


Cool! Thanks for all the info. I'll start looking into what needs to be changed. Meanwhile if anyone has any specific ideas to contribute please feel free to post them here. ^_^

Dr. Mario

I'm on my wii right now so I can't post them, but I have some mugshots you could use if you wanted
What is a man? Baby don't hurt me, don't hurt me, no more.



Dr Mario sent them to me once. Unless he has new ones, they're:

Here's something that should help guide you with all the other avatars:

I've noticed that enemies have 2 4-byte palettes stored right inside the header, using the standard NES color values.  They start with 0x0F (as the black color).  There are some bytes before the palettes that affect the way the palettes are deployed to the tiles, but I didn't find a pattern.

Let me know if you need savestates.
Confidence is the feeling you have before you understand the situation.

Dr. Mario

Those would be them. I'll check out the file you posted to see if I can't do anything with the rest of them.

2nd draft of all of them
What is a man? Baby don't hurt me, don't hurt me, no more.


Twilight Translations - More than just Dragonball Z. :P


Those mugs are sweet, dude! Nice work.

I'll begin work on the tiles on Jan 2nd.

I'd start today, but I'm hosting a new years part and have to fix my place up.

I'd start tomorrow, but I'll be nursing a hangover. ^_^


"I was going to edit graphics, but I just played Tetris all day because I was high!"


Will the patch go onto the original ROM or the translation?  If for the translation you'll have to specify upon release which version of the translation it patches to.  I'm going to replace some mugshots with better SRW mugshots by the time I'm through.  At this pace it looks like v1.00 may be ready for unveiling in just a couple of weeks.  It probably makes little difference as long as IPS overwrites instead of XOR's the data.
Confidence is the feeling you have before you understand the situation.


Random Notes
Palette for the first area is at $81335
Every area has it\s own tileset. It's crazy! All the shops each load a different tileset! :S

Sprite doodles to be added later:


@Lindblum: I think I should make this for your translation and I was going to wait for v1.0 to be released at least before inserting any graphics. ^_^

@Darkdata: Thanks for that. And please, if you find any more data that could be helpful to this project feel free to post it! ^_^

Dr. Mario

What is a man? Baby don't hurt me, don't hurt me, no more.


My attempt at it:

Some notes:
It seems like each area uses it's own palette too. The Palette is repeated 3 times thought the rom. (Well, that area's palette).
For added fun, the textbox tile palette is shared with the roof tiles palette (hence the reason it's only simple)
I can't seem to find the tile assembly (meta-tiles) searches for them with wxyz, and wyxz orders do not find them. Could they be compressed?
I tried to copy Dr. Mario's style, unfortunately I still have quite a bit to learn. :P

Dr. Mario

Wow, I really like that. I'm thinking about maybe starting to mess around with some ideas for enemy graphics. I think maybe Reno shouldn't look like some sort of mythical god creature...

Think this might be too big?

This is how the mugs would ACTUALLY have to look color wise. (The blue is a lot harsher than it actually looks in an emulator)
What is a man? Baby don't hurt me, don't hurt me, no more.


Great work so far guys.

I love that Safer Sephiroth!

I would like to eliminate any trace of FF3 enemy graphics.

Dr. Mario


I dunno, I'm playing with it.

Cleaned this up some, and added color.
What is a man? Baby don't hurt me, don't hurt me, no more.

Dr. Mario

What is a man? Baby don't hurt me, don't hurt me, no more.


He looks a bit stiffer than the first one. Maybe spread his legs a little and bend the knees a bit to give him a more natural look. Also, don't forget to bend the tip of the sword downward.  There's also something 'wrong' about how he's holding the sword, but I can't pinpoint it. Good start though! ^_^