Newer
Older
_____ ____ ____ __ _ _
| ___|___ \| ___| / /_ | | |_ ___ __ ___ _ __ ___ ___ ___
| |_ __) |___ \| '_ \ | | \ \ / / '_ ` _ \ _____| '_ ` _ \ / _ \/ __|
| _| / __/ ___) | (_) | | | |\ V /| | | | | |_____| | | | | | (_) \__ \
|_| |_____|____/ \___/ |_|_| \_/ |_| |_| |_| |_| |_| |_|\___/|___/
This repository is my work using llvm-mos with the Foenix F256 line of
computers. It's a somewhat random collection of things helpful to me and
will hopefully grow into something helpful to others.
-- Scott Duensing (scott@kangaroopunch.com)
REQUIREMENTS
============
I use Linux Mint Cinnamon as my development environment. Any Ubuntu derivative
should work as well - even under WSL.
INSTALLING
==========
At a minimum, you should run the following:
./build-llvm-mos.sh all
./build-merlin.sh
./update-defines.sh
SCRIPTS
=======
build-aesprite.sh - Downloads and builds the latest Aesprite.
build-tools.sh - Builds the included header and image conversion tools.
build-llvm-mos.sh - Builds the latest llvm-mos toolchain.
build-merlin.sh - Builds the Merlin32 assembler.
get-foenixmgr.sh - Downloads the latest FoenixMgr and dependencies.
pgz-thunk.py - Inspects contents of PGZ files.
start-quartus.sh - Runs Intel's Quartus tool (must install manually).
update-defines.sh - Updates the Merlin sample code and builds C headers.
update-ide-firmware.sh - Packages the latest firmware and copies it to the IDE.
HEADER TOOL
===========
The included header tool allows you to add a KUP, PGX, or PGZ program header to
a raw binary generated by llvm-mos or Merlin. Look at the examples for samples.
IMAGE CONVERTER
===============
The image converter loads images of various formats and attempts to convert them
into a format usable by TinyVicky. It's not very smart. Images need to be the
proper size for your intended use and have 256 or fewer colors. The result of
the conversion will be a "clut" file with the color lookup table in it as well
as an "indexed" file of the pixels in your image mapped to the color table.
The image converter can also take a bitmap and slice it into 8x8, 16x16, 24x24,
or 32x32 chunks for use as sprite data.
EXAMPLES
========
The included example code is always in a state of flux. This code is what I'm
using as I work on this repo. If you find something you think is broken, it
probably really is. I'm happy to help and answer questions on the Foenix
Discord server.