ASM Hacking for Dummies
This document was written for the aspiring ROM hacker with little to no experience in 65c816 programming.
This document was written for the aspiring ROM hacker with little to no experience in 65c816 programming.
So... you want to make a block that freezes Mario only when he's small?
Are you familiar with all the previous lessons yet? If so, that's great.. with all of that knowledge, you can do a lot of cool stuff - but you can always get better at ASM and make awesome stuff by learning more. So here's Part 2 of the tutorial, which for now only explains a bit of intermediate stuff. Don't worry, everything will be explained easily.
So... you know ...
Ascii pinout of the audio PSRAM chips
BS-X Formats
BS-X MMIO
This page contains the RAM Map of the BS-X.
$7E00AC - BS-X Token Interpreter Current Address (24-bit)
$7E0725 - Text Settings
$7E13C5 - Error Number
$7E1427 - Copy Type
$7E1430 - Current Month
$7E1431 - Current Day
$7E1432 - Data Type
$7E1433 - Seconds before timeout
$7E1437 - Ticks before timeout
$7E1C00:$7E1E20 - ...
SRAM Map of BS-X
Basic ca65 Usage for SNES Programming
A DSP chip from Capcom; it is actually a Hitachi HG51B169 as confirmed by decapping. There are 1024K words of 24-bit instructions, running as 20.000MHz. and it is used in 2 games:
Below is a decompressor and recompressor for GD Leen. This has been updated to compile with GCC, below that is the original unmodified file.
//------------------------------------------------//
// Decompressor and Recompressor: GDLeen ver 1.0 //
// //
// Coded By: John C. (Bongo`) ...
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):
0000-000F
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.
0010
SRA ...
The most important thing to know about 65816 optimizations is to not try to emulate other CPU architectures. A lot of games (games with a lot of slowdown) have this programming style where the programmer pretends that a couple memory locations are 68000 registers or high-level local variables, and the accumulator is only there as an operand buffer. Please avoid this style of programming. It is
DMA can move data from ROM/WRAM->VRAM/CGRAM/OAM or ROM->WRAM. You can also use HDMA to modify per each line, this shows you how.
How-to-use-rom-patches
Tutorial on writing to DSPRAM without any SPC700 code
for C/C++ developers learning 65x
ID666 γγ©γΌγγγ
Fix grammar
<Seru-kun> Anyway, want to see a working Satellaview homebrew on video ? <Kiddo> Sure, although the ROM'd probably be quicker. <Seru-kun> http://www.youtube.com/watch?v=3zDirQXD8Cw -Seru-kun- DCC Send SatellaviewTest2Working.rar (82.249.178.174)
Aceman2000's Tic-Tac-Toe tutorial
Nintendo Music Format (N-SPC) player is a common SPC player included in many SNES games.
Why a ROM might not be 4, 8, 16, or 32 Mbit, and how it appears in address space
Old BBS Messages related to SNES or Programming
a
bazz's controller input tutorial
LoROM and HiROM can run at Slow(2.58mhz) or Fast(3.58mhz), this show hows to make you LoROM project us FastROM and run at 3.58mhz.
The SA-1 is a coprocessor capable of running at four times the base speed of the SNES main CPU when access does not conflict with that of SNES CPU, DMA or HDMA processing. It provides additional shared RAM, visible to both the SNES CPU and the SA-1, and optionally backed up by battery referred to as BW-RAM with a maximum install RAM size of 256 KB (2 Mbit).
SA-1 Co-Processor Registers
Sprites are important to every game.
Introduction to SNES Reverse Engineering
SPC is an audio format for playing native SNES audio.
SPC7110 Decompression Chip
Satellaview Index
Satellaview Download Data
This is a document intended to describe the various hardware ports on the SNES.
Seiken Densetsu 2 / Secret of Mana
Offsets refer to the US version of the ROM.
Offset 0x33F82
contains a table of pointers to level and cutscene headers. Each entry in the table is 4 b ...
Number of cycles each SuperFX instruction takes depending on where it is run from
03451
- 0346E
21D4A
- 21D67
21D68
- 21D85
4F4E2
- 4F4FF
Palette for Arthur (gray armor, boxer shorts and skeleton after death), lance weapon he starts the game with, and part of the color rotation for most ite ...
Community eratta for the offical documentation from Nintendo
SuperDisc Memory Map
Once you've programmed a game or other bit of data for SNES, you'll probably want to try to, well, test it.
Although for most software these choices are, mostly, about preference. Most games which require Expansion Chips other than the DSP-1 may require less than favorable methods of testing (either emulation or reproduction cartridge).
...
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.
The SNES has a 24-bit a ...
Transferring Data from ROM to the SNES APU The method of transferring data to the sound module of the SNES is a bit screwy, but it works. I've read many docs, looked at a lot of code, and nothing I've seen seems to explain the method to this madness in a straightforward way. I'm hoping I can shed some light on the matter.
During the transfer process, the following ports apply:
$2140 = ...
Widespread Programming Myths, These are myths that frequently show up that mislead people into writing bad code based on false perception of what the system actually does.
Fixed typo
Text compression used in Dragon View (Drakkhen II)
Below is an example of using Xkas to patch an existing game. The game is Super Mario World and the patch was coded by Videogamer555, you can also view the original thread.
Firstly you need the SMW ROM without a header, and should expand the ROM ...