Original Post

Hi, I need to know if there’s a one-pager that outlines the development ‘rules’ when designing/converting graphics for the Virtual Boy. I have checked the development wiki and got a bit of an understanding but I would like to know what’s the limitations of machine hardware including RAM limitations etc. The wiki went into a lot of detail and I found it a bit hard to follow regrettably.

For example, the below image for the NES sums this up really well and I would like to make/find an equivalent for the VB:

So, I already know the palette is set, using 4 colours of course (like the GB), but I don’t have a good understanding of the other limitations. I’ve heard of things like not being able to switch from two tones per 2 rasters or something like that, but I didn’t get a clear idea of what the exact was.

I don’t know where the background layer rules fit into all of this on a 3D system, I know there’s 256 degrees of depth available (or so I read), but are there rules per plane, or does it work the same way as the NES, with a few BG palettes available, 8×8 or 16×16 tiles and sprites?

I see Space Squash is using 3 colours plus alpha for this little sprite image, but that is just one approach:

The reason I’m asking is, I would like to create some 3D images that will be viewable on real hardware and I need to know what the limitations are so that I can figure out some workarounds to those. A good example would be how Capcom used more than 3 colours + alpha rule for the Megaman/Rockman sprite by layering two sprites on top of each other, in other words his face is a separate sprite that moves in sync with him as one.
Are there sprite limits on the VB system?

I only want to make static (but 3D) images for now so nothing has to move around or scroll if that causes issues.

When I can figure all of this out I’d like to make some 3D images similar to the ones I’ve been making for the 3DS using Orioto’s quick guide:

http://orioto.free.fr//3DS/Tuto/Making%20a%203d%20picture%20with%20your%20digi%20painting.htm

It’s been very easy to make 3D images in a VB palette and practice some pixel art etc in this way:

http://www.pixeljoint.com/forum/forum_posts.asp?TID=10673

The 3D is shallow and it’s small and not the same at all as I’m sure y’all can understand. I’d like to make some that will work on the VB itself and to do that they must correspond to actual hardware rules of course.

If you were able to read this lengthy drivel-post, then maybe you can help me out so that I can create some genuine de-makes for the Flashboy Plus as I really love these.
Check out some of these amazing efforts for the Gameboy to give you an idea:
http://www.wayofthepixel.net/pixelation/index.php?topic=5016.0;all

4 Replies

Ok, let’s see…

-There are 8 palettes, 4 background + 4 sprite ones
-Each palette is 3 opaque “colors” + alpha
-To get all 4 opaque colors in a single sprite, you can indeed do like in your megaman example.
-2048 unique graphic tiles in memory at once, used by:
–1024 simultaneous 8×8 pixel sprites, no scanline limitations
–32 backgrounds (up to 4 less if all sprites are used)
-Backgrounds are also often used as huge sprites themselves, since they can be moved around freely in relation to each other.
-3D can either be done by drawing a pair of slightly different tiles (best effect), or having the hardware parallax separate them (cardboard popout effect), or both.
-32 different depth planes for backgrounds (one for each)
-Each 8×8 sprite can also be on its own depth plane

Maybe that’s enough to get you started, while still keeping it short? 😉

As you can see, the tile/sprite engine is pretty generous on the VB, compared to NES/GB.

  • This reply was modified 12 years, 4 months ago by DanB.
  • This reply was modified 12 years, 4 months ago by DanB.

DanB wrote:
-To get all 4 opaque colors in a single sprite, you can indeed do like in your megaman example.
-2048 unique graphic tiles in memory at once, used by:
–1024 simultaneous 8×8 pixel sprites, no scanline limitations
–32 backgrounds (up to 4 less if all sprites are used)
-Backgrounds are also often used as huge sprites themselves, since they can be moved around freely in relation to each other…

…As you can see, the tile/sprite engine is pretty generous on the VB, compared to NES/GB.

Thanks Dan!

So, just to be clear does that mean you can have 32 backgrounds in place simultaneously, or stored in banks?

Is there really no limit to the amount of sprites on screen at once? 1024 seems a hell of a lot considering the resolution! 🙂

Is the 32 BG rule for memory banks or simultaneously?

Thanks again for answering here, this is really appreciated and I hope to have something to show for it quite soon…

No problem!

Yes, it’s correct that you can have 32 backgrounds on screen simultaneously. (Technically, there are 14 background maps in memory, each one much larger than the screen (64×64 tiles), from which you can cut 32 areas of any size and display as backgrounds).

I don’t think there is a limit to the number of sprites shown at once. The reason there are so many available are probably that you can choose not to display all of them to both eyes, for 3D effects.

There are no memory banks that you have to switch between.

Dan did a great job covering everything, but just to fill in more detail (which you can feel free to ignore):

The 8 palettes are “per tile” meaning that each 8×8 pixel tile (called a “character” or “char” for short) of a background can have any one of the four background palettes. Likewise, each of the 1024 8×8 pixel sprites (“objects” in VB parlance) can be assigned one of the four sprite palettes.

Also, the areas cut from one of the 14 background “sheets” (called “bgmaps”) have to be at least 8 pixels tall, but they can be 1 pixel wide. They can even be larger than, or overlap the edge of, the bgmap. You can choose how the overhanging area is shown. It can either wrap around from the other side or be filled with a single, repeated 8×8 character (one of the same 2,048 of which everything else is made).

 

Write a reply

You must be logged in to reply to this topic.