Different display for doom on arduino

Summary

The issue at hand is display compatibility when trying to run Doom on an Arduino using a 1.54TFT-SPI-ST7789 display instead of the intended I2C 128×64 OLED display. The goal is to find an easy solution to make Doom work with the available display.

Root Cause

The root cause of this issue is:

  • Display driver mismatch: The repository https://github.com/daveruiz/doom-nano is designed to work with a specific I2C 128×64 OLED display, not the 1.54TFT-SPI-ST7789 display.
  • Resolution and interface differences: The 1.54TFT-SPI-ST7789 display has a higher resolution (240×240) and uses a different interface (SPI) compared to the intended display.

Why This Happens in Real Systems

This issue occurs in real systems due to:

  • Hardware variability: Different displays have unique characteristics, such as resolution, interface, and driver requirements.
  • Software assumptions: The Doom repository makes assumptions about the display hardware, which may not be valid for all displays.

Real-World Impact

The impact of this issue is:

  • Incompatible display: The game may not display correctly or at all on the 1.54TFT-SPI-ST7789 display.
  • Increased development time: Modifying the code to support the new display can be time-consuming and require significant debugging and testing.

Example or Code (if necessary and relevant)

// Example code to initialize the ST7789 display
#include 
#include 
#include 

#define TFT_CS     10
#define TFT_RST    9
#define TFT_DC     8

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  Serial.begin(9600);
  tft.init(240, 240);
  tft.setRotation(1);
}

How Senior Engineers Fix It

Senior engineers fix this issue by:

  • Modifying the display driver: Updating the code to use the correct display driver for the 1.54TFT-SPI-ST7789 display.
  • Adjusting the resolution and interface: Changing the code to accommodate the higher resolution and SPI interface of the new display.
  • Testing and debugging: Thoroughly testing and debugging the modified code to ensure compatibility and stability.

Why Juniors Miss It

Junior engineers may miss this issue due to:

  • Lack of experience: Limited experience with display drivers and hardware variability.
  • Insufficient testing: Inadequate testing and debugging, leading to compatibility issues and display problems.
  • Overlooking assumptions: Failing to recognize and address software assumptions about the display hardware.

Leave a Comment