The Nintendo Entertainment System

The NES development community in 2024 has standardized on the sophisticated ca65 assembler for major homebrew projects, but Ophis's simpler output model has advantages of its own. A skeletal nes.oph file is provided in the platform support directory, but most NES code you'll find in the wild doesn't use aliases for control registers at all—it just sticks with the register numbers.

Creating output files that emulators or other tools will recognize as complete NES programs is somewhat involved. Any given product was generally one of a large selection of circuit boards with several ROM or support-logic chips affixed to it. These circuit board configurations are generally referred to as "mappers" by developers because their effect is to implement various bankswitching schemes. The result is a program built out of parts, each with its own origin. A simple "Hello World" sample program ships with Ophis. It is configured to use "Mapper Zero", or a simulation of the "NROM" circuit board, which had no special bankswitching logic and simply wired the program chip and the graphics chip directly into the address bus. The sample code includes one source file for each chip, and then two wrapper files to knit them together into a file that other software will recognize. As of 2024, the UNIF format is entirely abandoned in favor of the backwards-compatible iNES 2.0 format.