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 Registers (ikari_01)

BS-X MCC registers
There are 16 1-bit regis ...

ASM Hacking for Dummies

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 65c816 ROM hacking. Hopefully this proves true. If you benefit from this document or have suggestions for changes to make to it, please eMai ...

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 Mbit ROM. Look at the comments beside each line for a brief explanation of that line. I will provide a better explanation after reveali ...

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 making minor modifications to its mapping scheme.

Memory Mapping

The SNES has a 24-bit a ...

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 "GAME DOCTOR SF 3"

This is the ID string for a Game Doctor SF header.


SRA ...

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

# Physical areas of memory
# Names need not match, but it makes it easier to remember if they do ...

BS-X Satellaview Header

The header will be at 0x7xxx (for LoROM) or 0xFxxx (for HiROM) for the downloaded content. There may be more than one in a single Memory Pack.

xFB0-xFB1 = Licensee / Maker Code
xFB2-xFB5 = Program Type
xFB6-xFBF = Reserved
xFC0-xFCF = Title
xFD0-xFD3 = Block Allocation Flags
xFD4-xFD5 = Limited Starts
xFD6      = Date - Month
xFD7      = Date - Day


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 done this in a LoROM model so this is what I'm going to teach for now. We'll cover HiROM some other tim ...

Memory Pack Game Support

A few games on Super Famicom supports Memory Pack and Satellaview content.


Derby Stallion 96

Check for Additional Content

Joushou Mahjong Tenpai

Memory Pack can be accessed through the 3rd menu from the top and left.

Check for Additional Content

Content must be at the start of Memory Pack, must be HiROM and 4M.

Schematics, Ports, and Pinouts

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 so forth all mean the same thing. Note that "1" does not necessarily correspond to either high or low voltage. (BTW, i could use some help here: if anyone know ...