diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..1659883 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,46 @@ +on: [push] + +jobs: + cicd_pipeline: + runs-on: ubuntu-latest + name: Run assembly and disk image CICD pipeline + steps: + # CHECKOUT AND ASSEMBLE ON EVERY PUSH, ANY BRANCH + - uses: actions/checkout@v1 + - name: Install Merlin + uses: digarok/install-merlin32-action@v0.1.3 + - name: Assemble Source + run: | + merlin32 -V macros\ asm\link.s + + - name: Install Cadius + uses: digarok/install-cadius-action@v0.1.3 + + - name: Make Bootable ProDOS Image + if: startsWith(github.ref, 'refs/tags/v') + run: | + cadius createvolume gslaplay.po gslaplay 800KB >/dev/null + cadius addfile gslaplay.po /gslaplay/ asm/play.sys16 >/dev/null + + # EVERYTHING BELOW IS ONLY WHEN VERSION TAGS PUSHED (i.e. tag like "v0.1") + - name: Create Release + id: create_release + if: startsWith(github.ref, 'refs/tags/v') + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + + - name: Upload Release Asset - 800KB ProDOS Image + if: startsWith(github.ref, 'refs/tags/v') + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./gslaplay.po + asset_name: gslaplay.po + asset_content_type: application/octet-stream + \ No newline at end of file diff --git a/README.md b/README.md index f9db4af..89ee996 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ New Apple IIgs Animation file format ... GS LZ Byte Compressed Animation - Inspired by Deluxe Animation Run/Skip/Dump, and FLI/FLC with similar properties. - I replace the "Run" with a dictionary/frame buffer copy from the existing buffer to the existing buffer. This is able to runlength not just a single byte, but a repeating pattern of arbitrary length. - Care is taken in the encoder to make sure the 65816 does not have to cross bank boundaries during any copy. This is so we can use the MVN instruction and also reduce the number of bank checks in the code. --- (We have an opcode to indicate "source data bank has changed".) + - (We have an opcode to indicate "source data bank has changed".) - Goals include a good balance between file size, and playback performance (since one often makes a trade off with the other). ----- @@ -41,14 +41,13 @@ File Offset | Data | Comment 0xC | {Height} `0x00C8` | (16-bit word) Height in bytes, typically 200 == 0x00C8 0xE | {FrameLength} `0x8000` | (16-bit word) Frame size in bytes, since a "Frame" may contain more than just the width * height, worth of pixels. For now this is `$8000`, or 32768 0x10 | {FrameCount} | (32-bit long) Frame Count (total, including ring frame) +| | _HEADER END HERE_ | 0x14 | _First data chunk...._ | .... ... | _Next data chunk...._ | .... until end of file After the header comes AIFF style chunks of data starting at file offset `0x14`, basically a 4-byte chunk name, followed by a 4-byte length (inclusive of the chunk header). The idea is that you can skip chunks you don't understand. -File Offset: -0x14 First Chunk (followed by more Chunks, until end of file) ### Data Chunk Definitions ##### INIT