Famicom Macro Assembler
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
src
.babelrc
.gitignore
.npmignore
LICENSE.md
README.adoc
package-lock.json
package.json

README.adoc

FMA

FMA (famicom macro assembler) is a new multi platform cross assembler, mainly used for SNES development.

FMA speeds up development by adding lots of macro features, utilities and improved readability to your project. It allows you to write games in a ruby like syntax, but still keep full control over your application.

Warning
This project is still in the very, very alpha version! Core features might change without any backwards compatibility.

Features

  • Ruby like syntax for assembler projects

  • Manage code in modules, macros and classes

  • Auto generated locations for variables

  • Memory ranges can be reused for other variables

  • Automatically keeps track about size of A, X and Y registers

  • Pass numbers, strings or even registers to macros

  • Other assemblers can be implemented, even if they have totally different opcodes

Installing

To use FMA from command line you need to install the fma-cli package. This package is only used for JavaScript integrations of FMA.

For a detailed introduction on how to write an application, see the fma-snes package.

However, if you want to install this package as node module, you can simply install it using npm:

npm install fma

Documentation

The current documentation can be found here:

Targets

Currently there is only one target supported for FMA, but feel free to implement your own one.

Code example

Simple example of macro usage:

module SNES
  macro set_screen_brightness(brightness, enabled=true)
    LDA   #brightness | (enabled ? 0 : $80) unless brightness.A?
    STA   $2100
  end
end

def main
  SNES.set_screen_brightness enabled: false

  do_initialize_stuff

  LDA   #0
loop:
  SNES.set_screen_brightness A
  do_something
  INA
  CMP   #16
  BNE   loop

  do_something_else
end

License

FMA is licensed with the MIT license. Author: Benjamin Schulte