void Joystick_Init(void) { #ifndef PSP int i, nr_joys, nr_axes, nr_btns, nr_hats; #endif joy[0] = 1; // active only one joy[1] = 0; JoyKeyState = 0; JoyKeyState0 = 0; JoyKeyState1 = 0; JoyState0[0] = 0xff; JoyState0[1] = 0xff; JoyState1[0] = 0xff; JoyState1[1] = 0xff; JoyPortData[0] = 0; JoyPortData[1] = 0; #if defined(ANDROID) || TARGET_OS_IPHONE Joystick_Vbtn_Update(WinUI_get_vkscale()); #endif #ifndef PSP sdl_joy = 0; SDL_InitSubSystem(SDL_INIT_JOYSTICK); nr_joys = SDL_NumJoysticks(); p6logd("joy num %d\n", nr_joys); for (i = 0; i < nr_joys; i++) { sdl_joy = SDL_JoystickOpen(i); if (sdl_joy) { nr_btns = SDL_JoystickNumButtons(sdl_joy); nr_axes = SDL_JoystickNumAxes(sdl_joy); nr_hats = SDL_JoystickNumHats(sdl_joy); #if SDL_VERSION_ATLEAST(2, 0, 0) p6logd("Name: %s\n", SDL_JoystickNameForIndex(i)); #endif p6logd("# of Axes: %d\n", nr_axes); p6logd("# of Btns: %d\n", nr_btns); p6logd("# of Hats: %d\n", nr_hats); // skip accelerometer and keyboard if (nr_btns < 2 || (nr_axes < 2 && nr_hats == 0)) { Joystick_Cleanup(); sdl_joy = 0; } else { break; } } else { p6logd("can't open joy %d\n", i); } } #endif }
int set_modulepath(char *path, size_t len) { struct stat sb; char *homepath; #ifdef ANDROID const char *extpath; char *p, ep_buf[MAX_PATH], p6dir_buf[MAX_PATH]; FILE *fp; p6dir_buf[0] = '\0'; extpath = SDL_AndroidGetExternalStoragePath(); p6logd("extpath:%s", extpath); // get the Android external path (.ex /storage/emulated/0) strcpy(p6dir_buf, extpath); p = strstr(p6dir_buf, "/Android/data/com.fc2.blog45.hissorii/files"); if (p != NULL) { *p = '\0'; p6logd("extpath2:%s", p6dir_buf); strcat(p6dir_buf, "/px68k"); p6logd("p6dir_buf:%s", p6dir_buf); // if there is the px68k directory ... if (stat(p6dir_buf, &sb) == 0 && S_ISDIR(sb.st_mode)) { goto set_dir; } } if (extpath != NULL) { // read Android/data/com.fc2.blog45.hissorii/files/dir.txt sprintf(ep_buf, "%s/dir.txt", extpath); if ((fp = fopen(ep_buf, "r")) != NULL) { fgets(p6dir_buf, MAX_PATH - 1, fp); p6logd("p6dir:%s", p6dir_buf); fclose(fp); } } // if everything failed, try /sdcard/px68k directory if (p6dir_buf[0] == '\0') { strcpy(p6dir_buf, "/sdcard/px68k"); } set_dir: strcpy(path, p6dir_buf); p6logd("path:%s", path); sprintf(winx68k_ini, "%s/config", p6dir_buf); p6logd("config:%s", winx68k_ini); return 0; #endif #if TARGET_OS_IPHONE && TARGET_IPHONE_SIMULATOR == 0 puts("Iphone..."); sprintf(path, "/var/mobile/px68k"); sprintf(winx68k_ini, "/var/mobile/px68k/config"); return 0; #endif homepath = getenv("HOME"); if (homepath == 0) homepath = "."; snprintf(path, len, "%s/%s", homepath, ".keropi"); if (stat(path, &sb) < 0) { #ifdef WIN32 if (mkdir(path) < 0) { #else if (mkdir(path, 0700) < 0) { #endif perror(path); return 1; } } else { if ((sb.st_mode & S_IFDIR) == 0) { fprintf(stderr, "%s isn't directory.\n", path); return 1; } } snprintf(winx68k_ini, sizeof(winx68k_ini), "%s/%s", path, "config"); if (stat(winx68k_ini, &sb) >= 0) { if (sb.st_mode & S_IFDIR) { fprintf(stderr, "%s is directory.\n", winx68k_ini); return 1; } } return 0; } void LoadConfig(void) { int i, j; char buf[CFGLEN]; FILEH fp; winx = GetPrivateProfileInt(ini_title, "WinPosX", 0, winx68k_ini); winy = GetPrivateProfileInt(ini_title, "WinPosY", 0, winx68k_ini); #ifdef PSP Config.FrameRate = (BYTE)GetPrivateProfileInt(ini_title, "FrameRate", 5, winx68k_ini); #else Config.FrameRate = (BYTE)GetPrivateProfileInt(ini_title, "FrameRate", 7, winx68k_ini); #endif if (!Config.FrameRate) Config.FrameRate = 7; GetPrivateProfileString(ini_title, "StartDir", "", buf, MAX_PATH, winx68k_ini); if (buf[0] != 0) strncpy(filepath, buf, sizeof(filepath)); else filepath[0] = 0; Config.OPM_VOL = GetPrivateProfileInt(ini_title, "OPM_Volume", 12, winx68k_ini); Config.PCM_VOL = GetPrivateProfileInt(ini_title, "PCM_Volume", 15, winx68k_ini); Config.MCR_VOL = GetPrivateProfileInt(ini_title, "MCR_Volume", 13, winx68k_ini); #ifdef PSP Config.SampleRate = GetPrivateProfileInt(ini_title, "SampleRate", 11025, winx68k_ini); #else Config.SampleRate = GetPrivateProfileInt(ini_title, "SampleRate", 22050, winx68k_ini); #endif Config.BufferSize = GetPrivateProfileInt(ini_title, "BufferSize", 50, winx68k_ini); Config.MouseSpeed = GetPrivateProfileInt(ini_title, "MouseSpeed", 10, winx68k_ini); GetPrivateProfileString(ini_title, "FDDStatWin", "1", buf, CFGLEN, winx68k_ini); Config.WindowFDDStat = solveBOOL(buf); GetPrivateProfileString(ini_title, "FDDStatFullScr", "1", buf, CFGLEN, winx68k_ini); Config.FullScrFDDStat = solveBOOL(buf); GetPrivateProfileString(ini_title, "DSAlert", "1", buf, CFGLEN, winx68k_ini); Config.DSAlert = solveBOOL(buf); GetPrivateProfileString(ini_title, "SoundLPF", "1", buf, CFGLEN, winx68k_ini); Config.Sound_LPF = solveBOOL(buf); GetPrivateProfileString(ini_title, "UseRomeo", "0", buf, CFGLEN, winx68k_ini); Config.SoundROMEO = solveBOOL(buf); GetPrivateProfileString(ini_title, "MIDI_SW", "1", buf, CFGLEN, winx68k_ini); Config.MIDI_SW = solveBOOL(buf); GetPrivateProfileString(ini_title, "MIDI_Reset", "0", buf, CFGLEN, winx68k_ini); Config.MIDI_Reset = solveBOOL(buf); Config.MIDI_Type = GetPrivateProfileInt(ini_title, "MIDI_Type", 1, winx68k_ini); GetPrivateProfileString(ini_title, "JoySwap", "0", buf, CFGLEN, winx68k_ini); Config.JoySwap = solveBOOL(buf); GetPrivateProfileString(ini_title, "JoyKey", "0", buf, CFGLEN, winx68k_ini); Config.JoyKey = solveBOOL(buf); GetPrivateProfileString(ini_title, "JoyKeyReverse", "0", buf, CFGLEN, winx68k_ini); Config.JoyKeyReverse = solveBOOL(buf); GetPrivateProfileString(ini_title, "JoyKeyJoy2", "0", buf, CFGLEN, winx68k_ini); Config.JoyKeyJoy2 = solveBOOL(buf); GetPrivateProfileString(ini_title, "SRAMBootWarning", "1", buf, CFGLEN, winx68k_ini); Config.SRAMWarning = solveBOOL(buf); GetPrivateProfileString(ini_title, "WinDrvLFN", "1", buf, CFGLEN, winx68k_ini); Config.LongFileName = solveBOOL(buf); GetPrivateProfileString(ini_title, "WinDrvFDD", "1", buf, CFGLEN, winx68k_ini); Config.WinDrvFD = solveBOOL(buf); Config.WinStrech = GetPrivateProfileInt(ini_title, "WinStretch", 1, winx68k_ini); GetPrivateProfileString(ini_title, "DSMixing", "0", buf, CFGLEN, winx68k_ini); Config.DSMixing = solveBOOL(buf); Config.XVIMode = (BYTE)GetPrivateProfileInt(ini_title, "XVIMode", 0, winx68k_ini); GetPrivateProfileString(ini_title, "CDROM_ASPI", "1", buf, CFGLEN, winx68k_ini); Config.CDROM_ASPI = solveBOOL(buf); Config.CDROM_SCSIID = (BYTE)GetPrivateProfileInt(ini_title, "CDROM_SCSIID", 6, winx68k_ini); Config.CDROM_ASPI_Drive = (BYTE)GetPrivateProfileInt(ini_title, "CDROM_ASPIDrv", 0, winx68k_ini); Config.CDROM_IOCTRL_Drive = (BYTE)GetPrivateProfileInt(ini_title, "CDROM_CTRLDrv", 16, winx68k_ini); GetPrivateProfileString(ini_title, "CDROM_Enable", "1", buf, CFGLEN, winx68k_ini); Config.CDROM_Enable = solveBOOL(buf); GetPrivateProfileString(ini_title, "SSTP_Enable", "0", buf, CFGLEN, winx68k_ini); Config.SSTP_Enable = solveBOOL(buf); Config.SSTP_Port = GetPrivateProfileInt(ini_title, "SSTP_Port", 11000, winx68k_ini); GetPrivateProfileString(ini_title, "ToneMapping", "0", buf, CFGLEN, winx68k_ini); Config.ToneMap = solveBOOL(buf); GetPrivateProfileString(ini_title, "ToneMapFile", "", buf, MAX_PATH, winx68k_ini); if (buf[0] != 0) strcpy(Config.ToneMapFile, buf); else Config.ToneMapFile[0] = 0; Config.MIDIDelay = GetPrivateProfileInt(ini_title, "MIDIDelay", Config.BufferSize*5, winx68k_ini); Config.MIDIAutoDelay = GetPrivateProfileInt(ini_title, "MIDIAutoDelay", 1, winx68k_ini); Config.VkeyScale = GetPrivateProfileInt(ini_title, "VkeyScale", 4, winx68k_ini); Config.VbtnSwap = GetPrivateProfileInt(ini_title, "VbtnSwap", 0, winx68k_ini); Config.JoyOrMouse = GetPrivateProfileInt(ini_title, "JoyOrMouse", 0, winx68k_ini); Config.HwJoyAxis[0] = GetPrivateProfileInt(ini_title, "HwJoyAxis0", 0, winx68k_ini); Config.HwJoyAxis[1] = GetPrivateProfileInt(ini_title, "HwJoyAxis1", 1, winx68k_ini); Config.HwJoyHat = GetPrivateProfileInt(ini_title, "HwJoyHat", 0, winx68k_ini); for (i = 0; i < 8; i++) { sprintf(buf, "HwJoyBtn%d", i); Config.HwJoyBtn[i] = GetPrivateProfileInt(ini_title, buf, i, winx68k_ini); } Config.NoWaitMode = GetPrivateProfileInt(ini_title, "NoWaitMode", 0, winx68k_ini); for (i=0; i<2; i++) { for (j=0; j<8; j++) { sprintf(buf, "Joy%dButton%d", i+1, j+1); Config.JOY_BTN[i][j] = GetPrivateProfileInt(ini_title, buf, j, winx68k_ini); } } for (i = 0; i < 2; i++) { sprintf(buf, "FDD%d", i); GetPrivateProfileString(ini_title, buf, "", Config.FDDImage[i], MAX_PATH, winx68k_ini); } for (i=0; i<16; i++) { sprintf(buf, "HDD%d", i); GetPrivateProfileString(ini_title, buf, "", Config.HDImage[i], MAX_PATH, winx68k_ini); } #if 0 fp = File_OpenCurDir(KEYCONFFILE); if (fp) { File_Read(fp, KeyTable, 512); File_Close(fp); } #endif }