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();