Size-optimized ports of Artemio's 240p Test Suite to 8-bit consoles
Clone or download
pinobatch GB VWF: allocate HRAM with RSSET/RB not EQU/SET
ISSOtm in gbdev Discord claims that using anything but UNION to
allocate local variables in HRAM is bad practice.  But using UNION in
an RGBDS project with more than one translation unit has a serious
drawback: a subroutine and its locals have to be defined in separate
files.  This is true whether all subroutines' locals live in one
file, or each subroutine's locals are in a separate file that the

I acknowledge that defining locals with SET is a bad practice.
Allocating them with RSSET and RB, as this commit does, is less bad.
But it's still not perfect when both a caller and a callee have local
variables, as the callee may later be changed to use more locals than
before, clobbering the caller's locals.  A complete solution for both
ca65 and RGBDS would move local allocation to a preprocessor.
Latest commit 9e62f8c Oct 16, 2018


Size-optimized ports of Artemio's 240p Test Suite to 8-bit consoles

I've remade Artemio Urbina's 240p Test Suite for three more platforms:

  • Nintendo Entertainment System
  • Game Boy and Game Boy Color (as "144p Test Suite")
  • Game Boy Advance (as "160p Test Suite")

The NES and GB ports are in assembly language for speed and size efficiency. The GBA port is in C, but still size-optimized to fit well within the 256 KiB multiboot limit.

The GB and GBA ports have a different name because their LCD video timing doesn't match that of NTSC. They exist to test not only the TV but also the Super Game Boy or Game Boy Player accessory, which behaves as a scaler.

Some functionality has been rearranged to fit the controller or to combine the function of similar tests. Some help pages have been rewritten for completeness, conciseness, and English usage improvements. Some tests' graphics have been replaced to keep the software free.

To get set up to build the NES port, install GNU Make, Coreutils, Python 3, Pillow, and cc65 per nrom-template instructions. The port to Game Boy uses RGBDS instead of cc65. The GBA port uses devkitARM and libgba by devkitPro, but Python 3 and Pillow are still required to convert the proportional font.

Like Artemio's original versions, these ports of 240p Test Suite are free software under the GNU General Public License, version 2 or later.