Skip to content

ci: add GitHub Actions workflow for build and release#17

Open
gautamkrishnar wants to merge 1 commit into
PlummersSoftwareLLC:mainfrom
gautamkrishnar:main
Open

ci: add GitHub Actions workflow for build and release#17
gautamkrishnar wants to merge 1 commit into
PlummersSoftwareLLC:mainfrom
gautamkrishnar:main

Conversation

@gautamkrishnar

@gautamkrishnar gautamkrishnar commented Jun 29, 2026

Copy link
Copy Markdown

Summary

  • Adds a GitHub Actions workflow that assembles trpad.asm with MASM32 and links with Crinkler to produce trpad.exe
  • Build artifact (trpad.exe) is downloadable from every workflow run
  • Automatically creates a GitHub Release with trpad.exe attached when a version tag (v*) is pushed

How it works

  • MASM32 SDK is installed via two-stage 7z extraction from the official installer (no commandline flag was available to do non interactive installation)
  • Crinkler v3.0a is downloaded from its GitHub releases
  • Windows SDK lib path is resolved dynamically from the runner
  • Generates QR Code for the entrire EXE

Example Zip file with exe download: https://github.com/gautamkrishnar/TinyRetroPad/actions/runs/28610708506

@Gunzinger

Gunzinger commented Jun 29, 2026

Copy link
Copy Markdown

This seems like great fun 😄
I just spent some time trying to create and minimize a QR code from the resulting crushed binary, as the current trpad.exe binary (2794B) is slightly below the maximum binary content size of a QR code (2953B with v40, 2809B with v39 used here);

trpad-min-target

This is the smallest I could get (4036B of PNG for the currently latest version of trpad.exe [2794B]), I had no luck getting even smaller versions with webp/avif and wanted to keep at least one pixel wide border/margin.

Since this only requires qrencode and oxipng it might be fun to integrate it into the CI pipeline in the release job;

I used:

qrencode -o trpad.png -s 1 -m 1 -8 -r trpad.exe
oxipng -o max -z -f 9 --strip all trpad.png

Note that most QR code readers seem to assume UTF8 when decoding, I had to use zxing-cpp to properly decode the QR code back to binary format, available from e.g. ubuntu package zxing-cpp-tools:

> ZXingReader -bytes trpad.png > trpad-roundtrip.exe
> sha256sum trpad.exe
3079f188d92f99e7f7c807c367c2af4d3f78a547e6c2813eddf18346bc01c578  trpad.exe
> sha256sum trpad-roundtrip.exe
3079f188d92f99e7f7c807c367c2af4d3f78a547e6c2813eddf18346bc01c578  trpad-roundtrip.exe

@gautamkrishnar

gautamkrishnar commented Jul 2, 2026

Copy link
Copy Markdown
Author

@Gunzinger thanks for the suggestion, just added QR code generation as well 🤝

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants