pinobatch / libbet

Libbet and the Magic Floor - a puzzle game for Game Boy
zlib License
35 stars 1 forks source link

Cut Popslide vertical run length to 20 bytes #4

Closed pinobatch closed 5 years ago

pinobatch commented 5 years ago

Like 144p Test Suite, this game is a test bed for development of libraries to be used in later Game Boy projects. In this case, we're producing Popslide, the metasprite engine, and the audio engine. Many of these were in the developer's previous work on NES. But the Game Boy is not the NES, and hardware differences imply that an interpreter for full Stripe Image isn't necessarily required.

Unlike NES and Super NES, where +1 and +32 increments can share code due to PPU address autoincrement, +1 and +32 on GB need separate code, and long +32 transfers aren't quite as useful as long +1 transfers. The GB screen is only 18 columns tall, and even if you set up the screen for APA with horizontally adjacent tiles that are 32 bytes (2 tiles) apart in VRAM, you still don't end up with packets longer than 20 bytes. So it may be acceptable to treat +32 runs longer than 20 bytes as undefined behavior, possibly parameterizing this with an assembly-time constant.

Bring 01-background/popslide_test_data.z80 back in while testing this change.