dc
This commit is contained in:
parent
dd5240e9cd
commit
6740fb6c86
6 changed files with 456 additions and 334 deletions
|
|
@ -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
3
compile_flags.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
-DUSE_KALLISTIOS
|
||||||
|
-I/opt/toolchains/dc/kos-ports/include/
|
||||||
|
-I/opt/toolchains/dc/kos/include/
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
403
src/port.c
403
src/port.c
|
|
@ -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
38
src/snd_dc.c
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue