Art & Entertainment => Fighting Games => Topic started by: Yoshin222 on October 30, 2020, 06:16:18 pm
Title: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on October 30, 2020, 06:16:18 pm
---CONTEXT--- A personal dream of mine is to romhack 3S. It's honestly my favourite game full stop, but sadly, info on doing as such is very limited AT LEAST I THOUGHT IT WAS After some digging, amongst discussion on the 4rd Strike Discord (Link if interested: https://discord.gg/hBd9X9s (https://discord.gg/hBd9X9s) ), it seem's that there's actually a fair bit. After a lot of personal digging as well as trying to translate these sites, i've learned a fair bit about how 3S works, but suffice to say i haven't translated EVERYTHING, and if anybody has any info, i'd love to add it. It'd be awesome if this thread became a little hub of figuring out 3S. Without further ado, here's the stuff i've found. Links below.
---IMPORTANT LINKS BEFORE I BEGIN--- Any referenced bytes were edited in whole files (10,20,30,etc) as opposed to simms using the hex Editor XCOPY
Spoiler, click to toggle visibilty
Link to XCOPY 2007 (put the readme through google translate for convenience) http://www.mediafire.com/file/w1a9rtoblnkxa4o/XXCOPY.zip/file (http://www.mediafire.com/file/w1a9rtoblnkxa4o/XXCOPY.zip/file)
Main advantage of 2009 is it decrypts and rencrypts files. Using it, you could muck with the decrypted files in an external program like HxD or something instead of XCOPY 2007s barebones editor. 2007 is still good for small, quick edits
The Japanese Struct file used in conjunction with Stirling, as well as Stirling itself ( haven't been able to get it to work, but maybe someone else will have more luck. Also made a seperate version) https://www.mediafire.com/file/zdcpnl8eusf8p1o/Stirling.zip/file (https://www.mediafire.com/file/zdcpnl8eusf8p1o/Stirling.zip/file)
(Sincere thank you to JoshiPro for sharing them on the Discord) Japanese threads discussing 3S Hacking
PART 1: PRETTY COLORS! - File 50 Palmodding for 3S is actually fairly expansive and simple. Below are some examples, as well as a link to the Palmod Development Discord
Spoiler, click to toggle visibilty
Palmod develpment server invite https://discord.gg/aXgJWs4 (https://discord.gg/aXgJWs4)
Palmods by Riiya
EDIT:01/11/2020 TVIndustries has been decveloping a method for further customization, making it possible to set Ryus EX Flash and Hadouken Pallete for every available button (LP,MK,etc)
Video example here https://streamable.com/5orchj (https://streamable.com/5orchj)
PART 2: WORDS, WORDS, WORDS! File - 10, Offset 6000000 A bunch of addresses of interest, glabal 3S stuff, startup text, etc
Spoiler, click to toggle visibilty
To start off small, while trying to dig through 10, i found a bunch of text strings related to various aspects of 3S, including text for what seems to be a Dev Menu of sorts, though whether or not it's still accesible or is even there, i couldn't tell ya. Alongside that, is the initial text as the game loads. This is how zsnsn (author of 4rd strike) was able to change the startup text to 4rd Strike
Addresses
Spoiler, click to toggle visibilty
Dev menu text 0x61995f0
Dev text? 0x6131c380
BG Test text? 0x619E2D0 0x619E390
Test menu text 0x619c038 0x619c0c8
"Thank you for playing" 0x619E6A0 0x619E6B8
Rom/CD Check text 0x61A5398 0x61A53B0
Credits 0X61A63D0 0x61A7DB0
Color DMA Error 0X61B4B60 0X61B4B90
EPROM Error 0X660C0D8 0X660C0F0
Arcade text 0X660C300 0X660C720
Configuration Menu 0X660C930
Font setup? 0X660CF48
Font setup 2? 0X660D2A8
Suupabuu was also kind enough to explain where the headers for each character is, and how they're listed in game
Suupabuus Unitindex note
Spoiler, click to toggle visibilty
UnitNames = new string[] { "GILL", "ALEX", "RYU", "YUN", "DUDLEY", "NECRO", "HUGO", "IBUKI", "ELENA", "ORO", "YANG", "KEN", "SEAN", "URIEN", "GOUKI", "SHIN GOUKI", "CHUN-LI", "MAKOTO", "Q", "TWELVE", "REMY" }; thats the order of how units are stored 0x0618B148 are pointers to headers for each character 0x0618B148 + ( unitIndex * 0x6C ) = the pointers for each character
EDIT:01/11/2020 Link to updated document for further info https://docs.google.com/document/d/1O-8njFL5s4wdrukwwOTNne8K4EIvHLYpymuKAQwF-Ck (https://docs.google.com/document/d/1O-8njFL5s4wdrukwwOTNne8K4EIvHLYpymuKAQwF-Ck)
Might prove interesting, especially if someone wanted to rebrand the game like 4rd did. What is really exciting are these addresses which keep track of various things in 3S. Setting them as watch addresses in Mame or FBA-rr is definitely worth trying
Addresses for Global 3S stuff
Spoiler, click to toggle visibilty
18B180 Address list summary of motion data etc. (1 character 6 lines) 2068C94: Orbital base 2068CFC: Acceleration 2068E6C: Motion data address 18CC7C Stage BGM 19D8D0 Stage background 480FD0 Stage background graphic 5EA5B0 Double jump, triangular jump 5EAC70 Stun gauge 5EACA0 Stun recovery speed 5EAD00 Stan recovery rate from the time 5FB590 affect the gauge increase 5FBD10 gravity of a fall affect the 5FBF94 bending-back affect the 5FE7C4 hit back 5FF0CC combo correction coefficient 5FF588 Blocking Bonus Stage 61381C Special Move Command Data Address List
I've tinkered with setting up a watchtable, and can confirm "Motion data naddress" really means "Anim data header". By using this, it's a simpe thing to find anim addresses for Player 1. After testing it on Sean, i can confirm it works Link to the watchtable in image to get ya started
PART 3: THE ILLUSION OF LIFE File - 10, Offset 6000000/u] This got me mega hyped. It's info regarding animations, and tidbits on how they work and how to edit them. Alex's ST.HK is used as the example
Spoiler, click to toggle visibilty
Now here's where things start getting interesting! After pokiing through the threads, i was able to pin down Alex's ST.HK animation, as well as Ryu landing from a Shoryuken ( found here: Ryu - Land from Shoryuken - Frame 1 time = 62057BC). Innocent at first, but this has been mega useful for figuring stuff out! Basically, 3S checks strings of 24 bytes apiece. I haven't found what everything does as of yet, but there is some stuff worthy of note; The first byte in the sequence is "time" (in ticks) the frame stays on screen for till the next 24 bytes are checked. Bytes 10/11 are the exact frame used. In this example, i set each frame of Alex' startup to 07 AE, and got this (Frame 1 of this animation is at 61EB224, goto +0x1EB224 in XCOPY)
Before that, i messed with every first byte to make sure i understood what they were doing. It is definitely time
Pictured here is exactly what i did for visual clarity (https://media.discordapp.net/attachments/589101503625560090/771773860319723541/unknown.png?width=770&height=541)
Lastly, i found these notes regarding repeating animations. Assumedly used for looping anims like Alex' A.LK, and maybe his Stun Gun Headbutt
0 It means to repeat the motion between C and 0D X times
EDIT:08/11/2020 Made this basic video on how to edit SF3 animations
It seems 3S is neat in the sense sequences of bytes can function as code as well. Notice how at 61EB2FC the structure of the bytes is different? From what i gather, it's a condition to skip to a certain sequence on hit. How it works in full is yet unknown to me
If anybody finds anything, or has anything to share, i'd genuinely be more than grateful if it was shown here. Once enough is found, documents will be made and this first post will be added to as needed. Hope this proved interesting whatever the case!
CREDITS
Suupabuu - For the unitindex info, as well as answering a ton of querstions, and initially showing me the struct file! JoshiBro - For sharing the links to the Japanese 3S hacking sites. Massively helpful! riiya - For the awesome 3S Stage palmods in part 1. Defacto examples of how cool palmodding can be!
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Formerly Hoshi on November 01, 2020, 09:40:22 pm
Is it possible to change a stage's palette between rounds, like in NG and SI? I would be so incredibly excited for that.
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on November 01, 2020, 11:04:15 pm
Not that i know of Though theoretically if we figured out the trigger for it, maybe someday. The music changes between rounds so it MGIHT be possible Suupdabuu found a way to mod in SI stages anyway :p (He made his own program, one he won't release, at least not atm)
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on November 01, 2020, 11:06:43 pm
New stuff, cheers to Suupabuu + TVIndustries! Added to first post under part 1/2
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Momotaro on November 02, 2020, 01:12:48 am
I'm really impressed by what is possible! you guys are incredible. And seeing these SI stage availiable in 3.3 is great!!
Basically you can create some kind of Hyper Street Fighter 3 - like game...
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on November 02, 2020, 01:43:15 am
Maybe, but the idea is far away. I highly urge anyone interested to read the info too, it's great learning how this game works Little test thing
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on November 08, 2020, 04:56:27 am
Made this mega basic vid on editing animation times for those who are mega green. Added to first post
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on November 09, 2020, 11:00:28 pm
Was mucking around, and learned some stuff 1, the previously noted table for character headers is ammuckup. Will be edited in a bit 2, screwed around with "Enemy" Ctrl", and it seems it's the CPS3 equivalent of a Hitdef
Video Eaxamples
Spoiler, click to toggle visibilty
Here are the current Byte theories
Spoiler, click to toggle visibilty
DUDLEY Pointer 24 = Enemy ctrl 45579C BYTE FUNCTIONS 1 = Hit type 20 = Standing - Light 5F = Launched 2 = ??? 3 = ??? 4 = ??? 6 = Parry type 3F = High+Low 3E = High 2D = Low 7 = Juggle Addition? 9 = Damage 10 = Meter Gain 11 = Stun 13 = Pushback X 14 = Hitspark FC = Light 15-16 = Hitsound 0D 48 = Light Punch
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: The Shakunetsu on November 12, 2020, 06:56:05 pm
Wow this is amazing that you can import stages from SI, I wonder if it is also possible to modify
Super Art stock levels like chaging 1 level max to 3 level max?
And also changing the lenght of Super Gauge.
Thanks
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on November 12, 2020, 10:42:24 pm
Entirely possible, but not sure how yet You're more than free to dig through the dsta/sites to try and figure it out in the meantime
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on November 16, 2020, 02:28:42 am
Appreciate the sentiment but That's not related. Please avoid sharing irellevant hacks in future
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: corndog333 on December 20, 2020, 02:10:29 am
Sorry to bump but is this still a thing?
I managed to get Stirling working with the japanese struct file by deleting every instance of the character "ー" in it. However, the values that are displayed in Stirling using the struct file don't match with the ones I saw in some of the tutorials from that japanese site you linked. I don't know if I'm doing something wrong or the file is truly pointing to the wrong offsets.
The latest known version of XCOPY is from 2009 (xcopy20090105.zip). I found it hosted in a chinese site called "PPXCLUB" but you need an account to download it and even then I'm not sure if it's still up. I think this version allows you to save the decrypted file as a separate file, unlike the 2007 version that only saves encrypted versions.
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on December 20, 2020, 10:50:27 pm
Of course this is still a thing! I've come across that version, it was shared in the JJBA:HFTF Discord from where i found it Link to it here xcopy2009105 https://www.mediafire.com/file/gnnde3uhhajcign/xcopy20090105.zip/file (https://www.mediafire.com/file/gnnde3uhhajcign/xcopy20090105.zip/file)
Main advantage is it decrypts and rencrypts files. Using it, you could muck with the decrypted files in an external program like HxD or something instead of XCOPY 2007s barebones editor
Might be they check the decrypted version? I'll muck with it
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: FeLo_Llop on December 21, 2020, 12:47:53 am
Sorry to interrupt, but wanted to know if the same way the stages could be rip in normal version, are the same with these hacked ones. I'm sorry if it's a stupid question, just wanted to know. Thanks in advance :)
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on December 21, 2020, 04:18:34 am
No prob at all, should be fine. They're functionally the same game just with some altered values
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: corndog333 on December 21, 2020, 03:27:14 pm
Thanks for XCOPY 2009! Much better than the other version.
I'm still trying to make the struct file work correctly as it could help a lot. This is what I mean when I say that my values and addresses don't match with the ones mentioned in that japanese thread:
Quote
so check the value [06208F94] of [06] in [Ryu> 08 List] and jump to the address [208F94].
However, my Stirling shows this address for 06 instead:
(https://i.imgur.com/sVS1ry9.png)
I don't know what's wrong, maybe it's an outdated struct file? This is all the info I could find (translated obviously):
Quote
Select Stirling Settings> Byte Order> Big Endian and select Edit Structure to open the Edit Structure window. If you scroll to the bottom in the selection box at the top of the structure edit window, the character name will be surrounded by a line, so select the character you want to modify. If the editing start position is off at this point, you will not be able to edit correctly, so jump to 0 in the structure edit window> Move> Address.
I couldn't find that big endian option and even then I'm not sure if it's important. I also made sure that the starting position is 0 in the structure window.
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: NDSilva on December 21, 2020, 05:39:57 pm
I'm still several programming studies away to properly contribute to a project like this;
But oh man, good luck on your findings! This could be very promising. :2thumbsup:
Spoiler, click to toggle visibilty
... Imagine just being able to adjust the widescreen option that was left from 2nd Impact... :joyful
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on December 22, 2020, 02:38:10 am
Hmmm. Have ya tried translating the menus using Google? It allows ya to translate images
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: corndog333 on December 26, 2020, 12:14:13 am
I managed to get Stirling working but I'm not sure if everything is working as intended, some problems might come in the future but as of now it worked fine.
Step by step:
1) Get the japanese rom (sfiii3n.zip) because the struct file was designed with that version in mind. Using sfiii3.zip will give you the wrong values and addresses.
2) Use XCOPY (20090105 version) to decrypt the file called "10".
3) I noticed that someone tried translating the struct file inside "stir131" and all it did was mess stuff up, so delete that one. What you want to do is to use the original japanese struct file found inside the "struct" folder (date 2014) and remove every instance of the japanese character "ー". For some reason Stirling can't load the file with that inside so you have to remove it (I used notepad++ and replaced all instances with nothing/empty).
4) Open Stirling and then open the decrypted file. At least on windows 10, some text will be displayed in japanese, as question marks or as random characters.
(https://i.ibb.co/R48BPGx/stirling1.png)
5) Change the byte order to "Big Endian" as this will help reading values and addresses. For example the value "22" will be displayed as "0x00000022" instead of "0x22000000".
(https://i.ibb.co/93zGpfX/stirling2.png)
6) Open the edit structure window.
(https://i.ibb.co/s5tNSV5/stirling3.png)
7) Click on the drop down menu and you will find the characters all the way down, you will notice that all of them start with “@@„≪”. For this example I renamed Alex's name using the english alphabet, you will find him using his japanese name.
(https://i.ibb.co/QbMqCtx/stirling4.png)
8) A list containing everything about Alex will be displayed on the structure window. This is the part where you experiment changing stuff. Again, you will notice english text in the picture but that's because I translated words, it won't look like that using the regular struct file.
(https://i.ibb.co/6v3L9dd/stirling5.png)
That should be everything for the initial setup.
I think Stirling isn't that useful without having a fully (or mostly) translated struct file. Without understanding what each word means would be the same as blindly editing using a regular hex editor. As you saw in the setup tutorial I translated a few words to get an idea of some of the things that you can tweak. I managed to change Alex's neutral/forward throw to his Stun Gun Headbutt (SAIII) by following a tutorial in that japanese thread. Whenever I can I will explain it in detail.
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on December 26, 2020, 09:01:42 am
Beautiful stuff! Seems the next step would be attempting to translate the names in the struct. Mind if ya post yours and I'll add it to the first post? PS: Merry Christmas yall
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: corndog333 on December 26, 2020, 06:19:40 pm
Here's my struct file, I barely translated anything so it's not of much use for now: http://www.filedropper.com/struct I think it will get deleted after some time so you might want to reupload it to mediafire like you did with the other programs.
Anyways here's a quick rundown on how to replace Alex's neutral/forward throw with his Stun Gun Headbutt.
1) First you should follow all the steps from my previous post to get stirling setup and ready to edit.
2) Once you pick Alex from the drop down menu you have to expand the line that says "NormalTechniqueDetails". I assume these are all Alex's normal attacks (LP, MP, HP, etc) and such, including his throws.
(https://i.imgur.com/KQx8KaJ.png)
3) Expand the line that says "NThrow(BeforeThrowAction)", which is his neutral/forward throw. I think the "BeforeThrowAction" part means that this is his throw attempt.
(https://i.imgur.com/LV09DWa.png)
4) Expand the line that says "Jump_ThrowTechnique". I don't know why there are 2 lines with the same name, but you have to expand the first one. I also don't know why it's called "Jump_" since it's a grounded throw.
(https://i.imgur.com/hHKQOB5.png)
5) Go to "ListTechniqueNumber" and replace "0x0017" with "0x000E". "17" would be the ID for his neutral/forward throw if it connects, while "0E" would be the ID for his Stun Gun Headbutt if it connects.
Before:
(https://i.imgur.com/QiKwiPN.png)
After:
(https://i.imgur.com/9xx19wY.png)
6) Save changes, encrypt with XCOPY and replace the file in your rom. Your emulator will probably give you a warning message, just skip it and test the change.
Here's the final result:
(https://i.imgur.com/AkTRfX0.png)
Like I said before it's a matter of translating and documenting these things to get better results. Cool stuff could come from this with proper research.
Also, Merry Christmas you too!
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: sarsbarilla on March 13, 2021, 08:35:17 am
The thread of my dreams. This is great info, been searching for 3S info like this for years.
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on October 29, 2021, 04:14:27 pm
Been a while since stuff was posted! Kind of an offshoot of Romhacking but ABSOLUTELY something interesting Was making a conversion Lua Script for Red Earth and decided to try and edit it to work with 3S with some bells and whistles, and came to make this (https://cdn.discordapp.com/attachments/771670953963946004/903637799775920198/unknown.png) (https://cdn.discordapp.com/attachments/771670953963946004/903637808583946271/unknown.png) More stuff to be added down the line, but even getting converted Velocities that work, at least as far as i can tell, 1-1 with Mugen makes data collection MUCH easier. First thing to go is probably the position stuff for CPS3 since it's not really useful, and the addresses can be found by just adding UID data to the Player ya want anyway. Lemme know what kinda things would be useful and i'll keep it in mind! Link https://pastebin.com/NDPKB2hQ (https://pastebin.com/NDPKB2hQ)
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on February 24, 2022, 11:28:19 pm
We live!!! As a fun test, ported over False Wings from Red Earth in to 3S
Here are the Sample IDs i've been able to find for both games 3S Sample IDs
Spoiler, click to toggle visibilty
0x00 - Percussion 0x01 - Percussion2 0x02 - Cymbal? 0x03 - Percussion3 0x04 - Drum? 0x05 - Breakbeat? 0x06 - "Circuit" 0x07 - Intro Breakbeat 0x08 - Voice? 0x09 - "We await your return, warrior" 0x0A - Taiko Drum? (Common in Ryus theme) 0x0D -Steel Drum? 0x12 - Cowbell? 0x13 - Trangle Wave? 0x14 - Plucked Bass 0x15 - Xylopohone? 0x16 - Distortion Guidar (Hugos theme) 0x17 - Funk Guitar? 0x18-0x1D - Synth Pluck? (Hard to describe it, kinda froggy) 0x1E - ??? 0x1F - Funk Organ 0x20 - Synth Slap Bass 0x22 - Square Wave? 0x25 - Saxaphone 0x26 - Saxaphone 2 0x27 - Piano 0x28 - That weird thing in the background of Ibukis theme 0x29 - Church Organ 0x2A - Loud tone? Dunno what it is 0x2B - Softer tone 0x2C - Sawtooth maybe? 0x2D - Choir (Gills intro?) 0x2E - Strings 0x2F - Shakuhachi (Akuma/Ibukis theme) 0x30 - Crystal? 0x31-0x38 - Synth Bass (Hugos theme uses this iirc) 0x39 - Synth Pad 0x3A - Stick idfk remember the name rn lol 0x3B - Beats in my Head? 0x3C - Orchestra Hit? 0x3D - Funk Guitar Pluck 0x3E - Orchestra Hit?
Ryus first instrument is the value 0x0A, Loaded in to this RAM address 2078D54
Red Earth Sample IDs
Spoiler, click to toggle visibilty
Sample Bytes --MUSIC DATA, EACH INSTRUMENT IS SEPERATED BY 0x70 worth of bytes, or 112 Bytes --This is the first Intrument. Each subsequen instrument is split up by 0x70 bytes. --This is done 10 times, or 0x0A in Hex local Music_Instr_Start = 0x207BD5C local Music_Instr_End = 0x207C1BC 0x207BEAD + 0x0x207B98D are the whistles in Kenjis theme, default value is 0x34 02 - Cymbal 05 - Gong 0C - Traingle 12 - Orchestra Hit 15 - Plucked Bass 16 - Bass (Prominent at beginning of Intro) 19 - Acoustic Bass 1B - Distortion Guitar Background of Leos theme) 1C - Overdrive Guitar (Lead of Leos theme) 1D - Strings1 1E - Strings2 20 - Piano 21 - Bright Piano 22 - Synth Piano 23 - Organ 1 25 - Organ 2 (Background of Leos theme) 27 - Brass 2A - Flute? Sounds kinda nice 2B - Brass 2C - Whistle 2D - Synth Pad1 2E - Synth Pad2 2F - Choir 33 - Shamisen 34 - Shakuhachi (Prominent in Kenjis theme)
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: The Shakunetsu on February 28, 2022, 06:58:08 pm
Is It possible to just simply update the level stock for low tier Super Arts.
Like increasing max stock and also shortening some of the gauge
Kinda like simple rebalance yet everything else plays the same
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: Yoshin222 on March 01, 2022, 12:58:17 am
Sure, should be in the struct in the first post if ya do some digging
Title: Re: Street Fighter 3: Third Strike Romhacking thread (sfiii3n)
Post by: The Shakunetsu on March 01, 2022, 08:46:32 am