Jo Engine  8.2
Jo Sega Saturn Engine
Macros | Functions | Variables
sprites.h File Reference

Jo Engine Sprite definition and tools. More...

#include "types.h"
#include "image.h"
#include "tga.h"
#include "math.h"
#include "colors.h"

Go to the source code of this file.

Macros

#define JO_NO_GOURAUD_COLOR
 Value used to keep the original color for jo_set_gouraud_shading_colors() More...
 
#define JO_DEFAULT_BRIGHTNESS
 Default brightness for jo_set_gouraud_shading_brightness() More...
 
#define JO_MAX_BRIGHTNESS
 Maximum brightness value for jo_set_gouraud_shading_brightness() More...
 

Functions

void jo_sprite_draw (const int sprite_id, const jo_pos3D *const pos, const bool centered_style_coordinates)
 
void jo_sprite_draw_rotate (const int sprite_id, const jo_pos3D *const pos, const int angle, const bool centered_style_coordinates)
 
static __jo_force_inline void __internal_jo_sprite_set_position3D (const int x, const int y, const int z)
 Internal usage don't use it. More...
 
int jo_get_last_sprite_id (void)
 Get last Sprite Id. More...
 
int jo_sprite_add (const jo_img *const img)
 Add a sprite. More...
 
int jo_sprite_add_8bits_image (const jo_img_8bits *const img)
 Add a 8 bits sprite. More...
 
int jo_sprite_replace (const jo_img *const img, const int sprite_id)
 Replace a sprite. More...
 
void jo_sprite_free_from (const int sprite_id)
 Free all sprites from the given sprite_id. More...
 
static __jo_force_inline void jo_sprite_free_all (void)
 Free all sprites. More...
 
int jo_sprite_name2id (const char *const filename)
 Retrive the Sprite Id from filename based on the four first character in the filename. More...
 
static __jo_force_inline void jo_sprite_enable_screen_doors_filter (void)
 Activate screen doors filter for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_disable_screen_doors_filter (void)
 Disable screen doors filter for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_enable_shadow_filter (void)
 Activate shadow filter for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_disable_shadow_filter (void)
 Disable shadow filter for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_enable_dark_filter (void)
 Activate dark filter for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_disable_dark_filter (void)
 Disable dark filter for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_enable_half_transparency (void)
 Activate half transparency for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_disable_half_transparency (void)
 Disable half transparency for every sprite displayed after this call. More...
 
void jo_set_gouraud_shading_colors (const jo_color topleft_color, const jo_color topright_color, const jo_color bottomright_color, const jo_color bottomleft_color)
 Change Gouraud Shading colors. More...
 
static __jo_force_inline void jo_sprite_enable_gouraud_shading (void)
 Activate Gouraud Shading for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_disable_gouraud_shading (void)
 Disable Gouraud Shading for every sprite displayed after this call. More...
 
void jo_set_gouraud_shading_brightness (const unsigned char brightness)
 Change Gouraud Shading brightness. More...
 
static __jo_force_inline void jo_sprite_enable_vertical_flip (void)
 Activate vertical flip for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_disable_vertical_flip (void)
 Disable vertical flip for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_enable_horizontal_flip (void)
 Activate horizontal flip for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_disable_horizontal_flip (void)
 Disable horizontal flip for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_change_sprite_scale (const float scale)
 Change scale for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_restore_sprite_scale (void)
 Restore default scale for every sprite displayed after this call. More...
 
static __jo_force_inline void jo_sprite_draw3D_and_rotate (const int sprite_id, const int x, const int y, const int z, const int angle)
 Display a sprite in 3 dimensional space. More...
 
static __jo_force_inline void jo_sprite_draw3D (const int sprite_id, const int x, const int y, const int z)
 Display a sprite in 3 dimensional space. More...
 
static __jo_force_inline void jo_sprite_draw3D_and_rotate2 (const int sprite_id, const int x, const int y, const int z, const int angle)
 Display a sprite in 3 dimensional space. More...
 
static __jo_force_inline void jo_sprite_draw3D2 (const int sprite_id, const int x, const int y, const int z)
 Display a sprite in 3 dimensional space. More...
 
static __jo_force_inline jo_color jo_sprite_get_pixel_color (const jo_color *const data, const unsigned int x, const unsigned int y, const unsigned int image_width)
 Get a specific pixel color from image bytes. More...
 
static __jo_force_inline bool jo_sprite_is_pixel_transparent (const jo_color *const data, const unsigned int x, const unsigned int y, const unsigned int image_width)
 Get if a specific pixel is transparent (JO_COLOR_Transparent) in image bytes. More...
 
