mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-09-08 10:35:47 +00:00
Merge commit '992b4ea930
' into upstream-merge-2412
This commit is contained in:
commit
71780352ff
428 changed files with 56324 additions and 46031 deletions
|
@ -31,7 +31,7 @@ if(GIT_FOUND)
|
|||
endif()
|
||||
|
||||
# version number
|
||||
set(DOLPHIN_VERSION_MAJOR "2409")
|
||||
set(DOLPHIN_VERSION_MAJOR "2412")
|
||||
set(DOLPHIN_VERSION_MINOR "0")
|
||||
set(DOLPHIN_VERSION_PATCH ${DOLPHIN_WC_REVISION})
|
||||
|
||||
|
|
|
@ -601,7 +601,7 @@ if(UNIX)
|
|||
endif()
|
||||
|
||||
if(ENABLE_SDL)
|
||||
dolphin_find_optional_system_library(SDL2 Externals/SDL 2.30.6)
|
||||
dolphin_find_optional_system_library(SDL2 Externals/SDL 2.30.9)
|
||||
endif()
|
||||
|
||||
if(ENABLE_ANALYTICS)
|
||||
|
@ -718,7 +718,7 @@ dolphin_make_imported_target_if_missing(LibLZMA::LibLZMA LIBLZMA)
|
|||
|
||||
dolphin_find_optional_system_library_pkgconfig(ZSTD libzstd>=1.4.0 zstd::zstd Externals/zstd)
|
||||
|
||||
dolphin_find_optional_system_library_pkgconfig(ZLIB zlib-ng ZLIB::ZLIB Externals/zlib-ng)
|
||||
add_subdirectory(Externals/zlib-ng)
|
||||
|
||||
dolphin_find_optional_system_library_pkgconfig(MINIZIP
|
||||
"minizip>=4.0.4" minizip::minizip Externals/minizip-ng
|
||||
|
|
|
@ -189,7 +189,7 @@ Summary:
|
|||
|
||||
## <a name="cpp-code-general"></a>General
|
||||
- The codebase currently uses C++20, though not all compilers support all C++20 features.
|
||||
- See CMakeLists.txt "Enforce minimium compiler versions" for the currently supported compilers.
|
||||
- See CMakeLists.txt "Enforce minimum compiler versions" for the currently supported compilers.
|
||||
- Use the [nullptr](https://en.cppreference.com/w/cpp/language/nullptr) type over the macro `NULL`.
|
||||
- If a [range-based for loop](https://en.cppreference.com/w/cpp/language/range-for) can be used instead of container iterators, use it.
|
||||
- Obviously, try not to use `goto` unless you have a *really* good reason for it.
|
||||
|
@ -227,7 +227,7 @@ Summary:
|
|||
|
||||
## <a name="cpp-code-functions"></a>Functions
|
||||
- If a function parameter is a pointer or reference and its value or data isn't intended to be changed, please mark that parameter as `const`.
|
||||
- Functions that specifically modify their parameters should have the respective parameter(s) marked as a pointer so that the variables being modified are syntaxically obvious.
|
||||
- Functions that specifically modify their parameters should have the respective parameter(s) marked as a pointer so that the variables being modified are syntactically obvious.
|
||||
- What not to do:
|
||||
|
||||
```c++
|
||||
|
|
|
@ -44,6 +44,18 @@
|
|||
"title": "Dead to Rights",
|
||||
"E23D98B2CE185C3993A40F2495D37E41B971BF91": "Fix audio issues"
|
||||
},
|
||||
"GEDE01": {
|
||||
"title": "Eternal Darkness",
|
||||
"21068C3CE905FB0CFFAA7408A93154AF8A5295A2": "Fix startup hang"
|
||||
},
|
||||
"GEDJ01": {
|
||||
"title": "Eternal Darkness",
|
||||
"7061F3CF11BF64D3BA7F32CCF2BAC42FF3614AB6": "Fix startup hang"
|
||||
},
|
||||
"GEDP01": {
|
||||
"title": "Eternal Darkness",
|
||||
"6F1B00517CBA30BEB738EAA90E71221378CD570D": "Fix startup hang"
|
||||
},
|
||||
"GEME7F": {
|
||||
"title": "Egg Mania: Eggstreme Madness",
|
||||
"CB04E00918C9C0F161715D21D046ED6620F7ADEF": "Force Progressive Scan"
|
||||
|
@ -236,6 +248,14 @@
|
|||
"title": "Ten Pin Alley 2",
|
||||
"793642AC6862C2F3412035A9E3D7172CC4A1D5C7": "Fix crash on main menu"
|
||||
},
|
||||
"RMHE08": {
|
||||
"title": "Monster Hunter Tri",
|
||||
"CCF233DA57B3E75221870DE502955114B0D4E7FA": "Bloom OFF"
|
||||
},
|
||||
"RMHJ08": {
|
||||
"title": "Monster Hunter Tri",
|
||||
"29D3625B7ED577587E56AA07CB0EB8C47C97E823": "Bloom OFF"
|
||||
},
|
||||
"RMHP08": {
|
||||
"title": "Monster Hunter Tri",
|
||||
"1720C1173D4698167080DBFC4232F21757C4DA08": "Bloom OFF"
|
||||
|
|
|
@ -3,14 +3,6 @@
|
|||
[Core]
|
||||
# Values set here will override the main Dolphin settings.
|
||||
|
||||
[EmuState]
|
||||
# The Emulation State. 1 is worst, 5 is best, 0 is not set.
|
||||
EmulationStateId = 5
|
||||
EmulationIssues =
|
||||
|
||||
[OnLoad]
|
||||
# Add memory patches to be loaded once on boot here.
|
||||
|
||||
[OnFrame]
|
||||
# Add memory patches to be applied every frame here.
|
||||
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
"meta":
|
||||
{
|
||||
"title": "Bloom Texture Definitions",
|
||||
"author": "SuperSamus"
|
||||
},
|
||||
"groups":
|
||||
[
|
||||
{
|
||||
"name": "Bloom",
|
||||
"targets": [
|
||||
{
|
||||
"type": "efb",
|
||||
"texture_filename": "efb1_n000005_320x228_6"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: DE_unique version: 20230727194133)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: DE_unique version: 20241114210104)
|
||||
R22J01 = FlingSmash
|
||||
R23P52 = Barbie und Die Drei Musketiere
|
||||
R25PWR = LEGO Harry Potter: Die Jahre 1-4
|
||||
|
@ -56,7 +56,6 @@ R9EPNP = Brico Party: Werde Heimwerker-König
|
|||
R9GPWR = Die Legende der Wächter
|
||||
R9LP41 = Girls Life: Pyjama-Party
|
||||
R9RPNG = Dance Party - Pop Hits
|
||||
RAAE01 = Disco de Startup Wii
|
||||
RB7P54 = Bully: Die Ehrenrunde
|
||||
RBEP52 = Bee Movie: Das Game
|
||||
RBEX52 = Bee Movie: Das Game
|
||||
|
@ -419,7 +418,7 @@ SVQPVZ = Barbie und ihre Schwestern: Die Rettung der Welpen
|
|||
SVVPAF = Die Croods: Steinzeit Party!
|
||||
SW3PKM = Eurosport Winter Stars
|
||||
CS4P00 = SingItStar NRJ Music Tour
|
||||
RMCPCA = Mario Kart Wii (Katalanische Übersetzung)
|
||||
RZDPCA = The Legend of Zelda: Twilight Princess (Katalanische Übersetzung)
|
||||
SDNP01 = New SUPER DODO BROS wii
|
||||
SIS1OH = SingItStar Custom: Volume 1
|
||||
SISACD = SingItStar AC/DC
|
||||
|
@ -428,14 +427,11 @@ W2CP = Gehirntraining
|
|||
W2FP = Physiofun - Balance Training
|
||||
W2GD = Phoenix Wright Ace Attorney: Justice for All (Deutsche Version)
|
||||
W2GP = Phoenix Wright Ace Attorney: Justice for All
|
||||
W2MP = Blaster Master: Overdrive
|
||||
W2PP = Physiofun - Beckenboden Training
|
||||
W3GD = Phoenix Wright Ace Attorney 3: Trials And Tribulations
|
||||
W3KP = ThruSpace: High Velocity 3D Puzzle
|
||||
W3MP = Die Drei Musketiere Einer für alle!
|
||||
W4AP = Arcade Sports: Air Hockey, Bowling, Pool, Snooker
|
||||
W6BP = Eco-Shooter: Plant 530
|
||||
W72P = Successfully Learning German Year 3
|
||||
W73P = Lernerfolg Grundschule Deutsch Klasse 4
|
||||
W74P = Lernerfolg Grundschule Deutsch Klasse 5
|
||||
W7IP = Lernerfolg Grundschule Deutsch Klasse 2
|
||||
|
@ -444,12 +440,8 @@ W8WP = Happy Holidays Halloween
|
|||
W9BP = Big Town Shoot
|
||||
W9RP = Happy Holidays Christmas
|
||||
WA4P = WarioWare: Do It Yourself - Showcase
|
||||
WA7P = Toribash Violence Perfected
|
||||
WA8P = Art Style: Penta Tentacles
|
||||
WAEP = Around the world
|
||||
WAFP = Airport Mania: First Flight
|
||||
WAHP = Trenches: Generals
|
||||
WALP = Art Style: light trax
|
||||
WAOP = The Very Hungry Caterpillar´s ABC
|
||||
WB2P = Strong Bad Episode 4: Dangeresque 3
|
||||
WB3P = Strong Bad Episode 5: 8-bit is Enough
|
||||
|
@ -487,7 +479,6 @@ WGGP = Gabrielle's Ghostly Groove: Monster Mix
|
|||
WGPP = Zenquaria Virtuelles Aquarium
|
||||
WGSD = Phoenix Wright: Ace Attorney (Deutsche Version)
|
||||
WGSF = Phoenix Wright: Ace Attorney (French Version)
|
||||
WGSP = Phoenix Wright: Ace Attorney
|
||||
WHEE = Heracles: Chariot Racing
|
||||
WHEP = Heracles: Chariot Racing
|
||||
WHFP = Heavy Fire: Special Operations
|
||||
|
@ -562,6 +553,7 @@ WWIP = Where's Wally? Fantastic Journey 1
|
|||
WWRP = Excitebike: World Challenge
|
||||
WWXP = Paper Wars Cannon Fodder
|
||||
WXBP = Ben 10: Alien Force - The Rise of Hex
|
||||
WXIP = Lernerfolg Grundschule Englisch Klasse 1
|
||||
WYIP = escapeVektor: Chapter 1
|
||||
WYSP = Yard Sale Hidden Treasures Sunnyville
|
||||
WZIP = Rubik's Puzzle Galaxy: RUSH
|
||||
|
@ -623,20 +615,13 @@ JDJP = Super Star Wars: The Empire Strikes Back
|
|||
JDLP = Super Star Wars: Return of the Jedi
|
||||
JDWP = Aero The Acrobat
|
||||
JDZD = Mystic Quest Legend
|
||||
NACE = The Legend of Zelda: Ocarina of Time
|
||||
NACP = The Legend of Zelda: Ocarina of Time
|
||||
NADE = Lylat wars
|
||||
NAJN = Sin and Punishment
|
||||
NAKS = Pokémon Snap
|
||||
NAME = Kirby 64: The Crystal Shards
|
||||
NAMP = Kirby 64: The Crystal Shards
|
||||
NAND = Pokémon Puzzle League
|
||||
NAOE = 1080° Snowboarding
|
||||
NAOP = 1080°: TenEighty Snowboarding
|
||||
NARE = The Legend of Zelda: Majora's Mask
|
||||
NARP = The Legend of Zelda: Majora's Mask
|
||||
NAYE = Ogre Battle 64: Person of Lordly Caliber
|
||||
NAYM = Ogre Battle 64: Person of Lordly Caliber
|
||||
LALP = Fantasy Zone II
|
||||
LANP = Alex Kidd: The Lost Stars
|
||||
LAPP = Wonder Boy III: The Dragon's Trap
|
||||
|
@ -686,7 +671,6 @@ EAIP = Top Hunter
|
|||
EBDP = Magical Drop 3
|
||||
EBFP = Spin master
|
||||
EBSP = The Path of the Warrior: Art of Fighting 3
|
||||
ECAP = Real Bout Fatal Fury 2: The Newcomers
|
||||
ECGP = Shock Troopers: 2nd Squad
|
||||
E54P = GHOSTS'N GOBLINS
|
||||
E55P = Commando
|
||||
|
@ -703,21 +687,24 @@ HADE = Internet Kanal
|
|||
HADP = Internet-Kanal
|
||||
HAFP = Wetterkanal
|
||||
HAGA = Nachrichtenkanal
|
||||
HAGE = Nachrichtenkanal
|
||||
HAGJ = Nachrichtenkanal
|
||||
HAGP = Nachrichtenkanal
|
||||
HAJP = Meinungskanal
|
||||
HAKP = Vertrag/Kontakt
|
||||
HAPP = Mii-Wettbewerbskanal
|
||||
HATP = Nintendo-Kanal
|
||||
HAVP = Glückstagskanal
|
||||
HAWP = Metroid Prime 3 Preview
|
||||
HAYA = Fotokanal
|
||||
HCAP = Jam with the Band Live
|
||||
HCAP = Jam with the Band Live-Kanal
|
||||
HCCJ = Adresseinstellungen
|
||||
HCFE = Wii Speak-Kanal
|
||||
HCFP = Wii Speak-Kanal
|
||||
HCGP = Wii & Internet
|
||||
HCMP = Kirby TV-Kanal
|
||||
HCRE = The Legend of Zelda: Skyward Sword - Speicherdaten-Update-Kanal für
|
||||
HCRP = The Legend of Zelda: Skyward Sword - Speicherdaten-Update-Kanal für
|
||||
RFPP = Wii Fit Plus-Kanal
|
||||
RMCP = Mario Kart-Kanal
|
||||
OHBC = Homebrew-Kanal
|
||||
G2FD78 = Tak 2: Der Stab der Träume
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: ES_unique version: 20230727194141)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: ES_unique version: 20241114210112)
|
||||
DCHJAF = We Cheer: Ohasta Produce ! Gentei Collabo Game Disc
|
||||
R22J01 = FlingSmash
|
||||
R23E52 = Barbie y las Tres Mosqueteras
|
||||
|
@ -90,6 +90,7 @@ R9EPNP = Brico Party: ¡Cuidado! Mancha
|
|||
R9GPWR = Ga'Hoole: La Leyenda de los Guardianes
|
||||
R9LP41 = Girls Life: Pijama Party
|
||||
R9TK69 = Tiger Woods PGA Tour 09
|
||||
RAAE01 = Disco de Startup Wii
|
||||
RB9D78 = Bratz: La Película
|
||||
RB9P78 = Bratz: La Película
|
||||
RB9X78 = Bratz: La Película
|
||||
|
@ -109,7 +110,7 @@ RC2E78 = Cars: Mater-National
|
|||
RC2P78 = Cars: La Copa Internacional de Mate
|
||||
RC2X78 = Cars: La Copa Internacional de Mate
|
||||
RC2Y78 = Cars: La Copa Internacional de Mate
|
||||
RC3P41 = Catz: Diviértete con Nuevos Felinos
|
||||
RC3P41 = Catz: ¡Diviértete con nuevos felinos!
|
||||
RC3X41 = Catz: Diviértete con Nuevos Felinos
|
||||
RC4SGT = Shin Chan: ¡Las Nuevas Aventuras para Wii!
|
||||
RC8P7D = Crash: Guerra al Coco-Maníaco
|
||||
|
@ -187,6 +188,7 @@ RH5PKM = Horse Life 2: Amigos para Siempre
|
|||
RH6K69 = Harry Potter and the Half-Blood Prince
|
||||
RH6P69 = Harry Potter y el Misterio del Príncipe
|
||||
RHAK01 = Wii Play
|
||||
RHAW01 = Wii Play
|
||||
RHKJ18 = Hataraku Hit
|
||||
RHKP18 = Job Island
|
||||
RHQP4Q = Hannah Montana: Únete a Su Gira Mundial
|
||||
|
@ -199,6 +201,7 @@ RHZP41 = Horsez: El Valle del Rancho
|
|||
RI2P4Q = High School Musical: ¡Canta con ellos!
|
||||
RI8E41 = Brothers in Arms: Road to Hill 30
|
||||
RI9PGT = Divagirls: Princesas Sobre Hielo
|
||||
RIAE52 = Ice Age: Dawn of the Dinosaurs
|
||||
RIAI52 = Ice Age 3: El Origen de los Dinosaurios
|
||||
RIAP52 = Ice Age 3: El Origen de los Dinosaurios
|
||||
RIBPKM = Igor: El Videojuego
|
||||
|
@ -225,7 +228,7 @@ RJAP52 = Call of Duty: Modern Warfare: Reflex
|
|||
RJAX52 = Call of Duty: Modern Warfare: Reflex
|
||||
RJDPKM = Mi Hospital de Animales
|
||||
RJFE5G = Fitness Ultimatum 2009 de Jillian Michaels
|
||||
RJFPKM = Fitness Ultimatum 2009 con Jillian Michaels
|
||||
RJFPKM = Ponte en forma con Jillian Michaels
|
||||
RJMPRS = Jumper
|
||||
RJNE20 = Build 'n Race
|
||||
RJOP99 = Ju-On: The Grudge
|
||||
|
@ -437,7 +440,7 @@ RV9P78 = Avatar: La Leyenda de Aang - Dentro del Infierno
|
|||
RVAP78 = Avatar: La Leyenda de Aang - La Tierra Ardiente
|
||||
RVBPRS = Alvin y las Ardillas
|
||||
RVHP41 = Scrabble Interactivo: Edición 2009
|
||||
RVJPFR = So Blonde: Perdidos en el Caribe
|
||||
RVJPFR = So Blonde: De Vuelta en la Isla
|
||||
RVKJ99 = Valhalla Knights: Elder Saga
|
||||
RVQP41 = Desafío Cine Party
|
||||
RVTFMR = Veterinarios en Acción
|
||||
|
@ -499,6 +502,8 @@ RZRPGT = El Destino de El Zorro
|
|||
RZYF41 = Mi Experto en Vocabulario
|
||||
RZYP41 = Mi Experto en Vocabulario
|
||||
RZYS41 = Mi Experto en Vocabulario
|
||||
S26PML = 2 en 1: Pony Friends 2 + Mi Granja de Caballos
|
||||
S2VPAF = Victorious: Salto a la fama
|
||||
S2XE41 = Los Pitufos 2
|
||||
S2XP41 = Los Pitufos 2
|
||||
S2ZP52 = Zhu Zhu Pets: Los Amigos del Bosque
|
||||
|
@ -507,6 +512,7 @@ S3BEWR = Batman: El Intrépido Batman
|
|||
S3BPWR = Batman: El Intrépido Batman
|
||||
S3DJ18 = Deca Sporta 3
|
||||
S3EP78 = Barbie: Planeta Fashionista
|
||||
S3EXVZ = Barbie: Planeta Fashionista
|
||||
S3MP69 = Los Sims 3
|
||||
S3PP4Q = Disney Princesas: Reinos Mágicos
|
||||
S5BPKM = Regreso al Futuro: El juego
|
||||
|
@ -524,6 +530,7 @@ SALE4Q = Alicia en el País de las Maravillas
|
|||
SALP4Q = Alicia en el País de las Maravillas
|
||||
SAOP78 = Monster High: Instituto Monstruoso
|
||||
SAOXVZ = Monster High: Instituto Monstruoso
|
||||
SAVX5G = Alvin y las ardillas 2
|
||||
SB2PNP = My Baby 2: ¡Mi Bebé Ha Crecido!
|
||||
SB4K01 = Super Mario Galaxy 2
|
||||
SB6P52 = Bakugan: Defensores de la Tierra
|
||||
|
@ -551,6 +558,7 @@ SCYZ4Q = Cars 2: El Videojuego
|
|||
SD2Y41 = Just Dance 2 (Edición Best Buy)
|
||||
SD6PTV = Éxito en Primaria: Inglés - Curso 1-4
|
||||
SD7PTV = Éxito en Primaria: Matemáticas - Curso 1-4
|
||||
SDDPML = Sexos en Guerra: típicos tópicos
|
||||
SDFP4Q = Disney Sing It: Éxitos de película
|
||||
SDLP78 = La Gran Aventura de Dood
|
||||
SDMEG9 = Gru, Mi Villano Favorito
|
||||
|
@ -608,11 +616,12 @@ SJDZ41 = Just Dance 3 (Edición Target)
|
|||
SJIEG9 = Fitness Ultimatum 2011 de Jillian Michaels
|
||||
SJME5G = Fitness Ultimatum 2010 de Jillian Michaels
|
||||
SJMPGT = Fitness Ultimatum 2010 de Jillian Michaels
|
||||
SJXD41 = Just Dance 4
|
||||
SJXD41 = Just Dance 4 Edición Especial
|
||||
SK4E52 = Shrek: Felices Para Siempre
|
||||
SK4P52 = Shrek: Felices Para Siempre
|
||||
SK7PVZ = Disney Violetta: Ritmo & Música
|
||||
SK7XVZ = Disney Violetta: Ritmo & Música
|
||||
SKYZ52 = Skylanders Giants
|
||||
SLAE78 = Airbender: El Último Guerrero
|
||||
SLAP78 = Airbender: El Último Guerrero
|
||||
SLAX78 = Airbender: El Último Guerrero (Edición Especial)
|
||||
|
@ -636,7 +645,7 @@ SMNW01 = New Super Mario Bros. Wii (Chino Tradicional)
|
|||
SN4JDA = Naruto Shippuuden Ryujinki
|
||||
SNBP41 = NCIS Navy Investigación Criminal
|
||||
SNYEVZ = Monster High: 13 Deseos
|
||||
SNYPVZ = Monster High: 13 Deseos
|
||||
SNYPVZ = Monster High: 13 Monstruo-deseos
|
||||
SOTE52 = Wipeout
|
||||
SOUJ01 = The Legend of Zelda: Skyward Sword
|
||||
SP5PVV = The Kore Gang: La Exvasión de los Intraterrestres
|
||||
|
@ -824,7 +833,6 @@ RJJG52 = Guitar Hero III Custom: JJ-KwiK's Edition
|
|||
RMCE88 = Mario Carritos Definitivo 3.0
|
||||
RMCEB8 = Mario Kart Manía
|
||||
RMCEFO = Neptune777 Forza MAX Orígenes
|
||||
RMCPCA = Mario Kart Wii (traducción al catalán)
|
||||
RMGE52 = Guitar Hero III Custom: Megadeth
|
||||
RMHC08 = Monster Hunter Tri (Personalizado)
|
||||
RMMP52 = Guitar Hero III Custom: Metal Mayhem
|
||||
|
@ -835,6 +843,7 @@ RSFC99 = Muramasa: The Demon Blade (Personalizado)
|
|||
RSJESD = Guitar Hero III Custom: System of a Down
|
||||
RSYP06 = Super Smash Bros. Brawl: YF06's Mod
|
||||
RZDC01 = The Legend of Zelda: Twilight Princess (Personalizado)
|
||||
RZDPCA = The Legend of Zelda: Twilight Princess (Traducción al catalán - Traducció al català)
|
||||
SB4C01 = Super Mario Galaxy 2 (Personalizado)
|
||||
SBOD3Q = SingItStar: Best of Disney
|
||||
SDUEO1 = DU Super Mario Bros.: DU Edition
|
||||
|
@ -857,7 +866,6 @@ W2FP = Entrenamiento de Equilibrio Physiofun
|
|||
W2GD = Phoenix Wright Ace Attorney: Justice for All (Deutsche Version)
|
||||
W2GE = Phoenix Wright: Ace Attorney Justice for All
|
||||
W2GP = Phoenix Wright Ace Attorney: Justice for All
|
||||
W2GS = Phoenix Wright Ace Attorney: Justice for All
|
||||
W2JE = Just Jam
|
||||
W2ME = Blaster Master: Overdrive
|
||||
W2MP = Blaster Master Overdrive
|
||||
|
@ -866,7 +874,6 @@ W3AE = Carmen Sandiego Adventures in Math: The Big Ben Burglary
|
|||
W3GD = Phoenix Wright: Ace Attorney - Trials and Tribulations
|
||||
W3GE = Phoenix Wright Ace Attorney: Trials and Tribulations
|
||||
W3GP = Phoenix Wright: Ace Attorney - Trials and Tribulations
|
||||
W3GS = Phoenix Wright: Ace Attorney Trials and Tribulations
|
||||
W3KE = Thruspace
|
||||
W3KP = ThruSpace
|
||||
W3LE = Carmen Sandiego Adventures in Math: The Lady Liberty Larceny
|
||||
|
@ -874,15 +881,10 @@ W3ME = The Three Musketeers: One for all
|
|||
W3MP = Los Tres Mosqueteros ¡Uno para todos!
|
||||
W3TE = Pearl Harbor Trilogy - 1941: Red Sun Rising
|
||||
W44E = Stop Stress: A Day of Fury
|
||||
W44P = Stop Stress: A Day of Fury
|
||||
W4AP = Arcade Sports: Air Hockey, Bowling, Pool, Snooker
|
||||
W5IE = 5 in 1 Solitaire
|
||||
W6BE = Eco Shooter: Plant 530
|
||||
W6BP = Eco-Shooter: Plant 530
|
||||
W72P = Successfully Learning German Year 3
|
||||
W73P = Successfully Learning German Year 4
|
||||
W74P = Successfully Learning German Year 5
|
||||
W7IP = Successfully Learning German Year 2
|
||||
W8CE = Bit.Trip Core
|
||||
W8CP = Bit.Trip Core
|
||||
W8WE = Happy Holidays: Halloween
|
||||
|
@ -899,8 +901,6 @@ WA8E = Art Style: Rotozoa
|
|||
WA8P = Art Style: Penta Tentacles
|
||||
WAEE = Around The World
|
||||
WAFE = Airport Mania: First Flight
|
||||
WAFP = Airport Mania: First Flight
|
||||
WAHP = Trenches: Generals
|
||||
WAKE = Carmen Sandiego Adventures in Math: The Case of the Crumbling Cathedral
|
||||
WALE = Art Style: Light Trax
|
||||
WALP = Art Style: Light Trax
|
||||
|
@ -946,7 +946,7 @@ WDHP = Art Style: Rotohex
|
|||
WDMJ = Dr. Mario & Bactericida
|
||||
WDMP = Dr. Mario & Bactericida
|
||||
WDPE = Dr. Mario Online Rx (Friend Battle Demo)
|
||||
WDPP = Dr. Mario & Germ Buster (Friend Battle Demo)
|
||||
WDPP = Dr. Mario & Bactericida (Demo Batalla Amistosa)
|
||||
WDRE = Mr Driller W
|
||||
WEME = Aha! I Got It! Escape Game
|
||||
WEMP = Aha! I Got It! Escape Game
|
||||
|
@ -981,7 +981,6 @@ WGPP = Zenquaria: El Acuario Virtual
|
|||
WGSD = Phoenix Wright: Ace Attorney (Versión Alemana)
|
||||
WGSE = Phoenix Wright: Ace Attorney
|
||||
WGSF = Phoenix Wright: Ace Attorney (French Version)
|
||||
WGSP = Phoenix Wright: Ace Attorney
|
||||
WGSS = Phoenix Wright: Ace Attorney (Textos en español)
|
||||
WHBE = Hubert the Teddy Bear: Winter Games
|
||||
WHEE = Heracles: Chariot Racing
|
||||
|
@ -1130,6 +1129,7 @@ WWXE = Paper Wars: Cannon Fodder
|
|||
WWXP = Paper Wars Cannon Fodder
|
||||
WXBE = Ben 10 Alien Force The Rise of Hex
|
||||
WXBP = Ben 10: Alien Force - The Rise of Hex
|
||||
WXIP = Éxito en primaria Inglés, curso 1º
|
||||
WXPE = Paint Splash!
|
||||
WXRE = Reel Fishing Ocean Challenge
|
||||
WYIE = escapeVektor: Chapter 1
|
||||
|
@ -1262,20 +1262,13 @@ JDWP = Aero The Acrobat
|
|||
JDZD = Mystic Quest Legend
|
||||
JDZF = Mystic Quest Legend
|
||||
JDZP = Mystic Quest Legend
|
||||
NACE = The Legend of Zelda: Ocarina of Time
|
||||
NACP = The Legend of Zelda: Ocarina of Time
|
||||
NAJ8 = The Legend of Zelda: Ocarina of Time (traducido al español)
|
||||
NAJN = Sin and Punishment
|
||||
NAKS = Pokémon Snap
|
||||
NAME = Kirby 64: The Crystal Shards
|
||||
NAMP = Kirby 64: The Crystal Shards
|
||||
NAND = Pokémon Puzzle League
|
||||
NAOE = 1080° Snowboarding
|
||||
NAOP = 1080°: TenEighty Snowboarding
|
||||
NARE = The Legend of Zelda: Majora's Mask
|
||||
NARP = The Legend of Zelda: Majora's Mask
|
||||
NAYE = Ogre Battle 64: Person of Lordly Caliber
|
||||
NAYM = Ogre Battle 64: Person of Lordly Caliber
|
||||
LAFN = Secret Commando
|
||||
LAGE = Sonic the Hedgehog
|
||||
LAJE = Sonic the Hedgehog 2
|
||||
|
@ -1373,7 +1366,6 @@ EBQE = Ninja Master's
|
|||
EBSE = The Path of the Warrior: Art of Fighting 3
|
||||
EBSP = The Path of the Warrior: Art of Fighting 3
|
||||
ECAE = Real Bout Fatal Fury 2: The Newcomers
|
||||
ECAP = Real Bout Fatal Fury 2: The Newcomers
|
||||
ECGE = Shock Troopers: 2nd Squad
|
||||
ECGP = Shock Troopers: 2nd Squad
|
||||
E54P = GHOSTS'N GOBLINS
|
||||
|
@ -1403,6 +1395,8 @@ HAGJ = Canal Noticias
|
|||
HAGP = Canal Noticias
|
||||
HAJE = Canal Opiniones
|
||||
HAJP = Canal Opiniones
|
||||
HAKE = Documentos legales/Contacto
|
||||
HAKP = Contrato/Contacto
|
||||
HAPE = Canal Miirame
|
||||
HAPP = Canal Concursos Mii
|
||||
HATE = Canal Nintendo
|
||||
|
@ -1411,12 +1405,24 @@ HAVP = Canal La fortuna te sonríe
|
|||
HAWE = Metroid Prime 3 Preview
|
||||
HAWP = Metroid Prime 3 Preview
|
||||
HAYA = Canal Fotos
|
||||
HCAJ = Band Bros. DX Speaker Channel
|
||||
HCAP = Jam with the Band Live
|
||||
HCAP = Canal Jam with the Band Live
|
||||
HCCJ = Ajustes de dirección
|
||||
HCFE = Canal Wii Speak
|
||||
HCFP = Canal Wii Speak
|
||||
HCGP = Wii e Internet
|
||||
HCGX = Wii e Internet
|
||||
HCLE = Netflix
|
||||
HCMP = Canal Kirby TV
|
||||
HCRE = The Legend of Zelda: Skyward Sword - Canal de actualización de datos de guardado
|
||||
HCRP = The Legend of Zelda: Skyward Sword - Canal de actualización de datos de guardado
|
||||
HCRP = The Legend of Zelda: Skyward Sword - Canal Actualización de datos
|
||||
HCSP = Transferencia Wii U
|
||||
HCTP = Transferencia de datos de Wii
|
||||
HCYP = Manual Electrónico del Menú de Wii (Wii Mini)
|
||||
RFNP = Canal Wii Fit
|
||||
RFPE = Canal Wii Fit Plus
|
||||
RFPP = Canal Wii Fit Plus
|
||||
RGWP = Canal Rabbids
|
||||
RGWX = Canal Rabbids
|
||||
RMCE = Canal Mario Kart
|
||||
RMCP = Canal Mario Kart
|
||||
D64A = Wii64
|
||||
|
@ -1429,10 +1435,12 @@ DSDA = SuperDump 1.3
|
|||
JODI = Canal Homebrew
|
||||
LULZ = Canal Homebrew
|
||||
OHBC = Canal Homebrew
|
||||
RMCX = Canal CTGP Revolution
|
||||
G3AS69 = El Señor de los Anillos: La Tercera Edad
|
||||
G3DX6L = Carmen Sandiego: El secreto de los tambores robados
|
||||
G3FS69 = TimeSplitters: Futuro Perfecto
|
||||
G4MP69 = Los Sims: Toman La Calle
|
||||
G4ZP69 = Los Sims 2
|
||||
G8MP01 = Paper Mario: La Puerta Milenaria
|
||||
G9TP52 = El Espantatiburones
|
||||
GAZS69 = Harry Potter y el prisionero de Azkaban
|
||||
|
@ -1457,7 +1465,7 @@ GLNP69 = Looney Tunes: De Nuevo En Accion
|
|||
GLOS69 = El Señor de los Anillos: Las Dos Torres
|
||||
GNES78 = Buscando a Nemo
|
||||
GOYS69 = GoldenEye: Agente Corrupto
|
||||
GPQP6L = Las Supernenas: Arrasando las Salsas
|
||||
GPQP6L = Las Supernenas: Escabeche Mutante
|
||||
GPXP01 = Pokémon Box: Rubí y Zafiro
|
||||
GQQD78 = Bob Esponja: ¡Luces, Cámara, Esponja!
|
||||
GQQE78 = Bob Esponja: ¡Luces, Cámara, Esponja!
|
||||
|
@ -1467,7 +1475,7 @@ GQQP78 = Bob Esponja: ¡Luces, Cámara, Esponja!
|
|||
GQWX69 = Harry Potter: Quidditch Copa del Mundo
|
||||
GR9P6L = El Imperio del Fuego
|
||||
GSXS64 = Star Wars: Las Guerras Clon
|
||||
GTYP69 = Ty, el tigre de Tasmani
|
||||
GTYP69 = Ty, el tigre de Tasmania
|
||||
GVLP69 = Marvel Némesis: La Rebelión de los Imperfectos
|
||||
GWHP41 = Winnie the Pooh: La Fiesta de Cumpleaños
|
||||
GX2S52 = X-Men Legends II: El Ascenso de Apocalipsis
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: FR_unique version: 20230727194148)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: FR_unique version: 20241114210121)
|
||||
R22J01 = FlingSmash
|
||||
R23P52 = Barbie et les Trois Mousquetaires
|
||||
R25PWR = LEGO Harry Potter : Années 1 à 4
|
||||
|
@ -127,7 +127,7 @@ RCGP54 = Carnival: Fête Foraine
|
|||
RCIP41 = Les Experts : Morts Programmées
|
||||
RCKPGN = Sports Challenge : Defi Sports
|
||||
RCLP4Q = Chicken Little : Aventures Intergalactiques
|
||||
RCOPNP = Détective Conan : Enquête
|
||||
RCOPNP = Détective Conan : Enquête à Mirapolis
|
||||
RCVP41 = Far Cry : Vengeance
|
||||
RCXP78 = All Star Pom-pom Girl
|
||||
RD4PA4 = Dance Dance Revolution : Hottest Party 2
|
||||
|
@ -198,6 +198,7 @@ RH3P4Q = High School Musical 3 Dance! Nos Années Lycée
|
|||
RH5PKM = Horse Life : Amis pour la vie
|
||||
RH6P69 = Harry Potter et le Prince de Sang-Mêlé
|
||||
RH8P4F = Tomb Raider : Underworld
|
||||
RHAW01 = Wii Play
|
||||
RHCP52 = The History Channel : Battle for the Pacific
|
||||
RHGP6Z = Agent Hugo : Lemoon Twist
|
||||
RHKP18 = Job Island
|
||||
|
@ -598,6 +599,7 @@ SINPNG = We Sing : Robbie Williams
|
|||
SJ2PWR = Scooby-Doo! Panique dans la Marmite
|
||||
SJ9P41 = Just Dance 2 : Extra Songs
|
||||
SJTP41 = Just Dance : Best Of
|
||||
SJXD41 = Just Dance 4 Edition Speciale
|
||||
SK4P52 = Shrek 4: Il Etait une Fin
|
||||
SK7PVZ = Disney Violetta : Rythme et musique
|
||||
SK7XVZ = Disney Violetta : Rythme et musique
|
||||
|
@ -616,7 +618,7 @@ SMBP8P = Super Monkey Ball : Step & Roll
|
|||
SMFP4Q = Phineas et Ferb: Voyage dans la Deuxième Dimension
|
||||
SMGP78 = Megamind
|
||||
SMHPNK = Marvel Super Heroes 3D
|
||||
SMSP78 = Marvel Super Hero Squad
|
||||
SMSP78 = Marvel Super Hero Squad : Le Gant de l'Infini
|
||||
SN4XGT = Naruto Shippuden : Dragon Blade Chronicles
|
||||
SNBP41 = NCIS: Adapté de la série TV
|
||||
SNHP69 = Need for Speed
|
||||
|
@ -687,14 +689,13 @@ RMCE88 = Le Mario Kare Deluxa por jatras
|
|||
RMCJ91 = Wiimms Mario Kart Fun 2021-09 Reservé
|
||||
RMCK91 = Wiimms Mario Kart Fun 2021-09 Reservé
|
||||
RMCP91 = Wiimms Mario Kart Fun 2021-09 Réservé
|
||||
RMCPCA = Mario Kart Wii (traduction en catalan)
|
||||
RZDPCA = The Legend of Zelda: Twilight Princess (traduction catalane)
|
||||
SBOD3Q = StarSing : Chansons Magiques de Disney v1.1
|
||||
SILP4Q = SingItStar Latino
|
||||
SNBE66 = Nouveau Super Mario Bros. Wii Apocalypse
|
||||
W2CP = Cérébral Challenge
|
||||
W2FP = Entrainement d'équilibre Physiofun
|
||||
W2GD = Phoenix Wright Ace Attorney: Justice for All (Deutsche Version)
|
||||
W2GF = Phoenix Wright: Ace Attorney: Justice for All
|
||||
W2GP = Phoenix Wright Ace Attorney : Justice for All
|
||||
W2MP = Blaster Master Overdrive
|
||||
W2PP = Programme de rééducation du périnée Physiofun
|
||||
|
@ -707,10 +708,6 @@ W3MP = Les Trois Mousquetaires : Tous pour un!
|
|||
W44P = Stop Stress : A Day of Fury
|
||||
W4AP = Arcade Sports : Air Hockey, Bowling, Pool, Snooker
|
||||
W6BP = Eco-Shooter: Plant 530
|
||||
W72P = Successfully Learning German Year 3
|
||||
W73P = Successfully Learning German Year 4
|
||||
W74P = Successfully Learning German Year 5
|
||||
W7IP = Successfully Learning German Year 2
|
||||
W8CP = Bit.Trip Core
|
||||
W8WP = Happy Holidays Halloween
|
||||
W9BP = Big Town Shoot
|
||||
|
@ -719,8 +716,6 @@ WA4P = WarioWare : Do It Yourself - Showcase
|
|||
WA7P = Toribash - La violence perfectionnée
|
||||
WA8P = ArtStyle: Penta Tentacles
|
||||
WAEP = Around the world
|
||||
WAFP = Airport Mania: First Flight
|
||||
WAHP = Trenches: Generals
|
||||
WALP = Art Style : light trax
|
||||
WAOP = The Very Hungry Caterpillar´s ABC
|
||||
WB2P = Strong Bad Episode 4 : Dangeresque 3
|
||||
|
@ -761,7 +756,6 @@ WGGP = Gabrielle's Ghostly Groove: Monster Mix
|
|||
WGPP = Zenquaria L'aquarium Virtuel
|
||||
WGSE = Phoenix Wright: Ace Attorney
|
||||
WGSF = Phoenix Wright: Ace Attorney (French Version)
|
||||
WGSP = Phoenix Wright: Ace Attorney
|
||||
WHEE = Heracles : Chariot Racing
|
||||
WHEP = Heracles : Chariot Racing
|
||||
WHFP = Heavy Fire: Special Operations
|
||||
|
@ -853,6 +847,7 @@ WWRP = Excitebike: World Challenge
|
|||
WWXP = Paper Wars Cannon Fodder
|
||||
WXBE = Ben 10 Alien Force The Rise of Hex
|
||||
WXBP = Ben 10 Alien Force The Rise of Hex
|
||||
WXIP = Succès au primaire : Anglais, CP
|
||||
WYIP = escapeVektor: Chapter 1
|
||||
WYSP = Yard Sale Hidden Treasures Sunnyville
|
||||
WZIP = Rubik's Puzzle Galaxy : RUSH
|
||||
|
@ -923,14 +918,11 @@ JDWP = Aero The Acrobat
|
|||
JDZF = Mystic Quest Legend
|
||||
NACP = The Legend of Zelda : Ocarina of Time
|
||||
NAJN = Sin and Punishment
|
||||
NAKS = Pokémon Snap
|
||||
NAME = Kirby 64 : The Crystal Shards
|
||||
NAMP = Kirby 64 : The Crystal Shards
|
||||
NAND = Pokémon Puzzle League
|
||||
NAOP = 1080°: TenEighty Snowboarding
|
||||
NARP = The Legend of Zelda : Majora's Mask
|
||||
NAYE = Ogre Battle 64: Person of Lordly Caliber
|
||||
NAYM = Ogre Battle 64: Person of Lordly Caliber
|
||||
LALP = Fantasy Zone II
|
||||
LANP = Alex Kidd: The Lost Stars
|
||||
LAPP = Wonder Boy III: The Dragon's Trap
|
||||
|
@ -990,7 +982,6 @@ EASE = Samurai Shodown 2
|
|||
EBDP = Magical Drop 3
|
||||
EBFP = Spin master
|
||||
EBSP = The Path of the Warrior: Art of Fighting 3
|
||||
ECAP = Real Bout Fatal Fury 2: The Newcomers
|
||||
ECGP = Shock Troopers: 2nd Squad
|
||||
E54P = GHOSTS'N GOBLINS
|
||||
E55P = Commando
|
||||
|
@ -1006,30 +997,38 @@ HACK = Chaîne Mii
|
|||
HADE = Chaîne Internet
|
||||
HADP = Chaîne Internet
|
||||
HAFA = Chaîne météo
|
||||
HAFE = Chaîne météo
|
||||
HAFP = Chaîne météo
|
||||
HAGA = Chaîne infos
|
||||
HAGE = Chaîne infos
|
||||
HAGJ = Chaîne infos
|
||||
HAGP = Chaîne infos
|
||||
HAJP = Chaîne votes
|
||||
HAKE = Documents légaux/Contact
|
||||
HAKP = Contrat/Contact
|
||||
HAPE = Chaîne Regardez-Mii
|
||||
HAPP = Chaîne concours Mii
|
||||
HATE = Chaîne Nintendo
|
||||
HATP = Chaîne Nintendo
|
||||
HAVP = Chaîne jour de chance
|
||||
HAWP = Metroid Prime 3 Preview
|
||||
HAYA = Chaîne photos
|
||||
HAYK = Chaîne Photo
|
||||
HCAP = Jam with the Band Live
|
||||
HCAP = Chaîne Jam with the Band Live
|
||||
HCCJ = Paramètres d'adresse
|
||||
HCFE = Chaîne Wii Speak
|
||||
HCFP = Chaîne Wii Speak
|
||||
HCGP = Wii et Internet
|
||||
HCMP = Chaîne Kirby TV
|
||||
HCRE = The Legend of Zelda: Skyward Sword - Chaîne mise à jour des données
|
||||
HCRP = The Legend of Zelda: Skyward Sword - Chaîne mise à jour des données
|
||||
RFPE = Chaîne Wii Fit Plus
|
||||
RFPP = Chaîne Wii Fit Plus
|
||||
RMCE = Chaîne Mario Kart
|
||||
RMCP = Chaîne Mario Kart
|
||||
DNUA = Donut Wii
|
||||
OHBC = Chaîne Homebrew
|
||||
RMCX = Chaîne Mario Kart Wii CTGP Revolution
|
||||
RMCX = Chaîne CTGP Revolution
|
||||
G2FF78 = Tak 2: Le Sceptre des Rêves
|
||||
G3AF69 = Le Seigneur des Anneaux: Le Tiers Âge
|
||||
G3DP6L = Carmen Sandiego : Le Secret des Tam-Tams Volés
|
||||
|
@ -1057,7 +1056,6 @@ GENF69 = James Bond 007: Quitte ou Double
|
|||
GF4F52 = Les 4 Fantastiques
|
||||
GFHP6V = Un Voisin d'Enfer!
|
||||
GFSF69 = Coupe du Monde FIFA 2002
|
||||
GGVX78 = Bob l'Eponge : Le Film
|
||||
GH2P69 = Need for Speed : Poursuite Infernale 2
|
||||
GH4F69 = Harry Potter et la Coupe de Feu
|
||||
GH5F52 = Nos Voisins, les Hommes
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: IT_unique version: 20230727194156)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: IT_unique version: 20241114210129)
|
||||
R23P52 = Barbie e le Tre Moschettiere
|
||||
R25PWR = LEGO Harry Potter: Anni 1-4
|
||||
R2AP7D = L'Era Glaciale 2: Il Disgelo
|
||||
|
@ -298,6 +298,7 @@ SIAI52 = L'Era Glaciale 4: Continenti alla Deriva - Giochi Polari
|
|||
SIIP8P = Mario & Sonic ai Giochi Olimpici di Londra 2012
|
||||
SJ2PWR = Scooby-Doo! e la palude del mistero
|
||||
SJ9P41 = Just Dance 2 - Extra Songs
|
||||
SJXD41 = Just Dance 4 Edizione Speciale
|
||||
SK4I52 = Shrek e vissero felici e contenti
|
||||
SK4P52 = Shrek: E Vissero Felici E Contenti
|
||||
SK7PVZ = Disney Violetta: Musica e Ritmo
|
||||
|
@ -356,40 +357,29 @@ G01E01 = Super Smash Bros. Melee: Remix SD
|
|||
MILPSI = SingItStar Miliki
|
||||
R15POH = SingItStar Radio 105
|
||||
RGGE52 = Guitar Hero III Custom: Rock The Games
|
||||
RMCPCA = Mario Kart Wii (traduzione in catalano)
|
||||
RSJESD = Guitar Hero III Custom: System Of A Down
|
||||
RZDPCA = The Legend of Zelda: Twilight Princess (traduzione in catalano)
|
||||
S02PES = SingItStar 90's
|
||||
SILP4Q = Sing It: Latino
|
||||
SP9P4Q = SingItStar POP 2009
|
||||
WFFF4I = Fatal Frame 4: La Maschera dell'eclissi lunare
|
||||
W2CP = Brain Challenge L'Allena-Mente
|
||||
W2FP = Physiofun - Balance Training
|
||||
W2FP = Physiofun: Balance Training
|
||||
W2GD = Phoenix Wright Ace Attorney: Justice for All (Deutsche Version)
|
||||
W2GI = Phoenix Wright: Ace Attorney: Justice for All
|
||||
W2GP = Phoenix Wright Ace Attorney: Justice for All
|
||||
W2MP = Blaster Master: Overdrive
|
||||
W2PP = Physiofun: Pelvic Floor Training
|
||||
W3GI = Phoenix Wright: Ace Attorney: Trials and Tribulations
|
||||
W3KP = ThruSpace: High Velocity 3D Puzzle
|
||||
W3MP = I Tre Moschettieri Uno per tutti!
|
||||
W44P = Stop Stress: A Day of Fury
|
||||
W4AP = Arcade Sports: Air Hockey, Bowling, Pool, Snooker
|
||||
W6BP = 530 ECO SHOOTER
|
||||
W72P = Successfully Learning German Year 3
|
||||
W73P = Successfully Learning German Year 4
|
||||
W74P = Successfully Learning German Year 5
|
||||
W7IP = Successfully Learning German Year 2
|
||||
W8CP = Bit.Trip Core
|
||||
W8WP = Happy Holidays Halloween
|
||||
W9BP = Big Town Shoot
|
||||
W9RP = Happy Holidays Christmas
|
||||
WA4P = WarioWare: Do It Yourself - Showcase
|
||||
WA7P = Toribash Violence Perfected
|
||||
WA8P = Art Style: Penta Tentacles
|
||||
WAEP = Around the world
|
||||
WAFP = Airport Mania: First Flight
|
||||
WAHP = Trenches: Generals
|
||||
WALP = Art Style: light trax
|
||||
WAOP = The Very Hungry Caterpillar´s ABC
|
||||
WB2P = Strong Bad Episode 4: Dangeresque 3
|
||||
WB3P = Strong Bad Episode 5: 8-bit is Enough
|
||||
|
@ -423,8 +413,6 @@ WGFP = Girlfriends Forever: Magic Skate
|
|||
WGGP = Gabrielle's Ghostly Groove: Monster Mix
|
||||
WGPP = Zenquaria™: Acquario virtuale
|
||||
WGSF = Phoenix Wright: Ace Attorney (French Version)
|
||||
WGSI = Phoenix Wright: Ace Attorney
|
||||
WGSP = Phoenix Wright: Ace Attorney
|
||||
WHEP = Heracles: Chariot Racing
|
||||
WHFP = Heavy Fire: Special Operations
|
||||
WHRP = Heron: Steam Machine
|
||||
|
@ -557,12 +545,7 @@ JDLP = Super Star Wars: Return of the Jedi
|
|||
JDWP = Aero The Acrobat
|
||||
JDZP = Mystic Quest Legend
|
||||
JECM = CHRONO TRIGGER
|
||||
NACP = The Legend of Zelda: Ocarina of Time
|
||||
NAKS = Pokémon Snap
|
||||
NAMP = Kirby 64: The Crystal Shards
|
||||
NAOP = 1080°: TenEighty Snowboarding
|
||||
NARP = The Legend of Zelda: Majora's Mask
|
||||
NAYM = Ogre Battle 64: Person of Lordly Caliber
|
||||
LALP = Fantasy Zone II
|
||||
LANP = Alex Kidd: The Lost Stars
|
||||
LAPP = Wonder Boy III: The Dragon's Trap
|
||||
|
@ -615,7 +598,6 @@ EAIP = Top Hunter
|
|||
EBDP = Magical Drop 3
|
||||
EBFP = Spin master
|
||||
EBSP = The Path of the Warrior: Art of Fighting 3
|
||||
ECAP = Real Bout Fatal Fury 2: The Newcomers
|
||||
ECGP = Shock Troopers: 2nd Squad
|
||||
E54P = GHOSTS'N GOBLINS
|
||||
E55P = Wolf of the Battlefield: Commando
|
||||
|
@ -631,20 +613,24 @@ HADE = Canale Internet
|
|||
HADP = Canale Internet
|
||||
HAFP = Canale Meteo
|
||||
HAGA = Canale Notizie
|
||||
HAGE = Canale Notizie
|
||||
HAGJ = Canale Notizie
|
||||
HAGP = Canale Notizie
|
||||
HAJP = Canale Vota Anche Tu
|
||||
HAKP = Accordo/Contatto
|
||||
HAPP = Canale Concorsi Mii
|
||||
HATP = Canale Nintendo
|
||||
HAVP = Canal La fortuna ti sorride
|
||||
HAVP = Canale La fortuna ti sorride
|
||||
HAWP = Metroid Prime 3 Preview
|
||||
HAYA = Canale Foto
|
||||
HCAP = Canale Jam with the Band Live
|
||||
HCCJ = Impostazioni indirizzo
|
||||
HCFE = Canale Wii Speak
|
||||
HCFP = Canale Wii Speak
|
||||
HCGP = Wii e Internet
|
||||
HCMP = Canale TV Kirby
|
||||
HCRE = The Legend of Zelda: Skyward Sword - Canale Aggrioornamento dati di
|
||||
HCRP = The Legend of Zelda: Skyward Sword - Canale Aggrioornamento dati di
|
||||
RFPP = Canale Wii Fit Plus
|
||||
RMCP = Canale Mario Kart
|
||||
JODI = Canale Homebrew
|
||||
LULZ = Canale Homebrew
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: JA_unique version: 20240420135206)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: JA_unique version: 20241114210137)
|
||||
D2AJAF = みんなで冒険!ファミリートレーナー 体験版
|
||||
DCHJAF = WE CHEER: おはスタプロデュース!限定コラボゲームディスク
|
||||
DFNJ01 = Wiiフィット 体験版
|
||||
DHHJ8J = 平野綾 Premiumムービーディスク from 涼宮ハルヒの激動
|
||||
DK6J18 = コロリンパ2 -アンソニーと黃金のひまわりのタネ-
|
||||
DMHJ08 = モンスターハンター 3 -tri- (Demo)
|
||||
|
@ -17,7 +18,7 @@ R2GJAF = FRAGILE 〜さよなら月の廃墟〜
|
|||
R2JJAF = 太鼓の達人Wii
|
||||
R2LJMS = Hula Wii フラで始める 美と健康!!
|
||||
R2PJ9B = スイングゴルフ パンヤ 2ndショット!
|
||||
R2QJC0 = クッキングママ 2 たいへん!!ママはおおいそがし!
|
||||
R2QJC0 = クッキングママ2 たいへん!!ママはおおいそがし!
|
||||
R2SJ18 = DECA SPORTA 2 Wiiでスポーツ”10”種目!
|
||||
R2UJ8P = レッツタップ
|
||||
R2VJ01 = 罪と罰 宇宙の後継者
|
||||
|
@ -396,6 +397,7 @@ S5KJAF = 太鼓の達人Wii 超ごうか版
|
|||
S5QJC8 = 戦国無双 3 猛将伝
|
||||
S5SJHF = イナズマイレブンGO ストライカーズ 2013
|
||||
S6TJGD = ドラゴンクエストX オールインワンパッケージ
|
||||
S72E01 = 星のカービィ 20周年スペシャルコレクション
|
||||
S72J01 = 星のカービィ 20周年スペシャルコレクション
|
||||
S7CJAF = 仮面ライダー クライマックスヒーローズ フォーゼ
|
||||
SAAJA4 = ウイニングイレブン プレーメーカー 2013
|
||||
|
@ -434,7 +436,7 @@ SGIJA4 = GTI Club ワールド シティ レース
|
|||
SGKJC8 = チャンピオンジョッキー:ギャロップレーサー&ジーワンジョッキー
|
||||
SGVJAF = ゴーバケーション
|
||||
SH2JMS = Hula Wii 楽しくフラを踴ろう!!
|
||||
SHIJ2N = シェイプボクシング 2 Wiiでエンジョイダイエット!
|
||||
SHIJ2N = シェイプボクシング2 Wiiでエンジョイダイエット!
|
||||
SIIE8P = マリオ&ソニック AT ロンドンオリンピック
|
||||
SIIJ01 = マリオ&ソニック AT ロンドンオリンピック
|
||||
SIIP8P = マリオ&ソニック AT ロンドンオリンピック
|
||||
|
@ -500,6 +502,7 @@ STKJ08 = タツノコ VS.カプコン アルティメットオール・スター
|
|||
STQJHF = イナズマイレブン ストライカーズ
|
||||
SUKE01 = 星のカービィWii
|
||||
SUKJ01 = 星のカービィWii
|
||||
SUKP01 = 星のカービィWii
|
||||
SUMJC8 = ウイニングポストワールド 2010
|
||||
SUPJ01 = Wiiパーティー
|
||||
SUXJA4 = ウイニングイレブン プレーメーカー 2010
|
||||
|
@ -564,7 +567,7 @@ W4KJ = 鹿狩
|
|||
W4OJ = シカクいアタマをマルくする。 毎日みんなでチャレンジ編
|
||||
W6BJ = 530 エコシューター
|
||||
W82J = 陣取りアクション! 太閤検地 ~からくり城のナゾ~
|
||||
W8CJ = BIT. TRIP CORE ~リズム星人の逆襲~
|
||||
W8CJ = BIT.TRIP CORE ~リズム星人の逆襲~
|
||||
W8DJ = メビウス・ドライブ
|
||||
W8IJ = ハチワンダイバー -81diver- Wii
|
||||
W8PJ = おうちで∞プチプチWii
|
||||
|
@ -587,7 +590,7 @@ WBAJ = バクたん
|
|||
WBBJ = ボードウォリアーズ
|
||||
WBJJ = 牧場物語シリーズ まきばのおみせ
|
||||
WBKJ = ARKANOID Plus!
|
||||
WBLJ = BUBBLE BOBBLE Wii
|
||||
WBLJ = バブルボブルWii
|
||||
WBMJ = みんなのポケモン牧場 プラチナ対応版
|
||||
WBNJ = 盆栽バーバー
|
||||
WBSJ = POP ~ポップ~
|
||||
|
@ -760,8 +763,8 @@ WZJJ = @SIMPLEシリーズ Vol.5 THE 柔道
|
|||
WZMJ = @SIMPLEシリーズ Vol.3 THE 麻雀
|
||||
WZPJ = ゾンビ イン ワンダーランド
|
||||
WZZJ = くまなげ ~ピイナの好きな赤いキャンディ パズル編~
|
||||
XHCJ = 光と闇の姫君と世界征服の塔 -FINAL FANTASY CHRISTAL CHRONICLES- (Demo)
|
||||
XHEJ = BIT. TRIP BEAT (Demo)
|
||||
XHCJ = 光と闇の姫君と世界征服の塔 -FINAL FANTASY CRYSTAL CHRONICLES- (Demo)
|
||||
XHEJ = BIT.TRIP BEAT (Demo)
|
||||
XHFJ = グーの惑星 (Demo)
|
||||
XHHJ = ポケモン不思議のダンジョン めざせ!光の冒険団 (Demo)
|
||||
XHJJ = すりぬけアナトウス (Demo)
|
||||
|
@ -1003,6 +1006,7 @@ JCYJ = 大航海時代Ⅱ
|
|||
JCZJ = スーパー蒼き狼と白き牝鹿 元朝秘史
|
||||
JD2J = 美少女雀士 スーチーパイ
|
||||
JD3J = SUPER E.D.F. EARTH DEFENSE FORCE
|
||||
JD4J = ラッシングビート
|
||||
JD5J = ラッシング・ビート 乱 複製都市
|
||||
JD6J = ファイヤー・ファイティング
|
||||
JD7J = 高橋名人の大冒険島
|
||||
|
@ -1577,7 +1581,7 @@ E36J01 = 月刊任天堂店頭デモ 2006年08月号
|
|||
E37J01 = 月刊任天堂店頭デモ 2006年09月号
|
||||
G2DJB2 = デジモンバトルクロニクル
|
||||
G2GJB2 = 機動戦士ガンダム ガンダムvs.Zガンダム
|
||||
G2MJ01 = メトロイドプライム 2 ダークエコーズ
|
||||
G2MJ01 = メトロイドプライム2 ダークエコーズ
|
||||
G2NJ13 = ニード・フォー・スピード アンダーグラウンド 2
|
||||
G2SJGE = 式神の城Ⅱ
|
||||
G2VJ08 = ビューティフルジョー 2 ブラックフィルムの謎
|
||||
|
@ -1629,7 +1633,7 @@ GBZJ08 = バイオハザード 0
|
|||
GC4JBN = 新世紀GPXサイバーフォーミュラ Road To The Evolution
|
||||
GC6J01 = ポケモンコロシアム
|
||||
GC8JA4 = クラッシュ・バンディクー 爆走!ニトロカート
|
||||
GCBJA4 = クラッシュ・バンディクー 4 さくれつ!魔神パワー
|
||||
GCBJA4 = クラッシュ・バンディクー4 さくれつ!魔神パワー
|
||||
GCCJ01 = FINAL FANTASY CRYSTAL CHRONICLES
|
||||
GCCJGC = FINAL FANTASY CRYSTAL CHRONICLES
|
||||
GCDJ08 = バイオハザード -コード:ベロニカ- 完全版
|
||||
|
@ -1718,7 +1722,9 @@ GKRJB2 = ケロケロキングDX
|
|||
GKTJA4 = キャプテン翼 ~黄金世代の挑戦~
|
||||
GKWJ18 = ドリームミックスTV ワールドファイターズ
|
||||
GKXJE7 = 極・麻雀DXⅡ ~The 4th MONDO21Cup~
|
||||
GKYE01 = カービィのエアライド
|
||||
GKYJ01 = カービィのエアライド
|
||||
GKYP01 = カービィのエアライド
|
||||
GL3JE8 = ルパン三世:海に消えた秘宝
|
||||
GLEJ08 = バイオハザード 3 ラストエスケープ
|
||||
GLIJA7 = SPECIAL人生ゲーム
|
||||
|
@ -1830,7 +1836,9 @@ GYBJ01 = ドンキーコング ジャングルビート
|
|||
GYFJA4 = 遊戯王 フォルスバウンドキングダム 虚構に閉ざされた王国
|
||||
GYKJB2 = 金色のガッシュベル!! 友情タッグバトル2
|
||||
GYMJA4 = 実況パワフルメジャーリーグ
|
||||
GYQE01 = スーパーマリオスタジアム ミラクルベースボール
|
||||
GYQJ01 = スーパーマリオスタジアム ミラクルベースボール
|
||||
GYQP01 = スーパーマリオスタジアム ミラクルベースボール
|
||||
GYWJ99 = 牧場物語 ワンダフルライフ
|
||||
GZ2J01 = ゼルダの伝説 トワイライトプリンセス [GC]
|
||||
GZBJB2 = ドラゴンボールZ
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: KO_unique version: 20230727194210)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: KO_unique version: 20241114210146)
|
||||
091E00 = 영화 채널 설치 디스크 Ver. A
|
||||
410E01 = Wii 백업 디스크 v1.31
|
||||
413E01 = 디스크업데이트 디스크
|
||||
|
@ -31,7 +31,6 @@ DQGP69 = 마이심즈 레이싱 체험판
|
|||
DRME18 = 룸즈: 메인 빌딩 체험판
|
||||
DSFE7U = 무라마사: 데몬 블레이드 체험판
|
||||
DSRJ8P = 소닉과 비밀의 링 체험판
|
||||
DTOJ8P = 428: 봉쇄된 시부야에서 체험판
|
||||
DTZJ08 = 보물섬 Z 발바로스의 보물 체험판
|
||||
DWEJA4 = 위닝 일레븐 플레이 메이커 2008 체험판
|
||||
DWEPA4 = 프로 에볼루션 사커 2008 체험판
|
||||
|
@ -134,12 +133,12 @@ R3JE5G = 고 플레이 써커스 스타
|
|||
R3KP6N = 고층 건물
|
||||
R3LEWR = 그린 랜턴: 반지의 선택
|
||||
R3LPWR = 그린 랜턴: 맨헌터의 위협
|
||||
R3ME01 = 메트로이드 프라임: 3부작
|
||||
R3MP01 = 메트로이드 프라임: 3부작
|
||||
R3ME01 = 메트로이드 프라임 트릴로지
|
||||
R3MP01 = 메트로이드 프라임 트릴로지
|
||||
R3NEXS = 길티기어 이그젝스 액센트 코어 플러스
|
||||
R3NPH3 = 길티기어 이그젝스 액센트 코어 플러스
|
||||
R3OE01 = 메트로이드: 다른 M
|
||||
R3OJ01 = 메트로이드: 다른 M
|
||||
R3OE01 = 메트로이드: 또 다른 M
|
||||
R3OJ01 = 메트로이드: 또 다른 M
|
||||
R3OP01 = 메트로이드: 다른 M
|
||||
R3PEWR = 스피드 레이서: 비디오게임
|
||||
R3PJ52 = 스피드 레이서
|
||||
|
@ -445,10 +444,10 @@ R92J01 = Wii로 즐기는 피크민 2
|
|||
R92P01 = 피크민 2
|
||||
R94PMR = 얼티밋 레드 볼 첼린지
|
||||
R94XMR = 얼티밋 레드 볼 첼린지
|
||||
R96EAF = 바람의 크로노아 - 판토마일의 문
|
||||
R96JAF = 바람의 크로노아 - 판토마일의 문
|
||||
R96KAF = 바람의 크로노아: 판토마일의 문
|
||||
R96PAF = 바람의 크로노아 - 판토마일의 문
|
||||
R96EAF = 바람의 크로노아 Door to Phantomile
|
||||
R96JAF = 바람의 크로노아 Door to Phantomile
|
||||
R96KAF = 바람의 크로노아 Door to Phantomile
|
||||
R96PAF = 바람의 크로노아 Door to Phantomile
|
||||
R97E9B = 패밀리 펀 풋볼
|
||||
R9AE52 = 엑티비젼 데모 액션 팩 체험판
|
||||
R9BPMT = 뚝딱뚝딱 밥아저씨: 즐거운 축제
|
||||
|
@ -500,8 +499,8 @@ RB4X08 = 레지던트 이블 4: Wii 에디션
|
|||
RB5E41 = 브라더스 인 암즈: 언드 인 블러드
|
||||
RB5P41 = 브라더스 인 암즈: 언드 인 블러드
|
||||
RB6J18 = 봄버맨
|
||||
RB7E54 = 불리: 장학금 에디션
|
||||
RB7P54 = 불리: 장학금 에디션
|
||||
RB7E54 = 불리: 스칼라쉽 에디션
|
||||
RB7P54 = 불리: 스칼라쉽 에디션
|
||||
RB8E70 = 백야드 야구 '09
|
||||
RB9D78 = 브라츠: 영화
|
||||
RB9E78 = 브라츠: 영화
|
||||
|
@ -576,7 +575,7 @@ RC3E41 = 애완동물 고양이들 2
|
|||
RC3J41 = 고양이와 마법의 모자
|
||||
RC3P41 = 고양이들
|
||||
RC3X41 = 고양이들
|
||||
RC4JD9 = 크레용 신 짱: 최강 가족 카스카베 왕 Wii
|
||||
RC4JD9 = 크레용 신 짱: 최강 가족 카스카베 킹 Wii
|
||||
RC4SGT = 짱구는 못말려: 새로운 모험 Wii
|
||||
RC5JDQ = 청소 전대 크린 키퍼
|
||||
RC7E20 = 바다 몬스터들: 선사시대 모험
|
||||
|
@ -618,7 +617,7 @@ RCLE4Q = 디즈니의 치킨 리틀: 액션 에이스
|
|||
RCLP4Q = 디즈니의 치킨 리틀: 액션 에이스
|
||||
RCOJ99 = 명탐정 코난: 추억의 환상
|
||||
RCOK99 = 명탐정 코난: 추억의 환상
|
||||
RCOKZF = 명탐정 홈즈 추억의 환상
|
||||
RCOKZF = 명탐정 코난: 추억의 환상
|
||||
RCOPNP = 명탐정 코난: 추억의 환상
|
||||
RCPE18 = 코로린파: 구슬 매니아
|
||||
RCPJ18 = 코로린파
|
||||
|
@ -1095,10 +1094,10 @@ RK2JEB = 트라우마 센터: 새로운 피
|
|||
RK2P01 = 트라우마 센터: 새로운 피
|
||||
RK3J01 = 앤드 검색
|
||||
RK4JAF = 결계사: 흑망루의 그림자
|
||||
RK5E01 = 털실 커비의 이야기
|
||||
RK5J01 = 털실 커비의 이야기
|
||||
RK5K01 = 털실 커비의 이야기
|
||||
RK5P01 = 털실 커비의 이야기
|
||||
RK5E01 = 털실 커비 이야기
|
||||
RK5J01 = 털실 커비 이야기
|
||||
RK5K01 = 털실 커비 이야기
|
||||
RK5P01 = 털실 커비 이야기
|
||||
RK6E18 = 구슬 이야기: 코로린파
|
||||
RK6J18 = 코로린파 2 - 앤써니와 황금 해바라기 씨앗
|
||||
RK6P18 = 마블! 균형 도전
|
||||
|
@ -1255,12 +1254,11 @@ RM9PGM = 버섯맨: 포자 대전
|
|||
RMAE01 = 마리오 파워 테니스
|
||||
RMAJ01 = Wii로 즐기는 마리오 테니스 GC
|
||||
RMAP01 = 마리오 파워 테니스
|
||||
RMBE01 = 마리오 슈퍼 강타자들
|
||||
RMBJ01 = 슈퍼 마리오 스타디움 패밀리 야구
|
||||
RMBE01 = 마리오 슈퍼 슬러거즈
|
||||
RMBJ01 = 슈퍼 마리오 스타디움 패밀리 베이스볼
|
||||
RMCE01 = 마리오 카트 Wii
|
||||
RMCJ01 = 마리오 카트 Wii
|
||||
RMCK01 = 마리오 카트 Wii
|
||||
RMCK50 = Wiimms 마리오 카트-텍스쳐즈 2022-12.한국
|
||||
RMCKBR = 마리오 카트 Brown
|
||||
RMCP01 = 마리오 카트 Wii
|
||||
RMDE69 = 매든 NFL 07
|
||||
|
@ -1302,7 +1300,7 @@ RMRXNK = 코코토 매직 써커스
|
|||
RMSE52 = 마벨: 얼티밋 얼라이언스 2
|
||||
RMSP52 = 마벨: 얼티밋 얼라이언스 2
|
||||
RMTJ18 = 모모타로 전철 16 홋카이도 대이동의 권!
|
||||
RMUE52 = 마벨: 얼티밋 얼라이언스
|
||||
RMUE52 = 마블: 얼티밋 얼라이언스
|
||||
RMUJ2K = 마벨: 얼티밋 얼라이언스
|
||||
RMUP52 = 마벨: 얼티밋 얼라이언스
|
||||
RMVE69 = 메달 오브 아너: 선봉
|
||||
|
@ -1671,7 +1669,7 @@ RS3P52 = 스파이더맨 3
|
|||
RS3X52 = 스파이더맨 3
|
||||
RS4EXS = 식신의 성 III
|
||||
RS4JJF = 식신의 성 III
|
||||
RS4PXS = 식신의 성 III
|
||||
RS4PH3 = 식신의 성 III
|
||||
RS5EC8 = 사무라이 전사들: 카타나
|
||||
RS5JC8 = 전국무쌍 카타나
|
||||
RS5PC8 = 사무라이 전사들: 카타나
|
||||
|
@ -1684,7 +1682,7 @@ RSAE78 = 스펀지밥 - 아틀란티스
|
|||
RSAP78 = 스펀지밥 - 아틀란티스
|
||||
RSBE01 = 대난투 스매시 브라더스 X
|
||||
RSBJ01 = 대난투 스매시 브라더스 X
|
||||
RSBK01 = 대난투 스매시 브라더스
|
||||
RSBK01 = 대난투 스매시 브라더스 X
|
||||
RSBP01 = 대난투 스매시 브라더스 X
|
||||
RSCD7D = 스카페이스: 세상은 너의 것
|
||||
RSCE7D = 스카페이스: 세상은 너의 것
|
||||
|
@ -1708,10 +1706,10 @@ RSJP41 = 파검: 기사단의 그림자 (감독판)
|
|||
RSKE52 = 슈렉 3
|
||||
RSKP52 = 슈렉 3
|
||||
RSKX52 = 슈렉 3
|
||||
RSLEAF = 소울 칼리버: 전설들
|
||||
RSLJAF = 소울 칼리버: 전설들
|
||||
RSLKAF = 소울칼리버: 전설들
|
||||
RSLPAF = 소울 칼리버: 전설들
|
||||
RSLEAF = 소울 칼리버 레전즈
|
||||
RSLJAF = 소울 칼리버 레전즈
|
||||
RSLKAF = 소울 칼리버 레전즈
|
||||
RSLPAF = 소울 칼리버 레전즈
|
||||
RSME8P = 슈퍼 몽키 볼: 바나나 블리츠
|
||||
RSMJ8P = 슈퍼 몽키 볼: 우키 우키 파티 대집합
|
||||
RSMP8P = 슈퍼 몽키 볼: 바나나 블리츠
|
||||
|
@ -1788,10 +1786,10 @@ RTDK8M = 신중화대선 ~마이클과 메이메이의 모험~
|
|||
RTEE78 = 파우스 & 클라우스 : 애완동물 수의사
|
||||
RTEHMR = 실제 이야기들: 수의사
|
||||
RTEPFR = 나의 수의사 연습
|
||||
RTFE52 = 트랜스포머즈: 게임
|
||||
RTFJ52 = 트랜스포머즈: 게임
|
||||
RTFK52 = 트랜스포머즈: 더 게임
|
||||
RTFP52 = 트랜스포머즈: 게임
|
||||
RTFE52 = 트랜스포머: 더 게임
|
||||
RTFJ52 = 트랜스포머: 더 게임
|
||||
RTFK52 = 트랜스포머: 더 게임
|
||||
RTFP52 = 트랜스포머: 더 게임
|
||||
RTFX52 = 트랜스포머즈: 게임
|
||||
RTFY52 = 트랜스포머즈: 게임
|
||||
RTGJ18 = 엄선 테이블 게임 Wii
|
||||
|
@ -1932,7 +1930,6 @@ RVEFMR = 알로, 슈티
|
|||
RVFE20 = 빅풋: 충돌 진로
|
||||
RVFP7J = 빅풋: 충돌 진로
|
||||
RVGE78 = 머브 그리핀의 십자말풀이
|
||||
RVGP78 = 마곳의 워드 브레인
|
||||
RVHP41 = 스크래블 인터렉티브: 2009 에디션
|
||||
RVIE4F = 바이오니클 히어로즈
|
||||
RVIP4F = 바이오니클 히어로즈
|
||||
|
@ -2345,8 +2342,8 @@ S6IP78 = 디즈니 공주들: 매혹적인 이야기 책들
|
|||
S6RE52 = 주먹왕 랄프
|
||||
S6RP52 = 주먹왕 랄프
|
||||
S6TJGD = 드래곤 퀘스트 X (올 인 원 팩키지)
|
||||
S72E01 = 커비의 꿈 컬렉션: 스페셜 에디션
|
||||
S72J01 = 별의 커비: 20 주년 스페셜 컬렉션
|
||||
S72E01 = 별의 커비 20주년 스페셜 컬렉션
|
||||
S72J01 = 별의 커비 20주년 스페셜 컬렉션
|
||||
S75E69 = 모노폴리 스트리츠
|
||||
S75P69 = 모노폴리 스트리츠
|
||||
S7AEWR = 레고 배트맨 2: DC 슈퍼 히어로즈
|
||||
|
@ -2479,7 +2476,7 @@ SC7S52 = 콜 오브 듀티: 블랙 옵스
|
|||
SC7Z52 = 콜 오브 듀티: 블랙 옵스
|
||||
SC8E01 = Wii 플레이: 모션
|
||||
SC8J01 = Wii 리모콘 플러스 버라이어티
|
||||
SC8K01 = Wii 리모컨플러스로 즐기는 버라이어티 게임 박스
|
||||
SC8K01 = Wii리모컨플러스로 즐기는 버라이어티 게임박스
|
||||
SC8P01 = Wii 플레이: 모션
|
||||
SC9P52 = 카벨라의 위대한 게임 사냥꾼 2010
|
||||
SCAE18 = 콜링: 검은 착신
|
||||
|
@ -2611,7 +2608,7 @@ SESEWR = 세서미 스트리트: 레디, 세트, 그로버!
|
|||
SESPWR = 세서미 스트리트: 레디, 세트, 그로버!
|
||||
SESUWR = 세서미 스트리트: 레디, 세트, 그로버!
|
||||
SEUPEY = 레트로 시티 램페이지 DX
|
||||
SEVPEY = 강탈: 하와이
|
||||
SEVPEY = 쉐이크다운: 하와이
|
||||
SEZJHF = 이나즈마 일레븐 스트라이커즈 2012 익스트림
|
||||
SF2P64 = 스타 워즈: 해방된 포스 II
|
||||
SF4E20 = 플랫아웃
|
||||
|
@ -2620,9 +2617,9 @@ SF5E41 = 핏 인 식스
|
|||
SF5J41 = 핏 인 식스: 몸을 단련하는 6 가지 요소
|
||||
SF5P41 = 나의 피트니스 코치: 클럽
|
||||
SF7E41 = 패밀리 Feud 2012 에디션
|
||||
SF8E01 = 동키 콩: 컨트리 리턴즈
|
||||
SF8J01 = 동키 콩 리턴즈
|
||||
SF8P01 = 동키 콩: 컨트리 리턴즈
|
||||
SF8E01 = 동키콩 리턴즈
|
||||
SF8J01 = 동키콩 리턴즈
|
||||
SF8P01 = 동키콩 리턴즈
|
||||
SFAE41 = 패밀리 퓨드 데케이드즈
|
||||
SFAJGD = 강철의 연금술사: 황혼의 소녀
|
||||
SFBE70 = 백야드 스포츠 풋볼: 루키 러쉬
|
||||
|
@ -2996,7 +2993,7 @@ SMUJAF = 대괴수 배틀: 울트라 콜로세움 DX - 울트라 전사 대집
|
|||
SMVE54 = 메이저 리그 야구 2K11
|
||||
SMWE4Z = 베어 그릴스의 인간과 자연의 대결
|
||||
SMYE20 = 사소한 도전 60초
|
||||
SMZE78 = 마벨 슈퍼 히어로 스쿼드: 코믹 컴뱃
|
||||
SMZE78 = 마블 슈퍼 히어로 스쿼드: 코믹 컴뱃
|
||||
SMZP78 = 마벨 슈퍼 히어로 스쿼드: 코믹 컴뱃
|
||||
SN2E69 = 너프 N-스트라이크 더블 블래스트 번들
|
||||
SN3EYG = 맥시멈 레이싱: 랠리 레이서
|
||||
|
@ -3044,9 +3041,9 @@ SNRE52 = 나스카 언리쉬드
|
|||
SNSE52 = 나스카 2011: 게임
|
||||
SNTEXN = 넷플릭스 인스턴트 스트리밍 디스크
|
||||
SNUPJW = 해피 뉴런 아카데미
|
||||
SNVE69 = 니드 포 스피드: 도망
|
||||
SNVJ13 = 니드 포 스피드: 도망
|
||||
SNVP69 = 니드 포 스피드: 도망
|
||||
SNVE69 = 니드 포 스피드: 더 런
|
||||
SNVJ13 = 니드 포 스피드: 더 런
|
||||
SNVP69 = 니드 포 스피드: 더 런
|
||||
SNXJDA = 나루토 질풍전: 격투 닌자 대전! 스페셜
|
||||
SNYEVZ = 몬스터 하이: 13 개의 소원들
|
||||
SNYPVZ = 몬스터 하이: 13 개의 소원들
|
||||
|
@ -3345,10 +3342,10 @@ SU8PNG = 위 싱: 독일 히츠 2
|
|||
SU9E4Q = 디즈니 비행기들
|
||||
SU9P4Q = 디즈니 비행기들
|
||||
SU9X4Q = 디즈니 비행기들
|
||||
SUKE01 = 커비의 드림랜드 귀환
|
||||
SUKE01 = 별의 커비 Wii
|
||||
SUKJ01 = 별의 커비 Wii
|
||||
SUKK01 = 별의 커비 Wii
|
||||
SUKP01 = 커비의 모험 Wii
|
||||
SUKP01 = 별의 커비 Wii
|
||||
SUMJC8 = 위닝 포스트 월드 2010
|
||||
SUNEYG = 디어 드라이브 레전드즈
|
||||
SUOE41 = 힙합 댄스 익스피리언스
|
||||
|
@ -3442,7 +3439,7 @@ SX2PNG = 정글 카트즈
|
|||
SX3EXJ = 판도라의 탑
|
||||
SX3J01 = 판도라의 탑: 너의 곁으로 돌아갈 때까지
|
||||
SX3P01 = 판도라의 탑
|
||||
SX4E01 = 제노블레이드 연대기
|
||||
SX4E01 = 제노블레이드 크로니클스
|
||||
SX4J01 = 제노블레이드
|
||||
SX4P01 = 제노블레이드 연대기
|
||||
SX5E4Z = 산타 클로스가 마을로 오고 있어!
|
||||
|
@ -3724,6 +3721,7 @@ GZBEB2 = 금색의 갓슈벨: 고! 고! 마물 파이트!!
|
|||
GZLK01 = 젤다의 전설: 바람의 지휘봉
|
||||
HBWE01 = 뉴 슈퍼 마리오 브라더스 Wii: 헬보이 에디션
|
||||
HSMP01 = 하더 슈퍼 마리오 브라더스 Wii
|
||||
J5EE41 = 저스트 댄스 2025 에디션
|
||||
JF3E41 = 저스트 댄스 포커스 3
|
||||
JOUE01 = 뉴 슈퍼 마리오 브라더스 Wii 10 여행
|
||||
KHPE01 = 커비 에어 라이드 핵 팩
|
||||
|
@ -4001,6 +3999,8 @@ RMCK46 = Wiimms 마리오 카트 Wii 펀 2021-09.한국
|
|||
RMCK47 = Wiimms 마리오 카트 Wii 히스토리 2021-12.한국
|
||||
RMCK48 = Wiimms 마리오 카트 Wii 펀 2022-05.한국
|
||||
RMCK49 = Wiimms 마리오 카트-펀 2022-11.한국
|
||||
RMCK50 = Wiimms 마리오 카트-텍스쳐즈 2022-12.한국
|
||||
RMCK51 = Wiimms 마리오 카트 Wii 펀 2023-09.한국
|
||||
RMCK86 = 마리오 카트 크리스 3.5 캐럿
|
||||
RMCKYP = 요시 레이싱 리조트 플러스
|
||||
RMCP02 = Wiimms 마리오 카트 Wii 펀 2010-02.유럽
|
||||
|
@ -4051,7 +4051,6 @@ RMCP76 = 프로 CT 팩
|
|||
RMCP86 = 마리오 카트 크리스 3.500CT
|
||||
RMCP93 = 마리오 카트 Wii 핵 팩
|
||||
RMCPA1 = 마리오 카트 어드벤처
|
||||
RMCPCA = 마리오 카트 Wii (카탈루냐어 번역)
|
||||
RMCPG2 = 마리오 카트 Wii CTGP 레볼루션
|
||||
RMCPGP = 마리오 카트 CTGP 레볼루션
|
||||
RMCPL1 = Luma의 CT 팩
|
||||
|
@ -4066,6 +4065,7 @@ RNEEUD = 나루토 질풍전: 닌자 격돌 레볼루션 3 (언덥)
|
|||
ROMESD = 몬스터 헌터 G (영어 패치)
|
||||
RPJEUD = 아크 라이즈 판타지아 (언덥)
|
||||
RQQE52 = 기타 히어로 III 커스텀 : 퀸
|
||||
RS4PXS = 식신의 성 III
|
||||
RSBE02 = 슈퍼 스매시 브라더스 프로젝트 엠 레드 버전
|
||||
RSBE03 = 대난투 스매시 브라더스 X DX
|
||||
RSBE04 = 슈퍼 스매시 브라더스 프로젝트 엠+
|
||||
|
@ -4313,6 +4313,7 @@ SMNE68 = 요시의 전설 DLC
|
|||
SMNE69 = 리바이즈드 슈퍼 마리오 브라더스 Wii
|
||||
SMNE90 = 커스텀 레벨의 전설
|
||||
SMNEAM = 어드벤처 슈퍼 마리오 브라더스 Wii
|
||||
SMNED3 = 뉴어 슈퍼 마리오 브라더스 Wii
|
||||
SMNELL = 뉴어 슈퍼 루이지 Wii
|
||||
SMNELM = 뉴어 슈퍼 루이지 Wii: 검은 달
|
||||
SMNEMI = Midi의 슈퍼 마리오 브라더스 Wii: 그냥 작은 모험
|
||||
|
@ -4862,7 +4863,7 @@ WFCJ = 파이널 판타지 크리스탈 연대기: 작은 임금님과 약속의
|
|||
WFCP = 파이널 판타지 크리스탈 연대기: 왕으로서의 나의 인생
|
||||
WFDE = 수인 구조
|
||||
WFDP = 수인 구조
|
||||
WFEE = 페니모어 필모어
|
||||
WFEE = 페니모어 필모어
|
||||
WFFE = 펀! 펀! 미니골프
|
||||
WFFJ = 펀! 펀! 미니골프
|
||||
WFFP = 펀! 펀! 미니골프
|
||||
|
@ -5738,6 +5739,7 @@ FCWP = 슈퍼 마리오 브라더스 3
|
|||
FCWQ = 슈퍼 마리오 브라더스 3
|
||||
FCYE = 요시의 쿠키
|
||||
FCYJ = 요시의 쿠키
|
||||
FCYK = 요시의 쿠키
|
||||
FCYP = 요시의 쿠키
|
||||
FCYT = 요시의 쿠키
|
||||
FCZE = 왕의 기사
|
||||
|
@ -6258,7 +6260,6 @@ NAZJ = 마리오 파티 2
|
|||
NAZP = 마리오 파티 2
|
||||
NEEA = 젤다의 전설: 시간의 오카리나 마스터 퀘스트
|
||||
NTLC = 슈퍼 마리오 64 멀티플레이어
|
||||
NZXM = 슈퍼 마리오 64 멀티플레이어
|
||||
LAAJ = 북두의 권
|
||||
LABE = 판타지 존
|
||||
LABJ = 판타지 존
|
||||
|
@ -6543,13 +6544,13 @@ MCVP = 피트폴: 메이안 어드벤처
|
|||
MCWE = 갤럭시 포스 II
|
||||
MCWJ = 갤럭시 포스 II
|
||||
MCWP = 갤럭시 포스 II
|
||||
MCXJ = 드래곤 슬레이어: 영웅전설
|
||||
MCXJ = 드래곤 슬레이어: 영웅전설 II
|
||||
MCYE = 시노비의 복수
|
||||
MCYJ = 슈퍼 시노비
|
||||
MCYP = 시노비의 복수
|
||||
MCZE = 상하이 II: 용의 눈
|
||||
MCZP = 상하이 II: 용의 눈
|
||||
PA2J = 열혈고교 돗지볼 부: CD 축구 편
|
||||
PA2J = 요괴도 중기
|
||||
PA3J = 사라만다
|
||||
PA4J = 파라솔 스타즈
|
||||
PA6E = 블러디 울프
|
||||
|
@ -6734,7 +6735,7 @@ PDEJ = S.C.I.: 특수 범죄 수사
|
|||
PDFJ = 지옥순례
|
||||
PDGJ = 파이어 프로레슬링 3: 레전드 바우트
|
||||
PDHJ = 라스탄 사가 II
|
||||
PDIJ = 챔피언 레슬러®
|
||||
PDIJ = 챔피언 레슬러
|
||||
PDJJ = 스트리트 파이터 II': 챔피언 에디션
|
||||
PDJL = 스트리트 파이터 II': 챔피언 에디션
|
||||
PDJN = 스트리트 파이터 II: 챔피언 에디션
|
||||
|
@ -7124,6 +7125,7 @@ C9MP = 핏스톱 II
|
|||
C9PP = 마지막 닌자 3
|
||||
C9QP = 점프맨
|
||||
C9RP = 인터내셔널 카라테 +
|
||||
C9SP = 불가능한 임무 II
|
||||
C9XE = 마지막 닌자
|
||||
C9XJ = 마지막 닌자
|
||||
C9XP = 마지막 닌자
|
||||
|
@ -7165,10 +7167,10 @@ HAGP = 뉴스 채널
|
|||
HAJE = 모두의 투표 채널
|
||||
HAJJ = 모두의 투표 채널
|
||||
HAJP = 모두의 투표 채널
|
||||
HAKE = 최종 사용자 라이선스 동의
|
||||
HAKJ = 최종 사용자 라이선스 동의
|
||||
HAKK = 최종 사용자 라이선스 동의
|
||||
HAKP = 최종 사용자 라이선스 동의
|
||||
HAKE = 이용 약관
|
||||
HAKJ = 이용 약관
|
||||
HAKK = 이용 약관
|
||||
HAKP = 이용 약관
|
||||
HALE = 지역 선택
|
||||
HALJ = 지역 선택
|
||||
HALK = 지역 선택
|
||||
|
@ -7180,7 +7182,7 @@ HATE = 닌텐도 채널
|
|||
HATJ = 닌텐도 채널
|
||||
HATP = 닌텐도 채널
|
||||
HAVJ = 운세 채널
|
||||
HAVK = 운세 채널
|
||||
HAVK = 즐거운 하루 운세 채널
|
||||
HAVP = 즐거운 하루 운세 채널
|
||||
HAWE = 메트로이드 프라임 3 프리뷰
|
||||
HAWP = 메트로이드 프라임 3 프리뷰
|
||||
|
@ -7194,12 +7196,12 @@ HC4P = 크런치롤
|
|||
HCAJ = 밴드 브라더스 DX 스피커 채널
|
||||
HCAP = 밴드 라이브와 함께하는 잼
|
||||
HCBJ = 사진 채널 1.0 복구 프로그램
|
||||
HCCJ = 개인 데이터 설정
|
||||
HCCJ = 주소 설정
|
||||
HCDJ = 디지탈 카메라 프린트 채널
|
||||
HCFE = Wi 스피크 채널
|
||||
HCFJ = Wi 스피크 채널
|
||||
HCFE = Wii 스피크 채널
|
||||
HCFJ = Wii 스피크 채널
|
||||
HCFK = Wii 스피크 채널
|
||||
HCFP = Wi 스피크 채널
|
||||
HCFP = Wii 스피크 채널
|
||||
HCGE = Wii + 인터넷
|
||||
HCGJ = Wii + 인터넷
|
||||
HCGP = Wii + 인터넷
|
||||
|
@ -7210,8 +7212,6 @@ HCJP = BBC iPlayer 채널
|
|||
HCLE = 넷플릭스
|
||||
HCLP = 넷플릭스
|
||||
HCMP = 커비 TV 채널
|
||||
HCQE = 훌루 플러스
|
||||
HCQJ = 훌루
|
||||
HCRE = 젤다의 전설 스카이워드 소드 데이터 복구 채널
|
||||
HCRJ = 젤다의 전설 스카이워드 소드 데이터 복구 채널
|
||||
HCRK = 젤다의 전설 스카이워드 소드 데이터 복구 채널
|
||||
|
@ -7225,7 +7225,6 @@ HCTP = Wii 시스템 전송
|
|||
HCUE = Wii 메뉴 전자 매뉴얼
|
||||
HCUJ = Wii 메뉴 전자 매뉴얼
|
||||
HCUP = Wii 메뉴 전자 매뉴얼
|
||||
HCVA = Wii U 메뉴
|
||||
HCWE = 아마존 인스턴트 비디오
|
||||
HCWP = 아마존 인스턴트 비디오
|
||||
HCXE = 유튜브
|
||||
|
@ -7240,10 +7239,11 @@ RFNJ = Wii 핏 채널
|
|||
RFNK = Wii 핏 채널
|
||||
RFNP = Wii 핏 채널
|
||||
RFNW = Wii 핏 채널
|
||||
RFPE = Wii 핏 플러스 채널
|
||||
RFPJ = Wii 핏 플러스 채널
|
||||
RFPP = Wii 핏 플러스 채널
|
||||
RFPW = Wii 핏 플러스 채널
|
||||
RFPE = Wii Fit Plus 채널
|
||||
RFPJ = Wii Fit Plus 채널
|
||||
RFPK = Wii Fit Plus 채널
|
||||
RFPP = Wii Fit Plus 채널
|
||||
RFPW = Wii Fit Plus 채널
|
||||
RGWE = 레비즈 채널
|
||||
RGWJ = 레비즈 채널
|
||||
RGWP = 레비즈 채널
|
||||
|
@ -7878,10 +7878,11 @@ HWFL = 핵위플로우
|
|||
JODI = 홈브류 채널
|
||||
LULZ = 홈브류 채널
|
||||
MAUI = 백업 홈브류 채널
|
||||
NZXM = 슈퍼 마리오 64 멀티플레이어
|
||||
OHBC = 홈브류 채널
|
||||
PXWE = 프로젝트 X: 사랑의 묘약 참사
|
||||
RIIV = 리볼루션
|
||||
RMCX = 마리오 카트 Wii CTGP 레볼루션 채널
|
||||
RMCX = CTGP 레볼루션 채널
|
||||
SEGA = 제네시스 플러스 GX
|
||||
SMGX = 세이브게임 매니저 GX
|
||||
ULFW = u로더
|
||||
|
@ -8043,8 +8044,8 @@ G3RF52 = 슈렉 2
|
|||
G3RM52 = 슈렉 2
|
||||
G3RP52 = 슈렉 2
|
||||
G3SE41 = 버스트 어 무브 3000
|
||||
G3SJC0 = 슈퍼 퍼즐 보글 올 스타즈
|
||||
G3SWC0 = 슈퍼 퍼즐 보글 올 스타즈
|
||||
G3SJC0 = 슈퍼 퍼즐 보블 올스타즈
|
||||
G3SWC0 = 슈퍼 퍼즐 보블 올스타즈
|
||||
G3TJ8P = 더비 레이싱 3: 경주마를 만들자!
|
||||
G3VE69 = NBA 스트리트 볼륨 3
|
||||
G3VJ13 = NBA 스트리트 V3: 마리오 덩크
|
||||
|
@ -8105,7 +8106,7 @@ G6ME69 = 매든 NFL 06
|
|||
G6MP69 = 매든 NFL 06
|
||||
G6NE69 = NBA 라이브 06
|
||||
G6NP69 = NBA 라이브 06
|
||||
G6QE08 = 메가맨 기념 컬렉션
|
||||
G6QE08 = 메가맨 애니버서리 컬렉션
|
||||
G6SE7D = 스파이로의 전설: 새로운 시작
|
||||
G6SP7D = 스파이로의 전설: 새로운 시작
|
||||
G6TE5G = 틴 타이탄즈
|
||||
|
@ -8116,10 +8117,10 @@ G7ME69 = 매든 NFL 07
|
|||
G89EAF = 팩 맨 월드 랠리
|
||||
G8FE8P = 버추어 퀘스트
|
||||
G8FJ8P = 버추어 파이터 사이버 제너레이션
|
||||
G8ME01 = 페이퍼 마리오: 천년의 문
|
||||
G8MJ01 = 페이퍼 마리오 RPG
|
||||
G8ME01 = 페이퍼 마리오 1000년의 문
|
||||
G8MJ01 = 페이퍼 마리오 1000년의 문
|
||||
G8MK01 = 페이퍼 마리오 - 천년의 문
|
||||
G8MP01 = 페이퍼 마리오: 천년의 문
|
||||
G8MP01 = 페이퍼 마리오 1000년의 문
|
||||
G8OJ18 = 무적 코털 보보보 탈출!! 하지케 로얄
|
||||
G8SJAF = 배틀 스타디움 D.O.N
|
||||
G8WE01 = 배탤리언 워즈
|
||||
|
@ -8197,8 +8198,8 @@ GAZM69 = 해리 포터와 아즈카반의 죄수
|
|||
GAZP69 = 해리 포터와 아즈카반의 죄수
|
||||
GAZS69 = 해리 포터와 아즈카반의 죄수
|
||||
GB2J18 = 봄버맨 랜드 2 - 게임 사상 최대 규모의 테마파크
|
||||
GB4E51 = 번아웃 2: 탄착점
|
||||
GB4P51 = 번아웃 2: 탄착점
|
||||
GB4E51 = 번아웃 2: 포인트 오브 임팩트
|
||||
GB4P51 = 번아웃 2: 포인트 오브 임팩트
|
||||
GBDE5G = 블러드레인
|
||||
GBDF7D = 블러드레인
|
||||
GBDP7D = 블러드레인
|
||||
|
@ -8266,10 +8267,10 @@ GCAE5H = 큐빅스: 모두를 위한 로봇 대결
|
|||
GCBE7D = 크래쉬 밴디쿳: 마왕의 부활
|
||||
GCBJA4 = 크래쉬 밴디쿳 4: 작렬! 마신 파워
|
||||
GCBP7D = 크래쉬 밴디쿳: 마왕의 부활
|
||||
GCCE01 = 파이널 판타지 크리스탈 연대기
|
||||
GCCJ01 = 파이널 판타지 크리스탈 연대기
|
||||
GCCE01 = 파이널 판타지 크리스탈 크로니클
|
||||
GCCJ01 = 파이널 판타지 크리스탈 크로니클
|
||||
GCCJGC = 파이널 판타지 크리스탈 연대기
|
||||
GCCP01 = 파이널 판타지 크리스탈 연대기
|
||||
GCCP01 = 파이널 판타지 크리스탈 크로니클
|
||||
GCDE08 = 레지던트 이블 코드: 베로니카 X
|
||||
GCDJ08 = 바이오하자드 코드: 베로니카 완전판
|
||||
GCDP08 = 레지던트 이블 코드: 베로니카 X
|
||||
|
@ -8444,7 +8445,7 @@ GFAP69 = 피파 축구 2003
|
|||
GFAS69 = 피파 축구 2003
|
||||
GFBE5D = 파이어블레이드
|
||||
GFBP5D = 파이어블레이드
|
||||
GFCP69 = F1 경력 도전
|
||||
GFCP69 = F1 커리어 챌린지
|
||||
GFDD69 = 프리덤 파이터즈
|
||||
GFDE69 = 프리덤 파이터즈
|
||||
GFDF69 = 프리덤 파이터즈
|
||||
|
@ -8522,7 +8523,7 @@ GGZJB2 = 마다가스카: 왜 비추고 난리야
|
|||
GGZP52 = 마다가스카: 왜 비추고 난리야
|
||||
GGZS52 = 마다가스카: 왜 비추고 난리야
|
||||
GGZX52 = 마다가스카: 왜 비추고 난리야
|
||||
GH2E69 = 니드 포 스피드: 맹열한 추적 2
|
||||
GH2E69 = 니드 포 스피드: 핫 퍼슈트 2
|
||||
GH2P69 = 니드 포 스피드: 맹열한 추적 2
|
||||
GH4D69 = 해리 포터와 불의 잔
|
||||
GH4E69 = 해리 포터와 불의 잔
|
||||
|
@ -8731,9 +8732,9 @@ GKTJA4 = 캡틴 츠바사: 황금 세대의 도전
|
|||
GKUE9G = 스케일러
|
||||
GKWJ18 = 드림믹스 TV 월드 파이터즈
|
||||
GKXJE7 = 극・마작 DXII: 제 4회 몬도21 컵
|
||||
GKYE01 = 커비 에어 라이드
|
||||
GKYJ01 = 커비의 에어 라이드
|
||||
GKYP01 = 커비 에어 라이드
|
||||
GKYE01 = 커비의 에어라이드
|
||||
GKYJ01 = 커비의 에어라이드
|
||||
GKYP01 = 커비의 에어라이드
|
||||
GKZD54 = 코드네임: 키즈 넥스트 도어 - 오퍼레이션: 비디오게임
|
||||
GKZE9G = 코드네임: 키즈 넥스트 도어 - 오퍼레이션: 비디오게임
|
||||
GKZP54 = 코드네임: 키즈 넥스트 도어 - 오퍼레이션: 비디오게임
|
||||
|
@ -8806,8 +8807,9 @@ GM2J8P = 슈퍼 몽키 볼 2
|
|||
GM2P8P = 슈퍼 몽키 볼 2
|
||||
GM3E69 = 매든 NFL 2003
|
||||
GM3P69 = 매든 NFL 2003
|
||||
GM4E01 = 마리오 카트: 더블 대쉬!!
|
||||
GM4E01 = 마리오 카트: 더블 대시!!
|
||||
GM4J01 = 마리오 카트: 더블 대쉬!!
|
||||
GM4K01 = 마리오 카트: 더블 대시!!
|
||||
GM4P01 = 마리오 카트: 더블 대쉬!!
|
||||
GM5D7D = 메탈 암즈: 시스템 글리치
|
||||
GM5E7D = 메탈 암즈: 시스템 글리치
|
||||
|
@ -8894,6 +8896,7 @@ GNDP69 = 니드 포 스피드: 언더그라운드
|
|||
GNED78 = 니모를 찾아서
|
||||
GNEE78 = 니모를 찾아서
|
||||
GNEF78 = 니모를 찾아서
|
||||
GNEK78 = 니모를 찾아서
|
||||
GNEP78 = 니모를 찾아서
|
||||
GNES78 = 니모를 찾아서
|
||||
GNFE5D = NFL 블리츠 2002
|
||||
|
@ -8964,11 +8967,11 @@ GOSP41 = 오픈 시즌
|
|||
GOSX41 = 오픈 시즌
|
||||
GOTJB2 = TV 애니메이션: 원피스 트레저 배틀!
|
||||
GOUPNK = 코코토 놀이공원
|
||||
GOWD69 = 니드 포 스피드: 지명 수배
|
||||
GOWE69 = 니드 포 스피드: 지명 수배
|
||||
GOWF69 = 니드 포 스피드: 지명 수배
|
||||
GOWJ13 = 니드 포 스피드: 지명 수배
|
||||
GOWP69 = 니드 포 스피드: 지명 수배
|
||||
GOWD69 = 니드 포 스피드: 모스트 원티드
|
||||
GOWE69 = 니드 포 스피드: 모스트 원티드
|
||||
GOWF69 = 니드 포 스피드: 모스트 원티드
|
||||
GOWJ13 = 니드 포 스피드: 모스트 원티드
|
||||
GOWP69 = 니드 포 스피드: 모스트 원티드
|
||||
GOYD69 = 골든아이: 로그 에이전트
|
||||
GOYE69 = 골든아이: 로그 에이전트
|
||||
GOYF69 = 골든아이: 로그 에이전트
|
||||
|
@ -9136,7 +9139,7 @@ GRUF78 = 파워 레인져스 다이노 썬더
|
|||
GRUP78 = 파워 레인져스 다이노 썬더
|
||||
GRVEA4 = 레이브 마스터
|
||||
GRVJA4 = 그루브 어드벤처 레이브: 파이팅 라이브
|
||||
GRWJD9 = 슈퍼 로봇 대전 GC
|
||||
GRWJD9 = 슈퍼로봇대전 GC
|
||||
GRYE41 = 레이맨 아레나
|
||||
GRZJ13 = 메달 오브 아너: 라이징 선
|
||||
GS2D78 = 소환사: 여신 환생
|
||||
|
@ -9465,9 +9468,9 @@ GYFPA4 = 유희왕! 허구에 갇힌 왕국
|
|||
GYKEB2 = 금색의 갓슈!! 우정 태그 배틀 2
|
||||
GYKJB2 = 금색의 갓슈!! 우정 태그 배틀 2
|
||||
GYMJA4 = 실황 파워풀 메이저 리그
|
||||
GYQE01 = 마리오 슈퍼스타즈 야구
|
||||
GYQJ01 = 슈퍼 마리오 스테이디움 기적의 야구
|
||||
GYQP01 = 마리오 슈퍼스타즈 야구
|
||||
GYQE01 = 마리오 슈퍼스타 베이스볼
|
||||
GYQJ01 = 슈퍼 마리오 스타디움 기적의 야구
|
||||
GYQP01 = 마리오 슈퍼스타 베이스볼
|
||||
GYRE41 = 돌연변이 닌자 거북
|
||||
GYRP41 = 돌연변이 닌자 거북
|
||||
GYTE69 = 타이 더 태즈메이니언 타이거 2: 부쉬 구조대
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: NL_unique version: 20230727194218)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: NL_unique version: 20241114210155)
|
||||
R23P52 = Barbie en De Drie Musketiers
|
||||
R25PWR = LEGO Harry Potter: Jaren 1-4
|
||||
R27X54 = Dora redt het Land van Kristal
|
||||
|
@ -177,7 +177,7 @@ SHDP52 = Hoe Tem Je Een Draak
|
|||
SIAP52 = Ice Age 4: Continental Drift
|
||||
SIIP8P = Mario & Sonic op de Olympische Spelen – Londen 2012
|
||||
SJ2PWR = Scooby-Doo! En Het Spookmoeras
|
||||
SJXD41 = Just Dance 4
|
||||
SJXD41 = Just Dance 4 Speciale Editie
|
||||
SK4P52 = Shrek Voor Eeuwig En Altijd
|
||||
SLHPWR = LEGO Harry Potter: Jaren 5-7
|
||||
SM4PXT = Monster Trucks
|
||||
|
@ -199,32 +199,20 @@ SVQEVZ = Barbie En Haar Zusjes In Het Grote Puppy Avontuur
|
|||
SVQPVZ = Barbie En Haar Zusjes In Het Grote Puppy Avontuur
|
||||
SVZPVZ = Hoe Tem Je Een Draak 2
|
||||
CG1P52 = Guitar Hero III Custom : Guitar Hero I
|
||||
RMCPCA = Mario Kart Wii (Catalaanse vertaling)
|
||||
W2FP = Physiofun - Balance Training
|
||||
RZDPCA = The Legend of Zelda: Twilight Princess (Catalaanse vertaling)
|
||||
W2FP = Physiofun: Balance Training
|
||||
W2GP = Phoenix Wright Ace Attorney: Justice for All
|
||||
W2MP = Blaster Master: Overdrive
|
||||
W2PP = Physiofun: Pelvic Floor Training
|
||||
W3GP = Phoenix Wright Ace Attorney: Trials and Tribulations
|
||||
W3KP = ThruSpace: High Velocity 3D Puzzle
|
||||
W3MP = The Three Musketeers: One for all
|
||||
W44P = Stop Stress: A Day of Fury
|
||||
W4AP = Arcade Sports: Air Hockey, Bowling, Pool, Snooker
|
||||
W6BP = Eco-Shooter: Plant 530
|
||||
W72P = Successfully Learning German Year 3
|
||||
W73P = Successfully Learning German Year 4
|
||||
W74P = Successfully Learning German Year 5
|
||||
W7IP = Successfully Learning German Year 2
|
||||
W8CP = Bit.Trip Core
|
||||
W8WP = Happy Holidays: Halloween
|
||||
W9BP = Big Town Shoot
|
||||
W9RP = Happy Holidays: Christmas
|
||||
WA4P = WarioWare: Do It Yourself - Showcase
|
||||
WA7P = Toribash Violence Perfected
|
||||
WA8P = Art Style: Penta Tentacles
|
||||
WAEP = Around the world
|
||||
WAFP = Airport Mania: First Flight
|
||||
WAHP = Trenches: Generals
|
||||
WALP = Art Style: light trax
|
||||
WAOP = The Very Hungry Caterpillar´s ABC
|
||||
WB2P = Strong Bad Episode 4: Dangeresque 3
|
||||
WB3P = Strong Bad Episode 5: 8-bit is Enough
|
||||
|
@ -258,8 +246,6 @@ WFYP = Family Games Pen & Paper Edition
|
|||
WGDP = Gradius Rebirth
|
||||
WGFP = Girlfriends Forever: Magic Skate
|
||||
WGGP = Gabrielle's Ghostly Groove: Monster Mix
|
||||
WGPP = Zenquaria: Virtual Aquarium
|
||||
WGSP = Phoenix Wright: Ace Attorney
|
||||
WHEP = Heracles: Chariot Racing
|
||||
WHFP = Heavy Fire: Special Operations
|
||||
WHRP = Heron: Steam Machine
|
||||
|
@ -387,11 +373,7 @@ JDJP = Super Star Wars: The Empire Strikes Back
|
|||
JDLP = Super Star Wars: Return of the Jedi
|
||||
JDWP = Aero The Acrobat
|
||||
JDZP = Mystic Quest Legend
|
||||
NACP = The Legend of Zelda: Ocarina of Time
|
||||
NAMP = Kirby 64: The Crystal Shards
|
||||
NAOP = 1080°: TenEighty Snowboarding
|
||||
NARP = The Legend of Zelda: Majora's Mask
|
||||
NAYM = Ogre Battle 64: Person of Lordly Caliber
|
||||
LALP = Fantasy Zone II
|
||||
LANP = Alex Kidd: The Lost Stars
|
||||
LAPP = Wonder Boy III: The Dragon's Trap
|
||||
|
@ -442,7 +424,6 @@ EAIP = Top Hunter
|
|||
EBDP = Magical Drop 3
|
||||
EBFP = Spin master
|
||||
EBSP = The Path of the Warrior: Art of Fighting 3
|
||||
ECAP = Real Bout Fatal Fury 2: The Newcomers
|
||||
ECGP = Shock Troopers: 2nd Squad
|
||||
E54P = GHOSTS'N GOBLINS
|
||||
E55P = Commando
|
||||
|
@ -460,14 +441,18 @@ HAFP = Weerkanaal
|
|||
HAGA = Nachrichtenkanaal
|
||||
HAGP = Nieuwskanaal
|
||||
HAJP = Enquêtekanaal
|
||||
HAKP = Overeenkomst/bedrijfsinformatie
|
||||
HAPP = Mii-wedstrijdkanaal
|
||||
HATP = Nintendo-kanaal
|
||||
HAVP = Geluksdagkanaal
|
||||
HAWP = Metroid Prime 3 Preview
|
||||
HAYA = Fotokanaal
|
||||
HCAP = Jam with the Band Live
|
||||
HCFE = Wii Speak-Kanaal
|
||||
HCFP = Wii Speak-Kanaal
|
||||
HCAP = Jam with the Band Channel Live Channel
|
||||
HCCJ = Adresinstellingen
|
||||
HCFE = Wii Speak-kanaal
|
||||
HCFP = Wii Speak-kanaal
|
||||
HCGP = Wii en Internet
|
||||
HCRE = The Legend of Zelda - Skyward Sword - Save Data Update Channel
|
||||
OHBC = Homebrew-Kanaal
|
||||
G4BP08 = Resident Evil 4: Wii Edition
|
||||
G4CP54 = Sjakie en chocolade
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: PT_unique version: 20230727194225)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: PT_unique version: 20241114210204)
|
||||
R42P69 = Os SIMS 2: Naufragos
|
||||
R43P69 = EA Sports Active
|
||||
R4PP69 = Os SIMS 2: Animais de Estimação
|
||||
|
@ -39,7 +39,6 @@ SIIP8P = Mario & Sonic nos Jogos Olímpicos de Londres 2012
|
|||
GFEK01 = Fire Emblem: Path of Radiance
|
||||
GMSE02 = Super Mario Sunshine Multijogador
|
||||
PT2PSI = SingIt Portugal Hits Festa de Verão
|
||||
RMCPCA = Mario Kart Wii (tradução catalã)
|
||||
WA4E = WarioWare: D.I.Y. Showcase
|
||||
WA4P = _D.I.Y. Showcase
|
||||
WAQJ = Yakuman Wii: Ide Yousuke no Kenkou Mahjong
|
||||
|
@ -63,6 +62,18 @@ WZIP = Rubik's Puzzle Galaxy RUSH
|
|||
MC3E = Super Street Fighter II: The New Challengers
|
||||
MC3P = Super Street Fighter II: The New Challengers
|
||||
HAAA = Canal Photo
|
||||
HAFE = Canal do Tempo
|
||||
HAFP = Canal do Tempo
|
||||
HAGE = Canal de Notícias
|
||||
HAGP = Canal de Notícias
|
||||
HAJE = Canal de Opiniões
|
||||
HAJP = Canal de Opiniões
|
||||
HAPE = Canal Mii Veja
|
||||
HAPP = Canal de Concursos Mii
|
||||
HATE = Canal Nintendo
|
||||
HATP = Canal Nintendo
|
||||
HAYA = Canal de Fotos
|
||||
HCCJ = Definições do endereço
|
||||
G6TE5G = Os Jovens Titãs
|
||||
GAXE5D = Lucas: Um Intruso no Formigueiro
|
||||
GAZD69 = Harry Potter e o Prisoneiro de Azkaban
|
||||
|
|
|
@ -1,14 +1,21 @@
|
|||
TITLES = https://www.gametdb.com (type: Wii language: RU_unique version: 20230727194232)
|
||||
TITLES = https://www.gametdb.com (type: Wii language: RU_unique version: 20241114210212)
|
||||
R5IR4Q = История игрушек: Парк развлечений
|
||||
RN4P41 = Anno: Create A New World
|
||||
RWAR78 = Валл-И
|
||||
RXDR4Q = Disney Отвечай Не Зевай
|
||||
RY2R41 = Возвращение бешеных кроликов
|
||||
RYBP69 = BOOM BLOX Bash Party
|
||||
SFDPAF = 家庭训练机 梦幻主题乐园(欧)
|
||||
SJXD41 = Just Dance 4 Специальное издание
|
||||
SKSE54 = NBA 2K13(美)
|
||||
SP5E70 = 恶徒 来自地底的侵略者(美)
|
||||
STNP41 = Приключения Тинтина: Тайна Единорога
|
||||
GMSE02 = Супер Марио Саншайн Мультиплеер
|
||||
SOMR01 = Ритм небес
|
||||
HAFP = Канал новостей
|
||||
HAGP = Канал новостей
|
||||
HAJP = Канал голосований
|
||||
HAPP = Канал конкурсов Mii
|
||||
HATP = Канал Nintendo
|
||||
HAYA = Фотоканал
|
||||
HCCJ = Настройки адреса
|
||||
G3EP51 = XGIII: 익스트림 G 레이싱
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
2
Externals/SDL/CMakeLists.txt
vendored
2
Externals/SDL/CMakeLists.txt
vendored
|
@ -9,7 +9,7 @@ option(SDL_TEST "Build the SDL2_test library" OFF)
|
|||
option(SDL_TEST_ENABLED_BY_DEFAULT "" OFF)
|
||||
|
||||
# SDL fails to clean up old headers after version upgrades, so do that manually
|
||||
set(EXPECTED_SDL_REVISION "SDL-release-2.30.6-0")
|
||||
set(EXPECTED_SDL_REVISION "SDL-release-2.30.9-0")
|
||||
if (EXISTS "${CMAKE_CURRENT_BINARY_DIR}/SDL/include/SDL2/SDL_revision.h")
|
||||
file(READ "${CMAKE_CURRENT_BINARY_DIR}/SDL/include/SDL2/SDL_revision.h" ACTUAL_SDL_REVISION)
|
||||
if (NOT "${ACTUAL_SDL_REVISION}" MATCHES "${EXPECTED_SDL_REVISION}")
|
||||
|
|
2
Externals/SDL/SDL
vendored
2
Externals/SDL/SDL
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 8236e01a9f758d15927624925c6043f84d8a261f
|
||||
Subproject commit c98c4fbff6d8f3016a3ce6685bf8f43433c3efcc
|
2
Externals/libadrenotools
vendored
2
Externals/libadrenotools
vendored
|
@ -1 +1 @@
|
|||
Subproject commit f4ce3c9618e7ecfcdd238b17dad9a0b888f5de90
|
||||
Subproject commit 8fae8ce254dfc1344527e05301e43f37dea2df80
|
25
Externals/rangeset/include/rangeset/rangeset.h
vendored
25
Externals/rangeset/include/rangeset/rangeset.h
vendored
|
@ -3,6 +3,7 @@
|
|||
#include <cassert>
|
||||
#include <cstddef>
|
||||
#include <map>
|
||||
#include <utility>
|
||||
|
||||
namespace HyoutaUtilities {
|
||||
template <typename T> class RangeSet {
|
||||
|
@ -254,7 +255,31 @@ public:
|
|||
return !(*this == other);
|
||||
}
|
||||
|
||||
// Get free size and fragmentation ratio
|
||||
std::pair<std::size_t, double> get_stats() const {
|
||||
std::size_t free_total = 0;
|
||||
if (begin() == end())
|
||||
return {free_total, 1.0};
|
||||
std::size_t largest_size = 0;
|
||||
for (auto iter = begin(); iter != end(); ++iter) {
|
||||
const std::size_t size = calc_size(iter.from(), iter.to());
|
||||
if (size > largest_size)
|
||||
largest_size = size;
|
||||
free_total += size;
|
||||
}
|
||||
return {free_total, static_cast<double>(free_total - largest_size) / free_total};
|
||||
}
|
||||
|
||||
private:
|
||||
static std::size_t calc_size(T from, T to) {
|
||||
if constexpr (std::is_pointer_v<T>) {
|
||||
// For pointers we don't want pointer arithmetic here, else void* breaks.
|
||||
return reinterpret_cast<std::size_t>(to) - reinterpret_cast<std::size_t>(from);
|
||||
} else {
|
||||
return static_cast<std::size_t>(to - from);
|
||||
}
|
||||
}
|
||||
|
||||
// Assumptions that can be made about the data:
|
||||
// - Range are stored in the form [from, to[
|
||||
// That is, the starting value is inclusive, and the end value is exclusive.
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include <cstddef>
|
||||
#include <map>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
|
||||
namespace HyoutaUtilities {
|
||||
// Like RangeSet, but additionally stores a map of the ranges sorted by their size, for quickly finding the largest or
|
||||
|
@ -398,6 +399,16 @@ public:
|
|||
return !(*this == other);
|
||||
}
|
||||
|
||||
// Get free size and fragmentation ratio
|
||||
std::pair<std::size_t, double> get_stats() const {
|
||||
std::size_t free_total = 0;
|
||||
if (begin() == end())
|
||||
return {free_total, 1.0};
|
||||
for (auto iter = begin(); iter != end(); ++iter)
|
||||
free_total += calc_size(iter.from(), iter.to());
|
||||
return {free_total, static_cast<double>(free_total - Sizes.begin()->first) / free_total};
|
||||
}
|
||||
|
||||
private:
|
||||
static SizeT calc_size(T from, T to) {
|
||||
if constexpr (std::is_pointer_v<T>) {
|
||||
|
|
21
Flatpak/SDL2/SDL2.json
Normal file
21
Flatpak/SDL2/SDL2.json
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"name": "SDL2",
|
||||
"buildsystem": "autotools",
|
||||
"config-opts": ["--disable-static"],
|
||||
"sources": [
|
||||
{
|
||||
"type": "dir",
|
||||
"path": "../../Externals/SDL/SDL"
|
||||
}
|
||||
],
|
||||
"cleanup": [ "/bin/sdl2-config",
|
||||
"/include",
|
||||
"/lib/libSDL2.la",
|
||||
"/lib/libSDL2main.a",
|
||||
"/lib/libSDL2main.la",
|
||||
"/lib/libSDL2_test.a",
|
||||
"/lib/libSDL2_test.la",
|
||||
"/lib/cmake",
|
||||
"/share/aclocal",
|
||||
"/lib/pkgconfig"]
|
||||
}
|
8
Flatpak/fill_release_node.sh
Executable file
8
Flatpak/fill_release_node.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
DATE=$(git log -1 --pretty=%cd --date=iso8601 --date=format:'%Y-%m-%d')
|
||||
sed -i -e "s/@DATE_PLACEHOLDER/${DATE}/" org.DolphinEmu.dolphin-emu.metainfo.xml
|
||||
VERSION=$(git describe --tags | sed -E 's/^([0-9]+-[0-9]+).*/\1/')
|
||||
sed -i -e "s/@VERSION_PLACEHOLDER/${VERSION}/" org.DolphinEmu.dolphin-emu.metainfo.xml
|
||||
|
||||
|
49
Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml.in
Normal file
49
Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml.in
Normal file
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2016 Jeremy Newton -->
|
||||
<component type="desktop-application">
|
||||
<id>org.DolphinEmu.dolphin-emu</id>
|
||||
<name>Dolphin Emulator</name>
|
||||
<developer id="org.dolphin-emu">
|
||||
<name>Dolphin Emulator Project</name>
|
||||
</developer>
|
||||
<summary>GameCube / Wii</summary>
|
||||
<metadata_license>CC-BY-SA-3.0</metadata_license>
|
||||
<project_license>GPL-2.0+</project_license>
|
||||
<content_rating type="oars-1.0"/>
|
||||
<!-- Descriptions taken from Dolphin Homepage -->
|
||||
<description><p>Dolphin is an emulator for two recent Nintendo video game consoles: the GameCube and the Wii. It allows PC gamers to enjoy games for these two consoles in full HD (1080p) with several enhancements: compatibility with all PC controllers, turbo speed, networked multiplayer, and even more!</p></description>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<caption>Dolphin's main window</caption>
|
||||
<image type="source">http://dolphin-emu.org/m/user/flatpak/screenshot_1.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<caption>In-game</caption>
|
||||
<image type="source">http://dolphin-emu.org/m/user/flatpak/screenshot_2.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<caption>Graphics configuration</caption>
|
||||
<image type="source">http://dolphin-emu.org/m/user/flatpak/screenshot_3.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<caption>Controller configuration</caption>
|
||||
<image type="source">http://dolphin-emu.org/m/user/flatpak/screenshot_4.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<launchable type="desktop-id">dolphin-emu.desktop</launchable>
|
||||
<provides>
|
||||
<binary>dolphin-emu</binary>
|
||||
<id>dolphin-emu.desktop</id>
|
||||
</provides>
|
||||
<releases>
|
||||
<release version="@VERSION_PLACEHOLDER" date="@DATE_PLACEHOLDER"/>
|
||||
</releases>
|
||||
<url type="homepage">https://dolphin-emu.org</url>
|
||||
<url type="bugtracker">https://bugs.dolphin-emu.org/projects/emulator/issues</url>
|
||||
<url type="faq">https://dolphin-emu.org/docs/faq/</url>
|
||||
<url type="help">https://dolphin-emu.org/docs/guides/</url>
|
||||
<url type="translate">https://www.transifex.com/projects/p/dolphin-emu</url>
|
||||
<url type="contact">https://dolphin-emu.org/docs/faq/#ive-got-idea-make-dolphin-better-how-should-i-tell</url>
|
||||
<url type="vcs-browser">https://github.com/dolphin-emu/dolphin</url>
|
||||
<url type="contribute">https://github.com/dolphin-emu/dolphin/blob/master/Contributing.md</url>
|
||||
</component>
|
83
Flatpak/org.DolphinEmu.dolphin-emu.yml
Normal file
83
Flatpak/org.DolphinEmu.dolphin-emu.yml
Normal file
|
@ -0,0 +1,83 @@
|
|||
app-id: org.DolphinEmu.dolphin-emu
|
||||
runtime: org.kde.Platform
|
||||
runtime-version: '6.8'
|
||||
sdk: org.kde.Sdk
|
||||
command: dolphin-emu-wrapper
|
||||
rename-desktop-file: dolphin-emu.desktop
|
||||
rename-icon: dolphin-emu
|
||||
finish-args:
|
||||
- --device=all
|
||||
- --socket=pulseaudio
|
||||
# dolphin doesn't work on wayland (only the ui does), if a user were to set
|
||||
# this env variable globally to wayland then games wouldn't work.
|
||||
# we overwrite the setting and force xcb to prevent this from happening.
|
||||
- --env=QT_QPA_PLATFORM=xcb
|
||||
- --socket=x11
|
||||
- --share=network
|
||||
- --share=ipc
|
||||
# required for the emulated bluetooth adapter feature to work.
|
||||
- --allow=bluetooth
|
||||
- --filesystem=xdg-run/app/com.discordapp.Discord:create
|
||||
- --talk-name=org.freedesktop.ScreenSaver
|
||||
# required for Gamescope on Steam Deck
|
||||
- --filesystem=xdg-run/gamescope-0:ro
|
||||
modules:
|
||||
# enables motion controls on non-wii controllers (switch, ps4, etc)
|
||||
# requires a udev rule enabling Motion Sensors access
|
||||
- name: libevdev
|
||||
buildsystem: meson
|
||||
config-opts:
|
||||
- -Dtests=disabled
|
||||
- -Ddocumentation=disabled
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://www.freedesktop.org/software/libevdev/libevdev-1.13.3.tar.xz
|
||||
sha256: abf1aace86208eebdd5d3550ffded4c8d73bb405b796d51c389c9d0604cbcfbf
|
||||
x-checker-data:
|
||||
type: anitya
|
||||
project-id: 20540
|
||||
stable-only: true
|
||||
url-template: https://www.freedesktop.org/software/libevdev/libevdev-$version.tar.xz
|
||||
|
||||
# needed for screensaver inhibition
|
||||
- name: xdg-screensaver-shim
|
||||
buildsystem: meson
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/Unrud/xdg-screensaver-shim/archive/0.0.2.tar.gz
|
||||
sha256: 0ed2a69fe6ee6cbffd2fe16f85116db737f17fb1e79bfb812d893cf15c728399
|
||||
|
||||
# build the vendored SDL2 from Externals until the runtime gets 2.30.9
|
||||
- SDL2/SDL2.json
|
||||
|
||||
- name: dolphin-emu
|
||||
buildsystem: cmake-ninja
|
||||
config-opts:
|
||||
- -DCMAKE_BUILD_TYPE=Release
|
||||
- -DENABLE_ALSA=OFF
|
||||
- -DENABLE_SDL=ON
|
||||
- -DENABLE_EVDEV=ON
|
||||
- -DDISTRIBUTOR=dolphin-emu.org
|
||||
cleanup:
|
||||
- /share/man
|
||||
post-install:
|
||||
- install -D -t ${FLATPAK_DEST}/bin/ dolphin-emu-wrapper
|
||||
- "${FLATPAK_BUILDER_BUILDDIR}/Flatpak/fill_release_node.sh"
|
||||
- install -Dm644 -t ${FLATPAK_DEST}/share/metainfo/ org.DolphinEmu.dolphin-emu.metainfo.xml
|
||||
- desktop-file-edit --set-key=Exec --set-value='/app/bin/dolphin-emu-wrapper'
|
||||
/app/share/applications/dolphin-emu.desktop
|
||||
sources:
|
||||
- type: dir
|
||||
path: ..
|
||||
- type: file
|
||||
path: org.DolphinEmu.dolphin-emu.metainfo.xml.in
|
||||
dest-filename: org.DolphinEmu.dolphin-emu.metainfo.xml
|
||||
- type: script
|
||||
commands:
|
||||
- |
|
||||
for i in {0..9}; do
|
||||
test -S $XDG_RUNTIME_DIR/discord-ipc-$i ||
|
||||
ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-$i;
|
||||
done
|
||||
dolphin-emu "$@"
|
||||
dest-filename: dolphin-emu-wrapper
|
2943
Languages/po/ar.po
2943
Languages/po/ar.po
File diff suppressed because it is too large
Load diff
3599
Languages/po/ca.po
3599
Languages/po/ca.po
File diff suppressed because it is too large
Load diff
2889
Languages/po/cs.po
2889
Languages/po/cs.po
File diff suppressed because it is too large
Load diff
2891
Languages/po/da.po
2891
Languages/po/da.po
File diff suppressed because it is too large
Load diff
2899
Languages/po/de.po
2899
Languages/po/de.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
2889
Languages/po/el.po
2889
Languages/po/el.po
File diff suppressed because it is too large
Load diff
2889
Languages/po/en.po
2889
Languages/po/en.po
File diff suppressed because it is too large
Load diff
2936
Languages/po/es.po
2936
Languages/po/es.po
File diff suppressed because it is too large
Load diff
2889
Languages/po/fa.po
2889
Languages/po/fa.po
File diff suppressed because it is too large
Load diff
3177
Languages/po/fi.po
3177
Languages/po/fi.po
File diff suppressed because it is too large
Load diff
2953
Languages/po/fr.po
2953
Languages/po/fr.po
File diff suppressed because it is too large
Load diff
2889
Languages/po/hr.po
2889
Languages/po/hr.po
File diff suppressed because it is too large
Load diff
2942
Languages/po/hu.po
2942
Languages/po/hu.po
File diff suppressed because it is too large
Load diff
2931
Languages/po/it.po
2931
Languages/po/it.po
File diff suppressed because it is too large
Load diff
2935
Languages/po/ja.po
2935
Languages/po/ja.po
File diff suppressed because it is too large
Load diff
2914
Languages/po/ko.po
2914
Languages/po/ko.po
File diff suppressed because it is too large
Load diff
2891
Languages/po/ms.po
2891
Languages/po/ms.po
File diff suppressed because it is too large
Load diff
2893
Languages/po/nb.po
2893
Languages/po/nb.po
File diff suppressed because it is too large
Load diff
3031
Languages/po/nl.po
3031
Languages/po/nl.po
File diff suppressed because it is too large
Load diff
3079
Languages/po/pl.po
3079
Languages/po/pl.po
File diff suppressed because it is too large
Load diff
2889
Languages/po/pt.po
2889
Languages/po/pt.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
2889
Languages/po/ro.po
2889
Languages/po/ro.po
File diff suppressed because it is too large
Load diff
2942
Languages/po/ru.po
2942
Languages/po/ru.po
File diff suppressed because it is too large
Load diff
2889
Languages/po/sr.po
2889
Languages/po/sr.po
File diff suppressed because it is too large
Load diff
2933
Languages/po/sv.po
2933
Languages/po/sv.po
File diff suppressed because it is too large
Load diff
2911
Languages/po/tr.po
2911
Languages/po/tr.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -27,7 +27,7 @@ Please read the [FAQ](https://dolphin-emu.org/docs/faq/) before using Dolphin.
|
|||
### Desktop
|
||||
|
||||
* OS
|
||||
* Windows (10 or higher).
|
||||
* Windows (10 1703 or higher).
|
||||
* Linux.
|
||||
* macOS (10.15 Catalina or higher).
|
||||
* Unix-like systems other than Linux are not officially supported but might work.
|
||||
|
@ -261,7 +261,7 @@ Options:
|
|||
Path to disc image FILE.
|
||||
-a ALGORITHM, --algorithm=ALGORITHM
|
||||
Optional. Compute and print the digest using the
|
||||
selected algorithm, then exit. [crc32|md5|sha1]
|
||||
selected algorithm, then exit. [crc32|md5|sha1|rchash]
|
||||
```
|
||||
|
||||
```
|
||||
|
|
|
@ -101,8 +101,12 @@ android {
|
|||
defaultConfig {
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments("-DANDROID_STL=c++_static", "-DCMAKE_BUILD_TYPE=RelWithDebInfo")
|
||||
// , "-DENABLE_GENERIC=ON"
|
||||
arguments(
|
||||
"-DANDROID_STL=c++_static",
|
||||
"-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON",
|
||||
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||
// , "-DENABLE_GENERIC=ON"
|
||||
)
|
||||
abiFilters("arm64-v8a", "x86_64") //, "armeabi-v7a", "x86"
|
||||
|
||||
// Uncomment the line below if you don't want to build the C++ unit tests
|
||||
|
|
|
@ -302,7 +302,7 @@ public final class NativeLibrary
|
|||
|
||||
public static native int DefaultCPUCore();
|
||||
|
||||
public static native String GetDefaultGraphicsBackendName();
|
||||
public static native String GetDefaultGraphicsBackendConfigName();
|
||||
|
||||
public static native int GetMaxLogLevel();
|
||||
|
||||
|
@ -381,10 +381,21 @@ public final class NativeLibrary
|
|||
*/
|
||||
public static native boolean IsRunning();
|
||||
|
||||
public static native boolean IsRunningAndStarted();
|
||||
|
||||
/**
|
||||
* Returns true if emulation is running and not paused.
|
||||
*/
|
||||
public static native boolean IsRunningAndUnpaused();
|
||||
|
||||
/**
|
||||
* Returns true if emulation is fully shut down.
|
||||
*/
|
||||
public static native boolean IsUninitialized();
|
||||
|
||||
/**
|
||||
* Re-initialize software JitBlock profiling data
|
||||
*/
|
||||
public static native void WipeJitBlockProfilingData();
|
||||
|
||||
/**
|
||||
* Writes out the JitBlock Cache log dump
|
||||
*/
|
||||
|
|
|
@ -6,11 +6,10 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import org.dolphinemu.dolphinemu.R
|
||||
import org.dolphinemu.dolphinemu.databinding.ActivityConvertBinding
|
||||
import org.dolphinemu.dolphinemu.fragments.ConvertFragment
|
||||
|
@ -23,14 +22,13 @@ class ConvertActivity : AppCompatActivity() {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
ThemeHelper.setTheme(this)
|
||||
enableEdgeToEdge()
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
binding = ActivityConvertBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
|
||||
val path = intent.getStringExtra(ARG_GAME_PATH)
|
||||
|
||||
var fragment = supportFragmentManager
|
||||
|
@ -62,10 +60,6 @@ class ConvertActivity : AppCompatActivity() {
|
|||
binding.scrollViewConvert.setPadding(insets.left, 0, insets.right, insets.bottom)
|
||||
|
||||
InsetsHelper.applyNavbarWorkaround(insets.bottom, binding.workaroundView)
|
||||
ThemeHelper.setNavigationBarColor(
|
||||
this,
|
||||
MaterialColors.getColor(binding.appbarConvert, R.attr.colorSurface)
|
||||
)
|
||||
|
||||
windowInsets
|
||||
}
|
||||
|
|
|
@ -10,12 +10,11 @@ import android.os.Build
|
|||
import android.os.Bundle
|
||||
import android.provider.DocumentsContract
|
||||
import android.view.View
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import org.dolphinemu.dolphinemu.R
|
||||
import org.dolphinemu.dolphinemu.databinding.ActivityUserDataBinding
|
||||
import org.dolphinemu.dolphinemu.dialogs.NotificationDialog
|
||||
|
@ -25,7 +24,6 @@ import org.dolphinemu.dolphinemu.features.DocumentProvider
|
|||
import org.dolphinemu.dolphinemu.model.TaskViewModel
|
||||
import org.dolphinemu.dolphinemu.utils.*
|
||||
import org.dolphinemu.dolphinemu.utils.ThemeHelper.enableScrollTint
|
||||
import org.dolphinemu.dolphinemu.utils.ThemeHelper.setNavigationBarColor
|
||||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.io.FileOutputStream
|
||||
|
@ -43,14 +41,13 @@ class UserDataActivity : AppCompatActivity() {
|
|||
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
|
||||
|
||||
ThemeHelper.setTheme(this)
|
||||
enableEdgeToEdge()
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
mBinding = ActivityUserDataBinding.inflate(layoutInflater)
|
||||
setContentView(mBinding.root)
|
||||
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
|
||||
val android7 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
|
||||
val android10 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
|
||||
val android11 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
||||
|
@ -334,10 +331,6 @@ class UserDataActivity : AppCompatActivity() {
|
|||
mBinding.scrollViewUserData.setPadding(insets.left, 0, insets.right, insets.bottom)
|
||||
|
||||
InsetsHelper.applyNavbarWorkaround(insets.bottom, mBinding.workaroundView)
|
||||
setNavigationBarColor(
|
||||
this,
|
||||
MaterialColors.getColor(mBinding.appbarUserData, R.attr.colorSurface)
|
||||
)
|
||||
windowInsets
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,10 +10,10 @@ import android.view.Menu
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.ViewGroup.MarginLayoutParams
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsAnimationCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
|
@ -51,6 +51,7 @@ class CheatsActivity : AppCompatActivity(), PanelSlideListener {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
ThemeHelper.setTheme(this)
|
||||
enableEdgeToEdge()
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
|
@ -69,8 +70,6 @@ class CheatsActivity : AppCompatActivity(), PanelSlideListener {
|
|||
binding = ActivityCheatsBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
|
||||
cheatListLastFocus = binding.cheatList
|
||||
cheatDetailsLastFocus = binding.cheatDetails
|
||||
|
||||
|
@ -225,10 +224,6 @@ class CheatsActivity : AppCompatActivity(), PanelSlideListener {
|
|||
binding.cheatDetails.layoutParams = mlpDetails
|
||||
|
||||
InsetsHelper.applyNavbarWorkaround(barInsets.bottom, binding.workaroundView)
|
||||
ThemeHelper.setNavigationBarColor(
|
||||
this,
|
||||
MaterialColors.getColor(binding.appbarCheats, R.attr.colorSurface)
|
||||
)
|
||||
|
||||
windowInsets
|
||||
}
|
||||
|
|
|
@ -6,13 +6,12 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
@ -31,14 +30,13 @@ class RiivolutionBootActivity : AppCompatActivity() {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
ThemeHelper.setTheme(this)
|
||||
enableEdgeToEdge()
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
binding = ActivityRiivolutionBootBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
|
||||
val path = intent.getStringExtra(ARG_GAME_PATH)
|
||||
val gameId = intent.getStringExtra(ARG_GAME_ID)
|
||||
val revision = intent.getIntExtra(ARG_REVISION, -1)
|
||||
|
@ -96,10 +94,6 @@ class RiivolutionBootActivity : AppCompatActivity() {
|
|||
binding.scrollViewRiivolution.setPadding(insets.left, 0, insets.right, insets.bottom)
|
||||
|
||||
InsetsHelper.applyNavbarWorkaround(insets.bottom, binding.workaroundView)
|
||||
ThemeHelper.setNavigationBarColor(
|
||||
this,
|
||||
MaterialColors.getColor(binding.appbarRiivolution, R.attr.colorSurface)
|
||||
)
|
||||
|
||||
windowInsets
|
||||
}
|
||||
|
|
|
@ -651,6 +651,7 @@ enum class BooleanSetting(
|
|||
SYSCONF_PROGRESSIVE_SCAN(Settings.FILE_SYSCONF, "IPL", "PGS", true),
|
||||
SYSCONF_PAL60(Settings.FILE_SYSCONF, "IPL", "E60", true),
|
||||
SYSCONF_WIIMOTE_MOTOR(Settings.FILE_SYSCONF, "BT", "MOT", true),
|
||||
GFX_VSYNC(Settings.FILE_GFX, Settings.SECTION_GFX_HARDWARE, "VSync", false),
|
||||
GFX_WIDESCREEN_HACK(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "wideScreenHack", false),
|
||||
GFX_CROP(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "Crop", false),
|
||||
GFX_SHOW_FPS(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "ShowFPS", false),
|
||||
|
@ -788,7 +789,7 @@ enum class BooleanSetting(
|
|||
Settings.FILE_GFX,
|
||||
Settings.SECTION_GFX_HACKS,
|
||||
"EFBAccessEnable",
|
||||
true
|
||||
false
|
||||
),
|
||||
GFX_HACK_EFB_DEFER_INVALIDATION(
|
||||
Settings.FILE_GFX,
|
||||
|
|
|
@ -36,7 +36,7 @@ class Settings : Closeable {
|
|||
|
||||
if (isGameSpecific) {
|
||||
// Loading game INIs while the core is running will mess with the game INIs loaded by the core
|
||||
check(!NativeLibrary.IsRunning()) { "Attempted to load game INI while emulating" }
|
||||
check(NativeLibrary.IsUninitialized()) { "Attempted to load game INI while emulating" }
|
||||
NativeConfig.loadGameInis(gameId, revision)
|
||||
}
|
||||
}
|
||||
|
@ -124,6 +124,7 @@ class Settings : Closeable {
|
|||
const val SECTION_INI_DSP = "DSP"
|
||||
const val SECTION_LOGGER_LOGS = "Logs"
|
||||
const val SECTION_LOGGER_OPTIONS = "Options"
|
||||
const val SECTION_GFX_HARDWARE = "Settings"
|
||||
const val SECTION_GFX_SETTINGS = "Settings"
|
||||
const val SECTION_GFX_ENHANCEMENTS = "Enhancements"
|
||||
const val SECTION_GFX_COLOR_CORRECTION = "ColorCorrection"
|
||||
|
|
|
@ -45,7 +45,7 @@ enum class StringSetting(
|
|||
Settings.FILE_DOLPHIN,
|
||||
Settings.SECTION_INI_CORE,
|
||||
"GFXBackend",
|
||||
NativeLibrary.GetDefaultGraphicsBackendName()
|
||||
NativeLibrary.GetDefaultGraphicsBackendConfigName()
|
||||
),
|
||||
MAIN_DUMP_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "DumpPath", ""),
|
||||
MAIN_LOAD_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "LoadPath", ""),
|
||||
|
|
|
@ -20,5 +20,5 @@ class RunRunnable(
|
|||
override val setting: AbstractSetting? = null
|
||||
|
||||
override val isEditable: Boolean
|
||||
get() = worksDuringEmulation || !NativeLibrary.IsRunning()
|
||||
get() = worksDuringEmulation || NativeLibrary.IsUninitialized()
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ abstract class SettingsItem {
|
|||
|
||||
open val isEditable: Boolean
|
||||
get() {
|
||||
if (!NativeLibrary.IsRunning()) return true
|
||||
if (NativeLibrary.IsUninitialized()) return true
|
||||
val setting = setting
|
||||
return setting != null && setting.isRuntimeEditable
|
||||
}
|
||||
|
|
|
@ -14,17 +14,16 @@ import android.os.Bundle
|
|||
import android.view.Menu
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary
|
||||
import org.dolphinemu.dolphinemu.R
|
||||
import org.dolphinemu.dolphinemu.databinding.ActivitySettingsBinding
|
||||
|
@ -32,11 +31,9 @@ import org.dolphinemu.dolphinemu.features.settings.model.Settings
|
|||
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsFragment.Companion.newInstance
|
||||
import org.dolphinemu.dolphinemu.ui.main.MainPresenter
|
||||
import org.dolphinemu.dolphinemu.utils.FileBrowserHelper
|
||||
import org.dolphinemu.dolphinemu.utils.GpuDriverInstallResult
|
||||
import org.dolphinemu.dolphinemu.utils.InsetsHelper
|
||||
import org.dolphinemu.dolphinemu.utils.SerializableHelper.serializable
|
||||
import org.dolphinemu.dolphinemu.utils.ThemeHelper.enableScrollTint
|
||||
import org.dolphinemu.dolphinemu.utils.ThemeHelper.setNavigationBarColor
|
||||
import org.dolphinemu.dolphinemu.utils.ThemeHelper.setTheme
|
||||
|
||||
class SettingsActivity : AppCompatActivity(), SettingsActivityView {
|
||||
|
@ -55,6 +52,7 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
setTheme(this)
|
||||
enableEdgeToEdge()
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
|
@ -69,8 +67,6 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
|
|||
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
||||
setContentView(binding!!.root)
|
||||
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
|
||||
val launcher = intent
|
||||
var gameID = launcher.getStringExtra(ARG_GAME_ID)
|
||||
if (gameID == null) gameID = ""
|
||||
|
@ -291,10 +287,6 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
|
|||
)
|
||||
|
||||
InsetsHelper.applyNavbarWorkaround(insets.bottom, binding!!.workaroundView)
|
||||
setNavigationBarColor(
|
||||
this,
|
||||
MaterialColors.getColor(binding!!.appbarSettings, R.attr.colorSurface)
|
||||
)
|
||||
|
||||
windowInsets
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ class SettingsFragmentPresenter(
|
|||
} else if (
|
||||
menuTag == MenuTag.GRAPHICS
|
||||
&& this.gameId.isNullOrEmpty()
|
||||
&& !NativeLibrary.IsRunning()
|
||||
&& NativeLibrary.IsUninitialized()
|
||||
&& GpuDriverHelper.supportsCustomDriverLoading()
|
||||
) {
|
||||
this.gpuDriver =
|
||||
|
@ -1226,6 +1226,24 @@ class SettingsFragmentPresenter(
|
|||
MenuTag.getWiimoteMenuTag(3)
|
||||
)
|
||||
)
|
||||
sl.add(SwitchSetting(context, object : AbstractBooleanSetting {
|
||||
override val isOverridden: Boolean = IntSetting.WIIMOTE_BB_SOURCE.isOverridden
|
||||
|
||||
override val isRuntimeEditable: Boolean = IntSetting.WIIMOTE_BB_SOURCE.isRuntimeEditable
|
||||
|
||||
override fun delete(settings: Settings): Boolean {
|
||||
return IntSetting.WIIMOTE_BB_SOURCE.delete(settings)
|
||||
}
|
||||
|
||||
override val boolean: Boolean get() = IntSetting.WIIMOTE_BB_SOURCE.int == 2
|
||||
|
||||
override fun setBoolean(settings: Settings, newValue: Boolean) {
|
||||
// 0 == None
|
||||
// 1 == Emulated
|
||||
// 2 == Real
|
||||
IntSetting.WIIMOTE_BB_SOURCE.setInt(settings, if (newValue) 2 else 0)
|
||||
}
|
||||
}, R.string.real_balance_board, 0))
|
||||
}
|
||||
|
||||
private fun addGraphicsSettings(sl: ArrayList<SettingsItem>) {
|
||||
|
@ -1303,7 +1321,7 @@ class SettingsFragmentPresenter(
|
|||
|
||||
if (
|
||||
this.gpuDriver != null && this.gameId.isNullOrEmpty()
|
||||
&& !NativeLibrary.IsRunning()
|
||||
&& NativeLibrary.IsUninitialized()
|
||||
&& GpuDriverHelper.supportsCustomDriverLoading()
|
||||
) {
|
||||
sl.add(
|
||||
|
@ -1777,6 +1795,14 @@ class SettingsFragmentPresenter(
|
|||
0
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
BooleanSetting.GFX_VSYNC,
|
||||
R.string.vsync,
|
||||
R.string.vsync_description
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
SwitchSetting(
|
||||
context,
|
||||
|
@ -1987,6 +2013,16 @@ class SettingsFragmentPresenter(
|
|||
0
|
||||
)
|
||||
)
|
||||
sl.add(
|
||||
RunRunnable(
|
||||
context,
|
||||
R.string.debug_jit_wipe_block_profiling_data,
|
||||
0,
|
||||
R.string.debug_jit_wipe_block_profiling_data_alert,
|
||||
0,
|
||||
true
|
||||
) { NativeLibrary.WipeJitBlockProfilingData() }
|
||||
)
|
||||
sl.add(
|
||||
RunRunnable(
|
||||
context,
|
||||
|
|
|
@ -180,11 +180,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||
|
||||
private fun run(isActivityRecreated: Boolean) {
|
||||
if (isActivityRecreated) {
|
||||
if (NativeLibrary.IsRunning()) {
|
||||
if (NativeLibrary.IsUninitialized()) {
|
||||
loadPreviousTemporaryState = true
|
||||
} else {
|
||||
loadPreviousTemporaryState = false
|
||||
deleteFile(temporaryStateFilePath)
|
||||
} else {
|
||||
loadPreviousTemporaryState = true
|
||||
}
|
||||
} else {
|
||||
Log.debug("[EmulationFragment] activity resumed or fresh start")
|
||||
|
@ -203,7 +203,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||
|
||||
private fun runWithValidSurface() {
|
||||
runWhenSurfaceIsValid = false
|
||||
if (!NativeLibrary.IsRunning()) {
|
||||
if (NativeLibrary.IsUninitialized()) {
|
||||
NativeLibrary.SetIsBooting()
|
||||
val emulationThread = Thread({
|
||||
if (loadPreviousTemporaryState) {
|
||||
|
|
|
@ -83,7 +83,7 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
|
||||
fun initTouchPointer() {
|
||||
// Check if we have all the data we need yet
|
||||
val aspectRatioAvailable = NativeLibrary.IsRunningAndStarted()
|
||||
val aspectRatioAvailable = NativeLibrary.IsRunning()
|
||||
if (!aspectRatioAvailable || surfacePosition == null)
|
||||
return
|
||||
|
||||
|
|
|
@ -9,14 +9,13 @@ import android.view.Menu
|
|||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup.MarginLayoutParams
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import org.dolphinemu.dolphinemu.R
|
||||
import org.dolphinemu.dolphinemu.activities.EmulationActivity
|
||||
|
@ -53,13 +52,13 @@ class MainActivity : AppCompatActivity(), MainView, OnRefreshListener, ThemeProv
|
|||
installSplashScreen().setKeepOnScreenCondition { !DirectoryInitialization.areDolphinDirectoriesReady() }
|
||||
|
||||
ThemeHelper.setTheme(this)
|
||||
enableEdgeToEdge()
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
setInsets()
|
||||
ThemeHelper.enableStatusBarScrollTint(this, binding.appbarMain)
|
||||
|
||||
|
@ -330,10 +329,6 @@ class MainActivity : AppCompatActivity(), MainView, OnRefreshListener, ThemeProv
|
|||
binding.pagerPlatforms.setPadding(insets.left, 0, insets.right, 0)
|
||||
|
||||
InsetsHelper.applyNavbarWorkaround(insets.bottom, binding.workaroundView)
|
||||
ThemeHelper.setNavigationBarColor(
|
||||
this,
|
||||
MaterialColors.getColor(binding.appbarMain, R.attr.colorSurface)
|
||||
)
|
||||
|
||||
windowInsets
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package org.dolphinemu.dolphinemu.utils
|
||||
|
||||
import android.app.Activity
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import org.dolphinemu.dolphinemu.R
|
||||
import android.os.Build
|
||||
|
@ -14,11 +13,8 @@ import com.google.android.material.appbar.MaterialToolbar
|
|||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.google.android.material.elevation.ElevationOverlayProvider
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import android.graphics.Color
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.preference.PreferenceManager
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
object ThemeHelper {
|
||||
|
||||
|
@ -32,8 +28,6 @@ object ThemeHelper {
|
|||
const val GREEN = 3
|
||||
const val PINK = 4
|
||||
|
||||
const val NAV_BAR_ALPHA = 0.9f
|
||||
|
||||
@JvmStatic
|
||||
fun setTheme(activity: AppCompatActivity) {
|
||||
// We have to use shared preferences in addition to Dolphin's settings to guarantee that the
|
||||
|
@ -166,32 +160,6 @@ object ThemeHelper {
|
|||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun setNavigationBarColor(activity: Activity, @ColorInt color: Int) {
|
||||
val gestureType = InsetsHelper.getSystemGestureType(activity.applicationContext)
|
||||
val orientation = activity.resources.configuration.orientation
|
||||
|
||||
// Use black if the Android version is too low to support changing button colors
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O_MR1) {
|
||||
activity.window.navigationBarColor =
|
||||
ContextCompat.getColor(activity.applicationContext, android.R.color.black)
|
||||
} else if ((gestureType == InsetsHelper.THREE_BUTTON_NAVIGATION ||
|
||||
gestureType == InsetsHelper.TWO_BUTTON_NAVIGATION) &&
|
||||
orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||
) {
|
||||
activity.window.navigationBarColor = color
|
||||
} else if (gestureType == InsetsHelper.THREE_BUTTON_NAVIGATION ||
|
||||
gestureType == InsetsHelper.TWO_BUTTON_NAVIGATION
|
||||
) {
|
||||
activity.window.navigationBarColor = getColorWithOpacity(color, NAV_BAR_ALPHA)
|
||||
} else {
|
||||
activity.window.navigationBarColor = ContextCompat.getColor(
|
||||
activity.applicationContext,
|
||||
android.R.color.transparent
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun enableScrollTint(
|
||||
activity: AppCompatActivity, toolbar: MaterialToolbar, appBarLayout: AppBarLayout
|
||||
|
@ -232,13 +200,4 @@ object ThemeHelper {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O_MR1)
|
||||
@ColorInt
|
||||
private fun getColorWithOpacity(@ColorInt color: Int, alphaFactor: Float): Int {
|
||||
return Color.argb(
|
||||
(alphaFactor * Color.alpha(color)).roundToInt(), Color.red(color),
|
||||
Color.green(color), Color.blue(color)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
<string name="wiimote_extension_2">Wii Remote Extension 3</string>
|
||||
<string name="wiimote_extension_3">Wii Remote Extension 4</string>
|
||||
|
||||
<string name="real_balance_board">Real Balance Board</string>
|
||||
|
||||
<string name="wiimote">Wii Remote</string>
|
||||
<string name="wiimote_general">Buttons</string>
|
||||
<string name="wiimote_motion_simulation">Motion Simulation</string>
|
||||
|
@ -330,6 +332,8 @@
|
|||
<string name="crop">Crop</string>
|
||||
<string name="crop_description">Crops the picture from its native aspect ratio to 4:3 or 16:9. If unsure, leave this unchecked.</string>
|
||||
<string name="progressive_scan">Enable Progressive Scan</string>
|
||||
<string name="vsync">V-Sync</string>
|
||||
<string name="vsync_description">This setting is unnecessary on most Android devices, because Android always enables V-Sync. If unsure, leave this unchecked.</string>
|
||||
<string name="backend_multithreading">Backend Multithreading</string>
|
||||
<string name="backend_multithreading_description">Enables graphics backend multithreading (Vulkan only). May affect performance. If unsure, leave this checked.</string>
|
||||
<string name="prefer_vs_for_point_line_expansion">Prefer VS for Point/Line Expansion</string>
|
||||
|
@ -408,6 +412,8 @@
|
|||
<string name="debug_large_entry_points_map">Disable Large Entry Points Map</string>
|
||||
<string name="debug_jit_profiling_header">Jit Profiling</string>
|
||||
<string name="debug_jit_enable_block_profiling">Enable Jit Block Profiling</string>
|
||||
<string name="debug_jit_wipe_block_profiling_data">Wipe Jit Block Profiling Data</string>
|
||||
<string name="debug_jit_wipe_block_profiling_data_alert">Re-initialize JIT block profiling data?</string>
|
||||
<string name="debug_jit_write_block_log_dump">Write Jit Block Log Dump</string>
|
||||
<string name="debug_jit_header">Jit</string>
|
||||
<string name="debug_jitoff">Jit Disabled</string>
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
|
||||
#include <jni.h>
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "Common/FileUtil.h"
|
||||
#include "Common/IniFile.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
|
@ -58,7 +61,7 @@ Java_org_dolphinemu_dolphinemu_features_cheats_model_GeckoCheat_getCreator(JNIEn
|
|||
JNIEXPORT jstring JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_cheats_model_GeckoCheat_getNotes(JNIEnv* env, jobject obj)
|
||||
{
|
||||
return ToJString(env, JoinStrings(GetPointer(env, obj)->notes, "\n"));
|
||||
return ToJString(env, fmt::to_string(fmt::join(GetPointer(env, obj)->notes, "\n")));
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
|
|
|
@ -101,6 +101,10 @@ void Host_PPCSymbolsChanged()
|
|||
{
|
||||
}
|
||||
|
||||
void Host_PPCBreakpointsChanged()
|
||||
{
|
||||
}
|
||||
|
||||
void Host_RefreshDSPDebuggerWindow()
|
||||
{
|
||||
}
|
||||
|
@ -118,8 +122,7 @@ void Host_Message(HostMessageID id)
|
|||
}
|
||||
else if (id == HostMessageID::WMUserStop)
|
||||
{
|
||||
if (Core::IsRunning(Core::System::GetInstance()))
|
||||
Core::QueueHostJob(&Core::Stop);
|
||||
Core::QueueHostJob(&Core::Stop);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -147,6 +150,14 @@ void Host_UpdateDisasmDialog()
|
|||
{
|
||||
}
|
||||
|
||||
void Host_JitCacheInvalidation()
|
||||
{
|
||||
}
|
||||
|
||||
void Host_JitProfileDataWiped()
|
||||
{
|
||||
}
|
||||
|
||||
void Host_UpdateMainFrame()
|
||||
{
|
||||
}
|
||||
|
@ -292,13 +303,6 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetIsBooting
|
|||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunning(JNIEnv*, jclass)
|
||||
{
|
||||
return s_is_booting.IsSet() ||
|
||||
static_cast<jboolean>(Core::IsRunning(Core::System::GetInstance()));
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunningAndStarted(JNIEnv*,
|
||||
jclass)
|
||||
{
|
||||
return static_cast<jboolean>(Core::IsRunning(Core::System::GetInstance()));
|
||||
}
|
||||
|
@ -309,6 +313,13 @@ Java_org_dolphinemu_dolphinemu_NativeLibrary_IsRunningAndUnpaused(JNIEnv*, jclas
|
|||
return static_cast<jboolean>(Core::GetState(Core::System::GetInstance()) == Core::State::Running);
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_IsUninitialized(JNIEnv*,
|
||||
jclass)
|
||||
{
|
||||
return static_cast<jboolean>(Core::IsUninitialized(Core::System::GetInstance()) &&
|
||||
!s_is_booting.IsSet());
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetVersionString(JNIEnv* env,
|
||||
jclass)
|
||||
{
|
||||
|
@ -417,9 +428,10 @@ JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_DefaultCPUCo
|
|||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_NativeLibrary_GetDefaultGraphicsBackendName(JNIEnv* env, jclass)
|
||||
Java_org_dolphinemu_dolphinemu_NativeLibrary_GetDefaultGraphicsBackendConfigName(JNIEnv* env,
|
||||
jclass)
|
||||
{
|
||||
return ToJString(env, VideoBackendBase::GetDefaultBackendName());
|
||||
return ToJString(env, VideoBackendBase::GetDefaultBackendConfigName());
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetMaxLogLevel(JNIEnv*, jclass)
|
||||
|
@ -427,6 +439,22 @@ JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetMaxLogLev
|
|||
return static_cast<jint>(Common::Log::MAX_LOGLEVEL);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_WipeJitBlockProfilingData(
|
||||
JNIEnv* env, jclass native_library_class)
|
||||
{
|
||||
HostThreadLock guard;
|
||||
auto& system = Core::System::GetInstance();
|
||||
auto& jit_interface = system.GetJitInterface();
|
||||
const Core::CPUThreadGuard cpu_guard(system);
|
||||
if (jit_interface.GetCore() == nullptr)
|
||||
{
|
||||
env->CallStaticVoidMethod(native_library_class, IDCache::GetDisplayToastMsg(),
|
||||
ToJString(env, Common::GetStringT("JIT is not active")), JNI_FALSE);
|
||||
return;
|
||||
}
|
||||
jit_interface.WipeBlockProfilingData(cpu_guard);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_WriteJitBlockLogDump(
|
||||
JNIEnv* env, jclass native_library_class)
|
||||
{
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#endif
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/FileUtil.h"
|
||||
|
@ -332,5 +333,5 @@ std::string CPUInfo::Summarize()
|
|||
if (bSHA2)
|
||||
sum.push_back("SHA2");
|
||||
|
||||
return JoinStrings(sum, ",");
|
||||
return fmt::to_string(fmt::join(sum, ","));
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ private:
|
|||
std::array<uint32_t, 36 + sizeof...(ExtraMatches)> _conns;
|
||||
std::optional<V> _val;
|
||||
|
||||
TrieEntry() { std::fill(_conns.begin(), _conns.end(), INVALID_CONN); }
|
||||
TrieEntry() { _conns.fill(INVALID_CONN); }
|
||||
};
|
||||
|
||||
constexpr size_t IndexOf(char c) const
|
||||
|
|
|
@ -77,6 +77,8 @@ add_library(common
|
|||
Hash.cpp
|
||||
Hash.h
|
||||
HookableEvent.h
|
||||
HostDisassembler.cpp
|
||||
HostDisassembler.h
|
||||
HttpRequest.cpp
|
||||
HttpRequest.h
|
||||
Image.cpp
|
||||
|
@ -183,6 +185,11 @@ PRIVATE
|
|||
${VTUNE_LIBRARIES}
|
||||
)
|
||||
|
||||
if ((DEFINED CMAKE_ANDROID_ARCH_ABI AND CMAKE_ANDROID_ARCH_ABI MATCHES "x86|x86_64") OR
|
||||
(NOT DEFINED CMAKE_ANDROID_ARCH_ABI AND _M_X86_64))
|
||||
target_link_libraries(common PRIVATE bdisasm)
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
target_link_libraries(common
|
||||
PRIVATE
|
||||
|
@ -333,6 +340,28 @@ if(OPROFILE_FOUND)
|
|||
target_link_libraries(common PRIVATE OProfile::OProfile)
|
||||
endif()
|
||||
|
||||
if(ENABLE_LLVM)
|
||||
find_package(LLVM CONFIG)
|
||||
if(LLVM_FOUND)
|
||||
message(STATUS "LLVM found, enabling LLVM support in disassembler")
|
||||
target_compile_definitions(common PRIVATE HAVE_LLVM)
|
||||
# Minimal documentation about LLVM's CMake functions is available here:
|
||||
# https://releases.llvm.org/16.0.0/docs/CMake.html#embedding-llvm-in-your-project
|
||||
# https://groups.google.com/g/llvm-dev/c/YeEVe7HTasQ?pli=1
|
||||
#
|
||||
# However, you have to read the source code in any case.
|
||||
# Look for LLVM-Config.cmake in your (Unix) system:
|
||||
# $ find /usr -name LLVM-Config\\.cmake 2>/dev/null
|
||||
llvm_expand_pseudo_components(LLVM_EXPAND_COMPONENTS
|
||||
AllTargetsInfos AllTargetsDisassemblers AllTargetsCodeGens
|
||||
)
|
||||
llvm_config(common USE_SHARED
|
||||
mcdisassembler target ${LLVM_EXPAND_COMPONENTS}
|
||||
)
|
||||
target_include_directories(common PRIVATE ${LLVM_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
# Posix networking code needs to be fixed for Windows
|
||||
add_executable(traversal_server TraversalServer.cpp)
|
||||
|
|
|
@ -20,7 +20,6 @@ struct ConfigChangedCallbackID
|
|||
size_t id = -1;
|
||||
|
||||
bool operator==(const ConfigChangedCallbackID&) const = default;
|
||||
bool operator!=(const ConfigChangedCallbackID&) const = default;
|
||||
};
|
||||
|
||||
using ConfigChangedCallback = std::function<void()>;
|
||||
|
|
|
@ -15,11 +15,6 @@ bool Location::operator==(const Location& other) const
|
|||
strcasecmp(key.c_str(), other.key.c_str()) == 0;
|
||||
}
|
||||
|
||||
bool Location::operator!=(const Location& other) const
|
||||
{
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
bool Location::operator<(const Location& other) const
|
||||
{
|
||||
if (system != other.system)
|
||||
|
|
|
@ -28,7 +28,6 @@ struct Location
|
|||
std::string key;
|
||||
|
||||
bool operator==(const Location& other) const;
|
||||
bool operator!=(const Location& other) const;
|
||||
bool operator<(const Location& other) const;
|
||||
};
|
||||
|
||||
|
|
|
@ -252,8 +252,8 @@ Signature Sign(const u8* key, const u8* hash)
|
|||
bn_mul(s.data.data(), minv, kk, ec_N, 30);
|
||||
|
||||
Signature signature;
|
||||
std::copy(r.data.cbegin(), r.data.cend(), signature.begin());
|
||||
std::copy(s.data.cbegin(), s.data.cend(), signature.begin() + 30);
|
||||
std::ranges::copy(r.data, signature.begin());
|
||||
std::ranges::copy(s.data, signature.begin() + 30);
|
||||
return signature;
|
||||
}
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ std::vector<std::string> DoFileSearch(const std::vector<std::string>& directorie
|
|||
// Remove duplicates (occurring because caller gave e.g. duplicate or overlapping directories -
|
||||
// not because std::filesystem returns duplicates). Also note that this pathname-based uniqueness
|
||||
// isn't as thorough as std::filesystem::equivalent.
|
||||
std::sort(result.begin(), result.end());
|
||||
std::ranges::sort(result);
|
||||
result.erase(std::unique(result.begin(), result.end()), result.end());
|
||||
|
||||
// Dolphin expects to be able to use "/" (DIR_SEP) everywhere.
|
||||
|
@ -107,7 +107,7 @@ std::vector<std::string> DoFileSearch(const std::vector<std::string>& directorie
|
|||
if constexpr (os_separator != DIR_SEP_CHR)
|
||||
{
|
||||
for (auto& path : result)
|
||||
std::replace(path.begin(), path.end(), '\\', DIR_SEP_CHR);
|
||||
std::ranges::replace(path, '\\', DIR_SEP_CHR);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
@ -448,7 +448,7 @@ FSTEntry ScanDirectoryTree(std::string directory, bool recursive)
|
|||
// about with directory separators (for host paths - emulated paths may require it) and instead
|
||||
// use fs::path to interact with them.
|
||||
auto wpath = path.wstring();
|
||||
std::replace(wpath.begin(), wpath.end(), L'\\', L'/');
|
||||
std::ranges::replace(wpath, L'\\', L'/');
|
||||
return WStringToUTF8(wpath);
|
||||
#else
|
||||
return PathToString(path);
|
||||
|
|
158
Source/Core/Common/HostDisassembler.cpp
Normal file
158
Source/Core/Common/HostDisassembler.cpp
Normal file
|
@ -0,0 +1,158 @@
|
|||
// Copyright 2008 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "Common/HostDisassembler.h"
|
||||
|
||||
#include <span>
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <fmt/ostream.h>
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#if defined(HAVE_LLVM)
|
||||
#include <llvm-c/Disassembler.h>
|
||||
#include <llvm-c/Target.h>
|
||||
#elif defined(_M_X86_64)
|
||||
#include <disasm.h> // Bochs
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LLVM)
|
||||
class HostDisassemblerLLVM final : public HostDisassembler
|
||||
{
|
||||
public:
|
||||
explicit HostDisassemblerLLVM(const char* host_disasm, const char* cpu = "",
|
||||
std::size_t inst_size = 0);
|
||||
~HostDisassemblerLLVM();
|
||||
|
||||
private:
|
||||
LLVMDisasmContextRef m_llvm_context;
|
||||
std::size_t m_instruction_size;
|
||||
|
||||
std::size_t Disassemble(const u8* begin, const u8* end, std::ostream& stream) override;
|
||||
};
|
||||
|
||||
HostDisassemblerLLVM::HostDisassemblerLLVM(const char* host_disasm, const char* cpu,
|
||||
std::size_t inst_size)
|
||||
: m_instruction_size(inst_size)
|
||||
{
|
||||
LLVMInitializeAllTargetInfos();
|
||||
LLVMInitializeAllTargetMCs();
|
||||
LLVMInitializeAllDisassemblers();
|
||||
|
||||
m_llvm_context = LLVMCreateDisasmCPU(host_disasm, cpu, nullptr, 0, nullptr, nullptr);
|
||||
|
||||
// Couldn't create llvm context
|
||||
if (!m_llvm_context)
|
||||
return;
|
||||
|
||||
LLVMSetDisasmOptions(m_llvm_context, LLVMDisassembler_Option_AsmPrinterVariant |
|
||||
LLVMDisassembler_Option_PrintLatency);
|
||||
}
|
||||
|
||||
HostDisassemblerLLVM::~HostDisassemblerLLVM()
|
||||
{
|
||||
if (m_llvm_context)
|
||||
LLVMDisasmDispose(m_llvm_context);
|
||||
}
|
||||
|
||||
std::size_t HostDisassemblerLLVM::Disassemble(const u8* begin, const u8* end, std::ostream& stream)
|
||||
{
|
||||
std::size_t instruction_count = 0;
|
||||
if (!m_llvm_context)
|
||||
return instruction_count;
|
||||
|
||||
while (begin < end)
|
||||
{
|
||||
char inst_disasm[256];
|
||||
|
||||
const auto inst_size =
|
||||
LLVMDisasmInstruction(m_llvm_context, const_cast<u8*>(begin), static_cast<u64>(end - begin),
|
||||
reinterpret_cast<u64>(begin), inst_disasm, sizeof(inst_disasm));
|
||||
if (inst_size == 0)
|
||||
{
|
||||
if (m_instruction_size != 0)
|
||||
{
|
||||
// If we are on an architecture that has a fixed instruction
|
||||
// size, we can continue onward past this bad instruction.
|
||||
fmt::println(stream, "{}\tInvalid inst: {:02x}", fmt::ptr(begin),
|
||||
fmt::join(std::span{begin, m_instruction_size}, ""));
|
||||
begin += m_instruction_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
// We can't continue if we are on an architecture that has flexible
|
||||
// instruction sizes. Dump the rest of the block instead.
|
||||
fmt::println(stream, "{}\tInvalid inst: {:02x}", fmt::ptr(begin),
|
||||
fmt::join(std::span{begin, end}, ""));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt::println(stream, "{}{}", fmt::ptr(begin), inst_disasm);
|
||||
begin += inst_size;
|
||||
}
|
||||
++instruction_count;
|
||||
}
|
||||
return instruction_count;
|
||||
}
|
||||
#elif defined(_M_X86_64)
|
||||
class HostDisassemblerBochs final : public HostDisassembler
|
||||
{
|
||||
public:
|
||||
explicit HostDisassemblerBochs();
|
||||
~HostDisassemblerBochs() = default;
|
||||
|
||||
private:
|
||||
disassembler m_disasm;
|
||||
|
||||
std::size_t Disassemble(const u8* begin, const u8* end, std::ostream& stream) override;
|
||||
};
|
||||
|
||||
HostDisassemblerBochs::HostDisassemblerBochs()
|
||||
{
|
||||
m_disasm.set_syntax_intel();
|
||||
}
|
||||
|
||||
std::size_t HostDisassemblerBochs::Disassemble(const u8* begin, const u8* end, std::ostream& stream)
|
||||
{
|
||||
std::size_t instruction_count = 0;
|
||||
while (begin < end)
|
||||
{
|
||||
char inst_disasm[256];
|
||||
|
||||
const auto inst_size =
|
||||
m_disasm.disasm64(0, reinterpret_cast<bx_address>(begin), begin, inst_disasm);
|
||||
fmt::println(stream, "{}\t{}", fmt::ptr(begin), inst_disasm);
|
||||
begin += inst_size;
|
||||
++instruction_count;
|
||||
}
|
||||
return instruction_count;
|
||||
}
|
||||
#endif
|
||||
|
||||
std::unique_ptr<HostDisassembler> HostDisassembler::Factory(Platform arch)
|
||||
{
|
||||
switch (arch)
|
||||
{
|
||||
#if defined(HAVE_LLVM)
|
||||
case Platform::x86_64:
|
||||
return std::make_unique<HostDisassemblerLLVM>("x86_64-none-unknown");
|
||||
case Platform::aarch64:
|
||||
return std::make_unique<HostDisassemblerLLVM>("aarch64-none-unknown", "cortex-a57", 4);
|
||||
#elif defined(_M_X86_64)
|
||||
case Platform::x86_64:
|
||||
return std::make_unique<HostDisassemblerBochs>();
|
||||
#else
|
||||
case Platform{}: // warning C4065: "switch statement contains 'default' but no 'case' labels"
|
||||
#endif
|
||||
default:
|
||||
return std::make_unique<HostDisassembler>();
|
||||
}
|
||||
}
|
||||
|
||||
std::size_t HostDisassembler::Disassemble(const u8* begin, const u8* end, std::ostream& stream)
|
||||
{
|
||||
fmt::println(stream, "{}\t{:02x}", fmt::ptr(begin), fmt::join(std::span{begin, end}, ""));
|
||||
return 0;
|
||||
}
|
26
Source/Core/Common/HostDisassembler.h
Normal file
26
Source/Core/Common/HostDisassembler.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
// Copyright 2008 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cstddef>
|
||||
#include <iosfwd>
|
||||
#include <memory>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
|
||||
class HostDisassembler
|
||||
{
|
||||
public:
|
||||
enum class Platform
|
||||
{
|
||||
x86_64,
|
||||
aarch64,
|
||||
};
|
||||
|
||||
virtual ~HostDisassembler() = default;
|
||||
|
||||
static std::unique_ptr<HostDisassembler> Factory(Platform arch);
|
||||
|
||||
virtual std::size_t Disassemble(const u8* begin, const u8* end, std::ostream& stream);
|
||||
};
|
|
@ -85,7 +85,7 @@ bool IniFile::Section::Delete(std::string_view key)
|
|||
return false;
|
||||
|
||||
values.erase(it);
|
||||
keys_order.erase(std::find(keys_order.begin(), keys_order.end(), key));
|
||||
keys_order.erase(std::ranges::find(keys_order, key));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,7 @@ const IniFile::Section* IniFile::GetSection(std::string_view section_name) const
|
|||
{
|
||||
for (const Section& sect : sections)
|
||||
{
|
||||
if (CaseInsensitiveStringCompare::IsEqual(sect.name, section_name))
|
||||
if (CaseInsensitiveEquals(sect.name, section_name))
|
||||
return §
|
||||
}
|
||||
|
||||
|
@ -141,7 +141,7 @@ IniFile::Section* IniFile::GetSection(std::string_view section_name)
|
|||
{
|
||||
for (Section& sect : sections)
|
||||
{
|
||||
if (CaseInsensitiveStringCompare::IsEqual(sect.name, section_name))
|
||||
if (CaseInsensitiveEquals(sect.name, section_name))
|
||||
return §
|
||||
}
|
||||
|
||||
|
|
|
@ -15,29 +15,6 @@
|
|||
|
||||
namespace Common
|
||||
{
|
||||
struct CaseInsensitiveStringCompare
|
||||
{
|
||||
// Allow heterogenous lookup.
|
||||
using is_transparent = void;
|
||||
|
||||
bool operator()(std::string_view a, std::string_view b) const
|
||||
{
|
||||
return std::lexicographical_compare(
|
||||
a.begin(), a.end(), b.begin(), b.end(),
|
||||
[](char lhs, char rhs) { return Common::ToLower(lhs) < Common::ToLower(rhs); });
|
||||
}
|
||||
|
||||
static bool IsEqual(std::string_view a, std::string_view b)
|
||||
{
|
||||
if (a.size() != b.size())
|
||||
return false;
|
||||
|
||||
return std::equal(a.begin(), a.end(), b.begin(), b.end(), [](char lhs, char rhs) {
|
||||
return Common::ToLower(lhs) == Common::ToLower(rhs);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
class IniFile
|
||||
{
|
||||
public:
|
||||
|
@ -86,7 +63,7 @@ public:
|
|||
bool GetLines(std::vector<std::string>* lines, const bool remove_comments = true) const;
|
||||
|
||||
bool operator<(const Section& other) const { return name < other.name; }
|
||||
using SectionMap = std::map<std::string, std::string, CaseInsensitiveStringCompare>;
|
||||
using SectionMap = std::map<std::string, std::string, CaseInsensitiveLess>;
|
||||
|
||||
const std::string& GetName() const { return name; }
|
||||
const SectionMap& GetValues() const { return values; }
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <vector>
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/FileUtil.h"
|
||||
|
@ -141,7 +142,7 @@ std::string EscapePath(const std::string& path)
|
|||
for (const std::string& split_string : split_strings)
|
||||
escaped_split_strings.push_back(EscapeFileName(split_string));
|
||||
|
||||
return JoinStrings(escaped_split_strings, "/");
|
||||
return fmt::to_string(fmt::join(escaped_split_strings, "/"));
|
||||
}
|
||||
|
||||
std::string UnescapeFileName(const std::string& filename)
|
||||
|
|
|
@ -36,10 +36,10 @@ MACAddress GenerateMacAddress(const MACConsumer type)
|
|||
switch (type)
|
||||
{
|
||||
case MACConsumer::BBA:
|
||||
std::copy(oui_bba.begin(), oui_bba.end(), mac.begin());
|
||||
std::ranges::copy(oui_bba, mac.begin());
|
||||
break;
|
||||
case MACConsumer::IOS:
|
||||
std::copy(oui_ios.begin(), oui_ios.end(), mac.begin());
|
||||
std::ranges::copy(oui_ios, mac.begin());
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,72 +17,72 @@
|
|||
|
||||
namespace Common
|
||||
{
|
||||
SettingsHandler::SettingsHandler() : m_buffer{}, m_position{0}, m_key{INITIAL_SEED}, decoded{""}
|
||||
namespace
|
||||
{
|
||||
// Key used to encrypt/decrypt setting.txt contents
|
||||
constexpr u32 INITIAL_SEED = 0x73B5DBFA;
|
||||
} // namespace
|
||||
|
||||
SettingsWriter::SettingsWriter() : m_buffer{}, m_position{0}, m_key{INITIAL_SEED}
|
||||
{
|
||||
}
|
||||
|
||||
SettingsHandler::SettingsHandler(const Buffer& buffer) : SettingsHandler()
|
||||
{
|
||||
m_buffer = buffer;
|
||||
Decrypt();
|
||||
}
|
||||
|
||||
const SettingsHandler::Buffer& SettingsHandler::GetBytes() const
|
||||
const SettingsBuffer& SettingsWriter::GetBytes() const
|
||||
{
|
||||
return m_buffer;
|
||||
}
|
||||
|
||||
std::string SettingsHandler::GetValue(std::string_view key) const
|
||||
std::string SettingsReader::GetValue(std::string_view key) const
|
||||
{
|
||||
constexpr char delim[] = "\n";
|
||||
std::string toFind = std::string(delim).append(key).append("=");
|
||||
size_t found = decoded.find(toFind);
|
||||
size_t found = m_decoded.find(toFind);
|
||||
|
||||
if (found != std::string_view::npos)
|
||||
{
|
||||
size_t delimFound = decoded.find(delim, found + toFind.length());
|
||||
size_t delimFound = m_decoded.find(delim, found + toFind.length());
|
||||
if (delimFound == std::string_view::npos)
|
||||
delimFound = decoded.length() - 1;
|
||||
return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length()));
|
||||
delimFound = m_decoded.length() - 1;
|
||||
return m_decoded.substr(found + toFind.length(), delimFound - (found + toFind.length()));
|
||||
}
|
||||
else
|
||||
{
|
||||
toFind = std::string(key).append("=");
|
||||
found = decoded.find(toFind);
|
||||
found = m_decoded.find(toFind);
|
||||
if (found == 0)
|
||||
{
|
||||
size_t delimFound = decoded.find(delim, found + toFind.length());
|
||||
size_t delimFound = m_decoded.find(delim, found + toFind.length());
|
||||
if (delimFound == std::string_view::npos)
|
||||
delimFound = decoded.length() - 1;
|
||||
return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length()));
|
||||
delimFound = m_decoded.length() - 1;
|
||||
return m_decoded.substr(found + toFind.length(), delimFound - (found + toFind.length()));
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
void SettingsHandler::Decrypt()
|
||||
SettingsReader::SettingsReader(const SettingsBuffer& buffer) : m_decoded{""}
|
||||
{
|
||||
while (m_position < m_buffer.size())
|
||||
u32 key = INITIAL_SEED;
|
||||
for (u32 position = 0; position < buffer.size(); ++position)
|
||||
{
|
||||
decoded.push_back((u8)(m_buffer[m_position] ^ m_key));
|
||||
m_position++;
|
||||
m_key = (m_key >> 31) | (m_key << 1);
|
||||
m_decoded.push_back((u8)(buffer[position] ^ key));
|
||||
key = (key >> 31) | (key << 1);
|
||||
}
|
||||
|
||||
// The decoded data normally uses CRLF line endings, but occasionally
|
||||
// (see the comment in WriteLine), lines can be separated by CRLFLF.
|
||||
// To handle this, we remove every CR and treat LF as the line ending.
|
||||
// (We ignore empty lines.)
|
||||
std::erase(decoded, '\x0d');
|
||||
std::erase(m_decoded, '\x0d');
|
||||
}
|
||||
|
||||
void SettingsHandler::AddSetting(std::string_view key, std::string_view value)
|
||||
void SettingsWriter::AddSetting(std::string_view key, std::string_view value)
|
||||
{
|
||||
WriteLine(fmt::format("{}={}\r\n", key, value));
|
||||
}
|
||||
|
||||
void SettingsHandler::WriteLine(std::string_view str)
|
||||
void SettingsWriter::WriteLine(std::string_view str)
|
||||
{
|
||||
const u32 old_position = m_position;
|
||||
const u32 old_key = m_key;
|
||||
|
@ -106,7 +106,7 @@ void SettingsHandler::WriteLine(std::string_view str)
|
|||
}
|
||||
}
|
||||
|
||||
void SettingsHandler::WriteByte(u8 b)
|
||||
void SettingsWriter::WriteByte(u8 b)
|
||||
{
|
||||
if (m_position >= m_buffer.size())
|
||||
return;
|
||||
|
@ -116,7 +116,7 @@ void SettingsHandler::WriteByte(u8 b)
|
|||
m_key = (m_key >> 31) | (m_key << 1);
|
||||
}
|
||||
|
||||
std::string SettingsHandler::GenerateSerialNumber()
|
||||
std::string SettingsWriter::GenerateSerialNumber()
|
||||
{
|
||||
const std::time_t t = std::time(nullptr);
|
||||
|
||||
|
|
|
@ -13,34 +13,35 @@
|
|||
|
||||
namespace Common
|
||||
{
|
||||
class SettingsHandler
|
||||
using SettingsBuffer = std::array<u8, 0x100>;
|
||||
|
||||
class SettingsWriter
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
SETTINGS_SIZE = 0x100,
|
||||
// Key used to encrypt/decrypt setting.txt contents
|
||||
INITIAL_SEED = 0x73B5DBFA
|
||||
};
|
||||
|
||||
using Buffer = std::array<u8, SETTINGS_SIZE>;
|
||||
SettingsHandler();
|
||||
explicit SettingsHandler(const Buffer& buffer);
|
||||
SettingsWriter();
|
||||
|
||||
void AddSetting(std::string_view key, std::string_view value);
|
||||
|
||||
const Buffer& GetBytes() const;
|
||||
std::string GetValue(std::string_view key) const;
|
||||
const SettingsBuffer& GetBytes() const;
|
||||
|
||||
static std::string GenerateSerialNumber();
|
||||
|
||||
private:
|
||||
void Decrypt();
|
||||
void WriteLine(std::string_view str);
|
||||
void WriteByte(u8 b);
|
||||
|
||||
std::array<u8, SETTINGS_SIZE> m_buffer;
|
||||
SettingsBuffer m_buffer;
|
||||
u32 m_position, m_key;
|
||||
std::string decoded;
|
||||
};
|
||||
|
||||
class SettingsReader
|
||||
{
|
||||
public:
|
||||
explicit SettingsReader(const SettingsBuffer& buffer);
|
||||
|
||||
std::string GetValue(std::string_view key) const;
|
||||
|
||||
private:
|
||||
std::string m_decoded;
|
||||
};
|
||||
} // namespace Common
|
||||
|
|
|
@ -235,8 +235,8 @@ std::string_view StripQuotes(std::string_view s)
|
|||
// Turns "\n\rhello" into " hello".
|
||||
void ReplaceBreaksWithSpaces(std::string& str)
|
||||
{
|
||||
std::replace(str.begin(), str.end(), '\r', ' ');
|
||||
std::replace(str.begin(), str.end(), '\n', ' ');
|
||||
std::ranges::replace(str, '\r', ' ');
|
||||
std::ranges::replace(str, '\n', ' ');
|
||||
}
|
||||
|
||||
void TruncateToCString(std::string* s)
|
||||
|
@ -369,21 +369,6 @@ std::vector<std::string> SplitString(const std::string& str, const char delim)
|
|||
return output;
|
||||
}
|
||||
|
||||
std::string JoinStrings(const std::vector<std::string>& strings, const std::string& delimiter)
|
||||
{
|
||||
// Check if we can return early, just for speed
|
||||
if (strings.empty())
|
||||
return "";
|
||||
|
||||
std::ostringstream res;
|
||||
std::copy(strings.begin(), strings.end(),
|
||||
std::ostream_iterator<std::string>(res, delimiter.c_str()));
|
||||
|
||||
// Drop the trailing delimiter.
|
||||
std::string joined = res.str();
|
||||
return joined.substr(0, joined.length() - delimiter.length());
|
||||
}
|
||||
|
||||
std::string TabsToSpaces(int tab_size, std::string str)
|
||||
{
|
||||
const std::string spaces(tab_size, ' ');
|
||||
|
@ -490,8 +475,7 @@ std::string ConvertStringForGame(const std::string& input, int length)
|
|||
|
||||
size_t StringUTF8CodePointCount(std::string_view str)
|
||||
{
|
||||
return str.size() -
|
||||
std::count_if(str.begin(), str.end(), [](char c) -> bool { return (c & 0xC0) == 0x80; });
|
||||
return str.size() - std::ranges::count_if(str, [](char c) -> bool { return (c & 0xC0) == 0x80; });
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
|
@ -861,20 +845,24 @@ std::string GetEscapedHtml(std::string html)
|
|||
|
||||
void ToLower(std::string* str)
|
||||
{
|
||||
std::transform(str->begin(), str->end(), str->begin(), [](char c) { return Common::ToLower(c); });
|
||||
std::ranges::transform(*str, str->begin(), static_cast<char (&)(char)>(Common::ToLower));
|
||||
}
|
||||
|
||||
void ToUpper(std::string* str)
|
||||
{
|
||||
std::transform(str->begin(), str->end(), str->begin(), [](char c) { return Common::ToUpper(c); });
|
||||
std::ranges::transform(*str, str->begin(), static_cast<char (&)(char)>(Common::ToUpper));
|
||||
}
|
||||
|
||||
bool CaseInsensitiveEquals(std::string_view a, std::string_view b)
|
||||
{
|
||||
if (a.size() != b.size())
|
||||
return false;
|
||||
return std::equal(a.begin(), a.end(), b.begin(),
|
||||
[](char ca, char cb) { return Common::ToLower(ca) == Common::ToLower(cb); });
|
||||
return std::ranges::equal(
|
||||
a, b, [](char ca, char cb) { return Common::ToLower(ca) == Common::ToLower(cb); });
|
||||
}
|
||||
|
||||
bool CaseInsensitiveLess::operator()(std::string_view a, std::string_view b) const
|
||||
{
|
||||
return std::ranges::lexicographical_compare(
|
||||
a, b, [](char ca, char cb) { return Common::ToLower(ca) < Common::ToLower(cb); });
|
||||
}
|
||||
|
||||
std::string BytesToHexString(std::span<const u8> bytes)
|
||||
|
|
|
@ -200,7 +200,6 @@ std::from_chars_result FromChars(std::string_view sv, T& value,
|
|||
std::string TabsToSpaces(int tab_size, std::string str);
|
||||
|
||||
std::vector<std::string> SplitString(const std::string& str, char delim);
|
||||
std::string JoinStrings(const std::vector<std::string>& strings, const std::string& delimiter);
|
||||
|
||||
// "C:/Windows/winhelp.exe" to "C:/Windows/", "winhelp", ".exe"
|
||||
// This requires forward slashes to be used for the path separators, even on Windows.
|
||||
|
@ -333,6 +332,14 @@ std::string GetEscapedHtml(std::string html);
|
|||
void ToLower(std::string* str);
|
||||
void ToUpper(std::string* str);
|
||||
bool CaseInsensitiveEquals(std::string_view a, std::string_view b);
|
||||
|
||||
// 'std::less'-like comparison function object type for case-insensitive strings.
|
||||
struct CaseInsensitiveLess
|
||||
{
|
||||
using is_transparent = void; // Allow heterogenous lookup.
|
||||
bool operator()(std::string_view a, std::string_view b) const;
|
||||
};
|
||||
|
||||
std::string BytesToHexString(std::span<const u8> bytes);
|
||||
} // namespace Common
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <thread>
|
||||
|
||||
#include <fmt/format.h>
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/Intrinsics.h"
|
||||
|
@ -275,5 +276,5 @@ std::string CPUInfo::Summarize()
|
|||
if (bSHA2)
|
||||
sum.push_back("SHA2");
|
||||
|
||||
return JoinStrings(sum, ",");
|
||||
return fmt::to_string(fmt::join(sum, ","));
|
||||
}
|
||||
|
|
|
@ -122,7 +122,6 @@ struct OpArg
|
|||
return std::tie(scale, offsetOrBaseReg, indexReg, offset, operandReg) ==
|
||||
std::tie(b.scale, b.offsetOrBaseReg, b.indexReg, b.offset, b.operandReg);
|
||||
}
|
||||
constexpr bool operator!=(const OpArg& b) const { return !operator==(b); }
|
||||
u64 Imm64() const
|
||||
{
|
||||
DEBUG_ASSERT(scale == SCALE_IMM64);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue