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