Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@yupferris
Last active February 11, 2019 12:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yupferris/3d27f8a845c895aed2c0dd6c5493e174 to your computer and use it in GitHub Desktop.
Save yupferris/3d27f8a845c895aed2c0dd6c5493e174 to your computer and use it in GitHub Desktop.
I beat exomizer by how much?

tl;dr

  • original released intro size: 4095 bytes
  • final size with new packer: 3892 bytes (203 bytes reduction, 4.9% better than released version)
  • best possible size w/ smallest exomizer decoder: 4001 bytes
  • best possible size w/ largest exomizer decoder: 4024 bytes
  • new packer gain over smallest exomizer size: 109 bytes (2.7% reduction)
  • new packer gain over largest exomizer size: 132 bytes (3.3% reduction)

========================================

I wasn't able to produce a working version of makeshift with the latest exomizer, but I was able to get a best compressed size, and it's open-source, so we can do some byte counting and figure out how large a working version could be. Some estimation here, but this should be quite close at the very least.

  • exomizer decoder sizes (from exodecrunch.s):
  • smallest exomizer decoder size (without literal sequences): 214 bytes
  • largest exomizer decoder size (with literal sequences): 237 bytes

NOTE that these do not include get_crunched_byte, which comes from eg. main.s (15 bytes)

  • smallest possible exomizer stub: 229 bytes
  • largest possible exomizer stub: 252 bytes

we also need basic upstart, which adds 14 bytes

  • smallest possible exomizer stub: 243 bytes
  • largest possible exomizer stub: 266 bytes

And cli/sei and a jump into intro code (assuming that's actually all it takes; it's likely there's also a jsr or more in addition to this); 5 bytes

  • smallest possible exomizer stub: 248 bytes
  • largest possible exomizer stub: 271 bytes

Finally, we need to include the relocation code, which exomizer would also have to use in order to unpack into BASIC mem for this intro (both my new and old packers are also paying for this, so it's only fair); 25 bytes

  • smallest possible exomizer stub: 273 bytes

  • largest possible exomizer stub: 296 bytes

  • makeshift compressed size with exomizer: 3728

  • best possible size w/ smallest decoder: 4001 bytes

  • best possible size w/ largest decoder: 4024 bytes

=========================================

new packer compressed size: 3524 bytes (204 bytes smaller than exomizer's compressed size)

new packer full stub size: 368 bytes (she thicc!)

  • minus relocation code (25 bytes): 343 bytes
  • minus cli/sei and basic upstart, jump into intro code: (18 bytes): 325 bytes
  • larger than best exomizer packer by 111 bytes (52% larger)
  • larger than worst exomizer packer by 88 bytes (37% larger)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment