X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plat.h;h=03949d6deb9f7af73802e4e26c8e883cf4495112;hb=HEAD;hp=54436cd671acf2605aa158ed70948afdfa3a44ca;hpb=6282e17ef5f37915df1a77b5d7138c666e94d0fb;p=libpicofe.git diff --git a/plat.h b/plat.h index 54436cd..8385d06 100644 --- a/plat.h +++ b/plat.h @@ -7,6 +7,30 @@ extern "C" { #endif +// platform dependend color handling +#if defined(USE_BGR555) +#define PXMAKE(r,g,b) ((((b)<<7) & 0x7c00)|(((g)<<2) & 0x03e0)|((r)>>3)) +#define PXMASKL(t,c) ((t) & (((1<<(c))-1)*0x04210421)) +#define PXMASKH(t,c) ((t) & ~(((1<<(c))-1)*0x04210421) & 0x7fff) +#define PXGETR(t) (((t) & 0x001f)<<3) +#define PXGETG(t) (((t) & 0x03e0)>>2) +#define PXGETB(t) (((t) & 0x7c00)>>7) +#elif defined(USE_BGR565) +#define PXMAKE(r,g,b) ((((b)<<8) & 0xf800)|(((g)<<3) & 0x07e0)|((r)>>3)) +#define PXMASKL(t,c) ((t) & (((1<<(c))-1)*0x08210821)) +#define PXMASKH(t,c) ((t) & ~(((1<<(c))-1)*0x08210821)) +#define PXGETR(t) (((t) & 0x001f)<<3) +#define PXGETG(t) (((t) & 0x07e0)>>3) +#define PXGETB(t) (((t) & 0xf800)>>8) +#else // RGB565 +#define PXMAKE(r,g,b) ((((r)<<8) & 0xf800)|(((g)<<3) & 0x07e0)|((b)>>3)) +#define PXMASKL(t,c) ((t) & (((1<<(c))-1)*0x08210821)) +#define PXMASKH(t,c) ((t) & ~(((1<<(c))-1)*0x08210821)) +#define PXGETR(t) (((t) & 0xf800)>>8) +#define PXGETG(t) (((t) & 0x07e0)>>3) +#define PXGETB(t) (((t) & 0x001f)<<3) +#endif + /* target device, everything is optional */ struct plat_target { int (*cpu_clock_get)(void); @@ -15,12 +39,15 @@ struct plat_target { int (*hwfilter_set)(int which); int (*lcdrate_set)(int is_pal); int (*gamma_set)(int val, int black_level); - int (*step_volume)(int is_up); + int (*step_volume)(int *volume, int diff); + int (*switch_layer)(int which, int enable); const char **vout_methods; int vout_method; int vout_fullscreen; const char **hwfilters; int hwfilter; + const int *sound_rates; + int sound_rate; }; extern struct plat_target plat_target; @@ -76,14 +103,23 @@ static __inline int plat_target_gamma_set(int val, int black_level) } /* step sound volume up or down */ -static __inline int plat_target_step_volume(int is_up) +static __inline int plat_target_step_volume(int *volume, int diff) { if (plat_target.step_volume) - return plat_target.step_volume(is_up); + return plat_target.step_volume(volume, diff); + return -1; +} + +/* switch device graphics layers/overlays */ +static __inline int plat_target_switch_layer(int which, int enable) +{ + if (plat_target.switch_layer) + return plat_target.switch_layer(which, enable); return -1; } /* menu: enter (switch bpp, etc), begin/end drawing */ +void plat_video_menu_update(void); void plat_video_menu_enter(int is_rom_loaded); void plat_video_menu_begin(void); void plat_video_menu_end(void); @@ -95,6 +131,12 @@ void plat_video_wait_vsync(void); /* return the dir/ where configs, saves, bios, etc. are found */ int plat_get_root_dir(char *dst, int len); +/* return the dir/ where skin files are found */ +int plat_get_skin_dir(char *dst, int len); + +/* return the top level dir for image files */ +int plat_get_data_dir(char *dst, int len); + int plat_is_dir(const char *path); int plat_wait_event(int *fds_hnds, int count, int timeout_ms); void plat_sleep_ms(int ms);