A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 104 lines 2.1 kB view raw
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[256]; 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