+ All Categories
Home > Documents > Quick Dev

Quick Dev

Date post: 18-Dec-2014
Category:
Upload: optixx
View: 120 times
Download: 8 times
Share this document with a friend
Description:
A brief overview of the Super Nintendo
Popular Tags:
181
Quickdev16 & Super Nintendo David Voswinkel [email protected] Matthias Nagler [email protected]> Sunday, January 1, 12
Transcript
Page 2: Quick Dev

Motivation?

Sunday, January 1, 12

Page 3: Quick Dev

What to expect?

Sunday, January 1, 12

Page 4: Quick Dev

The Super Nintendo

Sunday, January 1, 12

Page 5: Quick Dev

• SFC

• Super Famicom

• Super Family Computer

• SNES

• Super Nintendo Entertainment System

• Product code SHVC

• Super home video computer

Abbreviations

Sunday, January 1, 12

Page 6: Quick Dev

Super Nintendo• 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

Sunday, January 1, 12

Page 7: Quick Dev

Super Famicom• Super Family Computer (SFC)

• Japan version

• Release November 1990

• NTSC / 60Hz

• CIC chip

Sunday, January 1, 12

Page 8: Quick Dev

Super Nintendo• North America version

• Release August 1991

• NTSC / 60 Hz

• CIC chip

• New cartridge slot format

Sunday, January 1, 12

Page 9: Quick Dev

Super Nintendo• Europe Version

• Release April 1992

• PAL / 50 Hz

• New CIC Chip

Sunday, January 1, 12

Page 10: Quick Dev

ComparisonSNES Genesis Amiga

5003DO PSX

Year 1990 1988 1987 1993 1994

Price 329DM 295DM 900DM $700 599DM

Cpu 65816 68000 68000 ARM60 R3000

Gfx 2 PPU VDP OCS x GPU

Storage 8MB 4MB 1.4MB 700MB 700MB

Sunday, January 1, 12

Page 11: Quick Dev

Games

Sunday, January 1, 12

Page 12: Quick Dev

Games• 785 official games released

• Commercial phase 1990 - 1995

• Last game in Japan: Metal Slader Glory (2001)

• Capacity constraints multimedia content

• JAP, USA & EU Cartridges

• Package design

• 50/60 Hz Version

• CIC Lockout chip

Sunday, January 1, 12

Page 13: Quick Dev

Super Mario WorldSunday, January 1, 12

Page 14: Quick Dev

F-ZeroSunday, January 1, 12

Page 15: Quick Dev

Super Mario KartSunday, January 1, 12

Page 16: Quick Dev

Donkey CountrySunday, January 1, 12

Page 17: Quick Dev

Yoshis IslandSunday, January 1, 12

Page 18: Quick Dev

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

Page 19: Quick Dev

Approval

• Long approval process

• Quality assurance

• Market control

• Avoid Atari problem (E.T.)

• No explicit content

• Full game play video

• Limited game genres

Sunday, January 1, 12

Page 20: Quick Dev

Hardware• WDC 65C816 CPU - Nintendo 5A22

• Successor of MOS 6502

• NTSC 3.57 MHz

• 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

Page 21: Quick Dev

MainboardSunday, January 1, 12

Page 22: Quick Dev

CPU

MainboardSunday, January 1, 12

Page 23: Quick Dev

CPU

PPUPPU

MainboardSunday, January 1, 12

Page 24: Quick Dev

CPU

PPUPPU

WR

AM

MainboardSunday, January 1, 12

Page 25: Quick Dev

CPU

PPUPPU

WR

AM

VRAM VRAM

MainboardSunday, January 1, 12

Page 26: Quick Dev

Sunday, January 1, 12

Page 27: Quick Dev

CPU

• 16Bit native mode

• 65C02 emulation mode

• Registers 8Bit or 16Bit

• Accumulator

• Stack pointer

• X and Y index registers

• Direct page and stack relative addressing modes

Sunday, January 1, 12

Page 28: Quick Dev

Sunday, January 1, 12

Page 29: Quick Dev

Sunday, January 1, 12

Page 30: Quick Dev

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

Page 31: Quick Dev

PPU• 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

Sunday, January 1, 12

Page 32: Quick Dev

Modes

• Tiled mode

