Amiga blitter, copper, and sprite demo written in C and assembler for my Blitter video
https://makertube.net/w/eV545ku522sRq8CTcxDuFZ
John Bintz 623e51d164 | ||
---|---|---|
images | ||
old | ||
system | ||
.ccls | ||
.gitignore | ||
.rubocop.yml | ||
32x50 | ||
32x50_bun.c | ||
33x50 | ||
33x50_bun.c | ||
README.md | ||
any_position | ||
any_position.c | ||
blitter_speed_test | ||
blitter_speed_test.c | ||
blitter_speed_test.q | ||
blitter_test | ||
blitter_test.c | ||
bun.c | ||
bun.h | ||
bun_test | ||
bun_test.c | ||
copper-colors | ||
demo.gif | ||
image_converter.rb | ||
images.s | ||
keyboard_interrupt | ||
keyboard_interrupt.c | ||
left_side | ||
left_side.c | ||
main | ||
main.c | ||
mask-bitplane | ||
right_side | ||
right_side.c | ||
screen.c | ||
screen.h | ||
smakefile | ||
sprite-copperlist | ||
sprite-data | ||
topaz-bitplane | ||
topaz-narrow.png | ||
topaz.png | ||
types.h |
README.md
Cool Bun Demo
Built for The Obligatory Amiga Blitter Video.
Running
Click the mouse to escape any demo.
main
: Main demo32x50
,33x50
,left_side
,right_side
: Rendering Cool Bun in various locations on screen.any_position
: Cool Bun flies around like a DVD player pause screen.keyboard_interrupt
: Tests usinginput.device
to access the keyboard.
This will get 50 fps on an 020, and 25 or lower on an 68EC020 and below.
Building
Vamos
You'll want Vamos and SAS/C on Vamos's path:
# main
ruby ./image_converter.rb && touch images.s && vamos -- smake
# any others
vamos -- smake <other>
Performance
The best way I can think of to make this way faster 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.