Skip to content

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
RetroAchievements
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