What's new
I had figured as much as I don't see why it would ever need direct access to nvram but one can be hopeful. Maybe the host options only work on triforce since that's where these commands came from but I don't have one to verify.
I had thought this at one point as well. I'll try to get my Triforce out soon, wife is due on Friday with my second child, so time is limited!

These articles seem to be from when the Triforce tools were first created:
"I’m sitting on this for a while now, and it didn’t change a lot. That means it’s either 100% finished or completely useless. It’s a python script which talks to the NetDIMM board on a Triforce/Naomi/Chihiro, and implements the “Satellite” protocol for uploading and running games"
https://debugmo.de/2009/04/triforce-tools/

It does appear from https://debugmo.de/2010/12/the-last-piece/ that we have indeed lost some info.

This forum post & forum are both gone for example https://assemblergames.com/forums/showpost.php?p=296558&postcount=7, or http://www.assemblergames.com/forum...Naomi-Security-Pic-Dumper&p=296558#post296558

It seems to be in the Internet Archive luckily:
https://web.archive.org/web/2013022...Naomi-Security-Pic-Dumper&p=296558#post296558

"By the way, the newer ("type 3") devices contain a nice new secret: They split out all the network/vxworks stuff into a MIPS cpu on a separate board. The GDROM-functionality and the PIC security now happens in the "RX850"-part - whatever that is. My closest guess: RX850 is a small RTOS from NEC for their V850 cpus, and the actual software running the GDROM-stack. The actual firmware isn't stored in a separate flash rom (there just isn't one left...), but uploaded from the SEGABOOT (the triforce-logo and testmenu thing which runs on the gamecube). My guess is that it's the firmware.asic file, a ~96k block-encrypted (DES?) file. I wasn't yet able to decrypt that mysterious data blob, but i'm pretty sure that it turns out to be the gdrom-stack / pic security. The SEGA part must then also contain the CPU - again, there is no other device left. Strange thing, isn't it?
...
As an interesting side note, the "netfirm" (the software running on the network board) has an open port, which you can use for a various amount of things, like:
- dumping the DIMM memory,
- read/write the *gamecube* memory (with help from SEGABOOT, so it's just part of the DI protocol spoken),
- read/write nvram, netfirm flash, set security keycode."

So there are indeed some documented differences in the Triforce version 3 at the very least per the above, and the following: https://debugmo.de/2008/08/triforce_type3/
"As a side note, the Netfirm can communicate with the gamecube software over specific DI commands (or, technically, answers: the gamecube constantly polls for queries from the DIMM board/netfirm). The Netfirm has a nice “debug-mode”/”development”/”backdoor” on tcp port 10703, which allows you to read/write gamcube memory (isn’t that nice?) as well as DIMM memory as well as the DES key for the uploaded content (as decryption happens on the fly)… … … Guess what we will see next."

I didn't realize Felix Domke (tmbinc - https://twitter.com/tmbinc) was the father of all this research TBH. Parts of the talk "Distributed FPGA Number Crunching For The Masses" appear to be based on his work with Triforce.
https://events.ccc.de/congress/2010/Fahrplan/events/4203.en.html
https://events.ccc.de/congress/2010...uted FPGA Number Crunching for the Masses.pdf

DkkC0mVX4AANhMZ.jpg

"There is some "development mode" which might help here? (I think that one is activated if the PIC responds with a zero key. Not sure anymore, need to look at the disassembly again). Building a PIC with a zero key wouldn't be that complicated (some people can do that today :)."

does this mean we are technically running in development mode aka jumping into naoSetDevMode() when we use a zero key?

Here is the video for the talk Felix gave...

Worst case, perhaps Felix can answer some questions for us.
 
for those who really interested in DIMM commands reverse engineering and want to look at command dispatcher disassembly:

- grab 1st_FW_Dimm317.rar from mega link at prev. page.
- run IDA Pro
- New file - navigate to FW_Dimm317.bin
- set Processor type - Renesas SH-4 (little endian)
- OK
- set checkbox "Create RAM section", RAM start address - 0xC000000, RAM size - 0x1000000
- uncheck Create ROM section
- Input file - Loading address - 0xC080000, File offset - 0x100000
- OK
- device name - SH7750

then go to (key G) to 0xC08A340 address and press P (subroutine disassemble) and we finally see some code disassembly.
but IDA is stupid and don't auto-recognized switch/case code, so we have to handle it in manual:
- set cursor at address 0C08A3B2
- Edit - Other - Specify switch idiom
Address of jump table - 0xC08A3CC
Number of elements - 243
Size of table element - 2
Element Base value - 0xC08A3B6
Start of switch idiom - 0xC08A3B2
OK

press Space and you'll finally see this subroutine graph fully disassembled
 
Back
Top