| Age | Commit message (Collapse) | Author |
|
No interrupt is generated in this case. The homebrew liband uCode writes zero fairly frequently, so logging it results in spam.
|
|
Rename FPS_REFRESH_INTERVAL in VideoCommon/FPSCounter
|
|
|
|
|
|
Improve libusb error logging
|
|
ResourcePack: Avoid crashes on invalid packs during Init().
|
|
updater: use new platform id for win-arm64
|
|
|
|
|
|
|
|
This improves timing, but does not fix Datel titles.
|
|
|
|
The # option means that 0x is prepended already, so the old code resulted in 0x0xDEADBEEF instead of the intended 0xDEADBEEF. WriteMailboxLow was already correct.
|
|
Before, there were two distinct fields called cr and r.cr, which is needlessly confusing (see the comment in DSPCore.h).
|
|
|
|
|
|
InputCommon: SDL 2.0.22 init crash workaround
|
|
Qt/GameCubePane: Fix swapping memory cards mid-emulation.
|
|
|
|
There wasn't anything stopping compilers from doing it in release builds either, but most optimizations would make the padding zero
|
|
See https://github.com/libsdl-org/SDL/pull/5598
|
|
Fix creation of rvz with > 2mb chunk size
|
|
Improve incremental build time for Xcode projects
|
|
|
|
This is an assembled version of HermesText.cpp, so the same license applies to it.
|
|
I don't know what happened here, unfortunately. The version of dsp_mixer.s added to libogc on Nov 14, 2008 in https://github.com/devkitPro/libogc/commit/c76d8b851fafc11b0a5debc0b40842929d5a5825 uses andcf and jlz here, and the version we have matches the one from Feb 5, 2009 in https://github.com/devkitPro/libogc/commit/ae5c3a5fb5aa4ccf1e1374b6e4f6be1aac118693 exactly (prior to the fixes in my previous commit). I can't see any reason why wait_for_dsp_mail would be changed like this.
ANDCF and ANDF were previously swapped and JNE/JEQ/JZR/JNZ became JNZ/JZ/JLNZ/JLZ on Apr 3, 2009 in 7c4e6542533f7cef929ce86117b156c714820618, corresponding to a change Hermes made on Nov 10, 2008 in https://github.com/devkitPro/gamecube-tools/commit/2cea6d99ad518c963e24c3e28834473ff5312e69. But these predate the test being added.
The only other information I can find is that ASNDLIB 1.0 released on November 11, 2008, at https://web.archive.org/web/20120326145022/http://www.entuwii.net/foro/viewtopic.php?f=6&t=87 (but there aren't any surviving links from there).
|
|
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 e7e4ef4481d1c5dcce6463414d815843ae15b8e2. Then, set16 and set40 were swapped on April 22, 2009 89178f411cf1e8ef61b005197545618e53a0d4e8, 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 1654c582ab9a6323a31802c4b241c0cffc9d3bca 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 https://github.com/devkitPro/gamecube-tools/commit/8a65c85c9b4748ed3dab3c0c85aeb0df95d58cfb and updated their version of the asnd ucode (which is this ucode) on June 11, 2011 in https://github.com/devkitpro/libogc/commit/b1b8ecab3af3745c8df0b401abd512bdf5fcc011 (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 https://github.com/devkitPro/libogc/compare/bfb705fe1607a3031d18b65d603975b68a1cffd4~...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
|
|
We already have the data for this, so this seems like a useful thing to do. However, neither of the new tests currently pass...
|
|
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: https://github.com/devkitPro/gamecube-tools/commit/8a65c85c9b4748ed3dab3c0c85aeb0df95d58cfb
This fixes the HermesText and HermesBinary tests (HermesText already wrote `lsr $ACC0, #-5`, so this is consistent with what it used before.)
|
|
expected result
This reveals that both HermesText and HermesBinary fail. HermesBinary would have failed on master, too, if this had been implemented.
|
|
It's included in the section before, so it's helpful to supply here too.
|
|
immediates
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
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).
|
|
These were moved into UnitTests in #5449.
|
|
|
|
Spirv-cross's MSL codegen makes the amazing choice of compiling calls to inout functions as `State temp = s; call_function(temp); s = temp`. Not all Metal backends handle this mess well. In particular, it causes register spills on Intel, losing about 5% in performance.
|
|
|
|
Raw Memory Card Path handling unification and consistency fixes.
|
|
Have audio dumps apply volume
|
|
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.
|
|
lint: use git.exe if the source resides on v9fs
|
|
All stores clobber X0, so that stores clobber X0 when emitting_routine
is true is nothing special.
|