emuapi.h
  1  #ifndef EMUAPI_H
  2  #define EMUAPI_H
  3  
  4  //#define INVX        1
  5  //#define INVY        1
  6  #define HAS_SND     1
  7  #define CUSTOM_SND  1
  8  #define HAS_I2CKBD  1
  9  //#define TIMER_REND  1
 10  
 11  #define EXTRA_HEAP  0x10
 12  
 13  // Title:     <                        >
 14  #define TITLE "   AtariST Emulator     "
 15  #define ROMSDIR "/st"
 16  
 17  #define emu_Init(ROM) {ast_Init(); ast_Start(ROM);}
 18  #define emu_Step(x) {ast_Step();}
 19  #define emu_Input(x) {ast_Input(x);}
 20  
 21  #define PALETTE_SIZE         256
 22  #define VID_FRAME_SKIP       0x0
 23  #define TFT_VBUFFER_YCROP    0
 24  #define SINGLELINE_RENDERING 1
 25  
 26  #define R32(rgb) ((rgb>>16)&0xff) 
 27  #define G32(rgb) ((rgb>>8)&0xff) 
 28  #define B32(rgb) (rgb & 0xff) 
 29  
 30  #define ACTION_NONE          0
 31  #define ACTION_MAXKBDVAL     16
 32  #define ACTION_EXITKBD       128
 33  #define ACTION_RUNTFT        129
 34  #define ACTION_RUNVGA        130
 35  
 36  #ifdef KEYMAP_PRESENT
 37  
 38  #define TAREA_W_DEF          32
 39  #define TAREA_H_DEF          32
 40  #define TAREA_END            255
 41  #define TAREA_NEW_ROW        254
 42  #define TAREA_NEW_COL        253
 43  #define TAREA_XY             252
 44  #define TAREA_WH             251
 45  
 46  #define KEYBOARD_X           16
 47  #define KEYBOARD_Y           32
 48  #define KEYBOARD_KEY_H       30
 49  #define KEYBOARD_KEY_W       28
 50  #define KEYBOARD_HIT_COLOR   RGBVAL16(0xff,0x00,0x00)
 51  
 52  const unsigned short keysw[]=
 53  { TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18,  
 54    TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, 
 55    TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, 
 56    TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, 
 57    //TAREA_NEW_ROW,18,18,18,18,18,18,18,18,18,18, 
 58    TAREA_END}; 
 59  
 60  const unsigned short key_map1[]={
 61  109, 110, 111, 106, 107, 108, 103, 104, 105, 112, // keypad
 62  16,17,18,19,20,21,22,23,24,25,
 63  30,31,32,33,34,35,36,37,38,28,
 64  44,45,46,47,48,49,50,51,52,57 };
 65  
 66  const unsigned short key_map2[]={
 67  59, 60, 61, 62, 63, 64, 65, 66, 67, 68, // Function keys
 68  16,17,18,19,20,21,22,23,24,25,
 69  30,31,32,33,34,35,36,37,38,28,
 70  44,45,46,47,48,49,50,51,52,57 };
 71  
 72  const unsigned short key_map3[]={
 73  2, 3, 4, 5, 6, 7, 8, 9, 10, 11, // digits
 74  16,17,18,19,20,21,22,23,24,25,
 75  30,31,32,33,34,35,36,37,38,28,
 76  44,45,46,47,48,49,50,51,52,57 };
 77  
 78  
 79  #ifdef HAS_I2CKBD
 80  const unsigned short i2ckeys[] = {
 81       0X0080,0X0008,0X0180,0X0108,0X0280,0X0208,0X0380,0X0308,0X0480,0X0408,
 82       0X0040,0X0004,0X0140,0X0104,0X0240,0X0204,0X0340,0X0304,0X0440,0X0404,
 83       0X0020,0X0002,0X0120,0X0102,0X0220,0X0202,0X0320,0X0302,0X0420,0X0402,
 84       0X0010,0X0001,0X0110,0X0101,0X0210,0X0201,0X0310,0X0301,0X0410,0X0401 };
 85       //0X0580,0X0540,0X0520,0X0510,0X0508,0X0504,0X0502,0X0501,0X0680,0X0640 };
 86  #endif
 87     
 88  #endif
 89  
 90  
 91  
 92  #define MASK_JOY2_RIGHT 0x0001
 93  #define MASK_JOY2_LEFT  0x0002
 94  #define MASK_JOY2_UP    0x0004
 95  #define MASK_JOY2_DOWN  0x0008
 96  #define MASK_JOY2_BTN   0x0010
 97  #define MASK_KEY_USER1  0x0020
 98  #define MASK_KEY_USER2  0x0040
 99  #define MASK_KEY_USER3  0x0080
100  #define MASK_JOY1_RIGHT 0x0100
101  #define MASK_JOY1_LEFT  0x0200
102  #define MASK_JOY1_UP    0x0400
103  #define MASK_JOY1_DOWN  0x0800
104  #define MASK_JOY1_BTN   0x1000
105  #define MASK_KEY_USER4  0x2000
106  
107  
108  
109  extern void emu_init(void);
110  extern void emu_printf(char * text);
111  extern void emu_printi(int val);
112  extern void * emu_Malloc(int size);
113  extern void emu_Free(void * pt);
114  
115  extern int emu_FileOpen(char * filename);
116  extern int emu_FileRead(char * buf, int size);
117  extern unsigned char emu_FileGetc(void);
118  extern int emu_FileSeek(int seek);
119  extern void emu_FileClose(void);
120  extern int emu_FileSize(char * filename);
121  extern int emu_LoadFile(char * filename, char * buf, int size);
122  extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
123  extern void emu_FileTempInit(void); 
124  extern void emu_FileTempRead(int addr, unsigned char * val, int n); 
125  extern void emu_FileTempWrite(int addr, unsigned char val); 
126  
127  extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
128  extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
129  extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);
130  extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line);
131  extern void emu_DrawVsync(void);
132  extern int emu_FrameSkip(void);
133  extern void * emu_LineBuffer(int line);
134  
135  extern void emu_InitJoysticks(void);
136  extern int emu_SwapJoysticks(int statusOnly);
137  extern unsigned short emu_DebounceLocalKeys(void);
138  extern int emu_ReadKeys(void);
139  extern int emu_GetPad(void);
140  extern int emu_ReadAnalogJoyX(int min, int max);
141  extern int emu_ReadAnalogJoyY(int min, int max);
142  extern int emu_ReadI2CKeyboard(void);
143  extern void emu_sndPlaySound(int chan, int volume, int freq);
144  extern void emu_sndPlayBuzz(int size, int val);
145  extern void emu_sndInit();
146  extern void emu_resetus(void);
147  extern int emu_us(void);
148  
149  extern int emu_setKeymap(int index);
150  
151  
152  #endif
153  
154  
155  
156