Main Page   Modules   Data Structures   File List   Globals  

msh_obj.h File Reference

OBJ (sprite) functions. More...


Data Structures

struct  _oam_t
struct  _rotdata_t

Defines

#define set_oam_a0(obj, a0)   SET_OAM_A0(obj, a0)
#define set_oam_a1(obj, a1)   SET_OAM_A1(obj, a1)
#define set_oam_a2(obj, a2)   SET_OAM_A2(obj, a2)
#define get_oam_a0(obj)   GET_OAM_A0(obj)
#define get_oam_a1(obj)   GET_OAM_A1(obj)
#define get_oam_a2(obj)   GET_OAM_A2(obj)
#define set_rotdata_pa(rot, pa)   SET_ROTDATA_PA(rot, pa)
#define set_rotdata_pb(rot, pb)   SET_ROTDATA_PB(rot, pb)
#define set_rotdata_pc(rot, pc)   SET_ROTDATA_PC(rot, pc)
#define set_rotdata_pd(rot, pd)   SET_ROTDATA_PD(rot, pd)
#define get_rotdata_pa(rot)   GET_ROTDATA_PA(rot)
#define get_rotdata_pb(rot)   GET_ROTDATA_PB(rot)
#define get_rotdata_pc(rot)   GET_ROTDATA_PC(rot)
#define get_rotdata_pd(rot)   GET_ROTDATA_PD(rot)
#define set_oam_y(obj, y)   SET_OAM_Y(obj, y)
#define set_oam_rotscale(obj, rotscale)   SET_OAM_ROTSCALE(obj, rotscale)
#define set_oam_dblsize(obj, dblsize)   SET_OAM_DBLSIZE(obj, dblsize)
#define set_oam_bldmod(obj, bldmod)   SET_OAM_BLDMOD(obj, bldmod)
#define set_oam_mosaic(obj, mosaic)   SET_OAM_MOSAIC(obj, mosaic)
#define set_oam_colmod(obj, colmod)   SET_OAM_COLMOD(obj, colmod)
#define set_oam_shape(obj, shape)   SET_OAM_SHAPE(obj, shape)
#define set_oam_x(obj, x)   SET_OAM_X(obj, x)
#define set_oam_rotindex(obj, rotindex)   SET_OAM_ROTINDEX(obj, rotindex)
#define set_oam_hflip(obj, hflip)   SET_OAM_HFLIP(obj, hflip)
#define set_oam_vflip(obj, vflip)   SET_OAM_VFLIP(obj, vflip)
#define set_oam_size(obj, size)   SET_OAM_SIZE(obj, size)
#define set_oam_tile(obj, tile)   SET_OAM_TILE(obj, tile)
#define set_oam_prio(obj, prio)   SET_OAM_PRIO(obj, prio)
#define set_oam_pal(obj, pal)   SET_OAM_PAL(obj, pal)
#define get_oam_y(obj)   GET_OAM_Y(obj)
#define get_oam_rotscale(obj)   GET_OAM_ROTSCALE(obj)
#define get_oam_dblsize(obj)   GET_OAM_DBLSIZE(obj)
#define get_oam_bldmod(obj)   GET_OAM_BLDMOD(obj)
#define get_oam_mosaic(obj)   GET_OAM_MOSAIC(obj)
#define get_oam_colmod(obj)   GET_OAM_COLMOD(obj)
#define get_oam_shape(obj)   GET_OAM_SHAPE(obj)
#define get_oam_x(obj)   GET_OAM_X(obj)
#define get_oam_rotindex(obj)   GET_OAM_ROTINDEX(obj)
#define get_oam_hflip(obj)   GET_OAM_HFLIP(obj)
#define get_oam_vflip(obj)   GET_OAM_VFLIP(obj)
#define get_oam_size(obj)   GET_OAM_SIZE(obj)
#define get_oam_tile(obj)   GET_OAM_TILE(obj)
#define get_oam_prio(obj)   GET_OAM_PRIO(obj)
#define get_oam_pal(obj)   GET_OAM_PAL(obj)
#define load_objtiles(data, index, length, channel)   LOAD_OBJTILES(data, index, length, channel)

