Skip to content
Snippets Groups Projects
index.ts 2.19 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { startApp } from "emukit";
    import { GameboyEmulator } from "./ts";
    
    
    const BACKGROUNDS = [
        "264653",
        "1b1a17",
        "023047",
        "bc6c25",
        "283618",
        "2a9d8f",
        "3a5a40"
    ];
    
    (async () => {
    
        // tries to load the settings from the local storage
        // to be used as fallback process for GET parameters
        let settings: Record<string, string> = {};
        if (window.localStorage) {
            settings = JSON.parse(localStorage.getItem("settings") ?? "{}");
        }
    
    
        // parses the current location URL as retrieves
        // some of the "relevant" GET parameters for logic
        const params = new URLSearchParams(window.location.search);
        const romUrl = params.get("rom_url") ?? params.get("url") ?? undefined;
        const fullscreen = ["1", "true", "True"].includes(
    
    João Magalhães's avatar
    João Magalhães committed
            params.get("fullscreen") ?? params.get("fs") ?? ""
    
        );
        const debug = ["1", "true", "True"].includes(params.get("debug") ?? "");
    
        const verbose = ["1", "true", "True"].includes(params.get("verbose") ?? "");
    
        const keyboard = ["1", "true", "True"].includes(
            params.get("keyboard") ?? ""
        );
    
        const palette = params.get("palette") ?? settings["palette"] ?? undefined;
        const background =
            params.get("background") ??
            params.get("theme") ??
            settings["background"] ??
            settings["theme"] ??
            undefined;
    
        // creates the emulator structure and initializes the
        // React app with both the parameters and the emulator
    
        const emulator = new GameboyEmulator({
            background: background,
            debug: debug || verbose
        });
    
        await emulator.init();
    
        startApp("app", {
            emulator: emulator,
            fullscreen: fullscreen,
            debug: debug,
            keyboard: keyboard,
    
            palette: palette,
    
            background: background,
    
            backgrounds: BACKGROUNDS
        });
    
    
        // sets the emulator in the global scope this is useful
        // to be able to access the emulator from global functions
        window.emulator = emulator;
    
    
        // starts the emulator with the provided ROM URL, this is
        // going to run the main emulator (infinite) loop
    
        await emulator.start({ romUrl: romUrl });