Hacking the ST rom


Main Controls done.

;Player 2 Main input
1D2BC: move.b  $804001, D0
1D2C2: not.b   D0
1D2C4: move.b   D0, ($7b,A5)

;Player 1 Main Input
1D2C8: move.b  $804000, D0
1D2CE: not.b   D0
1D2D0: move.b   D0, ($7b,A5)

1D2D4: move.b   $804011.l, D0

;Player 2 Kicks
01D2E6: jsr     $kickcode;haven't decided where yet, there is plenty of room.
01D2EC: move.b  D1, ($7e,A5);Move to Player 2 controls

;jsr $Kickcode
;Need D0 to equal 40 with out input and 0 with add it to d1
move.b  $804020.l ;(1039 0080 4020)
andi.b 	#$40, D0 ;(0240 0040)
add.b D0,D1 ;(D200)
lsr.w #$4, D1 ;(E849)
andi.b #$7, D1 ;(0241 0007)
rts ;(4e75)


It’s progress need to figure out the right roms.


I dunno how well this would go over, but I made name graphics for the one character that doesn’t have any, so if you wanted to, say, insert them into ST with the ability to switch which one gets used based on region, it’s possible (both regions use the same number of 16x16 tiles, and there’s a metric shitton of blanks space in the ST art, so space isn’t an issue there).

I’m not so sure how well they’d work on hardware, considering the resolution is so oddball, but it’d be worth a shot, I think.



Can’t really take any credit for these either, since I just edited existing letters. Use them if you see fit.


So, mind the double-post, but going by previous postings, it seems that we really don’t have any way to actually edit ST graphics yet. Am I correct in thinking that the stumbling block is that we don’t have any good 16x16 (or 32x32) tile editors?


I keep coming back to thinking of ways of improving the ROM so that it is more tournament friendly. Jed, do you think it is possible to disable the winner character lock thing and make both players able to select a character after a match without having to reset the board or kill the characters off? I think if we can hack that and freeplay into the Japanese ROM, it will go a little way to making things run a bit smoother


Dude I would love a st world trainning mode encrypted as maybe a could make a switch on my arcade board to switch between trainning and normal


Sorry if im reviving a dead post but I am being asked by some of the a3 players in the room to get the romhack i did for the a3 playable in there.

Jed I tried xcopy with the keys for sfa3 and sfa3u on my ggpo rom but it results in a corrupted zip file. The file offset I left to 0. What could I be doing wrong?

Any help would be appreciated :slight_smile:


wait, you applied xcopy to the zip file itself? you’re supposed to patch the actual rom files, not the zip that contains them.


Okay that would explain why it was resulting in a corrupted file, but what about the file offset? How do I go about identifying which file offset i’m supposed to use (since I imagine it cannot be 0 for all)?


What exactly did you hacked? It’s strange because, if you’re actually able to hack roms, you should already know why doing what you did would not work.

I dont really know if you understand the proccess, so let me explain it all: xcopy’s functionallity is to apply/remove the encryption from the instructions present on the roms. Not all rom files contain instructions, some of them only contain data, so applying xcopy on these would make no sense. Anyway, lets say you want to hack some of the assembly code contained in a CPS2/3 rom: to do it, you first have to apply xcopy on the right file, to remove the encryption. After that, you hex edit the file (to this part you have to be actually good on reading assembly, so its not up to me to tell you how to do that) making sure to not alter the number of bytes on that rom file (obviously). After you hacked the right bytes, you have to encrypt it back so the emulator can read it properly, so you have to use xcopy again, now in encryption mode. After that, you can pack the modified file with the other files to form the complete rom, zip it back and it will be read to be used on emulators.
As for the offset, it depends on which file from the rom you hacked. If you press the " :slight_smile: " icon, it will say exactly which offset to use, depending on which file you hacked.


Maybe hack is a strong word, I just applied some mods to the decrypted romset of sfa3 (Pheonix Rom).

Obviously I dont know what I am doing when it comes to using the XCopy tool, mainly because there is no real documentation regarding it.

Thanks for the pointers thus far, it looks more like what I expected to see now once I am doing the encryption/decryption.


The phoenix rom is not simply a decrypted rom, it has other differences. If you want to play on fightcade, you have to base your work on the same rom that is used there AFAIK.
So, instead of picking the phoenixed rom as a base, pick the “normal” sfa3 (i.e. the one used on fightcade) and decrypt it using xcopy first, then do whatever you must with these files, encrypt it back, and then zip it.


yeah I understand that now, cheers, looks like im gonna have to go and figure out the locations again.


Ahh man do I feel I stupid, so yeah much of the confusion came from having used the phoenix rom. Seems like the areas of the file get converted differently (memory vs CPU ?!?). Got it to encrypt and decrypt with my changes working eventually in the end. Thanks for your help everyone :smiley:


Ah, sorry for the necro. Somethng I havealways wondered (and probably no one ever wanted), has ever been a hack on the ST rom that features the balance changes featured on HD remix?


Also necroing. I’m trying to do some Marvel VS Capcom 1 Arcade modding. I’ve located a decrypted rom online, but I can’t seem to find a download for the XCOPY decrypt program. Since I managed to find a decrypted rom, I shouldn’t need it though, right?

Anyway, the things I’m primarily interested in are:
–Allowing the hidden character portraits to be selectable without input cheat-codes
–Updating some of the sloppy sprites (Morrigan and War Machine come to mind)
–Modifying movesets or even porting movesets from other CPS2 games if possible
–Disabling assist characters as a whole

Perhaps someone could help me out here?


Hi all, I’m atm trying to understand the memory addresses of Street Fighter II. I’ve find a lot of useful info here:

What I’m missing there however, if the value for the life/healthbar for P1 and P2.

Does anyone know what the memory address is for this in Street Fighter II’ Turbo (romset sf2tj)?

Any help is much appreciated, thanks!


Player 1 base memory address: 0xFF83BE
Player 2 base memory address: 0xFF86BE

Life is at 0x02B, so 0xFF83E9 and 0xFF86E9



Awesome, thanks a lot!!


Alright, I’ve got the lifebar working. Now, I’m working on a little project, and I need to have input sent to MAME-RR trough lua. For that, I’m using the joypad.set() function in lua in MAME-RR, but it doesnt seem to be working (only Service Mode button works, I cant get anything else working)…does anyone know if joypad.set() in mame-rr is bugged?