Digging up old projects: FreeWheel

I received an email a few days ago asking whether I still support the FreeWheel utility. This is something I wrote back in the mists of time to provide mouse wheel support for the Amiga. It wasn’t a mouse driver as such, instead it set up an input handler that watched for “Newmouse” events, and attempted to translate them into keypresses or slider nudges, or whatever was appropriate for the window currently under the cursor.

The other nice thing FreeWheel could do was to adjust the mouse speed in very fine increments. Instead of merely multiplying mouse movements by an integer constant, it multiplied by a fractional amount, and maintained a remainder, so if you wanted your mouse to be 23% faster, FreeWheel could oblige.

The requested change was simply to provide a 68000-compatible build, since the build on Aminet was for 68020+ only, and as it happens this was a really easy request to fulfil, so… some 14 years after the first release on Aminet, a new build is now available!

More PACE adventures

After I ported the Pacman core to the Chameleon 64 last week, Mark McDougall suggested that Moon Patrol would be a good project to port next, so that’s exactly what I’ve done.


I’ve also improved the Pacman port somewhat, cleaned up the clocking arrangments (now I have a clearer idea of how they’re supposed to work) and integrated the Chameleon_CDTV entity, which means the CDTV infra-red controller can now be used.

I’ve also ported Moon Patrol to the MiST board, and to my Frankensteined C3 board.

The downside of Moon Patrol is that it requires a two-button controller, since one is used for fire and the other for jump.

Binaries for the Chameleon64 can be found here, while a patch against current PACE SVN can be found here.

Pacman on the Chameleon 64!

Having seen the PACE project’s Pacman core running on the MiST board, I wanted to try and get it running on the Chameleon. This task is made much easier by the existence of Peter Wendrich’s Chameleon_io entity, which abstracts away the messy details of reading the C64’s or Docking Station’s joystick ports.

This is just a quick-and-dirty port, but should be playable. The coin switch is mapped to the leftmost button on the Chameleon, while the start button is the middle button.
To play, you’ll need a joystick in C64 port 1, or attached to the docking station. (So far I’ve only tested with a real C64.)

The core can be found here.

Source code (in patch form against today’s PACE SVN) can be found here. Because I used Till Harbaum’s port to the MiST board as a starting point the patch adds support for his board as well, and also my Cyclone-3-board-from-EBay.

Trials, Tribulations and Toolchains

Edit: Future me, nearly 10 years later, says don’t bother attempting these steps unless you really have no alternative. My comment below about guides found on the net quickly becoming obsolete now applies to this post!

If you’re using Ubuntu or a derivative, then the arm-none-eabi-… toolchain is now in the repos, so can easily be installed with apt, and there’s even an m68k gcc cross compiler too.

<Historical content resumes…>

To build the OSD firmware for the Minimig projects, a cross-compilation environment is needed. Configuring GCC for this task can be an arcane process, and aspects tend to change from time to time, so guides found on the net quickly become obsolete. For instance, guides recommending the target “arm-elf” will fail with the latest GCC. Instead we need to use the target “arm-none-eabi”.

Here’s how I built a toolchain for building both M68K (Chameleon Minimig port) and ARM (Original Minimig and MiST) versions of the firmware:
Continue reading