kopia lustrzana https://github.com/Jean-MarcHarvengt/MCUME
208 wiersze
5.5 KiB
C
208 wiersze
5.5 KiB
C
#ifndef EMUAPI_H
|
|
#define EMUAPI_H
|
|
|
|
#include "platform_config.h"
|
|
|
|
#define CUSTOM_SND 1
|
|
//#define TIMER_REND 1
|
|
#define EXTRA_HEAP 0x10
|
|
|
|
// Title: < >
|
|
#define TITLE " Atari 800 Emulator"
|
|
#define ROMSDIR "800"
|
|
|
|
#define emu_Init(ROM) {at8_Init(); at8_Start(ROM);}
|
|
#define emu_Step(x) {at8_Step();}
|
|
#define emu_Input(x) {}
|
|
|
|
#define PALETTE_SIZE 256
|
|
#define VID_FRAME_SKIP 0x0
|
|
#define TFT_VBUFFER_YCROP 0
|
|
#define SINGLELINE_RENDERING 1
|
|
|
|
#define R32(rgb) ((rgb>>16)&0xff)
|
|
#define G32(rgb) ((rgb>>8)&0xff)
|
|
#define B32(rgb) (rgb & 0xff)
|
|
|
|
#define ACTION_NONE 0
|
|
#define ACTION_MAXKBDVAL 0X40
|
|
#define ACTION_EXITKBD 127
|
|
#define ACTION_RUNTFT 126
|
|
#define ACTION_RUNVGA 125
|
|
|
|
|
|
#ifdef KEYMAP_PRESENT
|
|
|
|
#define keylables_map1_0 (char *)"qwertyuiop\x1a"
|
|
#define keylables_map1_1 (char *)" asdfghjkl\x19"
|
|
#define keylables_map1_2 (char *)" zxcvbnm.\x10 "
|
|
const unsigned short key_map1[] = {
|
|
0x2F+1,0x2F,0x2A+1,0x28+1,0x2D+1,0x2B+1,0x0B+1,0x0D+1,0x08+1,0x0A+1,0x34+1,
|
|
0,0x3F+1,0x3F,0x3A+1,0x38+1,0x3D+1,0x39+1,0x01+1,0x05+1,0x00+1,0x0C+1,
|
|
0,0x17+1,0x16+1,0x12+1,0x10+1,0x15+1,0x23+1,0x25+1,0x22+1, 0x21+1,
|
|
0,0,0,0
|
|
};
|
|
|
|
#define keylables_map2_0 (char *)"1234567890="
|
|
#define keylables_map2_1 (char *)"T!@#$%+&*- "
|
|
#define keylables_map2_2 (char *)" ()?/\"<>,: "
|
|
const unsigned short key_map2[] = {
|
|
0x1F+1,0x1F,0x1A+1,0x18+1,0x1D+1,0x1B+1,0x33+1,0x35+1,0x30+1,0x32+1,0x0F+1, // Digits
|
|
0x2C+1,95+1,117+1,90+1,88+1,93+1,0x06+1,91+1,0x07+1,0x0E + 1,0, // various
|
|
0, 112+1,114+1,102+1,0x26+1,94+1,0x36+1,0x37+1,0x20+1,66+1,
|
|
0,0,0,0
|
|
};
|
|
//0x07+1=*, 0x22+1=.,0x26+1=/, 0x02+1=;, 0x06+1=+, 0x36+1=<, 0x37+1=>, 0x0F+1==, 0x0E+1=-, 0x06+1=+
|
|
|
|
#define keylables_map3_0 (char *)"\x11\x12\x13\x14H "
|
|
#define keylables_map3_1 (char *)" "
|
|
#define keylables_map3_2 (char *)" ' ; "
|
|
const unsigned short key_map3[] = {
|
|
3+1,4+1,19+1,20+1,17+1,0,0,0,0,0,0, // function keys
|
|
0, 0,0,0,0,0,0,0,0,0,0,
|
|
0, 0,0,0,0,115+1,0,0,0x02+1,0,
|
|
0,0,0,0
|
|
};
|
|
|
|
|
|
const unsigned short matkeys[] = {
|
|
0x020,0x120,0x220,0x320,0x420,0x408,0x308,0x208,0x108,0x008,0x002, // row 1
|
|
0x510,0x010,0x110,0x210,0x310,0x410,0x401,0x301,0x201,0x101,0x001, // row 2
|
|
0x520,0x102,0x202,0x302,0x402,0x404,0x304,0x204,0x104,0x004, // row 3
|
|
0x508,0x501,0x502,0x504 }; // cursor keys
|
|
|
|
#endif
|
|
|
|
/* Pokey code
|
|
KEY_A = 63
|
|
KEY_S = 62
|
|
KEY_G = 61
|
|
KEY_Cap = 60
|
|
KEY_D = 58
|
|
KEY_H = 57
|
|
KEY_F = 56
|
|
KEY_Great = 55
|
|
KEY_Less = 54
|
|
KEY_8 = 53
|
|
KEY_BSp = 52
|
|
KEY_7 = 51
|
|
KEY_0 = 50
|
|
KEY_9 = 48
|
|
KEY_Q = 47
|
|
KEY_W = 46
|
|
KEY_T = 45
|
|
KEY_Tab = 44
|
|
KEY_Y = 43
|
|
KEY_E = 42
|
|
KEY_R = 40
|
|
KEY_Inv = 39
|
|
KEY_Slash = 38
|
|
KEY_M = 37
|
|
KEY_N = 35
|
|
KEY_Dot = 34
|
|
KEY_Spa = 33
|
|
KEY_Comma = 32
|
|
KEY_1 = 31
|
|
KEY_2 = 30
|
|
KEY_5 = 29
|
|
KEY_Esc = 28
|
|
KEY_6 = 27
|
|
KEY_3 = 26
|
|
KEY_4 = 24
|
|
KEY_Z = 23
|
|
KEY_X = 22
|
|
KEY_B = 21
|
|
KEY_F4 = 20
|
|
KEY_F3 = 19
|
|
KEY_C = 18
|
|
KEY_Hlp = 17
|
|
KEY_V = 16
|
|
KEY_Equal = 15
|
|
KEY_Minus = 14
|
|
KEY_I = 13
|
|
KEY_Ret = 12
|
|
KEY_U = 11
|
|
KEY_P = 10
|
|
KEY_O = 8
|
|
KEY_Aster = 7
|
|
KEY_plus = 6
|
|
KEY_K = 5
|
|
KEY_F2 = 4
|
|
KEY_F1 = 3
|
|
KEY_Semi = 2
|
|
KEY_J = 1
|
|
KEY_L = 0
|
|
*/
|
|
|
|
#define MASK_JOY2_RIGHT 0x0001
|
|
#define MASK_JOY2_LEFT 0x0002
|
|
#define MASK_JOY2_UP 0x0004
|
|
#define MASK_JOY2_DOWN 0x0008
|
|
#define MASK_JOY2_BTN 0x0010
|
|
#define MASK_KEY_USER1 0x0020
|
|
#define MASK_KEY_USER2 0x0040
|
|
#define MASK_KEY_USER3 0x0080
|
|
#define MASK_JOY1_RIGHT 0x0100
|
|
#define MASK_JOY1_LEFT 0x0200
|
|
#define MASK_JOY1_UP 0x0400
|
|
#define MASK_JOY1_DOWN 0x0800
|
|
#define MASK_JOY1_BTN 0x1000
|
|
#define MASK_KEY_USER4 0x2000
|
|
#define MASK_OSKB 0x8000
|
|
|
|
|
|
extern void emu_init(void);
|
|
extern void emu_start(void);
|
|
extern void emu_resetSD(void);
|
|
|
|
extern void emu_printf(const char * text);
|
|
extern void emu_printi(int val);
|
|
extern void * emu_Malloc(int size);
|
|
extern void emu_Free(void * pt);
|
|
|
|
extern int emu_FileOpen(const char * filepath, const char * mode);
|
|
extern int emu_FileRead(void * buf, int size, int handler);
|
|
extern int emu_FileGetc(int handler);
|
|
extern int emu_FileSeek(int handler, int seek, int origin);
|
|
extern int emu_FileTell(int handler);
|
|
extern void emu_FileClose(int handler);
|
|
|
|
extern unsigned int emu_FileSize(const char * filepath);
|
|
extern unsigned int emu_LoadFile(const char * filepath, void * buf, int size);
|
|
|
|
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
|
|
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
|
|
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);
|
|
extern void emu_DrawLine8(unsigned char * VBuf, int width, int height, int line);
|
|
extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line);
|
|
extern void emu_DrawVsync(void);
|
|
extern int emu_FrameSkip(void);
|
|
extern void * emu_LineBuffer(int line);
|
|
|
|
extern void emu_InitJoysticks(void);
|
|
extern int emu_SwapJoysticks(int statusOnly);
|
|
extern unsigned short emu_DebounceLocalKeys(void);
|
|
extern int emu_ReadKeys(void);
|
|
extern int emu_GetPad(void);
|
|
extern int emu_ReadAnalogJoyX(int min, int max);
|
|
extern int emu_ReadAnalogJoyY(int min, int max);
|
|
extern int emu_ReadI2CKeyboard(void);
|
|
extern void emu_KeyboardOnUp(int keymodifer, int key);
|
|
extern void emu_KeyboardOnDown(int keymodifer, int key);
|
|
|
|
extern void emu_sndPlaySound(int chan, int volume, int freq);
|
|
extern void emu_sndPlayBuzz(int size, int val);
|
|
extern void emu_sndInit();
|
|
extern void emu_resetus(void);
|
|
extern int emu_us(void);
|
|
|
|
extern int emu_setKeymap(int index);
|
|
|
|
extern void emu_FileTempInit(void);
|
|
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
|
|
extern void emu_FileTempWrite(int addr, unsigned char val);
|
|
extern void emu_printh(int val);
|
|
|
|
|
|
#endif
|