# Tiled Backgrounds [Video]

## Defines

#define CBB_CLEAR(cbb)   memset32(&tile_mem[cbb], 0, CBB_SIZE/4)
#define SBB_CLEAR(sbb)   memset32(&se_mem[sbb], 0, SBB_SIZE/4)
#define SBB_CLEAR_ROW(sbb, row)   memset32(&se_mem[sbb][(row)*32], 0, 32/2)
#define __BG_TYPES   ((0x0C7F<<16)|(0x0C40))
#define BG_IS_AFFINE(n)   ( (__BG_TYPES>>(4*(REG_DISPCNT&7)+(n) ))&1 )
#define BG_IS_AVAIL(n)   ( (__BG_TYPES>>(4*(REG_DISPCNT&7)+(n)+16))&1 )

## Functions

INLINE void se_fill (SCR_ENTRY *sbb, SCR_ENTRY se)
Fill screenblock sbb with se.
INLINE void se_plot (SCR_ENTRY *sbb, int x, int y, SCR_ENTRY se)
Plot a screen entry at (x,y) of screenblock sbb.
INLINE void se_rect (SCR_ENTRY *sbb, int left, int top, int right, int bottom, SCR_ENTRY se)
Fill a rectangle on sbb with se.
INLINE void se_frame (SCR_ENTRY *sbb, int left, int top, int right, int bottom, SCR_ENTRY se)
Create a border on sbb with se.
void se_window (SCR_ENTRY *sbb, int left, int top, int right, int bottom, SCR_ENTRY se0)
Create a framed rectangle.
void se_hline (SCR_ENTRY *sbb, int x0, int x1, int y, SCR_ENTRY se)
void se_vline (SCR_ENTRY *sbb, int x, int y0, int y1, SCR_ENTRY se)
INLINE void bg_aff_set (BG_AFFINE *bgaff, FIXED pa, FIXED pb, FIXED pc, FIXED pd)
Set the elements of an bg affine matrix.
INLINE void bg_aff_identity (BG_AFFINE *bgaff)
Set an bg affine matrix to the identity matrix.
INLINE void bg_aff_scale (BG_AFFINE *bgaff, FIXED sx, FIXED sy)
Set an bg affine matrix for scaling.
INLINE void bg_aff_shearx (BG_AFFINE *bgaff, FIXED hx)
INLINE void bg_aff_sheary (BG_AFFINE *bgaff, FIXED hy)
void bg_aff_rotate (BG_AFFINE *bgaff, u16 alpha)
Set bg matrix to counter-clockwise rotation.
void bg_aff_rotscale (BG_AFFINE *bgaff, int sx, int sy, u16 alpha)
Set bg matrix to 2d scaling, then counter-clockwise rotation.
void bg_aff_premul (BG_AFFINE *dst, const BG_AFFINE *src)
Pre-multiply dst by src: D = S*D.
void bg_aff_postmul (BG_AFFINE *dst, const BG_AFFINE *src)
Post-multiply dst by src: D= D*S.
void bg_aff_rotscale2 (BG_AFFINE *bgaff, const AFF_SRC *as)
Set bg matrix to 2d scaling, then counter-clockwise rotation.
void bg_rotscale_ex (BG_AFFINE *bgaff, const AFF_SRC_EX *asx)
Set bg affine matrix to a rot/scale around an arbitrary point.

## Define Documentation

 #define CBB_CLEAR ( cbb ) memset32(&tile_mem[cbb], 0, CBB_SIZE/4)

## Function Documentation

 void bg_aff_rotate ( BG_AFFINE * bgaff, u16 alpha )

Set bg matrix to counter-clockwise rotation.

Parameters:
 bgaff Object affine struct to set. alpha CCW angle. full-circle is 10000h.

 void bg_aff_rotscale ( BG_AFFINE * bgaff, int sx, int sy, u16 alpha )

Set bg matrix to 2d scaling, then counter-clockwise rotation.

Parameters:
 bgaff Object affine struct to set. sx Horizontal scale (zoom). .8 fixed point. sy Vertical scale (zoom). .8 fixed point. alpha CCW angle. full-circle is 10000h.

 void bg_aff_rotscale2 ( BG_AFFINE * bgaff, const AFF_SRC * as )

Set bg matrix to 2d scaling, then counter-clockwise rotation.

Parameters:
 bgaff Object affine struct to set. as Struct with scales and angle.

 void bg_rotscale_ex ( BG_AFFINE * bgaff, const AFF_SRC_EX * asx )

Set bg affine matrix to a rot/scale around an arbitrary point.

Rotate and scale round an arbitrary point using the asx data.

Parameters:
 bgaff BG affine data to set. asx Affine source data: screen and texture origins, scales and angle.

 void se_window ( SCR_ENTRY * sbb, int left, int top, int right, int bottom, SCR_ENTRY se0 )

Create a framed rectangle.

In contrast to se_frame(), se_frame_ex() uses nine tiles starting at se0 for the frame, which indicate the borders and center for the window.

Note:
Rectangle is nor normalized.

Generated on Mon Aug 25 17:03:57 2008 for libtonc by  1.5.3