cool-bun-demo/README.md

51 lines
1.6 KiB
Markdown
Raw Normal View History

2024-09-26 21:32:04 +00:00
## Cool Bun Demo
2024-09-22 12:13:38 +00:00
2024-09-26 21:32:04 +00:00
![demo](./demo.gif)
2024-09-22 12:13:38 +00:00
2024-09-26 21:32:04 +00:00
Built for [The Obligatory Amiga Blitter Video](https://makertube.net/w/eV545ku522sRq8CTcxDuFZ).
2024-09-22 12:13:38 +00:00
2024-09-26 21:43:53 +00:00
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.
2024-09-26 21:32:04 +00:00
## Running
2024-09-26 21:34:58 +00:00
Click the mouse to escape any demo.
2024-09-26 21:32:04 +00:00
* `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.
2024-09-26 21:34:58 +00:00
* `keyboard_interrupt`: Tests using `input.device` to access the keyboard.
2024-09-26 21:36:22 +00:00
* `blitter_speed_test`: Get the speed of blitter vs. CPU memory operations
* `bun_test`: Run some unit tests (yes, really!)
2024-09-26 21:32:04 +00:00
This will get 50 fps on an 020, and 25 or lower on an 68EC020 and below.
2024-09-22 12:20:58 +00:00
2024-09-22 12:12:37 +00:00
## Building
### Vamos
2024-09-26 21:43:53 +00:00
You'll want [Vamos](https://github.com/cnvogelg/amitools/blob/master/docs/vamos.md),
2024-09-26 21:32:04 +00:00
and [SAS/C](https://www.amigaclub.be/blog/steffest/2/amiga-c%20compilers)
2024-09-26 21:43:53 +00:00
& [GenAm from DevPac](https://archive.org/details/Devpac_v3.14_1994-12-16_HiSoft)
2024-09-26 21:32:04 +00:00
on Vamos's path:
2024-09-22 12:12:37 +00:00
```
2024-09-26 21:32:04 +00:00
# main
2024-09-22 12:12:37 +00:00
ruby ./image_converter.rb && touch images.s && vamos -- smake
2024-09-26 21:32:04 +00:00
# any others
vamos -- smake <other>
2024-09-22 12:12:37 +00:00
```
2024-09-26 21:32:04 +00:00
2024-09-26 21:38:17 +00:00
The image converter requires Ruby 3.2.4 and RMagick installed.
2024-09-26 21:32:04 +00:00
## 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.