AGI Interpreter February 2025 Update
Posted: Sun Feb 16, 2025 8:22 am
CommanderX16 February 2025 AGI Update
I have an update regarding my CX16 AGI Interpreter.
Over the past few months, I have completed three major tasks:
-Implementation of double buffering: The 3D effect mentioned in my previous post requires redrawing of sprites. To prevent this redrawing from occurring within an IRQ, double buffering was implemented, eliminating sprite flicker.
-Implementation of NPC movement routines: As shown in my GIF, the fairy, wolf, and bridge troll now move. They also remain within the boundaries set by the game.
-Implementation of sprite garbage collection
Focus for the Next Few Months
Developing a more efficient dynamic sprite memory allocator:
My current allocator is highly inefficient, as it allocates sprites in fixed sizes of either 32x32 or 64x64. With double buffering now in place, sprite memory requirements have significantly increased.
I have a C implementation of an allocator that works with blocks based on the smallest sprite size (8x8). If a sprite is larger, it is assigned multiple blocks. I will translate this into assembly code and replace my existing allocator.
Fixing object placement bugs:
There are several issues with object placement in the game. In particular, when the player walks into the moat or transitions to a new screen, objects are sometimes positioned incorrectly, and the Z-ordering is not always handled properly.
The current implementation lacks key logic, and I plan to reference known interpreters such as Lance Ewing’s Agile to improve accuracy.
I have an update regarding my CX16 AGI Interpreter.
Over the past few months, I have completed three major tasks:
-Implementation of double buffering: The 3D effect mentioned in my previous post requires redrawing of sprites. To prevent this redrawing from occurring within an IRQ, double buffering was implemented, eliminating sprite flicker.
-Implementation of NPC movement routines: As shown in my GIF, the fairy, wolf, and bridge troll now move. They also remain within the boundaries set by the game.
-Implementation of sprite garbage collection
Focus for the Next Few Months
Developing a more efficient dynamic sprite memory allocator:
My current allocator is highly inefficient, as it allocates sprites in fixed sizes of either 32x32 or 64x64. With double buffering now in place, sprite memory requirements have significantly increased.
I have a C implementation of an allocator that works with blocks based on the smallest sprite size (8x8). If a sprite is larger, it is assigned multiple blocks. I will translate this into assembly code and replace my existing allocator.
Fixing object placement bugs:
There are several issues with object placement in the game. In particular, when the player walks into the moat or transitions to a new screen, objects are sometimes positioned incorrectly, and the Z-ordering is not always handled properly.
The current implementation lacks key logic, and I plan to reference known interpreters such as Lance Ewing’s Agile to improve accuracy.