Functions

u8 get_oam_width_tl (u8 obj)
u8 get_oam_height_tl (u8 obj)
u8 get_oam_width_px (u8 obj)
u8 get_oam_height_px (u8 obj)
u8 get_oam_tilevol (u8 obj)
void hide_objs (u8 start, u8 length)
void oam_dump (u8 start, u8 length)


Detailed Description


Define Documentation

#define SET_ATTR_Y a0,
 
 

Value:

{(a0) &= _OAM_Y_MASK; \
    (a0) |= (y);}

#define SET_ATTR_ROTSCALE a0,
rotscale   
 

Value:

{(a0) &= _OAM_ROTSCALE_MASK; \
    (a0) |= (rotscale) << _OAM_ROTSCALE_POS;}

#define SET_ATTR_DBLSIZE a0,
dblsize   
 

Value:

{(a0) &= _OAM_DBLSIZE_MASK; \
    (a0) |= (dblsize) << _OAM_DBLSIZE_POS;}

#define SET_ATTR_BLDMOD a0,
bldmod   
 

Value:

{(a0) &= _OAM_BLDMOD_MASK; \
    (a0) |= (bldmod) << _OAM_BLDMOD_POS;}

#define SET_ATTR_MOSAIC a0,
mosaic   
 

Value:

{(a0) &= _OAM_MOSAIC_MASK; \
    (a0) |= (mosaic) << _OAM_MOSAIC_POS;}

#define SET_ATTR_COLMOD a0,
colmod   
 

Value:

{(a0) &= _OAM_COLMOD_MASK; \
    (a0) |= (colmod) << _OAM_COLMOD_POS;}

#define SET_ATTR_SHAPE a0,
shape   
 

Value:

{(a0) &= _OAM_SHAPE_MASK; \
    (a0) |= (shape) << _OAM_SHAPE_POS;}

#define SET_ATTR_X a1,
 
 

Value:

{(a1) &= _OAM_X_MASK; \
    (a1) |= (x);}

#define SET_ATTR_ROTINDEX a1,
rotindex   
 

Value:

{(a1) &= _OAM_ROTINDEX_MASK; \
    (a1) |= (rotindex) << _OAM_ROTINDEX_POS;}

#define SET_ATTR_HFLIP a1,
hflip   
 

Value:

{(a1) &= _OAM_HFLIP_MASK; \
    (a1) |= (hflip) << _OAM_HFLIP_POS;}

#define SET_ATTR_VFLIP a1,
vflip   
 

Value:

{(a1) &= _OAM_VFLIP_MASK; \
    (a1) |= (vflip) << _OAM_VFLIP_POS;}

#define SET_ATTR_SIZE a1,
size   
 

Value:

{(a1) &= _OAM_SIZE_MASK; \
    (a1) |= (size) << _OAM_SIZE_POS;}

#define SET_ATTR_TILE a2,
tile   
 

Value:

{(a2) &= _OAM_TILE_MASK; \
    (a2) |= (tile);}

#define SET_ATTR_PRIO a2,
prio   
 

Value:

{(a2) &= _OAM_PRIO_MASK; \
    (a2) |= (prio) << _OAM_PRIO_POS;}

#define SET_ATTR_PAL a2,
pal   
 

Value:

{(a2) &= _OAM_PAL_MASK; \
    (a2) |= (pal) << _OAM_PAL_POS;}

#define set_oam_a0 obj,
a0       SET_OAM_A0(obj, a0)
 

Parameters:
obj  u8 [0..127] Object Index
a0  u16 Attribute 0

#define set_oam_a1 obj,
a1       SET_OAM_A1(obj, a1)
 

Parameters:
obj  u8 [0..127] Object Index
a1  u16 Attribute 1

#define set_oam_a2 obj,
a2       SET_OAM_A2(obj, a2)
 

Parameters:
obj  u8 [0..127] Object Index
a2  u16 Attribute 2

