Skip to content

Commit c141509

Browse files
patch shaders
1 parent 4472c94 commit c141509

3 files changed

Lines changed: 81 additions & 11 deletions

File tree

data/emulator.debug.js

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27841,11 +27841,46 @@ class EmulatorJS {
2784127841
}
2784227842
}
2784327843
}
27844-
enableShader(value) {
27845-
// Store the shader setting - actual shader application would be implemented here
27846-
this.currentShader = value;
27847-
// TODO: Implement actual shader loading and application
27848-
console.log("Shader enabled:", value);
27844+
enableShader(name) {
27845+
if (!this.gameManager || !this.Module || !this.Module.FS) return;
27846+
const shaders = this.shaders || this.config.shaders;
27847+
if (!shaders) return;
27848+
try {
27849+
this.Module.FS.unlink("/shader/shader.glslp");
27850+
} catch (e) {}
27851+
27852+
if (name === "disabled" || !shaders[name]) {
27853+
this.gameManager.toggleShader(0);
27854+
this.currentShader = "disabled";
27855+
return;
27856+
}
27857+
27858+
const shaderConfig = shaders[name];
27859+
27860+
if (typeof shaderConfig === "string") {
27861+
this.Module.FS.writeFile("/shader/shader.glslp", shaderConfig, {}, "w+");
27862+
} else {
27863+
const shader = shaderConfig.shader;
27864+
this.Module.FS.writeFile(
27865+
"/shader/shader.glslp",
27866+
shader.type === "base64" ? atob(shader.value) : shader.value,
27867+
{},
27868+
"w+",
27869+
);
27870+
if (Array.isArray(shaderConfig.resources)) {
27871+
shaderConfig.resources.forEach((resource) => {
27872+
this.Module.FS.writeFile(
27873+
`/shader/${resource.name}`,
27874+
resource.type === "base64" ? atob(resource.value) : resource.value,
27875+
{},
27876+
"w+",
27877+
);
27878+
});
27879+
}
27880+
}
27881+
27882+
this.gameManager.toggleShader(1);
27883+
this.currentShader = name;
2784927884
}
2785027885

2785127886
screenshot(callback, source, format, upscale) {

data/src/emulator.js

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7083,11 +7083,46 @@ class EmulatorJS {
70837083
}
70847084
}
70857085
}
7086-
enableShader(value) {
7087-
// Store the shader setting - actual shader application would be implemented here
7088-
this.currentShader = value;
7089-
// TODO: Implement actual shader loading and application
7090-
console.log("Shader enabled:", value);
7086+
enableShader(name) {
7087+
if (!this.gameManager || !this.Module || !this.Module.FS) return;
7088+
const shaders = this.shaders || this.config.shaders;
7089+
if (!shaders) return;
7090+
try {
7091+
this.Module.FS.unlink("/shader/shader.glslp");
7092+
} catch (e) {}
7093+
7094+
if (name === "disabled" || !shaders[name]) {
7095+
this.gameManager.toggleShader(0);
7096+
this.currentShader = "disabled";
7097+
return;
7098+
}
7099+
7100+
const shaderConfig = shaders[name];
7101+
7102+
if (typeof shaderConfig === "string") {
7103+
this.Module.FS.writeFile("/shader/shader.glslp", shaderConfig, {}, "w+");
7104+
} else {
7105+
const shader = shaderConfig.shader;
7106+
this.Module.FS.writeFile(
7107+
"/shader/shader.glslp",
7108+
shader.type === "base64" ? atob(shader.value) : shader.value,
7109+
{},
7110+
"w+",
7111+
);
7112+
if (Array.isArray(shaderConfig.resources)) {
7113+
shaderConfig.resources.forEach((resource) => {
7114+
this.Module.FS.writeFile(
7115+
`/shader/${resource.name}`,
7116+
resource.type === "base64" ? atob(resource.value) : resource.value,
7117+
{},
7118+
"w+",
7119+
);
7120+
});
7121+
}
7122+
}
7123+
7124+
this.gameManager.toggleShader(1);
7125+
this.currentShader = name;
70917126
}
70927127

70937128
screenshot(callback, source, format, upscale) {

emulator.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)