DekuTree64 wrote: |
Nope. You can switch modes on HBlank, but according to my experiments on hardware you get a few lines of garbage before it settles into the new mode. |
Quote: |
For a mini-map, I'd say just make a buffer in EWRAM, draw to that, and copy it to tile/sprite mem one tile at a time. |
tepples wrote: |
I can see how this might be true of switches involving bitmap modes (as the OP suggests), but Mario Kart Super Circuit seems to switch from mode 0 to mode 1 halfway down the screen just fine. Can you provide a test case that shows garbage on a switch among modes 0, 1, 2? Hint: Try setting up scroll registers and affine registers before you trigger the mode switch. |
poslundc wrote: |
Are you certain that Mario Cart Super Circuit switches modes? I haven't actually played the game, but from screenshots it seems to me that it could be done in Mode 1, with BGs 0 and 1 as the two parallax scrolling backgrounds and BG2 as the terrain |
Quote: |
This is what the Mode 7 program I'm working on currently does (with only one backdrop, though). |
tepples wrote: |
Then where would it have put the HUD? Most of the sprite pixels seemed to be in use for rot/scale objects on the track. |
Quote: |
I dumped my MKSC Game Pak and ran it in VBA. I noticed strange different behavior in VBA's tile viewer; Auto Update seemed to use the mode settings from the last scanline (drawn in mode 1), while switching backgrounds with the radio buttons seemed to use the mode settings from the first scanline (drawn in mode 0). |
Quote: |
Top half: BG0 HUD, BG1 front bg layer, BG2 mid bg layer, BG 3 back bg layer Bottom half: BG0 HUD, BG1 front bg layer, BG2 track So perhaps the front bg layer covers up a line or two of BG2 garbage. |
poslundc wrote: |
if there's one thing I've learned from you it's that sprite pixels are not a definitive limitation, since they could be swapping other sprites into VRAM as necessary. |
Quote: |
Maybe, assuming that they timed the switching of priorities so that it didn't happen until a couple of scanlines after the mode switch. Or perhaps it could be done with windows, using the fact that win0 takes priority over win1. I'm not sure...
Is that middle bg layer always visible? |
poslundc wrote: |
Sprites != sprite pixels. The limit of 128 OAM entries isn't much of a limit given the sort of OAM-swapping that Super Puzzle Fighter II and many other GBA games do, but the 950 horizontal units per scanline limit is a real limit. A non-scaled sprite takes one unit per pixel of width, while a scaled sprite takes 26 units per 8 pixels, and a double-size sprite takes 52 (source: GBATEK by Martin Korth). |
Quote: |
For example, in Peach Circuit, the front layer (BG1, visible at all times) is a layer of forest about 8px or so tall, the middle layer (BG2, visible on the top half) has the castle, and the back layer (BG3, visible on the top half) has a gradient and clouds. |