#define get_oam_a0 obj       GET_OAM_A0(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u16 Attribute 0

#define get_oam_a1 obj       GET_OAM_A1(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u16 Attribute 1

#define get_oam_a2 obj       GET_OAM_A2(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u16 Attribute 2

#define set_rotdata_pa rot,
pa       SET_ROTDATA_PA(rot, pa)
 

Parameters:
rot  u8 [0..31] Rotate Data Index
pa  u16 PA

#define set_rotdata_pb rot,
pb       SET_ROTDATA_PB(rot, pb)
 

Parameters:
rot  u8 [0..31] Rotate Data Index
pb  u16 PB

#define set_rotdata_pc rot,
pc       SET_ROTDATA_PC(rot, pc)
 

Parameters:
rot  u8 [0..31] Rotate Data Index
pc  u16 PC

#define set_rotdata_pd rot,
pd       SET_ROTDATA_PD(rot, pd)
 

Parameters:
rot  u8 [0..31] Rotate Data Index
pd  u16 PD

#define get_rotdata_pa rot       GET_ROTDATA_PA(rot)
 

Parameters:
rot  u8 [0..31] Rotate Data Index
Returns:
u16 PA

#define get_rotdata_pb rot       GET_ROTDATA_PB(rot)
 

Parameters:
rot  u8 [0..31] Rotate Data Index
Returns:
u16 PB

#define get_rotdata_pc rot       GET_ROTDATA_PC(rot)
 

Parameters:
rot  u8 [0..31] Rotate Data Index
Returns:
u16 PC

#define get_rotdata_pd rot       GET_ROTDATA_PD(rot)
 

Parameters:
rot  u8 [0..31] Rotate Data Index
Returns:
u16 PD

#define set_oam_y obj,
     SET_OAM_Y(obj, y)
 

Parameters:
obj  u8 [0..127] Object Index
y  u8 [0..255] Y Position

#define set_oam_rotscale obj,
rotscale       SET_OAM_ROTSCALE(obj, rotscale)
 

Parameters:
obj  u8 [0..127] Object Index
rotscale  bool [TRUE or FALSE] Rotate/Scale

#define set_oam_dblsize obj,
dblsize       SET_OAM_DBLSIZE(obj, dblsize)
 

Parameters:
obj  u8 [0..127] Object Index
dblsize  bool [TRUE or FALSE] Double Size

#define set_oam_bldmod obj,
bldmod       SET_OAM_BLDMOD(obj, bldmod)
 

Parameters:
obj  u8 [0..127] Object Index
bldmod  u8 [OAM_BLDMOD] Blend Mode
Obj Blend Mode defines:
 */
#define OAM_BLDMOD_NORMAL
#define OAM_BLDMOD_SEMITRANS
#define OAM_BLDMOD_OBJWIN

#define set_oam_mosaic obj,
mosaic       SET_OAM_MOSAIC(obj, mosaic)
 

Parameters:
obj  u8 [0..127] Object Index
mosaic  bool [TRUE or FALSE] Mosaic

#define set_oam_colmod obj,
colmod       SET_OAM_COLMOD(obj, colmod)
 

Parameters:
obj  u8 [0..127] Object Index
colmod  bool [OAM_COLMOD] Color Mode
Obj Color Mode defines:
 */
#define OAM_COLMOD_16
#define OAM_COLMOD_256

#define set_oam_shape obj,
shape       SET_OAM_SHAPE(obj, shape)
 

Parameters:
obj  u8 [0..127] Object Index
shape  u8 [OAM_SHAPE] Shape
Obj Shape defines:
 */
#define OAM_SHAPE_SQUARE
#define OAM_SHAPE_WIDE
#define OAM_SHAPE_TALL

#define set_oam_x obj,
     SET_OAM_X(obj, x)
 

Parameters:
obj  u8 [0..127] Object Index
x  u16 [0..511] X Position

#define set_oam_rotindex obj,
rotindex       SET_OAM_ROTINDEX(obj, rotindex)
 

