mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Moved script stuff to their matching directory
This commit is contained in:
parent
16d9a6f8b0
commit
cf18c3a96f
21 changed files with 475 additions and 540 deletions
236
code/script/scriptopcodes.cpp
Normal file
236
code/script/scriptopcodes.cpp
Normal file
|
@ -0,0 +1,236 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
OpenMoHAA source code 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.
|
||||
|
||||
OpenMoHAA source code 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 OpenMoHAA source code; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
// scriptopcodes.cpp
|
||||
|
||||
#include "glb_local.h"
|
||||
#include "scriptopcodes.h"
|
||||
|
||||
static opcode_t OpcodeInfo[] =
|
||||
{
|
||||
{ "OPCODE_EOF", 0, 0, 0 },
|
||||
{ "OPCODE_BOOL_JUMP_FALSE4", 5, -1, 0 },
|
||||
{ "OPCODE_BOOL_JUMP_TRUE4", 5, -1, 0 },
|
||||
{ "OPCODE_VAR_JUMP_FALSE4", 5, -1, 0 },
|
||||
{ "OPCODE_VAR_JUMP_TRUE4", 5, -1, 0 },
|
||||
|
||||
{ "OPCODE_BOOL_LOGICAL_AND", 5, -1, 0 },
|
||||
{ "OPCODE_BOOL_LOGICAL_OR", 5, -1, 0 },
|
||||
{ "OPCODE_VAR_LOGICAL_AND", 5, -1, 0 },
|
||||
{ "OPCODE_VAR_LOGICAL_OR", 5, -1, 0 },
|
||||
|
||||
{ "OPCODE_BOOL_TO_VAR", 0, 0, 0 },
|
||||
|
||||
{ "OPCODE_JUMP4", 1 + sizeof( unsigned int ), 0, 0 },
|
||||
{ "OPCODE_JUMP_BACK4", 1 + sizeof( unsigned int ), 0, 0 },
|
||||
|
||||
{ "OPCODE_STORE_INT0", 1, 1, 0 },
|
||||
{ "OPCODE_STORE_INT1", 1 + sizeof( char ), 1, 0 },
|
||||
{ "OPCODE_STORE_INT2", 1 + sizeof( short ), 1, 0 },
|
||||
{ "OPCODE_STORE_INT3", 1 + sizeof( short3 ), 1, 0 },
|
||||
{ "OPCODE_STORE_INT4", 1 + sizeof( int ), 1, 0 },
|
||||
|
||||
{ "OPCODE_BOOL_STORE_FALSE", 1, 1, 0 },
|
||||
{ "OPCODE_BOOL_STORE_TRUE", 1, 1, 0 },
|
||||
|
||||
{ "OPCODE_STORE_STRING", 1 + sizeof( unsigned int ), 1, 0 },
|
||||
{ "OPCODE_STORE_FLOAT", 1 + sizeof( float ), 1, 0 },
|
||||
{ "OPCODE_STORE_VECTOR", 1 + sizeof( Vector ), 1, 0 },
|
||||
{ "OPCODE_CALC_VECTOR", 1, -2, 0 },
|
||||
{ "OPCODE_STORE_NULL", 1, 1, 0 },
|
||||
{ "OPCODE_STORE_NIL", 1, 1, 0 },
|
||||
|
||||
{ "OPCODE_EXEC_CMD0", 5, 0, 1 },
|
||||
{ "OPCODE_EXEC_CMD1", 5, -1, 1 },
|
||||
{ "OPCODE_EXEC_CMD2", 5, -2, 1 },
|
||||
{ "OPCODE_EXEC_CMD3", 5, -3, 1 },
|
||||
{ "OPCODE_EXEC_CMD4", 5, -4, 1 },
|
||||
{ "OPCODE_EXEC_CMD5", 5, -5, 1 },
|
||||
{ "OPCODE_EXEC_CMD_COUNT1", 6, -128, 1 },
|
||||
|
||||
{ "OPCODE_EXEC_CMD_METHOD0", 5, -1, 1 },
|
||||
{ "OPCODE_EXEC_CMD_METHOD1", 5, -2, 1 },
|
||||
{ "OPCODE_EXEC_CMD_METHOD2", 5, -3, 1 },
|
||||
{ "OPCODE_EXEC_CMD_METHOD3", 5, -4, 1 },
|
||||
{ "OPCODE_EXEC_CMD_METHOD4", 5, -5, 1 },
|
||||
{ "OPCODE_EXEC_CMD_METHOD5", 5, -6, 1 },
|
||||
{ "OPCODE_EXEC_CMD_METHOD_COUNT1", 6, -128, 1 },
|
||||
|
||||
{ "OPCODE_EXEC_METHOD0", 5, 0, 1 },
|
||||
{ "OPCODE_EXEC_METHOD1", 5, -1, 1 },
|
||||
{ "OPCODE_EXEC_METHOD2", 5, -2, 1 },
|
||||
{ "OPCODE_EXEC_METHOD3", 5, -3, 1 },
|
||||
{ "OPCODE_EXEC_METHOD4", 5, -4, 1 },
|
||||
{ "OPCODE_EXEC_METHOD5", 5, -5, 1 },
|
||||
{ "OPCODE_EXEC_METHOD_COUNT1", 6, -128, 1 },
|
||||
|
||||
{ "OPCODE_LOAD_GAME_VAR", 5, -1, 0 },
|
||||
{ "OPCODE_LOAD_LEVEL_VAR", 5, -1, 0 },
|
||||
{ "OPCODE_LOAD_LOCAL_VAR", 5, -1, 0 },
|
||||
{ "OPCODE_LOAD_PARM_VAR", 5, -1, 0 },
|
||||
{ "OPCODE_LOAD_SELF_VAR", 5, -1, 0 },
|
||||
{ "OPCODE_LOAD_GROUP_VAR", 5, -1, 0 },
|
||||
{ "OPCODE_LOAD_OWNER_VAR", 5, -1, 0 },
|
||||
{ "OPCODE_LOAD_FIELD_VAR", 5, -2, 0 },
|
||||
{ "OPCODE_LOAD_ARRAY_VAR", 1, -3, 0 },
|
||||
{ "OPCODE_LOAD_CONST_ARRAY1", 2, -128, 0 },
|
||||
|
||||
{ "OPCODE_STORE_FIELD_REF", 5, 0, 0 },
|
||||
{ "OPCODE_STORE_ARRAY_REF", 1, -1, 0 },
|
||||
|
||||
{ "OPCODE_MARK_STACK_POS", 1, 0, 0 },
|
||||
|
||||
{ "OPCODE_STORE_PARAM", 1, 1, 0 },
|
||||
|
||||
{ "OPCODE_RESTORE_STACK_POS", 1, 0, 0 },
|
||||
|
||||
{ "OPCODE_LOAD_STORE_GAME_VAR", 5, 0, 0 },
|
||||
{ "OPCODE_LOAD_STORE_LEVEL_VAR", 5, 0, 0 },
|
||||
{ "OPCODE_LOAD_STORE_LOCAL_VAR", 5, 0, 0 },
|
||||
{ "OPCODE_LOAD_STORE_PARM_VAR", 5, 0, 0 },
|
||||
{ "OPCODE_LOAD_STORE_SELF_VAR", 5, 0, 0 },
|
||||
{ "OPCODE_LOAD_STORE_GROUP_VAR", 5, 0, 0 },
|
||||
{ "OPCODE_LOAD_STORE_OWNER_VAR", 5, 0, 0 },
|
||||
|
||||
{ "OPCODE_STORE_GAME_VAR", 5, 1, 0 },
|
||||
{ "OPCODE_STORE_LEVEL_VAR", 5, 1, 0 },
|
||||
{ "OPCODE_STORE_LOCAL_VAR", 5, 1, 0 },
|
||||
{ "OPCODE_STORE_PARM_VAR", 5, 1, 0 },
|
||||
{ "OPCODE_STORE_SELF_VAR", 5, 1, 0 },
|
||||
{ "OPCODE_STORE_GROUP_VAR", 5, 1, 0 },
|
||||
{ "OPCODE_STORE_OWNER_VAR", 5, 1, 0 },
|
||||
{ "OPCODE_STORE_FIELD", 5, 0, 1 },
|
||||
{ "OPCODE_STORE_ARRAY", 1, -1, 0 },
|
||||
{ "OPCODE_STORE_GAME", 1, 1, 0 },
|
||||
{ "OPCODE_STORE_LEVEL", 1, 1, 0 },
|
||||
{ "OPCODE_STORE_LOCAL", 1, 1, 0 },
|
||||
{ "OPCODE_STORE_PARM", 1, 1, 0 },
|
||||
{ "OPCODE_STORE_SELF", 1, 1, 0 },
|
||||
{ "OPCODE_STORE_GROUP", 1, 1, 0 },
|
||||
{ "OPCODE_STORE_OWNER", 1, 1, 0 },
|
||||
|
||||
{ "OPCODE_BIN_BITWISE_AND", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_BITWISE_OR", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_BITWISE_EXCL_OR", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_EQUALITY", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_INEQUALITY", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_LESS_THAN", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_GREATER_THAN", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_LESS_THAN_OR_EQUAL", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_GREATER_THAN_OR_EQUAL", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_PLUS", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_MINUS", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_MULTIPLY", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_DIVIDE", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_PERCENTAGE", 1, -1, 0 },
|
||||
|
||||
{ "OPCODE_UN_MINUS", 1, 0, 0 },
|
||||
{ "OPCODE_UN_COMPLEMENT", 1, 0, 0 },
|
||||
{ "OPCODE_UN_TARGETNAME", 1, 0, 0 },
|
||||
{ "OPCODE_BOOL_UN_NOT", 1, 0, 0 },
|
||||
{ "OPCODE_VAR_UN_NOT", 1, 0, 0 },
|
||||
{ "OPCODE_UN_CAST_BOOLEAN", 1, 0, 0 },
|
||||
{ "OPCODE_UN_INC", 1, 0, 0 },
|
||||
{ "OPCODE_UN_DEC", 1, 0, 0 },
|
||||
{ "OPCODE_UN_SIZE", 1, 0, 0 },
|
||||
|
||||
{ "OPCODE_SWITCH", 5, -1, 0 },
|
||||
|
||||
{ "OPCODE_FUNC", 11, -128, 1 },
|
||||
|
||||
{ "OPCODE_NOP", 1, 0, 0 },
|
||||
|
||||
{ "OPCODE_BIN_SHIFT_LEFT", 1, -1, 0 },
|
||||
{ "OPCODE_BIN_SHIFT_RIGHT", 1, -1, 0 },
|
||||
|
||||
{ "OPCODE_END", 1, -1, 0 },
|
||||
{ "OPCODE_RETURN", 1, -1, 0 },
|
||||
};
|
||||
|
||||
static const char *aszVarGroupNames[] =
|
||||
{
|
||||
"game",
|
||||
"level",
|
||||
"local",
|
||||
"parm",
|
||||
"self"
|
||||
};
|
||||
|
||||
/*
|
||||
====================
|
||||
VarGroupName
|
||||
====================
|
||||
*/
|
||||
const char *VarGroupName( int iVarGroup )
|
||||
{
|
||||
return aszVarGroupNames[ iVarGroup ];
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
OpcodeName
|
||||
====================
|
||||
*/
|
||||
const char *OpcodeName( int opcode )
|
||||
{
|
||||
return OpcodeInfo[ opcode ].opcodename;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
OpcodeLength
|
||||
====================
|
||||
*/
|
||||
int OpcodeLength( int opcode )
|
||||
{
|
||||
return OpcodeInfo[ opcode ].opcodelength;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
OpcodeVarStackOffset
|
||||
====================
|
||||
*/
|
||||
int OpcodeVarStackOffset( int opcode )
|
||||
{
|
||||
return OpcodeInfo[ opcode ].opcodestackoffset;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
SetOpcodeVarStackOffset
|
||||
====================
|
||||
*/
|
||||
void SetOpcodeVarStackOffset( int opcode, int iVarStackOffset )
|
||||
{
|
||||
OpcodeInfo[ opcode ].opcodestackoffset = iVarStackOffset;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
IsExternalOpcode
|
||||
====================
|
||||
*/
|
||||
bool IsExternalOpcode( int opcode )
|
||||
{
|
||||
return OpcodeInfo[ opcode ].isexternal ? true : false;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue