LazerFlux
Professional
- Joined
- Feb 12, 2017
- Messages
- 418
- Reaction score
- 350
I REALLY like where you're going with this.Okay, I spent most of the rest of last night and today looking at optimizations I could make to the base libnaomi stuff that exists in my repo for doing homebrew. I have a dimm comms library pretty much worked out and it can reliably receive peek/poke messages from the net dimm, I have a high-level eeprom parser/unparser for homebrew that needs to read/write settings, I use that to automatically determine rotation for the video library I've written so that vertical setups "just work", I have optimized the video framebuffer routines down to the point where all of my examples easily get 60fps with room to spare, and I've added basic (non-interurpting) timer support which lets me calculate the speed of certain code sections as well as do accurate time-based spinloops. I know this is a bunch of bullshit words to most people but what it means in practice is that a lot of the pieces are in place to make a simple menu.
The following things are still on my todo list before I can present a proof of concept:
- Need a packet-based communication protocol between a running Naomi homebrew and a script that runs on a RPI/mac/linux/windows. This will let me send/receive arbitrary packets of my choosing to homebrew and I'll use it to set up communication like what game was selected and such. I'm going to work on that next.
- Need to compile freetype or another font library to my toolchain and write some glue code so I can display fonts. Right now the only text output that is possible is ugly 8x8 built-in console debugging font. It doesn't support unicode and looks hideous. Having freetype would let me choose a better font and support extended characters with ease.
- Need to work out how Naomi games request the BIOS to enter the test menu. This isn't strictly necessary for such a proof of concept. However it is very nice to have since you might want to go into the test menu and change monitor rotation for the menu for vertical setups. Right now if you want to do that you need to catch the Naomi during the boot logo and hit the test button there.
- Need to come up with a simple menu program that uses all of the above to display a list of Naomi ROMs and then communicates with RPI/PC to report the selection.
- Need to come up with a management script that can be run which handles netbooting the simple menu program, making sure it has the list of ROMs and stuff, takes the selection that you choose and then netboots that ROM to make it all come together.
I have additional ideas up my sleeve. For instance, I plan to support the same patch and settings formats that my web netboot solution supports (and it sounds like @chunksin and @LazerFlux will soon support as well), so when you select a game on the screen you can optionally select a list of patches and settings to apply. This is a bit more advanced but absolutely completely doable. It just means that I will need to design and code some configuration screens on the naomi that talk to the management script. Its possible to do a bunch more stuff with this but I want to keep it "simple" for the proof of concept.
Now it is time to code like a mad bitch.
EDIT: two-way arbitrary data transfer library is finished and tested. I can send random strings too and from my naomi and display them on the screen as well as print them on my console.