Programming with FastROM

So far all of our programs have been using a SlowROM model. However, ROM access can be increased from 2.56Mhz to 3.58Mhz. There is more to it than just telling the SNES to run faster though.

There are several steps involved in getting your rom to work correctly with FastROM enabled. I've only don ...

Writing the Header

[[!redirects Writing the Header]] Before writing your actual program's code, you need a header to describe WLA the SNES' memorymap. This is basically just a file you will include into your source. It contains all of the basic information about your ROM. The following is a basic header file for a 2 ...

Basic ca65 Usage for SNES Programming

Basic ca65 Usage for SNES Programming

First Example

The first example is a minimal example of setting up the ROM header, vectors, etc.


ca65 ca65.s
ld65 -C lorom128.cfg -o ca65.smc ca65.o


# ca65 linker config for 128K SMC

Tototek Flash Cart

Super Flash Cart 64M for NTSC/PAL SNES

The Super Flash Cart 64M (SFC) is an 8MB SNES cartridge with flash memory and battery RAM. It comes with a separate programmer. I obtained the following information by hot-swapping the cartridge into an already-powered SNES running probing programs, and ...

ASM Hacking for Dummies

[[!include asm_hacking_sidebar]]

Introduction ### {: #introduction}

This document was written for the aspiring ROM hacker with little to no experience in 65c816 programming. The basics have been thoroughly covered and I believe this should prove a significant aid to anyone interested in 65c8 ...

BS-X Satellaview Header

The header will be at 0x7xxx (for LoROM) or 0xFxxx (for HiROM).

xFB0-xFB1 = ID
xFB2      = ?? Unknown, gets compared to 0001
xFC0-xFCF = Title
xFD0-xFD3 = Block Allocation flags (for 32 blocks of 128Kbytes each bit, 32Mbits max)
xFD4-xFD5 = Limited Starts
xFD6     ...

Memory Mapping

[[!redirects SNES Memory Mapping]] [[!redirects SNES Memory Map]] [[!redirects LoROM]] [[!redirects HiROM]] This is a document intended to describe the SNES memory map. It will NOT include information on the MAD-1 or any other address decoder.


The SNES has one 8-bit data b ...


The BS-X cartridge has a MMIO included in Memory 00-0f:5000. (Info taken from bsnes and sd2snes' verilog source)

They all do different things to the Memory, and is NECESSARY, to run games, and other stuff.

We will call them from r00 to r0f. Those have only one bit that can be set.

MCC ...

Game Doctor

Bung Game Doctor SF3, SF6, SF7 Headers

Version 1.0 - Copyright 2003: The Dumper

The Game Doctor SF3/SF6/SF7 backup units for the SNES use a 512 byte header.

The format is as follows (all numbers are hexadecimal):


`47 41 4D 45 20 44 4F 43 54 4F 52 20 53 46 20 33 ...

How to Write to DSP Registers Without any SPC-700 Code

How to Write to DSP Registers Without any SPC-700 Code


ca65 manual_dsp.s
ld65 -C lorom128.cfg -o manual_dsp.smc manual_dsp.o


# ca65 linker config for 128K SMC

# Physical areas of memory
# Names need not match, but it makes it  ...

Schematics, Ports, and Pinouts

[[!redirects Ports & Pinouts]] [[!redirects SNES Ports]] This is a document intended to describe the various hardware ports on the SNES. It will not describe how these ports are used by what may be plugged into them.

In the doc below, "active", "1", "logic-1", and ...