• Flip horizontally

• Flip vertically

• Bitmap mode

• Up to 4 layers / playfields

• Color add / subtract

• Rotate and zoom

Sunday, January 1, 12

Page 33: Quick Dev

Mode 7

• 128x128 Tiles

• Matrix transformations

• HDMA

• LUTs

Sunday, January 1, 12

Page 34: Quick Dev

APU

• 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

Sunday, January 1, 12

Page 35: Quick Dev

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

• LoRom 32 KB pages

• HiRom 64 KB pages

Sunday, January 1, 12

Page 36: Quick Dev

Cartridge SHVC-1A3BSunday, January 1, 12

Page 37: Quick Dev

Cartridge SHVC-1A3B

Rom4MBit

Sunday, January 1, 12

Page 38: Quick Dev

Cartridge SHVC-1A3B

Rom4MBit

CIC

Sunday, January 1, 12

Page 39: Quick Dev

Cartridge SHVC-1A3B

Rom4MBit

CIC

MAD

Sunday, January 1, 12

Page 40: Quick Dev

Cartridge SHVC-1A3B

Rom4MBit

CIC

MAD

SRAM64KB

Sunday, January 1, 12

Page 41: Quick Dev

Cartridge SHVC-1A3B

Rom4MBit

CIC

MAD

SRAM64KBBat

Sunday, January 1, 12

Page 42: Quick Dev

• 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

• B-Bus

• 8bit address bus

• CPU, SPC and PPUs

Pinouts

Sunday, January 1, 12

Page 43: Quick Dev

LoRomSunday, January 1, 12

Page 44: Quick Dev

LoRomSunday, January 1, 12

Page 45: Quick Dev

WRAM

LoRomSunday, January 1, 12

Page 46: Quick Dev

MMIO

LoRomSunday, January 1, 12

Page 47: Quick Dev

LoRom

Rom

Sunday, January 1, 12

Page 48: Quick Dev

LoRom

Rom

Sunday, January 1, 12

Page 49: Quick Dev

LoRom

Rom

Sunday, January 1, 12

Page 50: Quick Dev

HiRomSunday, January 1, 12

Page 51: Quick Dev

HiRomSunday, January 1, 12

Page 52: Quick Dev

WRAM

HiRomSunday, January 1, 12

Page 53: Quick Dev

MMIO

HiRomSunday, January 1, 12

Page 54: Quick Dev

HiRom

Rom

Sunday, January 1, 12

Page 55: Quick Dev

HiRom

Rom

Sunday, January 1, 12

Page 56: Quick Dev

HiRom

Rom

Sunday, January 1, 12

Page 57: Quick Dev

Custom Chips• GFX / Calculations

• Super Fx

• CX4

• DSP 1 - 4

• OBC-1

• Gameboy

• GB-Z80

• Flash Rom

• MX15001TFC

• Decompression

• S-DD1

• SPC7110

• AI

• ST010 - ST018

Sunday, January 1, 12

Page 58: Quick Dev

DSP

• Microcode version 1- 4

• Vector calculations

• 2D/3D transformations

• Memory mapped IO

Sunday, January 1, 12

Page 59: Quick Dev

SA-1

• 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

Sunday, January 1, 12

Page 60: Quick Dev

Super Mario RPG

SHVC-1L5B-11Sunday, January 1, 12

Page 61: Quick Dev

Super Mario RPG

SHVC-1L5B-11

SA 1

Sunday, January 1, 12

Page 62: Quick Dev

Super Mario RPG

SHVC-1L5B-11

SA 1SRAM256KB

Sunday, January 1, 12

Page 63: Quick Dev

Super Mario RPG

SHVC-1L5B-11

SA 1SRAM256KB

ROM32MBit

Sunday, January 1, 12

Page 64: Quick Dev

Super FX

• 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

Sunday, January 1, 12

Page 65: Quick Dev

Winter Gold

SHVC-1CB5BSunday, January 1, 12

Page 66: Quick Dev

Winter Gold

SHVC-1CB5B

SuperFX

Sunday, January 1, 12

Page 67: Quick Dev

Winter Gold

SHVC-1CB5B

SuperFX

SRAM512KB

Sunday, January 1, 12

Page 68: Quick Dev

