Alright, so anyone paying attention might have noticed the missing Week 3 Recap and Week 4 Plan posts. Don’t worry, I have excuses…errr..I can explain!
Week 3 started off with animation tasks. It didn’t take long before I remembered what ultimately killed my first attempt at this game, back in elementary school; though delighted with the graphical output from Beagle Bros.’ Apple Mechanic, I couldn’t wrap my head around how to animate anything that might interact with the totally bitchin’ car I’d drawn with the tool1. Thirty years later I have a firm grasp on the Applesoft shape table routines but hit the point where drawing outlined images was not going to cut it for my purposes.
So, resigning myself to a return to very basic images, I went searching for graphics-specific assembly documentation online. These travels ultimately led to my discovery of a book that, sadly, seems to be (long?) out of print and unavailable for sale, even on the mighty Internet. Fortunately, there is a scanned PDF (though it is missing some pages!) on archive.org. Hi-Res Graphics And Animation Using Assembly Language by Leonard I. Malkin, Ph.D. is amazingly well written, with concepts explained simply, bolstered by flowcharts (particularly helpful when attempting realistic animation while confined to assembly’s single-threading), sample code, and thorough explanation of the code itself2. If you just so happen to have a spare hardcopy of this terrific tome, that you’re interested in selling (or know where I might acquire a copy), please do get in touch!
Anyway, despite scrapping nearly everything from the first two weeks (though working through nearly every chapter’s sample programs in Assembly Lines did give me a solid understanding of the 6502 opcodes and made me very comfortable using Merlin), in these past two weeks I still:
- Wrote code to animate the (initially) hardcoded set of obstacles, as they scroll downward (implying that player’s car is driving “forward” on road)
- Wrote code to animate the (initially) hardcoded set of targets, as they scroll downward
- Generated shape data for intended collisions (with targets)
- Generated shape data for accidental collisions (with obstacles)
- Wrote collision detection code
- Wrote code to display appropriate collision graphics, dependent on type of collision
Here’s an underwhelming screenshot (made particularly so, by the fact that I am still ironing out draw-erase cycles for the various objects, meaning that only the player’s car and the “+1” graphic, displayed when the player’s car collides with the target object [gas can], are visible):
Now I have the weekend and Monday to nail down a scoreboard, clean up some pesky collision-related artifact issues, and, if time permits, add some sound effects so I can get a complete, working game shipped by 4/303.
Tune in Tuesday for the exciting wrap up!
- As I recall, I managed, using XDRAW in BASIC, to get the car to move side-to-side but that was about the extent of my “animation.” ↩
- Plus, as a bonus, there are politically incorrect limericks, straight out of the ’80s, at the start of each chapter! ↩
- There will be plenty of time to polish things in v2 and beyond! ↩