19 Jul 2022

Return of the Bockers

The Last Two Years

The past two years have been really difficult for me, but I finally feel like I'm in a state where I can get back to work on WashingtonDC, so I'm un-abandonning the project. The cancer treatments I've received over the past two years have taken a great toll on me both mentally and physically, and I'm not sure if I'll ever be able to work as hard on WashingtonDC as I used to.

Over the past two years, I've undergone seven rounds of chemotherapy, twenty-five doses of targeted radiation, approximately ten different surgeries, and a clinical trial for a new form of immunotherapy. But the biggest and most damaging treatment of all is that my left leg had to be amputated above the knee. This has been the biggest reason for my lack of activity; in addition to limiting my mobility, it has also left me in a state of unending chronic pain.

For obvious reasons the large sarcoma on my left leg is gone but it had already metastasized to my lungs back in 2020 before I wrote my last blog post, so I still have cancer. I've actually got another surgery next week so that might lead to another period of WashingtonDC not being worked on, although it won't be nearly as long as the last one.

Recent changes

Since I've gotten back to work, I've focused primarily on quality-of-life features. The following new features have been added:

  • loading of compressed MAME chd images
    • these often take up significantly less space than the GDI format
      • the most extreme example is Namco Museum, which is 1.2GB as a GDI but only 14 MB as a chd
      • most games are somewhere around 500MB as a chd, and 1.2GB as a GDI
    • they're also entirely contained in a single file, unlike GDI which consists of a directory with several files inside
    • they can be created from GDI images using the chdman program which is included with MAME
  • loading and direct-booting ELF files
    • this is primarily of interest to homebrew developers who test their creations on emulators
    • previously WashingtonDC only supported loading raw binaries of SH-4 programs which had to be created from ELF files using the objcopy program
    • symbols are not loaded (yet)
      • as before, remote GDB instances can load symbols from elf files so you can use that when debugging
  • system call dumps are no longer required when direct-booting ELF or raw binary programs
    • firmware image (-b option) and flash image (-f option) are still required
    • the new direct-boot implementation copies the system calls from the firmware image into where they would be in memory after a normal boot.
  • the arguments taken by the washingtondc program itself have been changed
    • the new argument format are documented in README.org
    • this is being done because i had received feedback that the old format was causing confusion for some users.
    • the game to load is now specified as the first non-option argument
      • by "non-option argument", i mean the first argument that does not start with a hyphen (-) charactor or the first argument that follows two hyphens next to each other (–)
      • the old -m flag which used to specify which disc-image to load (for .gdi and .cdi images) is now gone
      • the old -u flag which used to specify which binary program to direct-boot is now gone
      • regardless of whether you're loading .cdi, .gdi, .chd, .bin, or .elf, you do so by making that image the first non-option argument on the command line
    • this will cause problems for people who are used to the old arguments, and I'm sorry for that
      • this seemed like the best time to change things up since I doubt there are any people who are still using WashingtonDC after two years of abandonment.

WashingtonDC is GPL again

Regarding the licensing situation, I regret my decision to change WashingtonDC's license to BSD two years ago. I was in a state of panic when I did this, and I was worried that if my medical condition deteriorated too fast then I wouldn't have a chance to work on WashingtonDC again, and I really didn't want it to be abandoned after my death. The BSD license seemed like a good way to maximize an orphaned project's usability.

In general I'm not a particularly big fan of permissive licenses like BSD, so I changed the license back to GPL in commit a468ba7b0f after it became apparent that I was not going to die in the immediate future. I wish I had never relicensed WashingtonDC to BSD, but compared to all the other troubles I've had it's not that big of a deal.

In general the way licensing changes work is that each commit of WashingtonDC is licensed independently of the other commits; that is to say that the license that is included with any given version of WashingtonDC is the license that applies to that version of WashingtonDC. It cannot be applied to a version of WashingtonDC that uses a different license. So any code taken from a commit prior to b58f004a59 is licensed under the terms of the GNU GPL. Any code taken from commit a468ba7b0f or any commit after commit a468ba7b0f is also GPL. Any code taken between b58f004a59 and a468ba7b0f is licensed under the terms of the BSD license.

I'd prefer it if people only forked from GPL-licensed commits and not the BSD-licensed commits because, as I stated above, I regret relicensing WashingtonDC under the BSD license. However, what's done is done so if you want to fork from one of the BSD-licensed commits then you can. Just keep in mind that the BSD license is not the same thing as public domain; it does have terms and I expect anybody who forks from a BSD-licensed commit to abide by those terms, just as I expect anybody who takes code from a GPL-licensed commit to abide by the terms of the GPL.

All posts