Merge branch 'dolphin-emu-maste2r'

This commit is contained in:
Nayla Hanegan 2024-12-24 20:47:11 -05:00
commit 1e1168432b
218 changed files with 53095 additions and 44354 deletions

2
.gitignore vendored
View file

@ -43,3 +43,5 @@ CMakeLists.txt.user
.idea/
# Ignore Visual Studio Code's working dir
/.vscode/
# Ignore flatpak-builder's cache dir
.flatpak-builder

View file

@ -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})

View file

@ -672,7 +672,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

View file

@ -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"
@ -148,6 +160,10 @@
"title": "Gladius",
"3D0894616C9A7FA5ED91C1D2F461BF14DF47ECEC": "Fix freeze in opening cutscene"
},
"GMSE01": {
"title": "Super Mario Sunshine",
"BD718F961DBA5372B1D0257D454D535746C453A0": "Widescreen"
},
"GNHE5d": {
"title": "NHL HITZ 2002",
"89393A24E2336841AA4CD0AD3BE1C9A66B89E9EF": "Nop Hack"
@ -236,6 +252,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"

View file

@ -1,8 +1,7 @@
# GEDE01, GEDP01 - Eternal Darkness
# GEDE01, GEDP01, GEDJ01, GEDW01 - Eternal Darkness
[Core]
# Values set here will override the main Dolphin settings.
CPUThread = False
[OnFrame]
# Add memory patches to be applied every frame here.

View file

@ -0,0 +1,11 @@
# GEDE01 - Eternal Darkness
[OnFrame]
$Fix startup hang
0x801EF444:dword:0x480371ED
[OnFrame_Enabled]
$Fix startup hang
[Patches_RetroAchievements_Verified]
$Fix startup hang

View file

@ -0,0 +1,11 @@
# GEDJ01 - Eternal Darkness
[OnFrame]
$Fix startup hang
0x801E4588:dword:0x48036E71
[OnFrame_Enabled]
$Fix startup hang
[Patches_RetroAchievements_Verified]
$Fix startup hang

View file

@ -0,0 +1,11 @@
# GEDP01 - Eternal Darkness
[OnFrame]
$Fix startup hang
0x801E3BC4:dword:0x48036F15
[OnFrame_Enabled]
$Fix startup hang
[Patches_RetroAchievements_Verified]
$Fix startup hang

View file

@ -0,0 +1,8 @@
# GEDW01 - Eternal Darkness
[OnFrame]
$Fix startup hang
0x801BE42C:dword:0x48036E65
[OnFrame_Enabled]
$Fix startup hang

View file

@ -10,3 +10,6 @@ MMU = True
[ActionReplay]
# Add action replay cheats here.
[Video_Hacks]
# Needed for loading screens to show up.
EFBAccessEnable = True

View file

@ -175,3 +175,6 @@ C2363138 00000009
7C631670 54A5F0BE
7C630194 7C630214
60000000 00000000
[Gecko_RetroAchievements_Verified]
$Widescreen

View file

@ -9,8 +9,5 @@
[ActionReplay]
# Add action replay cheats here.
[Video_Settings]
[Video_Hacks]
EFBAccessEnable = False
ImmediateXFBEnable = False

View file

@ -1,14 +0,0 @@
# GXBE69, GXBP69 - SSX3
[Core]
# Values set here will override the main Dolphin settings.
[OnFrame]
# Add memory patches to be applied every frame here.
[ActionReplay]
# Add action replay cheats here.
[Video_Hacks]
EFBAccessEnable = False

View file

@ -8,3 +8,6 @@ $Bloom OFF
[ActionReplay]
# Add action replay cheats here.
[Patches_RetroAchievements_Verified]
$Bloom OFF

View file

@ -12,3 +12,6 @@ SafeTextureCacheColorSamples = 0
[ActionReplay]
# Add action replay cheats here.
[Patches_RetroAchievements_Verified]
$Bloom OFF

View file

@ -11,3 +11,6 @@ $Bloom OFF
[ActionReplay]
# Add action replay cheats here.
[Patches_RetroAchievements_Verified]
$Bloom OFF

View file

@ -16,6 +16,3 @@ $Disable blur
[Video_Settings]
SafeTextureCacheColorSamples = 0
[Video_Hacks]
EFBAccessEnable = False

View file

@ -0,0 +1,5 @@
# SCDE52, SCDP52 - Cabela's Dangerous Hunts 2011
[Video_Settings]
SafeTextureCacheColorSamples = 0

View file

@ -0,0 +1,5 @@
# SHUE52 - Cabela's Dangerous Hunts 2011: Special Edition
[Video_Settings]
SafeTextureCacheColorSamples = 0

View file

@ -1,14 +0,0 @@
# SNCE8P, SNCJ8P, SNCP8P - SONIC COLOURS
[Core]
# Values set here will override the main Dolphin settings.
[OnFrame]
# Add memory patches to be applied every frame here.
[ActionReplay]
# Add action replay cheats here.
[Video_Hacks]
EFBAccessEnable = False

View file

@ -3,7 +3,7 @@
[OnFrame]
$Bypass Metafortress [crediar, ported by RedStoneMatt]
0x80176000:dword:0x48000084
0x80176728:dword:0x60000000
0x80176730:dword:0x60000000
0x80176B6C:dword:0x60000000
0x80176E88:dword:0x48000090
0x80177160:dword:0x60000000
@ -48,7 +48,7 @@ $Bypass Metafortress [crediar, ported by RedStoneMatt]
0x80181974:dword:0x60000000
0x80181930:dword:0x48000024
0x80181D94:dword:0x60000000
0x80181FD0:dword:0x48000090
0x80181FE0:dword:0x48000090
0x801821BC:dword:0x60000000
0x80182374:dword:0x4800009C
0x8018250C:dword:0x60000000
@ -198,7 +198,7 @@ $Bypass Metafortress [crediar, ported by RedStoneMatt]
0x80210090:dword:0x60000000
0x80210A10:dword:0x60000000
0x80210D84:dword:0x48000090
0x802113B8:dword:0x48000094
0x802115B0:dword:0x48000094
0x80211ABC:dword:0x4800008C
0x80211F34:dword:0x60000000
0x80216AB0:dword:0x60000000
@ -1141,7 +1141,7 @@ $Bypass Metafortress [crediar, ported by RedStoneMatt]
0x8069ED00:dword:0x48000088
0x8069EEB4:dword:0x60000000
0x8069F38C:dword:0x60000000
0x8069FC4C:dword:0x60000000
0x8069FC50:dword:0x60000000
0x8069FE88:dword:0x48000090
0x806A0C74:dword:0x7C600050
0x806A0DA8:dword:0x60000000
@ -1206,12 +1206,12 @@ $Bypass Metafortress [crediar, ported by RedStoneMatt]
0x806C3EE0:dword:0x48000088
0x806C421C:dword:0x48000084
0x806C4750:dword:0x4800009C
0x806C4D04:dword:0x48000090
0x806C4CE8:dword:0x48000090
0x806C54E8:dword:0x4800008C
0x806C7C48:dword:0x48000090
0x806C8088:dword:0x60000000
0x806C89A8:dword:0x48000094
0x806C8F34:dword:0x60000000
0x806C8F5C:dword:0x60000000
0x806CA060:dword:0x7C800050
0x806CAC60:dword:0x60000000
0x806CADE4:dword:0x60000000
@ -1233,7 +1233,7 @@ $Bypass Metafortress [crediar, ported by RedStoneMatt]
0x806CE150:dword:0x48000088
0x806CE7F8:dword:0x60000000
0x806CEC18:dword:0x48000094
0x806CDCB4:dword:0x48000088
0x806CEDF0:dword:0x48000088
0x806CFD04:dword:0x60000000
0x806CFEE8:dword:0x48000090
0x806D0CD4:dword:0x60000000

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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: 부쉬 구조대

View file

@ -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

View file

@ -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

View file

@ -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

21
Flatpak/SDL2/SDL2.json Normal file
View 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
View 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

View 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>

View 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

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

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

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

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

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

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

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

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

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

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

View file

@ -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();

View file

@ -789,7 +789,7 @@ enum class BooleanSetting(
Settings.FILE_GFX,
Settings.SECTION_GFX_HACKS,
"EFBAccessEnable",
true
false
),
GFX_HACK_EFB_DEFER_INVALIDATION(
Settings.FILE_GFX,

View file

@ -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", ""),

View file

@ -62,7 +62,7 @@ bool IsPathAndroidContent(std::string_view uri)
std::string OpenModeToAndroid(std::string mode)
{
// The 'b' specifier is not supported by Android. Since we're on POSIX, it's fine to just skip it.
mode.erase(std::remove(mode.begin(), mode.end(), 'b'));
std::erase(mode, 'b');
if (mode == "r")
return "r";

View file

@ -101,6 +101,10 @@ void Host_PPCSymbolsChanged()
{
}
void Host_PPCBreakpointsChanged()
{
}
void Host_RefreshDSPDebuggerWindow()
{
}
@ -146,7 +150,7 @@ void Host_UpdateDisasmDialog()
{
}
void Host_JitCacheCleared()
void Host_JitCacheInvalidation()
{
}
@ -408,9 +412,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)

View file

@ -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

View file

@ -98,7 +98,8 @@ std::vector<std::string> DoFileSearch(const std::vector<std::string>& directorie
// not because std::filesystem returns duplicates). Also note that this pathname-based uniqueness
// isn't as thorough as std::filesystem::equivalent.
std::ranges::sort(result);
result.erase(std::unique(result.begin(), result.end()), result.end());
const auto unique_result = std::ranges::unique(result);
result.erase(unique_result.begin(), unique_result.end());
// Dolphin expects to be able to use "/" (DIR_SEP) everywhere.
// std::filesystem uses the OS separator.

View file

@ -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);

View file

@ -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

View file

@ -44,6 +44,7 @@ struct Symbol
std::string name;
std::string function_name; // stripped function name
std::string object_name; // name of object/source file symbol belongs to
std::vector<SCall> callers; // addresses of functions that call this function
std::vector<SCall> calls; // addresses of functions that are called by this function
u32 hash = 0; // use for HLE function finding

View file

@ -16,6 +16,7 @@
#include "Common/Assert.h"
#include "Common/BitUtils.h"
#include "Common/CommonPaths.h"
#include "Common/Config/Config.h"
#include "Common/FileUtil.h"
#include "Common/IOFile.h"
#include "Common/Image.h"
@ -23,8 +24,12 @@
#include "Common/ScopeGuard.h"
#include "Common/Version.h"
#include "Common/WorkQueueThread.h"
#include "Core/ActionReplay.h"
#include "Core/Config/AchievementSettings.h"
#include "Core/Config/FreeLookSettings.h"
#include "Core/Config/MainSettings.h"
#include "Core/Core.h"
#include "Core/GeckoCode.h"
#include "Core/HW/Memmap.h"
#include "Core/HW/VideoInterface.h"
#include "Core/PatchEngine.h"
@ -62,7 +67,8 @@ void AchievementManager::Init()
[](const char* message, const rc_client_t* client) {
INFO_LOG_FMT(ACHIEVEMENTS, "{}", message);
});
rc_client_set_hardcore_enabled(m_client, Config::Get(Config::RA_HARDCORE_ENABLED));
Config::AddConfigChangedCallback([this] { SetHardcoreMode(); });
SetHardcoreMode();
m_queue.Reset("AchievementManagerQueue", [](const std::function<void()>& func) { func(); });
m_image_queue.Reset("AchievementManagerImageQueue",
[](const std::function<void()>& func) { func(); });
@ -361,6 +367,12 @@ std::recursive_mutex& AchievementManager::GetLock()
void AchievementManager::SetHardcoreMode()
{
rc_client_set_hardcore_enabled(m_client, Config::Get(Config::RA_HARDCORE_ENABLED));
if (Config::Get(Config::RA_HARDCORE_ENABLED))
{
if (Config::Get(Config::MAIN_EMULATION_SPEED) < 1.0f)
Config::SetBaseOrCurrent(Config::MAIN_EMULATION_SPEED, 1.0f);
Config::SetBaseOrCurrent(Config::FREE_LOOK_ENABLED, false);
}
}
bool AchievementManager::IsHardcoreModeActive() const
@ -373,10 +385,11 @@ bool AchievementManager::IsHardcoreModeActive() const
return rc_client_is_processing_required(m_client);
}
void AchievementManager::FilterApprovedPatches(std::vector<PatchEngine::Patch>& patches,
const std::string& game_ini_id) const
template <typename T>
void AchievementManager::FilterApprovedIni(std::vector<T>& codes,
const std::string& game_ini_id) const
{
if (patches.empty())
if (codes.empty())
{
// There's nothing to verify, so let's save ourselves some work
return;
@ -387,46 +400,120 @@ void AchievementManager::FilterApprovedPatches(std::vector<PatchEngine::Patch>&
if (!IsHardcoreModeActive())
return;
// Approved codes list failed to hash
if (!m_ini_root->is<picojson::value::object>())
{
codes.clear();
return;
}
for (auto& code : codes)
{
if (code.enabled && !CheckApprovedCode(code, game_ini_id))
code.enabled = false;
}
}
template <typename T>
bool AchievementManager::CheckApprovedCode(const T& code, const std::string& game_ini_id) const
{
if (!IsHardcoreModeActive())
return true;
// Approved codes list failed to hash
if (!m_ini_root->is<picojson::value::object>())
return false;
const bool known_id = m_ini_root->contains(game_ini_id);
auto patch_itr = patches.begin();
while (patch_itr != patches.end())
INFO_LOG_FMT(ACHIEVEMENTS, "Verifying code {}", code.name);
bool verified = false;
if (known_id)
{
INFO_LOG_FMT(ACHIEVEMENTS, "Verifying patch {}", patch_itr->name);
auto digest = GetCodeHash(code);
bool verified = false;
if (known_id)
{
auto context = Common::SHA1::CreateContext();
context->Update(Common::BitCastToArray<u8>(static_cast<u64>(patch_itr->entries.size())));
for (const auto& entry : patch_itr->entries)
{
context->Update(Common::BitCastToArray<u8>(entry.type));
context->Update(Common::BitCastToArray<u8>(entry.address));
context->Update(Common::BitCastToArray<u8>(entry.value));
context->Update(Common::BitCastToArray<u8>(entry.comparand));
context->Update(Common::BitCastToArray<u8>(entry.conditional));
}
auto digest = context->Finish();
verified = m_ini_root->get(game_ini_id).contains(Common::SHA1::DigestToString(digest));
}
if (!verified)
{
patch_itr = patches.erase(patch_itr);
OSD::AddMessage(
fmt::format("Failed to verify patch {} from file {}.", patch_itr->name, game_ini_id),
OSD::Duration::VERY_LONG, OSD::Color::RED);
OSD::AddMessage("Disable hardcore mode to enable this patch.", OSD::Duration::VERY_LONG,
OSD::Color::RED);
}
else
{
patch_itr++;
}
verified = m_ini_root->get(game_ini_id).contains(Common::SHA1::DigestToString(digest));
}
if (!verified)
{
OSD::AddMessage(fmt::format("Failed to verify code {} from file {}.", code.name, game_ini_id),
OSD::Duration::VERY_LONG, OSD::Color::RED);
OSD::AddMessage("Disable hardcore mode to enable this code.", OSD::Duration::VERY_LONG,
OSD::Color::RED);
}
return verified;
}
Common::SHA1::Digest AchievementManager::GetCodeHash(const PatchEngine::Patch& patch) const
{
auto context = Common::SHA1::CreateContext();
context->Update(Common::BitCastToArray<u8>(static_cast<u64>(patch.entries.size())));
for (const auto& entry : patch.entries)
{
context->Update(Common::BitCastToArray<u8>(entry.type));
context->Update(Common::BitCastToArray<u8>(entry.address));
context->Update(Common::BitCastToArray<u8>(entry.value));
context->Update(Common::BitCastToArray<u8>(entry.comparand));
context->Update(Common::BitCastToArray<u8>(entry.conditional));
}
return context->Finish();
}
Common::SHA1::Digest AchievementManager::GetCodeHash(const Gecko::GeckoCode& code) const
{
auto context = Common::SHA1::CreateContext();
context->Update(Common::BitCastToArray<u8>(static_cast<u64>(code.codes.size())));
for (const auto& entry : code.codes)
{
context->Update(Common::BitCastToArray<u8>(entry.address));
context->Update(Common::BitCastToArray<u8>(entry.data));
}
return context->Finish();
}
Common::SHA1::Digest AchievementManager::GetCodeHash(const ActionReplay::ARCode& code) const
{
auto context = Common::SHA1::CreateContext();
context->Update(Common::BitCastToArray<u8>(static_cast<u64>(code.ops.size())));
for (const auto& entry : code.ops)
{
context->Update(Common::BitCastToArray<u8>(entry.cmd_addr));
context->Update(Common::BitCastToArray<u8>(entry.value));
}
return context->Finish();
}
void AchievementManager::FilterApprovedPatches(std::vector<PatchEngine::Patch>& patches,
const std::string& game_ini_id) const
{
FilterApprovedIni(patches, game_ini_id);
}
void AchievementManager::FilterApprovedGeckoCodes(std::vector<Gecko::GeckoCode>& codes,
const std::string& game_ini_id) const
{
FilterApprovedIni(codes, game_ini_id);
}
void AchievementManager::FilterApprovedARCodes(std::vector<ActionReplay::ARCode>& codes,
const std::string& game_ini_id) const
{
FilterApprovedIni(codes, game_ini_id);
}
bool AchievementManager::CheckApprovedGeckoCode(const Gecko::GeckoCode& code,
const std::string& game_ini_id) const
{
return CheckApprovedCode(code, game_ini_id);
}
bool AchievementManager::CheckApprovedARCode(const ActionReplay::ARCode& code,
const std::string& game_ini_id) const
{
return CheckApprovedCode(code, game_ini_id);
}
void AchievementManager::SetSpectatorMode()

View file

@ -45,6 +45,16 @@ namespace PatchEngine
struct Patch;
} // namespace PatchEngine
namespace Gecko
{
class GeckoCode;
} // namespace Gecko
namespace ActionReplay
{
struct ARCode;
} // namespace ActionReplay
class AchievementManager
{
public:
@ -70,8 +80,8 @@ public:
static constexpr std::string_view BLUE = "#0B71C1";
static constexpr std::string_view APPROVED_LIST_FILENAME = "ApprovedInis.json";
static const inline Common::SHA1::Digest APPROVED_LIST_HASH = {
0x50, 0x2F, 0x58, 0x02, 0x94, 0x60, 0x1B, 0x9F, 0x92, 0xC7,
0x04, 0x17, 0x50, 0x2E, 0xF3, 0x09, 0x8C, 0x8C, 0xD6, 0xC0};
0xA4, 0x98, 0x59, 0x23, 0x10, 0x56, 0x45, 0x30, 0xA9, 0xC5,
0x68, 0x5A, 0xB6, 0x47, 0x67, 0xF8, 0xF0, 0x7D, 0x1D, 0x14};
struct LeaderboardEntry
{
@ -122,11 +132,18 @@ public:
void DoIdle();
std::recursive_mutex& GetLock();
void SetHardcoreMode();
bool IsHardcoreModeActive() const;
void SetGameIniId(const std::string& game_ini_id) { m_game_ini_id = game_ini_id; }
void FilterApprovedPatches(std::vector<PatchEngine::Patch>& patches,
const std::string& game_ini_id) const;
void FilterApprovedGeckoCodes(std::vector<Gecko::GeckoCode>& codes,
const std::string& game_ini_id) const;
void FilterApprovedARCodes(std::vector<ActionReplay::ARCode>& codes,
const std::string& game_ini_id) const;
bool CheckApprovedGeckoCode(const Gecko::GeckoCode& code, const std::string& game_ini_id) const;
bool CheckApprovedARCode(const ActionReplay::ARCode& code, const std::string& game_ini_id) const;
void SetSpectatorMode();
std::string_view GetPlayerDisplayName() const;
u32 GetPlayerScore() const;
@ -181,6 +198,16 @@ private:
void* userdata);
void DisplayWelcomeMessage();
void SetHardcoreMode();
template <typename T>
void FilterApprovedIni(std::vector<T>& codes, const std::string& game_ini_id) const;
template <typename T>
bool CheckApprovedCode(const T& code, const std::string& game_ini_id) const;
Common::SHA1::Digest GetCodeHash(const PatchEngine::Patch& patch) const;
Common::SHA1::Digest GetCodeHash(const Gecko::GeckoCode& code) const;
Common::SHA1::Digest GetCodeHash(const ActionReplay::ARCode& code) const;
static void LeaderboardEntriesCallback(int result, const char* error_message,
rc_client_leaderboard_entry_list_t* list,
rc_client_t* client, void* userdata);
@ -249,11 +276,21 @@ private:
#include <string>
namespace ActionReplay
{
struct ARCode;
}
namespace DiscIO
{
class Volume;
}
namespace Gecko
{
class GeckoCode;
}
class AchievementManager
{
public:
@ -265,6 +302,18 @@ public:
constexpr bool IsHardcoreModeActive() { return false; }
constexpr bool CheckApprovedGeckoCode(const Gecko::GeckoCode& code,
const std::string& game_ini_id)
{
return true;
};
constexpr bool CheckApprovedARCode(const ActionReplay::ARCode& code,
const std::string& game_ini_id)
{
return true;
};
constexpr void LoadGame(const std::string&, const DiscIO::Volume*) {}
constexpr void SetBackgroundExecutionAllowed(bool allowed) {}

View file

@ -39,6 +39,7 @@
#include "Common/MsgHandler.h"
#include "Core/ARDecrypt.h"
#include "Core/AchievementManager.h"
#include "Core/CheatCodes.h"
#include "Core/Config/MainSettings.h"
#include "Core/PowerPC/MMU.h"
@ -112,7 +113,7 @@ struct ARAddr
// ----------------------
// AR Remote Functions
void ApplyCodes(std::span<const ARCode> codes)
void ApplyCodes(std::span<const ARCode> codes, const std::string& game_id)
{
if (!Config::AreCheatsEnabled())
return;
@ -121,7 +122,10 @@ void ApplyCodes(std::span<const ARCode> codes)
s_disable_logging = false;
s_active_codes.clear();
std::copy_if(codes.begin(), codes.end(), std::back_inserter(s_active_codes),
[](const ARCode& code) { return code.enabled; });
[&game_id](const ARCode& code) {
return code.enabled &&
AchievementManager::GetInstance().CheckApprovedARCode(code, game_id);
});
s_active_codes.shrink_to_fit();
}
@ -169,9 +173,10 @@ void AddCode(ARCode code)
}
}
void LoadAndApplyCodes(const Common::IniFile& global_ini, const Common::IniFile& local_ini)
void LoadAndApplyCodes(const Common::IniFile& global_ini, const Common::IniFile& local_ini,
const std::string& game_id)
{
ApplyCodes(LoadCodes(global_ini, local_ini));
ApplyCodes(LoadCodes(global_ini, local_ini), game_id);
}
// Parses the Action Replay section of a game ini file.

