My apologies to Christine Love, but the title was too perfect.
Back in late 2019, the FPGA-based hardware emulation company Analogue, known for their near-flawless clones of various retro video game consoles announced an exciting new product. This time around, instead of plugging into your TV and playing the games of one system (per device), the product called the Analogue Pocket would be a handheld device that could play many, many different portable game systems, provided you had the right cartridge adapters; a tantalizing product for retro game enthusiasts to be sure, especially given their track record. But with that many systems and a not-too-distant (in theory) release date, it seemed like a lot of work for the small team they had. You can imagine my surprise and excitement when, in January 2020, someone from the company reached out to me to see if I’d be interested in working on some software for it.
Specifically, they wanted me to work on an open-source replacement of the Game Boy Advance’s built-in ROM code, which is traditionally (though erroneously) referred to as the “BIOS”. This small block of code has a few functions: most visibly, it runs before the game starts and does things like validate that there’s a game cartridge inserted and show the boot splash screen; further, it also contains a handful of functionality that games can (and do) use for some basic tasks. But despite being small, this block of code is subject to copyright restrictions and not present on the game cartridges themselves, so for a fully accurate GBA clone to work it needs a clone of the BIOS too. And since I’d worked on mGBA for nearly 7 years at this point I had a pretty intricate understanding of how it worked and what would be necessary to do to make an accurate clone of it. Sounds like I would be a perfect fit, right? Well, I would have been had they given me reasonable terms. But they didn’t.
When I was first put in touch with a team member who handles somewhat more of the business side instead of the “face” of FPGA-based emulation, kevtris, who is one of the founders of the company, I was given a rough outline of what would need to be done: they wanted a cycle-accurate (that is, every operation takes the same amount of time as the official implementation, and generally operations happen at the same time too) reimplementation of as much of the GBA BIOS as possible, and for a handful of functions where that’s not doable, just get it as close as possible so as to not break any games. This is a rather large undertaking, and while there have been partial reimplementations in the past by various developers, none have been full and none have been cycle-accurate, much less necessarily give the exact same results on all of the functions (as there are several math functions that give approximate results). This was a daunting task, but likely doable given enough time. I was also told that it would not interfere with any of my open source projects so long as I didn’t integrate any “proprietary” knowledge into mGBA itself. That said, FPGAs are programmed with an entirely different paradigm than software, since how they work in general is not directly comparable, and knowledge about the GBA itself is, well, knowledge of a product over which they have no intellectual property claims. Nonetheless, I was assured that it shouldn’t be a problem.
However, that was about the highest point of the conversation. When things started to turn to pay, I mentioned that I had a day job so I couldn’t put a huge amount of time in every day. I’d thought about leaving said day job, but nothing had actually happened regarding that, so for all intents and purposes it would be moonlighting. “It wouldnt [sic] be a 40 hour a day thing at least not at first” (emphasis mine)–I suppose they assumed that if I’d left my job that I could take it on full-time. Not unreasonable, so long as the pay is sufficient. I was told they’d get back to me “within a day” and “asap”. The next day, they came back with a more fleshed out list of goals, and asked for an estimation of how long it would take. As evidenced by the continuously slipping timeline in mGBA, I’m not very good at estimating timelines, so I gave a (very) rough estimate of 2 to 4 months. A reply affirming that that sounded reasonable, with an estimation of 300 to 400 hours of work, with a price tag of $10,000 was what I got back (assuming the project didn’t run seriously overtime).
That may sound like a lot of money to people who are paid minimum wage, and indeed it is, but for someone who lived at the time in Silicon Valley, that didn’t even cover rent if the project went on for 4 months, especially after taxes, not to mention the high cost of food, gas, etc. in the area. The next day I told them that I couldn’t put in those hours while still working full time, and even if I did quit my day job, that $10,000 would not be sufficient for that much labor. Nearly immediately they came back with the sum doubled. That may sound good on the surface, but to me it was a blaring red flag: it sounded to me like they undervalued my work and were trying to seriously lowball me. Not a good start. I told them that amount may work and went on with my day. 6 days later I was told that the doubling was approved and we could sort out the fine details and an NDA somewhat later, though I needed to work out with my company whether or not moonlighting was allowed.
The next conversation unfortunately only brought more red flags. The first hint of impacting mGBA development had dropped: suddenly they were talking about delaying an mGBA release for a nebulous amount of time, directly contrary to what had been discussed prior. I was given an expectation of “maybe” delaying a release and GB/GBA related commits until the Pocket shipped, which didn’t sound too horrible given the expectation of launching in 2020 (possibly in the late summer), and given how long mGBA updates tend to take. I could still work on it, especially UI-facing stuff unrelated to GB/GBA, just not push my emulation fixes until the agreed upon date.
Then things got even worse. The next conversation was suddenly about delaying until after the Pocket was released. At no point was such a thing discussed prior, but it was worded like it was. This was explained as putting a little bit of extra time after the release, though the reason was left implied; presumably they didn’t want mGBA stealing the Pocket’s thunder, as though that were at all a realistic scenario. And the amount of extra time proposed? Six months.
By now it was clear to me that they didn’t respect me at all and there was no truth to the claim of the job not impacting my open source work. It all seemed to point to them seeing me as a source of cheap labor and then didn’t care at all how it impacted me, so long as I did the work for them. This is all too common in industry, and really reflects on how little Analogue seems to actually care about the retro emulation community as a whole. In conversations with other emulator developers over the past it was spelled out that kevtris thinks of FPGA-based hardware emulation as inherently superior to software emulation, and is plenty willing to keep research he does towards the goal of perfecting his hardware solutions private, all while claiming that not only is it not even emulation (with an asterisk of course), it’s also the only route to perfect emulation. Neither of these claims is true.
It also shows that Analogue seems to inherently disrespect software emulator developers who work for free on passion projects, as they aren’t “willing” to get down and dirty with probing the chips, ignoring the fact that we often don’t even have the expensive tools necessary or any of the expertise required to know where to start. When I asked kevtris if he would release all of the documentation he had on GB/GBA he had said yes, after the Pocket shipped, but I’ve yet to see him release any of the documentation he’d promised for other projects, such as SNES, which have had products on the market for years now. The most I’ve seen is extremely basic overviews of a handful of obscure GBA behavior that, while valuable, is assuredly a tiny fraction of what he has. Further, in the pursuit of marketing their “perfection”, Analogue trademarked a logo of the text “fpga” (in lowercase), seemingly to give the impression that FPGAs are novel or proprietary, when in fact there are open source projects like the MiSTer hardware that do the exact same thing as many Analogue devices, but without the marketing fluff and without the money driving the pursuit of perfection. I’ve yet to see any proof that they care about this perfection for reasons of preservation, only profit. Until such time, I can only assume that claim too is more marketing fluff.
So in the end, I walked. If I’m not worth their money or respect, they’re not worth my time. And a good thing, too, since as of writing the product still hasn’t shipped, nearly two years later.