What's new
If I remembers correct the pc version doesn't say nothing during the title, shh this one has a bonus :
 
Definitely the announcer does not mention any word in the logo of the title of the PC version
 
In the Japanese region the announcer says: SPECIAL
In the US version the announcer says nothing
 
Been having some issues getting the SamSho Perfect rom running on my MiSTer.

I have been trying to use the smsh5spo rom out of the Darksoft set as the base, but when I replace the prom with, "samsho5_fe.cslot1_maincpu" and cprom0 with, "SamuraiShodown5_FE.sprites.swizzled" and run it on the MiSTer, I just get the crosshatch test pattern page showing up. Is there something I'm missing to get this going?

EDIT: Someone PMd me and pointed me in the right direction.
 
Last edited:
Yes, I think it's a good idea to reorganize and put the right step, I do appreciate if possible of course, thanks
 
So the overkills.. I call bs about making rom space for the story boards. It's probably still in the rom but hardcoded to Lvl3/without because I noticed none of the non graphic fatalities have been touched. Also it's not possible to set it to Lvl1 for white blood and with hoamaru you can just see the character blinking off screen when you do his fatal. Looking at it in a debugger, it looks like all the code is moved down and to the right compared to the samsh5sp decrypted rom.. So that may be why razoola's fatal fix doesn't work.

Guy's from the French site. See if the guy who did the "Perfect" logo can look into the croms for decapitated heads or the heart from retsu's fatal. Knowing that the sprites are still in there is a start. There has to be a way to uncensor this.

Edit:

So far, changelog-wise besides the obvious story and censoring.. There's a new color for most of the roster on the "B" "C" or "D" button and the biggest one I noticed as far as gameplay is an invisible wall push when doing special moves in the corner to prevent corner spam shenanigans.
 
Last edited:
special uncensored/ perfect graphic comparaison

Haohmaru/Rasetsumaru

First tile for 2 roms was

00a240

Tiles change at

00a990

The tiles are no longer in the same order and some animations seem to be shortened or use tiles from other animations.

c-roms-diff-rences.png


It is difficult to see if the "slicing" animations are still present.

The heart from Rasetsumaru over kill, is already présent.


In Special first tile number.

00e649

Perfect first tile number.

00ec98

There are more tiles in the pefect version than in the special.
 
Much thanks to ack for the bulk of the deciphering and additional patching, and to elrayzeur for the "PERFECT" graphical mod.

My small contribution here is to resolve the issue Layer33 highlighted. (we want Japan BIOS to also run English if set in Options)

Summary of the current (CCD0DB7A):
Patch 3 CCD0DB7A language issue.png


Patch result (574195C1):
Patch 4 3941028F.png


At address $9DDD6, change 837D to 1560.
To ack, I just changed the BIOS check for Japan to a check if $10E015 != 01 (English), skip patch. Nice and neat.

[Correction: check if $10E015 == 0 (Japanese), skip patch]
 
Last edited:
Much thanks to ack for the bulk of the deciphering and additional patching, and to elrayzeur for the "PERFECT" graphical mod.

My small contribution here is to have the issue Layer33 highlighted. (we want Japan BIOS to also run English if set in Options)

Summary of the current (CCD0DB7A):
Patch 3 CCD0DB7A language issue.png


Patch result (3941028F):
Patch 4 3941028F.png


At address $9DDD6, change 837D to 1560.
To ack, I just changed the BIOS check for Japan to a check if $10E015 != 01 (English), skip patch. Nice and neat.
Thanks. The check is actually if $10E015 == 0, skip patch. Not sure if that matters to folks are not, just means if you pick spanish or portuguese it will still apply the patch.
 
Yes, you're right. Careless copy-paste from my working text.
And yes about the Portuguese and Spanish showing up the English text as well.

Regarding the other hooks, do you reckon they are worth investigating?

(I suspect some would have to do with the higher resolution zooming, which we know cannot be applied on original hardware.)
 
Yes, you're right. Careless copy-paste from my working text.
And yes about the Portuguese and Spanish showing up the English text as well.