Parameters:
obj  u8 [0..127] Object Index
rotindex  u8 [0..31] Rotate/Scale Data Index

#define set_oam_hflip obj,
hflip       SET_OAM_HFLIP(obj, hflip)
 

Parameters:
obj  u8 [0..127] Object Index
hflip  bool [TRUE or FALSE] Horizontal Flip

#define set_oam_vflip obj,
vflip       SET_OAM_VFLIP(obj, vflip)
 

Parameters:
obj  u8 [0..127] Object Index
vflip  bool [TRUE or FALSE] Vertical Flip

#define set_oam_size obj,
size       SET_OAM_SIZE(obj, size)
 

Parameters:
obj  u8 [0..127] Object Index
size  u8 [OAM_SIZE] Size
Obj Size defines:
 */
#define OAM_SIZE_8x8
#define OAM_SIZE_16x16
#define OAM_SIZE_32x32
#define OAM_SIZE_64x64
#define OAM_SIZE_16x8
#define OAM_SIZE_32x8
#define OAM_SIZE_32x16
#define OAM_SIZE_64x32
#define OAM_SIZE_8x16
#define OAM_SIZE_8x32
#define OAM_SIZE_16x32
#define OAM_SIZE_32x64

#define set_oam_tile obj,
tile       SET_OAM_TILE(obj, tile)
 

Parameters:
obj  u8 [0..127] Object Index
tile  u16 [0..1023] Tile Number

#define set_oam_prio obj,
prio       SET_OAM_PRIO(obj, prio)
 

Parameters:
obj  u8 [0..127] Object Index
prio  u8 [0..3] Priority

#define set_oam_pal obj,
pal       SET_OAM_PAL(obj, pal)
 

Parameters:
obj  u8 [0..127] Object Index
pal  u8 [0..15] Palette Number

#define get_oam_y obj       GET_OAM_Y(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u8 [0..255] Y Position

#define get_oam_rotscale obj       GET_OAM_ROTSCALE(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
bool [TRUE or FALSE] Rotate/Scale

#define get_oam_dblsize obj       GET_OAM_DBLSIZE(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
bool [TRUE or FALSE] Double Size

#define get_oam_bldmod obj       GET_OAM_BLDMOD(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u8 [OAM_BLDMOD] Blend Mode
Obj Blend Mode defines:
 */
#define OAM_BLDMOD_NORMAL
#define OAM_BLDMOD_SEMITRANS
#define OAM_BLDMOD_OBJWIN

#define get_oam_mosaic obj       GET_OAM_MOSAIC(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
bool [TRUE or FALSE] Mosaic

#define get_oam_colmod obj       GET_OAM_COLMOD(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
bool [OAM_COLMOD] Color Mode
Obj Color Mode defines:
 */
#define OAM_COLMOD_16
#define OAM_COLMOD_256

#define get_oam_shape obj       GET_OAM_SHAPE(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u8 [OAM_SHAPE] Shape
Obj Shape defines:
 */
#define OAM_SHAPE_SQUARE
#define OAM_SHAPE_WIDE
#define OAM_SHAPE_TALL

#define get_oam_x obj       GET_OAM_X(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u16 [0..511] X Position

#define get_oam_rotindex obj       GET_OAM_ROTINDEX(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u8 [0..31] Rotate/Scale Data Index

#define get_oam_hflip obj       GET_OAM_HFLIP(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
bool [TRUE or FALSE] Horizontal Flip

#define get_oam_vflip obj       GET_OAM_VFLIP(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
bool [TRUE or FALSE] Vertical Flip

#define get_oam_size obj       GET_OAM_SIZE(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u8 [OAM_SIZE] Size
Obj Size defines:
 */
#define OAM_SIZE_8x8
#define OAM_SIZE_16x16
#define OAM_SIZE_32x32
#define OAM_SIZE_64x64
#define OAM_SIZE_16x8
#define OAM_SIZE_32x8
#define OAM_SIZE_32x16
#define OAM_SIZE_64x32
#define OAM_SIZE_8x16
#define OAM_SIZE_8x32
#define OAM_SIZE_16x32
#define OAM_SIZE_32x64

