Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
af04f22
Fix emulation accuracy: resolution, 68K instructions, RAM init, logging
JoeMatt Apr 23, 2026
2962266
Fix event system: zero eventTime on init, check all slots for next event
JoeMatt Apr 23, 2026
99c7317
Address PR review: DIVL exception PC, strict-aliasing, TOM underflow,…
JoeMatt Apr 24, 2026
b9e49a7
Replace Doom resolution hack with proper pwidth pixel replication
JoeMatt Apr 24, 2026
a34fde4
Update yarc regression baseline for pwidth rendering changes
JoeMatt Apr 24, 2026
adf6b80
Fix DSP execution: run in main loop, dispatch IRQs on INT_ENA enable
JoeMatt Apr 24, 2026
8b6b8a7
Fix DSP interrupt dispatch ordering, revert DSP in main loop
JoeMatt Apr 24, 2026
e49e3f6
dsp tests and jaguar.c main rom boot patches
JoeMatt Apr 24, 2026
fe0557a
Fix HLE BIOS: prevent video blackout, improve DSP accuracy, add named…
JoeMatt Apr 26, 2026
3e0a4e7
Fix BIOS regression, CI failures, and PR review feedback
JoeMatt Apr 26, 2026
f104fc2
Fix CI failures: GPU symbol exports, PACK test, regression baselines,…
JoeMatt Apr 26, 2026
6729162
Fix DSP FLAGS write dispatch bug, add audio diagnostics
JoeMatt Apr 26, 2026
fa33737
auido tests
JoeMatt Apr 26, 2026
bf0bf6b
Fix CI failures, address PR review, add C89 lint tooling
JoeMatt Apr 27, 2026
3a99830
Update jagniccc baseline, fix PR review issues
JoeMatt Apr 27, 2026
eab12be
Performance: 2x speedup via DSP/GPU/memory hot path optimizations
JoeMatt Apr 27, 2026
1bf83ef
Fix SRCSHADE color corruption, refactor audio to eliminate per-sample…
JoeMatt Apr 27, 2026
a5c368d
Fix ADDC carry overflow and IMASK preservation in GPU/DSP
JoeMatt Apr 27, 2026
255598f
Fix accurate blitter daddmode NAND tree bug, daddbsel bit 3
JoeMatt Apr 27, 2026
11213c1
Optimize accurate blitter inner loop: eliminate dead code, move DCONTROL
JoeMatt Apr 27, 2026
15f2b69
Fix ADDARRAY cinsel carry input gate to match hardware
JoeMatt Apr 27, 2026
098e7f7
Fix M2 blitter BKGWREN+BCOMPEN phrase-mode bug (AVP red noise)
JoeMatt Apr 28, 2026
bfa51d6
Interleave JERRY events with main execution loop to fix audio dropouts
JoeMatt Apr 28, 2026
63bc6b6
ignore tools
JoeMatt Apr 28, 2026
7be74a5
Fix OP GPU object handling and clean build warnings
JoeMatt Apr 28, 2026
47408b0
Add debug build timestamp reporting
JoeMatt Apr 28, 2026
551473d
Advance TOM horizontal counter reads
JoeMatt Apr 28, 2026
dd66981
Organize source files by subsystem
JoeMatt Apr 28, 2026
4f0c54a
Split Blitter MMIO handling
JoeMatt Apr 28, 2026
f84b043
Split Blitter comparison diagnostics
JoeMatt Apr 28, 2026
28787dd
Document source subsystem layout
JoeMatt Apr 28, 2026
c45f594
Clean up HLE BIOS and stale MMU paths
JoeMatt Apr 29, 2026
15c8b51
Remove unused BIOS selector state
JoeMatt Apr 29, 2026
cca761f
Run HLE BIOS checks from make test
JoeMatt Apr 29, 2026
b454d9a
Deduplicate retropad option handling
JoeMatt Apr 29, 2026
b09f264
Expand HLE BIOS state coverage
JoeMatt Apr 29, 2026
8f7efda
Fix timing rollover and due event handling
JoeMatt Apr 29, 2026
01c6c4b
Fix JERRY interrupt control decode
JoeMatt Apr 29, 2026
fed33ce
Defer geometry updates after frame submit
JoeMatt Apr 29, 2026
722dccd
Clean stale loader and blitter comments
JoeMatt Apr 29, 2026
7276720
Clean stale resolved timing comments
JoeMatt Apr 29, 2026
9f2d7dc
Clean stale OP and blitter comments
JoeMatt Apr 29, 2026
361c071
Remove dead Object Processor running flag
JoeMatt Apr 29, 2026
4931a25
Fix OP scaled clipping and SSI status readback
JoeMatt Apr 29, 2026
7bdb574
Fix homebrew loading and OP bitmap edge cases
JoeMatt Apr 29, 2026
616a6bd
Fix OP scaled bitmap magnification
JoeMatt Apr 29, 2026
b175dea
Cover OP scaled bitmap ratio stepping
JoeMatt Apr 29, 2026
22431af
Latch TOM IRQ pending and clip OP scaled bitmaps
JoeMatt Apr 29, 2026
915d32a
Pin TOM/JERRY/GPU/DSP IRQ and timing semantics with public tests
JoeMatt Apr 29, 2026
ee8c582
Pin TOM CLUT mirror, JERRY PIT byte-drop, wavetable ROM protection
JoeMatt Apr 29, 2026
96f9bcf
Bump version to v2.2.0, refresh README and WHATSNEW
JoeMatt Apr 29, 2026
71cc308
Use GitHub handle in fork-maintenance credits
JoeMatt Apr 29, 2026
6128add
Spotlight HLE maturity and game-specific fixes in changelog
JoeMatt Apr 29, 2026
48123cc
test: skip DSP IRQ-dispatch tests on non-Apple pending Linux debug
JoeMatt Apr 29, 2026
b37e626
test: refresh regression baselines for jagniccc and yarc
JoeMatt Apr 29, 2026
8b859aa
docs: trim CD-specific bullets from v2.2.0 release notes
JoeMatt Apr 29, 2026
54ca486
Fix accurate blitter alpha/transparency in phrase mode with comparators
JoeMatt Apr 29, 2026
1b7130d
docs: move Battle Sphere blitter entry to Recently Addressed (54ca486…
JoeMatt Apr 29, 2026
c7936aa
docs: add Battle Sphere reticle fix to v2.2.0 changelog
JoeMatt Apr 29, 2026
a20dfd6
Revert "docs: add Battle Sphere reticle fix to v2.2.0 changelog"
JoeMatt Apr 29, 2026
cbe88f7
Revert "docs: move Battle Sphere blitter entry to Recently Addressed …
JoeMatt Apr 29, 2026
7f84d7c
Revert "Fix accurate blitter alpha/transparency in phrase mode with c…
JoeMatt Apr 29, 2026
6d34365
docs: rewrite v2.2.0 changelog as user-facing + add full game-compat …
JoeMatt Apr 29, 2026
b09d214
Fix CI: export Jaguar* symbols, gate Windows test, pad rcheevos ROM
JoeMatt Apr 30, 2026
81f1dd9
Address pre-merge review: TOM width clamp, HLE SSP, RAM aliasing
JoeMatt Apr 30, 2026
fbe0418
Add boot-time audio clipping detector
JoeMatt Apr 30, 2026
e7ce343
Document audio clipping investigation: HLE-init delta
JoeMatt Apr 30, 2026
f6e3235
Document DSP-state diff for Skyhammer/IS2 audio clipping
JoeMatt Apr 30, 2026
705d4d8
Apply libretro geometry change pre-render to fix iOS Wolf3D black screen
JoeMatt Apr 30, 2026
3770975
HLE init: match real-BIOS post-engine SCLK/SMODE; cluster findings
JoeMatt Apr 30, 2026
0c3d3f8
Clarify Skyhammer/Ruiner Pinball investigation findings
JoeMatt Apr 30, 2026
cf52227
Wolf3D HLE audio: investigated, not fixed; document root cause
JoeMatt Apr 30, 2026
c2703f8
Correct Raiden HLE diagnosis: poll-wait, not trace double-fault
JoeMatt Apr 30, 2026
3fe9ddd
Document Wolf3D audio dual-mode failure; finalize known-issues for v2…
JoeMatt Apr 30, 2026
720f6ea
cleanup include
JoeMatt Apr 30, 2026
ddb9a01
Address pre-merge review items (22 cleanups + clarifications)
JoeMatt May 1, 2026
46b5438
release.yml: debug symbols + SHA256SUMS + WHATSNEW-driven body
JoeMatt May 1, 2026
2b1ffbb
remove claude link
JoeMatt May 1, 2026
95d31b5
readme tweek
JoeMatt May 1, 2026
5a50de9
Gate link.T to retro_* only; move test exports to link-test.T
JoeMatt May 1, 2026
c138e3b
docs: mark link.T export gating done; carry macOS dylib slim to v2.3
JoeMatt May 1, 2026
6491ef1
Add v2.2.0 RetroArch core .info + release-process doc
JoeMatt May 1, 2026
0f2ff7f
extensions: re-add abs|cof|prg (loader supports them via header sniff…
JoeMatt May 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 52 additions & 40 deletions .github/workflows/c-cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ jobs:

# Host/native toolchains only — skips cross-compile rows (e.g. aarch64 on x86 runner).
- name: Run cheat engine unit tests
if: ${{ !matrix.config.emscripten && !matrix.config.android && !matrix.config.cross }}
if: ${{ !matrix.config.emscripten && !matrix.config.android && !matrix.config.cross && runner.os != 'Windows' }}
run: make test CC="${{ matrix.config.cc }}"

- name: Run SIMD blitter tests
Expand All @@ -180,23 +180,23 @@ jobs:
ARCH=$(uname -m)
CC="${{ matrix.config.cc }}"
case "$ARCH" in
x86_64|i686|i386) SIMD_SRC=src/blitter_simd_sse2.c; EXTRA="-msse2" ;;
aarch64|arm64) SIMD_SRC=src/blitter_simd_neon.c; EXTRA="" ;;
*) SIMD_SRC=src/blitter_simd_scalar.c; EXTRA="" ;;
x86_64|i686|i386) SIMD_SRC=src/tom/blitter_simd_sse2.c; EXTRA="-msse2" ;;
aarch64|arm64) SIMD_SRC=src/tom/blitter_simd_neon.c; EXTRA="" ;;
*) SIMD_SRC=src/tom/blitter_simd_scalar.c; EXTRA="" ;;
esac

