Amiga blitter, copper, and sprite demo written in C and assembler for my Blitter video
https://makertube.net/w/eV545ku522sRq8CTcxDuFZ
images | ||
old | ||
system | ||
.ccls | ||
.gitignore | ||
.rubocop.yml | ||
32x50 | ||
32x50_bun.c | ||
agnus.png | ||
basics | ||
basics.s | ||
better_startup | ||
better_startup.c | ||
blitter_speed_test | ||
blitter_speed_test.c | ||
blitter_speed_test.q | ||
blitter_test | ||
blitter_test.c | ||
bun_test | ||
bun_test.c | ||
bun.c | ||
bun.h | ||
copper-colors | ||
image_converter.rb | ||
images.s | ||
keyboard_interrupt | ||
keyboard_interrupt.c | ||
main | ||
main.c | ||
marquee.svg | ||
mask-bitplane | ||
NOTES.md | ||
README.md | ||
screen.c | ||
screen.h | ||
smakefile | ||
sprite-copperlist | ||
sprite-data | ||
topaz2.png | ||
topaz-bitplane | ||
topaz-narrow.png | ||
topaz.png | ||
types.h |
Running
main
This will get 50FPS on an 020, and 25 or lower on an 68EC020 and below. There's a branch related to precaching even more to get the speed faster but I'm defering that until later.
The best way I can think of to make this ridiculously fast is for a script in Ruby or Python to calculate every blitter register for every frame of data for bun renders and clears, store that in a list of words, and rip through those lists in Assembler, shotgunning the values directly into the registers without the C code needing to track bun positions and bun clears. That's a project for another day.
Building
Vamos
You'll want Vamos and SAS/C on Vamos's path:
ruby ./image_converter.rb && touch images.s && vamos -- smake