536959619f
Find small optimizations to improve the average performance of the blitter, especially in the odd-aligned case. - Odd-aligned PEA exit is 2 cycles faster per line - Odd-aligned JMP exit is 2 cycles faster per line - Odd-aligned LDA exit is 6 cycles faster (eliminated long store) - Merged setting the entry opcode and offset to convert 2 8-bit store into a single 16-bit store (save 6 cycles per line) - Load and save the full word for the high bytes. Cost 2 cycles but enabled the 6 cycles saved for the LDA case. |
||
---|---|---|
.github/images | ||
.vscode | ||
archive | ||
demos | ||
docs | ||
emu | ||
macros | ||
ORCACDefs | ||
ref | ||
src | ||
tools | ||
_FileInformation.txt | ||
.gitignore | ||
build-image.bat | ||
package-lock.json | ||
package.json | ||
README.md |
Generic Tile Engine for the Apple IIgs
A high-performance library for writing tile-based games for the Apple IIgs personal computer in 65816 assembly langugage. Unlock the full, 16-bit potential of the last machine of the Apple ][ line.
Introduction
The Generic Tile Engine (GTE) project is a tile engine built to exploit the unique hardware capabilities of the Apple IIgs personal computer. It supports the Apple IIgs super hires graphics mode (320x200, 16/256 colors) and provides two full-screen independent scrolling layers along with software sprites. The API and core functionality of the library is inspired by the graphics hardware of the NES/SMS/SNES/Genesis console era.
Parallax scrolling of two full-screen static layers
Building from Source
The library iscurrently implemented as a set of source files that must be compiled into a GS/OS application. A set of example project can be found under the demos
folder. Each demo folder uses a package.json
file to define the build targets and a build of each application can be created by executing a npm run build
command.
Each demo application has a build script that also builds the toolset and copies it, along with the demo S16 application file, to the target disk image.
Dependencies
- node
- merlin32 (1.1.10+)
- cadius
GTE uses the merlin32 1.1.10 assembler to compile its source into GS/OS OMF files and Cadius to copy those files onto a ProDOS disk image. The paths to these tool can be set in the package.json
file.
An empty 2MG disk image is included in emu/Target.2mg
and is used as the default location for copying demo applications. This image can be mounted in any IIgs emulator.
Build of demo app in the IIgs Finder
Documentation
Please refer to the GTE Toolbox documentation.
References
- Apple IIgs Tech Note #70: Fast Graphics Hints
- Super Merryo Trolls
- Coding Secrets of Wolfenstein IIgs
- Apple IIgs Graphics and Sound College
- John Brooks' Fast GS graphics notes
- Adaptive Tile Refresh
- A Guide to the Graphics of the Sega Mega Drive / Genesis
- Jon Burton / Traveller's Tales / Coding Secrets
- Lou's Pseudo 3d Page
- A Great Old-Timey Game-Programming Hack