Explore Ebooks
Categories
Explore Audiobooks
Categories
Explore Magazines
Categories
Explore Documents
Categories
Sunday, January 1, 12
Motivation?
Sunday, January 1, 12
What to expect?
Sunday, January 1, 12
Sunday, January 1, 12
Abbreviations
Sunday, January 1, 12
SFC
Super Famicom Super Family Computer Super Nintendo Entertainment System Super home video computer
Super Nintendo
Sunday, January 1, 12
16-bit video game console based on the WDC 65816 processor Successor of successful 8-bit Nintendo Entertainment System Cartridge based system Dedicated video chips Audio co-processor Released November1990 50 Million units sold 785 Games released Last commercial successful 2d only gaming system
Super Famicom
Super Family Computer (SFC) Japan version Release November 1990 NTSC / 60Hz CIC chip
Sunday, January 1, 12
Super Nintendo
North America version Release August 1991 NTSC / 60 Hz CIC chip New cartridge slot format
Sunday, January 1, 12
Super Nintendo
Europe Version Release April 1992 PAL / 50 Hz New CIC Chip
Sunday, January 1, 12
Comparison
SNES Year Price Cpu Gfx Storage 1990 Amiga Genesis 500 1988 1987 3DO 1993 $700 PSX 1994 599DM
329DM 295DM 900DM 65816 2 PPU 8MB 68000 VDP 4MB 68000 OCS 1.4MB
700MB 700MB
Sunday, January 1, 12
Games
Sunday, January 1, 12
Games
785 ofcial games released Commercial phase 1990 - 1995 Last game in Japan: Metal Slader Glory (2001) Capacity constraints multimedia content JAP, USA & EU Cartridges
50/60 Hz Version
Sunday, January 1, 12
F-Zero
Sunday, January 1, 12
Donkey Country
Sunday, January 1, 12
Yoshis Island
Sunday, January 1, 12
License
3rd party producer are welcome Exclusive releases Lockout chip CIC Cartridges sold for $70 Nintendo charged ~$20 for 8Mbit
cartridge
Sunday, January 1, 12
Approval
Sunday, January 1, 12
Quality assurance Market control Avoid Atari problem (E.T.) No explicit content Limited game genres
Hardware
WDC 65C816 CPU - Nintendo 5A22
24Bit A-Bus to RAM and ROM 8Bit B-Bus to subsystems Co-processor APU with 64KB RAM 2 PPU for graphics with 32KB video RAM each 128KB work RAM 8 DMA Channels No IPL or BIOS starts from reset vector in ROM area SPC has IPL
Sunday, January 1, 12
Mainboard
Sunday, January 1, 12
CPU
Mainboard
Sunday, January 1, 12
PPU
PPU
CPU
Mainboard
Sunday, January 1, 12
PPU
PPU
WRAM
CPU
Mainboard
Sunday, January 1, 12
VRAM
VRAM
PPU
PPU
WRAM
CPU
Mainboard
Sunday, January 1, 12
Sunday, January 1, 12
CPU
16Bit native mode 65C02 emulation mode Registers 8Bit or 16Bit
Sunday, January 1, 12
Sunday, January 1, 12
Sunday, January 1, 12
Ricoh 5A22
NMI on V-blank DMA for block transfers Only between A and B bus H-DMA (Scanline DMA) MMIO
Sunday, January 1, 12
PPU
Sunday, January 1, 12
Progressive mode 256 x 224 pixel HighRes 512 x 478 pixel 15Bit color depth 8 modes 128 sprites, 32 max. per scanline VRAM OAM CGRAM HDMA
Modes
Sunday, January 1, 12
Tiled mode
Bitmap mode Up to 4 layers / playelds Color add / subtract Rotate and zoom
Mode 7
128x128 Tiles Matrix transformations HDMA LUTs
Sunday, January 1, 12
APU
Sunday, January 1, 12
8Bit Sony SPC700 Sample use BBR compression 64KB Ram 8 x 16Bit Channels at 32 kHz Runs own code Independent system Bootstrapped by the main cpu
Cartridges
Nintendo licensed / manufactured 4 Mbit - 48 Mbit cartridges (256KB - 6MB) Mask ROM SRAM battery for savegames MAD chip (address decoding) CIC chip (security chip) Custom chips (graphics enhancement) Memory layouts
Sunday, January 1, 12
Cartridge SHVC-1A3B
Sunday, January 1, 12
Rom 4MBit
Cartridge SHVC-1A3B
Sunday, January 1, 12
CIC
Rom 4MBit
Cartridge SHVC-1A3B
Sunday, January 1, 12
MAD CIC
Rom 4MBit
Cartridge SHVC-1A3B
Sunday, January 1, 12
Rom 4MBit
Cartridge SHVC-1A3B
Sunday, January 1, 12
SRAM 64KB
Rom 4MBit
Cartridge SHVC-1A3B
Sunday, January 1, 12
Pinouts
LoRom 32KB pages HiRom 64KB pages A-Bus
24bit address bus (16MB address space) BA0-BA7 switch between 256 pages 8Bit databus ROM,CPU and WRAM
Sunday, January 1, 12
LoRom
Sunday, January 1, 12
LoRom
Sunday, January 1, 12
WRAM
LoRom
Sunday, January 1, 12
MMIO
LoRom
Sunday, January 1, 12
Rom
LoRom
Sunday, January 1, 12
Rom
LoRom
Sunday, January 1, 12
Rom
LoRom
Sunday, January 1, 12
HiRom
Sunday, January 1, 12
HiRom
Sunday, January 1, 12
WRAM
HiRom
Sunday, January 1, 12
MMIO
HiRom
Sunday, January 1, 12
Rom
HiRom
Sunday, January 1, 12
Rom
HiRom
Sunday, January 1, 12
Rom
HiRom
Sunday, January 1, 12
Custom Chips
GFX / Calculations
AI
Super Fx CX4 DSP 1 - 4 OBC-1 GB-Z80 MX15001TFC S-DD1 SPC7110 ST010 - ST018
Sunday, January 1, 12
DSP
Microcode version 1- 4 Vector calculations 2D/3D transformations Memory mapped IO
Sunday, January 1, 12
SA-1
Sunday, January 1, 12
WDC 65C816 CPU @ 10MHz Improved version of SNES CPU 256Byte IRAM CPU and DMA at the same time Memory mapping capabilities Mode CIC copy protection for PAL/NTSC Address space up to 64Mbit
SHVC-1L5B-11
Sunday, January 1, 12
SA 1
SHVC-1L5B-11
Sunday, January 1, 12
SRAM 256KB
SA 1
SHVC-1L5B-11
Sunday, January 1, 12
SRAM 256KB
SA 1
SHVC-1L5B-11
Sunday, January 1, 12
Super FX
Sunday, January 1, 12
RISC CPU @ 10MHz/21.4MHz Framebuffer plot opcodes Light source shading Sprite effects Memory mapped IO Software effects No 3D accelerator at all Clock problems Support for DRAM
Winter Gold
SHVC-1CB5B
Sunday, January 1, 12
Winter Gold
Super FX
SHVC-1CB5B
Sunday, January 1, 12
Winter Gold
SRAM 512KB
Super FX
SHVC-1CB5B
Sunday, January 1, 12
Winter Gold
SRAM 512KB ROM 16MBit
Super FX
SHVC-1CB5B
Sunday, January 1, 12
Winter Gold
SRAM 512KB ROM 16MBit
Super FX
CIC
SHVC-1CB5B
Sunday, January 1, 12
Lockout Chip
Key/- Lock System Chip in cartridge key Chip in system lock that controls the SNES reset line Run the same clock and same code Seeded Calculate and communicate over 2 wires Verify each others results CPU
Sunday, January 1, 12
Copy Protection
Generic SRAM protection Specic Copystation checks Import protections PPU ag PAL/NTSC video Copy protections of unlicensed cartridges
Sunday, January 1, 12
Addons
Sunday, January 1, 12
Satellaview
Online Service Satellite modem, unidirectional Japan only Broadcasted games and content could be downloaded On regular Satellite TV channel Store on 8 Mbit BX-S Flash modules Phoneline modem was planned, but never released
Sunday, January 1, 12
Ultra16
Boot menu for the SNES Support for all regions games 50/60 Hz switching via
software
Ultra16 Menu
Sunday, January 1, 12
Commercial Development
Mostly assembler Some games in asm and c Cross assembling on PC or Amiga Mostly self written tools Different ofcial Devkits (Intelligent Systems, Ricoh) Prototype cartridges
Flash EPROMS
Sunday, January 1, 12
psy-Q Devkit
Sunday, January 1, 12
Accolade Devkit
Sunday, January 1, 12
Unknown Devkit
Sunday, January 1, 12
Development System
Sunday, January 1, 12
Homebrew Development
Assemblers
C Compilers
SDKs
Sunday, January 1, 12
Copier Stations
Sunday, January 1, 12
Storage
3.5 Floppy 1.4MB Parallel port connector Boot / Game menu Save Games on oppies Custom chip and CIC piggybacks
Doctor SF7
Sunday, January 1, 12
Flash Cartridges
Storage Flash 16 - 64 MBit Parallel port USB SDCard
Sunday, January 1, 12
Mash Mod
Sunday, January 1, 12
Retrousb Powerpak
Sunday, January 1, 12
Emulation
Sunday, January 1, 12
ZSNES
ZSNES
Started 1998 Windows Intel OS X Linux A lot assembler code using nasm x86 only
Sunday, January 1, 12
Snes9x
Snes9x SNES96 pure C portable code
Sunday, January 1, 12
BSNES
BSNES Started 2005 Clean C++ code Windows / Linux / OS X SDL, QT Debugger
Sunday, January 1, 12
Scene
Sunday, January 1, 12
Homebrew
Very small ... By a magnitude smaller than PSP, NDS or WII community Extensive register-drivern graphics interface No real middleware nor libraries Resources
Sunday, January 1, 12
Warez Scene
Sunday, January 1, 12
Early demos use game music instead of own compositions Writing good audio drivers remain a challange for quite some time
Sunday, January 1, 12
Anthrox Mode7
Sunday, January 1, 12
Censor
Sunday, January 1, 12
Napalm
Sunday, January 1, 12
Paradox
Sunday, January 1, 12
Project Quickdev16
optixx, max and D4S Started around February 2009 Version 1 nished in September 2009 Version 2 still going ...
Sunday, January 1, 12
optixx.org
Sunday, January 1, 12
assembla.com/wiki/show/quickdev16
Sunday, January 1, 12
Proof of concept
Sunday, January 1, 12
Milestones
Rom memory layout Cartridge dumper Rom analysis SNES Memory map Documentations BSNES sources
Sunday, January 1, 12
Hardware
STK 500 512K SRAM ATmega16 SDCard Shift register, bus driver and a switch
Sunday, January 1, 12
Modied cartridge
Sunday, January 1, 12
Rom dumper
Sunday, January 1, 12
Multinorm cartridge
Sunday, January 1, 12
STK500
Sunday, January 1, 12
Memory
Sunday, January 1, 12
Sunday, January 1, 12
POC running
Sunday, January 1, 12
Mario!
Sunday, January 1, 12
Firmware
Slow SRAM interface Memory CRC checks Simple SD-Card routines Debug printfs via UART
Sunday, January 1, 12
Bugs
WR Line to CART Same game overwrote ROM Switch Situation Switch, plug and then power
Sunday, January 1, 12
Sunday, January 1, 12
Prototype
Sunday, January 1, 12
Hardware Design
Switching between AVR and SNES SRAM
access
Shift register to preload SRAM addresses Counter for fast SRAM address
increment
Sunday, January 1, 12
Prototype
PCB from PCB Pool ATmega 644 8 x 512K SRAM SIO FDTI for UART
Sunday, January 1, 12
Routing
Sunday, January 1, 12
Routing
Sunday, January 1, 12
PCB Pool
Sunday, January 1, 12
PCB Pool
Sunday, January 1, 12
Front
Sunday, January 1, 12
Back
Sunday, January 1, 12
SRAM
Sunday, January 1, 12
FTDI
Sunday, January 1, 12
AVR
Sunday, January 1, 12
Sunday, January 1, 12
Sunday, January 1, 12
PCB Pool
Good quality Extreme good support via email Delivered on time Pictures of each process step Expensive But worth the money
Sunday, January 1, 12
Problems overcome
Commercial just crashed Seemed to be audio related Wrote some test roms to trigger
problem
Sunday, January 1, 12
Sunday, January 1, 12
LA session powerup
Sunday, January 1, 12
Openbus 0x21
Sunday, January 1, 12
SPC reads 0x21 on B-Bus. Bus driver problem Our SRAM is permanently on the bus CS is not implemented HOTFIX: add an extra OR gate SRAM active when SNES CS low and AVR switch low
Hotx
Sunday, January 1, 12
Version 1
Reduce to 4 x 512K SRAM Kill FTDI to save space and money We call it Black PCBs
Sunday, January 1, 12
Front
Sunday, January 1, 12
Back
Sunday, January 1, 12
Seeedstudio
Sunday, January 1, 12
Seeedstudio PCB
Based Hong Kong Manufactured in China Good email support Fancy colors Free shaping Golden connector
Sunday, January 1, 12
Sunday, January 1, 12
Software
Sunday, January 1, 12
Firmware
USB Bootloader 4kb software V-USB Debug shell via uart
Sunday, January 1, 12
Ucon64
Opensource Supports a lot of copiers and ashcarts Added support for Quickdev16 Libusb based Windows, Linux & OS X support
Sunday, January 1, 12
Qdinc
Inital full rom upload Subsequent uploads are diff only Works with vanilla rmware
Sunday, January 1, 12
Loader 1
Part of the AVR rmware Used RLE compression HiRom WRAM trick Progress feedback via shared memory
Sunday, January 1, 12
Version 1
Sunday, January 1, 12
Loader 2
Use deate compression Progress bar via shared memory Polling of status register IRQ driven Rom info
Sunday, January 1, 12
Version 2
Sunday, January 1, 12
Size matters
mini Boot Code RAM Loader v1 Loader v2 4096 7532 344 31091 35726 debug 4096 24984 742 31091 35726
Sunday, January 1, 12
Loader crunching
Loader v1 Loader v1 RLE Loader v2 Loader v2 RLE Loader v2 deate 65536 31091 65536 58046 35726
Sunday, January 1, 12
Sunday, January 1, 12
More debugging
Sunday, January 1, 12
PCB Quality
First batch was faulty Soldermask was off Some pads had broken connections New batch of PCB for free
Sunday, January 1, 12
Seeedstudio
Sunday, January 1, 12
Seeedstudio
Sunday, January 1, 12
Production
Sunday, January 1, 12
Sunday, January 1, 12
Sunday, January 1, 12
Sunday, January 1, 12
Sunday, January 1, 12
Sunday, January 1, 12
Sunday, January 1, 12
Sunday, January 1, 12
Hack a day
Version 2
Sunday, January 1, 12
Wishlist
Sunday, January 1, 12
CPLD or FPGA Native and fast USB JTAG Custom chip support Time multiplexed bus sharing Memory pattern triggers
Prototype 2
Sunday, January 1, 12
Hardware
Sunday, January 1, 12
AT90USB1287
Xilinx CPLD xc95144xl Cypress 16Mbit SRAM AVR JTAG CPLD JTAG
CPLD
Sunday, January 1, 12
Lost in Verilog
Sunday, January 1, 12