Winter Gold

SHVC-1CB5B

SuperFX

SRAM512KB

ROM16MBit

Sunday, January 1, 12

Page 69: Quick Dev

Winter Gold

SHVC-1CB5B

SuperFX

SRAM512KB

ROM16MBit

CIC

Sunday, January 1, 12

Page 70: Quick Dev

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

• 4Bit

• Accumulator and x register

• 32 nybbles RAM

• 512 Byte ROM

• Reverse engineered & PIC implementation

Sunday, January 1, 12

Page 71: Quick Dev

Copy Protection

• Generic SRAM protection

• Specific Copystation checks

• Import protections

• PPU flag PAL/NTSC video

• Copy protections of unlicensed cartridges

Sunday, January 1, 12

Page 72: Quick Dev

Soul Blade HKO

Unlicensed copy protected cartridge

Sunday, January 1, 12

Page 73: Quick Dev

Addons

Sunday, January 1, 12

Page 74: Quick Dev

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

Page 75: Quick Dev

Ultra16

• Boot menu for the SNES

• Support for all regions games

• 50/60 Hz switching via software

• Support for Satellaview games

Sunday, January 1, 12

Page 76: Quick Dev

Ultra16 MenuSunday, January 1, 12

Page 77: Quick Dev

Commercial Development

• Mostly assembler

• Some games in asm and c

• Cross assembling on PC or Amiga

• Mostly self written tools

• Different official Devkits (Intelligent Systems, Ricoh)

• Prototype cartridges

• Flash

• EPROMS

Sunday, January 1, 12

Page 78: Quick Dev

psy-Q DevkitSunday, January 1, 12

Page 79: Quick Dev

Accolade DevkitSunday, January 1, 12

Page 80: Quick Dev

Unknown DevkitSunday, January 1, 12

Page 81: Quick Dev

Development SystemSunday, January 1, 12

Page 82: Quick Dev

Homebrew Development

• Assemblers

• WLA DX

• Snescom

• cc65

• C Compilers

• tcc & wla-link

• WDC Compiler

• SDKs

• snes-sdk

Sunday, January 1, 12

Page 83: Quick Dev

Copier Stations• Storage

• DRAM

• 4 - 128 MBit

• 3.5” Floppy 1.4MB

• Parallel port connector

• Boot / Game menu

• Save Games on floppies

• Custom chip and CIC piggybacks

Sunday, January 1, 12

Page 84: Quick Dev

Doctor SF7Sunday, January 1, 12

Page 85: Quick Dev

Super Wild CardSunday, January 1, 12

Page 86: Quick Dev

Super Wild CardSunday, January 1, 12

Page 87: Quick Dev

Flash Cartridges

• Storage

• Flash

• 16 - 64 MBit

• Parallel port

• USB

• SDCard

Sunday, January 1, 12

Page 88: Quick Dev

Tototek Super FlashSunday, January 1, 12

Page 89: Quick Dev

Mash ModSunday, January 1, 12

Page 90: Quick Dev

Retrousb PowerpakSunday, January 1, 12

Page 91: Quick Dev

Emulation

Sunday, January 1, 12

Page 92: Quick Dev

ZSNES

• ZSNES

• Started 1998

• Windows

• Intel OS X

• Linux

• A lot assembler code using nasm

• x86 only

Sunday, January 1, 12

Page 93: Quick Dev

Snes9x

• Snes9x

• SNES96

• pure C

• portable code

Sunday, January 1, 12

Page 94: Quick Dev

BSNES

• BSNES

• Started 2005

• Clean C++ code

• Windows / Linux / OS X

• SDL, QT

• Debugger

Sunday, January 1, 12

Page 95: Quick Dev

Scene

Sunday, January 1, 12

Page 96: Quick Dev

Homebrew• Very small ...

• By a magnitude smaller than PSP, NDS or WII community

• Extensive register-drivern graphics interface

• No real middleware nor libraries

• Resources

• efnet #snesdev

• nesdev.parodius.com

Sunday, January 1, 12

Page 97: Quick Dev

Warez Scene

• Active early 90ies

• Napalm

• Anthrox

• Amiga Crews: Quartex, Red Sector & Paradox

• Early demos use game music instead of own compositions

• Writing good audio drivers remain a challange for quite some time

