Things used in this project
Hardware components
×1
Software apps and online services

Story
"Space Dodger" is a high-performance arcade game built entirely on the Renesas HMI-Board (RA6M3), leveraging the power of the RT-Thread real-time operating system and LVGL 8.3. My primary goal for this project was to challenge the misconception that embedded microcontrollers are only good for static user interfaces. I wanted to demonstrate that with the right optimization techniques, it is p…
Things used in this project
Hardware components
×1
Software apps and online services

Story
"Space Dodger" is a high-performance arcade game built entirely on the Renesas HMI-Board (RA6M3), leveraging the power of the RT-Thread real-time operating system and LVGL 8.3. My primary goal for this project was to challenge the misconception that embedded microcontrollers are only good for static user interfaces. I wanted to demonstrate that with the right optimization techniques, it is possible to create a fluid, "Bullet Hell" style game running at a rock-solid 50 FPS (20ms refresh rate) on a Cortex-M4F MCU. Instead of a simple menu demo, this project showcases multiple moving objects, collision detection, and real-time score tracking happening simultaneously without lag.
To achieve this level of performance, I heavily utilized the hardware capabilities of the Renesas RA6M3. By enabling the board’s built-in D/AVE 2D graphics acceleration engine, I was able to offload intensive drawing tasks—such as rendering the "Starfighter" ship and enemy boxes—from the CPU. The game logic operates on a dedicated LVGL timer that updates object coordinates every 20ms, ensuring the UI thread never blocks. I also implemented memory optimization strategies; for instance, rather than destroying and recreating enemy objects (which causes memory fragmentation), the game "recycles" the same three enemy entities, simply resetting their positions once they leave the screen.
Beyond raw performance, I focused on creating fair and engaging gameplay mechanics. I developed a custom "Smart Randomizer" algorithm to handle enemy spawning. Standard random functions often lead to enemies clumping in one spot, so my system uses a history buffer to ensure enemies pick different vertical lanes, covering the entire screen dynamically. The game also features a scaling difficulty system: it starts at a manageable speed for the first 20 seconds, then ramps up into a fast-paced survival mode as time progresses. A session-based leaderboard tracks the top three high scores, adding a competitive layer to the experience.
The development process came with specific hurdles. Early in the project, I encountered visual artifacts and screen tearing. I resolved this by carefully configuring the display driver to allocate the frame buffers within the RA6M3’s fast internal SRAM rather than the slower external RAM. Additionally, tuning the collision detection to feel "fair" required adjusting the hitboxes to be slightly smaller than the visual sprites, ensuring players didn’t feel cheated by edge-case collisions.
This project serves as a blueprint for developers looking to push the limits of the HMI-Board. It combines hardware acceleration, efficient RTOS task management, and game logic into a single package. In future updates, I plan to utilize the board’s PWM capabilities to add sound effects and implement persistent storage to save high scores permanently.
**Read more
Schematics
