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.
run_v_base reduces from 64 (bug?) to 19 repetitions, saving 90 bytes
literal_v_base reduces from 32 to 10 repetitions, saving 154 bytes
Conforming changes under popslide_next_packet.is_v
Bring 01-background/popslide_test_data.z80 back in while testing this change.
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.
run_v_base
reduces from 64 (bug?) to 19 repetitions, saving 90 bytesliteral_v_base
reduces from 32 to 10 repetitions, saving 154 bytespopslide_next_packet.is_v
Bring
01-background/popslide_test_data.z80
back in while testing this change.