diff options
author | Paweł Kołodziejski | 2006-05-23 23:43:52 +0000 |
---|---|---|
committer | Paweł Kołodziejski | 2006-05-23 23:43:52 +0000 |
commit | 107073537e4ad24e294e28a2a62f8d3ad33008ff (patch) | |
tree | 9eade8ff944f701d2676aa2ddd94e3585be9c813 /engines/agi/global.cpp | |
parent | 3a025038da6d351789d5daf29e4751678c47fed1 (diff) | |
download | scummvm-rg350-107073537e4ad24e294e28a2a62f8d3ad33008ff.tar.gz scummvm-rg350-107073537e4ad24e294e28a2a62f8d3ad33008ff.tar.bz2 scummvm-rg350-107073537e4ad24e294e28a2a62f8d3ad33008ff.zip |
imported AGI engine
svn-id: r22588
Diffstat (limited to 'engines/agi/global.cpp')
-rw-r--r-- | engines/agi/global.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/engines/agi/global.cpp b/engines/agi/global.cpp new file mode 100644 index 0000000000..404726f2b7 --- /dev/null +++ b/engines/agi/global.cpp @@ -0,0 +1,73 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2006 The ScummVM project + * + * Copyright (C) 1999-2003 Sarien Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#include "common/stdafx.h" + +#include "agi/agi.h" + +namespace Agi { + +int getflag(int n) { + uint8 *set = (uint8 *) & game.flags; + + set += n >> 3; + return (*set & (1 << (n & 0x07))) != 0; +} + +void setflag(int n, int v) { + uint8 *set = (uint8 *) & game.flags; + + set += n >> 3; + if (v) + *set |= 1 << (n & 0x07); /* set bit */ + else + *set &= ~(1 << (n & 0x07)); /* clear bit */ +} + +void flipflag(int n) { + uint8 *set = (uint8 *) & game.flags; + + set += n >> 3; + *set ^= 1 << (n & 0x07); /* flip bit */ +} + +void setvar(int var, int val) { + game.vars[var] = val; +} + +int getvar(int var) { + return game.vars[var]; +} + +void decrypt(uint8 *mem, int len) { + uint8 *key; + int i; + + key = opt.agds ? (uint8 *)CRYPT_KEY_AGDS : (uint8 *)CRYPT_KEY_SIERRA; + + for (i = 0; i < len; i++) + *(mem + i) ^= *(key + (i % 11)); +} + +} // End of namespace Agi |