mirror of
https://github.com/libretro/parallel-dc.git
synced 2026-11-07 12:37:53 -10:00
The core has the sound chip's DSP twice - a compiler for x86-64 and ARM64 and an interpreter for the rest - and nothing ran one against the other. tools/aica/run.sh builds dsp_test.cpp around each, with nothing else of the core, and gives both the same 1000 made-up programs: 1 to 64 random steps, random coefficients and addresses, 64 samples of random input. The 16 outputs after every sample and the registers and delay memory at the end have to come out the same from both. Every program is run a second time with a step added at the end of the 128 that is not empty and does nothing, which makes the DSP run the empty steps it otherwise leaves out. Both runs have to leave the same behind, from the compiler and from the interpreter: that is "aica dsp: the empty steps after the program's last are not run" checked on both, where so far it had been checked on the compiler with one game's program. One difference between the two is known and is kept out of the programs; run.sh says what it is. On a machine that is not x86-64 only the interpreter's check of itself is run. Before "aica dsp: two faults in the compiled code" this fails.