From 1d77c9f0cf710e1f9f439ad371cb1b49624aed75 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Fri, 20 Dec 2013 01:01:26 +0100 Subject: SCI: script patcher cleanup --- engines/sci/engine/script_patches.h | 58 ++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 26 deletions(-) (limited to 'engines/sci/engine/script_patches.h') diff --git a/engines/sci/engine/script_patches.h b/engines/sci/engine/script_patches.h index 5d3ee22f7a..d634db8089 100644 --- a/engines/sci/engine/script_patches.h +++ b/engines/sci/engine/script_patches.h @@ -27,41 +27,47 @@ namespace Sci { -#define SIG_END 0xFFFF -#define SIG_MISMATCH 0xFFFE -#define SIG_COMMANDMASK 0xF000 -#define SIG_VALUEMASK 0x0FFF -#define SIG_BYTEMASK 0x00FF -#define SIG_MAGICDWORD 0xF000 -#define SIG_ADDTOOFFSET 0xE000 -#define SIG_SELECTOR16 0x9000 -#define SIG_SELECTOR8 0x8000 -#define SIG_UINT16 0x1000 -#define SIG_BYTE 0x0000 - -#define PATCH_END SIG_END -#define PATCH_COMMANDMASK SIG_COMMANDMASK -#define PATCH_VALUEMASK SIG_VALUEMASK -#define PATCH_BYTEMASK SIG_BYTEMASK -#define PATCH_ADDTOOFFSET SIG_ADDTOOFFSET -#define PATCH_GETORIGINALBYTE 0xD000 -#define PATCH_GETORIGINALBYTEADJUST 0xC000 -#define PATCH_SELECTOR16 SIG_SELECTOR16 -#define PATCH_SELECTOR8 SIG_SELECTOR8 -#define PATCH_UINT16 SIG_UINT16 -#define PATCH_BYTE SIG_BYTE +// Please do not use the #defines, that are called SIG_code* / PATCH_code* inside signature/patch-tables +#define SIG_END 0xFFFF +#define SIG_MISMATCH 0xFFFE +#define SIG_COMMANDMASK 0xF000 +#define SIG_VALUEMASK 0x0FFF +#define SIG_BYTEMASK 0x00FF +#define SIG_MAGICDWORD 0xF000 +#define SIG_codeADDTOOFFSET 0xE000 +#define SIG_ADDTOOFFSET(_offset_) SIG_codeADDTOOFFSET | _offset_ +#define SIG_codeSELECTOR16 0x9000 +#define SIG_SELECTOR16(_selectorID_) SIG_codeSELECTOR16 | _selectorID_ +#define SIG_codeSELECTOR8 0x8000 +#define SIG_SELECTOR8(_selectorID_) SIG_codeSELECTOR8 | _selectorID_ +#define SIG_codeUINT16 0x1000 +#define SIG_UINT16(_value_) SIG_codeUINT16 | (_value_ & 0xFF), (_value_ >> 8) +#define SIG_codeBYTE 0x0000 + +#define PATCH_END SIG_END +#define PATCH_COMMANDMASK SIG_COMMANDMASK +#define PATCH_VALUEMASK SIG_VALUEMASK +#define PATCH_BYTEMASK SIG_BYTEMASK +#define PATCH_codeADDTOOFFSET SIG_codeADDTOOFFSET +#define PATCH_ADDTOOFFSET(_offset_) SIG_codeADDTOOFFSET | _offset_ +#define PATCH_GETORIGINALBYTE 0xD000 +#define PATCH_GETORIGINALBYTEADJUST 0xC000 +#define PATCH_codeSELECTOR16 SIG_codeSELECTOR16 +#define PATCH_SELECTOR16(_selectorID_) SIG_codeSELECTOR16 | _selectorID_ +#define PATCH_codeSELECTOR8 SIG_codeSELECTOR8 +#define PATCH_SELECTOR8(_selectorID_) SIG_codeSELECTOR8 | _selectorID_ +#define PATCH_codeUINT16 SIG_codeUINT16 +#define PATCH_UINT16(_value_) SIG_codeUINT16 | (_value_ & 0xFF), (_value_ >> 8) +#define PATCH_codeBYTE SIG_codeBYTE // defines maximum scratch area for getting original bytes from unpatched script data #define PATCH_VALUELIMIT 4096 struct SciScriptPatcherEntry { bool defaultActive; -// bool active; uint16 scriptNr; const char *description; int16 applyCount; -// uint32 magicDWord; -// int magicOffset; const uint16 *signatureData; const uint16 *patchData; }; -- cgit v1.2.3