#!/bin/bash
# build.sh - assemble the SwiftLink opponent module and install it on a copy of the game disk.
#
#   ./build.sh [outputDisk.d64]
#
# The module is a drop-in replacement for the stock modem driver: same $E000 jump table, same shared
# variables, same wire protocol.  Only the bottom layer changes - a 6551 ACIA on a SwiftLink cartridge
# instead of the bit-banged user-port UART.
set -e
cd "$(dirname "$0")"
ROOT=".."
OUT="${1:-$ROOT/Modem_Wars_SwiftLink.d64}"
mkdir -p build

ca65 -t none -I "$ROOT/disassembly" -o build/swiftlinkDriver.o swiftlinkDriverE000.s
ld65 -C link.cfg -o build/swiftlinkDriverE000.bin build/swiftlinkDriver.o

size=$(stat -c%s build/swiftlinkDriverE000.bin)
if [ "$size" != "4096" ]; then
    echo "FAIL: module is $size bytes, must be exactly 4096"
    exit 1
fi

python3 injectDriver.py build/swiftlinkDriverE000.bin "$ROOT/Modem_Wars_1988_Electronic_Arts_b4.d64" "$OUT"
echo "built $OUT"
