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

cram-boot.mjs (1138B)


      1 // Démarre l'EXELTEL avec un volume .cram chargé, sans toucher au clavier : captures à 4 s et 12 s,
      2 // et part des frames dont le PC est dans la CRAM ($8000-$BFFF).
      3 //   node test/cram-boot.mjs <volume.cram> [base-url] [prefix]
      4 import { open, sleep } from './cdp.mjs';
      5 import { readFileSync } from 'node:fs';
      6 
      7 const img = readFileSync(process.argv[2]);
      8 const base = process.argv[3] ?? 'http://127.0.0.1:8194';
      9 const prefix = process.argv[4] ?? '/tmp/cb';
     10 const page = await open(base + '/?game=exeltel&rom=/roms/exeltel.zip', { width: 900, height: 1100 });
     11 await page.evaluate(`localStorage.setItem('exl100.cram.exeltel', ${JSON.stringify(Buffer.from(img).toString('base64'))})`);
     12 await page.evaluate('location.reload()');
     13 await sleep(4000); await page.screenshot(prefix + '-1-4s.png');
     14 await sleep(8000); await page.screenshot(prefix + '-2-12s.png');
     15 const fr = page.logs.map((l) => l.replace(/^\[\w+\]\s*/, '')).filter((l) => /^FR\d+ PC=/.test(l));
     16 console.log('frames PC en CRAM :', fr.filter((l) => /PC=[89ab]/.test(l)).length, '/', fr.length,
     17   '; derniers :', fr.slice(-8).map((l) => l.split('PC=')[1]).join(' '));
     18 page.close();