diff options
author | Max Horn | 2009-02-27 02:23:00 +0000 |
---|---|---|
committer | Max Horn | 2009-02-27 02:23:00 +0000 |
commit | 170916201c2dd8b75dccefb9a39c6fee572a4ec9 (patch) | |
tree | dca874754c2d3f12b47afde12e0bcd54b42ba467 /engines/sci/engine/script.h | |
parent | bf0860fc5e2013883292dc8efabde1e2f919d9d7 (diff) | |
download | scummvm-rg350-170916201c2dd8b75dccefb9a39c6fee572a4ec9.tar.gz scummvm-rg350-170916201c2dd8b75dccefb9a39c6fee572a4ec9.tar.bz2 scummvm-rg350-170916201c2dd8b75dccefb9a39c6fee572a4ec9.zip |
SCI: Moved almost all files from include/ to other dirs; only include/engine.h remains
svn-id: r38920
Diffstat (limited to 'engines/sci/engine/script.h')
-rw-r--r-- | engines/sci/engine/script.h | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/engines/sci/engine/script.h b/engines/sci/engine/script.h new file mode 100644 index 0000000000..d30a0cd41b --- /dev/null +++ b/engines/sci/engine/script.h @@ -0,0 +1,224 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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$ + * + */ + +#ifndef SCI_ENGINE_SCRIPT_H +#define SCI_ENGINE_SCRIPT_H + +#include "common/str.h" + +namespace Sci { + +struct EngineState; +struct ResourceManager; + +/*#define SCRIPT_DEBUG */ + +#define SCI_SCRIPTS_NR 1000 + +struct script_opcode { + unsigned opcode; + int arg1, arg2, arg3; + int pos, size; +}; + + +enum script_object_types { + sci_obj_terminator, + sci_obj_object, + sci_obj_code, + sci_obj_synonyms, + sci_obj_said, + sci_obj_strings, + sci_obj_class, + sci_obj_exports, + sci_obj_pointers, + sci_obj_preload_text, /* This is really just a flag. */ + sci_obj_localvars +}; + +void script_dissect(ResourceManager *resmgr, int res_no, const Common::StringList &selectorNames); + +/* Opcode formats as used by script.c */ +enum opcode_format { + Script_Invalid = -1, + Script_None = 0, + Script_Byte, + Script_SByte, + Script_Word, + Script_SWord, + Script_Variable, + Script_SVariable, + Script_SRelative, + Script_Property, + Script_Global, + Script_Local, + Script_Temp, + Script_Param, + Script_Offset, + Script_End +}; + +enum sci_opcodes { /* FIXME */ + op_bnot = 0, + op_add, + op_sub, + op_mul, + op_div, + op_mod, + op_shr, + op_shl, + op_xor, + op_and, + op_or, + op_neg, + op_not, + op_eq, + op_ne_, + op_gt_, + op_ge_, + op_lt_, + op_le_, + op_ugt_, + op_uge_, + op_ult_, + op_ule_, + op_bt, + op_bnt, + op_jmp, + op_ldi, + op_push, + op_pushi, + op_toss, + op_dup, + op_link, + op_call = 0x20, + op_callk, + op_callb, + op_calle, + op_ret, + op_send, + op_class = 0x28, + op_self = 0x2a, + op_super, + op_rest, + op_lea, + op_selfID, + op_pprev = 0x30, + op_pToa, + op_aTop, + op_pTos, + op_sTop, + op_ipToa, + op_dpToa, + op_ipTos, + op_dpTos, + op_lofsa, + op_lofss, + op_push0, + op_push1, + op_push2, + op_pushSelf, + op_lag = 0x40, + op_lal, + op_lat, + op_lap, + op_lagi, + op_lali, + op_lati, + op_lapi, + op_lsg, + op_lsl, + op_lst, + op_lsp, + op_lsgi, + op_lsli, + op_lsti, + op_lspi, + op_sag, + op_sal, + op_sat, + op_sap, + op_sagi, + op_sali, + op_sati, + op_sapi, + op_ssg, + op_ssl, + op_sst, + op_ssp, + op_ssgi, + op_ssli, + op_ssti, + op_sspi, + op_plusag, + op_plusal, + op_plusat, + op_plusap, + op_plusagi, + op_plusali, + op_plusati, + op_plusapi, + op_plussg, + op_plussl, + op_plusst, + op_plussp, + op_plussgi, + op_plussli, + op_plussti, + op_plusspi, + op_minusag, + op_minusal, + op_minusat, + op_minusap, + op_minusagi, + op_minusali, + op_minusati, + op_minusapi, + op_minussg, + op_minussl, + op_minusst, + op_minussp, + op_minussgi, + op_minussli, + op_minussti, + op_minusspi +}; + +extern opcode_format formats[128][4]; + +void script_adjust_opcode_formats(int res_version); + +int script_find_selector(EngineState *s, const char *selector_name); +/* Determines the selector ID of a selector by its name +** Parameters: (state_t *) s: VM state +** (char *) selector_name: Name of the selector to look up +** Returns : (int) The appropriate selector ID, or -1 on error +*/ + +void script_free_breakpoints(EngineState *s); + +} // End of namespace Sci + +#endif // SCI_ENGINE_SCRIPT_H |