Worlds are containers for collections of BGMaps or OBJs. They determine if, when, and where these graphical units are drawn on either of the VB's two 384×224 screens. There are a total of 32 worlds (numbered 0 to 31) but not all of them need be on-screen at one time.

Worlds are drawn in reverse order starting at 31 and moving toward 0 so that the opaque areas of lower numbered Worlds obscure those of higher numbered ones. Only visible Worlds—those with LON, RON, or both set—are actually rendered. Also, the entire world rendering process can be halted by setting a World's END bit. Such a World—along with all remaining Worlds—is skipped.

The 32 Worlds, which consist of sixteen 16-bit words (32 bytes), reside in the 0×400 bytes (1KB) from 0×0003 D800 to 0×0003 DBFF. This is known as WAM—World Attribute Memory.

BGMap-based Worlds can be rendered normally (useful for backgrounds or large sprites) or with special effects such as shifting, skewing, scaling, and rotation. There is also a parallax value considered at certain parts of the rendering process to facilitate the stereoscopic 3-D imagery which sets the VB apart. Said parallax values are used to modify X coordinates, resulting in horizontal disparity which the human brain perceives as depth. Since they are added for the right screen and subtracted for the left, a more positive parallax sends things away from the viewer while a negative value brings them closer. This rule should also be applied to each pixel when drawing separate images for each eye.

Here is the structure of a World:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
LON RON BGM SCX SCY OVR END 0 0 BGMAP_BASE (0 - 13)
GX ( -32,768 - 32,767 )
GP ( -32,768 - 32,767 )
GY ( -32,768 - 32,767 )
MX ( -32,768 - 32,767 )
MP ( -32,768 - 32,767 )
MY ( -32,768 - 32,767 )
W ( 0 - 65535 )
H ( 0 - 65535 )
PARAM_BASE 0 0 0 0
OVERPLANE_CHARACTER
WRITING FORBIDDEN
WRITING FORBIDDEN
WRITING FORBIDDEN
WRITING FORBIDDEN
WRITING FORBIDDEN


LON

  • World visible on the left screen.

RON

  • World visible on the right screen.

BGM

  • Background Mode: 00 = Normal BGMap, 01 = H-bias BGMap, 10 = Affine BGMap, 11 = OBJ collection.

SCX

  • The number of BGMaps to combine in the X direction expressed as a power of two. (See also: SCY)

SCY

  • The number of BGMaps to combine in the Y direction expressed as a power of two. The total number of BGMaps is 2SCX * 2SCY with a maximum of eight.
SCX/SCY 00 01 10 11
00 1×1 1×2 1×4 1×8
01 2×1 2×2 2×4 N/A
10 4×1 4×2 N/A N/A
11 8×1 N/A N/A N/A

OVR

  • Disables BGMap wrapping. If the VIP attempts to retrieve the pixel at (-1, -1) and OVR is cleared, it would actually retrieve the pixel at (511,511) (assuming only one BGMap in the collection). But if OVR is set, the bottom-right pixel of the OVERPLANE_CHARACTER would be retrieved.

END

  • This and all remaining Worlds are skipped, thus speeding the rendering process.

BGMAP_BASE

  • The number of the first BGMap to display; see SCX, SCY for total number of BGMaps. Always count left to right, top to bottom, for next BGMap to display.

GX

  • Screen destination X coordinate minus one.

GP

  • Parallax offset for screen destination X coordinate. The true X coordinates are actually: LEFT_Xtrue = GX - GP and RIGHT_Xtrue = GX + GP

GY

  • Screen destination Y coordinate minus one.

MX

  • Source rectangle upper-left corner X coordinate minus one.

MP

  • Parallax offset for Buffer X position. The actual X coordinates are calculated as for the screen coordinates.

MY

  • Source rectangle upper-left corner Y coordinate minus one.

W

  • Source rectangle width minus one.

H

  • Source rectangle height minus one. For normal and H-bias modes, this must be at least seven (eight pixels high) but can be increased in increments of 1 pixel.

PARAM_BASE

  • Parameter table base address; used in H-bias and Affine modes for shifting, scaling, etc. The value to be stored here is calculated as follows: PARAM_BASE = ( ( (Address - 0×00020000) / 2 ) & 0xFFF0 ).

OVERPLANE_CHARACTER

  • This is the number of a cell in the current BGMap. Zero-based, starting in the upper-left and counting left-to-right and top-to-bottom. If the OVR bit is set, this Char is tiled on the screen anywhere the source coordinates (MX +/- MP, MY) lie outside the BGMap collection.



 


Last modified: 11.07.2008
You are not logged in.
Lost Password?
Register Resend Activation