Sunday, January 1, 12

Page 98: Quick Dev

Intros & Demos

Sunday, January 1, 12

Page 99: Quick Dev

Anthrox Sine Dot Sunday, January 1, 12

Page 100: Quick Dev

Anthrox Mode7Sunday, January 1, 12

Page 101: Quick Dev

CensorSunday, January 1, 12

Page 102: Quick Dev

NapalmSunday, January 1, 12

Page 103: Quick Dev

ParadoxSunday, January 1, 12

Page 104: Quick Dev

Project Quickdev16

• optixx, max and D4S

• Started around February 2009

• Version 1 finished in September 2009

• Version 2 still going ...

Sunday, January 1, 12

Page 105: Quick Dev

optixx.orgSunday, January 1, 12

Page 106: Quick Dev

assembla.com/wiki/show/quickdev16

Sunday, January 1, 12

Page 107: Quick Dev

Proof of concept

Sunday, January 1, 12

Page 108: Quick Dev

Milestones

• Rom memory layout

• Cartridge dumper

• Rom analysis

• SNES Memory map

• Documentations

• BSNES sources

Sunday, January 1, 12

Page 109: Quick Dev

Hardware

• STK 500

• 512K SRAM

• ATmega16

• SDCard

• Shift register, bus driver and a switch

Sunday, January 1, 12

Page 110: Quick Dev

Modified cartridgeSunday, January 1, 12

Page 111: Quick Dev

Rom dumperSunday, January 1, 12

Page 112: Quick Dev

Multinorm cartridgeSunday, January 1, 12

Page 113: Quick Dev

STK500Sunday, January 1, 12

Page 114: Quick Dev

Memory Sunday, January 1, 12

Page 115: Quick Dev

Sunday, January 1, 12

Page 116: Quick Dev

AVR / SNES SwitchSunday, January 1, 12

Page 117: Quick Dev

POC runningSunday, January 1, 12

Page 118: Quick Dev

Mario!Sunday, January 1, 12

Page 119: Quick Dev

Firmware

• Slow SRAM interface

• Memory CRC checks

• Simple SD-Card routines

• Debug printfs via UART

Sunday, January 1, 12

Page 120: Quick Dev

Bugs

• WR Line to CART

• Same game overwrote “ROM”

• Switch Situation

• “Switch, plug and then power”

Sunday, January 1, 12

Page 121: Quick Dev

Sunday, January 1, 12

Page 122: Quick Dev

Prototype

Sunday, January 1, 12

Page 123: Quick Dev

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

Page 124: Quick Dev

Prototype

• PCB from PCB Pool

• ATmega 644

• 8 x 512K SRAM

• SIO FDTI for UART

Sunday, January 1, 12

Page 125: Quick Dev

AVR , USB and bus driverSunday, January 1, 12

Page 126: Quick Dev

Sregs, counter and SRAMSunday, January 1, 12

Page 127: Quick Dev

RoutingSunday, January 1, 12

Page 128: Quick Dev

RoutingSunday, January 1, 12

Page 129: Quick Dev

PCB PoolSunday, January 1, 12

Page 130: Quick Dev

PCB PoolSunday, January 1, 12

Page 131: Quick Dev

FrontSunday, January 1, 12

Page 132: Quick Dev

BackSunday, January 1, 12

Page 133: Quick Dev

SRAMSunday, January 1, 12

Page 134: Quick Dev

FTDISunday, January 1, 12

Page 135: Quick Dev

AVRSunday, January 1, 12

Page 136: Quick Dev

Sunday, January 1, 12

Page 137: Quick Dev

Sunday, January 1, 12

Page 138: Quick Dev

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

Page 139: Quick Dev

Problems overcome

• Commercial just crashed

• Seemed to be audio related

• Wrote some test roms to trigger problem

Sunday, January 1, 12

Page 140: Quick Dev

Sunday, January 1, 12

Page 141: Quick Dev

LA session powerup

Sunday, January 1, 12

Page 142: Quick Dev

Openbus 0x21

• 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

Sunday, January 1, 12

Page 143: Quick Dev

HotfixSunday, January 1, 12

Page 144: Quick Dev

Version 1

• Reduce to 4 x 512K SRAM

