# A statement on the platform wars

> A fun bit of ancient code revival and partycoding to say something about the
> (non)sense of platform flamewars. Happy Trans Day of Visibility!

Code: blackle, poro, yx
Black magic: poro
Video 'editing': poro

---

Here's a simple compofiller for the wild compo of Revision 2024. It's a little
binary that works on uh. several platforms. It's based on old code from 4 or 5
years ago I had lying around, I've updated and fixed it a bit and made it more
thematic to the compo day (March 31, also TDoV). Some of the platforms were
tested on real hardware, but others weren't because I couldn't find someone at
the party who has this specific piece of hardware.

More info specific to each platform:
* C64:
  * .prg file is a truncated version of the normal file, because the latter is
    too large to fit into the C64's address space. If you don't trust me, run
    `head -c 4096 final.rom > final.prg` yourself.
    (The file has to be this size to keep the DOL/GameCube file parser happy.
    It's just padding with zeros, though, there's nothing important and
    this truncation can be done safely.)
  * loading procedure:
    1. load the PRG as usual
    2. SYS 2051 (yeah, sorry, BASIC stub would conflict with a bunch of stuff)
* CGB:
  * doesn't contain the Nintendo logo, won't work on real HW unless rgbfix'ed
* GBA:
  * doesn't contain the Nintendo logo, won't work on real HW unless gbafix'ed
* GameCube:
  * Hopefully™ works, VI setup is finnicky. Should work with an ActionReplay,
    anything else not guaranteed. Doesn't work with the Homebrew Channel on the
    Wii, as that resets the entire machine, which would mean setting up the AVE
    (Audio Video Encoder? something like that, an external chip accessed over
    I2C that's required to get video to work) would be required as well, which
    was too much effort.
  * But at least it works in Dolphin
  * Used the source code of https://demozoo.org/productions/197721/ as a base
* Linux:
  * Execute by invoking `sh <filename>`, don't launch the binary directly
    (doesn't work, sadly).
  * Code recycled from https://www.pouet.net/prod.php?which=79616 , but
    compressed using smol (in dlfixup mode) and oneKpaq.
* MS-DOS:
  * CGA video mode
  * Code recycled from https://github.com/lunasorcery/cga-trans-flag
* NDS:
  * Doesn't contain the Nintendo logo, won't work on real HW unless ndstool'ed
  * Tested on a DSi, with the Homebrew Menu (from the devkitPro repos) launched
    directly from Unlaunch 0.8. Not sure how well flashcarts like it.
  * Known not to work on DeSmuMe, because it wants all the parts of the header
    to be completely correct. works in melonDS though.
* PDF:
  * Works in mupdf, Evince (Poppler) and PDF.js, so it should(TM) work for
    everyone
* SNES:
  * Should work with an SD2SNES/Fxpak, most likely doesn't with a Super
    Everdrive
  * Used hte source code of https://www.pouet.net/prod.php?which=70163 as a base
* ZIP: this file contains its own source code :)

There would've also been VTech V.Smile support, but sadly we didn't have enough
time for that.

Compilation requirements: make {un,}zip cc65 rgbds devkit{ARM,PPC} python3 nasm

---

I (poro) would also like to thank everyone who helped me out at Nordlicht 2023
with my luggage being lost by the airport situation, y'all saved my ass.

