This commit is contained in:
Ethan O'Brien 2023-06-29 11:49:48 -05:00
parent 8ea6db2b47
commit ebe647b141
4 changed files with 53 additions and 1 deletions

View file

@ -13,7 +13,8 @@ class EJS_GameManager {
getCoreOptions: this.Module.cwrap('get_core_options', 'string', []),
setVariable: this.Module.cwrap('set_variable', 'null', ['string', 'string']),
setCheat: this.Module.cwrap('set_cheat', 'null', ['number', 'number', 'string']),
resetCheat: this.Module.cwrap('reset_cheat', 'null', [])
resetCheat: this.Module.cwrap('reset_cheat', 'null', []),
toggleShader: this.Module.cwrap('shader_enable', 'null', ['number'])
}
this.mkdir("/home");
this.mkdir("/home/web_user");
@ -21,6 +22,8 @@ class EJS_GameManager {
this.mkdir("/home/web_user/retroarch/userdata");
this.FS.writeFile("/home/web_user/retroarch/userdata/retroarch.cfg", this.getRetroArchCfg());
this.initShaders();
}
mkdir(path) {
try {
@ -30,6 +33,13 @@ class EJS_GameManager {
getRetroArchCfg() {
return "\naudio_latency: 256\n";
}
initShaders() {
if (!window.EJS_SHADERS) return;
this.mkdir("/shader");
for (const shader in window.EJS_SHADERS) {
this.FS.writeFile('/shader/'+shader, window.EJS_SHADERS[shader]);
}
}
restart() {
this.functions.restart();
}
@ -109,6 +119,9 @@ class EJS_GameManager {
resetCheat() {
this.functions.resetCheat();
}
toggleShader(active) {
this.functions.toggleShader(active);
}
}
window.EJS_GameManager = EJS_GameManager;

View file

@ -1523,6 +1523,18 @@ class EmulatorJS {
};
}
menuOptionChanged(option, value) {
if (option === "shader") {
try {
this.Module.FS.unlink("/shader/shader.glslp");
} catch(e) {}
if (value === "disabled") {
this.gameManager.toggleShader(0);
return;
}
this.Module.FS.writeFile("/shader/shader.glslp", window.EJS_SHADERS[value]);
this.gameManager.toggleShader(1);
return;
}
//console.log(option, value);
this.gameManager.setVariable(option, value);
}
@ -1659,6 +1671,18 @@ class EmulatorJS {
'hide': this.localization("hide")
}, 'hide');
if (window.EJS_SHADERS) {
addToMenu(this.localization('Shaders'), 'shader', {
'disabled': "Disabled",
'2xScaleHQ.glslp': "2xScaleHQ",
'4xScaleHQ.glslp': "4xScaleHQ",
'crt-easymode.glslp': 'CRT easymode',
'crt-aperture.glslp': 'CRT aperture',
'crt-geom.glslp': 'CRT geom',
'crt-mattias.glslp': 'CRT mattias'
}, 'disabled');
}
this.settingsMenu.appendChild(nested);
this.settingParent.appendChild(this.settingsMenu);

View file

@ -36,6 +36,7 @@
if (('undefined' != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX) || true) {
await loadScript('emulator.js');
await loadScript('nipplejs.js');
await loadScript('shaders.js');
await loadScript('gamepad.js');
await loadScript('GameManager.js');
await loadStyle('css/main.css');

14
src/shaders.js Normal file

File diff suppressed because one or more lines are too long