exl100

Émulateur Exelvision EXL 100 (1984) dans le navigateur : dsp-cpp en WebAssembly, cartouches et cassettes BASIC
git clone https://git.schurger.org/exl100.git
Log | Files | Refs | README

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:
MMakefile | 6++++++
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