• Kill FTDI to save space and money

• We call it

• Black PCBs

Sunday, January 1, 12

Page 145: Quick Dev

FrontSunday, January 1, 12

Page 146: Quick Dev

BackSunday, January 1, 12

Page 147: Quick Dev

SeeedstudioSunday, January 1, 12

Page 148: Quick Dev

Seeedstudio PCB

• Based Hong Kong

• Manufactured in China

• Good email support

• “Fancy colors”

• Free shaping

• Golden connector

Sunday, January 1, 12

Page 149: Quick Dev

Sunday, January 1, 12

Page 150: Quick Dev

Software

Sunday, January 1, 12

Page 151: Quick Dev

Firmware

• USB Bootloader

• 4kb

• software V-USB

• Debug shell via uart

Sunday, January 1, 12

Page 152: Quick Dev

Ucon64

• Opensource

• Supports a lot of copiers and flashcarts

• Added support for Quickdev16

• Libusb based

• Windows, Linux & OS X support

Sunday, January 1, 12

Page 153: Quick Dev

Qdinc

• Inital full rom upload

• Subsequent uploads are diff only

• Works with vanilla firmware

Sunday, January 1, 12

Page 154: Quick Dev

Loader 1

• Part of the AVR firmware

• Used RLE compression

• HiRom

• WRAM trick

• Progress feedback via “shared memory”

Sunday, January 1, 12

Page 155: Quick Dev

Version 1

Sunday, January 1, 12

Page 156: Quick Dev

Loader 2

• Use deflate compression

• Progress bar via “shared memory”

• Polling of status register

• IRQ driven

• Rom info

Sunday, January 1, 12

Page 157: Quick Dev

Version 2

Sunday, January 1, 12

Page 158: Quick Dev

Size matters

mini debug

Boot 4096 4096

Code 7532 24984

RAM 344 742

Loader v1 31091 31091

Loader v2 35726 35726

Sunday, January 1, 12

Page 159: Quick Dev

Loader crunching

Loader v1 65536

Loader v1 RLE 31091

Loader v2 65536

Loader v2 RLE 58046

Loader v2 deflate 35726

Sunday, January 1, 12

Page 160: Quick Dev

Sunday, January 1, 12

Page 161: Quick Dev

More debugging

Sunday, January 1, 12

Page 162: Quick Dev

Chuck Norris Debugging

Sunday, January 1, 12

Page 163: Quick Dev

PCB Quality

• First batch was faulty

• Soldermask was off

• Some pads had broken connections

• New batch of PCB for free

• Faulty print

• No golden connectors

• But all working

Sunday, January 1, 12

Page 164: Quick Dev

Seeedstudio

Sunday, January 1, 12

Page 165: Quick Dev

Seeedstudio

Sunday, January 1, 12

Page 166: Quick Dev

Production

• Time to play OEM...

Sunday, January 1, 12

Page 167: Quick Dev

Sunday, January 1, 12

Page 168: Quick Dev

Sunday, January 1, 12

Page 169: Quick Dev

Sunday, January 1, 12

Page 170: Quick Dev

Sunday, January 1, 12

Page 171: Quick Dev

Sunday, January 1, 12

Page 172: Quick Dev

Sunday, January 1, 12

Page 173: Quick Dev

Hack a daySunday, January 1, 12

Page 174: Quick Dev

Version 2

Sunday, January 1, 12

Page 175: Quick Dev

Wishlist

• CPLD or FPGA

• Native and fast USB

• JTAG

• Custom chip support

• Time multiplexed bus sharing

• Memory pattern triggers

Sunday, January 1, 12

Page 176: Quick Dev

Prototype 2

Sunday, January 1, 12

Page 177: Quick Dev

Hardware

• AT90USB1287

• USB client and host

• Xilinx CPLD xc95144xl

• Cypress 16Mbit SRAM

• AVR JTAG

• CPLD JTAG

Sunday, January 1, 12

Page 178: Quick Dev

CPLDSunday, January 1, 12

Page 179: Quick Dev

AVR and SRAMSunday, January 1, 12

Page 180: Quick Dev

ISP and JTAGSunday, January 1, 12

Page 181: Quick Dev

Lost in Verilog

Sunday, January 1, 12


Recommended