gc_bba_test: fix inverted EXI error checks; builds clean

libogc's EXI functions return '1 on success, <=0 on error', but every call
site tested '== 0'.  A -1 error return therefore read as success, so a failed
EXI_Lock or EXI_Select would fall through and the subsequent transfer would
produce garbage reported as a misleading test failure rather than an EXI
error.  All six call sites now test <= 0.

Also retries EXI_Lock for ~100 ms: it fails outright rather than blocking when
another subsystem holds the channel, and Swiss or a libogc driver may hold it
briefly -- without the retry a transient collision surfaces as a test failure.

Builds clean with devkitPPC 16.1.0 / GCC 16, no warnings: 172 KB .dol.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 11:24:47 +02:00
parent ccf4eb4996
commit d8725392a5
5 changed files with 54 additions and 21 deletions
+6
View File
@@ -33,3 +33,9 @@ hardware/re-bba-rb/re-bba-rb-eeprom.bin
*.swp
.history/
build_w5100test/
# GameCube test app build products
gc_bba_test/build/
gc_bba_test/*.elf
gc_bba_test/*.dol
gc_bba_test/*.map