View file

@ -45,12 +45,13 @@ struct ARCode
void RunAllActive(const Core::CPUThreadGuard& cpu_guard);
void ApplyCodes(std::span<const ARCode> codes);
void ApplyCodes(std::span<const ARCode> codes, const std::string& game_id);
void SetSyncedCodesAsActive();
void UpdateSyncedCodes(std::span<const ARCode> codes);
std::vector<ARCode> ApplyAndReturnCodes(std::span<const ARCode> codes);
void AddCode(ARCode new_code);
void LoadAndApplyCodes(const Common::IniFile& global_ini, const Common::IniFile& local_ini);
void LoadAndApplyCodes(const Common::IniFile& global_ini, const Common::IniFile& local_ini,
const std::string& game_id);
std::vector<ARCode> LoadCodes(const Common::IniFile& global_ini, const Common::IniFile& local_ini);
void SaveCodes(Common::IniFile* local_ini, std::span<const ARCode> codes);

View file

@ -605,7 +605,9 @@ bool CBoot::BootUp(Core::System& system, const Core::CPUThreadGuard& guard,
ppc_state.pc = executable.reader->GetEntryPoint();
if (executable.reader->LoadSymbols(guard, system.GetPPCSymbolDB()))
const std::string filename = PathToFileName(executable.path);
if (executable.reader->LoadSymbols(guard, system.GetPPCSymbolDB(), filename))
{
Host_PPCSymbolsChanged();
HLE::PatchFunctions(system);

View file

@ -215,7 +215,8 @@ public:
virtual bool IsValid() const = 0;
virtual bool IsWii() const = 0;
virtual bool LoadIntoMemory(Core::System& system, bool only_in_mem1 = false) const = 0;
virtual bool LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_symbol_db) const = 0;
virtual bool LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_symbol_db,
const std::string& filename) const = 0;
protected:
std::vector<u8> m_bytes;

