Jo Engine  2023.08.26
Jo Sega Saturn Engine
sprites.h
Go to the documentation of this file.
1 /*
2 ** Jo Sega Saturn Engine
3 ** Copyright (c) 2012-2020, Johannes Fetz (johannesfetz@gmail.com)
4 ** All rights reserved.
5 **
6 ** Redistribution and use in source and binary forms, with or without
7 ** modification, are permitted provided that the following conditions are met:
8 ** * Redistributions of source code must retain the above copyright
9 ** notice, this list of conditions and the following disclaimer.
10 ** * Redistributions in binary form must reproduce the above copyright
11 ** notice, this list of conditions and the following disclaimer in the
12 ** documentation and/or other materials provided with the distribution.
13 ** * Neither the name of the Johannes Fetz nor the
14 ** names of its contributors may be used to endorse or promote products
15 ** derived from this software without specific prior written permission.
16 **
17 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18 ** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 ** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 ** DISCLAIMED. IN NO EVENT SHALL Johannes Fetz BE LIABLE FOR ANY
21 ** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 ** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 ** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
35 #ifndef __JO_SPRITES_H__
36 # define __JO_SPRITES_H__
37 
38 /*
39 ██╗███╗ ██╗████████╗███████╗██████╗ ███╗ ██╗ █████╗ ██╗
40 ██║████╗ ██║╚══██╔══╝██╔════╝██╔══██╗████╗ ██║██╔══██╗██║
41 ██║██╔██╗ ██║ ██║ █████╗ ██████╔╝██╔██╗ ██║███████║██║
42 ██║██║╚██╗██║ ██║ ██╔══╝ ██╔══██╗██║╚██╗██║██╔══██║██║
43 ██║██║ ╚████║ ██║ ███████╗██║ ██║██║ ╚████║██║ ██║███████╗
44 ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝
45 ▲ DO NOT USE THESE FUNCTIONS ▲
46 */
47 
55 extern jo_texture_definition __jo_sprite_def[JO_MAX_SPRITE];
59 extern jo_picture_definition __jo_sprite_pic[JO_MAX_SPRITE];
63 void jo_sprite_draw(const int sprite_id, const jo_pos3D * const pos, const bool centered_style_coordinates, const bool billboard);
67 void jo_sprite_draw_rotate(const int sprite_id, const jo_pos3D * const pos, const int angle, const bool centered_style_coordinates, const bool billboard);
69 static __jo_force_inline void __internal_jo_sprite_set_position3D(const int x, const int y, const int z)
70 {
71  extern jo_pos3D __jo_sprite_pos;
72  __jo_sprite_pos.x = x;
73  __jo_sprite_pos.y = y;
74  __jo_sprite_pos.z = z;
75 }
76 
77 /*
78  █████╗ ██████╗ ██████╗ ██╗██████╗ ███████╗██████╗ ██╗ █████╗ ██████╗███████╗ ██╗███████╗██████╗ ███████╗███████╗
79 ██╔══██╗██╔══██╗██╔══██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗██║ ██╔══██╗██╔════╝██╔════╝ ██╔╝██╔════╝██╔══██╗██╔════╝██╔════╝
80 ███████║██║ ██║██║ ██║ ██╔╝ ██████╔╝█████╗ ██████╔╝██║ ███████║██║ █████╗ ██╔╝ █████╗ ██████╔╝█████╗ █████╗
81 ██╔══██║██║ ██║██║ ██║ ██╔╝ ██╔══██╗██╔══╝ ██╔═══╝ ██║ ██╔══██║██║ ██╔══╝ ██╔╝ ██╔══╝ ██╔══██╗██╔══╝ ██╔══╝
82 ██║ ██║██████╔╝██████╔╝██╔╝ ██║ ██║███████╗██║ ███████╗██║ ██║╚██████╗███████╗██╔╝ ██║ ██║ ██║███████╗███████╗
83 ╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝
84 */
85 
90 
95 int jo_sprite_add(const jo_img * const img);
96 
103 
109 int jo_sprite_replace(const jo_img * const img, const int sprite_id);
110 
115 void jo_sprite_free_from(const int sprite_id);
116 
121 {
123 }
124 
125 # ifdef JO_COMPILE_WITH_SPRITE_HASHTABLE
126 
131 int jo_sprite_name2id(const char *const filename);
132 #endif
133 
134 /*
135 ████████╗██████╗ █████╗ ███╗ ██╗███████╗██████╗ █████╗ ██████╗ ███████╗███╗ ██╗ ██████╗██╗ ██╗
136 ╚══██╔══╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔════╝████╗ ██║██╔════╝╚██╗ ██╔╝
137  ██║ ██████╔╝███████║██╔██╗ ██║███████╗██████╔╝███████║██████╔╝█████╗ ██╔██╗ ██║██║ ╚████╔╝
138  ██║ ██╔══██╗██╔══██║██║╚██╗██║╚════██║██╔═══╝ ██╔══██║██╔══██╗██╔══╝ ██║╚██╗██║██║ ╚██╔╝
139  ██║ ██║ ██║██║ ██║██║ ╚████║███████║██║ ██║ ██║██║ ██║███████╗██║ ╚████║╚██████╗ ██║
140  ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝
141 */
142 
143 /*
144 ** Screen doors filter (old school transparency)
145 */
146 
150 {
152 }
153 
157 {
159 }
160 
161 /*
162 ** Half transparency
163 */
164 
168 {
170 }
171 
175 {
177 }
178 
179 /*
180 ███████╗██╗ ██╗ █████╗ ██████╗ ██████╗ ██╗ ██╗
181 ██╔════╝██║ ██║██╔══██╗██╔══██╗██╔═══██╗██║ ██║
182 ███████╗███████║███████║██║ ██║██║ ██║██║ █╗ ██║
183 ╚════██║██╔══██║██╔══██║██║ ██║██║ ██║██║███╗██║
184 ███████║██║ ██║██║ ██║██████╔╝╚██████╔╝╚███╔███╔╝
185 ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚══╝╚══╝
186 */
187 
191 {
193 }
194 
198 {
200 }
201 
202 /*
203 ** Dark filter
204 */
205 
209 {
211 }
212 
216 {
218 }
219 
220 /*
221  ██████╗ ██████╗ ██╗ ██╗██████╗ █████╗ ██╗ ██╗██████╗ ███████╗██╗ ██╗ █████╗ ██████╗ ██╗███╗ ██╗ ██████╗
222 ██╔════╝ ██╔═══██╗██║ ██║██╔══██╗██╔══██╗██║ ██║██╔══██╗ ██╔════╝██║ ██║██╔══██╗██╔══██╗██║████╗ ██║██╔════╝
223 ██║ ███╗██║ ██║██║ ██║██████╔╝███████║██║ ██║██║ ██║ ███████╗███████║███████║██║ ██║██║██╔██╗ ██║██║ ███╗
224 ██║ ██║██║ ██║██║ ██║██╔══██╗██╔══██║██║ ██║██║ ██║ ╚════██║██╔══██║██╔══██║██║ ██║██║██║╚██╗██║██║ ██║
225 ╚██████╔╝╚██████╔╝╚██████╔╝██║ ██║██║ ██║╚██████╔╝██████╔╝ ███████║██║ ██║██║ ██║██████╔╝██║██║ ╚████║╚██████╔╝
226  ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝
227 */
228 
230 # define JO_NO_GOURAUD_COLOR (0xc210)
231 
238 void jo_set_gouraud_shading_colors(const jo_color topleft_color,
239  const jo_color topright_color,
240  const jo_color bottomright_color,
241  const jo_color bottomleft_color);
242 
246 {
248 }
249 
253 {
255 }
256 
258 # define JO_DEFAULT_BRIGHTNESS (16)
259 
261 # define JO_MAX_BRIGHTNESS (31)
262 
266 void jo_set_gouraud_shading_brightness(const unsigned char brightness);
267 
268 /*
269 ██╗ ██╗ ██████╗ ██████╗ ██╗███████╗ ██╗██╗ ██╗███████╗██████╗ ████████╗ ███████╗██╗ ██╗██████╗
270 ██║ ██║██╔═══██╗██╔══██╗██║╚══███╔╝ ██╔╝██║ ██║██╔════╝██╔══██╗╚══██╔══╝ ██╔════╝██║ ██║██╔══██╗
271 ███████║██║ ██║██████╔╝██║ ███╔╝ ██╔╝ ██║ ██║█████╗ ██████╔╝ ██║ █████╗ ██║ ██║██████╔╝
272 ██╔══██║██║ ██║██╔══██╗██║ ███╔╝ ██╔╝ ╚██╗ ██╔╝██╔══╝ ██╔══██╗ ██║ ██╔══╝ ██║ ██║██╔═══╝
273 ██║ ██║╚██████╔╝██║ ██║██║███████╗██╔╝ ╚████╔╝ ███████╗██║ ██║ ██║ ██║ ███████╗██║██║
274 ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝╚═╝
275 */
276 
280 {
282 }
283 
287 {
289 }
290 
293 {
295 }
296 
300 {
302 }
303 
304 /*
305 ███████╗ ██████╗ █████╗ ██╗ ███████╗
306 ██╔════╝██╔════╝██╔══██╗██║ ██╔════╝
307 ███████╗██║ ███████║██║ █████╗
308 ╚════██║██║ ██╔══██║██║ ██╔══╝
309 ███████║╚██████╗██║ ██║███████╗███████╗
310 ╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚══════╝
311 */
312 
314 # define JO_NO_ZOOM (65535)
315 
319 static __jo_force_inline void jo_sprite_change_sprite_scale(const float scale)
320 {
323 }
324 
329 static __jo_force_inline void jo_sprite_change_sprite_scale_xy(const float scale_x, const float scale_y)
330 {
333 }
334 
340 {
343 }
344 
348 {
351 }
352 
353 /*
354 ██████╗ ██████╗ █████╗ ██╗ ██╗
355 ██╔══██╗██╔══██╗██╔══██╗██║ ██║
356 ██║ ██║██████╔╝███████║██║ █╗ ██║
357 ██║ ██║██╔══██╗██╔══██║██║███╗██║
358 ██████╔╝██║ ██║██║ ██║╚███╔███╔╝
359 ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚══╝╚══╝
360 */
361 
365 static __jo_force_inline void jo_sprite_set_palette(int palette_id)
366 {
368 }
369 
377 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)
378 {
379  extern jo_pos3D __jo_sprite_pos;
381  jo_sprite_draw_rotate(sprite_id, &__jo_sprite_pos, angle, true, false);
382 }
383 
390 static __jo_force_inline void jo_sprite_draw3D(const int sprite_id, const int x, const int y, const int z)
391 {
392  extern jo_pos3D __jo_sprite_pos;
394  jo_sprite_draw(sprite_id, &__jo_sprite_pos, true, false);
395 }
396 
404 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)
405 {
406  extern jo_pos3D __jo_sprite_pos;
408  jo_sprite_draw_rotate(sprite_id, &__jo_sprite_pos, angle, false, false);
409 }
410 
417 static __jo_force_inline void jo_sprite_draw3D2(const int sprite_id, const int x, const int y, const int z)
418 {
419  extern jo_pos3D __jo_sprite_pos;
421  jo_sprite_draw(sprite_id, &__jo_sprite_pos, false, false);
422 }
423 
424 void jo_sprite_draw_4p_fixed(const int sprite_id, const jo_pos2D_fixed * const four_points, const jo_fixed z, const bool centered_style_coordinates);
425 
426 /*
427  ██████╗██╗ ██╗██████╗ ██████╗ ██╗███╗ ██╗ ██████╗
428 ██╔════╝██║ ██║██╔══██╗██╔══██╗██║████╗ ██║██╔════╝
429 ██║ ██║ ██║██████╔╝██████╔╝██║██╔██╗ ██║██║ ███╗
430 ██║ ██║ ██║██╔═══╝ ██╔═══╝ ██║██║╚██╗██║██║ ██║
431 ╚██████╗███████╗██║██║ ██║ ██║██║ ╚████║╚██████╔╝
432  ╚═════╝╚══════╝╚═╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝
433 */
434 
439 {
440  __jo_sprite_attributes.clipping = outside ? Window_Out : Window_In;
441 }
442 
446 {
447  __jo_sprite_attributes.clipping = No_Window;
448 }
449 
450 
458 void jo_sprite_set_clipping_area(const unsigned int x, const unsigned int y, const unsigned int width, const unsigned int height, const int depth);
459 
460 /*
461  ██████╗ ███████╗████████╗ ███████╗██████╗ ██████╗ ██╗████████╗███████╗ ██╗███╗ ██╗███████╗ ██████╗
462 ██╔════╝ ██╔════╝╚══██╔══╝ ██╔════╝██╔══██╗██╔══██╗██║╚══██╔══╝██╔════╝ ██║████╗ ██║██╔════╝██╔═══██╗
463 ██║ ███╗█████╗ ██║ ███████╗██████╔╝██████╔╝██║ ██║ █████╗ ██║██╔██╗ ██║█████╗ ██║ ██║
464 ██║ ██║██╔══╝ ██║ ╚════██║██╔═══╝ ██╔══██╗██║ ██║ ██╔══╝ ██║██║╚██╗██║██╔══╝ ██║ ██║
465 ╚██████╔╝███████╗ ██║ ███████║██║ ██║ ██║██║ ██║ ███████╗ ██║██║ ╚████║██║ ╚██████╔╝
466  ╚═════╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚══════╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═════╝
467 */
468 
476 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)
477 {
478  return (data[x + y * image_width]);
479 }
480 
488 static __jo_force_inline unsigned char jo_sprite_get_pixel_palette_index(const unsigned char * const data, const unsigned int x, const unsigned int y, const unsigned int image_width)
489 {
490  return (data[x + y * image_width]);
491 }
492 
501 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)
502 {
503  return (jo_sprite_get_pixel_color(data, x, y, image_width) == JO_COLOR_Transparent);
504 }
505 
510 static __jo_force_inline int jo_sprite_get_width(const int sprite_id)
511 {
512  return (__jo_sprite_def[sprite_id].width);
513 }
514 
519 static __jo_force_inline int jo_sprite_get_height(const int sprite_id)
520 {
521  return (__jo_sprite_def[sprite_id].height);
522 }
523 
528 static __jo_force_inline void *jo_sprite_get_raw_data(const int sprite_id)
529 {
530  return (__jo_sprite_pic[sprite_id].data);
531 }
532 
533 /*
534 ███████╗████████╗ █████╗ ████████╗██╗███████╗████████╗██╗ ██████╗███████╗
535 ██╔════╝╚══██╔══╝██╔══██╗╚══██╔══╝██║██╔════╝╚══██╔══╝██║██╔════╝██╔════╝
536 ███████╗ ██║ ███████║ ██║ ██║███████╗ ██║ ██║██║ ███████╗
537 ╚════██║ ██║ ██╔══██║ ██║ ██║╚════██║ ██║ ██║██║ ╚════██║
538 ███████║ ██║ ██║ ██║ ██║ ██║███████║ ██║ ██║╚██████╗███████║
539 ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
540 */
541 
546 {
547  return (jo_get_last_sprite_id() + 1);
548 }
549 
555 
556 #endif /* !__JO_SPRITES_H__ */
557 
558 /*
559 ** END OF FILE
560 */
jo_sprite_get_height
static __jo_force_inline int jo_sprite_get_height(const int sprite_id)
Get sprite height.
Definition: sprites.h:519
jo_sprite_enable_half_transparency
static __jo_force_inline void jo_sprite_enable_half_transparency(void)
Activate half transparency for every sprite displayed after this call.
Definition: sprites.h:167
jo_sprite_enable_dark_filter
static __jo_force_inline void jo_sprite_enable_dark_filter(void)
Activate dark filter for every sprite displayed after this call.
Definition: sprites.h:208
jo_sprite_draw3D
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.
Definition: sprites.h:390
jo_sprite_change_sprite_scale_xy_fixed
static __jo_force_inline void jo_sprite_change_sprite_scale_xy_fixed(const jo_fixed scale_x, const jo_fixed scale_y)
Change scale for every sprite displayed after this call using fixed number.
Definition: sprites.h:339
jo_sprite_enable_horizontal_flip
static __jo_force_inline void jo_sprite_enable_horizontal_flip(void)
Activate horizontal flip for every sprite displayed after this call.
Definition: sprites.h:292
jo_sprite_disable_half_transparency
static __jo_force_inline void jo_sprite_disable_half_transparency(void)
Disable half transparency for every sprite displayed after this call.
Definition: sprites.h:174
jo_sprite_enable_screen_doors_filter
static __jo_force_inline void jo_sprite_enable_screen_doors_filter(void)
Activate screen doors filter for every sprite displayed after this call.
Definition: sprites.h:149
jo_set_gouraud_shading_colors
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.
jo_sprite_change_sprite_scale
static __jo_force_inline void jo_sprite_change_sprite_scale(const float scale)
Change scale for every sprite displayed after this call.
Definition: sprites.h:319
jo_set_gouraud_shading_brightness
void jo_set_gouraud_shading_brightness(const unsigned char brightness)
Change Gouraud Shading brightness.
JO_REMOVE_FLAG
#define JO_REMOVE_FLAG(BYTEFIELD, FLAG)
Remove flag in bytefield.
Definition: math.h:330
jo_sprite_attributes::effect
unsigned short effect
Definition: types.h:267
__jo_sprite_pic
jo_picture_definition __jo_sprite_pic[JO_MAX_SPRITE]
(internal engine usage)
__jo_sprite_attributes
jo_sprite_attributes __jo_sprite_attributes
Current displayed sprite attribute (internal engine usage)
jo_texture_definition
Texture definition.
Definition: types.h:209
jo_sprite_get_pixel_palette_index
static __jo_force_inline unsigned char jo_sprite_get_pixel_palette_index(const unsigned char *const data, const unsigned int x, const unsigned int y, const unsigned int image_width)
Get a specific pixel palette index from image bytes.
Definition: sprites.h:488
jo_sprite_disable_screen_doors_filter
static __jo_force_inline void jo_sprite_disable_screen_doors_filter(void)
Disable screen doors filter for every sprite displayed after this call.
Definition: sprites.h:156
jo_sprite_get_pixel_color
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.
Definition: sprites.h:476
jo_sprite_enable_clipping
static __jo_force_inline void jo_sprite_enable_clipping(bool outside)
Activate sprite clipping for every sprite displayed after this call.
Definition: sprites.h:438
jo_sprite_change_sprite_scale_xy
static __jo_force_inline void jo_sprite_change_sprite_scale_xy(const float scale_x, const float scale_y)
Change scale for every sprite displayed after this call.
Definition: sprites.h:329
jo_sprite_attributes::color_table_index
unsigned int color_table_index
Definition: types.h:269
jo_sprite_draw3D_and_rotate
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.
Definition: sprites.h:377
jo_sprite_draw
void jo_sprite_draw(const int sprite_id, const jo_pos3D *const pos, const bool centered_style_coordinates, const bool billboard)
(internal engine usage)
JO_MULT_BY_256
#define JO_MULT_BY_256(X)
Multiply a variable by 256.
Definition: math.h:108
jo_sprite_attributes::fixed_scale_y
jo_fixed fixed_scale_y
Definition: types.h:272
jo_pos3D::z
int z
Definition: types.h:72
jo_sprite_disable_shadow_filter
static __jo_force_inline void jo_sprite_disable_shadow_filter(void)
Disable shadow filter for every sprite displayed after this call.
Definition: sprites.h:197
jo_sprite_disable_horizontal_flip
static __jo_force_inline void jo_sprite_disable_horizontal_flip(void)
Disable horizontal flip for every sprite displayed after this call.
Definition: sprites.h:299
jo_color
unsigned short jo_color
15 bits color type
Definition: types.h:42
jo_sprite_count
static __jo_force_inline int jo_sprite_count(void)
Get sprite count.
Definition: sprites.h:545
jo_sprite_attributes::direction
unsigned short direction
Definition: types.h:268
jo_picture_definition
Picture definition.
Definition: types.h:218
jo_img_8bits
8 bits image struct
Definition: types.h:234
jo_sprite_add
int jo_sprite_add(const jo_img *const img)
Add a sprite.
jo_sprite_free_all
static __jo_force_inline void jo_sprite_free_all(void)
Free all sprites.
Definition: sprites.h:120
__jo_force_inline
#define __jo_force_inline
force inline attribute (and prevent Doxygen prototype parsing bug)
Definition: types.h:39
jo_fixed
int jo_fixed
Fixed point Q16.16 number.
Definition: types.h:49
JO_COLOR_Transparent
#define JO_COLOR_Transparent
Transparent color.
Definition: colors.h:87
jo_pos3D::y
int y
Definition: types.h:71
jo_sprite_disable_vertical_flip
static __jo_force_inline void jo_sprite_disable_vertical_flip(void)
Disable vertical flip for every sprite displayed after this call.
Definition: sprites.h:286
JO_ADD_FLAG
#define JO_ADD_FLAG(BYTEFIELD, FLAG)
Add flag in bytefield.
Definition: math.h:324
jo_sprite_free_from
void jo_sprite_free_from(const int sprite_id)
Free all sprites from the given sprite_id.
jo_sprite_disable_clipping
static __jo_force_inline void jo_sprite_disable_clipping(void)
Disable sprite clipping for every sprite displayed after this call.
Definition: sprites.h:445
jo_sprite_set_palette
static __jo_force_inline void jo_sprite_set_palette(int palette_id)
Change palette for every 8 bits sprite displayed after this call.
Definition: sprites.h:365
jo_sprite_set_clipping_area
void jo_sprite_set_clipping_area(const unsigned int x, const unsigned int y, const unsigned int width, const unsigned int height, const int depth)
Set user clipping area.
jo_sprite_disable_dark_filter
static __jo_force_inline void jo_sprite_disable_dark_filter(void)
Disable dark filter for every sprite displayed after this call.
Definition: sprites.h:215
jo_sprite_enable_vertical_flip
static __jo_force_inline void jo_sprite_enable_vertical_flip(void)
Activate vertical flip for every sprite displayed after this call.
Definition: sprites.h:279
jo_sprite_replace
int jo_sprite_replace(const jo_img *const img, const int sprite_id)
Replace a sprite.
jo_sprite_draw3D2
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.
Definition: sprites.h:417
jo_sprite_disable_gouraud_shading
static __jo_force_inline void jo_sprite_disable_gouraud_shading(void)
Disable Gouraud Shading for every sprite displayed after this call.
Definition: sprites.h:252
jo_sprite_get_width
static __jo_force_inline int jo_sprite_get_width(const int sprite_id)
Get sprite width.
Definition: sprites.h:510
jo_sprite_restore_sprite_scale
static __jo_force_inline void jo_sprite_restore_sprite_scale(void)
Restore default scale for every sprite displayed after this call.
Definition: sprites.h:347
jo_sprite_draw_rotate
void jo_sprite_draw_rotate(const int sprite_id, const jo_pos3D *const pos, const int angle, const bool centered_style_coordinates, const bool billboard)
(internal engine usage)
jo_pos3D
3D position
Definition: types.h:69
jo_pos3D::x
int x
Definition: types.h:70
jo_sprite_get_raw_data
static __jo_force_inline void * jo_sprite_get_raw_data(const int sprite_id)
Get sprite raw image contents.
Definition: sprites.h:528
jo_sprite_attributes::fixed_scale_x
jo_fixed fixed_scale_x
Definition: types.h:271
jo_sprite_draw3D_and_rotate2
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.
Definition: sprites.h:404
__internal_jo_sprite_set_position3D
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.
Definition: sprites.h:69
jo_sprite_is_pixel_transparent
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.
Definition: sprites.h:501
jo_sprite_attributes::clipping
unsigned int clipping
Definition: types.h:273
jo_sprite_attributes
Sprite attributes.
Definition: types.h:266
jo_sprite_name2id
int jo_sprite_name2id(const char *const filename)
Retrive the Sprite Id from filename based on the four first character in the filename.
jo_sprite_enable_shadow_filter
static __jo_force_inline void jo_sprite_enable_shadow_filter(void)
Activate shadow filter for every sprite displayed after this call.
Definition: sprites.h:190
jo_get_last_sprite_id
int jo_get_last_sprite_id(void)
Get last Sprite Id.
jo_float2fixed
static __jo_force_inline jo_fixed jo_float2fixed(const float x)
Convert float to jo engine fixed (avoid usage of GCC Soft Float)
Definition: math.h:425
jo_sprite_draw_4p_fixed
void jo_sprite_draw_4p_fixed(const int sprite_id, const jo_pos2D_fixed *const four_points, const jo_fixed z, const bool centered_style_coordinates)
jo_pos2D_fixed
2D position using fixed number
Definition: types.h:60
jo_sprite_usage_percent
int jo_sprite_usage_percent(void)
Get sprite memory usage.
jo_sprite_add_8bits_image
int jo_sprite_add_8bits_image(const jo_img_8bits *const img)
Add a 8 bits sprite.
jo_img
15 bits image struct
Definition: types.h:226
__jo_sprite_def
jo_texture_definition __jo_sprite_def[JO_MAX_SPRITE]
(internal engine usage)
JO_NO_ZOOM
#define JO_NO_ZOOM
Value used to keep the original scale.
Definition: sprites.h:314
jo_sprite_enable_gouraud_shading
static __jo_force_inline void jo_sprite_enable_gouraud_shading(void)
Activate Gouraud Shading for every sprite displayed after this call.
Definition: sprites.h:245