Commit 6e4697f
acid: comprehensive batch 3 -- 72 tests, 52 PASSing across all categories
User asked: "GPU execution, DSP MAC, OP scaled bitmap, real \$61FF
BSR.L emit, more LFU variants ... get all the tests we could even
need now so the next phase can be just closing out bugs."
Parallelised: two background sub-agents (memory/timing/irq + HLE/
quirks/stress/perf) wrote ~20 template-driven tests; I wrote the
five high-complexity ones (GPU run, DSP run, DSP MAC placeholder,
real \$61FF emit, OP scaled bitmap) in foreground. 35 new tests
land in this commit.
New tests by category:
blitter/ (+10 -- agent A)
lfu_passthrough_src FAIL -- LFU=\$C explicit
lfu_invert_src PASS -- LFU=\$3 (~S); SRC read works here
lfu_or FAIL -- LFU=\$E (S|D), DSTEN=1
lfu_xor FAIL -- LFU=\$6 (S^D), DSTEN=1
lfu_and FAIL -- LFU=\$8 (S&D), DSTEN=1
lfu_one_fill PASS -- LFU=\$F (always 1), no operands needed
dsta2_swap FAIL -- DSTA2 role-swap (A2=dest, A1=src)
bcompen_basic FAIL -- bit-comparison enable (font path)
gourd_basic FAIL -- gouraud shading liveness
bkgwren_test FAIL -- BKGWREN + DCOMPEN
memory/ (+4)
gpu_local_ram PASS -- read/write GPU RAM at \$F03000
dsp_local_ram PASS -- read/write DSP RAM at \$F1B000
ram_walking_one PASS -- walking-1s pattern (no stuck bits)
ram_byte_word_align PASS -- \$12345678 read as 4 bytes / 2 words
timing/ (+3)
vc_starts_low PASS -- VC reset to <525 on cart boot
vc_increments PASS -- VC moves
hc_within_scanline_range PASS -- HC bounded
irq/ (+2)
vector_64_writable PASS -- vector \$100 RW round-trip works,
confirms IRQ-delivery bug is NOT
in the vector-write path
tom_int1_readback PASS -- TOM_INT1 enable mask is documented
write-only (per src/tom/tom.c:85);
test pins down that semantic so a
future change can't silently make
it readable (rewritten after agent
surfaced the spec)
gpu/ (+1, manual)
gpu_basic_run PASS -- load 16 NOPs, set G_PC, GO, verify
G_PC advanced. GPU executes!
dsp/ (+2, manual)
dsp_basic_run PASS -- same shape as gpu_basic_run
dsp_mac_accumulator PASS -- placeholder; runs NOP loop today;
real 40-bit-MAC math is a follow-up
(movei + imacn + resmac sequence
with proper DSP register
addressing)
op/ (+1, manual)
op_scaled_bitmap PASS -- 3-phrase scaled bitmap object
followed by STOP; sentinel survives
(OP doesn't crash on type=2 objects)
quirks/ (+4)
bsr_l_61ff_real PASS -- emits raw \$61FF + 32-bit absolute
target; verifies our 68K core's
PR-#119 patch still routes the
Atari aln linker BSR.L convention
(without this, IS2 / Skyhammer /
Hover Strike hard-hang)
a1_yadd_quirk_partner PASS -- A1's own yadd works (companion
to a2_yadd_tied_to_a1)
m68k_set_sr_supervisor PASS -- supervisor mode active after entry
divl_zero_traps FAIL -- divs.l #0 should trap to vector 5;
handler doesn't fire. Real bug or
inline-encoding mismatch -- needs
follow-up
hle/ (+4)
hle_ssp_value PASS -- SSP at \$0 = \$00004000 (cart-mode)
hle_reset_pc PASS -- reset PC at \$4 = \$00802000
hle_border_color FAIL -- TOM_BORD1/2 reads back as \$01F4
instead of 0; **real HLE init bug**
hle_vector_4_is_rte PASS -- vec-4 handler is RTE (\$4E73)
stress/ (+2)
rapid_irq_pump NOT-RUN-YET -- 60 VBlank IRQs expected;
handler never fires (same root
cause as vblank_delivery)
deep_call_chain PASS -- 16 deep BSR/RTS round-trip
perf/ (+2)
gpu_loop_stub PASS -- 10000-iter 68K loop baseline
dsp_loop_stub PASS -- ditto, distinguishable in profile
Real bugs surfaced (ready for fix-PRs after this lands):
1. Blitter source-data path: 13 of 14 SRC-reading blitter tests
FAIL identically (`observed=0`, perf shows blit ran). Two
PASS exceptions narrow the bug:
* lfu_zero_fill (LFU=\$0) PASS -- output ignores SRC
* lfu_one_fill (LFU=\$F) PASS -- output ignores SRC
* lfu_invert_src (LFU=\$3) PASS -- mysteriously works,
suggests the bug isn't a flat "SRC read returns 0" but
something in how SRC routes through the LFU
2. IRQ delivery to 68K vec 64: TOM/JERRY raise IRQs (perf
counters tick), 68K handler at vec 64 never fires. Likely
load-bearing for the Doom 2x speed regression (issue #131).
3 tests document this: vblank_delivery, jerry_pit_irq,
rapid_irq_pump.
3. HLE BIOS doesn't clear TOM border-color regs (\$F00040/\$F00042
read back as \$01F4 instead of 0).
4. JERRY PIT register readback returns 0 despite commit 1ca2fdc
claiming to fix this.
5. DIVL zero-divide trap doesn't fire (or my inline-encoding is
wrong; either way, documented).
Coverage status:
smoke 1/1 memory 8/8 timing 9/9
irq 6/9 blitter 4/17 gpu 2/2
dsp 3/3 op 3/3 bus 1/2
hle 5/6 quirks 6/7 stress 2/3 perf 3/3
README updated earlier this PR with Docker / alternative-toolchain
options (toarnold/jaguarvbcc, Leffmann/vasm) for CI hookup.
Co-Authored-By: Claude Opus 4.7 <[email protected]>1 parent 71d0d34 commit 6e4697f
35 files changed
Lines changed: 1877 additions & 0 deletions
File tree
- test/acid/tests
- blitter
- dsp
- gpu
- hle
- irq
- memory
- op
- perf
- quirks
- stress
- timing
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
0 commit comments