diff options
| author | Dave Chapman <dave@dchapman.com> | 2006-03-28 15:44:01 +0000 |
|---|---|---|
| committer | Dave Chapman <dave@dchapman.com> | 2006-03-28 15:44:01 +0000 |
| commit | 47f4a458d636a889e955e68f896708f1276febc0 (patch) | |
| tree | 99f770c02ef606f0abbdcd332ac39e69830d8007 /apps/plugins/doom/i_system.c | |
| parent | fff7d6157d56f233cad5c2003475e47a5ff809a7 (diff) | |
| download | rockbox-47f4a458d636a889e955e68f896708f1276febc0.zip rockbox-47f4a458d636a889e955e68f896708f1276febc0.tar.gz rockbox-47f4a458d636a889e955e68f896708f1276febc0.tar.bz2 rockbox-47f4a458d636a889e955e68f896708f1276febc0.tar.xz | |
Patch #2969 - Doom! Currently only working on the H300.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9312 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/doom/i_system.c')
| -rw-r--r-- | apps/plugins/doom/i_system.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/apps/plugins/doom/i_system.c b/apps/plugins/doom/i_system.c new file mode 100644 index 0000000..1e56405 --- /dev/null +++ b/apps/plugins/doom/i_system.c @@ -0,0 +1,134 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// $Id$ +// +// Copyright (C) 1993-1996 by 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. +// +// $Log$ +// Revision 1.1 2006/03/28 15:44:01 dave +// Patch #2969 - Doom! Currently only working on the H300. +// +// +// DESCRIPTION: +// +//----------------------------------------------------------------------------- + +#include "doomdef.h" +#include "m_misc.h" +#include "i_video.h" +#include "i_sound.h" + +#include "d_net.h" +#include "g_game.h" +#include "z_zone.h" + +#ifdef __GNUG__ +#pragma implementation "i_system.h" +#endif +#include "i_system.h" + +#include "rockmacros.h" + +// +// I_GetTime +// returns time in 1/35th second tics +// +#if (CONFIG_CPU != PP5020) +volatile unsigned int doomtimer=0; + +void doomtime(void) +{ + doomtimer++; +} +#endif + +int I_GetTime (void) +{ +#ifdef SIMULATOR +#if HZ==100 + return ((7*(*rb->current_tick))/20); +#else + #error FIX - I assumed HZ was 100 +#endif +#else +#if (CONFIG_CPU == PP5020) + return (USEC_TIMER * 7)/200000; +#else + return doomtimer; +#endif +#endif +} + +// +// I_Init +// + +// I was looking into this and comparing the speed versus Prboom +// Turns out they are running the game much slower then I thought the game was +// played. This explains why run was unusable other then through straight stretches +// The game is much slower now (in terms of game speed). +void I_Init (void) +{ +#if (CONFIG_CPU != PP5020) && !defined(SIMULATOR) + rb->timer_register(1, NULL, CPU_FREQ/TICRATE, 1, doomtime); +#endif + I_InitSound(); +} + +// +// I_Quit +// +extern boolean doomexit; +void I_Quit (void) +{ + I_ShutdownSound(); + I_ShutdownMusic(); + I_ShutdownGraphics(); +#if (CONFIG_CPU != PP5020) && !defined(SIMULATOR) + rb->timer_unregister(); +#endif + doomexit=1; +} + +void I_WaitVBL(int count) +{ + rb->sleep(count); +} + +// +// I_Error +// +extern boolean demorecording; + +void I_Error (char *error, ...) +{ + char p_buf[50]; + va_list ap; + + va_start(ap, error); + vsnprintf(p_buf,sizeof(p_buf), error, ap); + va_end(ap); + + printf("%s",p_buf); + + // Shutdown. Here might be other errors. + if (demorecording) + G_CheckDemoStatus(); +/* + I_ShutdownGraphics(); +*/ + + I_Quit(); + rb->sleep(HZ*2); +} |