echo "==> Testing ${SIMD_SRC}..."
$CC -O2 -Wall ${EXTRA} -I src \
$CC -O2 -Wall ${EXTRA} -I src -I src/core -I src/tom \
-o test_blitter_simd test/test_blitter_simd.c ${SIMD_SRC}
./test_blitter_simd

echo "==> Cross-checking against scalar..."
$CC -O2 -Wall -I src \
-o test_blitter_scalar test/test_blitter_simd.c src/blitter_simd_scalar.c
$CC -O2 -Wall -I src -I src/core -I src/tom \
-o test_blitter_scalar test/test_blitter_simd.c src/tom/blitter_simd_scalar.c
./test_blitter_scalar

echo "==> DSP 40-bit MAC accumulator regression (dsp_acc40.h)..."
$CC -O2 -Wall -I src -o test_dsp_mac40 test/test_dsp_mac40.c
$CC -O2 -Wall -I src -I src/jerry -o test_dsp_mac40 test/test_dsp_mac40.c
./test_dsp_mac40

- name: Run memory map test
Expand All @@ -211,6 +211,35 @@ jobs:
$CC -O2 -Wall -o test/tools/test_memory_map test/tools/test_memory_map.c $LDFLAGS
./test/tools/test_memory_map ./${{ matrix.config.artifact }}

