News: 11 March 2016 - Forum Rules

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - halkun

Pages: [1]
Personal Projects / Re: Final Fantasy VII NES Project
« on: July 26, 2011, 12:07:09 pm »
I'm using the same mapper. I have a linker coonfiguration that can generate a 2mb rom with mapper 163

Personal Projects / Re: Final Fantasy VII NES Project
« on: July 25, 2011, 09:22:01 pm »
Good news everybody!

I now have my NES toolchain up, and in the process of reversing and recoding the original FF7NES rom. I've *just* began, so the only thing I've got is a working memory model and a scant bit of the initialization code, but it's compiling forward and backwards. I'm gonna try and pull some help from the team and star getting this in my wiki. The faster I can get the original code disassembled, the faster I can re-code the bits to make the engine better.

Personal Projects / Re: Final Fantasy VII NES Project
« on: July 23, 2011, 03:02:26 am »
I'm working with the NesDev guys to get a good engine template going. My first mission when I get the toolchain set up is to redo the menu. I want to make this (Within reason) pretty on par with the PSX FF7 experience, with materia-slotted weapons and armor and such. I'm  pretty sure I will be cutting some of the more nuanced materia combos that require battle scripting and wait states. But should land about 80% of it.

Keep hacking the current rom though. The idea is to be able to import what you guys did into a better engine.

Personal Projects / Re: Final Fantasy VII NES Project
« on: July 22, 2011, 03:28:54 am »
I've been out experimenting...

After digging in the code, I have discovered that it just might be easier to recode the mess in a new ROM. The internal engine just too different for a re-balancing. The up side is that I can try and keep the data compatible to that all that needs to be done is an import of the maps. I'm laying out the kernel and the Menu module now, after that comes field, event, and then battle. I have the code to FF1 so I can borrow stuff from that. I'm looking into a good mapper to get things going.

Personal Projects / Re: Final Fantasy VII NES Enemy Graphics
« on: July 17, 2011, 07:48:31 pm »
We will have to make our own cart. The stats, BTW are held in save ram. I found them and in the process of mapping them out.The level/experience curves are WAY off from the original. The stats such as strength and spirit and such as derived from the level. The level goes up to 255 (Maybe higher). The original FF7 goes up to 99

Normally in a final fantasy game, all variables are maintained by the Menu module. This looks to be no different. Once I map the savemap and get a good feel for the menu module, it can be rewritten. The stats are normally kept in a "Kernel" module, but it may be different here.

As soon as I map clouds experience curves, I'll see if I can't find the look-up table for his stats and then cap his level to 99

I have discovered that there are no experience curves. The experience is a simple linear progression. I'm calculating the slopes now.

==EDIT 2==
Ok, here's the growth "curves" put together by yours truly...

