255 lines
10 KiB
C
255 lines
10 KiB
C
#ifndef __MGS_LINKVAR_H__
|
|
#define __MGS_LINKVAR_H__
|
|
|
|
// This file was probably auto-generated in the original source.
|
|
// (The memleak shows exactly two tabs between each identifier and definition,
|
|
// and no tabstop setting will align them properly).
|
|
|
|
extern short linkvarbuf[0x60];
|
|
|
|
//------------------------------------------------------------------------------
|
|
// 0x00 General
|
|
#define GM_UnkFlag00 linkvarbuf[ 0 ]
|
|
#define GM_DifficultyFlag linkvarbuf[ 1 ] // -1,0,1,2,3
|
|
#define GM_OptionFlag linkvarbuf[ 2 ]
|
|
#define GM_BonusItemsFlag linkvarbuf[ 3 ] // 0 = none, 1 = bandana, 2 = stealth, > 2 = tuxedo
|
|
#define GM_CurrentDiskFlag linkvarbuf[ 4 ] // 1 or 2
|
|
#define GM_LastResultFlag linkvarbuf[ 5 ] // Store result of last op, so it can be used in gcl scripting
|
|
#define GM_CurrentStageFlag linkvarbuf[ 6 ] // hash
|
|
#define GM_CurrentMapFlag linkvarbuf[ 7 ] // hash
|
|
|
|
//------------------------------------------------------------------------------
|
|
// 0x10 Snake
|
|
#define GM_SnakePosX linkvarbuf[ 8 ]
|
|
#define GM_SnakePosY linkvarbuf[ 9 ]
|
|
#define GM_SnakePosZ linkvarbuf[ 10 ]
|
|
#define GM_SnakeCurrentHealth linkvarbuf[ 11 ]
|
|
#define GM_SnakeMaxHealth linkvarbuf[ 12 ] // from 256 to around 1400 near end game
|
|
#define GM_StatusEvent linkvarbuf[ 13 ] // bit 1 (0x1) = common cold, bit 3 (0x4) = diazepam active, bit 4 (0x8) = blown up
|
|
#define GM_CurrentWeaponId linkvarbuf[ 14 ] // -1 = no equipped weapon
|
|
#define GM_CurrentItemId linkvarbuf[ 15 ] // -1 = no equipped item
|
|
#define GM_PlayerStance linkvarbuf[ 16 ] // 0 = standing, 1 = crouching, 2 = lying down
|
|
|
|
//------------------------------------------------------------------------------
|
|
#define GM_Weapons (&linkvarbuf[ 17 ])
|
|
|
|
// 0x22 Weapons ammo (Use GM_Weapons[] instead)
|
|
// value -1 = not in inventory
|
|
#define GM_SocomFlag linkvarbuf[ 17 ]
|
|
#define GM_FamasFlag linkvarbuf[ 18 ]
|
|
#define GM_GrenadeFlag linkvarbuf[ 19 ]
|
|
#define GM_RemoteMissileFlag linkvarbuf[ 20 ]
|
|
#define GM_StingerFlag linkvarbuf[ 21 ]
|
|
#define GM_LandMineFlag linkvarbuf[ 22 ]
|
|
#define GM_BombFlag linkvarbuf[ 23 ]
|
|
#define GM_StunGrenadeFlag linkvarbuf[ 24 ]
|
|
#define GM_ChaffGrenadeFlag linkvarbuf[ 25 ]
|
|
#define GM_RifleFlag linkvarbuf[ 26 ]
|
|
|
|
//-----------------------------------------------
|
|
#define GM_WeaponsMax (&linkvarbuf[ 27 ])
|
|
|
|
// 0x36 Weapons max ammo (Use GM_WeaponsMax[] instead)
|
|
#define GM_SocomMax linkvarbuf[ 27 ]
|
|
#define GM_FamasMax linkvarbuf[ 28 ]
|
|
#define GM_GrenadeMax linkvarbuf[ 29 ]
|
|
#define GM_RemoteMissileMax linkvarbuf[ 30 ]
|
|
#define GM_StingerMax linkvarbuf[ 31 ]
|
|
#define GM_LandMineMax linkvarbuf[ 32 ]
|
|
#define GM_BombMax linkvarbuf[ 33 ]
|
|
#define GM_StunGrenadeMax linkvarbuf[ 34 ]
|
|
#define GM_ChaffGrenadeMax linkvarbuf[ 35 ] // $w:チャフグレネード弾数
|
|
#define GM_RifleMax linkvarbuf[ 36 ] // $w:ライフル弾数
|
|
|
|
//------------------------------------------------------------------------------
|
|
#define GM_Items (&linkvarbuf[ 37 ])
|
|
|
|
// 0x4a Items (Use GM_Items[] instead)
|
|
// value -1 = not in inventory
|
|
#define GM_TabakoFlag linkvarbuf[ 37 ] // $w:たばこ
|
|
#define GM_ScopeFlag linkvarbuf[ 38 ] // $w:双眼鏡
|
|
#define GM_CardboardBoxAFlag linkvarbuf[ 39 ] // $w:段ボールヘリポート
|
|
#define GM_CardboardBoxBFlag linkvarbuf[ 40 ] // $w:段ボール核保存庫
|
|
#define GM_CardboardBoxCFlag linkvarbuf[ 41 ] // $w:段ボール大雪原
|
|
#define GM_NightVisionFlag linkvarbuf[ 42 ] // $w:暗視ゴーグル
|
|
#define GM_ThermalVisionFlag linkvarbuf[ 43 ] // $w:赤外線ゴーグル
|
|
#define GM_GasMaskFlag linkvarbuf[ 44 ] // $w:ガスマスク
|
|
#define GM_BodyArmorFlag linkvarbuf[ 45 ] // $w:ボディアーマー
|
|
#define GM_KetchupFlag linkvarbuf[ 46 ] // $w:ケチャップ
|
|
#define GM_StealthFlag linkvarbuf[ 47 ] // $w:光学迷彩
|
|
#define GM_BandanaFlag linkvarbuf[ 48 ]
|
|
#define GM_CameraFlag linkvarbuf[ 49 ]
|
|
#define GM_RationFlag linkvarbuf[ 50 ] // > 0 = ration ammount
|
|
#define GM_MedicineFlag linkvarbuf[ 51 ] // > 0 = medicine ammount
|
|
#define GM_TranquilizerFlag linkvarbuf[ 52 ] // > 0 = tranquilizer (diazepam) ammount
|
|
#define GM_ShapeKeyFlag linkvarbuf[ 53 ]
|
|
#define GM_CardFlag linkvarbuf[ 54 ] // > 0 = card level
|
|
#define GM_TimerBombFlag linkvarbuf[ 55 ] // > 0 = timer
|
|
#define GM_MineDetectorFlag linkvarbuf[ 56 ]
|
|
#define GM_MODiskFlag linkvarbuf[ 57 ]
|
|
#define GM_RopeFlag linkvarbuf[ 58 ]
|
|
#define GM_HandkerchiefFlag linkvarbuf[ 59 ]
|
|
#define GM_SilencerFlag linkvarbuf[ 60 ]
|
|
|
|
//-----------------------------------------------
|
|
#define GM_ItemsMax (GM_Items + 11)
|
|
|
|
// 0x7a Items max capacity (use GM_ItemsMax[] instead)
|
|
#define GM_RationMax linkvarbuf[ 61 ]
|
|
#define GM_ColdMedicineMax linkvarbuf[ 62 ]
|
|
#define GM_TranquilizerMax linkvarbuf[ 63 ]
|
|
|
|
//------------------------------------------------------------------------------
|
|
// 0x80 PAL Key
|
|
#define GM_EnvironTemp linkvarbuf[ 64 ] // default to 10 or -10 (-30 in warehouse, 30 in blast furnace)
|
|
#define GM_ShapeKeyState linkvarbuf[ 65 ] // 0-2-1 icon index
|
|
#define GM_ShapeKeyTemp linkvarbuf[ 66 ] // -7200 in warehouse, 7200 in blast furnace
|
|
#define GM_ShapeKeyTempMax linkvarbuf[ 67 ] // 9000
|
|
#define GM_ShapeKeyTempMin linkvarbuf[ 68 ] // -9000
|
|
|
|
//------------------------------------------------------------------------------
|
|
// 0x8a Frozen items
|
|
#define GM_FrozenItemsState linkvarbuf[ 69 ]
|
|
#define GM_BodyTemp linkvarbuf[ 70 ] // 360 (36 degrees?)
|
|
#define GM_FrozenItemsTemp linkvarbuf[ 71 ]
|
|
#define GM_FrozenItemsTempMin linkvarbuf[ 72 ] // -7200
|
|
|
|
//------------------------------------------------------------------------------
|
|
#define GM_TranquilizerTimer linkvarbuf[ 73 ]
|
|
|
|
#define GM_PreviousStageFlag linkvarbuf[ 74 ] // hash
|
|
|
|
//------------------------------------------------------------------------------
|
|
// 0x96 Snake common cold
|
|
#define GM_SnakeColdTimer linkvarbuf[ 75 ]
|
|
#define GM_SnakeColdUnk98 linkvarbuf[ 76 ]
|
|
#define GM_SnakeColdUnk9A linkvarbuf[ 77 ]
|
|
|
|
//------------------------------------------------------------------------------
|
|
// 0x9c Stats
|
|
#define GM_EnemyWatchCount linkvarbuf[ 78 ] // score screen
|
|
#define GM_TotalEnemiesKilled linkvarbuf[ 79 ] // score screen
|
|
#define GM_UnkFlagA0 linkvarbuf[ 80 ]
|
|
#define GM_UnkFlagA2 linkvarbuf[ 81 ]
|
|
#define GM_UnkFlagA4 linkvarbuf[ 82 ]
|
|
#define GM_UnkFlagA6 linkvarbuf[ 83 ]
|
|
#define GM_UnkFlagA8 linkvarbuf[ 84 ]
|
|
#define GM_UnkFlagAA linkvarbuf[ 85 ]
|
|
#define GM_TotalRationsUsed linkvarbuf[ 86 ] // score screen
|
|
#define GM_TotalContinues linkvarbuf[ 87 ] // score screen
|
|
#define GM_TotalSaves linkvarbuf[ 88 ] // score screen
|
|
#define GM_GameTimeHours linkvarbuf[ 89 ]
|
|
#define GM_GameTimeSeconds linkvarbuf[ 90 ]
|
|
#define GM_TotalHours linkvarbuf[ 91 ] // score screen
|
|
#define GM_TotalSeconds linkvarbuf[ 92 ] // score screen
|
|
#define GM_LastSaveHours linkvarbuf[ 93 ]
|
|
#define GM_LastSaveSeconds linkvarbuf[ 94 ]
|
|
#define GM_UnkFlagBE linkvarbuf[ 95 ]
|
|
|
|
//------------------------------------------------------------------------------
|
|
enum // GM_DifficultyFlag
|
|
{
|
|
DIFFICULTY_VERY_EASY = -1, // added for MGS:INTEGRAL
|
|
DIFFICULTY_EASY = 0, // the Japanese version's original (only) difficulty
|
|
DIFFICULTY_NORMAL = 1,
|
|
DIFFICULTY_HARD = 2,
|
|
DIFFICULTY_EXTREME = 3,
|
|
};
|
|
|
|
enum // GM_OptionFlag
|
|
{
|
|
OPTION_BUTTON_TYPE_A = 0x0000,
|
|
OPTION_BUTTON_TYPE_B = 0x0001,
|
|
OPTION_BUTTON_TYPE_C = 0x0002,
|
|
OPTION_BUTTON_MASK = 0x0007,
|
|
OPTION_UNKNOWN_0008 = 0x0008,
|
|
OPTION_UNKNOWN_0010 = 0x0010,
|
|
OPTION_TUXEDO = 0x0020, // + Red Ninja, Sneaking Suit Meryl
|
|
OPTION_ENGLISH = 0x0100, // 0: Japanese, 1: English
|
|
OPTION_VIBRATION_OFF = 0x0400,
|
|
OPTION_RADAR_OFF = 0x0800,
|
|
OPTION_SHUKAN_REVERSE = 0x1000,
|
|
OPTION_UNKNOWN_2000 = 0x2000,
|
|
OPTION_CAPTION_OFF = 0x4000,
|
|
OPTION_SOUND_MONO = 0x8000,
|
|
};
|
|
|
|
enum // GM_StatusEvent
|
|
{
|
|
EV_CommonCold = 0x1,
|
|
EV_Tranquilizer = 0x4,
|
|
EV_BlownUp = 0x8,
|
|
};
|
|
|
|
enum // GM_PlayerStance
|
|
{
|
|
// ... negative ones too?
|
|
SNA_STANCE_STANDING = 0,
|
|
SNA_STANCE_SQUAT = 1,
|
|
SNA_STANCE_CROUCH = 2, // prone + knocked down
|
|
SNA_STANCE_UNK = 3, // first person prone?
|
|
// ... more?
|
|
};
|
|
|
|
enum // GM_Weapons[]
|
|
{
|
|
WP_None = -1,
|
|
WP_Socom = 0,
|
|
WP_Famas = 1,
|
|
WP_Grenade = 2,
|
|
WP_Nikita = 3,
|
|
WP_Stinger = 4,
|
|
WP_Claymore = 5,
|
|
WP_C4 = 6,
|
|
WP_StunGrenade = 7,
|
|
WP_ChaffGrenade = 8,
|
|
WP_Rifle = 9,
|
|
WP_Max = 10,
|
|
};
|
|
#define GM_TotalWeapons 10
|
|
|
|
enum // GM_Items[]
|
|
{
|
|
IT_None = -1, // types:
|
|
IT_Cigs = 0, // 0x8000
|
|
IT_Scope = 1, // 0x8003
|
|
IT_Box1 = 2, // 0x8001
|
|
IT_Box2 = 3, // 0x8001
|
|
IT_Box3 = 4, // 0x8001
|
|
IT_NVG = 5, // 0x8000
|
|
IT_ThermG = 6, // 0x8000
|
|
IT_GasMask = 7, // 0x8000
|
|
IT_BodyArmor = 8, // 0x8000
|
|
IT_Ketchup = 9, // 0x8000
|
|
IT_Stealth = 10, // 0x8000
|
|
IT_Bandana = 11, // 0x8000
|
|
IT_Camera = 12, // 0x8003
|
|
IT_Ration = 13, // 0x2000
|
|
IT_ColdMedicine = 14, // 0x2000
|
|
IT_Diazepam = 15, // 0x2000
|
|
IT_PalKey = 16, // 0
|
|
IT_Card = 17, // 0
|
|
IT_TimerBomb = 18, // 0
|
|
IT_MineDetector = 19, // 0
|
|
IT_Disk = 20, // 0
|
|
IT_Rope = 21, // 0
|
|
IT_Handkerchief = 22, // 0
|
|
IT_Suppressor = 23 // 0
|
|
};
|
|
#define GM_TotalItems 24
|
|
|
|
enum // GM_ItemTypes[]
|
|
{
|
|
// ...
|
|
ITEMTYPE_CONSUMABLE = 0x2000,
|
|
// ...
|
|
};
|
|
//------------------------------------------------------------------------------
|
|
|
|
#define GM_LinkVar(buf, var) (buf[((short*)&var - (short*)&linkvarbuf)])
|
|
|
|
#define GM_CurrentWeapon (GM_Weapons[ GM_CurrentWeaponId ])
|
|
#define GM_CurrentItem (GM_Items[ GM_CurrentItemId ])
|
|
|
|
#endif // __MGS_LINKVAR_H__
|