diff options
author | Simon Howard | 2008-09-20 21:57:49 +0000 |
---|---|---|
committer | Simon Howard | 2008-09-20 21:57:49 +0000 |
commit | 5a32ee7e78697f4b3d94a435c21f6b08a0ae839a (patch) | |
tree | 6b55bac17df678ebd164f9861f0501120c2e5a2d /src/doom | |
parent | 871d3b3da6c84be394963d1f5a41de12bfc5a2bc (diff) | |
download | chocolate-doom-5a32ee7e78697f4b3d94a435c21f6b08a0ae839a.tar.gz chocolate-doom-5a32ee7e78697f4b3d94a435c21f6b08a0ae839a.tar.bz2 chocolate-doom-5a32ee7e78697f4b3d94a435c21f6b08a0ae839a.zip |
Move m_random.[ch] to doom/ (as Hexen uses a different random number
table). Split RNG code out of heretic/m_misc.c to a separate m_random.c.
Subversion-branch: /branches/raven-branch
Subversion-revision: 1256
Diffstat (limited to 'src/doom')
-rw-r--r-- | src/doom/Makefile.am | 1 | ||||
-rw-r--r-- | src/doom/m_random.c | 86 | ||||
-rw-r--r-- | src/doom/m_random.h | 47 |
3 files changed, 134 insertions, 0 deletions
diff --git a/src/doom/Makefile.am b/src/doom/Makefile.am index 44162e48..5982721f 100644 --- a/src/doom/Makefile.am +++ b/src/doom/Makefile.am @@ -23,6 +23,7 @@ hu_lib.c hu_lib.h \ hu_stuff.c hu_stuff.h \ info.c info.h \ m_menu.c m_menu.h \ +m_random.c m_random.h \ p_ceilng.c \ p_doors.c \ p_enemy.c \ diff --git a/src/doom/m_random.c b/src/doom/m_random.c new file mode 100644 index 00000000..31cdf1b2 --- /dev/null +++ b/src/doom/m_random.c @@ -0,0 +1,86 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 1993-1996 Id Software, Inc. +// Copyright(C) 2005 Simon Howard +// +// 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. +// +// DESCRIPTION: +// Random number LUT. +// +//----------------------------------------------------------------------------- + + +#include <time.h> + +#include "m_random.h" + +// +// M_Random +// Returns a 0-255 number +// + +static const unsigned char rndtable[256] = { + 0, 8, 109, 220, 222, 241, 149, 107, 75, 248, 254, 140, 16, 66 , + 74, 21, 211, 47, 80, 242, 154, 27, 205, 128, 161, 89, 77, 36 , + 95, 110, 85, 48, 212, 140, 211, 249, 22, 79, 200, 50, 28, 188 , + 52, 140, 202, 120, 68, 145, 62, 70, 184, 190, 91, 197, 152, 224 , + 149, 104, 25, 178, 252, 182, 202, 182, 141, 197, 4, 81, 181, 242 , + 145, 42, 39, 227, 156, 198, 225, 193, 219, 93, 122, 175, 249, 0 , + 175, 143, 70, 239, 46, 246, 163, 53, 163, 109, 168, 135, 2, 235 , + 25, 92, 20, 145, 138, 77, 69, 166, 78, 176, 173, 212, 166, 113 , + 94, 161, 41, 50, 239, 49, 111, 164, 70, 60, 2, 37, 171, 75 , + 136, 156, 11, 56, 42, 146, 138, 229, 73, 146, 77, 61, 98, 196 , + 135, 106, 63, 197, 195, 86, 96, 203, 113, 101, 170, 247, 181, 113 , + 80, 250, 108, 7, 255, 237, 129, 226, 79, 107, 112, 166, 103, 241 , + 24, 223, 239, 120, 198, 58, 60, 82, 128, 3, 184, 66, 143, 224 , + 145, 224, 81, 206, 163, 45, 63, 90, 168, 114, 59, 33, 159, 95 , + 28, 139, 123, 98, 125, 196, 15, 70, 194, 253, 54, 14, 109, 226 , + 71, 17, 161, 93, 186, 87, 244, 138, 20, 52, 123, 251, 26, 36 , + 17, 46, 52, 231, 232, 76, 31, 221, 84, 37, 216, 165, 212, 106 , + 197, 242, 98, 43, 39, 175, 254, 145, 190, 84, 118, 222, 187, 136 , + 120, 163, 236, 249 +}; + +int rndindex = 0; +int prndindex = 0; + +// Which one is deterministic? +int P_Random (void) +{ + prndindex = (prndindex+1)&0xff; + return rndtable[prndindex]; +} + +int M_Random (void) +{ + rndindex = (rndindex+1)&0xff; + return rndtable[rndindex]; +} + +void M_ClearRandom (void) +{ + prndindex = 0; + + // Seed the M_Random counter from the system time + + rndindex = time(NULL) & 0xff; +} + + + + diff --git a/src/doom/m_random.h b/src/doom/m_random.h new file mode 100644 index 00000000..be778362 --- /dev/null +++ b/src/doom/m_random.h @@ -0,0 +1,47 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// Copyright(C) 1993-1996 Id Software, Inc. +// Copyright(C) 2005 Simon Howard +// +// 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. +// +// DESCRIPTION: +// +// +//----------------------------------------------------------------------------- + + +#ifndef __M_RANDOM__ +#define __M_RANDOM__ + + +#include "doomtype.h" + + + +// Returns a number from 0 to 255, +// from a lookup table. +int M_Random (void); + +// As M_Random, but used only by the play simulation. +int P_Random (void); + +// Fix randoms for demos. +void M_ClearRandom (void); + + +#endif |