summaryrefslogtreecommitdiff
path: root/apps/plugins/doom/m_cheat.c
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2006-03-28 15:44:01 +0000
committerDave Chapman <dave@dchapman.com>2006-03-28 15:44:01 +0000
commit47f4a458d636a889e955e68f896708f1276febc0 (patch)
tree99f770c02ef606f0abbdcd332ac39e69830d8007 /apps/plugins/doom/m_cheat.c
parentfff7d6157d56f233cad5c2003475e47a5ff809a7 (diff)
downloadrockbox-47f4a458d636a889e955e68f896708f1276febc0.tar.gz
rockbox-47f4a458d636a889e955e68f896708f1276febc0.zip
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/m_cheat.c')
-rw-r--r--apps/plugins/doom/m_cheat.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/apps/plugins/doom/m_cheat.c b/apps/plugins/doom/m_cheat.c
new file mode 100644
index 0000000000..afd68e960d
--- /dev/null
+++ b/apps/plugins/doom/m_cheat.c
@@ -0,0 +1,104 @@
1// Emacs style mode select -*- C++ -*-
2//-----------------------------------------------------------------------------
3//
4// $Id$
5//
6// Copyright (C) 1993-1996 by id Software, Inc.
7//
8// This program is free software; you can redistribute it and/or
9// modify it under the terms of the GNU General Public License
10// as published by the Free Software Foundation; either version 2
11// of the License, or (at your option) any later version.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// $Log$
19// Revision 1.1 2006/03/28 15:44:01 dave
20// Patch #2969 - Doom! Currently only working on the H300.
21//
22//
23// DESCRIPTION:
24// Cheat sequence checking.
25//
26//-----------------------------------------------------------------------------
27
28#include "m_cheat.h"
29
30//
31// CHEAT SEQUENCE PACKAGE
32//
33
34static int firsttime = 1;
35static unsigned char cheat_xlate_table[20];
36
37
38//
39// Called in st_stuff module, which handles the input.
40// Returns a 1 if the cheat was successful, 0 if failed.
41//
42int
43cht_CheckCheat
44( cheatseq_t* cht,
45 char key )
46{
47 int i;
48 int rc = 0;
49
50 if (firsttime)
51 {
52 firsttime = 0;
53 for (i=0;i<256;i++)
54 cheat_xlate_table[i] = SCRAMBLE(i);
55 }
56
57 if (!cht->p)
58 cht->p = cht->sequence; // initialize if first time
59
60 if (*cht->p == 0)
61 *(cht->p++) = key;
62 else if
63 (cheat_xlate_table[(unsigned char)key] == *cht->p)
64 cht->p++;
65 else
66 cht->p = cht->sequence;
67
68 if (*cht->p == 1)
69 cht->p++;
70 else if (*cht->p == 0xff) // end of sequence character
71 {
72 cht->p = cht->sequence;
73 rc = 1;
74 }
75
76 return rc;
77}
78
79void
80cht_GetParam
81( cheatseq_t* cht,
82 char* buffer )
83{
84
85 unsigned char *p, c;
86
87 p = cht->sequence;
88 while (*(p++) != 1)
89 ;
90
91 do
92 {
93 c = *p;
94 *(buffer++) = c;
95 *(p++) = 0;
96 }
97 while (c && *p!=0xff );
98
99 if (*p==0xff)
100 *buffer = 0;
101
102}
103
104