Str = (2.9*level)+9
Vit = (2.54*level+9
Int = (3.22*level)+9
Spr = (3.22*level)+9
Agl = (2.5*level)+9
Exp = (50*level)+250

In the actual FF7, the experience curve is quadratic and the HP growth is mapped. Oh well, Battle needs to be rewritten anyway. I'm working on menu for now.

==Edit 3==
Savemap mapping. The saves start at $6000 in the nes. You can alter these bytes, get into the menu and see the changes.

(This is ram address inside the NES while it is running)
60C1 (byte)      Cloud Max HP lo
60C8   (byte)      Cloud Max HP hi
604A   (byte)      Cloud Cur HP lo
6051   (byte)      Cloud Cur HP hi
602C   (byte)      Cloud Countdown
602E   (3 bytes)      Gil
6074   (byte)      Cloud eqipped weapon
6043   (byte)      Cloud Level
607B   (byte)      Cloud Equiped Materia
6059(byte)                Cloud equipped headgear
605f (byte)                Cloud equpped armor
6066 (byte)                Cloud equpped bracer
606D (byte)                Cloud equpped accessory

Here's a quick run down equipped items of what I found.

Weapons (6074 - cloud)

00 - Nothing

01 - Buster
02 - Mythryl
03 - Hard
04 - Butterfly
05 - enhance
06 - Organic
07 - Crystal
08 - force
09 - Rune
0a - Murasam
0b - nailbat
0c - Yoshiyu
0d - Apocaly
0e - heaven
0f - Ragnrok
10 - ultima

11 - Gatling
12 - Assult
13 - Cannon
14 - Atomic


Magic (607b - cloud)

00 - Nothing
01 - Fire

Everything below 60D0 or thereabouts is the inventory. I don't have written down what slot is what but you add values to somewhere in that area and it put that number of that item in your inventory

There is much more, if you open the hex editor in fecux, you can change the memory directly, get out, get back in again and see what you changed, you can also equip/deeqip slots and see memory locations too.
I'm going to bed now...

Personal Projects / Re: Final Fantasy VII NES Enemy Graphics
« on: July 17, 2011, 06:08:38 pm »
How do you divide 0x021493 by 0x4000? My calculator gave me 5.37325

Those are both hexadecimal numbers. You have to divide in hex, not decimal. There are 128 banks numbered 00 to 7F, however, it appears that the game is banking in two banks together when it does a state switch, so it just might be 64 banks of 32K. Still the same amount of data. However, my guess is it's still banking in the upper bank randomly for data access.

There is a bright side, with all this open space, it's pretty roomy to add things. I mean look at the title screen :)

Personal Projects / Re: Final Fantasy VII NES Enemy Graphics
« on: July 17, 2011, 05:19:04 pm »
I'm noticing. Can someone post the offsets to the music?, also where is the map matrix data proper? Where does each map "stop" and "start"

Also where in earth are the character stats held? I need to max my stats so I can run through the game once. This game is massively stupid on difficulty.

Personal Projects / Re: Final Fantasy VII NES Enemy Graphics
« on: July 17, 2011, 05:09:03 pm »
Here is what I have as a general overview....
Code: [Select]
bank 00 - field
bank 01 - field
bank 02 - Title Page graphics
bank 03 -
bank 04 - event
bank 05 - event
bank 06 - dialog
bank 07 - dialog
bank 08 - Battle code
bank 09 - Battle code
bank 0a -
bank 0b -
bank 0c -
bank 0d -
bank 0e -
bank 0f -
bank 10 - Chinese characters
bank 11 - Chinese characters
bank 12 - Chinese characters
bank 13 - Chinese characters
bank 14 -
bank 15 -
bank 16 -
bank 17 -
bank 18 -
bank 19 -
bank 1a -
bank 1b - menu
bank 1c - menu
bank 1d -
bank 1e - Menu graphics
bank 1f - Water graphics at bottom
bank 20 and on --- Map graphics with unknown data (field data?)

to get a bank number you take the offset and divide it by $4000. For example, 0x021493 divided by 0x4000 is 8, which means that data is confirmed to be in the battle section.

Personal Projects / Re: Final Fantasy VII NES Enemy Graphics
« on: July 17, 2011, 04:33:03 pm »
Wow, this is tough, they seem to compact the stat data.

The battle module is self contained (yay) and can use a rewrite. The menu system is also self-contained too. I'm having difficulty finding out where the game is pulling it's player/enemy stats from. They seem to be compressed.

Because of the Chinese text, there is a lot of wasted PPU memory. Actually, I'm really shocked that the graphics are as good as they are. The map only uses about10% if it for backgrounds. That should be closer to 50-70%

The text is 1BPP That's fun

Personal Projects / Re: Final Fantasy VII NES Enemy Graphics
« on: July 17, 2011, 01:47:49 pm »
Sure, can you post the offsets here and what they are?
I only have the raw Chinese rom. I have a 99% english patch I have not applied yet.
If you can generate an IPS of what you have so far against the original chinese ROM so I can see what has changed?

Personal Projects / Re: Final Fantasy VII NES Enemy Graphics
« on: July 17, 2011, 12:17:43 am »
Hey there -- This looks VERY interesting...

I was thinking of lending a hand. I have been taking apart FF7 for the last 10 years. I'm a mod over at another FF7 hacking website. I can give you the entire ins and out of the whole FF7 system. I'm also quite fluent in 6502, so if you need code, I can do that too. I want to get started as fast as possable...

1) I'm not familiar with mapper 163. I have the code for it, but I need to know  what the initial bank configuration is and the address and sizes of the bank switches. (for example 4K or 8K). I can figure this out on my own if need be.

2) I'm assuming that the game uses 1M PRG and 1M CHR (wow!) We'll need to separate the banks and get rid of the iNES header to get a clean dump and start picking though the data proper.

3) I need addresses of where everything found is. I can then put it in my wiki and start digging

4) Any FF7 PC/PSX resource you need I have available. In the PSX version, the battle formations an in a file called "scene.bin" that I can decrypt and give you the complete battle formation/enemy loadout for the game.

5) There is no 5

6) Initial game stats and experience growth curves are a file called "Kernel.bin" that I can also decrypt for you as well.

7) I have reversed large chunks of FF1 myself, and have access to another complete source code rewrite. There is a large likelihood that FF7nes is it's own code, but i can guess that similar code and design philosophies is used in this game too. If I can unlock it, I can get you a better menu and hopefully a better battle module. (Multiple materia would be rad!)

Post here ASAP. My tools are at your disposal. :)


After picking at the ROM,  The bank configuration is 2 PRG banks of 16K at a time,  top being at $8000-$BFFF and the bottom being at $C000-$FFFF. Each individually bankable. The reset vector points to $FFC0 which has a stub to reset/launch the game. On the bottom banks I've seen, they all have this stub, so it's easy to pick which ones bank high and low. I'm Assuming the CHR banks are banked directly into the PPU. I'll research more. I'll probably write a script tonight to split the banks so I can see what is what and label them directly.

==EDIT 2==
HOLY CATS! This system does not use any CHR rom at all  and has 128 banks of 16K PRG rom. This means that code and graphics can intermix, which makes mapping it a little tougher. Just an update...

==EDIT 3==
Ok, I split the original Chinese rom. I have found some interesting things. First, this a very poorly optimized program. There are hundreds of kilobytes that are sitting unused. If I didn't know any better, I would say this was probably compiled with a C compiler. Secondly, It appears that rom banks might be used as stand alone 16k files. It appears that each map is stand-alone after bank $20 or so. I see map tiles and mapmen repeat over and over again at bank boundaries.  This means that it will be pretty easy to make a map editor that can edit one map as a whole. It also means that the text and event data might also be self-contained. Maybe. I need more information on where things are located.

Also there is 64k (4 banks) of chinese character graphics that can be deleted and re-purposed for something else.

Pages: [1]