Bun Runner Devlog -- 2024-10-25

October 25, 2024

Lots of progress this week!

  • Full joystick handling, including getting the jetpack working and decent jumping physics
  • Drawing lots more stuff on screen:
    • Textured 4 bitplane floors
    • 1 bitplane ceilngs
    • The jetpack meter
  • Collisions with the floor, ceiling, and walls work
A cartoon rabbit running around in a world of floors and ceilings

I also fixed up some really stupid bugs and got the game working on my MiSTer and A1200:

Bun Runner running on my Amiga 1200
Bun Runner running on my MiSTer

Additionally, I tightened up the art pipeline so when I’m creating assets, it’s easy to get them into the game. I will need to figure out the best way to automate more of the XPK compression, too.

Next I’ll be getting the rest of the draw operations for the background into the game and spreading the writes to the double buffer over a few frames.

Bun Runner Devlog -- 2024-10-18

October 18, 2024

Going to write up a blog post every week with the progress of my finite-at-first runner for the Amiga. My goals:

  • write something large in Assembler
  • learn as many of the Amiga subsystems as I can
  • make an entertaining, easy-to-pick-up game with as many modern sensibilities as possible

I have no timeline to get a WIP out for testing because I’ve never worked in Assembler nor this deeply with the Amiga and AmigaOS before!

This week:

  • set up the main game project
  • extracted out relevant code from some things I posted to Mastodon
  • cleaned up keyboard, mouse, and joystick handling, using OS routines for the first two, and direct CIA access for the joystick
    • The two dots in the upper left are the state of the joystick
  • set up file logging for debug messages as printing to stdout while I’ve turned off enough OS things doesn’t work, but writing to a file does
  • cleaned up my assembler XPK art compressor and made it more generic so I can compress more objects into different files as needed (think sprites vs. blitter objects vs. backgrounds vs. music)
  • Got rabbit rendered on the screen and movable with the joystick
  • Animated rabbit frames while moving around on screen
A cartoon rabbit running around on a black screen

I also learned:

  • doing assembler debugging on a PiStorm-equipped Amiga using something like MonAm doesn’t work: https://github.com/michalsc/Emu68/issues/282
    • I tried a build of this branch on my PiStorm32 Lite and tracing in MonAm crashed the machine

The Obligatory Amiga Blitter Video

September 26, 2024

It’s time…time for a video on the Commodore Amiga Blitter! Topaz walks through the memory copy capabilities of this feature in the context of a small demo written to exercise the blitter, copper, and sprites.

Thanks to Tyrel (@tyrel@mastodon.social), corb0!

References

Code

Documentation

Credits

Music

SFX

How did DOS games draw to the screen so fast?

May 27, 2024

The EGA and VGA video standards share some similarities with how the Amiga did graphics, but the similarities end when it comes to the 256 color graphics that defined 90s PC gaming. Topaz walks you through the basics of how those video modes worked, and what made them get so fast over time.

Thanks to Tyrel (@tyrel@mastodon.social)!

References

3d game source code

Code on Hackerbun

2d games and the EGA pipeline

Why are, like, half these examples id Software games?

  • Graphics Programming Black Book by Michael Abrash (https://www.phatcode.net/res/224/files/html/index.html)
    • This book not only has a lot of incredible detail about the x86 processor, the DOS platform, and how these EGA and VGA modes work, but the author also worked on the Quake engine, and his earlier articles helped John Carmack make games like Commander Keen run so smoothly. Even if you’re not going to write low-level code for retro machines, the first three chapters are a fantastic read for any software developer who gets caught up in prematurely optimizing anything (code, date, features) at any level of the process. Highly recommended.

Credits

Music

AMOS Pro BSD Socket Extension 1.1.4 Released

May 2, 2024

Version 1.1.4 of the AMOS Pro BSD Socket extension is out, and it’s a big one. Thanks to both an anonymous contributor and some improved M68K assembler debugging techniques, this version has multiple crash bugs fixed, as well as an issue that prevented the extension from working well on non-emulated Amigas. Upgrading is highly recommended!

Grab it from Hackerbun Gitea or Aminet:

(1.1.3 was an internal release and not published to the public)

AMOS Pro BSD Socket Extension 1.1.2 Released

March 18, 2024

Hot on the heels of 1.1.1 comes even better fixes to string handling in the extension. The issue is that, while the strings returned from the functions were immediately usable, they weren’t being added correctly to the string space AMOS maintains, so you couldn’t do things like concatenate them. I documented the proper usage on the wiki. This fixes up all of the string returning functions in the extension, which means that Socket Recv$ should work as expected now.

Grab it from Hackerbun Gitea or Aminet: