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/m_cheat.c | |
parent | fff7d6157d56f233cad5c2003475e47a5ff809a7 (diff) | |
download | rockbox-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.c | 104 |
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 | |||
34 | static int firsttime = 1; | ||
35 | static 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 | // | ||
42 | int | ||
43 | cht_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 | |||
79 | void | ||
80 | cht_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 | |||