public class PerGameProfileHelper { public static SharedPreferences getPrefsForGame(String gameId) { return PreferenceManager.getDefaultSharedPreferences(AndroidContentView.getContext()) .getSharedPreferences("profile_" + gameId, Context.MODE_PRIVATE); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... existing code ... GameFile currentGame = getCurrentGame(); if (currentGame != null) { PerGameProfileHelper.applyProfileForGame(currentGame); } } Add a button in GameDetailsDialog.java : dolphin mmjr 2.0 apk
# Build native code ./gradlew assembleArm64Release ndk-build -C Source/Android Settings
public static void applyProfileForGame(GameFile game) { String gameId = game.getGameId(); SharedPreferences prefs = getPrefsForGame(gameId); // Apply CPU overclock, GPU sync, etc. Settings.CPU_OVERCLOCK.setValue(prefs.getInt("cpu_overclock", 100)); Settings.GPU_SKIP_EFB_ACCESS.setValue(prefs.getBoolean("gpu_skip_efb", false)); } } Edit EmulationActivity.java : { Intent intent = new Intent(getActivity()
package org.dolphinemu.dolphinemu.utils; import android.content.SharedPreferences; import androidx.preference.PreferenceManager; import org.dolphinemu.dolphinemu.model.GameFile;
private void setupPerGameButton() { Button profileButton = view.findViewById(R.id.button_per_game_profile); profileButton.setOnClickListener(v -> { Intent intent = new Intent(getActivity(), PerGameProfileActivity.class); intent.putExtra("game_id", game.getGameId()); startActivity(intent); }); } Create PerGameProfileActivity.java with a PreferenceFragmentCompat showing overclock, GPU sync, and audio stretch toggles. From the root directory: