WebAssembly (WASM-4)¶
Background¶
WASM-4 is a low-level fantasy game console for building small games with WebAssembly. Game cartridges (ROMs) are small, self-contained .wasm files that can be built with any programming language that compiles to WebAssembly.
The WASM-4 core have been authored by
- aduros (Bruno Garcia)
The WASM-4 core is licensed under
A summary of the licenses behind RetroArch and its cores can be found here.
- No Glue Code: If you've ever tried to write even a simple "Hello World" with WebAssembly before, you'll know it usually involves writing a bunch of JS and HTML glue. WASM-4 removes all of that, games interface directly with the system through a small API.
- Minimalist: Fantasy consoles force developers to work with limited resources. This makes them simple to learn, and easier to focus on finishing your game.
- Language Agnostic: Use any programming language, as long as it can compile to WebAssembly. Out of the box we currently support: AssemblyScript, C/C++, Rust, Go, D, Nim, Odin, Zig.
- Portable: WASM-4 is designed to run on any device that can execute WebAssembly, even outside of the web! We're planning a lightweight implementation written in C that will run even on a potato.
Extensions¶
Content that can be loaded by the WASM-4 core have the following file extensions:
- .wasm
Databases¶
RetroArch database(s) that are associated with the WASM-4 core:
BIOS¶
WASM-4 does not require BIOS (bootrom) files to work.
Features¶
| Feature | Supported |
|---|---|
| Restart | ✔ |
| Screenshots | ✔ |
| Saves | ✔ |
| States | ✔ |
| Rewind | ✔ |
| Netplay | ✔ |
| Core Options | ✕ |
| Memory Monitoring (achievements) | ✕ |
| RetroArch Cheats | ✕ |
| Native Cheats | ✕ |
| Controls | ✔ |
| Remapping | ✔ |
| Multi-Mouse | ✕ |
| Rumble | ✕ |
| Sensors | ✕ |
| Camera | ✕ |
| Location | ✕ |
| Subsystem | ✕ |
| Softpatching | ✕ |
| Disk Control | ✕ |
| Username | ✕ |
| Crop Overscan (in RetroArch's Video settings) | ✕ |
Directories¶
The WASM-4 core's doesn't create any directory.
Core provided aspect ratio¶
WASM-4's core provided aspect ratio is 1/1.
Core options¶
The WASM-4 core's doesn't have any Core Options.
Controllers¶
Device types¶
The WASM-4 core supports the following device type(s) in the controls menu, bolded device types are the default for the specified user(s):
User 1 - 1 device types¶
- None - Input disabled.
- RetroPad - Joypad
- RetroPad w/Analog - Joypad - There is no reason to switch to this.
Controller tables¶
Joypad and analog device type table¶
| RetroPad Inputs | User 1 - 5 input descriptors |
|---|---|
![]() |
Z |
![]() |
X |
![]() |
D-Pad Up |
![]() |
D-Pad Down |
![]() |
D-Pad Left |
![]() |
D-Pad Right |





