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

Simplify SGB related UIs (and make it possible to use SGB under Gambatte link) #3283

Closed
wants to merge 14 commits into from

Conversation

Fortranm
Copy link

@Fortranm Fortranm commented Jun 19, 2022

https://en.wikipedia.org/wiki/Super_Game_Boy#Super_Game_Boy_2

The Super Game Boy 2 was released exclusively in Japan in 1998. Additions included a link port to allow a user to access two-player mode via the link cable...

Currently, the SGB mode of Gambatte has to be turned on via Config > Cores > GB in SGB instead of in the sync setting and cannot be used in GB Link as a result.

This PR does three things related to SGB:

  1. SGB is added (or rather, merged in) as a Console Mode option for Gambatte.
    image

  2. "GB in SGB" check box and SGB core picker are removed and the BSNES cores are added under the GB core picket. GB/GBC games will load under SGB mode of the corresponding BSNES core if one of those options are chosen.
    image

  3. As a result of the first change (with addition adjustments), it is now possible to use SGB mode in Gambatte Link too.
    image
    image
    Each SGB core can have up to 4 controllers linked to it. Note that the tab parsing process is currently hardcoded to categorize every item that starts with "Px " under the tab "Player x" and everything else under "Console". There have been suggestions to use "Console x" for a core in link mode but that requires enough refactoring to be considered a separate task IMO.

@YoshiRulz YoshiRulz self-requested a review June 19, 2022 09:10
@CasualPokePlayer
Copy link
Member

CasualPokePlayer commented Jun 19, 2022

There's some issues here:

  1. I'm not sure if this UI is any better than before. The old UI seems more intuitive imo (still not the best of course)
  2. This change was mainly to get GBL in for SGB2 from what I know (which yes, the SGB2 did have a link port). However, getting it working requires extra effort here. The 4 players in SGB2 per Gambatte core makes controller handling a mess (I'm not sure if this is PR is exactly the best solution here). SGB Borders are also an issue as they are absent in the current implementation, not to mention SGB sound, which is missing here.

@Fortranm
Copy link
Author

SGB borders can now be displayed in GBL mode. Note that all borders will be displayed when any of the SGB cores have the Display Border option enabled.
image
(the second and fourth cores are in GBA mode here)

@@ -325,7 +322,6 @@ public void ResolveDefaults()
[VSystemID.Raw.GB] = CoreNames.Gambatte,
[VSystemID.Raw.GBC] = CoreNames.Gambatte,
[VSystemID.Raw.GBL] = CoreNames.GambatteLink,
[VSystemID.Raw.SGB] = CoreNames.Gambatte,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is incorrect, all AppliesTo sysIDs are used here (note GB and GBC). Actually I don't think the above change to CorePickerUIData is correct either.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has been restored in a commit. As for the other changes in the file, I have repeatedly switched between cores and it seems to work fine aside from the minor issue mentioned in the comment.

{
_linkedConts[i].Set(s.Replace($"P{i + 1} - ", ""));
}
else if (s.Contains($"P{i + 1} "))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This forced you to add a hack to Bk2MnemonicLookup.cs. What does it actually do? Can you implement it another way?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This deals with the fact that an SGB core has 4 controllers, as shown in the last image in the original description. I don't have a better implementation in mind for now.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Number them 1-4 and make the next console start from 5

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That wouldn't be intuitive on which core a controller corresponds to, especially when console modes are mixed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well there's no precedent here. The closest thing is multitaps e.g. for SNES or Genesis. Anyone else want to weigh in on this?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

@YoshiRulz YoshiRulz self-requested a review June 29, 2022 13:48
@getCursorsExe

This comment was marked as spam.

@Fortranm Fortranm closed this Apr 16, 2023
@Fortranm Fortranm deleted the SGB-UI branch April 16, 2023 19:15
@Fortranm Fortranm restored the SGB-UI branch April 16, 2023 19:24
@Fortranm Fortranm deleted the SGB-UI branch April 16, 2023 19:30
@Fortranm Fortranm restored the SGB-UI branch April 16, 2023 19:57
@YoshiRulz YoshiRulz reopened this Apr 16, 2023
@Fortranm Fortranm closed this Apr 16, 2023
@Fortranm Fortranm deleted the SGB-UI branch April 16, 2023 21:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants