Eli’s December Adventure is a low-key alternative to Advent of Code focused on working on personal projects every day throughout December.

As I find it hard to dedicate time to work on personal projects daily, my plan for the adventure is not necessarily to be productive every day but to stay focused on the things I want to do.

Here are my plans:

  • Get my uxn emulator uxnfloppy to a releasable state
    • Optimize vga mode 12 (640x480) sprite drawing
    • Refactor DEO/DEI to use a device page
    • Make it possible to run large roms and, if I have the time, add support for the File device and read/writes to the USB stick/floppy
  • Make a debug/gizmo renderer for my 3d game engine sprout
    • To show collision volumes, camera frustums and the like
    • Figure out how to handle singleton-like features that should be callable from anywhere (e.g. gizmoDrawLine(...))
    • Show the camera frustum of nodes with the Camera attribute
  • Make an uxn rom with the forest or ocean scene I have been thinking about
  • Bring the camera with me more often, and take more pictures
  • Improve my daily routine, waste less time
  • Be more present when I’m not at the computer

Other adventures I’m following:

Progress

Day 13-14

Day 9

  • Ran up against the slow vga bus again (6-8mhz) when blitting the backbuffer to screen which turned out to be why all roms were capped at 34 fps
  • Optimized the blitting code to only blit changed layers and min/max byte offset
  • noodle.tal now runs at 60 fps most of the time!

Day 7

  • Implemented the Varvara’s Datetime device using the BIOS CMOS real-time clock
    • It turned out to be easy and was a relief after the complicated vga mode 12/ps2 work
  • With that done, bunnymark.tal reports correct fps and it runs at 30 fps up to 1000 bunnies, at which point it drops to 20 fps. I still want this emulator to be close to uxnemu in performance so there is still some ways to go, but I’m happy for the time being. I want to investigate why bunnymark starts at 30 fps and not 60 fps with no bunnies at all, though.

Day 5

  • Reimplemented a slow version of Screen/pixel for vga mode 12 because I’m starting to feel jaded on the x86 assembly
  • Refactored DEO/DEI to use a device page. This gave a noticable speed-up!
  • noodle.tal is now running well on device in 640x480! Not sure if its 30fps or 60fps though, will need to investigate.

Day 3-4

  • Optimized uxnfloppy sprite drawing so that no non-screen memory is used when drawing a scanline!

Day 2

  • Thought about what I wanted and put up this page