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