partially working menu
[fceu.git] / drivers / gp2x / minimal.h
index ecafd75..37507f0 100644 (file)
-/*\r
 \r
-  GP2X minimal library v0.A by rlyeh, (c) 2005. emulnation.info@rlyeh (swap it!)\r
+#ifndef __GP2X_H__\r
+#define __GP2X_H__\r
 \r
-  Thanks to Squidge, Robster, snaff, Reesy and NK, for the help & previous work! :-)\r
 \r
-  License\r
-  =======\r
+void gp2x_init(void);\r
+void gp2x_deinit(void);\r
 \r
-  Free for non-commercial projects (it would be nice receiving a mail from you).\r
-  Other cases, ask me first.\r
+/* video */\r
+void gp2x_video_flip(void);\r
+void gp2x_video_changemode(int bpp);\r
+void gp2x_video_changemode2(int bpp);\r
+void gp2x_video_setpalette(int *pal, int len);\r
+void gp2x_video_RGB_setscaling(int ln_offs, int W, int H);\r
+void gp2x_memcpy_buffers(int buffers, void *data, int offset, int len);\r
+void gp2x_memcpy_all_buffers(void *data, int offset, int len);\r
+void gp2x_memset_all_buffers(int offset, int byte, int len);\r
 \r
-  GamePark Holdings is not allowed to use this library and/or use parts from it.\r
+/* sound */\r
+void gp2x_start_sound(int rate, int bits, int stereo);\r
+void gp2x_sound_write(void *buff, int len);\r
+void gp2x_sound_volume(int l, int r);\r
 \r
-*/\r
+/* joy */\r
+unsigned long gp2x_joystick_read(int allow_usb_joy);\r
 \r
-#include <fcntl.h>\r
-#include <linux/fb.h>\r
-#include <signal.h>\r
-#include <stdlib.h>\r
-#include <stdio.h>\r
-#include <string.h>\r
-#include <sys/mman.h>\r
-//#include <sys/ioctl.h>\r
-#include <sys/soundcard.h>\r
-#include <linux/soundcard.h>\r
 \r
-#include <sys/time.h>\r
-#include <unistd.h>\r
-#include <sys/ioctl.h>\r
+extern void *gp2x_screen;\r
+extern int memdev;\r
+extern char *ext_menu, *ext_state;\r
 \r
-#ifndef __MINIMAL_H__\r
-#define __MINIMAL_H__\r
-\r
-#define MINILIB_VERSION  "GP2X minimal library v0.A by rlyeh, (c) 2005."\r
-\r
-typedef struct gp2x_queue { volatile unsigned long head, tail, items, max_items; unsigned long *place920t, *place940t; } gp2x_queue;\r
-typedef struct gp2x_rect  { int x,y,w,h,solid; unsigned short *data15; unsigned char *data8; } gp2x_rect;\r
-\r
-extern void gp2x_timer_delay(unsigned long ticks);\r
-extern void gp2x_sound_pause(int yes);\r
-extern void gp2x_dualcore_pause(int yes);\r
-extern void             gp2x_blitter_rect15(gp2x_rect *r);\r
-extern void             gp2x_blitter_rect8(gp2x_rect *r);\r
-\r
-\r
-\r
-//extern void             gp2x_sound_frame (void *blah, void *bufferg, int samples);\r
 \r
 enum  { GP2X_UP=0x1,       GP2X_LEFT=0x4,       GP2X_DOWN=0x10,  GP2X_RIGHT=0x40,\r
         GP2X_START=1<<8,   GP2X_SELECT=1<<9,    GP2X_L=1<<10,    GP2X_R=1<<11,\r
         GP2X_A=1<<12,      GP2X_B=1<<13,        GP2X_X=1<<14,    GP2X_Y=1<<15,\r
-        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
+        GP2X_VOL_UP=1<<23, GP2X_VOL_DOWN=1<<22, GP2X_PUSH=1<<27 };\r
 \r
 #endif\r
-\r