aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/script.h
diff options
context:
space:
mode:
authorMax Horn2009-02-27 02:23:00 +0000
committerMax Horn2009-02-27 02:23:00 +0000
commit170916201c2dd8b75dccefb9a39c6fee572a4ec9 (patch)
treedca874754c2d3f12b47afde12e0bcd54b42ba467 /engines/sci/engine/script.h
parentbf0860fc5e2013883292dc8efabde1e2f919d9d7 (diff)
downloadscummvm-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.h224
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