The ESP32 parts in Arduino are licensed under http://www.apache.org/licenses/LICENSE-2.0, my work will be published under the MIT License (it's in the file section).
The goal
My plan is to achieve a working environment for the ESP32, to handle the requests of the game boy and work with wifi in parallel, so that you can actually use the Game Boy to surf or interact live with the web/wifi. There are many possibilities to take something useful out of it.
Choice of Hardware
Right now I only want to concentrate on one chip and focus on replicating results that are equal to the achievements of dhole [emulating with STM32] or Alex of insidegadgets.com [emulating on Arduino], where dhole managed to emulate not only ROM but also RAM and MBC (memory bank controller) on one chip. I was about to start with an additional Flash or EEPROM and an ATSAMD21 as an MBC, but that would mean programming two firmwares for two chips that I haven't worked with before - plus programming the actual code for the Game Boy side. The first idea was to use an ESP12 module as an MBC, but with only one core to handle WiFi and inputs at that level of speed would have been impossible (IMHO).
Cartridge vs. Link Port
I do like the approach of using the linkport to talk to an ESP12 and think it is feasible to go that route [like flying a drone]. But it would also require two components: an EEPROM cartridge AND an ESP dongle on a port that no one builds plugs for anymore. From a hardware aspect it is much easier to do an egde connector on a pcb and wire up the ESP, so that's another reason to go with a cartridge. You would also need to build and program your own cartridge, like I did on my other project: #Game Boy Cartridge plus Programmer - instead of using an USB ready ESP board in a cartridge form factor.
Choice of IDE
I'm currently using Arduino IDE, I've done a lot with it so far and am a creature of comfort. There are ways to implement features and functions to bypass "crappy" Arduino code. But it's written better then everything I could have come up with and I've heard of good changes that were made to the Arduino code recently. I hate the crappy editor, love sublime. Integration of Arduino into Sublime was always buggy for me. I love just pushing a button to upload code.
Speed of pin toggle
The current way that I use to toggle the pins and also read them is way too slow. As stated [here], the max speed with direct pin toggling through registers is about 4MHz, far from the cpu speed of 240MHz. In comparison the plain olde Arduino with 16MHz CPU has a toggle speed of round about 2.66MHz, when changed through port registers. You can find the ESP32 pin toggle function [here].
Using I2S as parallel input and output bus
Now I'm really leaving the sector of stuff that I'm used to do or comfortable with (I'm a PHP/JS guy in real life). I don't often surf around the latest CPP code written by CNLohr and SpriteTM, but when I do.. well I don't. But I want to work on that cartridge as long as I see there is an option to go on. In comes the code of CNLohr [github link] - and the previously unknown to me parallel I2S bus.
Hey Dave, great Project. I know what you are going trough, I have also managed to build a Game Boy cartridge running on a STM32. You can check it out here: https://hackaday.io/project/179717-serial-boy/
Dont give up, all the best, Jakob