JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 13
  • Score
    100M100P100Q53590F
  • License ISC

Build retro games using WebAssembly for a fantasy console.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (wasm4) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme


    WASM-4 Logo
    WASM-4

    Build retro games using WebAssembly for a fantasy console

    WebsiteShowcaseDocsDiscussions

    About

    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.

    Key Features

    • 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++, D, Go, Nelua, Nim, Odin, Rust, WAT, and Zig.

    • Portable: WASM-4 is designed to run on any device that can execute WebAssembly, even outside of the web! It includes a lightweight runtime written in C that runs even low-powered microcontrollers and obsolete hardware.

    • Netplay: Instant online multiplayer, featuring rollback netcode. All games that support local multiplayer automatically support netplay. WASM-4 handles syncing controller inputs over the Internet.

    🚀 60 Second Quickstart

    # Install the w4 command
    npm install -g wasm4
    
    # Create a project
    w4 new --assemblyscript hello-world
    
    # Setup toolchain
    cd hello-world
    npm install
    
    # Build and run your game!
    npm run build
    w4 run build/cart.wasm

    For more info and guides, check the full documentation.

    🎮 Hardware Specs

    • Display: 160x160 pixels, 4 customizable colors, updated at 60 Hz.
    • Memory: 64 KB linear RAM, memory-mapped I/O, save states.
    • Cartridge Size Limit: 64 KB.
    • Input: Keyboard, mouse, touchscreen, up to 4 gamepads.
    • Audio: 2 pulse wave channels, 1 triangle wave channel, 1 noise channel.
    • Disk Storage: 1024 bytes.

    🙏 Contributing

    Contributions are welcome! Here are just a few ways to help:

    • Build a game or experiment, we'll feature it on wasm4.org!
    • Improve our documentation or write a tutorial.
    • Submit a bug report or feature request on Github.
    • Answer questions on the discussions forum.
    • Implement support for a new tool or language.
    • Give the project a star on Github for visibility.