This commit is contained in:
IoIxD 2026-05-17 21:06:39 -07:00
commit 6740fb6c86
6 changed files with 456 additions and 334 deletions

View file

@ -4,19 +4,27 @@ project(gquake)
file(GLOB SOURCES src/*.c) file(GLOB SOURCES src/*.c)
if(PS2) if(PS2)
set(GL ps2gl) set(GL ps2gl)
set(CMAKE_EXECUTABLE_SUFFIX .elf) set(CMAKE_EXECUTABLE_SUFFIX .elf)
elseif(VITA) elseif(VITA)
set(GL vitaGL) set(GL vitaGL)
elseif(PLATFORM_DREAMCAST)
include(kallistios)
add_compile_definitions(USE_KALLISTIOS)
add_compile_definitions(NO_FCNTL)
set(GL GL)
else() else()
find_package(OpenGL REQUIRED) find_package(OpenGL REQUIRED)
set(GL OpenGL::GL) set(GL OpenGL::GL)
endif() endif()
set(MILSKO "/usr/local") set(MILSKO "/usr/local")
option(TRY_SDL2 "Try SDL2" ON) if(NOT PLATFORM_DREAMCAST)
option(TRY_SDL2 "Try SDL2" ON)
option(TRY_MILSKO "Try SDL2" OFF)
endif()
add_executable(gquake ${SOURCES}) add_executable(gquake ${SOURCES})
target_include_directories(gquake PRIVATE include) target_include_directories(gquake PRIVATE include)
@ -24,49 +32,55 @@ target_compile_definitions(gquake PRIVATE GL_EXT_SHARED GLQUAKE)
target_link_libraries(gquake PRIVATE ${GL}) target_link_libraries(gquake PRIVATE ${GL})
if(PSP) if(PSP)
target_link_libraries(gquake PRIVATE SDL2main pspsdk pspnet cglue) target_link_libraries(gquake PRIVATE SDL2main pspsdk pspnet cglue)
create_pbp_file(TARGET gquake create_pbp_file(TARGET gquake
TITLE "GQuake") TITLE "GQuake")
elseif(PS2) elseif(PS2)
target_link_libraries(gquake PRIVATE SDL2main stdc++ ps2stuff dma -ldebug) target_link_libraries(gquake PRIVATE SDL2main stdc++ ps2stuff dma -ldebug)
add_custom_command(TARGET gquake POST_BUILD add_custom_command(TARGET gquake POST_BUILD
COMMAND rm -rf gquake COMMAND rm -rf gquake
COMMAND mkdir -p gquake COMMAND mkdir -p gquake
COMMAND cp gquake.elf gquake/GQUAKE.ELF COMMAND cp gquake.elf gquake/GQUAKE.ELF
COMMAND cp -rf ${CMAKE_SOURCE_DIR}/id1 gquake/ COMMAND cp -rf ${CMAKE_SOURCE_DIR}/id1 gquake/
COMMAND echo "BOOT2 = cdrom0:\\\\GQUAKE.ELF" > gquake/SYSTEM.CNF COMMAND echo "BOOT2 = cdrom0:\\\\GQUAKE.ELF" > gquake/SYSTEM.CNF
COMMAND genisoimage -udf -o gquake.iso gquake COMMAND genisoimage -udf -o gquake.iso gquake
) )
elseif(VITA) elseif(VITA)
include(${VITASDK}/share/vita.cmake) include(${VITASDK}/share/vita.cmake)
target_link_libraries(gquake PRIVATE SDL2main stdc++ vitashark SceShaccCg_stub SceKernelDmacMgr_stub mathneon) target_link_libraries(gquake PRIVATE SDL2main stdc++ vitashark SceShaccCg_stub SceKernelDmacMgr_stub mathneon)
vita_create_self(gquake.self gquake) vita_create_self(gquake.self gquake)
vita_create_vpk(gquake.vpk PYRT10000 gquake.self vita_create_vpk(gquake.vpk PYRT10000 gquake.self
FILE ${CMAKE_SOURCE_DIR}/id1 sce_sys/id1 FILE ${CMAKE_SOURCE_DIR}/id1 sce_sys/id1
) )
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
target_link_libraries(gquake PRIVATE wsock32) target_link_libraries(gquake PRIVATE wsock32)
else() else()
target_link_libraries(gquake PRIVATE m) target_link_libraries(gquake PRIVATE m)
endif() endif()
set(FOUND FALSE) set(FOUND FALSE)
if(NOT FOUND AND TRY_SDL2) if(NOT FOUND AND TRY_SDL2)
find_package(SDL2) find_package(SDL2)
target_compile_definitions(gquake PRIVATE USE_SDL2) target_compile_definitions(gquake PRIVATE USE_SDL2)
target_link_libraries(gquake PRIVATE SDL2::SDL2) target_link_libraries(gquake PRIVATE SDL2::SDL2)
set(FOUND ON) set(FOUND ON)
endif() endif()
if(NOT FOUND) if(NOT FOUND AND TRY_MILSKO)
target_compile_definitions(gquake PRIVATE USE_MILSKO USE_MINIAUDIO) target_compile_definitions(gquake PRIVATE USE_MILSKO USE_MINIAUDIO)
target_include_directories(gquake PRIVATE ${MILSKO}/include) target_include_directories(gquake PRIVATE ${MILSKO}/include)
target_link_directories(gquake PRIVATE ${MILSKO}/src ${MILSKO}/lib) target_link_directories(gquake PRIVATE ${MILSKO}/src ${MILSKO}/lib)
target_link_libraries(gquake PRIVATE Mw) target_link_libraries(gquake PRIVATE Mw)
endif()
if(PLATFORM_DREAMCAST)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/romdisk/)
file(COPY ${CMAKE_BINARY_DIR}/../id1 DESTINATION ${CMAKE_BINARY_DIR}/romdisk/)
kos_add_romdisk(${PROJECT_NAME} ${CMAKE_BINARY_DIR}/romdisk/)
endif() endif()

3
compile_flags.txt Normal file
View file

@ -0,0 +1,3 @@
-DUSE_KALLISTIOS
-I/opt/toolchains/dc/kos-ports/include/
-I/opt/toolchains/dc/kos/include/

View file

@ -1774,8 +1774,11 @@ void COM_InitFilesystem (void)
// //
// start up with GAMENAME by default (id1) // start up with GAMENAME by default (id1)
// //
COM_AddGameDirectory (va("%s/"GAMENAME, basedir) ); #ifdef USE_KALLISTIOS
COM_AddGameDirectory ("/rd/");
#else
COM_AddGameDirectory (va("%s/"GAMENAME, basedir) );
#endif
if (COM_CheckParm ("-rogue")) if (COM_CheckParm ("-rogue"))
COM_AddGameDirectory (va("%s/rogue", basedir) ); COM_AddGameDirectory (va("%s/rogue", basedir) );
if (COM_CheckParm ("-hipnotic")) if (COM_CheckParm ("-hipnotic"))
@ -1823,5 +1826,3 @@ void COM_InitFilesystem (void)
if (COM_CheckParm ("-proghack")) if (COM_CheckParm ("-proghack"))
proghack = qtrue; proghack = qtrue;
} }

View file

@ -80,7 +80,9 @@ int UDP_Init (void)
// determine my name & address // determine my name & address
#ifdef _EE #ifdef _EE
strcpy(buff, "PS2"); strcpy(buff, "PS2");
#elif USE_KALLISTIOS
strcpy(buff, "DC");
#else #else
gethostname(buff, MAXHOSTNAMELEN); gethostname(buff, MAXHOSTNAMELEN);
#endif #endif
@ -157,7 +159,7 @@ int UDP_OpenSocket (int port)
if (ioctl (newsocket, FIONBIO, (u_long*)&_qtrue) == -1) if (ioctl (newsocket, FIONBIO, (u_long*)&_qtrue) == -1)
#elif defined(_PSP) || defined(__vita__) #elif defined(_PSP) || defined(__vita__)
if(setsockopt(newsocket, SOL_SOCKET, SO_NONBLOCK, (char*)_qtrue, sizeof(_qtrue)) == -1) if(setsockopt(newsocket, SOL_SOCKET, SO_NONBLOCK, (char*)_qtrue, sizeof(_qtrue)) == -1)
#elif defined(_EE) #elif defined(_EE) || defined(USE_KALLISTIOS)
#else #else
if (ioctl (newsocket, FIONBIO, (char *)&_qtrue) == -1) if (ioctl (newsocket, FIONBIO, (char *)&_qtrue) == -1)
#endif #endif
@ -259,7 +261,7 @@ int UDP_CheckNewConnections (void)
if (net_acceptsocket == -1) if (net_acceptsocket == -1)
return -1; return -1;
#if defined(_PSP) || defined(_EE) || defined(__vita__) #if defined(_PSP) || defined(_EE) || defined(__vita__) || defined(USE_KALLISTIOS)
#else #else
if (ioctl (net_acceptsocket, FIONREAD, &available) == -1) if (ioctl (net_acceptsocket, FIONREAD, &available) == -1)
Sys_Error ("UDP: ioctlsocket (FIONREAD) failed\n"); Sys_Error ("UDP: ioctlsocket (FIONREAD) failed\n");
@ -379,6 +381,10 @@ int UDP_GetNameFromAddr (struct qsockaddr *addr, char *name)
{ {
struct hostent *hostentry; struct hostent *hostentry;
#ifdef USE_KALLISTIOS
printf("UDP_GetNameFromAddr STUB");
#else
hostentry = gethostbyaddr ((char *)&((struct sockaddr_in *)addr)->sin_addr, sizeof(struct in_addr), AF_INET); hostentry = gethostbyaddr ((char *)&((struct sockaddr_in *)addr)->sin_addr, sizeof(struct in_addr), AF_INET);
if (hostentry) if (hostentry)
{ {
@ -387,6 +393,7 @@ int UDP_GetNameFromAddr (struct qsockaddr *addr, char *name)
} }
Q_strcpy (name, UDP_AddrToString (addr)); Q_strcpy (name, UDP_AddrToString (addr));
#endif
return 0; return 0;
} }

View file

@ -4,236 +4,295 @@
static MwWidget win = NULL; static MwWidget win = NULL;
static MwWidget opengl; static MwWidget opengl;
static int MilskoToQuakeKey(int key){ static int MilskoToQuakeKey(int key) {
if(key == MwKEY_ENTER) key = K_ENTER; if (key == MwKEY_ENTER)
if(key == MwKEY_ESCAPE) key = K_ESCAPE; key = K_ENTER;
if(key == MwKEY_BACKSPACE) key = K_BACKSPACE; if (key == MwKEY_ESCAPE)
if(key == MwKEY_LEFT) key = K_LEFTARROW; key = K_ESCAPE;
if(key == MwKEY_RIGHT) key = K_RIGHTARROW; if (key == MwKEY_BACKSPACE)
if(key == MwKEY_UP) key = K_UPARROW; key = K_BACKSPACE;
if(key == MwKEY_DOWN) key = K_DOWNARROW; if (key == MwKEY_LEFT)
if(key == MwKEY_LEFTSHIFT) key = K_SHIFT; key = K_LEFTARROW;
if(key == MwKEY_RIGHTSHIFT) key = K_SHIFT; if (key == MwKEY_RIGHT)
if(key == MwKEY_ALT) key = K_ALT; key = K_RIGHTARROW;
if(key == MwKEY_CONTROL) key = K_CTRL; if (key == MwKEY_UP)
key = K_UPARROW;
if (key == MwKEY_DOWN)
key = K_DOWNARROW;
if (key == MwKEY_LEFTSHIFT)
key = K_SHIFT;
if (key == MwKEY_RIGHTSHIFT)
key = K_SHIFT;
if (key == MwKEY_ALT)
key = K_ALT;
if (key == MwKEY_CONTROL)
key = K_CTRL;
if('A' <= key && key <= 'Z') return tolower(key); if ('A' <= key && key <= 'Z')
return tolower(key);
return key; return key;
} }
static int MilskoToQuakeMouse(int btn){ static int MilskoToQuakeMouse(int btn) {
int b = 0; int b = 0;
if(btn == MwMOUSE_LEFT) b = 0; if (btn == MwMOUSE_LEFT)
if(btn == MwMOUSE_MIDDLE) b = 2; b = 0;
if(btn == MwMOUSE_RIGHT) b = 1; if (btn == MwMOUSE_MIDDLE)
if(btn == MwMOUSE_WHEELUP) return K_MWHEELUP; b = 2;
if(btn == MwMOUSE_WHEELDOWN) return K_MWHEELDOWN; if (btn == MwMOUSE_RIGHT)
b = 1;
if (btn == MwMOUSE_WHEELUP)
return K_MWHEELUP;
if (btn == MwMOUSE_WHEELDOWN)
return K_MWHEELDOWN;
return K_MOUSE1 + b; return K_MOUSE1 + b;
} }
static void MWAPI mousemove(MwWidget handle, void* user, void* call) { static void MWAPI mousemove(MwWidget handle, void *user, void *call) {
MwPoint* p = call; MwPoint *p = call;
int vecX = p->x; int vecX = p->x;
int vecY = p->y; int vecY = p->y;
if (mouse_active) { if (mouse_active) {
mx += vecX * 2; mx += vecX * 2;
my += vecY * 2; my += vecY * 2;
} }
} }
static void MWAPI key(MwWidget handle, void* user, void* call){ static void MWAPI key(MwWidget handle, void *user, void *call) {
int k = *(int*)call; int k = *(int *)call;
k = MilskoToQuakeKey(k); k = MilskoToQuakeKey(k);
if(k == -0xdead) return; if (k == -0xdead)
if(k & MwKEY_FLAG) return; return;
Key_Event(k, 1); if (k & MwKEY_FLAG)
return;
Key_Event(k, 1);
} }
static void MWAPI keyrelease(MwWidget handle, void* user, void* call){ static void MWAPI keyrelease(MwWidget handle, void *user, void *call) {
int k = *(int*)call; int k = *(int *)call;
k = MilskoToQuakeKey(k); k = MilskoToQuakeKey(k);
if(k == -0xdead) return; if (k == -0xdead)
if(k & MwKEY_FLAG) return; return;
Key_Event(k, 0); if (k & MwKEY_FLAG)
return;
Key_Event(k, 0);
} }
static void MWAPI mousedown(MwWidget handle, void* user, void* call){ static void MWAPI mousedown(MwWidget handle, void *user, void *call) {
MwMouse* m = call; MwMouse *m = call;
Key_Event(MilskoToQuakeMouse(m->button), 1); Key_Event(MilskoToQuakeMouse(m->button), 1);
} }
static void MWAPI mouseup(MwWidget handle, void* user, void* call){ static void MWAPI mouseup(MwWidget handle, void *user, void *call) {
MwMouse* m = call; MwMouse *m = call;
Key_Event(MilskoToQuakeMouse(m->button), 0); Key_Event(MilskoToQuakeMouse(m->button), 0);
} }
static void MWAPI focusin(MwWidget handle, void* user, void* call){ static void MWAPI focusin(MwWidget handle, void *user, void *call) {
if(mouse_active){ if (mouse_active) {
MwGrabPointer(opengl, 0); MwGrabPointer(opengl, 0);
MwGrabPointer(opengl, 1); MwGrabPointer(opengl, 1);
} }
} }
static void MWAPI focusout(MwWidget handle, void* user, void* call){ static void MWAPI focusout(MwWidget handle, void *user, void *call) {
MwGrabPointer(opengl, 0); MwGrabPointer(opengl, 0);
} }
void Port_Init(int width, int height) {
MwSizeHints sh;
MwWidget label;
void Port_Init(int width, int height){ MwLibraryInit();
MwSizeHints sh;
MwWidget label;
MwLibraryInit(); win = MwVaCreateWidget(MwWindowClass, "Quake", NULL, MwDEFAULT, MwDEFAULT,
width, height + 24, MwNtitle, "Quake", NULL);
label = MwVaCreateWidget(MwLabelClass, "Label", win, 0, height, width, 24,
MwNtext, "Milsko Quake!", NULL);
opengl = MwCreateWidget(MwOpenGLClass, "OpenGL", win, 0, 0, width, height);
win = MwVaCreateWidget(MwWindowClass, "Quake", NULL, MwDEFAULT, MwDEFAULT, width, height + 24, sh.min_width = sh.max_width = width;
MwNtitle, "Quake", sh.min_height = sh.max_height = height + 24;
NULL); MwVaApply(win, MwNsizeHints, &sh, NULL);
label = MwVaCreateWidget(MwLabelClass, "Label", win, 0, height, width, 24,
MwNtext, "Milsko Quake!",
NULL);
opengl = MwCreateWidget(MwOpenGLClass, "OpenGL", win, 0, 0, width, height);
sh.min_width = sh.max_width = width; MwOpenGLMakeCurrent(opengl);
sh.min_height = sh.max_height = height + 24;
MwVaApply(win,
MwNsizeHints, &sh,
NULL);
MwOpenGLMakeCurrent(opengl); MwAddUserHandler(opengl, MwNmouseMoveHandler, mousemove, NULL);
MwAddUserHandler(opengl, MwNkeyHandler, key, NULL);
MwAddUserHandler(opengl, MwNkeyReleaseHandler, keyrelease, NULL);
MwAddUserHandler(opengl, MwNmouseDownHandler, mousedown, NULL);
MwAddUserHandler(opengl, MwNmouseUpHandler, mouseup, NULL);
MwAddUserHandler(opengl, MwNfocusInHandler, focusin, NULL);
MwAddUserHandler(opengl, MwNfocusOutHandler, focusout, NULL);
MwAddUserHandler(opengl, MwNmouseMoveHandler, mousemove, NULL); if (fullscreen) {
MwAddUserHandler(opengl, MwNkeyHandler, key, NULL); /* todo */
MwAddUserHandler(opengl, MwNkeyReleaseHandler, keyrelease, NULL); }
MwAddUserHandler(opengl, MwNmouseDownHandler, mousedown, NULL);
MwAddUserHandler(opengl, MwNmouseUpHandler, mouseup, NULL);
MwAddUserHandler(opengl, MwNfocusInHandler, focusin, NULL);
MwAddUserHandler(opengl, MwNfocusOutHandler, focusout, NULL);
if(fullscreen){
/* todo */
}
} }
void Port_Step(void){ void Port_Step(void) {
if(!win) return; if (!win)
return;
if(MwPending(win)) MwStep(win); if (MwPending(win))
MwStep(win);
} }
void Port_GrabPointer(int toggle){ void Port_GrabPointer(int toggle) {
if(!win) return; if (!win)
return;
if(toggle){ if (toggle) {
MwHideCursor(opengl); MwHideCursor(opengl);
MwGrabPointer(opengl, 1); MwGrabPointer(opengl, 1);
}else{ } else {
MwGrabPointer(opengl, 0); MwGrabPointer(opengl, 0);
} }
} }
void Port_Shutdown(void){ void Port_Shutdown(void) {
if (win) { if (win) {
MwDestroyWidget(win); MwDestroyWidget(win);
} }
win = NULL; win = NULL;
} }
void Port_SwapBuffer(void){ void Port_SwapBuffer(void) { MwOpenGLSwapBuffer(opengl); }
MwOpenGLSwapBuffer(opengl);
}
#endif #endif
#ifdef USE_SDL2 #ifdef USE_SDL2
static SDL_Window* win; static SDL_Window *win;
static SDL_GLContext context; static SDL_GLContext context;
void Port_Init(int width, int height){ void Port_Init(int width, int height) {
SDL_Init(SDL_INIT_VIDEO); SDL_Init(SDL_INIT_VIDEO);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
win = SDL_CreateWindow("Quake", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL); win =
context = SDL_GL_CreateContext(win); SDL_CreateWindow("Quake", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
width, height, SDL_WINDOW_OPENGL);
context = SDL_GL_CreateContext(win);
} }
void Port_Step(void){ void Port_Step(void) {
if(!win) return; if (!win)
return;
SDL_Event ev; SDL_Event ev;
while(SDL_PollEvent(&ev)){ while (SDL_PollEvent(&ev)) {
if(ev.type == SDL_MOUSEMOTION){ if (ev.type == SDL_MOUSEMOTION) {
if (mouse_active) { if (mouse_active) {
mx += ev.motion.xrel * 2; mx += ev.motion.xrel * 2;
my += ev.motion.yrel * 2; my += ev.motion.yrel * 2;
} }
}else if(ev.type == SDL_MOUSEBUTTONDOWN || ev.type == SDL_MOUSEBUTTONUP){ } else if (ev.type == SDL_MOUSEBUTTONDOWN || ev.type == SDL_MOUSEBUTTONUP) {
int b = 0; int b = 0;
int btn = ev.button.button; int btn = ev.button.button;
if(btn == SDL_BUTTON_LEFT) b = 0; if (btn == SDL_BUTTON_LEFT)
if(btn == SDL_BUTTON_MIDDLE) b = 2; b = 0;
if(btn == SDL_BUTTON_RIGHT) b = 1; if (btn == SDL_BUTTON_MIDDLE)
b = 2;
if (btn == SDL_BUTTON_RIGHT)
b = 1;
Key_Event(K_MOUSE1 + b, ev.type == SDL_MOUSEBUTTONDOWN); Key_Event(K_MOUSE1 + b, ev.type == SDL_MOUSEBUTTONDOWN);
}else if(ev.type == SDL_MOUSEWHEEL){ } else if (ev.type == SDL_MOUSEWHEEL) {
int k; int k;
if(ev.wheel.y > 0){ if (ev.wheel.y > 0) {
k = K_MWHEELUP; k = K_MWHEELUP;
}else if(ev.wheel.y < 0){ } else if (ev.wheel.y < 0) {
k = K_MWHEELDOWN; k = K_MWHEELDOWN;
} }
Key_Event(k, 1); Key_Event(k, 1);
Key_Event(k, 0); Key_Event(k, 0);
}else if(ev.type == SDL_KEYDOWN || ev.type == SDL_KEYUP){ } else if (ev.type == SDL_KEYDOWN || ev.type == SDL_KEYUP) {
int key = ev.key.keysym.sym; int key = ev.key.keysym.sym;
if(key == SDLK_RETURN) key = K_ENTER; if (key == SDLK_RETURN)
if(key == SDLK_ESCAPE) key = K_ESCAPE; key = K_ENTER;
if(key == SDLK_BACKSPACE) key = K_BACKSPACE; if (key == SDLK_ESCAPE)
if(key == SDLK_LEFT) key = K_LEFTARROW; key = K_ESCAPE;
if(key == SDLK_RIGHT) key = K_RIGHTARROW; if (key == SDLK_BACKSPACE)
if(key == SDLK_UP) key = K_UPARROW; key = K_BACKSPACE;
if(key == SDLK_DOWN) key = K_DOWNARROW; if (key == SDLK_LEFT)
if(key == SDLK_LSHIFT) key = K_SHIFT; key = K_LEFTARROW;
if(key == SDLK_RSHIFT) key = K_SHIFT; if (key == SDLK_RIGHT)
if(key == SDLK_LALT) key = K_ALT; key = K_RIGHTARROW;
if(key == SDLK_RALT) key = K_ALT; if (key == SDLK_UP)
if(key == SDLK_LCTRL) key = K_CTRL; key = K_UPARROW;
if(key == SDLK_RCTRL) key = K_CTRL; if (key == SDLK_DOWN)
if(key == SDLK_LGUI) key = K_SUPER; key = K_DOWNARROW;
if(key == SDLK_RGUI) key = K_SUPER; if (key == SDLK_LSHIFT)
if(SDLK_a <= key && key <= SDLK_z) key = key - SDLK_a + 'a'; key = K_SHIFT;
if(SDLK_0 <= key && key <= SDLK_9) key = key - SDLK_0 + '0'; if (key == SDLK_RSHIFT)
key = K_SHIFT;
if (key == SDLK_LALT)
key = K_ALT;
if (key == SDLK_RALT)
key = K_ALT;
if (key == SDLK_LCTRL)
key = K_CTRL;
if (key == SDLK_RCTRL)
key = K_CTRL;
if (key == SDLK_LGUI)
key = K_SUPER;
if (key == SDLK_RGUI)
key = K_SUPER;
if (SDLK_a <= key && key <= SDLK_z)
key = key - SDLK_a + 'a';
if (SDLK_0 <= key && key <= SDLK_9)
key = key - SDLK_0 + '0';
Key_Event(key, ev.type == SDL_KEYDOWN); Key_Event(key, ev.type == SDL_KEYDOWN);
} }
} }
} }
void Port_GrabPointer(int toggle){ void Port_GrabPointer(int toggle) {
if(toggle){ if (toggle) {
SDL_ShowCursor(0); SDL_ShowCursor(0);
} }
SDL_SetWindowMouseGrab(win, toggle); SDL_SetWindowMouseGrab(win, toggle);
SDL_SetWindowKeyboardGrab(win, toggle); SDL_SetWindowKeyboardGrab(win, toggle);
if(toggle){ if (toggle) {
SDL_SetRelativeMouseMode(SDL_TRUE); SDL_SetRelativeMouseMode(SDL_TRUE);
SDL_SetHint(SDL_HINT_MOUSE_RELATIVE_MODE_WARP, "0"); SDL_SetHint(SDL_HINT_MOUSE_RELATIVE_MODE_WARP, "0");
} }
} }
void Port_Shutdown(void) { SDL_Quit(); }
void Port_SwapBuffer(void) { SDL_GL_SwapWindow(win); }
#endif
#ifdef USE_KALLISTIOS
#include <kos.h>
KOS_INIT_FLAGS(INIT_DEFAULT);
#include <GL/glkos.h>
#include <stdio.h>
void Port_Init(int width, int height) {
glKosInit();
}
void Port_Step(void) {
}
void Port_GrabPointer(int toggle) {}
void Port_Shutdown(void) {}
void Port_SwapBuffer(void) {
glKosSwapBuffers();
}
void Port_Shutdown(void){
SDL_Quit();
}
void Port_SwapBuffer(void){
SDL_GL_SwapWindow(win);
}
#endif #endif

38
src/snd_dc.c Normal file
View file

@ -0,0 +1,38 @@
/*
Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifdef USE_KALLISTIOS
#include "quakedef.h"
int snd_inited;
int total = 0;
#define BUFFER_SIZE 4096 * 4
unsigned char dma_buffer[BUFFER_SIZE];
qboolean SNDDMA_Init(void) { return 1; }
int SNDDMA_GetDMAPos(void) { return 0; }
int SNDDMA_GetSamples(void) { return total; }
void SNDDMA_Shutdown(void) {}
void SNDDMA_Submit(void) {}
#endif