4 ms·
As a whole, I'm much more happy that I did than if I hadn't. Over the past 13 years, I've been developing console emulators for 12 systems and counting. If my
by byuu 9y ago
As a whole, I'm much more happy that I did than if I hadn't.
Over the past 13 years, I've been developing console emulators for 12 systems and counting. If my work were closed source, I would not have received patches and contributions from 30+ people and counting. And I wouldn't have met several amazing people who ended up becoming very good friends for a very long time. One in particular has been amazing in helping me open up and be less guarded all the time.
I was also able to sell one complete commercial license, and received a partial payment for a license from another company that then vanished (I tried to refund the latter, but e-mails to them no longer work.) I've received a very large number of donations over the years. Should be around $5000 in license sales, $7500 in donations, and another $2500 to fundraise hiring a person to decap chips and extract program code from them for improving emulation. I've also had multiple people make very specialized custom hardware that has helped me out more than words can express. I've had people trust me and lend me thousands of dollars worth of rare games for the purpose of verifying information for emulation and then returning them.
But I would be lying if I said it was all good. At the time of writing, I am aware of eighteen forks of my emulator. Two of these projects in particular never talk to me or submit upstream fixes, and instead commit changes to their own repository with extremely derogatory remarks about me and my programming skills. Two of these intentionally undermine and sabotage the entire goal of what I've been working on from day one (namely, adding known-incorrect hacks to speed up emulation. My distaste for hacks was the whole reason I got involved with emulation in the first place.)
Most of the forks of my software are from versions I released either three and a half years ago, or six years ago. A small number of them are quite popular, meaning my work may as well have been discontinued for those users.
One fork collects over $2,000 a month on Patreon off the backs of others' emulator cores including mine -- even ones that are explicitly non-commercial. One developer just wantonly ignored my GPL license and sells my emulator on Steam, doesn't provide any attribution or credit for using my work, and plays games when people try and get the source code to said work (but to be fair, one person did obtain it.) That one was made particularly worse because he wasted a good 20+ hours of my time over the span of six months promising repeatedly to license my emulator, only to back away at the last minute and pull this without even telling me.
I've had people very blatantly read through my source code to improve their emulators and documentation, and not just avoid giving me credit, but outright deny having ever looked at my code. In the most egregious case, someone copied a set of opcode mnemonics from a CPU core. Only ... that CPU core was never publicly documented: I made up every single mnemonic myself, and the only place those mnemonics existed were in my source code.
I've ended up with two people who have harassed and impersonated me online for six and eleven years respectively now, for reasons I really can't comprehend. I've had half the main staff of the most popular emulator out there make a passtime of digging through my 400K-line codebase, looking for individual lines that were poorly written to mock completely out of context in a public chat area -- and they're people I still have to work with often.
But what I always remind myself is, it's easier to dwell on the negatives. It's possible I could have made a lot more money with commercial licensing sales if my work were closed source. But my software is vastly better than it would be without all the help I've received over the years due to being open source. And I benefited a lot from other open source emulators, so it would be pretty selfish to not return the favor to others. There's no sense in me trying to force people to use my version of my software. I'd rather have a smaller number of users who actually fully appreciate what I'm going for. And I have a pretty thick skin at this point for the rest of it.
That said, do put as much thought as you can into this before releasing as open source. Once you do so, you can never go back. Even if you try, your work will be forked at the last open source release. But speaking for myself, if I could go back and do it all again, I would still keep everything open source.
- haydenlee 9y agoAppreciate the detailed write-up.
- pryelluw 9y agoJust wanted to say that if it hadnt been for people like you I wouldnt have learned so much about writing code. Thank you. :)
- raybb 9y agoIf you don't mind me asking, are you still working full time along with developing the emulators? Have you ever run into any legal trouble with making them?
- byuu 9y agoI am still working on them all, yes. No legal trouble so far. I don't use any information that isn't publicly available (although let's be honest, no one can truly say that all public documentation was created clean room; and emudevs can't know without having seen the original or being informed of this), and I also don't include any copyrighted code. Only very small boot IPLROMs that qualify for fair use (ineligibility for copyright) under Lexmark v SCC. The real kicker is the Game Boy Advance. It requires a 16KiB BIOS to boot. Any attempts at a high level emulation or a recreation of the ARM assembly code will result in inaccurate emulation, which is a bridge I won't cross. Games can literally read the whole BIOS out (unofficially, but it's possible.) Thus, games can even go as far as to compare every byte of the BIOS. Without the BIOS, the detection of an emulator is an absolutely trivial matter. I suspect it would be safe to include it, but will not risk it after Sony v Connectix -- easily the worst court precedent in the history of emulation. A judge who had absolutely no understanding of technical matters with regards to emulation and how his ruling created a perfect end-run against the possibility of ever producing a perfect, legal, free emulator. I'm also hamstrung on the coprocessor firmware included within many game cartridges. Titles using such things won't boot in higan like they will in emulators that use HLE, thus making my emulator more difficult to use than everyone else's.
- TrashMacNugget 9y agoI read through the entire post without realizing who wrote it. I just want to let you know your work is fantastic. Thank you for everything you've contributed to emulation.