Amiga blitter, copper, and sprite demo written in C and assembler for my Blitter video https://makertube.net/w/eV545ku522sRq8CTcxDuFZ
Go to file
John Bintz c9f1a55ebd Need genam too 2024-09-26 17:43:53 -04:00
images starting on the real thing 2024-05-27 14:58:13 -04:00
old starting on the real thing 2024-05-27 14:58:13 -04:00
system Move blitter commoon stuff to blitter header 2024-09-22 06:52:22 -04:00
.ccls starting on the real thing 2024-05-27 14:58:13 -04:00
.gitignore starting on the real thing 2024-05-27 14:58:13 -04:00
.rubocop.yml start on image converter 2024-06-03 12:46:32 -04:00
32x50 prepping for release 2024-09-26 17:32:04 -04:00
32x50_bun.c prepping for release 2024-09-26 17:32:04 -04:00
33x50 prepping for release 2024-09-26 17:32:04 -04:00
33x50_bun.c prepping for release 2024-09-26 17:32:04 -04:00
README.md Need genam too 2024-09-26 17:43:53 -04:00
any_position prepping for release 2024-09-26 17:32:04 -04:00
any_position.c prepping for release 2024-09-26 17:32:04 -04:00
blitter_speed_test starting on the real thing 2024-05-27 14:58:13 -04:00
blitter_speed_test.c starting on the real thing 2024-05-27 14:58:13 -04:00
blitter_test starting on the real thing 2024-05-27 14:58:13 -04:00
blitter_test.c starting on the real thing 2024-05-27 14:58:13 -04:00
bun.c More performance stuff 2024-09-22 07:32:13 -04:00
bun.h start on more precise topaz art replacement 2024-09-19 21:51:45 -04:00
bun_test buns can march 2024-06-02 14:37:37 -04:00
bun_test.c buns can march 2024-06-02 14:37:37 -04:00
copper-colors it works 2024-06-10 22:04:40 -04:00
demo.gif prepping for release 2024-09-26 17:32:04 -04:00
image_converter.rb 50 fps! 2024-06-13 12:30:39 -04:00
images.s some text stuff, pending cleanup 2024-06-14 09:16:01 -04:00
keyboard_interrupt Keyboard handling, just get this up to 50fps 2024-09-22 06:31:08 -04:00
keyboard_interrupt.c Keyboard handling, just get this up to 50fps 2024-09-22 06:31:08 -04:00
left_side prepping for release 2024-09-26 17:32:04 -04:00
left_side.c prepping for release 2024-09-26 17:32:04 -04:00
main binary 2024-09-22 07:32:44 -04:00
main.c OK this is CPU bound, much precalculating required 2024-09-22 07:36:27 -04:00
mask-bitplane 50 fps! 2024-06-13 12:30:39 -04:00
right_side prepping for release 2024-09-26 17:32:04 -04:00
right_side.c prepping for release 2024-09-26 17:32:04 -04:00
screen.c More performance stuff 2024-09-22 07:32:13 -04:00
screen.h More performance stuff 2024-09-22 07:32:13 -04:00
smakefile prepping for release 2024-09-26 17:32:04 -04:00
sprite-copperlist 50 fps! 2024-06-13 12:30:39 -04:00
sprite-data 50 fps! 2024-06-13 12:30:39 -04:00
topaz-bitplane 50 fps! 2024-06-13 12:30:39 -04:00
topaz-narrow.png 50 fps! 2024-06-13 12:30:39 -04:00
topaz.png start on image converter 2024-06-03 12:46:32 -04:00
types.h More code cleanups 2024-09-19 13:03:46 -04:00

README.md

Cool Bun Demo

demo

Built for The Obligatory Amiga Blitter Video.

Uses a bunch of C and Assembler code to drive the blitter, sprites, and copper to display high color Topaz art overtop of flying cool bun logos.

Running

Click the mouse to escape any demo.

  • main: Main demo
  • 32x50, 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 using input.device to access the keyboard.
  • blitter_speed_test: Get the speed of blitter vs. CPU memory operations
  • bun_test: Run some unit tests (yes, really!)

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 & GenAm from DevPac on Vamos's path:

# main
ruby ./image_converter.rb && touch images.s && vamos -- smake

# any others
vamos -- smake <other>

The image converter requires Ruby 3.2.4 and RMagick installed.

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.