Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ FF7 ] True X/O swap. #742

Open
zaphod77 opened this issue Oct 25, 2024 · 1 comment
Open

[ FF7 ] True X/O swap. #742

zaphod77 opened this issue Oct 25, 2024 · 1 comment
Labels
enhancement New feature or request

Comments

@zaphod77
Copy link
Contributor

zaphod77 commented Oct 25, 2024

Summary

Would be nice to swap ok and cancel, EXCEPT in minigames. Currently minigames only have intended controls if ok, cancel, switch, and men are in their intended spots.

Basic example

Currently remapping the controls simply changes the position of the buttons, but not their function. I'm hoping it's possible to make a different sort of remapping that actually does change the functions. Final Fantasy VII Windows edition does this. it makes A/Cross into confirm, and B/Circle into cancel, while still leaving swing right as circle/B in the bike minigame.

Motivation

I saw video of the windows edition from the microsoft store, and saw that A was ok and B was cancel, but B was still swing right in the bike minigame. Just the way it would have been if ok and cancel had been swapped on the psx version. Square proves it with the xbox/windows/ps4 editions of final fantasy vii. Min game controls work by position, while outside of minigame controls work by function. switch version uses a for confirm, b for cancel, x for menu, and y for switch, and still has the minigame controls correct.

There is already intelligence in the driver to detect xinput and internally mess with the button assignments so that it matches a ps3/ps4 controller on PC. I'm willing to provide more useful info on proper controller assignment for various controllers to make them work as intended, and allow for proper button prompts. I'm familiar with official sony mapping, xinput mapping, the usual psx to usb converter mapping (which is what the ACTUAL default mapping for pc98 version is, it works correctly with old chinese psx to usb converters), etc. When/if i get a 8bitdo pro 2, i can fetch the switch mapping too.

@zaphod77 zaphod77 added the enhancement New feature or request label Oct 25, 2024
@julianxhokaxhiu julianxhokaxhiu changed the title True X/O swap. [ FF7 ] True X/O swap. Oct 25, 2024
@zaphod77
Copy link
Contributor Author

Okay, i've looked at the windows edition, and have some idea of how they did it.

They edited the field scripts. Here's what they did. they replaced all [refences] with {codes}

{SQUARE} = square
{TRIANGLE} = triangle
{CIRCLE} = circle, when used as OK. if x/o swap is on (and it IS for non switch versions) it will show a cross.
{CIRCLE}0 = Actual Circle button, used for minigame prompts. this is ALWAYS circle/
{CROSS} = cross button. BUT if {CIRCLE}0 is present in the field script, then it actually means cross. otherwise it shows circle when x/o swap is on
Both {CIRCLE} and {CIRCLE}0 are never in the same field script chunk, which is how the trick works.
{CIRCLE}1 = L1
{CIRCLE}2 = R1
{CIRCLE}3 = L2
{CIRCLE}4 = R2
{CIRCLE}5 = start
{CIRCLE}6 = select
{CIRCLE}7 = Up
{CIRCLE}8 = Down
{CIRCLE}9 = Left
{CIRCLE}: = Right

Based on this, the game clearly scans for circle 1 through circle: first. Then after inserting the button graphics in for them, it look for circle0. if present, it then inserts the button graphics for circle and cross. if it doesn't find it, then it inserts the prompts swapped, unless it's the switch version, then it doesn't swap. i don't know if the switch version has both {CIRCLE} and {CIRCLE}0, but it might. ps4, xbox, and windows edition clearly do.
There is additional code to detect in or out of minigame, and undo the X/O swap if its' on. That I don't know how it's done. but i suspect there's some way to do it.

I hope this information is useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant