Commit Graph

31636 Commits

Author SHA1 Message Date
Pokechu22
36769017c0 UnitTests: Update DSP test text for old renames
This change makes assembling DSPTestText match DSPTestBinary, though HermesText doesn't yet match HermesBinary.

The test data was originally added on April 18, 2009 in e7e4ef4481.  Then, set16 and set40 were swapped on April 22, 2009 89178f411c, which updated the DSPSpy version of dsp_code, but not the version in DSPTool used for testing.  So, when the test was made, the assembled data matched the text, but a few days after it no longer did.

Similarly, on Jul 7, 2009 in 1654c582ab the conditional instructions were adjusted, and 0x1706 was changed from JRL to JRNC and 0x0297 was changed from JGE to JC.

For what it's worth, devkitPro made the same changes on May 31, 2010 in 8a65c85c9b and updated their version of the asnd ucode (which is this ucode) on June 11, 2011 in b1b8ecab3a (though this update also includes other feature changes). Note that at the time, they didn't reassemble the ucode unless they made changes to it; the assembled was stored in the repo until bfb705fe16~...d20f9bdcfb43260c6c759f4fb98d724931443f93.

This fixes the following failures with Hermes:

!! 0015 : 8e00 vs 8f00 - set16         vs  set40
!! 016f : 8e00 vs 8f00 - set16         vs  set40

and with Hermes:

!! 0014 : 8e00 vs 8f00 - set16         vs  set40
!! 0063 : 8e00 vs 8f00 - set16         vs  set40
!! 019b : 1706 vs 1701 - jrnc        $AR0  vs  jrl         $AR0
!! 01bf : 0297 vs 0290 - jc          0x01dc  vs  jge         0x01dc
!! 01d2 : 0297 vs 0290 - jc          0x01dc  vs  jge         0x01dc

Hermes has the remaining failures:

!! 027b : 03c0 vs 03a0 - andcf       $AC1.M, #0x8000  vs  andf        $AC1.M, #0x8000
!! 027d : 029d vs 0294 - jlz         0x027a  vs  jnz         0x027a
2022-06-14 12:22:06 -07:00
Pokechu22
d52528a6f0 UnitTests: Add tests for assembling DSP code to expected binary
We already have the data for this, so this seems like a useful thing to do.  However, neither of the new tests currently pass...
2022-06-14 12:22:06 -07:00
Pokechu22
41939eeaf9 DSPDisassembler: Fix disassembly of LSR and ASR
Before, both 1441 and 147f would disassemble as `lsr $acc0, #1`, when the second should be `lsr $acc0, #-1`, and both 14c1 and 14ff would be `asr $acc0, #1` when the second should be `asr $acc0, #-1`. I'm not entirely sure whether the minus signs actually make sense here, but this change is consistent with the assembler so that's an improvement at least.

devkitPro previously changed the formatting to not require negative signs for lsr and asr; this is probably something we should do in the future: 8a65c85c9b

This fixes the HermesText and HermesBinary tests (HermesText already wrote `lsr $ACC0, #-5`, so this is consistent with what it used before.)
2022-06-14 12:22:06 -07:00
Pokechu22
6a2ec825a2 UnitTests: Fail DSPAssemblyTest if the assembled code doesn't match the expected result
This reveals that both HermesText and HermesBinary fail.  HermesBinary would have failed on master, too, if this had been implemented.
2022-06-14 12:22:06 -07:00
Pokechu22
2d774010c3 DSPCodeUtil: Include the PC and hex in the "Extra code words" section
It's included in the section before, so it's helpful to supply here too.
2022-06-14 12:22:06 -07:00
Pokechu22
087d89225c DSPCodeUtil: Give better output when comparing instructions with large immediates 2022-06-14 12:22:06 -07:00
Pokechu22
cad9801ded DSPDisassembler: Fix out-of-bounds read when the last word is an instruction with a large immediate
For instance, ending with 0x009e (which you can do with CW 0x009e) indicates a LRI $ac0.m instruction, but there is no immediate value to load, so before whatever garbage in memory existed after the end of the file was used.

The bounds-checking also previously assumed that IRAM or IROM was being used, both of which were exactly 0x1000 long.
2022-06-14 12:22:06 -07:00
Pokechu22
dc353ed84d DSPTool: Exit with status 1 if binary comparison fails 2022-06-14 12:22:06 -07:00
Pokechu22
693a29f8ce DSPCodeUtil: Use fmt::print instead of logging in DSP::Compare 2022-06-14 12:22:05 -07:00
Pokechu22
d8803a1298 UnitTests: Use fmt::print in DSPAssemblyTest 2022-06-14 12:22:05 -07:00
Pokechu22
8fac249581 UnitTests: Use fmt::print in PageFaultTest 2022-06-14 12:22:05 -07:00
Pokechu22
dd66dac5c1 UnitTests: Fix typo in DSPAssemblyTest 2022-06-14 12:22:05 -07:00
Pokechu22
3cb0976367 UnitTests: Use hermes.s as part of an actual test
Before, the file just existed as the source code for HermesBinary.cpp, but we can test that things assemble correctly too (compare DSPTestBinary.cpp and DSPTestText.cpp).

A bit of jank is needed due to MSVC limitations (see https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2026?view=msvc-170).
2022-06-14 12:22:05 -07:00
Pokechu22
2193c8964e DSPTool: Remove moved files from VS project file
These were moved into UnitTests in #5449.
2022-06-14 12:22:05 -07:00
JMC47
9315ac7071
Merge pull request #10587 from AdmiralCurtiss/memcard-path-unify
Raw Memory Card Path handling unification and consistency fixes.
2022-06-13 20:18:36 -04:00
JMC47
f96e91119a
Merge pull request #10735 from CasualPokePlayer/audio_dump_volume_fix
Have audio dumps apply volume
2022-06-13 17:09:58 -04:00
Tillmann Karras
59dfc43949 Common: replace std::aligned_storage_t with alignas
C++23 deprecates std::aligned_storage_t while alignas works since C++11.

This fixes issue 12925.
2022-06-13 00:06:19 +01:00
OatmealDome
3e5f1a4f99 MemTools: Always provide a valid pointer in send_msg for mach_msg_overwrite
This cannot be nullptr in macOS Ventura and iOS 16.
2022-06-12 00:19:09 -04:00
CasualPokePlayer
ad892176d0 have audio dumps apply volume (fixes cases of audio dumps being "too loud" and in game audio controls having no effect) 2022-06-10 21:27:10 -07:00
Mai M
099aaf0037
Merge pull request #10724 from JosJuice/android-manifest-namespace
AndroidManifest.xml: Re-add package="org.dolphinemu.dolphinemu"
2022-06-06 23:59:22 -04:00
JMC47
daf8e3ddde
Merge pull request #10462 from OatmealDome/steam-runtime
DolphinQt: Add support for a Steam Runtime build
2022-06-06 20:18:06 -04:00
JosJuice
dd0485389e AndroidManifest.xml: Re-add package="org.dolphinemu.dolphinemu"
Without this, debug builds of Dolphin fail to launch. The OS tries
to locate org.dolphinemu.dolphinemu.debug.DolphinApplication
but fails to find it because its actual name is
org.dolphinemu.dolphinemu.DolphinApplication.

Partially reverts 6b74907f9d.
2022-06-06 21:57:21 +02:00
Tillmann Karras
79a7bf02eb
CMake: rename minizip to minizip-ng
minizip-ng is the new name used by the upstream project as well as all
distros other than Fedora (but it looks like it will be renamed there).
2022-06-06 14:21:43 +02:00
Admiral H. Curtiss
4fd18cf207
DolphinQt: Unify handling of raw memory card path. 2022-06-05 21:48:13 +02:00
Admiral H. Curtiss
deb9964333
Core: Unify handling of raw memory card path. 2022-06-05 21:43:48 +02:00
Admiral H. Curtiss
b1d1f2aa06
Common/StringUtil: Add convenience function for converting paths to use forward slashes on Windows. 2022-06-05 21:24:45 +02:00
Admiral H. Curtiss
2081e2f2a1
Config: Move ToGameCubeRegion(), GetDirectoryForRegion(), and GetBootROMPath() to new config system namespace. 2022-06-05 21:24:45 +02:00
JMC47
664663e8de
Merge pull request #10604 from Pokechu22/gcadapter-refactor
Refactor GCAdapter, part 1
2022-06-04 16:30:25 -04:00
Admiral H. Curtiss
96f9d1000d
Merge pull request #10721 from Dentomologist/fix_warnings_on_generic_builder
Fix warnings on generic builder
2022-06-04 21:51:58 +02:00
Dentomologist
92af703f29 DSPAssembler: Fix -Wswitch warning 2022-06-04 12:08:09 -07:00
Tilka
d7cda67462
Merge pull request #10716 from Pokechu22/dsp-lle-loop-saturation
DSP LLE: Apply saturation to LOOP and BLOOP with $ac0.m and $ac1.m
2022-06-04 15:30:06 +01:00
Dentomologist
2999cca41b UnitTests: Fix -Wrange-loop-construct warnings
Don't use reference variable bound to a temporary value
2022-06-03 22:28:17 -07:00
Admiral H. Curtiss
9fb17b5a48
Merge pull request #10718 from shuffle2/hotkeys
qt: unregister Settings' DevicesChanged callback during shutdown
2022-06-03 13:48:28 +02:00
Shawn Hoffman
b16711f2af qt: fix wiipane usb list layout 2022-06-02 23:58:13 -07:00
Shawn Hoffman
27dd2c4aa4 qt: unregister Settings' DevicesChanged callback during shutdown
fixes a crash on close
2022-06-02 23:32:21 -07:00
Pokechu22
6823b4d7a0 GCAdapter: Use LibusbUtils::ErrorWrap in log messages 2022-06-02 19:39:36 -07:00
Pokechu22
457fcbaf5e LibusbUtils: Create ErrorWrap 2022-06-02 19:39:36 -07:00
Pokechu22
0d8772ccbe GCAdapter: Make local variables const where possible 2022-06-02 19:39:36 -07:00
Pokechu22
cd9edeacda GCAdapter: Merge Read logic 2022-06-02 19:39:36 -07:00
Pokechu22
9ec65baf46 GCAdapter: Have the read thread control the write thread
This was done for Android in 6cc40b1235.
2022-06-02 19:39:36 -07:00
Pokechu22
0fa92694d1 GCAdapter: Exit early if the adapter fails to open on Android
This is only so that indentation is consistent with the non-android code.
2022-06-02 19:39:36 -07:00
Pokechu22
749a4ad1ef GCAdapter: Remove check on write size on android
It was removed for non-android in 56239d1ae1, and android already uses a separate thread, so presumably this isn't needed anymore.
2022-06-02 19:39:36 -07:00
Pokechu22
27947046af GCAdapter: Harmonize read/write thread variable names 2022-06-02 19:39:36 -07:00
Pokechu22
279888da8c GCAdapter: Remove unused includes 2022-06-02 19:39:36 -07:00
Pokechu22
3ae775e574 GCAdapter: Use determinism hack on Android
This hack was added in 8f0cbefbe5, and the part of it in SI_DeviceGCAdapter is present on Android already, so I don't see any reason why this part doesn't apply to Android.
2022-06-02 19:39:36 -07:00
Pokechu22
55922e6d17 GCAdapter: Convert ControllerType to an enum class 2022-06-02 19:39:36 -07:00
Pokechu22
682d86f4da GCAdapter: Fix rumble enabled config on Android
I believe the setting already existed in the UI; it just wasn't implemented in GCAdapter_Android.cpp.
2022-06-02 19:39:36 -07:00
Pokechu22
36d4ee0939 GCAdapter: Use std::array for controller read and write payloads 2022-06-02 19:39:36 -07:00
Pokechu22
dd6592698e GCAdapter: Merge GCAdapter.cpp and GCAdapter_Android.cpp
This is mostly a brainless merge, #ifdef-ing anything that doesn't match between the two while preserving common logic.  I didn't rename any variables (although similar ones do exist), but I did change one log that was ERROR on android and NOTICE elsewhere to just always be NOTICE.  Further merging will follow.
2022-06-02 19:39:36 -07:00
Mai M
f7f47d3cd0
Merge pull request #10692 from Pokechu22/dsp-manual-set40-and-write-backlog
docs/DSP: Add sections on 16-bit and 40-bit modes and on main and extended opcode writing to the same register
2022-06-02 20:26:31 -04:00