commit 96f265c5c17b1192acfbd1ad8b0132df31dbc7d1
parent 20685ca848b0b7c749cc072ac2121eb36ca24837
Author: Jean Schurger <jean@schurger.org>
Date: Wed, 4 Nov 2026 15:23:26 -0500
Correctif son : parole TMS5220 ~4,8x trop rapide (double avancée de la puce)
Dans on_main_cycles, la puce était avancée deux fois : par speech_.tick(cycles CPU,
~2,46 MHz traités comme horloges-puce) ET par speech_.update() (qui l'avance déjà au bon
rythme 640 kHz / 44100). Net : ~4,8x trop vite, voix aiguë. On retire le tick redondant
(patch build-time sur exelv.cpp) ; io_ready reste décompté par update() (16 horloges-puce
= 25 us, le vrai timing). Les 15 programmes tournent toujours.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QyJB9yqUAYm3wRQi4uytj9
Diffstat:
1 file changed, 6 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
@@ -43,6 +43,12 @@ web/index.html: $(wildcard roms/*) roms/cartridges/titles.json web/shell.html.in
# appelle abort() sans inclure <cstdlib>, que la libc++ d'Emscripten ne fournit pas en transitif.
grep -q '<cstdlib>' upstream/src/sound/mpeg_audio.cpp || \
sed -i 's|#include <cstring>|#include <cstring>\n#include <cstdlib>|' upstream/src/sound/mpeg_audio.cpp
+ # Correctif son (parole trop rapide) : dans on_main_cycles la puce TMS5220 était avancée deux
+ # fois — par speech_.tick(cycles CPU) ET par speech_.update() (qui l'avance déjà au bon rythme
+ # 640 kHz). Le tick redondant la faisait tourner ~4,8x trop vite. On le retire ; io_ready reste
+ # décompté par les ticks-horloge de update() (16 horloges-puce ≈ 25 µs, le vrai timing).
+ grep -q 'exl100_patch_speech' upstream/src/drivers/computers/exelv.cpp || \
+ sed -i 's|^ speech_.tick(cycles);| /* exl100_patch_speech: pilotée par update(), ce tick(cycles CPU) la faisait tourner ~4,8x trop vite */|' upstream/src/drivers/computers/exelv.cpp
$(DOCKER) emcmake cmake -S /work/upstream -B /work/build-web $(CMFLAGS)
$(DOCKER) cmake --build /work/build-web -j --target dsp
mkdir -p web