@Flash-Original Baja la original y copia los archivos rdp.c y rdp.h de la mía, si te da problemas de compilación porque la nueva incorpora algo del RSP, entonces solo compila la mía.
La diferencia está en las funciones del RDP, la original tiene estas:
void rdp_init( void );
void rdp_attach_display( display_context_t disp );
void rdp_detach_display( void );
void rdp_sync( sync_t sync );
void rdp_set_clipping( uint32_t tx, uint32_t ty, uint32_t bx, uint32_t by );
void rdp_set_default_clipping( void );
void rdp_enable_primitive_fill( void );
void rdp_enable_blend_fill( void );
void rdp_enable_texture_copy( void );
uint32_t rdp_load_texture( uint32_t texslot, uint32_t texloc, mirror_t mirror, sprite_t *sprite );
uint32_t rdp_load_texture_stride( uint32_t texslot, uint32_t texloc, mirror_t mirror, sprite_t *sprite, int offset );
void rdp_draw_textured_rectangle( uint32_t texslot, int tx, int ty, int bx, int by,  mirror_t mirror );
void rdp_draw_textured_rectangle_scaled( uint32_t texslot, int tx, int ty, int bx, int by, double x_scale, double y_scale,  mirror_t mirror );
void rdp_draw_sprite( uint32_t texslot, int x, int y ,  mirror_t mirror);
void rdp_draw_sprite_scaled( uint32_t texslot, int x, int y, double x_scale, double y_scale,  mirror_t mirror);
void rdp_set_primitive_color( uint32_t color );
void rdp_set_blend_color( uint32_t color );
void rdp_draw_filled_rectangle( int tx, int ty, int bx, int by );
void rdp_draw_filled_triangle( float x1, float y1, float x2, float y2, float x3, float y3 );
void rdp_set_texture_flush( flush_t flush );
void rdp_close( void );
La que yo edité corrige problemas, es más rápida y accede a más cosas del hardware como CYCLE para transparencias o zooms, hay funciones borradas como texture flush que es un despilfarro que puede penalizar en un 20%, en otras cambian los parámetros, los slots de texturas no sirven en 2D, es mejor tener los 4KB enteros y ahorrar esas instrucciones, etc..
void rdp_init( void );
void rdp_attach_display( display_context_t disp );
void rdp_detach_display( void );
void rdp_sync( sync_t sync );
void rdp_set_clipping( uint32_t tx, uint32_t ty, uint32_t bx, uint32_t by );
void rdp_set_default_clipping( void );
void rdp_enable_primitive_fill( void );
void rdp_enable_blend_fill( void );
void rdp_load_texture( sprite_t *sprite );
void rdp_draw_textured_rectangle( int tx, int ty, int bx, int by, int flags );
void rdp_draw_textured_rectangle_scaled( int tx, int ty, int bx, int by, double x_scale, double y_scale, int flags );
void rdp_draw_sprite( int x, int y, int flags );
void rdp_draw_sprite_scaled( int x, int y, float x_scale, float y_scale, int flags );
void rdp_draw_filled_rectangle( int tx, int ty, int bx, int by );
void rdp_draw_filled_triangle( float x1, float y1, float x2, float y2, float x3, float y3 );
void rdp_close( void );
// RDP new
void rdp_send( void );
void rdp_command( uint32_t data );
void rdp_cp_sprite( int x, int y, int flags, int cp_x, int cp_y, int line );
void rdp_cp_sprite_scaled( int x, int y, float x_scale, float y_scale, int flags, int cp_x, int cp_y, int line );
void rdp_set_fill_color( uint8_t r, uint8_t g, uint8_t b, uint8_t a );
void rdp_set_prim_color( uint8_t r, uint8_t g, uint8_t b, uint8_t a );
void rdp_set_blend_color( uint8_t r, uint8_t g, uint8_t b, uint8_t a );
void rdp_texture_copy( uint64_t mode );
void rdp_texture_cycle( uint8_t cycle, uint8_t enable_alpha, uint64_t mode );
void rdp_load_palette( uint8_t pal, uint8_t col_num, uint16_t *palette );
void rdp_select_palette( uint8_t pal );
void rdp_additive( void );
void rdp_intensify( uint8_t enable_alpha );
void rdp_color( uint8_t enable_alpha );
void rdp_noise( uint8_t type, uint8_t enable_alpha );
void rdp_triangle_setup( int type );
// FRAMEBUFFER new
uint32_t get_pixel( display_context_t disp, int x, int y );
void rdp_buffer_copy( display_context_t disp, uint16_t *buffer_texture, uint16_t x_buf, uint16_t y_buf, uint16_t width, uint16_t height, uint16_t skip );
void rdp_buffer_screen( display_context_t disp, uint16_t *buffer_texture, int texture_mode );
void rdp_load_texbuf( uint16_t *buffer_texture, int sh, int th );
// LOAD new
sprite_t *load_sprite( const char * const spritename );