FANDOM



This is a port map for the Super FX 2 chip used in Yoshi's Island SNES .

The SFX2 is a coprocessor for the SNES, in YI it is clocked at 21.4MHz, it is located inside the game cartridge.

The processor does not always run, it executes code untill it hits a STOP command.

The FX chip can render pseudo-3D graphics, rotate/scale GFX, apply lighting/shading to GFX, it also is used to decompress data, used to execute more complicated AI code, its CPU also has a multiplication oppcode which the SNES CPU does not have. The Yoshi's Island cartridge has an extra 16 pins on the side, however none are used.

ROMS are limited to 2MB in size, because the lack of extra address lines.

Port
Size
Type
Name
Info
0x003000 2 R/W FX Register R0 Default source/destination register
0x003002 2 R/W FX Register R1 Pixel plot X position register
0x003004 2 R/W FX Register R2 Pixel plot Y position register
0x003006 2 R/W FX Register R3
0x003008 2 R/W FX Register R4 Lower 16 bit result of lmult
0x00300A 2 R/W FX Register R5
0x00300C 2 R/W FX Register R6 Multiplier for fmult and lmult
0x00300E 2 R/W FX Register R7 Fixed point texel X position for merge
0x003010 2 R/W FX Register R8 Fixed point texel Y position for merge
0x003012 2 R/W FX Register R9
0x003014 2 R/W FX Register R10
0x003016 2 R/W FX Register R11 Return address set by link
0x003018 2 R/W FX Register R12 Loop counter
0x00301A 2 R/W FX Register R13 Loop point address
0x00301C 2 R/W FX Register R14 Rom Address for Getb, Getbh, Getbl, Getbs
0x00301E 2 R/W FX Register R15 Program Counter

0x003020-

0x00302F

16 R/W Unused
0x003030 2 R/W Status flag register 1 Z Zero flag
2 CY Carry flag
3 S Sign flag
4 OV Overflow flag
5 G Go flag (set to 1 when the GSU is running)
6 R Set to 1 when reading ROM using R14 address
8 ALT1 Mode set-up flag for the next instruction
9 ALT2 Mode set-up flag for the next instruction
10 IL Immediate lower 8-bit flag
11 IH Immediate higher 8-bit flag
12 B Set to 1 when the WITH instruction is executed
15 IRQ Set to 1 when GSU caused an interrupt Set to 0 when read by 658c16
0x003032 1 R/W Unused
0x003033 1 R/W BRAMR Backup RAM register
0x003034 1 R/W PBR Program bank register
0x003035 1 R/W Unused
0x003036 1 ROMBR Rom bank register
0x003037 1 R/W CFGR

Control flags register


5 MS0 Multiplier speed, 0=standard, 1=high speed
7 IRQ Set to 1 when GSU interrupt request is masked

0x003038 1 R/W SCBR Screen base register
0x003039 1 R/W CLSR

Clock speed register.

0 = 10.7MHz, 1 = 21.4MHz

0x00303A 1 R/W SCMR

Screen mode register

0 MD0 color depth mode bit 0
1 MD1 color depth mode bit 1
2 HT0 screen height bit 1
3 RAN RAM access control
4 RON ROM access control
5 HT1 screen height bit 2

RON = 0 SNES CPU has ROM access
RON = 1 GSU has ROM access RAN = 0 SNES has game pak RAM access
RAN = 1 GSU has game pak RAM access HT1 HT0 Screen height mode
0 0 128 pixels high
0 1 160 pixels high
1 0 192 pixels high
1 1 OBJ mode MD1 MD0 Color depth mode
0 0 4 color mode
0 1 16 color mode
1 0 not used
1 1 256 color mode

0x00303B 1 R VCR Version code register
0x00303C 1 R/W RAMBR

Ram bank register

0 = disabled
1 = enabled

0x00303D 1 R/W unused
0x00303E 2 R/W CBR

Cache base register

15-4 Specify base address for data to cache from ROM or RAM
3-0 Are 0 when address is read

0x003040-

0x0030FF

192 R/W Unused

0x003100-

0x0032FF

512 ? CACHERAM GSU cache memory
Community content is available under CC-BY-SA unless otherwise noted.