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-dir.mjs (1360B)


      1 // Directory CROS64 d'un volume .cram (16 Ko) sur l'EXELTEL : Périphériques -> Exelmémoire -> Directory -> Screen.
      2 //   node test/cram-dir.mjs <volume.cram> [base-url] [capture.png]
      3 import { open, sleep } from './cdp.mjs';
      4 import { readFileSync } from 'node:fs';
      5 
      6 const img = readFileSync(process.argv[2]);
      7 const base = process.argv[3] ?? 'http://127.0.0.1:8195';
      8 const shot = process.argv[4] ?? '/tmp/dir.png';
      9 const page = await open(base + '/?game=exeltel&rom=/roms/exeltel.zip', { width: 900, height: 1100 });
     10 await page.evaluate(`localStorage.setItem('exl100.cram.exeltel', ${JSON.stringify(Buffer.from(img).toString('base64'))})`);
     11 await page.evaluate('location.reload()');
     12 const key = async (k, code, vk) => {
     13   await page.send('Input.dispatchKeyEvent', { type: 'keyDown', key: k, code, windowsVirtualKeyCode: vk });
     14   await sleep(60);
     15   await page.send('Input.dispatchKeyEvent', { type: 'keyUp', key: k, code, windowsVirtualKeyCode: vk });
     16   await sleep(320);
     17 };
     18 const down = () => key('ArrowDown', 'ArrowDown', 40);
     19 const enter = () => key('Enter', 'Enter', 13);
     20 await sleep(9000);
     21 await down(); await down(); await down(); await enter(); await sleep(1200); await enter(); await sleep(3500);
     22 await down(); await enter(); await sleep(900); await enter(); await sleep(2000);
     23 await page.screenshot(shot);
     24 console.log('Capture :', shot);
     25 page.close();