Amiga programming examples
Go to file
alpine9000 fd81af3cca removed NDK prereq from bootblock 2019-06-11 19:23:21 +10:00
000.trackdisk
001.simple_image Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
002.sprite_display Removed conflicting ADF name 2016-03-14 13:49:20 +11:00
003.music Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
004.copper_bars
005.copper_vert
006.simple_blit Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
007.masked_blit Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
008.shift_blit Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
009.anim_blit Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
010.blit_speed Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
011.ehb_mode Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
012.ham_mode Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
013.dithered_ham Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
014.lace_mode Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
015.sliced_ham Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
016.copper_fun Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
017.dual_playfield Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
018.vert_scroll Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
019.hori_scroll Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
020.shrinkler removed NDK prereq from bootblock 2019-06-11 19:23:21 +10:00
021.calling_c Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
022.photons_bootloader Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
023.slideshow Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
024.simple_text Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
025.scroll_text Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
026.tile_hscroll Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
027.parallax Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
028.bs updates for test 1 2016-06-04 08:46:20 +10:00
assets File used for resize test 2016-03-31 08:40:56 +11:00
doc Cleanup 2016-05-03 10:21:00 +10:00
examples
include spiked playing samples 2016-05-02 18:56:03 +10:00
shared removed NDK prereq from bootblock 2019-06-11 19:23:21 +10:00
tools Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
.gitignore render pathways until empty column 2016-04-27 10:54:12 +10:00
LICENSE updated license 2016-06-03 20:52:32 +10:00
Makefile Got build working on newer OSX, included missing ADFs 2019-06-11 13:58:03 +10:00
README.md Update README.md 2016-06-03 20:40:58 +10:00

README.md

(re)Learning how to program an Amiga after a 20 year break

introduction

This repo contains example programs I have written as I re-learn how to program an amiga. The programs are written in assembler and directly access the hardware. Most of the examples have been tested using FS-UAE and my Amiga 500. Some require 1mb of chip ram, most work fine with 512kb.

Don't use this as an amiga programming guide. I don't do things the "correct" way. There are heaps of great guides out there if you want to do things the right way. My a68k asm vocab starts out pretty small, and grows only very slowly, so again, this is not guide on the best way to do things.

documentation

Most of the sites I have used during the learning process:

examples

Each example tries to introduce only one new concept, often building on the previous examples.

See each example's README.md for a limited description as well as a clickable link to run the example in your browser using my hacked version of Scripted Amiga Emulator

Most of the examples are only tested on a 512kb chip ram A500. Some examples have an option extended versoin that might require more chip ram, and in that case an A600 would be the best option.

cross development environment

These examples are developed on a mac using cahirwpz's AmigaOS cross compiler for Linux / MacOSX / Windows.

https://github.com/cahirwpz/amigaos-cross-toolchain

The support tools I have developed have additional requirements which you may not have on your system.

For a dump of what I did to install them see installing the cross development environment

building

Build all examples by running make at the top level directory.

Individual examples can be built by entering the directory and running make:

# cd 001.simple_image
# make

this will create a bootable ADF image in the bin directory.

Load this file directly into your emulator of choice as DF0:, or even better, run it on the real hardware.

emulators

The following are the emulators I have used so far:

they each have strengths and weaknesses, so it's worth giving them each a try.

tools

The following cross development tools have been developed to support the examples:

  • imagecon # create amiga compatible raw image data from true color images
  • resize # resize images ready for imagecon
  • croppa # crop images ready for imagecon
  • mapgen # generate amiga data from tiled maps
  • fade # generate data for fading between palettes
  • makeadf # make ADF disk image

external tools

The following cross development tools have been sourced from external authors:

  • shrinkler # compress for maximum compression, slow decompression
  • doynamite68k # compress for fast decompression

Each tool has a test to check if any changes you have made have broken basic functionality:

# cd tools/imagecon
# make test
______  ___   _____ _____ ___________
| ___ \/ _ \ /  ___/  ___|  ___|  _  \
| |_/ / /_\ \\ `--.\ `--.| |__ | | | |
|  __/|  _  | `--. \`--. \  __|| | | |
| |   | | | |/\__/ /\__/ / |___| |/ /
\_|   \_| |_/\____/\____/\____/|___/
#

or test all by running make test at the top level

license

Some of the code I have included in this repository is copyright by various authors and provided under various licenses. Copyright notices are preseved where possible.

Some of the tools use GPL licensed libraries which would mean they could only be distributed under the conditions of the respective version of the GPL.

All code without a copyright notice is licensed as per the terms in LICENSE.