News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

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 - Lindblum

Pages: 1 2 [3] 4 5
Personal Projects / Re: Project: FF7 NES Upgrade
« on: March 04, 2009, 05:23:50 pm »
I have sequenced (short versions of):
Ahead On Our Way233Good
Those Chosen by The Planet319Painful
Chocobo Theme214Decent
Main Theme in progress...

//I've noticed that in my document the bytes don't match up with the right notes.  I must've accidentally stepped on the equation while working on the document. 

G :D :D D NEWS: I miscalc'd before, I think I was looking at the wrong ROM bank.  We've got over 8,700 bytes of free space!  We can fit 20 more songs easy!  On the down side I should head backwards to rework my dinky loops into fuller songs. 

Personal Projects / Re: Project: FF7 NES Upgrade
« on: March 03, 2009, 01:27:36 pm »
Found more info. 
All songs start with "FF 00 __ __ 01 __ __ 02 __ __ 03 __ __ FF"
00-03 seem to be channel indexes, and the 2 bytes after them are the bigendian addresses of those channel streams relative to the song's root address.  That's super important. 
After the song header comes the header of the first channel, which is a series of opcodes and values that I hope tummai can figure out (I'm pretty sure "D8 __" sets the pitch shift).  Then there's the actual melody block (notes, note lengths and rests), followed by the D0 repeat byte. 

By my calculations for FF3 Boss, each of the 4 channels add up to exactly 624 ticks, so I think we can synchronize channels without much trouble! 

Once the other channel header opcodes are figured out (C4, C7, CC, CD, DB, DE), we've got this code cracked!

The bad news is, I calculate we only have enough room for about 3 or 4 more songs (about 400-500 bytes each).  I'm all for destroying a few present songs to fit in better ones, even if they're truncated versions. 

Songs I'm considering:
Prelude   //Already present
Tifa's Theme
Red XIII's Theme/Cosmo Canyon
Cid's Theme
Aeris's Theme
Chocobo Theme   //Short version from FF2j
Turks Theme   //Could use little mem
Fighting/Hurry Faster!   //Battle music
Still More Fighting   //Boss battle music
JENOVA/Jenova Absolute
The Birth Of A God/One Winged Angel
Victory Fanfare   //Already present
Bombing Mission/Mako Reactor
Shinra Company
Main Theme/Holding My Thoughts In My Heart
Those Chosen by The Planet   //Could use little mem
You Can Hear The Cry Of The Planet
Anxious Heart/On That Day, 5 Years Ago
Ahead On Our Way   //To maybe replace town music
Underneath The Rotting Pizza   //Could use little mem
Off The Edge Of Despair
Gold Saucer
Judgment Day
The Promised Land (Yakusoku no Chi)

Personal Projects / Re: Project: FF7 NES Upgrade
« on: March 02, 2009, 03:02:53 am »
I've noticed $6E00-$6E01 happens to store the address of the current song.  This address is loaded from $C7-$C8 (dynamic music pointer).  Set an execution breakpoint at $9DAD to watch this pointer get set when the song changes.  Yadda yadda yadda, the song pointers are stored at 0x1B8B2:
   MusicPtrLo = $B8A1 + 2*Index
   MusicPtrHi = $B8A2 + 2*Index
It looks like there are 12 repetitive pointers for Rebel Army at the end of this array, so I bet we could turn those into pointers to new songs :laugh:

At 0x6156($E146-$E1EB) is a list of song indices.  Each index represents a location, and its value is the song to be loaded.  For example:
   $E146==05   World Map is FF2 Rebel Army
   $E170==03   Kalm is FF2 Town
   ...Don't bother figuring out the rest, I have most of that done already.
You can set an execution breakpoint at $E12B to see where a song Index is loaded from.

Personal Projects / Re: Project: FF7 NES Upgrade
« on: March 02, 2009, 01:30:39 am »
I was only able to find 8 songs:
   01   FF* Prelude   0x1B8DD($B8CD-$B9??)
   02   Unident. Town   0x1B9DF($B9CF-$BB??)
   03   FF2 Town   0x1BB78($BB68-$BC??)
   04   FF2 Main Theme   0x1BC76($BC66-$BD??)
   05   FF2 Rebel Army   0x1BDEB($BDDB-$BF??)
   06   FF2 Battle   0x1BF73($BF63-$C1??)
   07   FF3 Boss   0x1C21B($C20B-$C4??)
   08   FF* Victory   0x1C470($C460-$C6??)

Personal Projects / Re: Project: FF7 NES Upgrade
« on: February 27, 2009, 01:05:23 pm »
I think if we have the MIDIs (they're easy to find), we can look at the tracks in something like Anvil Studio, and transcribe the notes by hand.  The songs aren't THAT long.  If you find out how to call a song, then it might be worth adding the Chocobo theme, and I'd insert the code to call it when mounting a chocobo, and to call the default music when dismounting.  Another thing I should've done is document every song in the game (they don't use as many as should), find their approximate address ranges, and have an ordered list of tracks, which will become useful for figuring out how to call songs by index. 
Figuring out notes, loops and timing is all great, but it's useless if we don't know what's going to be enough to add additional tracks, even if it's a small "Hello World" ditty. 

Here are some savestates to help jump around the game.  I play 3 identical ROMs so I can use more states. 

Personal Projects / Re: Project: FF7 NES Upgrade
« on: February 27, 2009, 12:35:00 pm »
I'm glad you were able to understand my file and give us this info so quickly!  I believe i we figure out how songs are indexed and how they're called, we can figure out how to add a few new songs from FF7 and FF7AC (I don't think Anxious Heart or Yakusoku no Chi would digitize very well).  It's quite clear they put the minimal effort in this soundtrack.  If we change battle songs I'd like to make them faster to distract you from the tortoise-like gameplay (which I wish I could figure out how to accelerate). 

Hey, do you know how to rip/insert an NSF for this?  Would that make it easier to work on?  I only have failed experiences in music hacking. 

ROM Hacking Discussion / Re: FF7 NES Chinese Translation
« on: February 27, 2009, 10:29:40 am »
I've slacked off the project for close to 2 months now, but I've had an unfinished improvement in my hands all along.  I'll give it to you today.  It's mostly an improvement on the dialog from the 7th Heaven scene, Kalm backstory exposition dialog, the Cloud&Tifa Lifestream scene, and pretty much the entire ending (I can't believe how much they had it screwed up).  I rearranged the final bosses to include Jenova (with new graphics), and hacked it so Cloud fights Sephiroth alone.  Bosses still have insane HP (I've never seen HP loading coded so complicated). 

To think there was a time when I though I could do the whole thing in 2 weeks!

Here are some savestates to help jump around the game.  I play 3 identical ROMs so I can use more states. 

Tip of the day: Cheat $6F62 to 00 to limit bosses to 255HP.

Personal Projects / Re: Project: FF7 NES Upgrade
« on: February 27, 2009, 09:57:23 am »
If you want to give it a try this weekend take a look at this.  I've slacked off this research for almost 2 months, so it's good someone's interested. 

FF7NES-Boss Music.xls
Each line in this file is a chronology of what bytes are loaded from PRG-ROM to play the song, and a there's a guide for identifying notes from byte values, before or after bit truncation (AND #$3F if I recall).  I don't remember what breakpoints I used, but if you know how to use the debugger you can figure it out. 

Watch the following values in FCEUX while the game runs and play with them.  These are a good starting point if you want to study the engine.

RAM Byte Adresses:
$C7-$C8   Dynamic Note Pointer
$6E54   Square1 (??-3F)
$6E55   Square2 (??-3F)
$6E56   Triangle(?) (??-3F)
$6E57   Noise(?) (??-3F)
$6EAC   Pitch shift
RAM Command Adresses:
$A341   Push note
$A342   Pitch shift
$A345   Truncate to 00-3F
$A347   Set note
$A352   Set note

ROM(RAM) Byte Adresses:
0x1C242-0x1C2B2($C232-$C2A2)   Boss Music Square1 (113B)
0x1C2CD-0x1C339($C2BD-$C329)   Boss Music Square2 (109B)
0x1C34C-0x1C3A9($C33C-$C399)   Boss Music Triangle(?) (94B)
0x1C3BB-0x1C36E($C3AB-$C45E)   Boss Music Noise(?) (180B)
*Don't forget the soldiers at the beginning count as bosses.

The RAM addresses (in parentheses) are the ones you'll see in the xls (where I used 0x instead of $ for Excel formatting reasons). 

I'd like to understand how the headers are set up, and what the control bytes do. 

Tip of the day: Use a cheat to set $6F62 to 00 so Bosses stay under 256HP.  (KFF, to clarify, this zeroes the high byte)

Personal Projects / Re: Project: FF7 NES Upgrade
« on: February 26, 2009, 05:38:32 pm »
I can give you the research I've done on it so far.  I can change notes and keys, but beyond that it's got me quite confused.  Tonight I'll look for my Excel file where I tried to break apart and figure out the boss battle song (it also plays when you fight the soldiers at the beginning).  I'll root for your success. 

Personal Projects / Re: Video demo of my untitled platform homebrew game
« on: February 10, 2009, 02:38:06 pm »
This may not be the fairest question to ask of such a project, but... in what time frame might there be a ROM?  Gimme Gimme Gimme, I WAAAAANT IT!!!

Personal Projects / Re: Video demo of my untitled platform homebrew game
« on: January 25, 2009, 09:41:34 am »
Congratulations, you really are the guy! :thumbsup:

Personal Projects / Re: Project: FF7 NES Graphics Upgrade
« on: January 11, 2009, 03:47:09 pm »
Admittedly I hardly know enough about programming ROMs for NES. I assumed I could merely arrange any piece from FFVII in 8-bit style in FamiTracker, export an NSF of such piece, send it your way, and everything would be alright.  Is this still a possibility?
I already have FF7 MIDI's, and can transcribe the note sequences to byte values, but that's far from being enough to insert custom music.  SliverX is probably the guy who best understands NES music hacking.  So far I can only find where to find a track sequence in RAM and ROM.  I don't know how they're addressed, synchronized, or how the control bytes work.  I'd also like to know how and where songs are indexed, so that we can tell events to point to new songs.  It's shameful they didn't even implement the chocobo music. 
Just a few months ago I knew zilch about using the FCEUX debugger.  Now it's the best way I can figure out how to figure things out. 
I can give you a little demonstration of what the music looks like.  Open the ROM and look at 0x1C242-0x1C2B2. This is the Boss Music Square1 Track.  You'll hear it in the 1st fight of the game (2 soldiers).  It starts out:
Code: [Select]
6B 6C 68 65 64 65 68 6C 6F 6E 6A 6D 0C 6C 06 68 C9
G# A  F  D  C# D  F  A  C  B  G  A# A  A  D# F  F#
Brandish your favorite instrument and jam it out.  You can throw your own notes into there and become a step closer to being a 'music hacker'.

Personal Projects / Re: Project: FF7 NES Graphics Upgrade
« on: January 10, 2009, 01:13:53 pm »
Astos, Kraken, Lich, Beelzebub, Malboro, Iron Giant, Planktae, and Scylla didn't have to look at the party. Maybe they thought they were too good to make eye contact with the enemy, or just wanted to break the 4th wall.

If anyone is more motivated to do the music than I, the music RAM starts around $6E00.
$6E54 Square1 Note (??-3F)
$6E55 Square2 Note (??-3F)
$6E56 Triangle (?) Note
$6E57 Noise (?) Note
This will help you use the debugger to find where the notes from each stream are loaded from.  I think $A2FB LDA's Square1 notes.
15, 1B, 27, 33, 3F are all for C notes, so you can figure out your scales from there.
I keep forgetting there are 2 battle themes; the random battle theme (FF2j battle theme), and the boss/scripted battle theme (FF3j boss theme (makes me think of dancing clowns somewhy)).

Edit: I haven't been able to rip a working NSF from the ROM.

ROM Hacking Discussion / Re: FF7 NES Chinese Translation
« on: January 04, 2009, 12:45:44 pm »
If I wanted to challenge myself I could try swimming from Montauk to Gibraltar.  Every aspect of this project was a challenge.  Everything is coded around a 7 person team, I can't expand it to 9.  Maybe I could possibly look into map formats to see how they encode NPCs.  Then I could add a guy who wants to know where to buy a phone, a girl who wants to steal your materia, and a guy that are sick. 

ROM Hacking Discussion / Re: FF7 NES Chinese Translation
« on: January 02, 2009, 07:52:23 am »
Good finds, people.  I'm not sure what to do about the flower issue.  Maybe Cloud is just really giving in this version.  Anyway, now that I understand how the game loads arrays of dialog from multiple memory banks the next patch will have better elaborated Kalm and Lifestream scenes, and the ending will actually be in sequence (They really messed it up).  Now that I'm able to make the Cloud/Tifa Lifestream dialog closer to authenticity, I'll probably give up the Crisis Core reference that I threw in.  Instead of 3 Sephiroth fights it will be Jenova and 2 Sephiroth fights, and I coded it so Cloud faces the last fight alone.  I'll be happy if I can make him super strong or implement an Omnislash (loop the attack function until Sephiroth dies). 

Personal Projects / Re: Project: FF7 NES Graphics Upgrade
« on: December 31, 2008, 04:50:23 pm »
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.

ROM Hacking Discussion / Re: FF7 NES Chinese Translation
« on: December 31, 2008, 01:30:30 am »
What part of the ending?  The very end is just
a black screen with a paged text box that says "之后...世界上再也没有人听过魔晃炉这东西...现出前面的是远处的一片森林.青葱的森林下,勉强还可看出,那是早已被人们忘记的废弃的都市...米德加.一排白鸟振翅飞过天空,发出嘹亮的叫声..."
I have a better ending in mind.
If you want screenshots they are already out there.

Personal Projects / Re: Project: FF7 NES Graphics Upgrade
« on: December 30, 2008, 02:28:34 pm »
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.

Personal Projects / Re: Project: FF7 NES Graphics Upgrade
« on: December 28, 2008, 01:01:01 am »
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.

ROM Hacking Discussion / Re: FF7 NES Chinese Translation
« on: December 27, 2008, 06:42:45 pm »
Alright, you deserve to hear what gameplan I have.  First off, the patches I've posted are alphas or 0.xx versions, just to invite opinions and feedback.  I do not intend them to be the version you play for real.  When I actually release I will call it v1.0, and give it a more public release. 
The translation itself is good as done, but I'm running through the game to find mistakes, mine and Nanjing's.  Right now I'm:
* Rearranging spell graphics
* Restoring dialog absent from the original file (bar scene, ending)
* Assessing the unfairness of boss HP
* Learning about the sound engine (though I might not actually do much about it)
* Seeing if I can figure out how to speed up the timing
* Doing minor fixes to the battle PPU engine
* I should also try to fix the buggy buggy (for some reason it's hard to get into the river buggy)
* The ending is F.U.B.A.R. to say the least, so I'm taking responsibility for making it passable (That's the biggest priority)

Killa B,
As for an ETA I'm not sure you can trust me there.  Back in August I thought this would only take me a few weeks, until I realized this was going to be more than a matter of replacing Chinese with English text.  Frankly, I want to be free of this project within 3 weeks.

Any further changes I make to graphics might make complications with a facelift project, though I still invite it.  There's just a weirdness to the concept of me redrawing spells, only to have them redone again by the next team.  I rearranged the spells of each materia to have a more logical flow, but their graphics are still the same.  Among other things, I want to change the highest level spell of each materia to have the appearance of a summon (has to be 32x32).  If you want to discuss a facelift project I would suggest making a new thread so I can twink over all my knowledge.

P.S. I only finally beat the game an hour ago.  :beer:

Pages: 1 2 [3] 4 5