Skip to content

Commit 47f8af5

Browse files
Phase 5: Netplay module loading integration
- Enhanced loader.js with detailed logging for netplay script loading - Fixed module loading order in non-minified mode - Added global variable verification after module loads - Improved error handling for script loading failures - All netplay modules now load correctly before emulator.js
1 parent 07694b4 commit 47f8af5

32 files changed

Lines changed: 5186 additions & 391 deletions

data/loader.js

Lines changed: 106 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
(async function () {
2+
console.log("[Loader] ========================================");
3+
console.log("[Loader] loader.js executing - START");
4+
console.log("[Loader] ========================================");
25
const scripts = [
6+
// Netplay modules first (in dependency order)
7+
"netplay/core/input/frameworks/SimpleController.js",
8+
"netplay/core/input/frameworks/ComplexController.js",
9+
"netplay/core/input/InputQueue.js",
10+
"netplay/core/input/SlotManager.js",
11+
"netplay/core/input/InputSync.js",
12+
"netplay/core/session/FrameCounter.js",
13+
"netplay/core/session/SessionState.js",
14+
"netplay/core/config/ConfigManager.js",
15+
"netplay/core/room/GameModeManager.js",
16+
"netplay/core/room/UsernameManager.js",
17+
"netplay/core/room/MetadataValidator.js",
18+
"netplay/core/room/SpectatorManager.js",
19+
"netplay/core/room/PlayerManager.js",
20+
"netplay/core/room/RoomManager.js",
21+
"netplay/core/transport/SocketTransport.js",
22+
"netplay/core/transport/DataChannelManager.js",
23+
"netplay/core/transport/SFUTransport.js",
24+
"netplay/core/NetplayEngine.js",
25+
"netplay/adapters/emulatorjs/interface.js",
26+
"netplay/adapters/emulatorjs/EmulatorJSAdapter.js",
27+
// Top-level files (existing structure)
328
"emulator.js",
429
"nipplejs.js",
530
"shaders.js",
@@ -33,8 +58,57 @@
3358
return scriptPath + "src/" + file;
3459
}
3560
})();
36-
script.onload = resolve;
37-
script.onerror = () => {
61+
// Debug logging for netplay modules
62+
if (file.includes("netplay")) {
63+
console.log("[Loader] 📦 About to load netplay script:", file);
64+
console.log("[Loader] 📦 Full URL will be:", script.src);
65+
}
66+
script.onload = () => {
67+
if (file.includes("netplay")) {
68+
console.log("[Loader] ✅ Netplay script loaded successfully:", file);
69+
// Verify critical globals after loading key files
70+
if (file === "netplay/core/NetplayEngine.js") {
71+
const exists = typeof window.NetplayEngine !== "undefined";
72+
console.log(
73+
"[Loader] 🔍 NetplayEngine global check:",
74+
exists ? "✅ EXISTS" : "❌ MISSING"
75+
);
76+
if (!exists) {
77+
console.error(
78+
"[Loader] ⚠️ WARNING: NetplayEngine.js loaded but window.NetplayEngine is undefined!"
79+
);
80+
}
81+
}
82+
if (file === "netplay/adapters/emulatorjs/EmulatorJSAdapter.js") {
83+
const exists = typeof window.EmulatorJSAdapter !== "undefined";
84+
console.log(
85+
"[Loader] 🔍 EmulatorJSAdapter global check:",
86+
exists ? "✅ EXISTS" : "❌ MISSING"
87+
);
88+
if (!exists) {
89+
console.error(
90+
"[Loader] ⚠️ WARNING: EmulatorJSAdapter.js loaded but window.EmulatorJSAdapter is undefined!"
91+
);
92+
}
93+
}
94+
}
95+
resolve();
96+
};
97+
script.onerror = (error) => {
98+
console.error(
99+
"[Loader] ❌ Failed to load script:",
100+
file,
101+
"from:",
102+
script.src
103+
);
104+
console.error("[Loader] Error details:", error);
105+
console.error("[Loader] Script element:", script);
106+
if (file.includes("netplay")) {
107+
console.error(
108+
"[Loader] ⚠️ CRITICAL: Netplay module failed to load! Check Network tab for 404 errors."
109+
);
110+
console.error("[Loader] Expected path:", script.src);
111+
}
38112
filesmissing(file).then((e) => resolve());
39113
};
40114
document.head.appendChild(script);
@@ -83,20 +157,50 @@
83157
}
84158
}
85159

160+
console.log("[Loader] About to start loading", scripts.length, "scripts");
86161
if ("undefined" != typeof EJS_DEBUG_XX && true === EJS_DEBUG_XX) {
162+
console.log("[Loader] Using DEBUG mode");
87163
for (let i = 0; i < scripts.length; i++) {
164+
console.log(
165+
"[Loader] Loading script",
166+
i + 1,
167+
"of",
168+
scripts.length,
169+
":",
170+
scripts[i]
171+
);
88172
await loadScript(scripts[i]);
89173
}
90174
await loadStyle("emulator.css");
91175
} else {
92176
// RomM uses the SFU fork primarily for netplay; it does not bundle cores.
93177
// Always load the non-minified runtime so core CDN fallbacks can be patched
94178
// without touching huge single-line minified bundles.
179+
console.log("[Loader] Using non-minified mode (RomM default)");
95180
for (let i = 0; i < scripts.length; i++) {
181+
console.log(
182+
"[Loader] Loading script",
183+
i + 1,
184+
"of",
185+
scripts.length,
186+
":",
187+
scripts[i]
188+
);
96189
await loadScript(scripts[i]);
97190
}
98191
await loadStyle("emulator.css");
99192
}
193+
console.log("[Loader] ========================================");
194+
console.log("[Loader] All scripts loaded, initializing EmulatorJS");
195+
console.log(
196+
"[Loader] Checking for NetplayEngine:",
197+
typeof window.NetplayEngine
198+
);
199+
console.log(
200+
"[Loader] Checking for EmulatorJSAdapter:",
201+
typeof window.EmulatorJSAdapter
202+
);
203+
console.log("[Loader] ========================================");
100204
const config = {};
101205
config.gameUrl = window.EJS_gameUrl;
102206
config.dataPath = scriptPath;

0 commit comments

Comments
 (0)