- name: Run DSP instruction set tests
if: ${{ !matrix.config.emscripten && !matrix.config.android && !matrix.config.cross && runner.os != 'Windows' }}
run: |
CC="${{ matrix.config.cc }}"
if [ "$(uname)" = "Linux" ]; then LDFLAGS="-ldl"; else LDFLAGS=""; fi
$CC -O2 -Wall -o test/test_dsp_ops test/test_dsp_ops.c $LDFLAGS
$CC -O2 -Wall -o test/test_dsp_unit test/test_dsp_unit.c $LDFLAGS
./test/test_dsp_ops
./test/test_dsp_unit

- name: Run GPU instruction set tests
if: ${{ !matrix.config.emscripten && !matrix.config.android && !matrix.config.cross && runner.os != 'Windows' }}
run: |
CC="${{ matrix.config.cc }}"
if [ "$(uname)" = "Linux" ]; then LDFLAGS="-ldl"; else LDFLAGS=""; fi
$CC -O2 -Wall -o test/test_gpu_ops test/test_gpu_ops.c $LDFLAGS
./test/test_gpu_ops

$CC -O2 -Wall -o test/test_op_gpu_object test/test_op_gpu_object.c $LDFLAGS
./test/test_op_gpu_object ./${{ matrix.config.artifact }}

