diff --git a/data/loader.js b/data/loader.js index e3be078..afd51bc 100644 --- a/data/loader.js +++ b/data/loader.js @@ -128,6 +128,8 @@ config.browserMode = window.EJS_browserMode; config.shaders = Object.assign({}, window.EJS_SHADERS, window.EJS_shaders ? window.EJS_shaders : {}); config.fixedSaveInterval = window.EJS_fixedSaveInterval; + config.disableAutoUnload = window.EJS_disableAutoUnload; + config.disableBatchBootup = window.EJS_disableBatchBootup; let systemLang; try { diff --git a/data/localization/ar.json b/data/localization/ar.json index 50d22e5..7273758 100644 --- a/data/localization/ar.json +++ b/data/localization/ar.json @@ -99,8 +99,8 @@ "Press Keyboard": "اضغط على لوحة المفاتيح", "INSERT COIN": "إدراج عملة", "Remove": "يزيل", - "SAVE LOADED FROM BROWSER": "وفر محملًا من المتصفح", - "SAVE SAVED TO BROWSER": "تم الحفظ في المتصفح", + "LOADED STATE FROM BROWSER": "حالة تحميل من المتصفح", + "SAVED STATE TO BROWSER": "الحالة المحفوظة في المتصفح", "Join the discord": "انضم إلى الفتنة", "View on GitHub": "عرض على جيثب", "Failed to start game": "فشل بدء اللعبة", diff --git a/data/localization/bn.json b/data/localization/bn.json index b220966..00a53e8 100644 --- a/data/localization/bn.json +++ b/data/localization/bn.json @@ -99,8 +99,8 @@ "Press Keyboard": "কীবোর্ড টিপুন", "INSERT COIN": "মুদ্রা প্রবেশ করান", "Remove": "অপসারণ", - "SAVE LOADED FROM BROWSER": "ব্রাউজার থেকে লোড সংরক্ষণ করুন", - "SAVE SAVED TO BROWSER": "ব্রাউজারে সংরক্ষণ করুন", + "LOADED STATE FROM BROWSER": "ব্রাউজার থেকে লোড করা অবস্থা", + "SAVED STATE TO BROWSER": "রাষ্ট্র ব্রাউজারে সংরক্ষিত হয়", "Join the discord": "বিরোধে যোগ দিন", "View on GitHub": "GitHub এ দেখুন", "Failed to start game": "খেলা শুরু করতে ব্যর্থ", diff --git a/data/localization/de.json b/data/localization/de.json index 07aac89..35b6d5d 100644 --- a/data/localization/de.json +++ b/data/localization/de.json @@ -99,8 +99,8 @@ "Press Keyboard": "Taste drücken", "INSERT COIN": "MÜNZE EINWERFEN", "Remove": "Entfernen", - "SAVE LOADED FROM BROWSER": "SPEICHERSTAND VOM BROWSER GELADEN", - "SAVE SAVED TO BROWSER": "SPEICHERSTAND IM BROWSER GESPEICHERT", + "LOADED STATE FROM BROWSER": "GELADENER STATUS VOM BROWSER", + "SAVED STATE TO BROWSER": "STATUS IM BROWSER GESPEICHERT", "Join the discord": "Treten Sie dem Discord bei", "View on GitHub": "Auf GitHub ansehen", "Failed to start game": "Das Spiel konnte nicht gestartet werden", diff --git a/data/localization/el.json b/data/localization/el.json index b0c7fc4..899acb4 100644 --- a/data/localization/el.json +++ b/data/localization/el.json @@ -99,8 +99,8 @@ "Press Keyboard": "Πατήστε Πληκτρολόγιο", "INSERT COIN": "ΕΙΣΑΓΕΤΕ ΝΟΜΙΣΜΑ", "Remove": "Αφαιρώ", - "SAVE LOADED FROM BROWSER": "ΑΠΟΘΗΚΕΥΣΗ ΦΟΡΤΩΜΕΝΟΥ ΑΠΟ ΤΟ BROWSER", - "SAVE SAVED TO BROWSER": "ΑΠΟΘΗΚΕΥΣΗ ΑΠΟΘΗΚΕΥΤΗΚΕ ΣΤΟ BROWSER", + "LOADED STATE FROM BROWSER": "ΦΟΡΤΩΘΗΚΕ ΚΑΤΑΣΤΑΣΗ ΑΠΟ ΤΟ BROWSER", + "SAVED STATE TO BROWSER": "ΑΠΟΘΗΚΕΥΤΗΚΕ ΚΑΤΑΣΤΑΣΗ ΣΤΟ BROWSER", "Join the discord": "Συμμετάσχετε στη διχόνοια", "View on GitHub": "Προβολή στο GitHub", "Failed to start game": "Απέτυχε η έναρξη του παιχνιδιού", diff --git a/data/localization/en.json b/data/localization/en.json index 80f69f8..aeee06e 100644 --- a/data/localization/en.json +++ b/data/localization/en.json @@ -104,8 +104,8 @@ "Press Keyboard": "Press Keyboard", "INSERT COIN": "INSERT COIN", "Remove": "Remove", - "SAVE LOADED FROM BROWSER": "SAVE LOADED FROM BROWSER", - "SAVE SAVED TO BROWSER": "SAVE SAVED TO BROWSER", + "LOADED STATE FROM BROWSER": "LOADED STATE FROM BROWSER", + "SAVED STATE TO BROWSER": "SAVED STATE TO BROWSER", "Join the discord": "Join the discord", "View on GitHub": "View on GitHub", "Failed to start game": "Failed to start game", diff --git a/data/localization/es.json b/data/localization/es.json index d84cb16..a780dfb 100644 --- a/data/localization/es.json +++ b/data/localization/es.json @@ -104,8 +104,8 @@ "Press Keyboard": "Presionar Teclado", "INSERT COIN": "INSERTE MONEDA", "Remove": "Eliminar", - "SAVE LOADED FROM BROWSER": "GUARDAR CARGADO DESDE EL NAVEGADOR", - "SAVE SAVED TO BROWSER": "GUARDAR GUARDADO EN EL NAVEGADOR", + "LOADED STATE FROM BROWSER": "ESTADO CARGADO DESDE EL NAVEGADOR", + "SAVED STATE TO BROWSER": "ESTADO GUARDADO EN EL NAVEGADOR", "Join the discord": "Únete al Discord", "View on GitHub": "Ver en GitHub", "Failed to start game": "Error al iniciar el juego", diff --git a/data/localization/fa.json b/data/localization/fa.json index 2b47689..a350473 100644 --- a/data/localization/fa.json +++ b/data/localization/fa.json @@ -104,8 +104,8 @@ "Press Keyboard": "صفحه کلید را فشار دهید", "INSERT COIN": "سکه درج کنید", "Remove": "حذف کردن", - "SAVE LOADED FROM BROWSER": "ذخیره بارگذاری شده از مرورگر", - "SAVE SAVED TO BROWSER": "ذخیره در مرورگر ذخیره شد", + "LOADED STATE FROM BROWSER": "وضعیت بارگیری شده از مرورگر", + "SAVED STATE TO BROWSER": "وضعیت در مرورگر ذخیره شد", "Join the discord": "به دیسکورد discord بپیوندید", "View on GitHub": "در GitHub مشاهده کنید", "Failed to start game": "شروع بازی ناموفق بود", diff --git a/data/localization/fr.json b/data/localization/fr.json index ad9824d..8a32070 100644 --- a/data/localization/fr.json +++ b/data/localization/fr.json @@ -104,8 +104,8 @@ "Press Keyboard": "Appuyez sur le clavier", "INSERT COIN": "INSÉRER UNE PIÈCE", "Remove": "Retirer", - "SAVE LOADED FROM BROWSER": "SAUVEGARDE CHARGÉE À PARTIR DU NAVIGATEUR", - "SAVE SAVED TO BROWSER": "SAUVEGARDE ENREGISTRÉE DANS LE NAVIGATEUR", + "LOADED STATE FROM BROWSER": "ÉTAT CHARGÉ À PARTIR DU NAVIGATEUR", + "SAVED STATE TO BROWSER": "ÉTAT ENREGISTRÉ DANS LE NAVIGATEUR", "Join the discord": "Rejoindre le serveur Discord", "View on GitHub": "Afficher sur GitHub", "Failed to start game": "Échec au démarrage du jeu", diff --git a/data/localization/hi.json b/data/localization/hi.json index b7b05b2..5fd5cac 100644 --- a/data/localization/hi.json +++ b/data/localization/hi.json @@ -99,8 +99,8 @@ "Press Keyboard": "कीबोर्ड दबाएँ", "INSERT COIN": "सिक्का डालें", "Remove": "निकालना", - "SAVE LOADED FROM BROWSER": "ब्राउज़र से लोड किया गया सेव करें", - "SAVE SAVED TO BROWSER": "ब्राउज़र में सहेजा गया सहेजें", + "LOADED STATE FROM BROWSER": "ब्राउज़र से लोड किया गया राज्य", + "SAVED STATE TO BROWSER": "राज्य को ब्राउज़र में सहेजा गया", "Join the discord": "कलह में शामिल हों", "View on GitHub": "GitHub पर देखें", "Failed to start game": "गेम प्रारंभ करने में विफल", diff --git a/data/localization/it.json b/data/localization/it.json index da96386..1dffbd2 100644 --- a/data/localization/it.json +++ b/data/localization/it.json @@ -100,8 +100,8 @@ "Press Keyboard": "Premi Tastiera", "INSERT COIN": "INSERISCI GETTONE", "Remove": "Rimuovi", - "SAVE LOADED FROM BROWSER": "SALVATAGGIO CARICATO DA BROWSER", - "SAVE SAVED TO BROWSER": "SALVATAGGIO SALVATO SU BROWSER", + "LOADED STATE FROM BROWSER": "STATO CARICATO DAL BROWSER", + "SAVED STATE TO BROWSER": "STATO SALVATO NEL BROWSER", "Join the discord": "Entra nel Discord", "View on GitHub": "Vedi su Github", "Failed to start game": "Avvio del gioco fallito", diff --git a/data/localization/ja.json b/data/localization/ja.json index d7a73eb..a7d93f4 100644 --- a/data/localization/ja.json +++ b/data/localization/ja.json @@ -99,8 +99,8 @@ "Press Keyboard": "キーボードを押す", "INSERT COIN": "コインを入れる", "Remove": "削除", - "SAVE LOADED FROM BROWSER": "ブラウザからセーブをロードしました。", - "SAVE SAVED TO BROWSER": "ブラウザにセーブを保存しました。", + "LOADED STATE FROM BROWSER": "ブラウザからのロード状態", + "SAVED STATE TO BROWSER": "状態をブラウザに保存", "Join the discord": "Discordに参加", "View on GitHub": "GitHub で見る", "Failed to start game": "ゲームの開始に失敗しました", diff --git a/data/localization/jv.json b/data/localization/jv.json index 47c71c9..d55a3c7 100644 --- a/data/localization/jv.json +++ b/data/localization/jv.json @@ -99,8 +99,8 @@ "Press Keyboard": "Pencet Keyboard", "INSERT COIN": "INSERT COIN", "Remove": "Mbusak", - "SAVE LOADED FROM BROWSER": "Simpen dimuat saka BROWSER", - "SAVE SAVED TO BROWSER": "SAVE disimpen menyang BROWSER", + "LOADED STATE FROM BROWSER": "NEGARA YANG DIMUAT DARI BROWSER", + "SAVED STATE TO BROWSER": "NEGARA TERSIMPAN KE BROWSER", "Join the discord": "Melu discord", "View on GitHub": "Deleng ing GitHub", "Failed to start game": "Gagal miwiti game", diff --git a/data/localization/ko.json b/data/localization/ko.json index a3546fb..10271c5 100644 --- a/data/localization/ko.json +++ b/data/localization/ko.json @@ -104,8 +104,8 @@ "Press Keyboard": "키보드를 누르세요.", "INSERT COIN": "동전을 넣으세요.", "Remove": "제거", - "SAVE LOADED FROM BROWSER": "브라우저에서 세이브를 불러왔습니다.", - "SAVE SAVED TO BROWSER": "브라우저에 세이브가 저장되었습니다.", + "LOADED STATE FROM BROWSER": "브라우저에서 로드된 상태", + "SAVED STATE TO BROWSER": "브라우저에 저장된 상태", "Join the discord": "디스코드에 참가하기", "View on GitHub": "GitHub에서 보기", "Failed to start game": "게임을 시작하지 못했습니다.", diff --git a/data/localization/pt.json b/data/localization/pt.json index 44338b2..d0e88bc 100644 --- a/data/localization/pt.json +++ b/data/localization/pt.json @@ -105,8 +105,8 @@ "Press Keyboard": "Pressione uma tecla", "INSERT COIN": "Insira uma ficha", "Remove": "Remover", - "SAVE LOADED FROM BROWSER": "SAVE STATE CARREGADO DO BROWSER", - "SAVE SAVED TO BROWSER": "SAVE STATE ARMAZENADO NO BROWSER", + "LOADED STATE FROM BROWSER": "ESTADO CARREGADO DO NAVEGADOR", + "SAVED STATE TO BROWSER": "ESTADO SALVO NO NAVEGADOR", "Join the discord": "Participar do discord", "View on GitHub": "Ver no GitHub", "Failed to start game": "Falha ao iniciar o jogo", diff --git a/data/localization/ro.json b/data/localization/ro.json index 5411dd2..1b547b1 100644 --- a/data/localization/ro.json +++ b/data/localization/ro.json @@ -104,8 +104,8 @@ "Press Keyboard": "Apasă Tastatură", "INSERT COIN": "INSERT COIN", "Remove": "Înlăturare", - "SAVE LOADED FROM BROWSER": "SAVE LOADED FROM BROWSER", - "SAVE SAVED TO BROWSER": "SAVE SAVED TO BROWSER", + "LOADED STATE FROM BROWSER": "STARE ÎNCĂRCATĂ DIN BROWSER", + "SAVED STATE TO BROWSER": "STARE SALVATĂ ÎN BROWSER", "Join the discord": "Alăturăte pe Discord", "View on GitHub": "Vezi în GitHub", "Failed to start game": "Pornirea jocului a eșuat", diff --git a/data/localization/ru.json b/data/localization/ru.json index be4d5fe..ca54a75 100644 --- a/data/localization/ru.json +++ b/data/localization/ru.json @@ -99,8 +99,8 @@ "Press Keyboard": "Нажмите кнопку на клавиатуре", "INSERT COIN": "ВСТАВЬТЕ МОНЕТУ", "Remove": "Удалить", - "SAVE LOADED FROM BROWSER": "ЗАГРУЖЕНО ИЗ БРАУЗЕРА", - "SAVE SAVED TO BROWSER": "СОХРАНЕНО В БРАУЗЕРЕ", + "LOADED STATE FROM BROWSER": "ЗАГРУЖЕННОЕ СОСТОЯНИЕ ИЗ БРАУЗЕРА", + "SAVED STATE TO BROWSER": "СОХРАНЕННОЕ СОСТОЯНИЕ В БРАУЗЕРЕ", "Join the discord": "Присоединяйтесь к discord", "View on GitHub": "Посмотреть на GitHub", "Failed to start game": "Не удалось запустить игру", diff --git a/data/localization/tr.json b/data/localization/tr.json index 7948f57..6521297 100644 --- a/data/localization/tr.json +++ b/data/localization/tr.json @@ -104,8 +104,8 @@ "Press Keyboard": "Klavyeye Basın", "INSERT COIN": "JETON ATINIZ", "Remove": "Kaldır", - "SAVE LOADED FROM BROWSER": "KAYIT TARAYICIDAN YÜKLENDİ", - "SAVE SAVED TO BROWSER": "KAYIT TARAYICIYA KAYDEDİLDİ", + "LOADED STATE FROM BROWSER": "TARAYICIDAN YÜKLENEN DURUM", + "SAVED STATE TO BROWSER": "TARAYICILARA KAYDEDİLDİ DURUM", "Join the discord": "Discord'a katıl", "View on GitHub": "Github'da görüntüler", "Failed to start game": "Oyun başlatılamadı", diff --git a/data/localization/vi.json b/data/localization/vi.json index ced065a..a4990cd 100644 --- a/data/localization/vi.json +++ b/data/localization/vi.json @@ -100,8 +100,8 @@ "Press Keyboard": "Bàn phím", "INSERT COIN": "THÊM XU", "Remove": "Loại bỏ", - "SAVE LOADED FROM BROWSER": "SAVE LOADED FROM BROWSER", - "SAVE SAVED TO BROWSER": "SAVE SAVED TO BROWSER", + "LOADED STATE FROM BROWSER": "TRẠNG THÁI ĐÃ TẢI TỪ TRÌNH DUYỆT", + "SAVED STATE TO BROWSER": "TRẠNG THÁI ĐÃ LƯU VÀO TRÌNH DUYỆT", "Join the discord": "Tham gia thảo luận", "View on GitHub": "Xem trên GitHub", "Failed to start game": "Thất bại khởi động game", diff --git a/data/localization/zh.json b/data/localization/zh.json index 2c32173..4109af6 100644 --- a/data/localization/zh.json +++ b/data/localization/zh.json @@ -99,8 +99,8 @@ "Press Keyboard": "按键盘", "INSERT COIN": "投币", "Remove": "消除", - "SAVE LOADED FROM BROWSER": "已从浏览器加载状态", - "SAVE SAVED TO BROWSER": "已将状态保存到浏览器", + "LOADED STATE FROM BROWSER": "浏览器加载状态", + "SAVED STATE TO BROWSER": "已将状态保存至浏览器", "Join the discord": "加入discord", "View on GitHub": "在GitHub上查看", "Failed to start game": "无法开始游戏", diff --git a/data/src/GameManager.js b/data/src/GameManager.js index 67cb68b..9608df3 100644 --- a/data/src/GameManager.js +++ b/data/src/GameManager.js @@ -164,6 +164,22 @@ class EJS_GameManager { } return cfg; } + writeBootupBatchFile() { + const data = ` +SET BLASTER=A220 I7 D1 H5 T6 + +@ECHO OFF +mount A / -t floppy +SET PATH=Z:\\;A:\\ +mount c /emulator/c +c: +COMMAND.COM +IF EXIST AUTORUN.BAT AUTORUN.BAT +`; + const filename = "BOOTUP.BAT"; + this.FS.writeFile("/" + filename, data); + return filename; + } initShaders() { if (!this.EJS.config.shaders) return; this.mkdir("/shader"); diff --git a/data/src/emulator.js b/data/src/emulator.js index 8e5185d..cf6d9bb 100644 --- a/data/src/emulator.js +++ b/data/src/emulator.js @@ -4,16 +4,16 @@ class EmulatorJS { "atari5200": ["a5200"], "vb": ["beetle_vb"], "nds": ["melonds", "desmume", "desmume2015"], - "arcade": ["fbneo", "fbalpha2012_cps1", "fbalpha2012_cps2"], + "arcade": ["fbneo", "fbalpha2012_cps1", "fbalpha2012_cps2", "same_cdi"], "nes": ["fceumm", "nestopia"], "gb": ["gambatte"], "coleco": ["gearcoleco"], - "segaMS": ["smsplus", "genesis_plus_gx", "picodrive"], - "segaMD": ["genesis_plus_gx", "picodrive"], - "segaGG": ["genesis_plus_gx"], - "segaCD": ["genesis_plus_gx", "picodrive"], + "segaMS": ["smsplus", "genesis_plus_gx", "genesis_plus_gx_wide", "picodrive"], + "segaMD": ["genesis_plus_gx", "genesis_plus_gx_wide", "picodrive"], + "segaGG": ["genesis_plus_gx", "genesis_plus_gx_wide"], + "segaCD": ["genesis_plus_gx", "genesis_plus_gx_wide", "picodrive"], "sega32x": ["picodrive"], - "sega": ["genesis_plus_gx", "picodrive"], + "sega": ["genesis_plus_gx", "genesis_plus_gx_wide", "picodrive"], "lynx": ["handy"], "mame": ["mame2003_plus", "mame2003"], "ngp": ["mednafen_ngp"], @@ -26,7 +26,7 @@ class EmulatorJS { "3do": ["opera"], "psp": ["ppsspp"], "atari7800": ["prosystem"], - "snes": ["snes9x"], + "snes": ["snes9x", "bsnes"], "atari2600": ["stella2014"], "jaguar": ["virtualjaguar"], "segaSaturn": ["yabause"], @@ -1315,6 +1315,11 @@ class EmulatorJS { }, 0); }); this.addEventListener(window, "beforeunload", (e) => { + if (this.config.disableAutoUnload) { + e.preventDefault(); + e.returnValue = ""; + return + } if (!this.started) return; this.callEvent("exit"); }); @@ -2146,7 +2151,7 @@ class EmulatorJS { if (stateUrl) URL.revokeObjectURL(stateUrl); if (this.getSettingValue("save-state-location") === "browser" && this.saveInBrowserSupported()) { this.storage.states.put(this.getBaseFileName() + ".state", state); - this.displayMessage(this.localization("SAVE SAVED TO BROWSER")); + this.displayMessage(this.localization("SAVED STATE TO BROWSER")); } else { const blob = new Blob([state]); stateUrl = URL.createObjectURL(blob); @@ -2162,7 +2167,7 @@ class EmulatorJS { if (this.getSettingValue("save-state-location") === "browser" && this.saveInBrowserSupported()) { this.storage.states.get(this.getBaseFileName() + ".state").then(e => { this.gameManager.loadState(e); - this.displayMessage(this.localization("SAVE LOADED FROM BROWSER")); + this.displayMessage(this.localization("LOADED STATE FROM BROWSER")); }) } else { const file = await this.selectFile(); @@ -2864,7 +2869,7 @@ class EmulatorJS { { id: 17, label: this.localization("RIGHT D-PAD LEFT") }, { id: 16, label: this.localization("RIGHT D-PAD RIGHT") }, ]; - } else if (["segaCD", "sega32x"].includes(this.getControlScheme())) { + } else if (["segaMD", "segaCD", "sega32x"].includes(this.getControlScheme())) { buttons = [ { id: 1, label: this.localization("A") }, { id: 0, label: this.localization("B") }, @@ -3072,6 +3077,31 @@ class EmulatorJS { { id: 17, label: this.localization("STICK LEFT") }, { id: 16, label: this.localization("STICK RIGHT") }, ]; + } else if ("psx" === this.getControlScheme()) { + buttons = [ + { id: 9, label: this.localization("\u25B3") }, // △ + { id: 1, label: this.localization("\u25A1") }, // □ + { id: 0, label: this.localization("\uFF58") }, // x + { id: 8, label: this.localization("\u25CB") }, // ○ + { id: 2, label: this.localization("SELECT") }, + { id: 3, label: this.localization("START") }, + { id: 4, label: this.localization("UP") }, + { id: 5, label: this.localization("DOWN") }, + { id: 6, label: this.localization("LEFT") }, + { id: 7, label: this.localization("RIGHT") }, + { id: 10, label: this.localization("L1") }, + { id: 11, label: this.localization("R1") }, + { id: 12, label: this.localization("L2") }, + { id: 13, label: this.localization("R2") }, + { id: 19, label: this.localization("L STICK UP") }, + { id: 18, label: this.localization("L STICK DOWN") }, + { id: 17, label: this.localization("L STICK LEFT") }, + { id: 16, label: this.localization("L STICK RIGHT") }, + { id: 23, label: this.localization("R STICK UP") }, + { id: 22, label: this.localization("R STICK DOWN") }, + { id: 21, label: this.localization("R STICK LEFT") }, + { id: 20, label: this.localization("R STICK RIGHT") }, + ]; } else { buttons = [ { id: 0, label: this.localization("B") }, diff --git a/index.html b/index.html index fe3a3e2..ec020ea 100644 --- a/index.html +++ b/index.html @@ -170,6 +170,9 @@ if (["d64"].includes(ext)) return "vice_x64sc" + + if (["md", "sg", "smd", "gen"].includes(ext)) + return "segaMD" if (["nds", "gba", "gb", "z64", "n64"].includes(ext)) return ext @@ -205,9 +208,19 @@ "Commodore VIC20": "vice_xvic", "Commodore Plus/4": "vice_xplus4", "Commodore PET": "vice_xpet", - "DOSBOX-PURE": "dosbox_pure" + } + + if (enableThreads) { + coreValues["DOSBOX-PURE"] = "dosbox_pure"; + coreValues["PlayStation Portable"] = "ppsspp"; } + for (let core in coreValues) { + if (core.toLowerCase() === ext) { + resolve(core) + } + } + const cores = Object.keys(coreValues).sort().reduce( (obj, key) => { obj[key] = coreValues[key];