# Miscellaneous routines [Core]

## Sector checking

u32 octant (int x, int y)
Get the octant that (x, y) is in.
u32 octant_rot (int x0, int y0)
Get the rotated octant that (x, y) is in.

## Random numbers

int sqran (int seed)
INLINE int qran (void)
Quick (and very dirty) pseudo-random number generator.
INLINE int qran_range (int min, int max)
Ranged random number.
#define QRAN_SHIFT   15

## Inline assembly

#define ASM_CMT(str)   asm volatile("@# " str)
Assembly comment.
#define ASM_BREAK()   asm volatile("\tmov\t\tr11, r11")
No\$gba breakpoint.
#define ASM_NOP()   asm volatile("\tnop")
No-op; wait a bit.

## Defines

#define STR(x)   #x
#define XSTR(x)   STR(x)
Create text string from a literal.

## Define Documentation

 #define STR ( x ) #x

## Function Documentation

 u32 octant ( int x, int y )

Get the octant that (x, y) is in.

This function divides the circle in 8 parts. The angle starts at the y=0 line and then moves in the direction of the x=0 line. On the screen, this would be like starting at the 3 o'clock position and moving clockwise

 u32 octant_rot ( int x0, int y0 )

Get the rotated octant that (x, y) is in.

Like `octant()` but with a twist. The 0-octant starts 22.5° earlier so that 3 o'clock falls in the middle of octant 0, instead of at its start. This can be useful for 8 directional pointing.

 INLINE int qran ( void )

Quick (and very dirty) pseudo-random number generator.

Returns:
random in range [0,8000h>

 INLINE int qran_range ( int min, int max )

Ranged random number.

Returns:
random in range [min, max>
Note:
(max-min) must be lower than 8000h

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