USING_ES_NAMESPACE USING_ISTORAGE_NAMESPACE #include <esi.h> #include "es_device.h" ES_NAMESPACE_START ESError esGetDeviceCert(void *outDeviceCert, u32 outDeviceCertSize) { ESError rv = ES_ERR_OK; if (outDeviceCert == NULL || outDeviceCertSize != ES_DEVICE_CERT_SIZE || sizeof(IOSCEccSignedCert) != ES_DEVICE_CERT_SIZE) { esLog(ES_DEBUG_ERROR, "Invalid arguments\n"); rv = ES_ERR_INVALID; goto end; } if ((rv = IOSC_GetDeviceCertificate((IOSCEccSignedCert *) outDeviceCert)) != IOSC_ERROR_OK) { esLog(ES_DEBUG_ERROR, "Failed to get device certificate, rv=%d\n", rv); rv = ESI_Translate_IOSC_Error(rv); goto end; } end: return rv; }
ESError esGetDeviceId(ESDeviceId *outDeviceId) { ESError rv = ES_ERR_OK; if (outDeviceId == NULL) { esLog(ES_DEBUG_ERROR, "Invalid arguments\n"); rv = ES_ERR_INVALID; goto end; } if ((rv = IOSC_GetData(IOSC_DEV_ID_HANDLE, outDeviceId)) != IOSC_ERROR_OK) { esLog(ES_DEBUG_ERROR, "Failed to get device ID, rv=%d\n", rv); rv = ESI_Translate_IOSC_Error(rv); goto end; } end: return rv; }
void esGame_init(const char *wmTitle, int screen_width, int screen_height) { blockNextMouse = 0; window_w = screen_width; window_h = screen_height; #ifdef ES_OPT_AUDIO SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); #else SDL_Init(SDL_INIT_VIDEO); #endif SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); //SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); window = SDL_CreateWindow(wmTitle, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, window_w, window_h, SDL_WINDOW_OPENGL); if (!window) { esLog(ES_ERRO, "Can't create window"); } #ifdef ES_OPT_AUDIO if (Mix_OpenAudio(22050, AUDIO_S16, 1, 4096)) { esLog(ES_ERRO, "Cannot open audio\n"); } #endif glContext = SDL_GL_CreateContext(window); SDL_GL_MakeCurrent(window, glContext); }
static void checkError(const char *file, int line) { GLenum err = glGetError(); if (err != GL_NO_ERROR) { esLog(ES_ERRO, "OpenGL Error (%s:%d): %d ", file, line, err); switch (err) { #define ERR_CASE_PRINT(cond) case cond : esLog(ES_ERRO, "%s", #cond); break ERR_CASE_PRINT(GL_INVALID_ENUM); ERR_CASE_PRINT(GL_INVALID_VALUE); ERR_CASE_PRINT(GL_INVALID_OPERATION); ERR_CASE_PRINT(GL_STACK_OVERFLOW); ERR_CASE_PRINT(GL_STACK_UNDERFLOW); ERR_CASE_PRINT(GL_OUT_OF_MEMORY); default : break; } } }
void *esFileAlloc(const char *fileName) { FILE *fd = fopen(fileName, "r"); if (fd == NULL) return NULL; struct stat st; stat(fileName, &st); char *buf = malloc(st.st_size + 1); fread(buf, st.st_size, 1, fd); fclose(fd); buf[st.st_size] = '\0'; esLog(ES_INFO, "Loaded file %s (%d b)", fileName, (int) st.st_size); return buf; }