{"id":26020998,"url":"https://github.com/lrusso/emulatrix","last_synced_at":"2025-05-16T01:06:40.022Z","repository":{"id":37342780,"uuid":"143583841","full_name":"lrusso/Emulatrix","owner":"lrusso","description":"Emulatrix - JavaScript and WebAssembly Emulator - Sega Genesis, Nintendo, Super Nintendo, GameBoy, GameBoy Color, GameBoy Advance, MAME32, DOSBox and Virtual Machines","archived":false,"fork":false,"pushed_at":"2025-03-06T09:55:36.000Z","size":82361,"stargazers_count":331,"open_issues_count":0,"forks_count":128,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-13T10:08:03.222Z","etag":null,"topics":["advance","arcade","boy","color","dos","dosbox","emulator","game","gameboy","genesis","javascript","nintendo","online","sega","snes","super","web","webassembly"],"latest_commit_sha":null,"homepage":"https://www.emulatrix.com","language":"HTML","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lrusso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-08-05T04:43:20.000Z","updated_at":"2025-04-07T21:58:20.000Z","dependencies_parsed_at":"2025-04-13T07:42:11.112Z","dependency_job_id":null,"html_url":"https://github.com/lrusso/Emulatrix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lrusso%2FEmulatrix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lrusso%2FEmulatrix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lrusso%2FEmulatrix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lrusso%2FEmulatrix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lrusso","download_url":"https://codeload.github.com/lrusso/Emulatrix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254448579,"owners_count":22072764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advance","arcade","boy","color","dos","dosbox","emulator","game","gameboy","genesis","javascript","nintendo","online","sega","snes","super","web","webassembly"],"created_at":"2025-03-06T08:32:53.242Z","updated_at":"2025-05-16T01:06:35.013Z","avatar_url":"https://github.com/lrusso.png","language":"HTML","readme":"# Emulatrix\n\nJavaScript and WebAssembly Emulator - Sega Genesis, Nintendo, Super Nintendo, GameBoy, GameBoy Color, GameBoy Advance, MAME32, DOSBox and Virtual Machines.\n\n![alt screenshot](https://raw.githubusercontent.com/lrusso/Emulatrix/master/Emulatrix1.png)\n\n## Web\n\nhttps://www.emulatrix.com\n\n## How does it work?\n\nIt's a Web project that is 50% in JavaScript and 50% in WebAssembly. It uses the HTML5 File API for reading a file from the computer, so the End User must select the ROM file from his computer. After that, it uses BrowserFS, which creates a virtual filesystem on the client side where the ROM file is uploaded. When using the DOS emulator, there is a Web File Manager that allows the End User to upload and download files to/from that virtual filesystem. The emulators are in WebAssembly and the content is rendered on a Canvas and for audio it uses an AudioContext. There is a JavaScript logic that handles the AudioContext (for mute/unmute) and another logic for pausing and resuming the emulation when the window is on blur or on focus.\n\n## IMPORTANT - After clicking on the upload icon\n\n| PLATFORM  | HOW TO PLAY A GAME?  | FILE FORMAT |\n| :------------ |:---------------:| :-----:|\n| Nintendo | Select the game file from your device. | NES |\n| Super Nintendo | Select the game file from your device. | SMC, SFC, SRM |\n| GameBoy | Select the game file from your device. | GB |\n| GameBoy Color | Select the game file from your device. | GBC |\n| GameBoy Advance | Select the game file from your device. | GBA |\n| Sega Genesis | Select the game file from your device. | BIN, SMD, MD |\n| MAME32 | Select the game file from your device. | ZIP |\n| DOS | Select the game file from your device. | ZIP |\n| Virtual Machines | Select the disk file from your device. | ZIP |\n\n- When running DOS, Emulatrix will try to run ```AUTORUN.BAT``` from the ZIP file after booting.\n- Regarding virtual machines, the ZIP file must contain a ```c.img``` file that will be mounted and booted.\n\n## DOSBox useful commands\n\n| TYPE IN THE PROMPT  | RESULT  |\n| :------------ |:---------------:|\n| mount d . -t cdrom | Mounting a path as a CD-ROM |\n| imgmount d cd1.cue cd2.cue -t cdrom | Mounting two CD-ROM images |\n| config -set \"cycles=4000\" | Default emulation speed |\n| config -set \"cycles=10000\" | Faster emulation speed |\n| config -set \"cycles=15000\" | Faster emulation speed |\n| config -set \"cycles=20000\" | Fastest emulation speed |\n| config -set \"sbtype=none\" | Sound Blaster disabled |\n| pkzip folder.zip c:\\myfolder\\\\*.\\* -rp | Creates folder.zip with myfolder content |\n\n- For switching CD-ROM images you must press ```Ctrl+F4``` (Windows) or ```Fn + Control + Option + F4``` (Mac). This also can be used for refreshing the filesystem after uploading a file.\n\n## Original core files\n\n| PLATFORM  | URL  | CORE\n| :------------ |:---------------:| :-----:|\n| Nintendo | https://buildbot.libretro.com/stable | fceumm\n| Super Nintendo | https://buildbot.libretro.com/stable | snes9x2010\n| GameBoy | https://buildbot.libretro.com/stable | gambatte\n| GameBoy Color | https://buildbot.libretro.com/stable | gambatte\n| GameBoy Advance | https://buildbot.libretro.com/stable | vba_next\n| Sega Genesis | https://buildbot.libretro.com/stable | genesis_plus_gx\n| MAME32 | https://buildbot.libretro.com/stable | mame2003_plus\n| MAME32 | https://buildbot.libretro.com/stable | fbalpha2012\n| DOS | https://github.com/dreamlayers/em-dosbox | dosbox\n\n## Core files modifications\n\n| PLATFORM  | TYPE  | DETAILS |\n| :------------ |:--------------- |:---------------|\n| Libretro cores | Bugfix | Content resized to canvas |\n| Libretro cores | Bugfix | Delayed compilation workaround |\n| Libretro cores | Feature | Mute/unmute implementation |\n| Libretro cores | Feature | Load/save state implementation |\n| Libretro cores | Feature | Paused/resumed emulation on blur/focus |\n| DOSBox core | Bugfix | Launching emulator on blur |\n| DOSBox core | Bugfix | SimulateInfiniteLoop in 16 bits systems |\n| DOSBox core | Bugfix | Removed black margin when trying fullscreen |\n| DOSBox core | Feature | PKZip implementation |\n| DOSBox core | Feature | Mute/unmute implementation |\n| DOSBox core | Feature | Load/save file implementation |\n| DOSBox core | Feature | Paused/resumed emulation on blur/focus |\n\n## MAME 2003 Plus notes:\n\n- Playing Killer Instinct: Create a zip file named ```kinst-chd.zip``` that must contain ```kinst.zip``` and ```kinst.chd```. Emulatrix will unzip those files in order to run the game (takes several seconds).\n- Saving and loading states: In some games (Killer Instinct, Mortal Kombat 1, 2 and Ultimate) the saving function doesn't work (core issue).\n\n## Final Burn Alpha 2012 note:\n\n- Playing Samurai Shodown III: You must use the ```samsho3h.zip``` file.\n\n## Emulatrix has mobile compatibility (Android only)\n\n![alt screenshot](https://raw.githubusercontent.com/lrusso/Emulatrix/master/Emulatrix2.png)\n\n## Playing Emulatrix on Android with a USB Keyboard:\n\nPress ```C``` on the Main Menu in order to enable or disable the mobile controls.\n\n## Virtual joystick code\n\nhttps://github.com/lrusso/VirtualJoystick\n\n## Banner generators\n\nhttps://www.emulatrix.com/Banner1.htm\n\nhttps://www.emulatrix.com/Banner2.htm\n\nhttps://www.emulatrix.com/Banner3.htm\n\nhttps://www.emulatrix.com/Banner4.htm\n\nhttps://www.emulatrix.com/Banner5.htm\n\nhttps://www.emulatrix.com/Banner6.htm\n\nhttps://www.emulatrix.com/BannerTitle.htm\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flrusso%2Femulatrix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flrusso%2Femulatrix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flrusso%2Femulatrix/lists"}