View file

@ -371,12 +371,12 @@ bool CBoot::SetupWiiMemory(Core::System& system, IOS::HLE::IOSC::ConsoleType con
const auto fs = system.GetIOS()->GetFS();
{
Common::SettingsHandler::Buffer data;
Common::SettingsBuffer data;
const auto file = fs->OpenFile(IOS::SYSMENU_UID, IOS::SYSMENU_GID, settings_file_path,
IOS::HLE::FS::Mode::Read);
if (file && file->Read(data.data(), data.size()))
{
Common::SettingsHandler settings_reader(data);
const Common::SettingsReader settings_reader(data);
serno = settings_reader.GetValue("SERNO");
model = settings_reader.GetValue("MODEL");
@ -413,7 +413,7 @@ bool CBoot::SetupWiiMemory(Core::System& system, IOS::HLE::IOSC::ConsoleType con
if (Core::WantsDeterminism())
serno = "123456789";
else
serno = Common::SettingsHandler::GenerateSerialNumber();
serno = Common::SettingsWriter::GenerateSerialNumber();
INFO_LOG_FMT(BOOT, "No previous serial number found, generated one instead: {}", serno);
}
else
@ -421,20 +421,21 @@ bool CBoot::SetupWiiMemory(Core::System& system, IOS::HLE::IOSC::ConsoleType con
INFO_LOG_FMT(BOOT, "Using serial number: {}", serno);
}
Common::SettingsHandler gen;
gen.AddSetting("AREA", region_setting.area);
gen.AddSetting("MODEL", model);
gen.AddSetting("DVD", "0");
gen.AddSetting("MPCH", "0x7FFE");
gen.AddSetting("CODE", region_setting.code);
gen.AddSetting("SERNO", serno);
gen.AddSetting("VIDEO", region_setting.video);
gen.AddSetting("GAME", region_setting.game);
Common::SettingsWriter settings_writer;
settings_writer.AddSetting("AREA", region_setting.area);
settings_writer.AddSetting("MODEL", model);
settings_writer.AddSetting("DVD", "0");
settings_writer.AddSetting("MPCH", "0x7FFE");
settings_writer.AddSetting("CODE", region_setting.code);
settings_writer.AddSetting("SERNO", serno);
settings_writer.AddSetting("VIDEO", region_setting.video);
settings_writer.AddSetting("GAME", region_setting.game);
constexpr IOS::HLE::FS::Mode rw_mode = IOS::HLE::FS::Mode::ReadWrite;
const auto settings_file = fs->CreateAndOpenFile(IOS::SYSMENU_UID, IOS::SYSMENU_GID,
settings_file_path, {rw_mode, rw_mode, rw_mode});
if (!settings_file || !settings_file->Write(gen.GetBytes().data(), gen.GetBytes().size()))
if (!settings_file ||
!settings_file->Write(settings_writer.GetBytes().data(), settings_writer.GetBytes().size()))
{
PanicAlertFmtT("SetupWiiMemory: Can't create setting.txt file");
return false;
@ -443,7 +444,7 @@ bool CBoot::SetupWiiMemory(Core::System& system, IOS::HLE::IOSC::ConsoleType con
auto& memory = system.GetMemory();
// Write the 256 byte setting.txt to memory.
memory.CopyToEmu(0x3800, gen.GetBytes().data(), gen.GetBytes().size());
memory.CopyToEmu(0x3800, settings_writer.GetBytes().data(), settings_writer.GetBytes().size());
INFO_LOG_FMT(BOOT, "Setup Wii Memory...");

View file

@ -27,7 +27,8 @@ public:
bool IsAncast() const { return m_is_ancast; }
u32 GetEntryPoint() const override { return m_dolheader.entryPoint; }
bool LoadIntoMemory(Core::System& system, bool only_in_mem1 = false) const override;
bool LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_symbol_db) const override
bool LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_symbol_db,
const std::string& filename) const override
{
return false;
}

View file

@ -180,7 +180,8 @@ SectionID ElfReader::GetSectionByName(const char* name, int firstSection) const
return -1;
}
bool ElfReader::LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_symbol_db) const
bool ElfReader::LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_symbol_db,
const std::string& filename) const
{
bool hasSymbols = false;
SectionID sec = GetSectionByName(".symtab");
@ -218,7 +219,7 @@ bool ElfReader::LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_
default:
continue;
}
ppc_symbol_db.AddKnownSymbol(guard, value, size, name, symtype);
ppc_symbol_db.AddKnownSymbol(guard, value, size, name, filename, symtype);
hasSymbols = true;
}
}

