News:

11 March 2016 - Forum Rules

Main Menu

Final Fight SNES Restoration Project

Started by Grego, January 16, 2019, 11:16:27 AM

Previous topic - Next topic

Grego

Yesterday it occurred to me that Final Fight for SNES may have some secrets, such as two player support, I decided to investigate and the results speak for them self:



After some reverse engineering of the code and a few minor hacks I was able to enable two player support.

For those that are interested here is the code, works with CRC32(0x4CAB21DB) Final Fight USA and xkas06. I dumped my own cart, not sure how common this version of the game is, sorry.


lorom

org $01a643 ; (original code - ldx #$0d00, jsr $a542, phx, pld)
JML hijack_player_init

org $01a57b
RTL

org $01a651
RTL

org $01a5f2
NOP
NOP

org $00ca67
ldy #$0112

org $00c9ea
JML hijack_player_sim

player_sim_hook:
jsr $cc45
jsr $cfd3

RTL

org $208000

hijack_player_sim:
rep #$20
lda #$0d00
tcd
sep #$20

JSL player_sim_hook

rep #$20
lda #$0d80
tcd
sep #$20

JSL player_sim_hook

JML $00c9f8


hijack_player_init:
LDX #$0d00
JSL $01a542

PHX
pld

JSL $01a64b

ldx #$0000
phx
pld

LDX #$0d80
JSL $01a542

PHX
pld

JSL $01a64b

ldx #$0000
phx
pld

JML $01a656


And here is a link to a very quick disassembly with minimum comments:

https://pastebin.com/PNiGy6aQ

Player two can walk around, but he shares vram space with player 1 currently so moving either character corrupts the other.  There is no hit detection for player two yet, nor can player two advance the stage.  However I believe both of these issues are resolvable with a few more minor hacks.

I would like to propose a restoration project for Final Fight SNES.  Add full two player support, fix industrial area, add guy to the roster, and remove slowdown. 

As the game already has the tile data for industrial area we just need to demake the area's arcade graphics. Guy support is partially built into the game already, porting him over from Final Fight guy shouldn't be too hard. Slowdown may be solvable by switching to fast rom, it may need additional work optimizing code, not sure yet.

Just wanted to get this out there, if anyone would like to help with the project with either graphics or code please let me know.

-Grego

Edits: Added disassembly pastebin and CRC32, removed palette test code
UltraNet SNES Network Adapter: https://twitch.tv/ultranetsnes
F-Zero Final v0.2 Teaser: https://www.youtube.com/watch?v=UzmOP23_F6A
F-Zero Final Github: https://github.com/originalgrego/FZeroFinal

SCD

#1
This sounds like a awesome project.

I can help by changing the names of some of the enemies, bosses & items back to their original uncensored names.

I was wondering if you're planning to do all this stuff to your project:

Decensoring the entire game to make it more like the Japanese version.
Restore the missing crowds in stage 3 along with the unused F.Andore enemy.
Add the invincibility & extra life items from Final Fight Guy.

If you're planning to add Rolento to your project, you should try importing his sprites from Final Fight 2 to it and give him these colors:

Grego

Great SCD, any help would be appreciated. I'll try to get a github setup today so people can contribute. 

I should mention disassembly help would be welcome as well.

The other things you mentioned are definitely under consideration.  The crowds should be quick and easy, decensoring the game might get tricky, as the project will then rely on three different roms to build the final file (Final Fight USA, Final Fight JP, Final Fight Guy). Totally possible, just tricky for people to build for themself, F-Zero Final seemed to be particularly difficult for people and it only used two roms.

Rolento would be amazing to restore, and totally possible, I had the same thought of using the FF2 graphics, however again it adds another rom to the mix. I'd love to see it happen, might be a late addition to the hack.

Thanks for the kind words SCD!
UltraNet SNES Network Adapter: https://twitch.tv/ultranetsnes
F-Zero Final v0.2 Teaser: https://www.youtube.com/watch?v=UzmOP23_F6A
F-Zero Final Github: https://github.com/originalgrego/FZeroFinal

SCD

#3
Alright, I'll make a patch with the uncensored names and send it to you later.

Sadly, I don't know how to disassemble a ROM, but there's definitely people on here that know how.

Alright, that's good to hear that some of my suggestions might be added to your project.

Another thing you need to do to the bartender & the crowds in stage 3 is give them their frames of animation from Final Fight Guy, they don't move at all in the regular version of Final Fight.

Alright, hopefully it will be easy to build the final file with all three games.

Alright, hopefully you'll be able to add Rolento later on.

You're welcome, I'm glad I'll be able to help you on a couple things.

My friend RealGaea released a hack last year that decensors some of stuff back to the American versions of both games, you can check them out here:
http://www.romhacking.net/hacks/3582/

The stuff that are missing are:

Belger's hopping movement, he's not suppose to walk like he did in the American version.
The blood that squirts out of Abigail's head after you defeat him.
The "Oh! My God" voice track.

Maybe this will help you on your project a bit.

Grego

#4
As opposed to a patch please give me a list of addresses and data, otherwise I'll have to extract them from the patch.

Edit: Just saw your edit, very cool, that solves a lot of the decensoring issues.
UltraNet SNES Network Adapter: https://twitch.tv/ultranetsnes
F-Zero Final v0.2 Teaser: https://www.youtube.com/watch?v=UzmOP23_F6A
F-Zero Final Github: https://github.com/originalgrego/FZeroFinal

SCD

#5
Alright, that's good to hear that his hack will help you on your project.

Here's the addresses to the texts that need to be change in Final Fight:

Offset: 1504 = OH! MY CAR (Change it to OH! MY GOD)
Offset: 6850 = SID (Change it to ROXY)
Offset: 685B = BILLY (Change it to POISON)
Offset: 6866 = THRASHER (Change it to DAMND)
Offset: 685B = KATANA (Change it to SODOM)
Offset: 696E = GRANADE (Change it to GRENADE)
Offset: 69DC = ROOTBEER (Change it to BEER)
Offset: 69F2 = VITAMINE (Change it to WHISKY)
Offset: F079 = You fiend ! (Change it to You son of a...)

Grego

Cool, took a look in a hex editor and the name changes should be easy. The hack you linked me to doesn't change the names?
UltraNet SNES Network Adapter: https://twitch.tv/ultranetsnes
F-Zero Final v0.2 Teaser: https://www.youtube.com/watch?v=UzmOP23_F6A
F-Zero Final Github: https://github.com/originalgrego/FZeroFinal

SCD

Yes it does, but three of them weren't changed, here's the ones:

Offset: 1504 = OH! MY CAR (Change it to OH! MY GOD)
Offset: 696E = GRANADE (Change it to GRENADE)
Offset: F079 = You fiend ! (Change it to You son of a...)

Grego

Cool beans, I'll be examining their hack later. If you could contact your friend to let him/her know I'll be expanding upon it I'd appreciate it.
UltraNet SNES Network Adapter: https://twitch.tv/ultranetsnes
F-Zero Final v0.2 Teaser: https://www.youtube.com/watch?v=UzmOP23_F6A
F-Zero Final Github: https://github.com/originalgrego/FZeroFinal

SCD

#9
I sent him a message letting him know about this, he'll be very happy to know that his hack will be used to make the ultimate version of the SNES port of Final Fight.

Another thing you'll need to do to your project is have the 2nd bonus stage appear after the Industrial Area stage like it did in the arcade version.

Grego

Awesome, hopefully he would like to contribute further, it would be nice to make his hacks build from roms. Thanks for your help SCD!
UltraNet SNES Network Adapter: https://twitch.tv/ultranetsnes
F-Zero Final v0.2 Teaser: https://www.youtube.com/watch?v=UzmOP23_F6A
F-Zero Final Github: https://github.com/originalgrego/FZeroFinal

SCD

You're welcome, I'm glad I was able to help you on your project.

Hopefully my friend can contribute more to your project soon.

ginbunbun

Holy shit fellas this sounds amazing. I wish I could offer any kind of help but I have zero skill or knowledge of rom hacking, disassembly, coding, or graphics hacking. All I can do is wish you both the best!

SCD

There's another thing I forgot to mention that you should do is change the music track that plays on Stage 5-2 from 09 to 0A to make it more like the arcade version.

Vanya

Hey all. Just wanted to point out that Final Fight Guy is closer to the arcade version than the original.
It might be worth it to look at that version to see if it also has some of those unfinished features that were found in the original.

*Going back to working on those graphics I need to get done now.*

SCD

I agree with you, I think it's a better idea to use Final Fight Guy as the main ROM for this project, if it still has the unused content in it.

Because it has a lot of improvements that makes it better than the original and the only thing that has to be imported is Cody.

Grego

Well, progress comes quick. Sorry for going silent, was busy disassembling/coding.  Got both players displaying:



If SCD's friends patch restores most everything besides a couple new items then there isn't much of a reason to switch to FF Guy besides the lag reduction.  Is there any other major improvements to FFGuy?
UltraNet SNES Network Adapter: https://twitch.tv/ultranetsnes
F-Zero Final v0.2 Teaser: https://www.youtube.com/watch?v=UzmOP23_F6A
F-Zero Final Github: https://github.com/originalgrego/FZeroFinal

SCD

#17
That's pretty cool of seeing Cody & Haggar on the same screen for the first time on the SNES port, you're doing a good job so far.

Here's all the improvements that Final Fight Guy has:

Hardly any slowdown.
Better enemy layout.
Better difficulty settings.
The extra life & invincibility power-ups.
The F.Andore enemy was actually used in Stage 3, he was unused in the original version.
The neon lights on the bar sign, the light bar above the bar's entrance door, the bartender and the crowds in Stage 3 are animated. They don't move at all in the original version.
Has a special ending if you beat it on expert mode.
The items Barbecue, Curry, Banana, and Grapes were replaced by Chicken, Sushi, Pineapple, and Orange.

I'll talk to RealGaea if he can update his patches to include the three things that I mentioned that were not decensored in them along with giving Stage 5-2 its correct music track.

Vanya

I will add that from what I've actually seen not only are the crowds now animated, there are a good amount of missing crowds that were restored from the arcade version as well as some other background elemets that were restored or updated for arcade accuracy.

SCD

Interesting, I wonder what other background elements that were restored or updated for arcade accuracy that were added to Final Fight Guy?