static __jo_force_inline int jo_sprite_get_width (const int sprite_id)
 Get sprite width. More...
 
static __jo_force_inline int jo_sprite_get_height (const int sprite_id)
 Get sprite height. More...
 
static __jo_force_inline int jo_sprite_count (void)
 Get sprite count. More...
 
int jo_sprite_usage_percent (void)
 Get sprite memory usage. More...
 

Variables

jo_sprite_attributes __jo_sprite_attributes
 Current displayed sprite attribute (internal engine usage) More...
 
jo_pos3D __jo_sprite_pos
 Current displayed sprite position (internal engine usage) More...
 
jo_texture_definition __jo_sprite_def [JO_MAX_SPRITE]
 (internal engine usage) More...
 
jo_picture_definition __jo_sprite_pic [JO_MAX_SPRITE]
 (internal engine usage) More...
 

Detailed Description

Jo Engine Sprite definition and tools.

Author
Johannes Fetz
Bug:
No known bugs.

Macro Definition Documentation

#define JO_DEFAULT_BRIGHTNESS

Default brightness for jo_set_gouraud_shading_brightness()

#define JO_MAX_BRIGHTNESS

Maximum brightness value for jo_set_gouraud_shading_brightness()

#define JO_NO_GOURAUD_COLOR

Value used to keep the original color for jo_set_gouraud_shading_colors()

Function Documentation

static __jo_force_inline void __internal_jo_sprite_set_position3D ( const int  x,
const int  y,
const int  z 
)
static

Internal usage don't use it.

int jo_get_last_sprite_id ( void  )

Get last Sprite Id.

Returns
Last Sprite Id
void jo_set_gouraud_shading_brightness ( const unsigned char  brightness)

Change Gouraud Shading brightness.

Parameters
brightnessBrightness from 0 to 31
void jo_set_gouraud_shading_colors ( const jo_color  topleft_color,
const jo_color  topright_color,
const jo_color  bottomright_color,
const jo_color  bottomleft_color 
)

Change Gouraud Shading colors.

Parameters
topleft_colorTop left corner color in sprite
topright_colorTop right corner color in sprite
bottomright_colorbottom right corner color in sprite
bottomleft_colorbottom left corner color in sprite
int jo_sprite_add ( const jo_img *const  img)

Add a sprite.

Parameters
imgPointer to a 15 bits image struct
Returns
Sprite Id or -1 if failed
int jo_sprite_add_8bits_image ( const jo_img_8bits *const  img)

Add a 8 bits sprite.

Parameters
imgPointer to a 8 bits bits image struct
Returns
Sprite Id or -1 if failed
static __jo_force_inline void jo_sprite_change_sprite_scale ( const float  scale)
static

Change scale for every sprite displayed after this call.

Parameters
scaleSprite scale
static __jo_force_inline int jo_sprite_count ( void  )
static

Get sprite count.

Returns
Count
static __jo_force_inline void jo_sprite_disable_dark_filter ( void  )
static

Disable dark filter for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_disable_gouraud_shading ( void  )
static

Disable Gouraud Shading for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_disable_half_transparency ( void  )
static

Disable half transparency for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_disable_horizontal_flip ( void  )
static

Disable horizontal flip for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_disable_screen_doors_filter ( void  )
static

Disable screen doors filter for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_disable_shadow_filter ( void  )
static

Disable shadow filter for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_disable_vertical_flip ( void  )
static

Disable vertical flip for every sprite displayed after this call.

void jo_sprite_draw ( const int  sprite_id,
const jo_pos3D *const  pos,
const bool  centered_style_coordinates 
)
static __jo_force_inline void jo_sprite_draw3D ( const int  sprite_id,
const int  x,
const int  y,
const int  z 
)
static

Display a sprite in 3 dimensional space.

Parameters
sprite_idSprite Id
xHorizontal position from the center of the screen
yVertical position from the center of the screen
zZ index (depth))
static __jo_force_inline void jo_sprite_draw3D2 ( const int  sprite_id,
const int  x,
const int  y,
const int  z 
)
static

Display a sprite in 3 dimensional space.

Parameters
sprite_idSprite Id returned by jo_sprite_add(), jo_sprite_add_tga() or jo_sprite_add_image_pack()
xHorizontal position from the top left corner
yVertical position from the top left corner
zZ index (depth)
static __jo_force_inline void jo_sprite_draw3D_and_rotate ( const int  sprite_id,
const int  x,
const int  y,
const int  z,
const int  angle 
)
static

Display a sprite in 3 dimensional space.

