summaryrefslogtreecommitdiff
path: root/sys/src/games/doom/i_system.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-26 23:30:17 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-26 23:30:17 +0000
commitec4bcbd01f73873a97a7d089e2f2de260db243d5 (patch)
tree47475764be4ec3b20caf7941ea52ca4b49e63f8a /sys/src/games/doom/i_system.c
parent269e63406d8d9fe79351849ca5c225f7dd3024d1 (diff)
rio: disable cons if /dev/kbd is open, add games/doom
Diffstat (limited to 'sys/src/games/doom/i_system.c')
-rw-r--r--sys/src/games/doom/i_system.c153
1 files changed, 153 insertions, 0 deletions
diff --git a/sys/src/games/doom/i_system.c b/sys/src/games/doom/i_system.c
new file mode 100644
index 000000000..10bd5bb3f
--- /dev/null
+++ b/sys/src/games/doom/i_system.c
@@ -0,0 +1,153 @@
+/* i_system.c */
+
+#include "doomdef.h"
+#include "doomtype.h"
+
+#include "i_system.h"
+#include "i_sound.h"
+#include "i_video.h"
+
+#include "d_net.h"
+#include "g_game.h"
+#include "m_misc.h"
+
+int mb_used = 6; /* 6MB heap */
+
+void I_Init (void)
+{
+ // I_InitSound();
+ I_InitGraphics();
+}
+
+byte* I_ZoneBase (int *size)
+{
+ *size = mb_used*1024*1024;
+ return (byte *) malloc(*size);
+}
+
+/* returns time in 1/70th second tics */
+int I_GetTime (void)
+{
+ return (int)((nsec()*TICRATE)/1000000000);
+}
+
+static ticcmd_t emptycmd;
+ticcmd_t* I_BaseTiccmd (void)
+{
+ return &emptycmd;
+}
+
+void I_Quit (void)
+{
+ D_QuitNetGame ();
+ I_ShutdownSound();
+ I_ShutdownMusic();
+ M_SaveDefaults ();
+ I_ShutdownGraphics();
+ threadexitsall(nil);
+}
+
+byte* I_AllocLow (int length)
+{
+ byte *mem;
+
+ mem = (byte *)malloc (length);
+ memset (mem,0,length);
+ return mem;
+}
+
+void I_Tactile(int on, int off, int total)
+{
+ USED(on, off, total);
+}
+
+/*
+ticcmd_t emptycmd;
+ticcmd_t* I_BaseTiccmd(void)
+{
+ return &emptycmd;
+}
+
+
+int I_GetHeapSize (void)
+{
+ return mb_used*1024*1024;
+}
+
+byte* I_ZoneBase (int* size)
+{
+ *size = mb_used*1024*1024;
+ return (byte *) malloc (*size);
+}
+*/
+
+
+//
+// I_Error
+//
+extern boolean demorecording;
+
+void I_Error (char *error, ...)
+{
+ va_list argptr;
+
+ // Message first.
+ va_start (argptr,error);
+ fprintf (stderr, "Error: ");
+ vfprintf (stderr,error,argptr);
+ fprintf (stderr, "\n");
+ va_end (argptr);
+
+ fflush( stderr );
+
+ // Shutdown. Here might be other errors.
+ if (demorecording)
+ G_CheckDemoStatus();
+
+ D_QuitNetGame ();
+ I_ShutdownGraphics();
+
+ threadexitsall("I_Error");
+}
+
+int I_FileExists (char *filepath)
+{
+ return (0 == access(filepath, AREAD));
+}
+
+int I_Open (char *filepath)
+{
+ return open(filepath, OREAD);
+}
+
+void I_Close (int handle)
+{
+ close (handle);
+}
+
+int I_Seek (int handle, int n)
+{
+ return seek(handle, n, 0);
+}
+
+int I_Read (int handle, void *buf, int n)
+{
+ return read(handle, buf, n);
+}
+
+char* I_IdentifyWAD(char *wadname)
+{
+ char path[1024];
+
+ /* /sys/lib/doom/... */
+ snprintf(path, sizeof path, "/sys/lib/doom/%s", wadname);
+ if (I_FileExists (path))
+ return path;
+
+ /* $home/lib/doom/... */
+ snprintf(path, sizeof path, "%s/lib/doom/%s", getenv("home"), wadname);
+ if (I_FileExists (path))
+ return path;
+
+ return nil;
+}