- GP2X_VOL_UP=1<<23, GP2X_VOL_DOWN=1<<22, GP2X_PUSH=1<<27 };\r
-\r
-\r
-#define GP2X_QUEUE_MAX_ITEMS 16\r
-#define GP2X_QUEUE_ARRAY_PTR ((0x1000-(sizeof(gp2x_queue)<<2)))\r
-#define GP2X_QUEUE_DATA_PTR (GP2X_QUEUE_ARRAY_PTR-(GP2X_QUEUE_MAX_ITEMS<<2))\r
-\r
-#define gp2x_2ndcore_code(v) (*(volatile unsigned long *)(v))\r
-#define gp2x_1stcore_code(v) gp2x_dualcore_ram[(v)>>2]\r
-#define gp2x_2ndcore_data(v) gp2x_2ndcore_code((v)+0x100000)\r
-#define gp2x_1stcore_data(v) gp2x_1stcore_code((v)+0x100000)\r
-#define gp2x_dualcore_data(v) gp2x_1stcore_data(v)\r
-\r
-#define gp2x_2ndcore_code_ptr(v) ((volatile unsigned long *)(v))\r
-#define gp2x_1stcore_code_ptr(v) (&gp2x_dualcore_ram[(v)>>2])\r
-#define gp2x_2ndcore_data_ptr(v) gp2x_2ndcore_code_ptr((v)+0x100000)\r
-#define gp2x_1stcore_data_ptr(v) gp2x_1stcore_code_ptr((v)+0x100000)\r
-\r
-#define gp2x_video_wait_vsync() while(gp2x_memregs[0x1182>>1]&(1<<4));\r
-#define gp2x_video_wait_hsync() while(gp2x_memregs[0x1182>>1]&(1<<5));\r
-\r
-#define gp2x_video_color8(C,R,G,B) do gp2x_palette[((C)<<1)+0]=((G)<<8)|(B),gp2x_palette[((C)<<1)+1]=(R); while(0)\r
-#define gp2x_video_color15(R,G,B,A) ((((R)&0xF8)<<8)|(((G)&0xF8)<<3)|(((B)&0xF8)>>3)|((A)<<5))\r
-\r
-\r
-extern volatile unsigned short gp2x_palette[512];\r
-extern unsigned short *gp2x_screen15;\r
-extern unsigned char *gp2x_screen8;\r
-extern volatile unsigned long *gp2x_dualcore_ram;\r
-\r
-extern void gp2x_init(int tickspersecond, int bpp, int rate, int bits, int stereo, int hz);\r
-extern void gp2x_deinit(void);\r
-\r
-extern void gp2x_video_flip(void);\r
-extern void gp2x_video_flip_single(void);\r
-extern void gp2x_video_setpalette(void);\r
-\r
-extern unsigned long gp2x_joystick_read(void);\r
-\r
-extern void gp2x_sound_volume(int left, int right);\r
-\r
-extern unsigned long gp2x_timer_read(void);\r
-extern unsigned long gp2x_timer_read_ms(void);\r
-\r
-extern void gp2x_dualcore_enable(int on);\r
-extern void gp2x_dualcore_sync(void);\r
-extern void gp2x_dualcore_exec(unsigned long command);\r
-extern void gp2x_dualcore_launch_program(unsigned long *area, unsigned long size);\r
-extern void gp2x_dualcore_launch_program_from_disk(const char *file, unsigned long offset, unsigned long size);\r
-\r
-#define gp2x_dualcore_declare_subprogram(name) extern void gp2x_dualcore_launch_## name ##_subprogram(void);\r
-#define gp2x_dualcore_launch_subprogram(name) gp2x_dualcore_launch_## name ##_subprogram()\r