Has anyone out there made a homebrew computer with the SA1, Super FX or Game Boy cartridge? They each have a separate CPU, SRAM and ROM so I figured you could wire up a PIO & VIA board with a keyboard a serial console connected to the cart connector and it would be a novel resurrection.
Just want to make sure i'm not reinventing the wheel before I start.
For Game Boy on NES, there was the RetroUSB
RetroVision and the Nintendo
Wide Boy.
You're basically thinking of ... cutting out the SNES part, and leaving the coprocessor alone to do its work? I don't think I've heard of anyone doing that before. Only caveat is that some of them require the SNES upload firmware to them first...
The only thing that comes close from Nintendo is the Famicom with the Family BASIC cartridge and Keyboard add-on that plugged into the expansion port and you could attach a cassette tape recorder for storing programs.
lidnariq wrote:
You're basically thinking of ... cutting out the SNES part, and leaving the coprocessor alone to do its work? I don't think I've heard of anyone doing that before. Only caveat is that some of them require the SNES upload firmware to them first...
I think it would be kind of funny to have the cartridge as the whole computer. Doom and Yoshi's island have full 8600 processors and not just coprocessors so if I re-write the rom I could port CP/M to it. I would use an Arduino for easy serial and PS2 keyboard hookup but the cartridge would be the brains of the operation.
I thought it was a unique idea.
I think that could be a fun project. You might need some support mechanism for bootstrapping the cartridge; I don't know enough about them to know if they can be made to boot on their own.
It sounds new (and amusing) to me.
However, Doom and YI don't have an x86 or x80 CPU. Their GSU/SuperFX is a RISC-ly thing, vaguely ARM-ish in shape.
I think the main problem would be the vram transfer limit...
lidnariq wrote:
It sounds new (and amusing) to me.
However, Doom and YI don't have an x86 or x80 CPU. Their GSU/SuperFX is a RISC-ly thing, vaguely ARM-ish in shape.
From the
https://en.wikipedia.org/wiki/List_of_Super_NES_enhancement_chips wiki page on the SNES processors the SuperFX and SA1 are listed as 65c816 compatible with extended instruction sets.
https://en.wikibooks.org/wiki/Super_NES_Programming/Super_FX_tutorial assembly language programs can be compiled using a regular 65c816 compiler.
A am going solely off of wiki and pictures of the cartridge boards themselves. Some of the registers are called different things but that's from a SNES programming point of view and not a vanilla hardware prospective. Both are mentioned that the processors run completely independently and only share the SNES RAM.
I am going to poke around and see if I can get SuperFX or SA1 pinouts and the cart pinouts, see how I would go about loading a binary onto the cart.
Wait a minute, I'm an idiot, is this supposed to be for the NES or the SNES?
Neither. It's "take the coprocessor on a cartridge and use it by itself"
----
The SA1 is a 65816, however the SuperFX is ... well, like I said, RISC-ly. nocash has documentation:
http://problemkaputt.de/fullsnes.htm#sn ... hip10games
lidnariq wrote:
Neither. It's "take the coprocessor on a cartridge and use it by itself"
----
The SA1 is a 65816, however the SuperFX is ... well, like I said, RISC-ly. nocash has documentation:
http://problemkaputt.de/fullsnes.htm#sn ... hip10gamesInteresting. the SuperFX is the same core but it appears they streamlined a few registers and added some. The additions are nothing I would care about but the changes would make for a fun time porting code. I just started looking at a Super Mario RPG cart and it looks much cleaner and the SA1 appears pretty cut 'n dry.
lidnariq wrote:
Neither. It's "take the coprocessor on a cartridge and use it by itself"
Oh wow I had understood it completely backwards.
rainwarrior wrote:
lidnariq wrote:
Neither. It's "take the coprocessor on a cartridge and use it by itself"
Oh wow I had understood it completely backwards.
lol. It was an off the wall idea. It will make a good head scratcher using a Super Mario RPG cart to play Zork! (some externals required of course...)
I was honestly thinking we where talking about like a PC on the SNES where you could put in an SD card or something and run programs off it and you could hook up a keyboard and a mouse through the controller ports. Like I said, I don't really think this would work, because of the nature of the graphics hardware. You couldn't run something like Windows because of how there's no framebuffer. I suppose one extremely rudimentary way to simulate multiple windows would be to use HDMA and have it to where the windows are in a fixed position on top of each other. The graphics could then be tiled. I just don't see running more than one program at a time, which was obviously fine for a video game console.
Any documentation on the SA-1? After tracing things out on the cart it appears the cart slot is connected to dedicated pins on the SA-1
SA-1 Pins:
Code:
1 SNES./IRQ
2 SNES.D7
3 SNES.D3
4 SNES.D6
5 SNES.D2
6 SNES.D5
7 SNES.D1
8 SNES.D4
9 SNES.D0
10 VCC
11 GND
12 SNES.A23
13 SNES.A0
14 SNES.A22
15 SNES.A1
16 SNES.A21
17 SNES.A2
18 SNES.A20
19 SNES.A3
20 SNES.A19
21 SNES.A4
22 SNES.A18
23 SNES.A5
24 SNES.A17
25 SNES.A6
26 SNES.A16
27 SNES.A7
28 SNES.A15
29 SNES.A8
30 SNES.A14
31 SNES.A9
32 SNES.A13
33 SNES.A10
34 SNES.A12
35 SNES.A11
36 VCC
37 GND
38 REFRESH
This is presumably a dedicated DMA port but should be on the same internal bus as the SRAM. I am a bit confused how the SNES CPU can write to the SA-1 Registers to set the GO registers and such. Makes it sound like the SA-1 has internal dual channel ram or something.
Solved my own questions. Found the Dev books for the SNES and SA-1 and thats a HUGE help. turns out this funky SA-1 acts as a middle man allowing access to its connected RAM/ROM/IRAM which is quite unique.
http://www.romhacking.net/documents/226/As for how to transfer your image onto the SA-1's SRAM here is an example program for just that.
https://github.com/DocSchoko/SNES-SA-1-demo/blob/master/routines/sa1interface.asmWith all that I should be able to write some AVR code to act as the SNES and upload a program from a serial connection.
Espozo wrote:
I suppose one extremely rudimentary way to simulate multiple windows would be to use HDMA and have it to where the windows are in a fixed position on top of each other. The graphics could then be tiled.
I don't see what HDMA would have to do with it, but the OS could give each program a rectangular block of tiles to use. A "tiled" window manager with no overlapping could make it easier; several games used this policy. Or it could revert to the iOS/Android excuse for multitasking, which is all maximized all the time.
Quote:
I just don't see running more than one program at a time, which was obviously fine for a video game console.
Yet the CPU in the Sega Genesis is the same as that in the Macintosh, which ran MultiFinder in System 6 through System 7.5.3, albeit with more RAM than a Genesis comes with (typically 4 MB). They're even clocked about the same. Multitasking on a 65816 is more of a pain because each page needs its own direct page and stack in bank $00. A few popular 65816-based computers had 48K of RAM in $000000-$00BFFF. This is more limited on a Super NES, where $002000-$005FFF is reserved for I/O and $006000-$00FFFF is the cart.
tepples wrote:
I don't see what HDMA would have to do with it
For scrolling games. The tiled window thing you said sounds like it would work fine for any non game application.
tepples wrote:
I just don't see running more than one program at a time, which was obviously fine for a video game console.
I should have been more specific: I don't see you running more than one thing at a time because of the video hardware. I thought it would be obvious that an expansion chip would take over, but I suppose it would be cooler (if incredibly slow) to use the stock 65816 in the SNES.
Came up with my game plan. I need to find a copy of Super Mario RPG at a pawn shop but that should be easy to find. After than I can roll some code and a PCB with card connector and get playing.
Anyways the SA-1 memory map appears to be setup with a 4bit page select and 16bit data path. I will need to add chip select logic to hook up any external stuff like an LCD and UART from the Dev Book 3.2 MMAP from SA-1 prospective their is a valid accessible region with no data or mirror at 50:0000-ffff. HOWEVER! does anybody know if the SA-1 can address OUT via the cart's 24bit bus or is it only possible to IRQ the main SNES CPU and make it fetch the data out of BW-RAM/I-RAM?
In other words if the carts 24bit bus is "SNES -> SA-1" and not "SNES <-> SA-1" then the whole idea of using the cartridge unmodified is useless and runs the conversation point, lol.
No, there's no way for the SNES to turn off its address bus drivers, so the SA-1 wouldn't have been designed to be able to drive them as outputs.
Hmm. Well I guess I could use the IRQ output to tell my Arduino to check the 4 msg bits so I could have 16 seperate interrupts which is more than enough.
Is this project something this forum would want documented? If so is this the proper sub?
Thanks for the help!
I think it sounds amusing, in ways that just "buying a 65816 dev board from WDC" wouldn't.
lidnariq wrote:
I think it sounds amusing, in ways that just "buying a 65816 dev board from WDC" wouldn't.
Also, $199.
Yeah, the hackaday story was not the most flattering thing.
I would suggest ordering an import copy of SMRPG from Japan, it's way cheaper than finding a US cart. Though maybe somebody here could confirm if the Japanese SA-1 lockout works with USA consoles (I would think that it would, since the normal carts work just fine...).
Japanese SMRPG doesn't have an SA-1...
lidnariq wrote:
Japanese SMRPG doesn't have an SA-1...
SNES Central has a PCB pic of the Japanese cart and it has the same model SA-1 as the US version. Doesn't make any sense how they could be the same game but one not needing the SA-1.
I wonder what I'm confusing it with? I thought I remembered reading about some game that had an add-on chip in the US market and not in the Japanese market... Maybe that was a myth: fullsnes doesn't indicate any such things existing.
Strangely enough, I've seen some games that are slowrom in Japan and fastrom in the US, but no, I haven't seen a game where there was an expansion chip in one version and not one in another.
I have a rough idea on my SNCP (Super Nintendo Cartridge Computer) below:
Attachment:
SNCP.png [ 69.43 KiB | Viewed 408 times ]
I have a japanese cart on the way and will be ordering the STM32F100 and 70pin card edge connector in a week or two. In the meantime I should really overhaul my website so I have somewhere to catalog my ideas...