Regarding the other hooks, do you reckon they are worth investigating?

(I suspect some would have to do with the higher resolution zooming, which we know cannot be applied on original hardware.)
I don't plan on looking myself. My memory dump shows there are 36 hooks, 34 of which are in the p rom, and 2 in the (us) bios. They get mapped to 1 of 26 different functions in the exe. If you or someone else is interested in pursuing it I can probably provide a hook to exe offset mapping. Then I guess you could us something like ghidra to try and figure out what the exe function is doing.
 
Infinite AES Credits

address ECF9: 66 -> 60
address 11D24: 2D 53 1E 03 -> 71 4E 71 4E
 
I can probably provide a hook to exe offset mapping
not a big deal
Code:
      ss5fe_patches[0].type = 1;
      qword_140447238 = (__int64)sub_14005BCC0;
      ss5fe_patches[0].func = (__int64)sub_14005CC20;
      ss5fe_patches[1].func = (__int64)sub_14005CC20;
      ss5fe_patches[2].func = (__int64)sub_14005CC30;
      ss5fe_patches[3].func = (__int64)sub_14005B780;
      *(_QWORD *)&ss5fe_patches[4].type = 0i64;
      ss5fe_patches[4].func = (__int64)sub_14005C660;
      *(_QWORD *)&ss5fe_patches[5].type = 0i64;
      ss5fe_patches[5].func = (__int64)sub_14005BCF0;
      *(_QWORD *)&ss5fe_patches[6].type = 0i64;
      ss5fe_patches[6].func = (__int64)sub_14005BD00;
      *(_QWORD *)&ss5fe_patches[7].type = 0i64;
      ss5fe_patches[7].func = (__int64)sub_14005B890;
      *(_QWORD *)&ss5fe_patches[8].type = 0i64;
      ss5fe_patches[8].func = (__int64)sub_14005CCE0;
      *(_QWORD *)&ss5fe_patches[9].type = 0i64;
      ss5fe_patches[9].func = (__int64)sub_14005BF40;
      *(_QWORD *)&ss5fe_patches[10].type = 0i64;
      ss5fe_patches[10].func = (__int64)sub_14005BF40;
      *(_QWORD *)&ss5fe_patches[11].type = 0i64;
      ss5fe_patches[11].func = (__int64)sub_14005BF40;
      *(_QWORD *)&ss5fe_patches[12].type = 0i64;
      ss5fe_patches[12].func = (__int64)sub_14005BF40;
      *(_QWORD *)&ss5fe_patches[13].type = 0i64;
      ss5fe_patches[13].func = (__int64)sub_14005BF40;
      *(_QWORD *)&ss5fe_patches[14].type = 0i64;
      ss5fe_patches[14].func = (__int64)sub_14005BF40;
      *(_QWORD *)&ss5fe_patches[15].type = 0i64;
      ss5fe_patches[15].func = (__int64)sub_14005C9D0;
      ss5fe_patches[0].address = 0x10A56;
      ss5fe_patches[1].type = 1;
      ss5fe_patches[1].address = 0x10B1C;
      ss5fe_patches[2].type = 1;
      ss5fe_patches[2].address = 0x105FE;
      ss5fe_patches[3].type = 1;
      ss5fe_patches[3].address = 0x11232;
      ss5fe_patches[4].address = 0x3817A;
      ss5fe_patches[5].address = 0x3775A;
      ss5fe_patches[6].address = 0x3775E;
      ss5fe_patches[7].address = 0x1145C;
      ss5fe_patches[8].address = 0x112F2;
      ss5fe_patches[9].address = 0x10BDE;
      ss5fe_patches[10].address = 0x10F2C;
      ss5fe_patches[11].address = 0x10F6E;
      ss5fe_patches[12].address = 0x1117C;
      ss5fe_patches[13].address = 0x11212;
      ss5fe_patches[14].address = 0x11390;
      ss5fe_patches[15].address = 0x94F0;
      ss5fe_patches[16].type = 1;
      ss5fe_patches[16].address = 0x3803C;
      ss5fe_patches[16].func = (__int64)sub_14005CD50;
      ss5fe_patches[17].type = 0;
      ss5fe_patches[17].func = (__int64)sub_14005CD50;
      ss5fe_patches[18].func = (__int64)sub_14005AE70;
      ss5fe_patches[19].func = (__int64)sub_14005AE90;
      *(_QWORD *)&ss5fe_patches[20].type = 0i64;
      ss5fe_patches[20].func = (__int64)j_ss4fe_pbin_replace;
      ss5fe_patches[21].func = (__int64)set_M68k_ZF;
      ss5fe_patches[22].func = (__int64)set_M68k_ZF;
      ss5fe_patches[23].func = (__int64)sub_14005CD80;
      ss5fe_patches[24].func = (__int64)sub_14005CD80;
      ss5fe_patches[25].func = (__int64)sub_14005CD90;
      ss5fe_patches[26].func = (__int64)sub_14005CDA0;
      ss5fe_patches[27].func = (__int64)sub_14005B0E0;
      ss5fe_patches[28].func = (__int64)sub_14005C6B0;
      *(_QWORD *)&ss5fe_patches[29].type = 0i64;
      ss5fe_patches[29].func = (__int64)sub_14005C710;
      *(_QWORD *)&ss5fe_patches[30].type = 0i64;
      ss5fe_patches[30].func = (__int64)sub_14005C770;
      *(_QWORD *)&ss5fe_patches[31].type = 0i64;
      ss5fe_patches[31].func = (__int64)sub_14005C7D0;
      *(_QWORD *)&ss5fe_patches[32].type = 0i64;
      ss5fe_patches[32].func = (__int64)sub_14005CE20;
      *(_QWORD *)&ss5fe_patches[33].type = 0i64;
      *(_QWORD *)&ss5fe_patches[33].address = 0i64;
      ss5fe_patches[33].func = 0i64;
      qword_140447570 = 0i64;
      ss5fe_patches[17].address = 0x38028;
      ss5fe_patches[18].type = 0;
      ss5fe_patches[18].address = 0x10624;
      ss5fe_patches[19].type = 0;
      ss5fe_patches[19].address = 0x10938;
      ss5fe_patches[20].address = 0x68C8;
      ss5fe_patches[21].type = 1;
      ss5fe_patches[21].address = 0x10A80;
      ss5fe_patches[22].type = 0;
      ss5fe_patches[22].address = 0x11330;
      ss5fe_patches[23].type = 0;
      ss5fe_patches[23].address = 0x17DBE;
      ss5fe_patches[24].type = 0;
      ss5fe_patches[24].address = 0x1826E;
      ss5fe_patches[25].type = 0;
      ss5fe_patches[25].address = 0x25342;
      ss5fe_patches[26].type = 0;
      ss5fe_patches[26].address = 0x9534;
      ss5fe_patches[27].type = 0;
      ss5fe_patches[27].address = 0xEB6C;
      ss5fe_patches[28].type = 1;
      ss5fe_patches[28].address = 0x8A744;
      ss5fe_patches[29].address = 0x5044A;
      ss5fe_patches[30].address = 0x926FA;
      ss5fe_patches[31].address = 0x54FAC;
      ss5fe_patches[32].address = 0x95246;
 
I'm sorry I don't have as much experience as you with these things
tbh, me either :) had quite few practice with x86 RE, but these days cool toys like IDA/HexRays or Ghidra makes these things much easier and lowering entry level.
 
Graphically we can see what some of the hooks are already doing in the title screen, demo, credits logic.

Graphical differences.png


I think most of them do not need to be applied, e.g. credit logic, text removal, timer logic removal, stage level, VS stage select, VS music select, VS rematch logic, Arcade game difficulty, Rounds to win vs player, Round length, Rounds to Win VS CPU, etc..
And primarily just the graphical ones we see here. Anyone want to take this on? ;)
 
Back
Top