gba_save 0.6.0

Tools for interacting with backup media on Game Boy Advance cartridges.
Documentation
name: CI

on:
  push:
  pull_request:

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always

jobs:
  test_none:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --no-run --message-format=json | tee results.json
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/none

  test_none_serde:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --features serde --no-run --message-format=json | tee results.json
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/none

  test_none_log:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --features log --no-run --message-format=json | tee results.json
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/none

  test_none_all_features:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --all-features --no-run --message-format=json | tee results.json
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/none

  test_sram:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --no-run --message-format=json | tee results.json
      env:
        RUSTFLAGS: -Clinker=arm-none-eabi-ld -Clink-arg=-Tgba.ld -Ztrap-unreachable=no --cfg sram
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/sram

  test_flash_64k:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --no-run --message-format=json | tee results.json
      env:
        RUSTFLAGS: -Clinker=arm-none-eabi-ld -Clink-arg=-Tgba.ld -Ztrap-unreachable=no --cfg flash_64k
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/flash_64k

  test_flash_128k:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --no-run --message-format=json | tee results.json
      env:
        RUSTFLAGS: -Clinker=arm-none-eabi-ld -Clink-arg=-Tgba.ld -Ztrap-unreachable=no --cfg flash_128k
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/flash_128k

  test_eeprom_512b:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --no-run --message-format=json | tee results.json
      env:
        RUSTFLAGS: -Clinker=arm-none-eabi-ld -Clink-arg=-Tgba.ld -Ztrap-unreachable=no --cfg eeprom_512b
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/eeprom_512b

  test_eeprom_8k:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rust-src
    - run: sudo apt-get install binutils-arm-none-eabi
    - run: cargo test --no-run --message-format=json | tee results.json
      env:
        RUSTFLAGS: -Clinker=arm-none-eabi-ld -Clink-arg=-Tgba.ld -Ztrap-unreachable=no --cfg eeprom_8k
    - run: cargo install parse_test_executable
    - run: echo "ROM_PATH=$(parse_test_executable results.json)" >> $GITHUB_ENV
    - run: arm-none-eabi-objcopy -O binary ${{ env.ROM_PATH }} test.gba
    - run: cargo install gbafix
    - run: gbafix test.gba
    - uses: Anders429/github-mgba-rom-test@config
      with:
        swi-call: 0x27
        read-register: 'r0'
        rom-path: test.gba
        success-code: 0  # Pass
      env:
        XDG_CONFIG_HOME: /home/runner/work/gba_save/gba_save/.mgba/eeprom_8k