From 857ce47de28546d78c8204d6571149f742996024 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 24 Aug 2013 08:23:23 -0400 Subject: [PATCH 01/12] [Android] Add the license header to Java files that were missing it. --- .../src/org/dolphinemu/dolphinemu/AboutFragment.java | 12 +++++++----- .../org/dolphinemu/dolphinemu/DolphinEmulator.java | 6 ++++++ .../dolphinemu/dolphinemu/NativeGLSurfaceView.java | 6 ++++++ .../dolphinemu/folderbrowser/FolderBrowser.java | 6 ++++++ .../folderbrowser/FolderBrowserAdapter.java | 6 ++++++ .../dolphinemu/folderbrowser/FolderBrowserItem.java | 6 ++++++ 6 files changed, 37 insertions(+), 5 deletions(-) diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java index 1f35a58f76..fe5a83bf92 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/AboutFragment.java @@ -1,3 +1,9 @@ +/** + * Copyright 2013 Dolphin Emulator Project + * Licensed under GPLv2 + * Refer to the license.txt file included. + */ + package org.dolphinemu.dolphinemu; import android.app.Activity; @@ -15,11 +21,7 @@ import org.dolphinemu.dolphinemu.folderbrowser.FolderBrowserAdapter; import org.dolphinemu.dolphinemu.folderbrowser.FolderBrowserItem; import org.dolphinemu.dolphinemu.settings.VideoSettingsFragment; -/** - * Copyright 2013 Dolphin Emulator Project - * Licensed under GPLv2 - * Refer to the license.txt file included. - */ + public final class AboutFragment extends Fragment { private static Activity m_activity; diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java b/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java index a616df609a..ca3c637bfb 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java @@ -1,3 +1,9 @@ +/** + * Copyright 2013 Dolphin Emulator Project + * Licensed under GPLv2 + * Refer to the license.txt file included. + */ + package org.dolphinemu.dolphinemu; import android.app.Activity; diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/NativeGLSurfaceView.java b/Source/Android/src/org/dolphinemu/dolphinemu/NativeGLSurfaceView.java index 2e38d98fef..d35b8a4adb 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/NativeGLSurfaceView.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/NativeGLSurfaceView.java @@ -1,3 +1,9 @@ +/** + * Copyright 2013 Dolphin Emulator Project + * Licensed under GPLv2 + * Refer to the license.txt file included. + */ + package org.dolphinemu.dolphinemu; import android.content.Context; diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java index 55f88b3931..027a2f837e 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java @@ -1,3 +1,9 @@ +/** + * Copyright 2013 Dolphin Emulator Project + * Licensed under GPLv2 + * Refer to the license.txt file included. + */ + package org.dolphinemu.dolphinemu.folderbrowser; import android.app.Activity; diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowserAdapter.java b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowserAdapter.java index 6de1fbcb79..750f17141a 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowserAdapter.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowserAdapter.java @@ -1,3 +1,9 @@ +/** + * Copyright 2013 Dolphin Emulator Project + * Licensed under GPLv2 + * Refer to the license.txt file included. + */ + package org.dolphinemu.dolphinemu.folderbrowser; import java.util.List; diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowserItem.java b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowserItem.java index 00e41852fa..eb0d27dcca 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowserItem.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowserItem.java @@ -1,3 +1,9 @@ +/** + * Copyright 2013 Dolphin Emulator Project + * Licensed under GPLv2 + * Refer to the license.txt file included. + */ + package org.dolphinemu.dolphinemu.folderbrowser; import java.io.File; From 528a7333597b357784e5482c792ced5cefa86e31 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 24 Aug 2013 09:12:17 -0400 Subject: [PATCH 02/12] [Android] Don't create a new GCMPath entry in the Dolphin config if it another existing GCMPath entry already has the same directory path. Also, fix a 'bug' with the clear all items function. Make sure we set GCMPathes to 0, so that GCMPath entries start adding at GCMPath0 again. This change also allows me to remove the duplicate checking code from GameListFragment, since the items in the game list are loaded based on the GCMEntries in the Dolphin config. --- .../folderbrowser/FolderBrowser.java | 31 ++++++++++++++++--- .../dolphinemu/gamelist/GameListActivity.java | 2 ++ .../dolphinemu/gamelist/GameListFragment.java | 16 ---------- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java index 027a2f837e..56fe57cb2e 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java @@ -137,15 +137,38 @@ public final class FolderBrowser extends Fragment // Cache the activity instance. m_activity = activity; } - - + + private void FolderSelected() { String Directories = NativeLibrary.GetConfig("Dolphin.ini", "General", "GCMPathes", "0"); int intDirectories = Integer.parseInt(Directories); Directories = Integer.toString(intDirectories + 1); - NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPathes", Directories); - NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPath" + Integer.toString(intDirectories), currentDir.getPath()); + + // Check to see if a path set in the Dolphin config + // matches the one the user is trying to add. If it's + // already set, then don't add it to the list again. + boolean pathNotPresent = true; + for (int i = 0; i < intDirectories; i++) + { + String gcmPath = NativeLibrary.GetConfig("Dolphin.ini", "General", "GCMPath" + i, ""); + + if (gcmPath.equals(currentDir.getPath())) + { + pathNotPresent = false; + } + else + { + pathNotPresent = true; + } + } + + // User doesn't have this path in the config, so add it. + if (pathNotPresent) + { + NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPathes", Integer.toString(intDirectories+1)); + NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPath" + Integer.toString(intDirectories), currentDir.getPath()); + } ((GameListActivity)m_activity).SwitchPage(0); } diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListActivity.java b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListActivity.java index 3678cf7637..f1d5fbc170 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListActivity.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListActivity.java @@ -293,6 +293,8 @@ public final class GameListActivity extends Activity NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPath" + i, ""); } + NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPathes", "0"); + ArrayAdapter adapter = ((GameListFragment)GameListActivity.this.mCurFragment).getAdapter(); adapter.clear(); adapter.notifyDataSetChanged(); diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListFragment.java index b72509419f..6d4a4bfe22 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListFragment.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListFragment.java @@ -98,22 +98,6 @@ public final class GameListFragment extends Fragment } Collections.sort(fls); - // Remove any duplicate items from the list. - // We don't need to index these in the game list more than once. - // - // This works by comparing the paths of items in the file list for equality, - // so there should be no worries about accidentally removing a valid game. - for (int i = 0; i < fls.size(); i++) - { - for (int j = i+1; j < fls.size(); j++) - { - if (fls.get(j).getPath().equals(fls.get(i).getPath())) - { - fls.remove(j); - } - } - } - mGameAdapter = new GameListAdapter(mMe, R.layout.gamelist_layout, fls); mMainList.setAdapter(mGameAdapter); From a90e82d2c0990fd619e46a107c38685223a689a9 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 24 Aug 2013 09:19:40 -0400 Subject: [PATCH 03/12] [Android] Invalidate the options menu upon switching fragments. This hides the 'clear game list' option faster when switching fragment. Also fixes a rare bug where the option might not even redraw when returning to the game list. --- .../org/dolphinemu/dolphinemu/gamelist/GameListActivity.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListActivity.java b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListActivity.java index f1d5fbc170..b12bff7ebc 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListActivity.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListActivity.java @@ -173,6 +173,7 @@ public final class GameListActivity extends Activity mCurFragment = new GameListFragment(); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, mCurFragment).commit(); + invalidateOptionsMenu(); } break; @@ -182,6 +183,7 @@ public final class GameListActivity extends Activity mCurFragment = new FolderBrowser(); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, mCurFragment).commit(); + invalidateOptionsMenu(); } break; @@ -198,6 +200,7 @@ public final class GameListActivity extends Activity mCurFragment = new InputConfigFragment(); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, mCurFragment).commit(); + invalidateOptionsMenu(); } break; @@ -207,6 +210,7 @@ public final class GameListActivity extends Activity mCurFragment = new AboutFragment(); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, mCurFragment).commit(); + invalidateOptionsMenu(); } break; From d2481aa477a4bf1eb0c9db19d01dd3478a5a41fa Mon Sep 17 00:00:00 2001 From: "pascal.jouy" Date: Sat, 24 Aug 2013 13:36:18 +0000 Subject: [PATCH 04/12] [Android] First french translation. Can't try it as I don't have any Android device. Any feedback appreciated. If misplaced, please fix it. --- Source/Android/res/values-fr/strings.xml | 122 +++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 Source/Android/res/values-fr/strings.xml diff --git a/Source/Android/res/values-fr/strings.xml b/Source/Android/res/values-fr/strings.xml new file mode 100644 index 0000000000..a5b0e655e4 --- /dev/null +++ b/Source/Android/res/values-fr/strings.xml @@ -0,0 +1,122 @@ + + + + + Émulateur Dolphin + + + Ouvre le dessinateur de navigation + Ferme le dessinateur de navigation + + + Révision : + Prend en charge OpenGL ES 3 : + + + Répertoire courant : + Répertoire parent + Répertoire + Taille du fichier : + + + Effacer la liste de jeux + Voulez-vous effacer la liste de jeux ? + Liste de jeux + Parcourir un répertoire + Réglages + Configuation de la manette + A propos... + + + Fichier cliqué : + + + Bouton A + Bouton B + Bouton Start + Bouton X + Bouton Y + Bouton Z + D-Pad Haut + D-Pad Bas + D-Pad Gauche + D-Pad Droite + Stick principal Haut + Stick principal Bas + Stick principal Gauche + Stick principal Droite + Stick C Haut + Stick C Bas + Stick C Gauche + Stick C Droite + Bouton L + Bouton R + Appuyez sur un bouton pour configurer %1$s + + + Interpréteur + Recompilateur JIT64 + Recompilateur JITIL + Recompilateur JIT ARM + Core du CPU + CPU + Core à utiliser pour l'émulation + Dual Core + Répartit le travail sur 2 cores de CPU au lieu d'un. Augmente la vitesse. + Vidéo + Rendu logiciel + OpenGL ES 3 + Moteur graphique + Moteur graphique à utiliser + Afficher les contrôles à l'écran + + Améliorations + Résolution interne + Spécifie la résolution utilisée pour le rendu. Une haute résolution va beaucoup augmenter la qualité visuelle mais demande beaucoup de ressources et peut causer des pépins dans certains jeux. + Filtrage Anisotropique + Améliore la qualité visuelle des textures qui sont à des angles de vue obliques. Peut provoquer des problèmes dans un petit nombre de jeux. + Copie de l'EFB à l'échelle + Améliore beaucoup la qualité des textures générées en utilisant des effets de rendu vers texture. Augmenter la résolution interne améliorera les effets de cette option. Baisse légèrement les performances et peut poser quelques problèmes (peu probable). + Eclairage par pixel + Calcule la lumière des graphiques 3D pour chaque pixel au lieu de vertex. Baisse la vitesse de l'émulation de quelques pourcents (depend de votre GPU). C'est une amélioration normalement saine, mais peut poser parfois des problèmes. + Forcer le filtrage de texture + Force le filtrage de texture même si le jeu émulé l'a explicitement désactivé. Améliore légèrement la qualité des textures mais peut provoquer des pépins dans certains jeux. + Désactiver le brouillard + Rend les objets lointains en désactivant le brouillard, améliorant donc les détails. Désactiver le brouillard va corrompre les jeux se basant sur une émulation correcte du brouillard. + + Hacks + Frame buffer embarqué + Ignorer l'accès à l'EFB depuis le CPU + Ignore les requêtes de lecture ou écriture du CPU vers l'EFB. + Ignorer les changements de formats + Ignorer tous les changements du format d'EFB. + Copies de l'EFB + Détermine comment les copies de l'EFB seront émulées. + Texture + RAM (non cachée) + RAM (cachée) + Cache de texture + Précision du cache de texture + Plus la sélection est haute, moins il y a de chances que l'émulateur manquera les mises à jour de textures depuis la RAM. + Faible + Moyen + Haut + Frame Buffer externe + Détermine comment le XFB sera émulé. + Virtuel + Réel + Listes des caches d'affichage + Accélère légèrement l'émulation en cachant les listes d'affichage. + Désactiver Destination Alpha + Désactive l'émulation d'une fonctionnalité matérielle nommée Destination alpha, qui est utilisée dans beaucoup de jeux pour divers effets graphiques. + Calcul rapide de la profondeur + Utilise un algorithme moins précis pour calculer les valeurs de profondeur. + + + Oui + Non + Désactivé + Autres + + + From 5d9700a30388ef0b20bd6a7c9a81c328f482d044 Mon Sep 17 00:00:00 2001 From: "pascal.jouy" Date: Sat, 24 Aug 2013 13:37:42 +0000 Subject: [PATCH 05/12] [Android] Added 2nd file for French translation. (Sorry, I didn't find how to upload 2 files at the same time in Google Code) --- Source/Android/res/values-fr/arrays.xml | 128 ++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 Source/Android/res/values-fr/arrays.xml diff --git a/Source/Android/res/values-fr/arrays.xml b/Source/Android/res/values-fr/arrays.xml new file mode 100644 index 0000000000..4dd48c9a75 --- /dev/null +++ b/Source/Android/res/values-fr/arrays.xml @@ -0,0 +1,128 @@ + + + + + + + + @string/interpreter + @string/jit64_recompiler + @string/jitil_recompiler + + + 0 + 1 + 2 + + + + + @string/interpreter + @string/jit_arm_recompiler + + + 0 + 3 + + + + + @string/interpreter + + + 0 + + + + + + @string/software_renderer + @string/opengl_es3 + + + Rendu logiciel + OGL + + + + + @string/software_renderer + + + Rendu logiciel + + + + + + @string/disabled + @string/efb_copy_texture + @string/efb_copy_ram_uncached + @string/efb_copy_ram_cached + + + Désactivé + Texture + RAM (caché) + RAM (non caché) + + + + + @string/texture_cache_accuracy_low + @string/texture_cache_accuracy_medium + @string/texture_cache_accuracy_high + + + 128 + 512 + 0 + + + + + @string/disabled + @string/external_frame_buffer_virtual + @string/external_frame_buffer_real + + + Désactivé + Virtuel + Réel + + + + + Native (640x528) + 1,5x Native (960x792) + 2x Native (1280x1056) + 2,5x Native (1600x1320) + 3x Native (1920x1584) + 4x Native (2560x2112) + + + 2 + 3 + 4 + 5 + 6 + 7 + + + + + 1x + 2x + 4x + 8x + 16x + + + 0 + 1 + 2 + 3 + 4 + + + \ No newline at end of file From 31ea87d705868f5c1bf5b19982647fddaec66188 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 24 Aug 2013 09:43:21 -0400 Subject: [PATCH 06/12] Revert "[Android] Added 2nd file for French translation. " This breaks the Android UI. 'translatable="false"' is there for a reason." This reverts commit 5d9700a30388ef0b20bd6a7c9a81c328f482d044. --- Source/Android/res/values-fr/arrays.xml | 128 ------------------------ 1 file changed, 128 deletions(-) delete mode 100644 Source/Android/res/values-fr/arrays.xml diff --git a/Source/Android/res/values-fr/arrays.xml b/Source/Android/res/values-fr/arrays.xml deleted file mode 100644 index 4dd48c9a75..0000000000 --- a/Source/Android/res/values-fr/arrays.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - @string/interpreter - @string/jit64_recompiler - @string/jitil_recompiler - - - 0 - 1 - 2 - - - - - @string/interpreter - @string/jit_arm_recompiler - - - 0 - 3 - - - - - @string/interpreter - - - 0 - - - - - - @string/software_renderer - @string/opengl_es3 - - - Rendu logiciel - OGL - - - - - @string/software_renderer - - - Rendu logiciel - - - - - - @string/disabled - @string/efb_copy_texture - @string/efb_copy_ram_uncached - @string/efb_copy_ram_cached - - - Désactivé - Texture - RAM (caché) - RAM (non caché) - - - - - @string/texture_cache_accuracy_low - @string/texture_cache_accuracy_medium - @string/texture_cache_accuracy_high - - - 128 - 512 - 0 - - - - - @string/disabled - @string/external_frame_buffer_virtual - @string/external_frame_buffer_real - - - Désactivé - Virtuel - Réel - - - - - Native (640x528) - 1,5x Native (960x792) - 2x Native (1280x1056) - 2,5x Native (1600x1320) - 3x Native (1920x1584) - 4x Native (2560x2112) - - - 2 - 3 - 4 - 5 - 6 - 7 - - - - - 1x - 2x - 4x - 8x - 16x - - - 0 - 1 - 2 - 3 - 4 - - - \ No newline at end of file From 2017ab9323818c12641bd90c15c8eaf59091c9ba Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 24 Aug 2013 09:50:02 -0400 Subject: [PATCH 07/12] Revert "[Android] First french translation. " This reverts commit d2481aa477a4bf1eb0c9db19d01dd3478a5a41fa. --- Source/Android/res/values-fr/strings.xml | 122 ----------------------- 1 file changed, 122 deletions(-) delete mode 100644 Source/Android/res/values-fr/strings.xml diff --git a/Source/Android/res/values-fr/strings.xml b/Source/Android/res/values-fr/strings.xml deleted file mode 100644 index a5b0e655e4..0000000000 --- a/Source/Android/res/values-fr/strings.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - Émulateur Dolphin - - - Ouvre le dessinateur de navigation - Ferme le dessinateur de navigation - - - Révision : - Prend en charge OpenGL ES 3 : - - - Répertoire courant : - Répertoire parent - Répertoire - Taille du fichier : - - - Effacer la liste de jeux - Voulez-vous effacer la liste de jeux ? - Liste de jeux - Parcourir un répertoire - Réglages - Configuation de la manette - A propos... - - - Fichier cliqué : - - - Bouton A - Bouton B - Bouton Start - Bouton X - Bouton Y - Bouton Z - D-Pad Haut - D-Pad Bas - D-Pad Gauche - D-Pad Droite - Stick principal Haut - Stick principal Bas - Stick principal Gauche - Stick principal Droite - Stick C Haut - Stick C Bas - Stick C Gauche - Stick C Droite - Bouton L - Bouton R - Appuyez sur un bouton pour configurer %1$s - - - Interpréteur - Recompilateur JIT64 - Recompilateur JITIL - Recompilateur JIT ARM - Core du CPU - CPU - Core à utiliser pour l'émulation - Dual Core - Répartit le travail sur 2 cores de CPU au lieu d'un. Augmente la vitesse. - Vidéo - Rendu logiciel - OpenGL ES 3 - Moteur graphique - Moteur graphique à utiliser - Afficher les contrôles à l'écran - - Améliorations - Résolution interne - Spécifie la résolution utilisée pour le rendu. Une haute résolution va beaucoup augmenter la qualité visuelle mais demande beaucoup de ressources et peut causer des pépins dans certains jeux. - Filtrage Anisotropique - Améliore la qualité visuelle des textures qui sont à des angles de vue obliques. Peut provoquer des problèmes dans un petit nombre de jeux. - Copie de l'EFB à l'échelle - Améliore beaucoup la qualité des textures générées en utilisant des effets de rendu vers texture. Augmenter la résolution interne améliorera les effets de cette option. Baisse légèrement les performances et peut poser quelques problèmes (peu probable). - Eclairage par pixel - Calcule la lumière des graphiques 3D pour chaque pixel au lieu de vertex. Baisse la vitesse de l'émulation de quelques pourcents (depend de votre GPU). C'est une amélioration normalement saine, mais peut poser parfois des problèmes. - Forcer le filtrage de texture - Force le filtrage de texture même si le jeu émulé l'a explicitement désactivé. Améliore légèrement la qualité des textures mais peut provoquer des pépins dans certains jeux. - Désactiver le brouillard - Rend les objets lointains en désactivant le brouillard, améliorant donc les détails. Désactiver le brouillard va corrompre les jeux se basant sur une émulation correcte du brouillard. - - Hacks - Frame buffer embarqué - Ignorer l'accès à l'EFB depuis le CPU - Ignore les requêtes de lecture ou écriture du CPU vers l'EFB. - Ignorer les changements de formats - Ignorer tous les changements du format d'EFB. - Copies de l'EFB - Détermine comment les copies de l'EFB seront émulées. - Texture - RAM (non cachée) - RAM (cachée) - Cache de texture - Précision du cache de texture - Plus la sélection est haute, moins il y a de chances que l'émulateur manquera les mises à jour de textures depuis la RAM. - Faible - Moyen - Haut - Frame Buffer externe - Détermine comment le XFB sera émulé. - Virtuel - Réel - Listes des caches d'affichage - Accélère légèrement l'émulation en cachant les listes d'affichage. - Désactiver Destination Alpha - Désactive l'émulation d'une fonctionnalité matérielle nommée Destination alpha, qui est utilisée dans beaucoup de jeux pour divers effets graphiques. - Calcul rapide de la profondeur - Utilise un algorithme moins précis pour calculer les valeurs de profondeur. - - - Oui - Non - Désactivé - Autres - - - From 1cbc8f8182246772dffc67a48fdebe77537d2a3d Mon Sep 17 00:00:00 2001 From: degasus Date: Sat, 24 Aug 2013 18:43:07 +0200 Subject: [PATCH 08/12] sync gpu: check disable flag before volatile This could be an optimizing as this condition could be moved out of the loop. So we save an atomic load. But I don't know if it matters at all --- Source/Core/VideoCommon/Src/Fifo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/VideoCommon/Src/Fifo.cpp b/Source/Core/VideoCommon/Src/Fifo.cpp index a00e531fa4..b7e00e128a 100644 --- a/Source/Core/VideoCommon/Src/Fifo.cpp +++ b/Source/Core/VideoCommon/Src/Fifo.cpp @@ -154,7 +154,7 @@ void RunGpuLoop() fifo.isGpuReadingData = true; CommandProcessor::isPossibleWaitingSetDrawDone = fifo.bFF_GPLinkEnable ? true : false; - if (Common::AtomicLoad(CommandProcessor::VITicks) > CommandProcessor::m_cpClockOrigin || !Core::g_CoreStartupParameter.bSyncGPU) + if (!Core::g_CoreStartupParameter.bSyncGPU || Common::AtomicLoad(CommandProcessor::VITicks) > CommandProcessor::m_cpClockOrigin) { u32 readPtr = fifo.CPReadPointer; u8 *uData = Memory::GetPointer(readPtr); @@ -171,7 +171,7 @@ void RunGpuLoop() cyclesExecuted = OpcodeDecoder_Run(g_bSkipCurrentFrame); - if (Common::AtomicLoad(CommandProcessor::VITicks) > cyclesExecuted && Core::g_CoreStartupParameter.bSyncGPU) + if (Core::g_CoreStartupParameter.bSyncGPU && Common::AtomicLoad(CommandProcessor::VITicks) > cyclesExecuted) Common::AtomicAdd(CommandProcessor::VITicks, -(s32)cyclesExecuted); Common::AtomicStore(fifo.CPReadPointer, readPtr); From 417bfb2630b40956a62c9ff9868965ea4d9caded Mon Sep 17 00:00:00 2001 From: John Chadwick Date: Sat, 24 Aug 2013 21:43:33 -0400 Subject: [PATCH 09/12] Send pad buffer to clients when they join; fixes issue 6524. --- Source/Core/Core/Src/NetPlayServer.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Source/Core/Core/Src/NetPlayServer.cpp b/Source/Core/Core/Src/NetPlayServer.cpp index 30b1d26664..0fd404ea03 100644 --- a/Source/Core/Core/Src/NetPlayServer.cpp +++ b/Source/Core/Core/Src/NetPlayServer.cpp @@ -187,6 +187,12 @@ unsigned int NetPlayServer::OnConnect(sf::SocketTCP& socket) socket.Send(spac); } + // send the pad buffer value + spac.Clear(); + spac << (MessageId)NP_MSG_PAD_BUFFER; + spac << (u32)m_target_buffer_size; + socket.Send(spac); + // sync values with new client std::map::const_iterator i, From 8882f89bbce2d4d3f6c0c5c0c0ede97a842f2d35 Mon Sep 17 00:00:00 2001 From: Rachel Bryk Date: Sat, 24 Aug 2013 23:15:55 -0400 Subject: [PATCH 10/12] Allow user folder to be set via command line. Clean up GetUserPath(), to allow setting any path with it. --- Source/Core/Common/Src/FileUtil.cpp | 73 +++++++++++++++++++++++++---- Source/Core/DolphinWX/Src/Main.cpp | 12 +++++ 2 files changed, 76 insertions(+), 9 deletions(-) diff --git a/Source/Core/Common/Src/FileUtil.cpp b/Source/Core/Common/Src/FileUtil.cpp index ebd73efe49..23bfb28408 100644 --- a/Source/Core/Common/Src/FileUtil.cpp +++ b/Source/Core/Common/Src/FileUtil.cpp @@ -710,22 +710,77 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string &new if (!newPath.empty()) { - if(DirIDX != D_WIIROOT_IDX) - PanicAlert("Trying to change user path other than Wii root"); - if (!File::IsDirectory(newPath)) { - WARN_LOG(COMMON, "Invalid path specified %s, Wii user path will be set to default", newPath.c_str()); - paths[D_WIIROOT_IDX] = paths[D_USER_IDX] + WII_USER_DIR; + WARN_LOG(COMMON, "Invalid path specified %s", newPath.c_str()); + return paths[DirIDX]; } else { - paths[D_WIIROOT_IDX] = newPath; + paths[DirIDX] = newPath; + } + + switch (DirIDX) + { + case D_WIIROOT_IDX: + paths[D_WIIUSER_IDX] = paths[D_WIIROOT_IDX] + DIR_SEP; + paths[D_WIISYSCONF_IDX] = paths[D_WIIUSER_IDX] + WII_SYSCONF_DIR + DIR_SEP; + paths[F_WIISYSCONF_IDX] = paths[D_WIISYSCONF_IDX] + WII_SYSCONF; + break; + + case D_USER_IDX: + paths[D_GCUSER_IDX] = paths[D_USER_IDX] + GC_USER_DIR DIR_SEP; + paths[D_WIIROOT_IDX] = paths[D_USER_IDX] + WII_USER_DIR; + paths[D_WIIUSER_IDX] = paths[D_WIIROOT_IDX] + DIR_SEP; + paths[D_CONFIG_IDX] = paths[D_USER_IDX] + CONFIG_DIR DIR_SEP; + paths[D_GAMECONFIG_IDX] = paths[D_USER_IDX] + GAMECONFIG_DIR DIR_SEP; + paths[D_MAPS_IDX] = paths[D_USER_IDX] + MAPS_DIR DIR_SEP; + paths[D_CACHE_IDX] = paths[D_USER_IDX] + CACHE_DIR DIR_SEP; + paths[D_SHADERCACHE_IDX] = paths[D_USER_IDX] + SHADERCACHE_DIR DIR_SEP; + paths[D_SHADERS_IDX] = paths[D_USER_IDX] + SHADERS_DIR DIR_SEP; + paths[D_STATESAVES_IDX] = paths[D_USER_IDX] + STATESAVES_DIR DIR_SEP; + paths[D_SCREENSHOTS_IDX] = paths[D_USER_IDX] + SCREENSHOTS_DIR DIR_SEP; + paths[D_OPENCL_IDX] = paths[D_USER_IDX] + OPENCL_DIR DIR_SEP; + paths[D_HIRESTEXTURES_IDX] = paths[D_USER_IDX] + HIRES_TEXTURES_DIR DIR_SEP; + paths[D_DUMP_IDX] = paths[D_USER_IDX] + DUMP_DIR DIR_SEP; + paths[D_DUMPFRAMES_IDX] = paths[D_USER_IDX] + DUMP_FRAMES_DIR DIR_SEP; + paths[D_DUMPAUDIO_IDX] = paths[D_USER_IDX] + DUMP_AUDIO_DIR DIR_SEP; + paths[D_DUMPTEXTURES_IDX] = paths[D_USER_IDX] + DUMP_TEXTURES_DIR DIR_SEP; + paths[D_DUMPDSP_IDX] = paths[D_USER_IDX] + DUMP_DSP_DIR DIR_SEP; + paths[D_LOGS_IDX] = paths[D_USER_IDX] + LOGS_DIR DIR_SEP; + paths[D_MAILLOGS_IDX] = paths[D_USER_IDX] + MAIL_LOGS_DIR DIR_SEP; + paths[D_THEMES_IDX] = paths[D_USER_IDX] + THEMES_DIR DIR_SEP; + paths[D_WIISYSCONF_IDX] = paths[D_WIIUSER_IDX] + WII_SYSCONF_DIR DIR_SEP; + paths[F_DOLPHINCONFIG_IDX] = paths[D_CONFIG_IDX] + DOLPHIN_CONFIG; + paths[F_DEBUGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + DEBUGGER_CONFIG; + paths[F_LOGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + LOGGER_CONFIG; + paths[F_MAINLOG_IDX] = paths[D_LOGS_IDX] + MAIN_LOG; + paths[F_WIISYSCONF_IDX] = paths[D_WIISYSCONF_IDX] + WII_SYSCONF; + paths[F_RAMDUMP_IDX] = paths[D_DUMP_IDX] + RAM_DUMP; + paths[F_ARAMDUMP_IDX] = paths[D_DUMP_IDX] + ARAM_DUMP; + paths[F_FAKEVMEMDUMP_IDX] = paths[D_DUMP_IDX] + FAKEVMEM_DUMP; + paths[F_GCSRAM_IDX] = paths[D_GCUSER_IDX] + GC_SRAM; + break; + + case D_CONFIG_IDX: + paths[F_DOLPHINCONFIG_IDX] = paths[D_CONFIG_IDX] + DOLPHIN_CONFIG; + paths[F_DEBUGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + DEBUGGER_CONFIG; + paths[F_LOGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + LOGGER_CONFIG; + break; + + case D_GCUSER_IDX: + paths[F_GCSRAM_IDX] = paths[D_GCUSER_IDX] + GC_SRAM; + break; + + case D_DUMP_IDX: + paths[F_RAMDUMP_IDX] = paths[D_DUMP_IDX] + RAM_DUMP; + paths[F_ARAMDUMP_IDX] = paths[D_DUMP_IDX] + ARAM_DUMP; + paths[F_FAKEVMEMDUMP_IDX] = paths[D_DUMP_IDX] + FAKEVMEM_DUMP; + break; + case D_LOGS_IDX: + paths[F_MAINLOG_IDX] = paths[D_LOGS_IDX] + MAIN_LOG; } - paths[D_WIIUSER_IDX] = paths[D_WIIROOT_IDX] + DIR_SEP; - paths[D_WIISYSCONF_IDX] = paths[D_WIIUSER_IDX] + WII_SYSCONF_DIR + DIR_SEP; - paths[F_WIISYSCONF_IDX] = paths[D_WIISYSCONF_IDX] + WII_SYSCONF; } return paths[DirIDX]; } diff --git a/Source/Core/DolphinWX/Src/Main.cpp b/Source/Core/DolphinWX/Src/Main.cpp index be1f1b7802..f904ceb0f6 100644 --- a/Source/Core/DolphinWX/Src/Main.cpp +++ b/Source/Core/DolphinWX/Src/Main.cpp @@ -128,6 +128,7 @@ bool DolphinApp::OnInit() wxString videoBackendName; wxString audioEmulationName; + wxString userPath; #if wxUSE_CMDLINE_PARSER // Parse command lines wxCmdLineEntryDesc cmdLineDesc[] = @@ -172,6 +173,11 @@ bool DolphinApp::OnInit() "Play a movie file", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, + { + wxCMD_LINE_OPTION, "U", "user", + "User folder path", + wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL + }, { wxCMD_LINE_NONE, NULL, NULL, NULL, wxCMD_LINE_VAL_NONE, 0 } @@ -193,6 +199,12 @@ bool DolphinApp::OnInit() selectAudioEmulation = parser.Found(wxT("audio_emulation"), &audioEmulationName); playMovie = parser.Found(wxT("movie"), &movieFile); + + if (parser.Found(wxT("user"), &userPath)) + { + File::CreateFullPath(WxStrToStr(userPath) + DIR_SEP); + File::GetUserPath(D_USER_IDX, userPath.ToStdString() + DIR_SEP); + } #endif // wxUSE_CMDLINE_PARSER #if defined _DEBUG && defined _WIN32 From 18749bad6840698450ca0c310b05a72482b5fb62 Mon Sep 17 00:00:00 2001 From: Rachel Bryk Date: Sun, 25 Aug 2013 01:35:32 -0400 Subject: [PATCH 11/12] Actually allow the dump and logs folders to be set outside of user/ --- Source/Core/Common/Src/CommonPaths.h | 28 +++++++++++++------------- Source/Core/Common/Src/FileUtil.cpp | 30 +++++++++++++++++----------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/Source/Core/Common/Src/CommonPaths.h b/Source/Core/Common/Src/CommonPaths.h index 1f3787daf4..88e2b6ce7c 100644 --- a/Source/Core/Common/Src/CommonPaths.h +++ b/Source/Core/Common/Src/CommonPaths.h @@ -61,28 +61,28 @@ #define JAP_DIR "JAP" // Subdirs in the User dir returned by GetUserPath(D_USER_IDX) -#define GC_USER_DIR "GC" +#define GC_USER_DIR "GC" #define WII_USER_DIR "Wii" -#define CONFIG_DIR "Config" +#define CONFIG_DIR "Config" #define GAMECONFIG_DIR "GameConfig" -#define MAPS_DIR "Maps" -#define CACHE_DIR "Cache" +#define MAPS_DIR "Maps" +#define CACHE_DIR "Cache" #define SHADERCACHE_DIR "ShaderCache" #define STATESAVES_DIR "StateSaves" #define SCREENSHOTS_DIR "ScreenShots" -#define OPENCL_DIR "OpenCL" -#define LOAD_DIR "Load" +#define OPENCL_DIR "OpenCL" +#define LOAD_DIR "Load" #define HIRES_TEXTURES_DIR LOAD_DIR DIR_SEP "Textures" -#define DUMP_DIR "Dump" -#define DUMP_TEXTURES_DIR DUMP_DIR DIR_SEP "Textures" -#define DUMP_FRAMES_DIR DUMP_DIR DIR_SEP "Frames" -#define DUMP_AUDIO_DIR DUMP_DIR DIR_SEP "Audio" -#define DUMP_DSP_DIR DUMP_DIR DIR_SEP "DSP" -#define LOGS_DIR "Logs" -#define MAIL_LOGS_DIR LOGS_DIR DIR_SEP "Mail" +#define DUMP_DIR "Dump" +#define DUMP_TEXTURES_DIR "Textures" +#define DUMP_FRAMES_DIR "Frames" +#define DUMP_AUDIO_DIR "Audio" +#define DUMP_DSP_DIR "DSP" +#define LOGS_DIR "Logs" +#define MAIL_LOGS_DIR "Mail" #define SHADERS_DIR "Shaders" #define WII_SYSCONF_DIR "shared2" DIR_SEP "sys" -#define THEMES_DIR "Themes" +#define THEMES_DIR "Themes" // Filenames // Files in the directory returned by GetUserPath(D_CONFIG_IDX) diff --git a/Source/Core/Common/Src/FileUtil.cpp b/Source/Core/Common/Src/FileUtil.cpp index 23bfb28408..cd943cedfc 100644 --- a/Source/Core/Common/Src/FileUtil.cpp +++ b/Source/Core/Common/Src/FileUtil.cpp @@ -689,14 +689,14 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string &new paths[D_OPENCL_IDX] = paths[D_USER_IDX] + OPENCL_DIR DIR_SEP; paths[D_HIRESTEXTURES_IDX] = paths[D_USER_IDX] + HIRES_TEXTURES_DIR DIR_SEP; paths[D_DUMP_IDX] = paths[D_USER_IDX] + DUMP_DIR DIR_SEP; - paths[D_DUMPFRAMES_IDX] = paths[D_USER_IDX] + DUMP_FRAMES_DIR DIR_SEP; - paths[D_DUMPAUDIO_IDX] = paths[D_USER_IDX] + DUMP_AUDIO_DIR DIR_SEP; - paths[D_DUMPTEXTURES_IDX] = paths[D_USER_IDX] + DUMP_TEXTURES_DIR DIR_SEP; - paths[D_DUMPDSP_IDX] = paths[D_USER_IDX] + DUMP_DSP_DIR DIR_SEP; + paths[D_DUMPFRAMES_IDX] = paths[D_DUMP_IDX] + DUMP_FRAMES_DIR DIR_SEP; + paths[D_DUMPAUDIO_IDX] = paths[D_DUMP_IDX] + DUMP_AUDIO_DIR DIR_SEP; + paths[D_DUMPTEXTURES_IDX] = paths[D_DUMP_IDX] + DUMP_TEXTURES_DIR DIR_SEP; + paths[D_DUMPDSP_IDX] = paths[D_DUMP_IDX] + DUMP_DSP_DIR DIR_SEP; paths[D_LOGS_IDX] = paths[D_USER_IDX] + LOGS_DIR DIR_SEP; - paths[D_MAILLOGS_IDX] = paths[D_USER_IDX] + MAIL_LOGS_DIR DIR_SEP; - paths[D_THEMES_IDX] = paths[D_USER_IDX] + THEMES_DIR DIR_SEP; + paths[D_MAILLOGS_IDX] = paths[D_LOGS_IDX] + MAIL_LOGS_DIR DIR_SEP; paths[D_WIISYSCONF_IDX] = paths[D_WIIUSER_IDX] + WII_SYSCONF_DIR DIR_SEP; + paths[D_THEMES_IDX] = paths[D_USER_IDX] + THEMES_DIR DIR_SEP; paths[F_DOLPHINCONFIG_IDX] = paths[D_CONFIG_IDX] + DOLPHIN_CONFIG; paths[F_DEBUGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + DEBUGGER_CONFIG; paths[F_LOGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + LOGGER_CONFIG; @@ -743,14 +743,14 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string &new paths[D_OPENCL_IDX] = paths[D_USER_IDX] + OPENCL_DIR DIR_SEP; paths[D_HIRESTEXTURES_IDX] = paths[D_USER_IDX] + HIRES_TEXTURES_DIR DIR_SEP; paths[D_DUMP_IDX] = paths[D_USER_IDX] + DUMP_DIR DIR_SEP; - paths[D_DUMPFRAMES_IDX] = paths[D_USER_IDX] + DUMP_FRAMES_DIR DIR_SEP; - paths[D_DUMPAUDIO_IDX] = paths[D_USER_IDX] + DUMP_AUDIO_DIR DIR_SEP; - paths[D_DUMPTEXTURES_IDX] = paths[D_USER_IDX] + DUMP_TEXTURES_DIR DIR_SEP; - paths[D_DUMPDSP_IDX] = paths[D_USER_IDX] + DUMP_DSP_DIR DIR_SEP; + paths[D_DUMPFRAMES_IDX] = paths[D_DUMP_IDX] + DUMP_FRAMES_DIR DIR_SEP; + paths[D_DUMPAUDIO_IDX] = paths[D_DUMP_IDX] + DUMP_AUDIO_DIR DIR_SEP; + paths[D_DUMPTEXTURES_IDX] = paths[D_DUMP_IDX] + DUMP_TEXTURES_DIR DIR_SEP; + paths[D_DUMPDSP_IDX] = paths[D_DUMP_IDX] + DUMP_DSP_DIR DIR_SEP; paths[D_LOGS_IDX] = paths[D_USER_IDX] + LOGS_DIR DIR_SEP; - paths[D_MAILLOGS_IDX] = paths[D_USER_IDX] + MAIL_LOGS_DIR DIR_SEP; - paths[D_THEMES_IDX] = paths[D_USER_IDX] + THEMES_DIR DIR_SEP; + paths[D_MAILLOGS_IDX] = paths[D_LOGS_IDX] + MAIL_LOGS_DIR DIR_SEP; paths[D_WIISYSCONF_IDX] = paths[D_WIIUSER_IDX] + WII_SYSCONF_DIR DIR_SEP; + paths[D_THEMES_IDX] = paths[D_USER_IDX] + THEMES_DIR DIR_SEP; paths[F_DOLPHINCONFIG_IDX] = paths[D_CONFIG_IDX] + DOLPHIN_CONFIG; paths[F_DEBUGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + DEBUGGER_CONFIG; paths[F_LOGGERCONFIG_IDX] = paths[D_CONFIG_IDX] + LOGGER_CONFIG; @@ -773,15 +773,21 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string &new break; case D_DUMP_IDX: + paths[D_DUMPFRAMES_IDX] = paths[D_DUMP_IDX] + DUMP_FRAMES_DIR DIR_SEP; + paths[D_DUMPAUDIO_IDX] = paths[D_DUMP_IDX] + DUMP_AUDIO_DIR DIR_SEP; + paths[D_DUMPTEXTURES_IDX] = paths[D_DUMP_IDX] + DUMP_TEXTURES_DIR DIR_SEP; + paths[D_DUMPDSP_IDX] = paths[D_DUMP_IDX] + DUMP_DSP_DIR DIR_SEP; paths[F_RAMDUMP_IDX] = paths[D_DUMP_IDX] + RAM_DUMP; paths[F_ARAMDUMP_IDX] = paths[D_DUMP_IDX] + ARAM_DUMP; paths[F_FAKEVMEMDUMP_IDX] = paths[D_DUMP_IDX] + FAKEVMEM_DUMP; break; case D_LOGS_IDX: + paths[D_MAILLOGS_IDX] = paths[D_LOGS_IDX] + MAIL_LOGS_DIR DIR_SEP; paths[F_MAINLOG_IDX] = paths[D_LOGS_IDX] + MAIN_LOG; } } + return paths[DirIDX]; } From 0e8f9d8abcef26a4b17e7a38b001efbae0f83e8d Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Sun, 25 Aug 2013 21:30:43 +0200 Subject: [PATCH 12/12] Fix a crash in the Wiimote registration code The code was hitting undefined behavior, causing crashes when starting a Wii game with Dolphin compiled with gcc >= 4.8. Might introduce some slight change in the Wiimote activation logic. Fixes issue 6526. --- .../Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp | 73 ++++++------------- .../Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h | 3 +- 2 files changed, 23 insertions(+), 53 deletions(-) diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp index 39a6b46893..13ae6bd1b2 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp @@ -32,71 +32,42 @@ CWII_IPC_HLE_Device_usb_oh1_57e_305::CWII_IPC_HLE_Device_usb_oh1_57e_305(u32 _De } else { - u8 maxWM = min(BT_DINF.num_registered, MAX_BBMOTES); bdaddr_t tmpBD = BDADDR_ANY; u8 i = 0; - while (i < maxWM) + while (i < MAX_BBMOTES) { - tmpBD.b[5] = BT_DINF.active[i].bdaddr[0] = BT_DINF.registered[i].bdaddr[0]; - tmpBD.b[4] = BT_DINF.active[i].bdaddr[1] = BT_DINF.registered[i].bdaddr[1]; - tmpBD.b[3] = BT_DINF.active[i].bdaddr[2] = BT_DINF.registered[i].bdaddr[2]; - tmpBD.b[2] = BT_DINF.active[i].bdaddr[3] = BT_DINF.registered[i].bdaddr[3]; - tmpBD.b[1] = BT_DINF.active[i].bdaddr[4] = BT_DINF.registered[i].bdaddr[4]; - tmpBD.b[0] = BT_DINF.active[i].bdaddr[5] = BT_DINF.registered[i].bdaddr[5]; - if(i == WIIMOTE_BALANCE_BOARD) + if (i < BT_DINF.num_registered) { - const char * wmName = "Nintendo RVL-WBC-01"; - memcpy(BT_DINF.registered[i].name, wmName, 20); - memcpy(BT_DINF.balance_board.name, wmName, 20); + tmpBD.b[5] = BT_DINF.active[i].bdaddr[0] = BT_DINF.registered[i].bdaddr[0]; + tmpBD.b[4] = BT_DINF.active[i].bdaddr[1] = BT_DINF.registered[i].bdaddr[1]; + tmpBD.b[3] = BT_DINF.active[i].bdaddr[2] = BT_DINF.registered[i].bdaddr[2]; + tmpBD.b[2] = BT_DINF.active[i].bdaddr[3] = BT_DINF.registered[i].bdaddr[3]; + tmpBD.b[1] = BT_DINF.active[i].bdaddr[4] = BT_DINF.registered[i].bdaddr[4]; + tmpBD.b[0] = BT_DINF.active[i].bdaddr[5] = BT_DINF.registered[i].bdaddr[5]; } else { - const char * wmName = "Nintendo RVL-CNT-01"; - memcpy(BT_DINF.registered[i].name, wmName, 20); - memcpy(BT_DINF.active[i].name, wmName, 20); + tmpBD.b[5] = BT_DINF.active[i].bdaddr[0] = BT_DINF.registered[i].bdaddr[0] = i; + tmpBD.b[4] = BT_DINF.active[i].bdaddr[1] = BT_DINF.registered[i].bdaddr[1] = 0; + tmpBD.b[3] = BT_DINF.active[i].bdaddr[2] = BT_DINF.registered[i].bdaddr[2] = 0x79; + tmpBD.b[2] = BT_DINF.active[i].bdaddr[3] = BT_DINF.registered[i].bdaddr[3] = 0x19; + tmpBD.b[1] = BT_DINF.active[i].bdaddr[4] = BT_DINF.registered[i].bdaddr[4] = 2; + tmpBD.b[0] = BT_DINF.active[i].bdaddr[5] = BT_DINF.registered[i].bdaddr[5] = 0x11; } + const char* wmName; + if (i == WIIMOTE_BALANCE_BOARD) + wmName = "Nintendo RVL-WBC-01"; + else + wmName = "Nintendo RVL-CNT-01"; + memcpy(BT_DINF.registered[i].name, wmName, 20); + memcpy(BT_DINF.active[i].name, wmName, 20); + INFO_LOG(WII_IPC_WIIMOTE, "Wiimote %d BT ID %x,%x,%x,%x,%x,%x", i, tmpBD.b[0], tmpBD.b[1], tmpBD.b[2], tmpBD.b[3], tmpBD.b[4], tmpBD.b[5]); m_WiiMotes.push_back(CWII_IPC_HLE_WiiMote(this, i, tmpBD, false)); i++; } - while (i < MAX_BBMOTES) - { - if(i == WIIMOTE_BALANCE_BOARD) - { - const char * wmName = "Nintendo RVL-WBC-01"; - ++BT_DINF.num_registered; - BT_DINF.balance_board.bdaddr[0] = BT_DINF.registered[i].bdaddr[0] = tmpBD.b[5] = i; - BT_DINF.balance_board.bdaddr[1] = BT_DINF.registered[i].bdaddr[1] = tmpBD.b[4] = 0; - BT_DINF.balance_board.bdaddr[2] = BT_DINF.registered[i].bdaddr[2] = tmpBD.b[3] = 0x79; - BT_DINF.balance_board.bdaddr[3] = BT_DINF.registered[i].bdaddr[3] = tmpBD.b[2] = 0x19; - BT_DINF.balance_board.bdaddr[4] = BT_DINF.registered[i].bdaddr[4] = tmpBD.b[1] = 2; - BT_DINF.balance_board.bdaddr[5] = BT_DINF.registered[i].bdaddr[5] = tmpBD.b[0] = 0x11; - memcpy(BT_DINF.registered[i].name, wmName, 20); - memcpy(BT_DINF.balance_board.name, wmName, 20); - - INFO_LOG(WII_IPC_WIIMOTE, "Balance Board %d BT ID %x,%x,%x,%x,%x,%x", i, tmpBD.b[0], tmpBD.b[1], tmpBD.b[2], tmpBD.b[3], tmpBD.b[4], tmpBD.b[5]); - m_WiiMotes.push_back(CWII_IPC_HLE_WiiMote(this, i, tmpBD, false)); - } - else - { - const char * wmName = "Nintendo RVL-CNT-01"; - ++BT_DINF.num_registered; - BT_DINF.active[i].bdaddr[0] = BT_DINF.registered[i].bdaddr[0] = tmpBD.b[5] = i; - BT_DINF.active[i].bdaddr[1] = BT_DINF.registered[i].bdaddr[1] = tmpBD.b[4] = 0; - BT_DINF.active[i].bdaddr[2] = BT_DINF.registered[i].bdaddr[2] = tmpBD.b[3] = 0x79; - BT_DINF.active[i].bdaddr[3] = BT_DINF.registered[i].bdaddr[3] = tmpBD.b[2] = 0x19; - BT_DINF.active[i].bdaddr[4] = BT_DINF.registered[i].bdaddr[4] = tmpBD.b[1] = 2; - BT_DINF.active[i].bdaddr[5] = BT_DINF.registered[i].bdaddr[5] = tmpBD.b[0] = 0x11; - memcpy(BT_DINF.registered[i].name, wmName, 20); - INFO_LOG(WII_IPC_WIIMOTE, "Adding to SYSConf Wiimote %d BT ID %x,%x,%x,%x,%x,%x", i, tmpBD.b[0], tmpBD.b[1], tmpBD.b[2], tmpBD.b[3], tmpBD.b[4], tmpBD.b[5]); - m_WiiMotes.push_back(CWII_IPC_HLE_WiiMote(this, i, tmpBD, false)); - - } - i++; - } - // save now so that when games load sysconf file it includes the new wiimotes // and the correct order for connected wiimotes if (!SConfig::GetInstance().m_SYSCONF->SetArrayData("BT.DINF", (u8*)&BT_DINF, sizeof(_conf_pads)) || !SConfig::GetInstance().m_SYSCONF->Save()) diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h index 7ac93b5be1..253f2d08de 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h @@ -286,8 +286,7 @@ private: { u8 num_registered; _conf_pad_device registered[CONF_PAD_MAX_REGISTERED]; - _conf_pad_device active[MAX_WIIMOTES]; - _conf_pad_device balance_board; + _conf_pad_device active[MAX_BBMOTES]; u8 unknown[0x45]; }; #pragma pack(pop)