View file

@ -36,7 +36,8 @@ public:
u32 GetEntryPoint() const override { return entryPoint; }
u32 GetFlags() const { return (u32)(header->e_flags); }
bool LoadIntoMemory(Core::System& system, bool only_in_mem1 = false) const override;
bool LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_symbol_db) const override;
bool LoadSymbols(const Core::CPUThreadGuard& guard, PPCSymbolDB& ppc_symbol_db,
const std::string& filename) const override;
// TODO: actually check for validity.
bool IsValid() const override { return true; }
bool IsWii() const override;

View file

@ -178,7 +178,7 @@ const Info<int> GFX_STEREO_DEPTH_PERCENTAGE{{System::GFX, "Stereoscopy", "Stereo
// Graphics.Hacks
const Info<bool> GFX_HACK_EFB_ACCESS_ENABLE{{System::GFX, "Hacks", "EFBAccessEnable"}, true};
const Info<bool> GFX_HACK_EFB_ACCESS_ENABLE{{System::GFX, "Hacks", "EFBAccessEnable"}, false};
const Info<bool> GFX_HACK_EFB_DEFER_INVALIDATION{
{System::GFX, "Hacks", "EFBAccessDeferInvalidation"}, false};
const Info<int> GFX_HACK_EFB_ACCESS_TILE_SIZE{{System::GFX, "Hacks", "EFBAccessTileSize"}, 64};

View file

@ -212,7 +212,7 @@ const Info<bool> MAIN_RAM_OVERRIDE_ENABLE{{System::Main, "Core", "RAMOverrideEna
const Info<u32> MAIN_MEM1_SIZE{{System::Main, "Core", "MEM1Size"}, Memory::MEM1_SIZE_RETAIL};
const Info<u32> MAIN_MEM2_SIZE{{System::Main, "Core", "MEM2Size"}, Memory::MEM2_SIZE_RETAIL};
const Info<std::string> MAIN_GFX_BACKEND{{System::Main, "Core", "GFXBackend"},
VideoBackendBase::GetDefaultBackendName()};
VideoBackendBase::GetDefaultBackendConfigName()};
const Info<HSP::HSPDeviceType> MAIN_HSP_DEVICE{{System::Main, "Core", "HSPDevice"},
HSP::HSPDeviceType::None};
const Info<u32> MAIN_ARAM_EXPANSION_SIZE{{System::Main, "Core", "ARAMExpansionSize"}, 0x400000};
@ -751,8 +751,7 @@ bool IsDefaultGCIFolderPathConfigured(ExpansionInterface::Slot slot)
bool AreCheatsEnabled()
{
return Config::Get(::Config::MAIN_ENABLE_CHEATS) &&
!AchievementManager::GetInstance().IsHardcoreModeActive();
return Config::Get(::Config::MAIN_ENABLE_CHEATS);
}
bool IsDebuggingEnabled()

View file

@ -6,19 +6,14 @@
#include <algorithm>
#include <array>
#include "Common/Config/Config.h"
#include "Core/Config/AchievementSettings.h"
#include "Core/Config/GraphicsSettings.h"
#include "Core/Config/MainSettings.h"
#include "Core/Config/UISettings.h"
#include "Core/Config/WiimoteSettings.h"
namespace ConfigLoaders
{
bool IsSettingSaveable(const Config::Location& config_location)
{
static constexpr std::array<Config::System, 3> systems_not_saveable = {
Config::System::GCPad, Config::System::WiiPad, Config::System::GCKeyboard};
static constexpr std::array systems_not_saveable = {Config::System::GCPad, Config::System::WiiPad,
Config::System::GCKeyboard};
if (std::find(begin(systems_not_saveable), end(systems_not_saveable), config_location.system) ==
end(systems_not_saveable))

View file

@ -11,6 +11,7 @@
#include "Common/Config/Config.h"
#include "Common/FileUtil.h"
#include "Core/Config/AchievementSettings.h"
#include "Core/Config/GraphicsSettings.h"
#include "Core/Config/MainSettings.h"
#include "Core/Config/SYSCONFSettings.h"
@ -33,6 +34,9 @@ public:
layer->Set(Config::MAIN_CPU_THREAD, m_settings.cpu_thread);
layer->Set(Config::MAIN_CPU_CORE, m_settings.cpu_core);
layer->Set(Config::MAIN_ENABLE_CHEATS, m_settings.enable_cheats);
#ifdef USE_RETRO_ACHIEVEMENTS
layer->Set(Config::RA_HARDCORE_ENABLED, m_settings.enable_hardcore);
#endif // USE_RETRO_ACHIEVEMENTS
layer->Set(Config::MAIN_GC_LANGUAGE, m_settings.selected_language);
layer->Set(Config::MAIN_OVERRIDE_REGION_SETTINGS, m_settings.override_region_settings);
layer->Set(Config::MAIN_DSP_HLE, m_settings.dsp_hle);

View file

@ -217,7 +217,7 @@ void SConfig::OnNewTitleLoad(const Core::CPUThreadGuard& guard)
}
CBoot::LoadMapFromFilename(guard, ppc_symbol_db);
HLE::Reload(system);
PatchEngine::Reload();
PatchEngine::Reload(system);
HiresTexture::Update();
WC24PatchEngine::Reload();
}

View file

@ -375,6 +375,7 @@ void RSOView::LoadAll(const Core::CPUThreadGuard& guard, u32 address)
void RSOView::Apply(const Core::CPUThreadGuard& guard, PPCSymbolDB* symbol_db) const
{
const std::string rso_name = GetName();
for (const RSOExport& rso_export : GetExports())
{
u32 address = GetExportAddress(rso_export);
@ -389,15 +390,17 @@ void RSOView::Apply(const Core::CPUThreadGuard& guard, PPCSymbolDB* symbol_db) c
{
// Function symbol
symbol->Rename(export_name);
symbol->object_name = rso_name;
}
else
{
// Data symbol
symbol_db->AddKnownSymbol(guard, address, 0, export_name, Common::Symbol::Type::Data);
symbol_db->AddKnownSymbol(guard, address, 0, export_name, rso_name,
Common::Symbol::Type::Data);
}
}
}
DEBUG_LOG_FMT(SYMBOLS, "RSO({}): {} symbols applied", GetName(), GetExportsCount());
DEBUG_LOG_FMT(SYMBOLS, "RSO({}): {} symbols applied", rso_name, GetExportsCount());
}
u32 RSOView::GetNextEntry() const

View file

@ -15,8 +15,10 @@
#include "Common/Config/Config.h"
#include "Common/FileUtil.h"
#include "Core/AchievementManager.h"
#include "Core/Config/MainSettings.h"
#include "Core/Core.h"
#include "Core/Host.h"
#include "Core/PowerPC/MMU.h"
#include "Core/PowerPC/PowerPC.h"
#include "ConfigManager.h"
@ -52,7 +54,7 @@ static std::vector<GeckoCode> s_active_codes;
static std::vector<GeckoCode> s_synced_codes;
static std::mutex s_active_codes_lock;
void SetActiveCodes(std::span<const GeckoCode> gcodes)
void SetActiveCodes(std::span<const GeckoCode> gcodes, const std::string& game_id)
{
std::lock_guard lk(s_active_codes_lock);
@ -60,8 +62,12 @@ void SetActiveCodes(std::span<const GeckoCode> gcodes)
if (Config::AreCheatsEnabled())
{
s_active_codes.reserve(gcodes.size());
std::copy_if(gcodes.begin(), gcodes.end(), std::back_inserter(s_active_codes),
[](const GeckoCode& code) { return code.enabled; });
[&game_id](const GeckoCode& code) {
return code.enabled &&
AchievementManager::GetInstance().CheckApprovedGeckoCode(code, game_id);
});
}
s_active_codes.shrink_to_fit();
@ -272,6 +278,7 @@ static Installation InstallCodeHandlerLocked(const Core::CPUThreadGuard& guard)
{
ppc_state.iCache.Invalidate(INSTALLER_BASE_ADDRESS + j);
}
Host_JitCacheInvalidation();
return Installation::Installed;
}

View file

@ -80,7 +80,7 @@ constexpr u32 HLE_TRAMPOLINE_ADDRESS = INSTALLER_END_ADDRESS - 4;
// preserve the emulation performance.
constexpr u32 MAGIC_GAMEID = 0xD01F1BAD;
void SetActiveCodes(std::span<const GeckoCode> gcodes);
void SetActiveCodes(std::span<const GeckoCode> gcodes, const std::string& game_id);
void SetSyncedCodesAsActive();
void UpdateSyncedCodes(std::span<const GeckoCode> gcodes);
std::vector<GeckoCode> SetAndReturnActiveCodes(std::span<const GeckoCode> gcodes);

View file

@ -18,6 +18,7 @@
#include "Core/HLE/HLE_Misc.h"
#include "Core/HLE/HLE_OS.h"
#include "Core/HW/Memmap.h"
#include "Core/Host.h"
#include "Core/IOS/ES/ES.h"
#include "Core/PowerPC/PPCSymbolDB.h"
#include "Core/PowerPC/PowerPC.h"
@ -187,6 +188,8 @@ void PatchFunctions(Core::System& system)
INFO_LOG_FMT(OSHLE, "Patching {} {:08x}", os_patches[i].name, symbol->address);
}
}
Host_JitCacheInvalidation();
}
void Clear()
@ -305,6 +308,7 @@ u32 UnPatch(Core::System& system, std::string_view patch_name)
++i;
}
}
Host_JitCacheInvalidation();
return addr;
}
@ -317,6 +321,7 @@ u32 UnPatch(Core::System& system, std::string_view patch_name)
s_hooked_addresses.erase(addr);
ppc_state.iCache.Invalidate(addr);
}
Host_JitCacheInvalidation();
return symbol->address;
}
@ -338,6 +343,7 @@ u32 UnpatchRange(Core::System& system, u32 start_addr, u32 end_addr)
i = s_hooked_addresses.erase(i);
count += 1;
}
Host_JitCacheInvalidation();
return count;
}

