A template and (hopefully) useful routines for porting NES games to the SNES
- cc65 - the 65c816 compiler and linker
- Mesen2 - A fantastic emulator for development on a bunch of platforms
- HxD - A Hex Editor
- Visual Studio Code - Used as the development environment
-
bankX.asm
- The NES memory PRG banks, there are 8 of them. This code is heavily edited/altered for the port -
chrom-tiles-X.asm
- The NES CHR ROM banks, also 8 of them. These are untouched aside from converting them to the SNES tile format that we use. The go script takes care of that for you. -
2a03_xxxxx.asm
- Sound emulation related code -
bank-snes.asm
- All the code that runs in theA0
bank, this is where we put most of our routines and logic that we need that is SNES specific. Also includes various included asm files:attributes.asm
- dealing with tile and sprite attributeshardware-status-switches.asm
- various useful methods to handle differences in hardware registershud-hdma.asm
- HDMA logic for the player health bars and names to be shownintro_screen.asm
- Title card that is shown at the start of the gamepalette_lookup.asm
andpalette_updates.asm
- palette logicsprites.asm
- sprite conversion and DMA'ing
-
main.asm
- the main file, root for the project -
vars.inc
,registers.inc
,macros.inc
- helpful includes -
resetvector.asm
- the reset vector code -
hirom.cfg
- defines how our ROM is laid out, where each bank lives and how large they are
- Update the
build.sh
file with the location of your cc65 install - make sure you've extracted and copied the rom banks to
/src
- port all the changes you need to port! (magic)
- run
build.sh
- The output will be in
out/