Parameters
sprite_idSprite Id
xHorizontal position from the center of the screen
yVertical position from the center of the screen
zZ index (depth)
angleAngle (Z axe)
static __jo_force_inline void jo_sprite_draw3D_and_rotate2 ( const int  sprite_id,
const int  x,
const int  y,
const int  z,
const int  angle 
)
static

Display a sprite in 3 dimensional space.

Parameters
sprite_idSprite Id returned by jo_sprite_add(), jo_sprite_add_tga() or jo_sprite_add_image_pack()
xHorizontal position from the top left corner
yVertical position from the top left corner
zZ index (depth)
angleAngle (Z axe)
void jo_sprite_draw_rotate ( const int  sprite_id,
const jo_pos3D *const  pos,
const int  angle,
const bool  centered_style_coordinates 
)
static __jo_force_inline void jo_sprite_enable_dark_filter ( void  )
static

Activate dark filter for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_enable_gouraud_shading ( void  )
static

Activate Gouraud Shading for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_enable_half_transparency ( void  )
static

Activate half transparency for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_enable_horizontal_flip ( void  )
static

Activate horizontal flip for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_enable_screen_doors_filter ( void  )
static

Activate screen doors filter for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_enable_shadow_filter ( void  )
static

Activate shadow filter for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_enable_vertical_flip ( void  )
static

Activate vertical flip for every sprite displayed after this call.

static __jo_force_inline void jo_sprite_free_all ( void  )
static

Free all sprites.

Warning
Don't use any sprites after this call or the game may crash unexpectedly
void jo_sprite_free_from ( const int  sprite_id)

Free all sprites from the given sprite_id.

Parameters
sprite_idSprite ID to replace
Warning
Don't use freed sprites after this call or the game may crash unexpectedly
static __jo_force_inline int jo_sprite_get_height ( const int  sprite_id)
static

Get sprite height.

Parameters
sprite_idSprite Id returned by jo_sprite_add(), jo_sprite_add_tga() or jo_sprite_add_image_pack()
Returns
Sprite height
static __jo_force_inline jo_color jo_sprite_get_pixel_color ( const jo_color *const  data,
const unsigned int  x,
const unsigned int  y,
const unsigned int  image_width 
)
static

Get a specific pixel color from image bytes.

Parameters
dataBytes (raw image data)
xHorizontal ccord in the image
yVertical ccord in the image
image_widthImage width (in pixels)
static __jo_force_inline int jo_sprite_get_width ( const int  sprite_id)
static

Get sprite width.

Parameters
sprite_idSprite Id returned by jo_sprite_add(), jo_sprite_add_tga() or jo_sprite_add_image_pack()
Returns
Sprite width
static __jo_force_inline bool jo_sprite_is_pixel_transparent ( const jo_color *const  data,
const unsigned int  x,
const unsigned int  y,
const unsigned int  image_width 
)
static

Get if a specific pixel is transparent (JO_COLOR_Transparent) in image bytes.

Parameters
dataBytes (raw image data)
xHorizontal ccord in the image
yVertical ccord in the image
Returns
true if the pixel is transparent otherwise false
Parameters
image_widthImage width (in pixels)
int jo_sprite_name2id ( const char *const  filename)

Retrive the Sprite Id from filename based on the four first character in the filename.

Parameters
filenameFilename (upper case and shorter as possible like "A.TEX")
Warning
Slow, use carefully
Returns
Sprite Id of the first image or -1 if not found
int jo_sprite_replace ( const jo_img *const  img,
const int  sprite_id 
)

Replace a sprite.

Parameters
imgPointer to a image struct
sprite_idSprite ID to replace
Returns
sprite_id
static __jo_force_inline void jo_sprite_restore_sprite_scale ( void  )
static

Restore default scale for every sprite displayed after this call.

int jo_sprite_usage_percent ( void  )

Get sprite memory usage.

Returns
Sprite memory usage percent

jo_printf(0, 0, "Sprite memory usage: %d%% ", jo_sprite_usage_percent());

Variable Documentation

jo_sprite_attributes __jo_sprite_attributes

Current displayed sprite attribute (internal engine usage)

Warning
MC Hammer: don't touch this
jo_texture_definition __jo_sprite_def[JO_MAX_SPRITE]

(internal engine usage)

Warning
MC Hammer: don't touch this
jo_picture_definition __jo_sprite_pic[JO_MAX_SPRITE]

(internal engine usage)

Warning
MC Hammer: don't touch this
jo_pos3D __jo_sprite_pos

Current displayed sprite position (internal engine usage)

Warning
MC Hammer: don't touch this