Settings

Theme

Implementing a Minesweeper clone for the Gameboy Advance

exelo.tl

41 points by Frictus 2 years ago · 5 comments

Reader

kogus 2 years ago

This code is surprisingly readable. For a Gameboy Advance, I expected piles of assembler. Many years ago, early in my career, I implemented a Minesweeper clone in Delphi. It's still there, a testament to how terrible code can be, and how much fun it is anyway:

https://sourceforge.net/projects/delphisweeper/files/delphis...

  • akdas 2 years ago

    All things considered, the GBA is a pretty powerful machine. Running an ARM processor is helpful too, as high-level language compilers that output high-quality ARM code are common. It's for this reason the GBA is one of my favorite machines, since it hits that sweet spot between simplicity and power.

    It's the Gameboy and the NES, running a Z80-style and a 6502-style processor respectively, that typically need more hand-holding from manually written assembly code. It's not just the processor but the lack of hardware features (such as lacking multiple background layers, the relatively low number of sprites that can be on screen at a time, etc.) that result in squeezing out extra performance to overcome these limitations in creative ways. Compare that to the minesweeper game just rendering all the board cells as sprites!

  • twaw 2 years ago

    You can rewrite the code and add a "Russian mode", when a cleared area will be remined again after a random period of time.

  • FrictusOP 2 years ago

    So now you could rewrite it for the gba with very high level libraries like for exemple Butano in C++ (no assembly, no registers) : https://gbadev.net/getting-started.html#high-level-developme...

aquova 2 years ago

I've been following this developer for some time. They didn't just create the GBA game shown in the article in Nim, they also created the Nim bindings to target the GBA. I've been meaning to make time and try it out for myself, and this might be just enough insight to motivate me to start.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection