nipkownix / re4_tweaks

Fixes and tweaks for the "UHD" port of Resident Evil 4
zlib License
339 stars 33 forks source link

[Feature Request] Disable Ada's knife #353

Open pas-de-2 opened 1 year ago

pas-de-2 commented 1 year ago

Describe the feature you'd like to see added

In the original GC version of the game, Ada never had a knife. She was only given a knife for Separate Ways in the PS2 release, and later Mercenaries mode and Assignment Ada in the Wii-based ports.

IMO, Ada was not designed to be playable with a knife. She already has powerful melee kicks and a fast movement speed to make up for this deficiency. The differences in weapon loadouts are part of what makes the RE4 characters feel distinct from one another and fun to play. Mikami was not involved with the PS2 or Wii ports, so to me it feels like an ill-considered and revisionist change. But I'm not here to proselytize, just explain why I want the option.

This is a small request, and obviously I can always choose not to use the knife myself, but I'd appreciate if there was a box I could tick in re4_tweaks to disable it for at least Mercs mode and AA.

emoose commented 1 year ago

Think the checks for equipping knife might be in keyKamae func, not totally sure about that though, seems there are some chara type checks there at least.

IIRC there is also a flag in the game that can disable equipping the knife too, it worked to disable it for Leon when I tried it before at least, if you use the trainer branch and go to flag editor section, there should be a CFG_KNIFE_MODE flag inside CONFIG category, toggling that should decide if you can go into the knife stance or not.

That flag would affect all characters though, would still be nice to have an option that could just restore it to how GC version worked instead.

pas-de-2 commented 1 year ago

Hey cool, thanks, that was enough info for me to hack together a solution. I'm sure this isn't the best way to do this, but it works:

https://github.com/pas-de-2/re4_tweaks/commit/5b7fd6e17771db49543e0b5b359eb8d75e5c19b0

emoose commented 1 year ago

Just noticed I posted wrong func name, that CFG_KNIFE_MODE check is in joyKamae - seems we already hook that inside Misc.cpp already, probably wouldn't be hard to add a chara type check in there.

There is also a joyLKamae func that checks CFG_KNIFE_MODE which we don't hook atm tho, seems to get used by a few different places (but not as many as joyKamae), not sure what the difference is with that, guess it's maybe something Wii related.

pas-de-2 commented 1 year ago

Yeah, I did some more investigating and discovered that the game uses field_joyLKamaeRelated_847D to disable the knife for Wesker, Hunk, and Ada. There's still an Ada-only check in joyLKamae for this, but since the Wii port that flag never gets set when playing as her.

I figure the simplest option is to just replace the check for field_joyLKamaeRelated_847D at 0x682A32 in joyLKamae with a check for our own config variable. Or, hook inside titleSub to set the flag on AA/Mercs mode game start. That would also cover the checks for auto-knife, should Wiimote support get added.

Edit: also turns out the Wii devs left in a hidden option to disable the knife if you start the game with the left trigger held down, neat.