- name: Run 68K instruction set tests
if: ${{ !matrix.config.emscripten && !matrix.config.android && !matrix.config.cross && runner.os != 'Windows' }}
run: |
CC="${{ matrix.config.cc }}"
if [ "$(uname)" = "Linux" ]; then LDFLAGS="-ldl"; else LDFLAGS=""; fi
$CC -O2 -Wall -o test/test_m68k_ops test/test_m68k_ops.c $LDFLAGS
./test/test_m68k_ops

- name: Cache pinned rcheevos E2E build
if: ${{ !matrix.config.emscripten && !matrix.config.android && !matrix.config.cross && runner.os != 'Windows' }}
uses: actions/cache@v4
Expand Down Expand Up @@ -251,21 +280,21 @@ jobs:
shell: cmd
run: |
cl.exe /c /W3 /O2 /DNDEBUG /D_CRT_SECURE_NO_DEPRECATE ^
/I. /Isrc /Isrc\m68000 /Ilibretro-common\include ^
/I. /Isrc /Isrc\core /Isrc\tom /Isrc\jerry /Isrc\cd /Isrc\bios /Isrc\m68000 /Ilibretro-common\include ^
/D__LIBRETRO__ /DINLINE="_inline" ^
libretro.c ^
src\blitter.c src\dac.c src\dsp.c src\file.c ^
src\gpu.c src\jaguar.c src\jerry.c src\tom.c src\op.c ^
src\cdintf.c src\cdrom.c src\crc32.c src\event.c ^
src\eeprom.c src\filedb.c src\joystick.c src\settings.c ^
src\memtrack.c src\mmu.c src\vjag_memory.c src\cheat.c ^
src\universalhdr.c src\wavetable.c ^
src\jagbios.c src\jagbios2.c ^
src\jagcdbios.c src\jagdevcdbios.c ^
src\jagstub1bios.c src\jagstub2bios.c ^
src\tom\blitter.c src\tom\blitter_compare.c src\tom\blitter_mmio.c src\jerry\dac.c src\jerry\dsp.c src\core\file.c ^
src\tom\gpu.c src\core\jaguar.c src\jerry\jerry.c src\tom\tom.c src\tom\op.c ^
src\cd\cdintf.c src\cd\cdrom.c src\core\crc32.c src\core\event.c ^
src\jerry\eeprom.c src\core\filedb.c src\jerry\joystick.c src\core\settings.c ^
src\core\memtrack.c src\core\vjag_memory.c src\core\cheat.c ^
src\core\universalhdr.c src\jerry\wavetable.c ^
src\bios\jagbios.c ^
src\bios\jagcdbios.c src\bios\jagdevcdbios.c ^
src\bios\jagstub1bios.c src\bios\jagstub2bios.c ^
src\m68000\m68kinterface.c ^
src\blitter_simd_scalar.c ^
src\blitter_simd_sse2.c
src\tom\blitter_simd_scalar.c ^
src\tom\blitter_simd_sse2.c
echo MSVC compilation check passed

vita-build:
Expand Down Expand Up @@ -315,32 +344,15 @@ jobs:
- name: Check for declaration-after-statement
run: |
echo "==> Checking C89 compliance (catches MSVC C89 errors)..."
FAILED=0
for f in libretro.c src/*.c src/m68000/m68kinterface.c; do
case "$f" in
src/m68000/cpu*.c|src/m68000/read*.c|src/jag*bios*.c|src/jagstub*bios.c|src/blitter_simd_neon.c|src/blitter_simd_sse2.c) continue ;;
esac
if ! gcc -fsyntax-only -std=gnu89 \
-Werror=declaration-after-statement \
-I. -Isrc -Isrc/m68000 -Ilibretro-common/include \
-D__LIBRETRO__ -DINLINE="inline" \
"$f" 2>&1; then
FAILED=1
fi
done
if [ "$FAILED" = "1" ]; then
echo "::error::C89 compliance check failed — mid-block declarations found"
exit 1
fi
echo "==> All files pass C89 declaration check"
scripts/c89-lint.sh

- name: Check for stdbool.h usage (use boolean.h instead)
run: |
echo "==> Checking for direct stdbool.h includes..."
FAILED=0
for f in libretro.c src/*.c src/*.h; do
for f in libretro.c $(git ls-files 'src/**/*.c' 'src/**/*.h'); do
case "$f" in
src/boolean.h) continue ;;
src/core/boolean.h) continue ;;
esac
if grep -n '#include.*<stdbool\.h>' "$f" 2>/dev/null; then
echo "::error file=$f::Use <boolean.h> instead of <stdbool.h> (MSVC 2005/2010 compat)"
Expand Down
Loading
Loading