Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
RishiRecon
GitHub Repository: RishiRecon/exploits
Path: blob/main/misc/emulator/xnes/snem/testworker.js
28515 views
1
function snes_init(){
2
reboot_emulator=Module.cwrap('reboot_emulator', 'number', ['string'])
3
native_set_joypad_state=Module._native_set_joypad_state
4
native_bitmap_pointer=Module._native_bitmap_pointer
5
mainloop=Module._mainloop
6
renderscreen=Module._renderscreen
7
palf=reboot_emulator("/_.smc")
8
native_set_joypad_state(0x80000000)
9
frameskip=0
10
11
}
12
function snes_mainloop(){
13
for(var _i=0;_i<=frameskip;_i++)
14
mainloop(palf ? 312 :262)
15
renderscreen()
16
var bitmap=native_bitmap_pointer(-16,0)>>2
17
var src=i.subarray(bitmap,bitmap+288*224) // // Unstable Hack: i is Heap32 compiled by closure
18
var buffer=new ArrayBuffer(4*288*224)
19
var src2=new Uint32Array(buffer) // WW2
20
for(var _i=0;_i<288*224;_i++) src2[_i]=src[_i] // WW2
21
postMessage({cmd:"render2", src:buffer}, [buffer]) // WW2
22
postMessage({cmd:"render", src:src}) // WW1
23
setTimeout("snes_mainloop()", 0);
24
}
25
26
onmessage=function(event) {
27
var data=event.data
28
switch(data.cmd){
29
case "loadfile":
30
Module.FS_createDataFile("/", "_.smc", new Uint8Array(data.buffer) , true, true)
31
postMessage({cmd: "print", txt:"file loaded"})
32
break
33
case "start":
34
snes_init()
35
snes_mainloop()
36
break
37
case "joy1":
38
native_set_joypad_state(data.state)
39
break
40
case "frameskip":
41
frameskip=data.value
42
break
43
default:
44
postMessage({cmd:"print", txt:"unknown command "+data.cmd})
45
}
46
}
47
48