View file

@ -418,7 +418,7 @@ void AXWiiUCode::WritePB(Memory::MemoryManager& memory, u32 addr, const AXPBWii&
case 0xadbc06bd:
memory.CopyToEmuSwapped<u16>(addr, (const u16*)src, updates_begin);
memory.CopyToEmuSwapped<u16>(addr + updates_begin, (const u16*)(src + updates_end),
sizeof(PBUpdatesWii));
gap_begin - updates_end);
memory.CopyToEmuSwapped<u16>(addr + gap_begin, (const u16*)(src + gap_end),
sizeof(pb) - gap_end);
break;

View file

@ -834,7 +834,7 @@ BbaTcpSocket::ConnectingState BbaTcpSocket::Connected(StackRef* ref)
fd_set read_fds;
fd_set write_fds;
fd_set except_fds;
struct timeval t = {0, 0};
timeval t = {0, 0};
FD_ZERO(&read_fds);
FD_ZERO(&write_fds);
FD_ZERO(&except_fds);
@ -965,7 +965,7 @@ sf::Socket::Status BbaUdpSocket::Bind(u16 port, u32 net_ip)
// Subscribe to the SSDP multicast group
// NB: Other groups aren't supported because of HLE
struct ip_mreq mreq;
ip_mreq mreq;
mreq.imr_multiaddr.s_addr = std::bit_cast<u32>(Common::IP_ADDR_SSDP);
mreq.imr_interface.s_addr = net_ip;
if (setsockopt(getHandle(), IPPROTO_IP, IP_ADD_MEMBERSHIP, reinterpret_cast<const char*>(&mreq),

View file

@ -99,6 +99,10 @@ void ProcessorInterfaceManager::RegisterMMIO(MMIO::Mapping* mmio, u32 base)
{
system.GetGPFifo().ResetGatherPipe();
// Assume that all bytes that made it into the GPU fifo did in fact execute
// before this MMIO write takes effect.
system.GetFifo().SyncGPUForRegisterAccess();
// Call Fifo::ResetVideoBuffer() from the video thread. Since that function
// resets various pointers used by the video thread, we can't call it directly
// from the CPU thread, so queue a task to do it instead. In single-core mode,

View file

@ -8,21 +8,12 @@
#include "AudioCommon/AudioCommon.h"
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"
#include "Common/MathUtil.h"
#include "Core/ConfigManager.h"
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"
#include "Core/System.h"
#include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h"
#include "InputCommon/ControllerEmu/Setting/NumericSetting.h"
//#define WIIMOTE_SPEAKER_DUMP
#ifdef WIIMOTE_SPEAKER_DUMP
#include <cstdlib>
#include <fstream>
#include "AudioCommon/WaveFile.h"
#include "Common/FileUtil.h"
#endif
namespace WiimoteEmu
{
// Yamaha ADPCM decoder code based on The ffmpeg Project (Copyright (s) 2001-2003)
@ -60,17 +51,6 @@ static s16 adpcm_yamaha_expand_nibble(ADPCMState& s, u8 nibble)
return s.predictor;
}
#ifdef WIIMOTE_SPEAKER_DUMP
std::ofstream ofile;
WaveFileWriter wav;
void stopdamnwav()
{
wav.Stop();
ofile.close();
}
#endif
void SpeakerLogic::SpeakerData(const u8* data, int length, float speaker_pan)
{
// TODO: should we still process samples for the decoder state?
@ -151,28 +131,6 @@ void SpeakerLogic::SpeakerData(const u8* data, int length, float speaker_pan)
const unsigned int sample_rate = sample_rate_dividend / reg_data.sample_rate;
sound_stream->GetMixer()->PushWiimoteSpeakerSamples(
samples.get(), sample_length, Mixer::FIXED_SAMPLE_RATE_DIVIDEND / (sample_rate * 2));
#ifdef WIIMOTE_SPEAKER_DUMP
static int num = 0;
if (num == 0)
{
File::Delete("rmtdump.wav");
File::Delete("rmtdump.bin");
atexit(stopdamnwav);
File::OpenFStream(ofile, "rmtdump.bin", ofile.binary | ofile.out);
wav.Start("rmtdump.wav", 6000);
}
wav.AddMonoSamples(samples.get(), length * 2);
if (ofile.good())
{
for (int i = 0; i < length; i++)
{
ofile << data[i];
}
}
num++;
#endif
}
void SpeakerLogic::Reset()

Some files were not shown because too many files have changed in this diff Show more