#define get_oam_tile obj       GET_OAM_TILE(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u16 [0..1023] Tile Number

#define get_oam_prio obj       GET_OAM_PRIO(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u8 [0..3] Priority

#define get_oam_pal obj       GET_OAM_PAL(obj)
 

Parameters:
obj  u8 [0..127] Object Index
Returns:
u8 [0..15] Palette Number

#define load_objtiles data,
index,
length,
channel       LOAD_OBJTILES(data, index, length, channel)
 

Parameters:
data  void* Pointer to tile data
index  u16 [0..1023] Starting tile location
length  u16 [0..1023] Number of tiles to copy
channel  u8 [CPY] Copy type
Tiles are 32 bytes each. For 256 color tiles (64 bytes), you need to enter double the number of tiles as the length. And 256 color tiles must have an even starting index.

dmemcpy() type defines:
These are Mushroom specific, not GBA values.
 */
#define CPY_DMA0
#define CPY_DMA1
#define CPY_DMA2
#define CPY_DMA3
#define CPY_MEMCPY


Function Documentation

u8 get_oam_width_tl u8    obj
 

Parameters:
obj  [0..127] Object Index
Returns:
[1..8] Width (in tiles)
Returns the width of the object.
This is determined by the object's specified shape and size.

u8 get_oam_height_tl u8    obj
 

Parameters:
obj  [0..127] Object Index
Returns:
[1..8] Height (in tiles)
Returns the height of the object.
This is determined by the object's specified shape and size.

u8 get_oam_width_px u8    obj
 

Parameters:
obj  [0..127] Object Index
Returns:
[1..8] Width (in pixels)
Returns the width of the object in pixels.
This is determined by the object's specified shape and size.

u8 get_oam_height_px u8    obj
 

Parameters:
obj  [0..127] Object Index
Returns:
[1..8] Height (in tiles)
Returns the height of the object in pixels.
This is determined by the object's specified shape and size.

u8 get_oam_tilevol u8    obj
 

Parameters:
obj  [0..127] Object Index
Returns:
[1..128] Tile Volume
Returns the number of VRAM tiles the object uses.
This is determined by the object's shape, size, and color mode.
Eg. An object that is 32x32 and uses 256 colors...
4 tiles * 4 tiles * 2 (256 color tiles take up 2 tile slots) = 32 tiles

void hide_objs u8    start,
u8    length
 

Parameters:
start  [0..127] Start object index
length  [0..128] Number of objects
This hides the specified number of objects by moving them offscreen to (240, 160). This should be called before using any objects to prevent unwanted objects from being displayed.

void oam_dump u8    start,
u8    length
 

Parameters:
start  [0..127] Start object index
length  [0..128] Number of objects
This dumps the current data for each object to the console in an easily readable format.

The output format is:
OOO: SSSSS  CCC  (XXX,YYY)  tile:TTTT  pal:PP  rot:AA  pr:I  RDMHVB
  • O: Object Index
  • S: Size
  • C: Color Mode
  • X: X Position
  • Y: Y Position
  • T: Tile
  • P: Palette
  • A: Rotate/Scale Index
  • I: Priority
  • R: Rotate/Scale - r = enabled
  • D: Double Size - d = enabled
  • M: Mosaic - m = enabled
  • H: Horizontal Flip - h = enabled (N/A if rotate/scale is enabled)
  • V: Vertical Flip - v = enabled (N/A if rotate/scale is enabled)
  • B: Blend Mode - n = Normal, s = Semi-trans, o = Obj win

Eg.
004: 64x64  16   (100, 80)  tile:41    pal:8   rot:0   pr:0  rd---n
Object at index 4 is a 64x64 16 color object, at screen position (100, 80), using tiles starting from tile index 41, using palette 8, rotate/scale index 0, prioity 0, rotate/scale enabled, double size enabled, and normal blend mode.


Generated on Wed May 19 21:45:08 2004 for Mushroom GBALib by doxygen 1.2.18