diff --git a/ld/gamefiles.ntsc-beta.inc b/ld/gamefiles.ntsc-beta.inc index c05c59800..d6f23a96a 100644 --- a/ld/gamefiles.ntsc-beta.inc +++ b/ld/gamefiles.ntsc-beta.inc @@ -139,8 +139,22 @@ build/ROMID/game/debug2.o (section); \ build/ROMID/game/debug3.o (section); \ build/ROMID/game/stubs/game_11eff0.o (section); \ - build/ROMID/game/data/ailists.o (section); \ - build/ROMID/game/data/data_020df0.o (section); \ + build/ROMID/game/gailists.o (section); \ + build/ROMID/game/modeldata/general.o (section); \ + build/ROMID/game/modeldata/basic.o (section); \ + build/ROMID/game/modeldata/chrgun.o (section); \ + build/ROMID/game/modeldata/skel0b.o (section); \ + build/ROMID/game/modeldata/player.o (section); \ + build/ROMID/game/modeldata/skel0a.o (section); \ + build/ROMID/game/modeldata/skel20.o (section); \ + build/ROMID/game/modeldata/classicgun.o (section); \ + build/ROMID/game/modeldata/casing.o (section); \ + build/ROMID/game/modeldata/skel06.o (section); \ + build/ROMID/game/modeldata/uzi.o (section); \ + build/ROMID/game/modeldata/weapon.o (section); \ + build/ROMID/game/modeldata/chr.o (section); \ + build/ROMID/game/modeldata/skedar.o (section); \ + build/ROMID/game/modeldata/robot.o (section); \ build/ROMID/game/game_11f000.o (section); \ build/ROMID/game/game_127910.o (section); \ build/ROMID/game/crc.o (section); \ diff --git a/ld/gamefiles.ntsc-final.inc b/ld/gamefiles.ntsc-final.inc index ed254c4d4..69de1b13e 100644 --- a/ld/gamefiles.ntsc-final.inc +++ b/ld/gamefiles.ntsc-final.inc @@ -138,8 +138,22 @@ build/ROMID/game/debug.o (section); \ build/ROMID/game/debug3.o (section); \ build/ROMID/game/stubs/game_11eff0.o (section); \ - build/ROMID/game/data/ailists.o (section); \ - build/ROMID/game/data/data_020df0.o (section); \ + build/ROMID/game/gailists.o (section); \ + build/ROMID/game/modeldata/general.o (section); \ + build/ROMID/game/modeldata/basic.o (section); \ + build/ROMID/game/modeldata/chrgun.o (section); \ + build/ROMID/game/modeldata/skel0b.o (section); \ + build/ROMID/game/modeldata/player.o (section); \ + build/ROMID/game/modeldata/skel0a.o (section); \ + build/ROMID/game/modeldata/skel20.o (section); \ + build/ROMID/game/modeldata/classicgun.o (section); \ + build/ROMID/game/modeldata/casing.o (section); \ + build/ROMID/game/modeldata/skel06.o (section); \ + build/ROMID/game/modeldata/uzi.o (section); \ + build/ROMID/game/modeldata/weapon.o (section); \ + build/ROMID/game/modeldata/chr.o (section); \ + build/ROMID/game/modeldata/skedar.o (section); \ + build/ROMID/game/modeldata/robot.o (section); \ build/ROMID/game/game_11f000.o (section); \ build/ROMID/game/game_127910.o (section); \ build/ROMID/game/crc.o (section); \ diff --git a/ld/gamefiles.pal-final.inc b/ld/gamefiles.pal-final.inc index ed254c4d4..69de1b13e 100644 --- a/ld/gamefiles.pal-final.inc +++ b/ld/gamefiles.pal-final.inc @@ -138,8 +138,22 @@ build/ROMID/game/debug.o (section); \ build/ROMID/game/debug3.o (section); \ build/ROMID/game/stubs/game_11eff0.o (section); \ - build/ROMID/game/data/ailists.o (section); \ - build/ROMID/game/data/data_020df0.o (section); \ + build/ROMID/game/gailists.o (section); \ + build/ROMID/game/modeldata/general.o (section); \ + build/ROMID/game/modeldata/basic.o (section); \ + build/ROMID/game/modeldata/chrgun.o (section); \ + build/ROMID/game/modeldata/skel0b.o (section); \ + build/ROMID/game/modeldata/player.o (section); \ + build/ROMID/game/modeldata/skel0a.o (section); \ + build/ROMID/game/modeldata/skel20.o (section); \ + build/ROMID/game/modeldata/classicgun.o (section); \ + build/ROMID/game/modeldata/casing.o (section); \ + build/ROMID/game/modeldata/skel06.o (section); \ + build/ROMID/game/modeldata/uzi.o (section); \ + build/ROMID/game/modeldata/weapon.o (section); \ + build/ROMID/game/modeldata/chr.o (section); \ + build/ROMID/game/modeldata/skedar.o (section); \ + build/ROMID/game/modeldata/robot.o (section); \ build/ROMID/game/game_11f000.o (section); \ build/ROMID/game/game_127910.o (section); \ build/ROMID/game/crc.o (section); \ diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 6f3bb9cc6..101ed366b 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -4821,13 +4821,13 @@ glabel var7f1a879c /* f021544: afa5015c */ sw $a1,0x15c($sp) /* f021548: e7a40154 */ swc1 $f4,0x154($sp) /* f02154c: 8cce0020 */ lw $t6,0x20($a2) -/* f021550: 3c188008 */ lui $t8,%hi(g_ModelTypeRobot) +/* f021550: 3c188008 */ lui $t8,%hi(g_SkelRobot) /* f021554: 00803825 */ or $a3,$a0,$zero /* f021558: 8dcf0008 */ lw $t7,0x8($t6) -/* f02155c: 2718cefc */ addiu $t8,$t8,%lo(g_ModelTypeRobot) -/* f021560: 3c198008 */ lui $t9,%hi(g_ModelTypeChr) +/* f02155c: 2718cefc */ addiu $t8,$t8,%lo(g_SkelRobot) +/* f021560: 3c198008 */ lui $t9,%hi(g_SkelChr) /* f021564: 8de20004 */ lw $v0,0x4($t7) -/* f021568: 2739ce40 */ addiu $t9,$t9,%lo(g_ModelTypeChr) +/* f021568: 2739ce40 */ addiu $t9,$t9,%lo(g_SkelChr) /* f02156c: 24040007 */ addiu $a0,$zero,0x7 /* f021570: 1702006d */ bne $t8,$v0,.L0f021728 /* f021574: 00000000 */ nop @@ -4948,14 +4948,14 @@ glabel var7f1a879c /* f021724: 8fbf0014 */ lw $ra,0x14($sp) .L0f021728: /* f021728: 17220006 */ bne $t9,$v0,.L0f021744 -/* f02172c: 3c0b8008 */ lui $t3,%hi(g_ModelTypeSkedar) +/* f02172c: 3c0b8008 */ lui $t3,%hi(g_SkelSkedar) /* f021730: 24050002 */ addiu $a1,$zero,0x2 /* f021734: 24080003 */ addiu $t0,$zero,0x3 /* f021738: 240a0001 */ addiu $t2,$zero,0x1 /* f02173c: 1000000c */ b .L0f021770 /* f021740: 00004825 */ or $t1,$zero,$zero .L0f021744: -/* f021744: 256bce98 */ addiu $t3,$t3,%lo(g_ModelTypeSkedar) +/* f021744: 256bce98 */ addiu $t3,$t3,%lo(g_SkelSkedar) /* f021748: 15620006 */ bne $t3,$v0,.L0f021764 /* f02174c: 2405ffff */ addiu $a1,$zero,-1 /* f021750: 24050003 */ addiu $a1,$zero,0x3 @@ -5615,13 +5615,13 @@ glabel var7f1a879c /* f021544: afa5015c */ sw $a1,0x15c($sp) /* f021548: e7a40154 */ swc1 $f4,0x154($sp) /* f02154c: 8cce0020 */ lw $t6,0x20($a2) -/* f021550: 3c188008 */ lui $t8,%hi(g_ModelTypeRobot) +/* f021550: 3c188008 */ lui $t8,%hi(g_SkelRobot) /* f021554: 00803825 */ or $a3,$a0,$zero /* f021558: 8dcf0008 */ lw $t7,0x8($t6) -/* f02155c: 2718cefc */ addiu $t8,$t8,%lo(g_ModelTypeRobot) -/* f021560: 3c198008 */ lui $t9,%hi(g_ModelTypeChr) +/* f02155c: 2718cefc */ addiu $t8,$t8,%lo(g_SkelRobot) +/* f021560: 3c198008 */ lui $t9,%hi(g_SkelChr) /* f021564: 8de20004 */ lw $v0,0x4($t7) -/* f021568: 2739ce40 */ addiu $t9,$t9,%lo(g_ModelTypeChr) +/* f021568: 2739ce40 */ addiu $t9,$t9,%lo(g_SkelChr) /* f02156c: 24040007 */ addiu $a0,$zero,0x7 /* f021570: 1702006d */ bne $t8,$v0,.L0f021728 /* f021574: 00000000 */ nop @@ -5742,14 +5742,14 @@ glabel var7f1a879c /* f021724: 8fbf0014 */ lw $ra,0x14($sp) .L0f021728: /* f021728: 17220006 */ bne $t9,$v0,.L0f021744 -/* f02172c: 3c0b8008 */ lui $t3,%hi(g_ModelTypeSkedar) +/* f02172c: 3c0b8008 */ lui $t3,%hi(g_SkelSkedar) /* f021730: 24050002 */ addiu $a1,$zero,0x2 /* f021734: 24080003 */ addiu $t0,$zero,0x3 /* f021738: 240a0001 */ addiu $t2,$zero,0x1 /* f02173c: 1000000c */ b .L0f021770 /* f021740: 00004825 */ or $t1,$zero,$zero .L0f021744: -/* f021744: 256bce98 */ addiu $t3,$t3,%lo(g_ModelTypeSkedar) +/* f021744: 256bce98 */ addiu $t3,$t3,%lo(g_SkelSkedar) /* f021748: 15620006 */ bne $t3,$v0,.L0f021764 /* f02174c: 2405ffff */ addiu $a1,$zero,-1 /* f021750: 24050003 */ addiu $a1,$zero,0x3 @@ -7505,7 +7505,7 @@ s32 chrTick(struct prop *prop) } } - if (model->filedata->type == &g_ModelTypeChr) { + if (model->filedata->skel == &g_SkelChr) { struct modelnode *headspotnode = modelGetPart(model->filedata, MODELPART_CHR_HEADSPOT); if (headspotnode && headspotnode->type == MODELNODETYPE_HEADSPOT) { @@ -7579,7 +7579,7 @@ void chrSetHudpieceVisible(struct chrdata *chr, bool visible) { struct modelfiledata *modelfiledata = chr->model->filedata; - if (modelfiledata->type == &g_ModelTypeChr) { + if (modelfiledata->skel == &g_SkelChr) { struct modelnode *headspotnode = modelGetPart(modelfiledata, MODELPART_CHR_HEADSPOT); if (headspotnode && headspotnode->type == MODELNODETYPE_HEADSPOT) { @@ -7663,7 +7663,7 @@ bool chr0f024738(struct chrdata *chr) struct doorobj *door = prop->door; struct coord pos; - if (obj->model->filedata->type != &g_ModelTypeWindowedDoor + if (obj->model->filedata->skel != &g_SkelWindowedDoor && door->doortype != DOORTYPE_EYE && door->doortype != DOORTYPE_IRIS && door->doortype != DOORTYPE_FALLAWAY @@ -8394,7 +8394,7 @@ Gfx *chrRender(struct prop *prop, Gfx *gdl, bool withalpha) } // Set Skedar eyes open or closed - if (model->filedata->type == &g_ModelTypeSkedar) { + if (model->filedata->skel == &g_SkelSkedar) { struct modelnode *node1 = modelGetPart(model->filedata, MODELPART_SKEDAR_EYESOPEN); struct modelnode *node2 = modelGetPart(model->filedata, MODELPART_SKEDAR_EYESCLOSED); @@ -8412,7 +8412,7 @@ Gfx *chrRender(struct prop *prop, Gfx *gdl, bool withalpha) || chr->headnum == HEAD_ELVIS || chr->headnum == HEAD_MAIAN_S || chr->headnum == HEAD_ELVIS_GOGS) { - if (model->filedata->type == &g_ModelTypeChr) { + if (model->filedata->skel == &g_SkelChr) { struct modelnode *headspotnode = modelGetPart(model->filedata, MODELPART_CHR_HEADSPOT); if (headspotnode && headspotnode->type == MODELNODETYPE_HEADSPOT) { @@ -10519,14 +10519,14 @@ bool chrCalculateAutoAim(struct prop *prop, struct coord *arg1, f32 *arg2, f32 * Mtxf *mtx1; Mtxf *mtx2; - if (model->filedata->type == &g_ModelTypeChr) { + if (model->filedata->skel == &g_SkelChr) { mtx1 = &model->matrices[0]; mtx2 = &model->matrices[1]; arg1->z = mtx2->m[3][2] + (mtx1->m[3][2] - mtx2->m[3][2]) * 0.5f; - } else if (model->filedata->type == &g_ModelTypeSkedar) { + } else if (model->filedata->skel == &g_SkelSkedar) { mtx2 = &model->matrices[0]; arg1->z = mtx2->m[3][2]; - } else if (model->filedata->type == &g_ModelTypeDrCaroll) { + } else if (model->filedata->skel == &g_SkelDrCaroll) { mtx2 = &model->matrices[0]; arg1->z = mtx2->m[3][2]; } else { @@ -10534,13 +10534,13 @@ bool chrCalculateAutoAim(struct prop *prop, struct coord *arg1, f32 *arg2, f32 * } if (arg1->z < 0) { - if (model->filedata->type == &g_ModelTypeChr) { + if (model->filedata->skel == &g_SkelChr) { arg1->x = mtx2->m[3][0] + (mtx1->m[3][0] - mtx2->m[3][0]) * 0.5f; arg1->y = mtx2->m[3][1] + (mtx1->m[3][1] - mtx2->m[3][1]) * 0.5f; - } else if (model->filedata->type == &g_ModelTypeSkedar) { + } else if (model->filedata->skel == &g_SkelSkedar) { arg1->x = mtx2->m[3][0]; arg1->y = mtx2->m[3][1]; - } else if (model->filedata->type == &g_ModelTypeDrCaroll) { + } else if (model->filedata->skel == &g_SkelDrCaroll) { arg1->x = mtx2->m[3][0]; arg1->y = mtx2->m[3][1]; } else { diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index f3a834fb3..dcc923500 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -16412,8 +16412,8 @@ glabel var7f1a91dc /* f042ab0: 0fc10a76 */ jal func0f0429d8 /* f042ab4: 02402025 */ or $a0,$s2,$zero /* f042ab8: 8e4f0020 */ lw $t7,0x20($s2) -/* f042abc: 3c0e8008 */ lui $t6,%hi(g_ModelTypeRobot) -/* f042ac0: 25cecefc */ addiu $t6,$t6,%lo(g_ModelTypeRobot) +/* f042abc: 3c0e8008 */ lui $t6,%hi(g_SkelRobot) +/* f042ac0: 25cecefc */ addiu $t6,$t6,%lo(g_SkelRobot) /* f042ac4: 8df80008 */ lw $t8,0x8($t7) /* f042ac8: 2655002c */ addiu $s5,$s2,0x2c /* f042acc: 02a0b825 */ or $s7,$s5,$zero @@ -16796,7 +16796,7 @@ glabel var7f1a91dc // // func0f0429d8(chr, 0.085f, invtheta); // -// if (chr->model->filedata->type != &g_ModelTypeRobot) { +// if (chr->model->filedata->type != &g_SkelRobot) { // act->finished = true; // return; // } diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c deleted file mode 100644 index 0fd7b827e..000000000 --- a/src/game/data/data_020df0.c +++ /dev/null @@ -1,3690 +0,0 @@ -#include -#include "game/chr/chraicommands.h" -#include "game/game_0f09f0.h" -#include "game/mainmenu.h" -#include "game/cheats.h" -#include "game/filemgr.h" -#include "game/endscreen.h" -#include "game/camdraw.h" -#include "game/timing.h" -#include "game/game_173a00.h" -#include "game/utils.h" -#include "game/mplayer/ingame.h" -#include "game/mplayer/setup.h" -#include "game/mplayer/scenarios.h" -#include "game/training/training.h" -#include "bss.h" -#include "stagesetup.h" -#include "data.h" -#include "types.h" - -// 20df0 -u16 var8007add0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, -}; - -// 20e10 -struct modeltype g_ModelTypeDropship = { - MODELTYPE_DROPSHIP, 16, var8007add0, -}; - -// 20e18 -u16 var8007adf8[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, -}; - -// 20e3c -struct modeltype g_ModelTypeSkShuttle = { - MODELTYPE_SKSHUTTLE, 18, var8007adf8, -}; - -// 20e44 -u16 var8007ae24[] = { - 0x0000, -}; - -// 20e48 -struct modeltype g_ModelTypeLift = { - MODELTYPE_LIFT, 1, var8007ae24, -}; - -// 20e50 -u16 var8007ae30[] = { - 0x0000, - 0x0101, -}; - -// 20e54 -struct modeltype g_ModelTypeCctv = { - MODELTYPE_CCTV, 2, var8007ae30, -}; - -// 20e5c -u16 var8007ae3c[] = { - 0x0000, -}; - -// 20e60 -struct modeltype g_ModelTypeTerminal = { - MODELTYPE_TERMINAL, 1, var8007ae3c, -}; - -// 20e68 -u16 var8007ae48[] = { - 0x0000, -}; - -// 20e6c -struct modeltype g_ModelTypeCiHub = { - MODELTYPE_CIHUB, 1, var8007ae48, -}; - -// 20e74 -u16 var8007ae54[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, -}; - -// 20e80 -struct modeltype g_ModelType19 = { - MODELTYPE_19, 5, var8007ae54, -}; - -// 20e88 -u16 var8007ae68[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, -}; - -// 20e94 -struct modeltype g_ModelTypeAutogun = { - MODELTYPE_AUTOGUN, 6, var8007ae68, -}; - -// 20e9c -u16 var8007ae7c[] = { - 0x0000, - 0x0101, - 0x0202, -}; - -// 20ea4 -struct modeltype g_ModelType11 = { - MODELTYPE_11, 3, var8007ae7c, -}; - -// 20eac -u16 var8007ae8c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, -}; - -// 20ec8 -struct modeltype g_ModelType13 = { - MODELTYPE_13, 13, var8007ae8c, -}; - -// 20ed0 -u16 var8007aeb0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, -}; - -// 20edc -struct modeltype g_ModelType18 = { - MODELTYPE_18, 5, var8007aeb0, -}; - -// 20ee4 -u16 var8007aec4[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, -}; - -// 20eec -struct modeltype g_ModelType12 = { - MODELTYPE_12, 4, var8007aec4, -}; - -// 20ef4 -u16 var8007aed4[] = { - 0x0000, -}; - -// 20ef8 -struct modeltype g_ModelTypeWindowedDoor = { - MODELTYPE_WINDOWEDDOOR, 1, var8007aed4, -}; - -// 20f00 -u16 var8007aee0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, -}; - -// 20f0c -struct modeltype g_ModelType17 = { - MODELTYPE_17, 5, var8007aee0, -}; - -// 20f14 -u16 var8007aef4[] = { - 0x0000, -}; - -// 20f18 -struct modeltype g_ModelType0C = { - MODELTYPE_0C, 1, var8007aef4, -}; - -// 20f20 -u16 var8007af00[] = { - 0x0000, -}; - -// 20f24 -struct modeltype g_ModelTypeLogo = { - MODELTYPE_LOGO, 1, var8007af00, -}; - -// 20f2c -u16 var8007af0c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, -}; - -// 20f50 -struct modeltype g_ModelTypePdLogo = { - MODELTYPE_PDLOGO, 17, var8007af0c, -}; - -// 20f58 -u16 var8007af38[] = { - 0x0000, -}; - -// 20f5c -struct modeltype g_ModelTypeHoverbike = { - MODELTYPE_HOVERBIKE, 1, var8007af38, -}; - -// 20f64 -u16 var8007af44[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, -}; - -// 20f74 -struct modeltype g_ModelTypeJumpship = { - MODELTYPE_JUMPSHIP, 8, var8007af44, -}; - -// 20f7c -u16 var8007af5c[] = { - 0x0000, - 0x0101, - 0x0202, -}; - -// 20f84 -struct modeltype g_ModelTypeChopper = { - MODELTYPE_CHOPPER, 3, var8007af5c, -}; - -// 20f8c -u16 var8007af6c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, -}; - -// 20fb8 -struct modeltype g_ModelTypeRope = { - MODELTYPE_ROPE, 21, var8007af6c, -}; - -// 20fc0 -u16 var8007afa0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, -}; - -// 20fd8 -struct modeltype g_ModelTypeBanner = { - MODELTYPE_BANNER, 11, var8007afa0, -}; - -// 20fe0 -u16 var8007afc0[] = { - 0x0000, - 0x0101, - 0x0202, -}; - -// 20fe8 -struct modeltype g_ModelTypeMaianUfo = { - MODELTYPE_MAIANUFO, 3, var8007afc0, -}; - -// 20ff0 -u16 var8007afd0[] = { - 0x0000, - 0x0101, - 0x0202, -}; - -// 20ff8 -struct modeltype g_ModelTypeCableCar = { - MODELTYPE_CABLECAR, 3, var8007afd0, -}; - -// 21000 -u16 var8007afe0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, -}; - -// 2100c -struct modeltype g_ModelTypeSubmarine = { - MODELTYPE_SUBMARINE, 5, var8007afe0, -}; - -// 21014 -u16 var8007aff4[] = { - 0x0000, -}; - -// 21018 -struct modeltype g_ModelTypeTarget = { - MODELTYPE_TARGET, 1, var8007aff4, -}; - -// 21020 -u16 var8007b000[] = { - 0x0000, -}; - -// 21024 -struct modeltype g_ModelTypeRareLogo = { - MODELTYPE_RARELOGO, 1, var8007b000, -}; - -// 2102c -u16 var8007b00c[] = { - 0x0000, - 0x0101, - 0x0202, -}; - -// 21034 -struct modeltype g_ModelTypeWireFence = { - MODELTYPE_WIREFENCE, 3, var8007b00c, -}; - -// 2103c -u16 var8007b01c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, -}; - -// 21084 -struct modeltype g_ModelTypeBB = { - MODELTYPE_BB, 35, var8007b01c, -}; - -// 2108c -struct modelstate g_ModelStates[441] = { - // file scale - /*0x0000*/ { NULL, FILE_PROOFGUN, 0x0199 }, - /*0x0001*/ { NULL, FILE_PGROUNDGUN, 0x0199 }, - /*0x0002*/ { NULL, FILE_PTVSCREEN, 0x0199 }, - /*0x0003*/ { NULL, FILE_PBORG_CRATE, 0x0199 }, - /*0x0004*/ { NULL, FILE_PWINDOW, 0x0199 }, - /*0x0005*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x0006*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x0007*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x0008*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x0009*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x000a*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x000b*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x000c*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x000d*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x000e*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x000f*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, - /*0x0010*/ { NULL, FILE_PCRYPTDOOR1B, 0x1000 }, - /*0x0011*/ { NULL, FILE_PCHRBRIEFCASE, 0x0199 }, - /*0x0012*/ { NULL, FILE_PCHRBUG, 0x0199 }, - /*0x0013*/ { NULL, FILE_PCHRDATATHIEF, 0x0199 }, - /*0x0014*/ { NULL, FILE_PNINTENDOLOGO, 0x0199 }, - /*0x0015*/ { NULL, FILE_PDOOR_ROLLERTRAIN, 0x1000 }, - /*0x0016*/ { NULL, FILE_PFLAG, 0x0199 }, - /*0x0017*/ { NULL, FILE_PMODEMBOX, 0x0199 }, - /*0x0018*/ { NULL, FILE_PDOORCONSOLE, 0x0199 }, - /*0x0019*/ { NULL, FILE_PA51_HORIZ_DOOR_TOP, 0x1000 }, - /*0x001a*/ { NULL, FILE_PA51_HORIZ_DOOR_BOT, 0x1000 }, - /*0x001b*/ { NULL, FILE_PA51_VERT_DOOR_LEFT, 0x1000 }, - /*0x001c*/ { NULL, FILE_PA51_VERT_DOOR_RIGHT, 0x1000 }, - /*0x001d*/ { NULL, FILE_PA51_VERT_DOOR_ST, 0x1000 }, - /*0x001e*/ { NULL, FILE_PA51_HORIZ_DOOR_GL, 0x1000 }, - /*0x001f*/ { NULL, FILE_PA51_HORIZ_DOOR_SECRET, 0x1000 }, - /*0x0020*/ { NULL, FILE_PA51_CRATE1, 0x1000 }, - /*0x0021*/ { NULL, FILE_PA51_CRATE2, 0x1000 }, - /*0x0022*/ { NULL, FILE_PA51_CRATE3, 0x1000 }, - /*0x0023*/ { NULL, FILE_PA51_EXP1, 0x0199 }, - /*0x0024*/ { NULL, FILE_PA51_UNEXP1, 0x1000 }, - /*0x0025*/ { NULL, FILE_PA51_EXP2, 0x0199 }, - /*0x0026*/ { NULL, FILE_PA51_UNEXP2, 0x1000 }, - /*0x0027*/ { NULL, FILE_PA51_UNEXP3, 0x0199 }, - /*0x0028*/ { NULL, FILE_PAIVILLADOOR1, 0x1000 }, - /*0x0029*/ { NULL, FILE_PAIVILLADOOR2A, 0x1000 }, - /*0x002a*/ { NULL, FILE_PAIVILLADOOR4, 0x1000 }, - /*0x002b*/ { NULL, FILE_PA51_LIFT_HANGAR, 0x1000 }, - /*0x002c*/ { NULL, FILE_PA51_LIFT_CONTROL, 0x1000 }, - /*0x002d*/ { NULL, FILE_PA51_LIFT_STORE, 0x1000 }, - /*0x002e*/ { NULL, FILE_PA51_LIFT_THINWALL, 0x1000 }, - /*0x002f*/ { NULL, FILE_PAIVILLABOT1, 0x1000 }, - /*0x0030*/ { NULL, FILE_PAIVILLABOT2, 0x1000 }, - /*0x0031*/ { NULL, FILE_PAIVILLABOT3, 0x1000 }, - /*0x0032*/ { NULL, FILE_PAIVILLAWINDMILL, 0x1000 }, - /*0x0033*/ { NULL, FILE_PHOVERBED, 0x0199 }, - /*0x0034*/ { NULL, FILE_PMARKER, 0x1000 }, - /*0x0035*/ { NULL, FILE_PALDOOR_R, 0x1000 }, - /*0x0036*/ { NULL, FILE_PALDOOR_L, 0x1000 }, - /*0x0037*/ { NULL, FILE_PDD_LIFTR, 0x1000 }, - /*0x0038*/ { NULL, FILE_PDD_FANROOF, 0x1000 }, - /*0x0039*/ { NULL, FILE_PDD_FANWALL, 0x1000 }, - /*0x003a*/ { NULL, FILE_PHOVBIKE, 0x0199 }, - /*0x003b*/ { NULL, FILE_PDD_OFFICEDOOR, 0x1000 }, - /*0x003c*/ { NULL, FILE_PDD_PLANTRUBBER, 0x1000 }, - /*0x003d*/ { NULL, FILE_PDD_PLANTSPIKE, 0x1000 }, - /*0x003e*/ { NULL, FILE_PDD_PLANTSPIDER, 0x1000 }, - /*0x003f*/ { NULL, FILE_PDD_WINDOW, 0x1000 }, - /*0x0040*/ { NULL, FILE_PDD_REDSOFA, 0x1000 }, - /*0x0041*/ { NULL, FILE_PDD_REDARM, 0x1000 }, - /*0x0042*/ { NULL, FILE_PDD_SERVICEDOOR, 0x1000 }, - /*0x0043*/ { NULL, FILE_PDD_WINDDOOR, 0x1000 }, - /*0x0044*/ { NULL, FILE_PDD_LIFTDOOR, 0x1000 }, - /*0x0045*/ { NULL, FILE_PDD_VERTBLIND, 0x1000 }, - /*0x0046*/ { NULL, FILE_PDD_DESK, 0x1000 }, - /*0x0047*/ { NULL, FILE_PDD_CHAIR, 0x1000 }, - /*0x0048*/ { NULL, FILE_PNLOGO, 0x0199 }, - /*0x0049*/ { NULL, FILE_PNLOGO2, 0x0199 }, - /*0x004a*/ { NULL, FILE_PNLOGO3, 0x0199 }, - /*0x004b*/ { NULL, FILE_PPERFECTDARK, 0x0199 }, - /*0x004c*/ { NULL, FILE_PPDONE, 0x0199 }, - /*0x004d*/ { NULL, FILE_PPDTWO, 0x0199 }, - /*0x004e*/ { NULL, FILE_PPDTHREE, 0x0199 }, - /*0x004f*/ { NULL, FILE_PPDFOUR, 0x0199 }, - /*0x0050*/ { NULL, FILE_PDD_HOVCOP, 0x1000 }, - /*0x0051*/ { NULL, FILE_PDD_HOVMOTO, 0x1000 }, - /*0x0052*/ { NULL, FILE_PDD_HOVTRUCK, 0x1000 }, - /*0x0053*/ { NULL, FILE_PDD_HOVCAR, 0x1000 }, - /*0x0054*/ { NULL, FILE_PDD_HOVCAB, 0x1000 }, - /*0x0055*/ { NULL, FILE_PDD_AC_UNEXP, 0x1000 }, - /*0x0056*/ { NULL, FILE_PDD_AC_EXP, 0x1000 }, - /*0x0057*/ { NULL, FILE_PDD_ACBOT_UNEXP, 0x1000 }, - /*0x0058*/ { NULL, FILE_PDD_ACBOT_EXP, 0x1000 }, - /*0x0059*/ { NULL, FILE_PPC1, 0x1000 }, - /*0x005a*/ { NULL, FILE_PHOVERCRATE1, 0x1000 }, - /*0x005b*/ { NULL, FILE_PDROPSHIP, 0x0199 }, - /*0x005c*/ { NULL, FILE_PAL_AIRLOCK, 0x1000 }, - /*0x005d*/ { NULL, FILE_PAL_DOCKLIFT, 0x1000 }, - /*0x005e*/ { NULL, FILE_PCASE, 0x1000 }, - /*0x005f*/ { NULL, FILE_PDD_STONEDESK, 0x1000 }, - /*0x0060*/ { NULL, FILE_PMEDLABWIN1, 0x0199 }, - /*0x0061*/ { NULL, FILE_PMEDLABWIN2, 0x0199 }, - /*0x0062*/ { NULL, FILE_PA51TABLE, 0x1000 }, - /*0x0063*/ { NULL, FILE_PA51CHAIR, 0x1000 }, - /*0x0064*/ { NULL, FILE_PA51SCREEN, 0x1000 }, - /*0x0065*/ { NULL, FILE_PA51WASTEBIN, 0x1000 }, - /*0x0066*/ { NULL, FILE_PA51DESKENT, 0x0199 }, - /*0x0067*/ { NULL, FILE_PA51TROLLEY, 0x1000 }, - /*0x0068*/ { NULL, FILE_PA51DIVIDE, 0x1000 }, - /*0x0069*/ { NULL, FILE_PA51BOARD, 0x1000 }, - /*0x006a*/ { NULL, FILE_PSKCREV_EXP1, 0x1000 }, - /*0x006b*/ { NULL, FILE_PSKCREV_UNEXP1, 0x1000 }, - /*0x006c*/ { NULL, FILE_PSKTNL_EXP1, 0x1000 }, - /*0x006d*/ { NULL, FILE_PSKTNL_UNEXP1, 0x1000 }, - /*0x006e*/ { NULL, FILE_PSK_DOOR1, 0x1000 }, - /*0x006f*/ { NULL, FILE_PSK_SHIP_DOOR1, 0x1000 }, - /*0x0070*/ { NULL, FILE_PSK_SHIP_HOLO1, 0x1000 }, - /*0x0071*/ { NULL, FILE_PSK_SHIP_HOLO2, 0x1000 }, - /*0x0072*/ { NULL, FILE_PSK_SHIP_HULLDOOR1, 0x1000 }, - /*0x0073*/ { NULL, FILE_PSK_SHIP_HULLDOOR2, 0x1000 }, - /*0x0074*/ { NULL, FILE_PSK_SHIP_HULLDOOR3, 0x1000 }, - /*0x0075*/ { NULL, FILE_PSK_SHIP_HULLDOOR4, 0x1000 }, - /*0x0076*/ { NULL, FILE_PSK_FIGHTER1, 0x1000 }, - /*0x0077*/ { NULL, FILE_PSK_CRYOPOD1_TOP, 0x1000 }, - /*0x0078*/ { NULL, FILE_PSK_CRYOPOD1_BOT, 0x1000 }, - /*0x0079*/ { NULL, FILE_PSK_UNDER_GENERATOR, 0x1000 }, - /*0x007a*/ { NULL, FILE_PSK_UNDER_TRANS, 0x1000 }, - /*0x007b*/ { NULL, FILE_PSK_HANGARDOOR_TOP, 0x1000 }, - /*0x007c*/ { NULL, FILE_PSK_HANGARDOOR_BOT, 0x1000 }, - /*0x007d*/ { NULL, FILE_PDOOR2_G5, 0x1000 }, - /*0x007e*/ { NULL, FILE_PDOOR1A_G5, 0x1000 }, - /*0x007f*/ { NULL, FILE_PDOOR1B_G5, 0x1000 }, - /*0x0080*/ { NULL, FILE_PDOOR1ATRI_G5, 0x1000 }, - /*0x0081*/ { NULL, FILE_PDOOR2A_G5, 0x1000 }, - /*0x0082*/ { NULL, FILE_PDD_DECODOOR, 0x1000 }, - /*0x0083*/ { NULL, FILE_PDD_SECRETDOOR, 0x1000 }, - /*0x0084*/ { NULL, FILE_PDD_SECRETDOOR2, 0x1000 }, - /*0x0085*/ { NULL, FILE_PDDJUMPSHIP, 0x0199 }, - /*0x0086*/ { NULL, FILE_PTAXICAB, 0x0199 }, - /*0x0087*/ { NULL, FILE_PPOLICECAR, 0x0199 }, - /*0x0088*/ { NULL, FILE_PRAVINELIFT, 0x1000 }, - /*0x0089*/ { NULL, FILE_PDD_LAB_DOOR_BS, 0x1000 }, - /*0x008a*/ { NULL, FILE_PDD_LAB_DOOR_SEC, 0x1000 }, - /*0x008b*/ { NULL, FILE_PDD_LAB_DOOR_WIND, 0x1000 }, - /*0x008c*/ { NULL, FILE_PHOOVERBOT, 0x0800 }, - /*0x008d*/ { NULL, FILE_PTESTERBOT, 0x0800 }, - /*0x008e*/ { NULL, FILE_PDD_LAB_SECTOR2BOT, 0x1000 }, - /*0x008f*/ { NULL, FILE_PDD_LAB_SECTOR2TOP, 0x1000 }, - /*0x0090*/ { NULL, FILE_PDD_LAB_CAUTIONTOP, 0x1000 }, - /*0x0091*/ { NULL, FILE_PDD_LAB_HAZARD, 0x1000 }, - /*0x0092*/ { NULL, FILE_PDD_LAB_CAUTION, 0x1000 }, - /*0x0093*/ { NULL, FILE_PDR_CAROLL_DOOR, 0x1000 }, - /*0x0094*/ { NULL, FILE_PDD_LAB_SECTOR3TOP, 0x1000 }, - /*0x0095*/ { NULL, FILE_PDD_LAB_SECTOR3, 0x1000 }, - /*0x0096*/ { NULL, FILE_PDD_LAB_SECTOR3WIND, 0x1000 }, - /*0x0097*/ { NULL, FILE_PDD_HOVERCOPTER, 0x1000 }, - /*0x0098*/ { NULL, FILE_PDD_LAB_SECTOR4TOP, 0x1000 }, - /*0x0099*/ { NULL, FILE_PDD_LAB_RESTRICTED, 0x1000 }, - /*0x009a*/ { NULL, FILE_PDOOR4A_G5, 0x1000 }, - /*0x009b*/ { NULL, FILE_PDOOR4B_G5, 0x1000 }, - /*0x009c*/ { NULL, FILE_PLASDOOR, 0x1000 }, - /*0x009d*/ { NULL, FILE_PG5SAFEDOOR, 0x1000 }, - /*0x009e*/ { NULL, FILE_PROPE, 0x0199 }, - /*0x009f*/ { NULL, FILE_PG5_MAINFRAME, 0x1000 }, - /*0x00a0*/ { NULL, FILE_PDR_CAROLL_DOOR_BASE, 0x1000 }, - /*0x00a1*/ { NULL, FILE_PDR_CAROLL_DOOR_MAIN, 0x1000 }, - /*0x00a2*/ { NULL, FILE_PDR_CAROLL_DOOR_LEFT, 0x1000 }, - /*0x00a3*/ { NULL, FILE_PDR_CAROLL_DOOR_RIGHT, 0x1000 }, - /*0x00a4*/ { NULL, FILE_PDR_CAROLL_DOOR_BMAIN, 0x1000 }, - /*0x00a5*/ { NULL, FILE_PDR_CAROLL_DOOR_BLEFT, 0x1000 }, - /*0x00a6*/ { NULL, FILE_PDR_CAROLL_DOOR_BRIGHT, 0x1000 }, - /*0x00a7*/ { NULL, FILE_PDD_BANNER, 0x0199 }, - /*0x00a8*/ { NULL, FILE_PG5_ESCDOORUP, 0x1000 }, - /*0x00a9*/ { NULL, FILE_PG5_ESCDOORUPBOOM, 0x1000 }, - /*0x00aa*/ { NULL, FILE_PG5_ESCDOORDOWN, 0x1000 }, - /*0x00ab*/ { NULL, FILE_PG5_ESCDOORDOWNBOOM, 0x1000 }, - /*0x00ac*/ { NULL, FILE_PDUMPSTER, 0x1000 }, - /*0x00ad*/ { NULL, FILE_PG5CARLIFTDOOR, 0x1000 }, - /*0x00ae*/ { NULL, FILE_PCH_SHUTTER1, 0x1000 }, - /*0x00af*/ { NULL, FILE_PCCTV_PD, 0x1000 }, - /*0x00b0*/ { NULL, FILE_PCOMHUB, 0x1000 }, - /*0x00b1*/ { NULL, FILE_PQUADPOD, 0x1000 }, - /*0x00b2*/ { NULL, FILE_PPD_CONSOLE, 0x1000 }, - /*0x00b3*/ { NULL, FILE_PDD_GRATE, 0x1000 }, - /*0x00b4*/ { NULL, FILE_PLIFT_PLATFORM, 0x1000 }, - /*0x00b5*/ { NULL, FILE_PLIGHTSWITCH, 0x1000 }, - /*0x00b6*/ { NULL, FILE_PBLASTSHIELD, 0x1000 }, - /*0x00b7*/ { NULL, FILE_PLIGHTSWITCH2, 0x0199 }, - /*0x00b8*/ { NULL, FILE_PDD_ACCESSDOORUP, 0x1000 }, - /*0x00b9*/ { NULL, FILE_PDD_ACCESSDOORDN, 0x1000 }, - /*0x00ba*/ { NULL, FILE_PLAB_CONTAINER, 0x1000 }, - /*0x00bb*/ { NULL, FILE_PLAB_CHAIR, 0x1000 }, - /*0x00bc*/ { NULL, FILE_PLAB_TABLE, 0x1000 }, - /*0x00bd*/ { NULL, FILE_PLAB_MICROSCOPE, 0x1000 }, - /*0x00be*/ { NULL, FILE_PLAB_MAINFRAME, 0x1000 }, - /*0x00bf*/ { NULL, FILE_PDD_LABDOOR, 0x1000 }, - /*0x00c0*/ { NULL, FILE_PDD_LAB_DOORTOP, 0x1000 }, - /*0x00c1*/ { NULL, FILE_PMULTI_AMMO_CRATE, 0x1000 }, - /*0x00c2*/ { NULL, FILE_PCHRCHAIN, 0x1000 }, - /*0x00c3*/ { NULL, FILE_PTDOOR, 0x1000 }, - /*0x00c4*/ { NULL, FILE_PCI_SOFA, 0x1000 }, - /*0x00c5*/ { NULL, FILE_PCI_LIFT, 0x1000 }, - /*0x00c6*/ { NULL, FILE_PCI_LIFTDOOR, 0x1000 }, - /*0x00c7*/ { NULL, FILE_PLASERCUT, 0x0199 }, - /*0x00c8*/ { NULL, FILE_PSK_SHUTTLE, 0x0199 }, - /*0x00c9*/ { NULL, FILE_PNEWVILLADOOR, 0x1000 }, - /*0x00ca*/ { NULL, FILE_PSK_PILLARLEFT, 0x1000 }, - /*0x00cb*/ { NULL, FILE_PSK_PILLARRIGHT, 0x1000 }, - /*0x00cc*/ { NULL, FILE_PSK_PLINTH_T, 0x1000 }, - /*0x00cd*/ { NULL, FILE_PSK_PLINTH_ML, 0x1000 }, - /*0x00ce*/ { NULL, FILE_PSK_PLINTH_MR, 0x1000 }, - /*0x00cf*/ { NULL, FILE_PSK_PLINTH_BL, 0x1000 }, - /*0x00d0*/ { NULL, FILE_PSK_PLINTH_BR, 0x1000 }, - /*0x00d1*/ { NULL, FILE_PSK_FL_SHAD_T, 0x1000 }, - /*0x00d2*/ { NULL, FILE_PSK_FL_SHAD_ML, 0x1000 }, - /*0x00d3*/ { NULL, FILE_PSK_FL_SHAD_MR, 0x1000 }, - /*0x00d4*/ { NULL, FILE_PSK_FL_SHAD_BL, 0x1000 }, - /*0x00d5*/ { NULL, FILE_PSK_FL_SHAD_BR, 0x1000 }, - /*0x00d6*/ { NULL, FILE_PSK_FL_NOSHAD_T, 0x1000 }, - /*0x00d7*/ { NULL, FILE_PSK_FL_NOSHAD_ML, 0x1000 }, - /*0x00d8*/ { NULL, FILE_PSK_FL_NOSHAD_MR, 0x1000 }, - /*0x00d9*/ { NULL, FILE_PSK_FL_NOSHAD_BL, 0x1000 }, - /*0x00da*/ { NULL, FILE_PSK_FL_NOSHAD_BR, 0x1000 }, - /*0x00db*/ { NULL, FILE_PSK_TEMPLECOLUMN1, 0x1000 }, - /*0x00dc*/ { NULL, FILE_PSK_TEMPLECOLUMN2, 0x1000 }, - /*0x00dd*/ { NULL, FILE_PSK_TEMPLECOLUMN3, 0x1000 }, - /*0x00de*/ { NULL, FILE_PSK_SUNSHAD1, 0x1000 }, - /*0x00df*/ { NULL, FILE_PSK_SUNSHAD2, 0x1000 }, - /*0x00e0*/ { NULL, FILE_PSK_SUNNOSHAD1, 0x1000 }, - /*0x00e1*/ { NULL, FILE_PSK_SUNNOSHAD2, 0x1000 }, - /*0x00e2*/ { NULL, FILE_PBARREL, 0x1000 }, - /*0x00e3*/ { NULL, FILE_PGLASS_FLOOR, 0x0199 }, - /*0x00e4*/ { NULL, FILE_PESCA_STEP, 0x0199 }, - /*0x00e5*/ { NULL, FILE_PMATRIX_LIFT, 0x0199 }, - /*0x00e6*/ { NULL, FILE_PRUBBLE1, 0x1000 }, - /*0x00e7*/ { NULL, FILE_PRUBBLE2, 0x1000 }, - /*0x00e8*/ { NULL, FILE_PRUBBLE3, 0x1000 }, - /*0x00e9*/ { NULL, FILE_PRUBBLE4, 0x1000 }, - /*0x00ea*/ { NULL, FILE_PCABLE_CAR, 0x0199 }, - /*0x00eb*/ { NULL, FILE_PELVIS_SAUCER, 0x0199 }, - /*0x00ec*/ { NULL, FILE_PSTEWARDESS_TROLLEY, 0x0199 }, - /*0x00ed*/ { NULL, FILE_PAIRBASE_LIFT_ENCLOSED, 0x0199 }, - /*0x00ee*/ { NULL, FILE_PAIRBASE_LIFT_ANGLE, 0x0199 }, - /*0x00ef*/ { NULL, FILE_PAIRBASE_SAFEDOOR, 0x1000 }, - /*0x00f0*/ { NULL, FILE_PAF1_PILOTCHAIR, 0x0199 }, - /*0x00f1*/ { NULL, FILE_PAF1_PASSCHAIR, 0x0199 }, - /*0x00f2*/ { NULL, FILE_PTESTOBJ, 0x0199 }, - /*0x00f3*/ { NULL, FILE_PCHRNIGHTSIGHT, 0x0c00 }, - /*0x00f4*/ { NULL, FILE_PCHRSHIELD, 0x0199 }, - /*0x00f5*/ { NULL, FILE_PCHRFALCON2, 0x0199 }, - /*0x00f6*/ { NULL, FILE_PCHRLEEGUN1, 0x0199 }, - /*0x00f7*/ { NULL, FILE_PCHRMAULER, 0x0199 }, - /*0x00f8*/ { NULL, FILE_PCHRDY357, 0x0199 }, - /*0x00f9*/ { NULL, FILE_PCHRDY357TRENT, 0x0199 }, - /*0x00fa*/ { NULL, FILE_PCHRMAIANPISTOL, 0x0199 }, - /*0x00fb*/ { NULL, FILE_PCHRFALCON2SIL, 0x0199 }, - /*0x00fc*/ { NULL, FILE_PCHRFALCON2SCOPE, 0x0199 }, - /*0x00fd*/ { NULL, FILE_PCHRCMP150, 0x0199 }, - /*0x00fe*/ { NULL, FILE_PCHRAR34, 0x0199 }, - /*0x00ff*/ { NULL, FILE_PCHRDRAGON, 0x0199 }, - /*0x0100*/ { NULL, FILE_PCHRSUPERDRAGON, 0x0199 }, - /*0x0101*/ { NULL, FILE_PCHRAVENGER, 0x0199 }, - /*0x0102*/ { NULL, FILE_PCHRCYCLONE, 0x0199 }, - /*0x0103*/ { NULL, FILE_PCHRMAIANSMG, 0x0199 }, - /*0x0104*/ { NULL, FILE_PCHRRCP120, 0x0199 }, - /*0x0105*/ { NULL, FILE_PCHRPCGUN, 0x0199 }, - /*0x0106*/ { NULL, FILE_PCHRSHOTGUN, 0x0199 }, - /*0x0107*/ { NULL, FILE_PCHRSKMINIGUN, 0x0199 }, - /*0x0108*/ { NULL, FILE_PCHRDYROCKET, 0x0199 }, - /*0x0109*/ { NULL, FILE_PCHRDEVASTATOR, 0x0199 }, - /*0x010a*/ { NULL, FILE_PCHRSKROCKET, 0x0199 }, - /*0x010b*/ { NULL, FILE_PCHRZ2020, 0x0199 }, - /*0x010c*/ { NULL, FILE_PCHRSNIPERRIFLE, 0x0199 }, - /*0x010d*/ { NULL, FILE_PCHRCROSSBOW, 0x0199 }, - /*0x010e*/ { NULL, FILE_PCHRDRUGGUN, 0x0199 }, - /*0x010f*/ { NULL, FILE_PCHRKNIFE, 0x0199 }, - /*0x0110*/ { NULL, FILE_PCHRNBOMB, 0x0199 }, - /*0x0111*/ { NULL, FILE_PCHRFLASHBANG, 0x0199 }, - /*0x0112*/ { NULL, FILE_PCHRGRENADE, 0x0199 }, - /*0x0113*/ { NULL, FILE_PCHRTIMEDMINE, 0x0199 }, - /*0x0114*/ { NULL, FILE_PCHRPROXIMITYMINE, 0x0199 }, - /*0x0115*/ { NULL, FILE_PCHRREMOTEMINE, 0x0199 }, - /*0x0116*/ { NULL, FILE_PCHRECMMINE, 0x0199 }, - /*0x0117*/ { NULL, FILE_PCHRWPPK, 0x0199 }, - /*0x0118*/ { NULL, FILE_PCHRTT33, 0x0199 }, - /*0x0119*/ { NULL, FILE_PCHRSKORPION, 0x0199 }, - /*0x011a*/ { NULL, FILE_PCHRKALASH, 0x0199 }, - /*0x011b*/ { NULL, FILE_PCHRUZI, 0x0199 }, - /*0x011c*/ { NULL, FILE_PCHRMP5K, 0x0199 }, - /*0x011d*/ { NULL, FILE_PCHRM16, 0x0199 }, - /*0x011e*/ { NULL, FILE_PCHRFNP90, 0x0199 }, - /*0x011f*/ { NULL, FILE_PCHRDYROCKETMIS, 0x0199 }, - /*0x0120*/ { NULL, FILE_PCHRSKROCKETMIS, 0x0199 }, - /*0x0121*/ { NULL, FILE_PCHRCROSSBOLT, 0x0199 }, - /*0x0122*/ { NULL, FILE_PCHRDEVGRENADE, 0x0199 }, - /*0x0123*/ { NULL, FILE_PCHRDRAGGRENADE, 0x0199 }, - /*0x0124*/ { NULL, FILE_PA51_TURRET, 0x0199 }, - /*0x0125*/ { NULL, FILE_PPELAGICDOOR, 0x1000 }, - /*0x0126*/ { NULL, FILE_PAUTOSURGEON, 0x0199 }, - /*0x0127*/ { NULL, FILE_PLIMO, 0x0199 }, - /*0x0128*/ { NULL, FILE_PA51INTERCEPTOR, 0x0199 }, - /*0x0129*/ { NULL, FILE_PA51DISH, 0x0199 }, - /*0x012a*/ { NULL, FILE_PA51RADARCONSOLE, 0x0199 }, - /*0x012b*/ { NULL, FILE_PA51LOCKERDOOR, 0x0199 }, - /*0x012c*/ { NULL, FILE_PG5GENERATOR, 0x0199 }, - /*0x012d*/ { NULL, FILE_PG5DUMPSTER, 0x0199 }, - /*0x012e*/ { NULL, FILE_PCHRCLOAKER, 0x0199 }, - /*0x012f*/ { NULL, FILE_PCHRSPEEDPILL, 0x2800 }, - /*0x0130*/ { NULL, FILE_PBIGPELAGICDOOR, 0x1000 }, - /*0x0131*/ { NULL, FILE_PSK_JONRUBBLE3, 0x1000 }, - /*0x0132*/ { NULL, FILE_PSK_JONRUBBLE4, 0x1000 }, - /*0x0133*/ { NULL, FILE_PSK_JONRUBBLE5, 0x1000 }, - /*0x0134*/ { NULL, FILE_PSK_JONRUBBLE6, 0x1000 }, - /*0x0135*/ { NULL, FILE_PBAGGAGECARRIER, 0x0199 }, - /*0x0136*/ { NULL, FILE_PMINESIGN, 0x0199 }, - /*0x0137*/ { NULL, FILE_PCHAMBER, 0x0199 }, - /*0x0138*/ { NULL, FILE_PISOTOPEEXPERIMENT, 0x0199 }, - /*0x0139*/ { NULL, FILE_PISOTOPE, 0x0199 }, - /*0x013a*/ { NULL, FILE_PREACTORDOOR, 0x0199 }, - /*0x013b*/ { NULL, FILE_PSAUCERINSIDE, 0x1000 }, - /*0x013c*/ { NULL, FILE_PVILLASTOOL, 0x0199 }, - /*0x013d*/ { NULL, FILE_PCETANWINDOW1, 0x0199 }, - /*0x013e*/ { NULL, FILE_PCETANWINDOW2, 0x0199 }, - /*0x013f*/ { NULL, FILE_PCETANWINDOW3, 0x0199 }, - /*0x0140*/ { NULL, FILE_PBINOCULARS, 0x0199 }, - /*0x0141*/ { NULL, FILE_PSUBMARINE, 0x0199 }, - /*0x0142*/ { NULL, FILE_PAIRFORCE1, 0x1000 }, - /*0x0143*/ { NULL, FILE_PENGINEPART, 0x0199 }, - /*0x0144*/ { NULL, FILE_PCETROOFGUN, 0x0199 }, - /*0x0145*/ { NULL, FILE_PCETANSMALLDOOR, 0x1000 }, - /*0x0146*/ { NULL, FILE_PPOWERNODE, 0x0199 }, - /*0x0147*/ { NULL, FILE_PCETANBLUEGREENL, 0x1000 }, - /*0x0148*/ { NULL, FILE_PCETANBLUEGREENR, 0x1000 }, - /*0x0149*/ { NULL, FILE_PSKEDARCONSOLE, 0x1000 }, - /*0x014a*/ { NULL, FILE_PSKEDARCONSOLEPANEL, 0x1000 }, - /*0x014b*/ { NULL, FILE_PWEAPONCDOOR, 0x1000 }, - /*0x014c*/ { NULL, FILE_PTARGET, 0x1000 }, - /*0x014d*/ { NULL, FILE_PDEVICESECRETDOOR, 0x1000 }, - /*0x014e*/ { NULL, FILE_PCARRINGTONSECRETDOOR, 0x1000 }, - /*0x014f*/ { NULL, FILE_PSINISTERPC, 0x1000 }, - /*0x0150*/ { NULL, FILE_PSINISTERSTATION, 0x1000 }, - /*0x0151*/ { NULL, FILE_PKEYPADLOCK, 0x1000 }, - /*0x0152*/ { NULL, FILE_PTHUMBPRINTSCANNER, 0x1000 }, - /*0x0153*/ { NULL, FILE_PRETINALOCK, 0x1000 }, - /*0x0154*/ { NULL, FILE_PCARDLOCK, 0x1000 }, - /*0x0155*/ { NULL, FILE_PGOODSTATION, 0x1000 }, - /*0x0156*/ { NULL, FILE_PGOODPC, 0x1000 }, - /*0x0157*/ { NULL, FILE_PCHRAUTOGUN, 0x0199 }, - /*0x0158*/ { NULL, FILE_PG5BIGCHAIR, 0x0199 }, - /*0x0159*/ { NULL, FILE_PG5SMALLCHAIR, 0x0199 }, - /*0x015a*/ { NULL, FILE_PKINGSCEPTRE, 0x0199 }, - /*0x015b*/ { NULL, FILE_PLABCOAT, 0x0199 }, - /*0x015c*/ { NULL, FILE_PCIDOOR1, 0x1000 }, - /*0x015d*/ { NULL, FILE_PG5_CHAIR, 0x1000 }, - /*0x015e*/ { NULL, FILE_PG5_CHAIR2, 0x1000 }, - /*0x015f*/ { NULL, FILE_PDD_WINDOW_FOYER, 0x0199 }, - /*0x0160*/ { NULL, FILE_PCI_CABINET, 0x1000 }, - /*0x0161*/ { NULL, FILE_PCI_DESK, 0x1000 }, - /*0x0162*/ { NULL, FILE_PCI_CARR_DESK, 0x1000 }, - /*0x0163*/ { NULL, FILE_PCI_F_CHAIR, 0x1000 }, - /*0x0164*/ { NULL, FILE_PCI_LOUNGER, 0x1000 }, - /*0x0165*/ { NULL, FILE_PCI_F_SOFA, 0x1000 }, - /*0x0166*/ { NULL, FILE_PCI_TABLE, 0x1000 }, - /*0x0167*/ { NULL, FILE_PCV_COFFEE_TABLE, 0x1000 }, - /*0x0168*/ { NULL, FILE_PCV_CHAIR1, 0x1000 }, - /*0x0169*/ { NULL, FILE_PCV_CHAIR2, 0x1000 }, - /*0x016a*/ { NULL, FILE_PCV_SOFA, 0x1000 }, - /*0x016b*/ { NULL, FILE_PCV_CHAIR4, 0x1000 }, - /*0x016c*/ { NULL, FILE_PCV_LAMP, 0x1000 }, - /*0x016d*/ { NULL, FILE_PCV_CABINET, 0x1000 }, - /*0x016e*/ { NULL, FILE_PCV_F_BED, 0x1000 }, - /*0x016f*/ { NULL, FILE_PPEL_CHAIR1, 0x1000 }, - /*0x0170*/ { NULL, FILE_PSK_CONSOLE2, 0x1000 }, - /*0x0171*/ { NULL, FILE_PDD_EAR_TABLE, 0x1000 }, - /*0x0172*/ { NULL, FILE_PDD_EAR_CHAIR, 0x1000 }, - /*0x0173*/ { NULL, FILE_PAIRBASE_TABLE2, 0x1000 }, - /*0x0174*/ { NULL, FILE_PAIRBASE_CHAIR2, 0x1000 }, - /*0x0175*/ { NULL, FILE_PMISC_CRATE, 0x1000 }, - /*0x0176*/ { NULL, FILE_PA51_CRATE1, 0x1000 }, - /*0x0177*/ { NULL, FILE_PMISC_IRSPECS, 0x0c00 }, - /*0x0178*/ { NULL, FILE_PA51_ROOFGUN, 0x0199 }, - /*0x0179*/ { NULL, FILE_PSK_DRONE_GUN, 0x0199 }, - /*0x017a*/ { NULL, FILE_PCI_ROOFGUN, 0x0199 }, - /*0x017b*/ { NULL, FILE_PCV_TABLE, 0x1000 }, - /*0x017c*/ { NULL, FILE_PCIDOOR1_REF, 0x1000 }, - /*0x017d*/ { NULL, FILE_PALASKADOOR_OUT, 0x1000 }, - /*0x017e*/ { NULL, FILE_PALASKADOOR_IN, 0x1000 }, - /*0x017f*/ { NULL, FILE_PWIREFENCE, 0x0199 }, - /*0x0180*/ { NULL, FILE_PRARELOGO, 0x1000 }, - /*0x0181*/ { NULL, FILE_PKEYCARD, 0x0199 }, - /*0x0182*/ { NULL, FILE_PBODYARMOUR, 0x0133 }, - /*0x0183*/ { NULL, FILE_PA51GATE_R, 0x1000 }, - /*0x0184*/ { NULL, FILE_PA51GATE_L, 0x1000 }, - /*0x0185*/ { NULL, FILE_PAF1_LAMP, 0x1000 }, - /*0x0186*/ { NULL, FILE_PAF1_TOILET, 0x1000 }, - /*0x0187*/ { NULL, FILE_PAF1_DOORBIG2, 0x1000 }, - /*0x0188*/ { NULL, FILE_PAF1_PHONE, 0x1000 }, - /*0x0189*/ { NULL, FILE_PAF1_CARGODOOR, 0x1000 }, - /*0x018a*/ { NULL, FILE_PG5_ALARM, 0x1000 }, - /*0x018b*/ { NULL, FILE_PG5_LASER_SWITCH, 0x1000 }, - /*0x018c*/ { NULL, FILE_PSK_TEMPLECOLUMN4, 0x1000 }, - /*0x018d*/ { NULL, FILE_PCOREHATCH, 0x1000 }, - /*0x018e*/ { NULL, FILE_PA51GRATE, 0x1000 }, - /*0x018f*/ { NULL, FILE_PAF1ESCAPEDOOR, 0x1000 }, - /*0x0190*/ { NULL, FILE_PPRESCAPSULE, 0x1000 }, - /*0x0191*/ { NULL, FILE_PSKEDARBRIDGE, 0x1000 }, - /*0x0192*/ { NULL, FILE_PPELAGICDOOR2, 0x1000 }, - /*0x0193*/ { NULL, FILE_PTTB_BOX, 0x0066 }, - /*0x0194*/ { NULL, FILE_PINSTFRONTDOOR, 0x1000 }, - /*0x0195*/ { NULL, FILE_PCHRLASER, 0x0199 }, - /*0x0196*/ { NULL, FILE_PBAFTA, 0x1000 }, - /*0x0197*/ { NULL, FILE_PCHRSONICSCREWER, 0x0199 }, - /*0x0198*/ { NULL, FILE_PCHRLUMPHAMMER, 0x0199 }, - /*0x0199*/ { NULL, FILE_PEXPLOSIVEBRICK, 0x1000 }, - /*0x019a*/ { NULL, FILE_PSKEDARBOMB, 0x1000 }, - /*0x019b*/ { NULL, FILE_PZIGGYCARD, 0x1000 }, - /*0x019c*/ { NULL, FILE_PSAFEITEM, 0x1000 }, - /*0x019d*/ { NULL, FILE_PRUSSDAR, 0x0333 }, - /*0x019e*/ { NULL, FILE_PXRAYSPECS, 0x0c00 }, - /*0x019f*/ { NULL, FILE_PCHRLUMPHAMMER, 0x1000 }, - /*0x01a0*/ { NULL, FILE_PCHREYESPY, 0x1800 }, - /*0x01a1*/ { NULL, FILE_PCHRDOORDECODER, 0x0199 }, - /*0x01a2*/ { NULL, FILE_PAF1_TABLE, 0x0199 }, - /*0x01a3*/ { NULL, FILE_PSHUTTLEDOOR, 0x1000 }, - /*0x01a4*/ { NULL, FILE_PRUINBRIDGE, 0x0199 }, - /*0x01a5*/ { NULL, FILE_PSECRETINDOOR, 0x1000 }, - /*0x01a6*/ { NULL, FILE_PSENSITIVEINFO, 0x0199 }, - /*0x01a7*/ { NULL, FILE_PSUITCASE, 0x1000 }, - /*0x01a8*/ { NULL, FILE_PSKPUZZLEOBJECT, 0x1000 }, - /*0x01a9*/ { NULL, FILE_PA51LIFTDOOR, 0x1000 }, - /*0x01aa*/ { NULL, FILE_PCIHUB, 0x1000 }, - /*0x01ab*/ { NULL, FILE_PSK_SHIP_DOOR2, 0x1000 }, - /*0x01ac*/ { NULL, FILE_PSK_WINDOW1, 0x1000 }, - /*0x01ad*/ { NULL, FILE_PSK_HANGARDOORB_TOP, 0x1000 }, - /*0x01ae*/ { NULL, FILE_PSK_HANGARDOORB_BOT, 0x1000 }, - /*0x01af*/ { NULL, FILE_PAF1_INNERDOOR, 0x1000 }, - /*0x01b0*/ { NULL, FILE_PLASER_POST, 0x1000 }, - /*0x01b1*/ { NULL, FILE_PTARGETAMP, 0x0199 }, - /*0x01b2*/ { NULL, FILE_PSK_LIFT, 0x1000 }, - /*0x01b3*/ { NULL, FILE_PKNOCKKNOCK, 0x1000 }, - /*0x01b4*/ { NULL, FILE_PCETANDOOR, 0x1000 }, - /*0x01b5*/ { NULL, FILE_PAF1RUBBLE, 0x1000 }, - /*0x01b6*/ { NULL, FILE_PDD_DR_NONREF, 0x1000 }, - /*0x01b7*/ { NULL, FILE_PCETANDOORSIDE, 0x1000 }, - /*0x01b8*/ { NULL, FILE_PBUDDYBRIDGE, 0x0199 }, -}; - -// 21e54 -u8 propexplosiontypes[] = { - /*0x0000*/ 0x00, - /*0x0001*/ 0x00, - /*0x0002*/ 0x00, - /*0x0003*/ 0x00, - /*0x0004*/ 0x00, - /*0x0005*/ 0x00, - /*0x0006*/ 0x10, - /*0x0007*/ 0x00, - /*0x0008*/ 0x08, - /*0x0009*/ 0x0b, - /*0x000a*/ 0x06, - /*0x000b*/ 0x04, - /*0x000c*/ 0x00, - /*0x000d*/ 0x00, - /*0x000e*/ 0x00, - /*0x000f*/ 0x00, - /*0x0010*/ 0x00, - /*0x0011*/ 0x00, - /*0x0012*/ 0x00, - /*0x0013*/ 0x00, - /*0x0014*/ 0x00, - /*0x0015*/ 0x00, - /*0x0016*/ 0x00, - /*0x0017*/ 0x00, - /*0x0018*/ 0x00, - /*0x0019*/ 0x03, - /*0x001a*/ 0x00, - /*0x001b*/ 0x06, - /*0x001c*/ 0x00, - /*0x001d*/ 0x00, - /*0x001e*/ 0x00, - /*0x001f*/ 0x06, - /*0x0020*/ 0x09, - /*0x0021*/ 0x00, - /*0x0022*/ 0x00, - /*0x0023*/ 0x00, - /*0x0024*/ 0x00, - /*0x0025*/ 0x00, - /*0x0026*/ 0x00, - /*0x0027*/ 0x00, - /*0x0028*/ 0x03, - /*0x0029*/ 0x03, - /*0x002a*/ 0x03, - /*0x002b*/ 0x00, - /*0x002c*/ 0x00, - /*0x002d*/ 0x00, - /*0x002e*/ 0x00, - /*0x002f*/ 0x00, - /*0x0030*/ 0x00, - /*0x0031*/ 0x00, - /*0x0032*/ 0x00, - /*0x0033*/ 0x00, - /*0x0034*/ 0x00, - /*0x0035*/ 0x00, - /*0x0036*/ 0x00, - /*0x0037*/ 0x00, - /*0x0038*/ 0x00, - /*0x0039*/ 0x00, - /*0x003a*/ 0x00, - /*0x003b*/ 0x0c, - /*0x003c*/ 0x00, - /*0x003d*/ 0x00, - /*0x003e*/ 0x00, - /*0x003f*/ 0x00, - /*0x0040*/ 0x00, - /*0x0041*/ 0x00, - /*0x0042*/ 0x0b, - /*0x0043*/ 0x00, - /*0x0044*/ 0x00, - /*0x0045*/ 0x00, - /*0x0046*/ 0x00, - /*0x0047*/ 0x00, - /*0x0048*/ 0x00, - /*0x0049*/ 0x00, - /*0x004a*/ 0x00, - /*0x004b*/ 0x00, - /*0x004c*/ 0x00, - /*0x004d*/ 0x00, - /*0x004e*/ 0x00, - /*0x004f*/ 0x00, - /*0x0050*/ 0x00, - /*0x0051*/ 0x00, - /*0x0052*/ 0x00, - /*0x0053*/ 0x00, - /*0x0054*/ 0x00, - /*0x0055*/ 0x00, - /*0x0056*/ 0x00, - /*0x0057*/ 0x00, - /*0x0058*/ 0x0d, - /*0x0059*/ 0x0d, - /*0x005a*/ 0x0d, - /*0x005b*/ 0x0d, - /*0x005c*/ 0x0d, - /*0x005d*/ 0x00, - /*0x005e*/ 0x00, - /*0x005f*/ 0x00, - /*0x0060*/ 0x00, - /*0x0061*/ 0x07, - /*0x0062*/ 0x04, - /*0x0063*/ 0x0c, - /*0x0064*/ 0x00, - /*0x0065*/ 0x00, - /*0x0066*/ 0x03, - /*0x0067*/ 0x00, - /*0x0068*/ 0x00, - /*0x0069*/ 0x00, - /*0x006a*/ 0x00, - /*0x006b*/ 0x00, - /*0x006c*/ 0x00, - /*0x006d*/ 0x00, - /*0x006e*/ 0x0c, - /*0x006f*/ 0x0c, - /*0x0070*/ 0x00, - /*0x0071*/ 0x00, - /*0x0072*/ 0x00, - /*0x0073*/ 0x00, - /*0x0074*/ 0x00, - /*0x0075*/ 0x00, - /*0x0076*/ 0x00, - /*0x0077*/ 0x00, - /*0x0078*/ 0x00, - /*0x0079*/ 0x00, - /*0x007a*/ 0x00, - /*0x007b*/ 0x00, - /*0x007c*/ 0x00, - /*0x007d*/ 0x00, - /*0x007e*/ 0x0d, - /*0x007f*/ 0x00, - /*0x0080*/ 0x00, - /*0x0081*/ 0x00, - /*0x0082*/ 0x00, - /*0x0083*/ 0x00, - /*0x0084*/ 0x00, - /*0x0085*/ 0x00, - /*0x0086*/ 0x00, - /*0x0087*/ 0x00, - /*0x0088*/ 0x00, - /*0x0089*/ 0x00, - /*0x008a*/ 0x00, - /*0x008b*/ 0x00, - /*0x008c*/ 0x00, - /*0x008d*/ 0x0d, - /*0x008e*/ 0x0c, - /*0x008f*/ 0x0c, - /*0x0090*/ 0x00, - /*0x0091*/ 0x00, - /*0x0092*/ 0x00, - /*0x0093*/ 0x00, - /*0x0094*/ 0x00, - /*0x0095*/ 0x00, - /*0x0096*/ 0x00, - /*0x0097*/ 0x00, - /*0x0098*/ 0x00, - /*0x0099*/ 0x00, - /*0x009a*/ 0x00, - /*0x009b*/ 0x00, - /*0x009c*/ 0x00, - /*0x009d*/ 0x00, - /*0x009e*/ 0x00, - /*0x009f*/ 0x0d, - /*0x00a0*/ 0x00, - /*0x00a1*/ 0x00, - /*0x00a2*/ 0x00, - /*0x00a3*/ 0x00, - /*0x00a4*/ 0x00, - /*0x00a5*/ 0x00, - /*0x00a6*/ 0x00, - /*0x00a7*/ 0x09, - /*0x00a8*/ 0x00, - /*0x00a9*/ 0x00, - /*0x00aa*/ 0x00, - /*0x00ab*/ 0x00, - /*0x00ac*/ 0x00, - /*0x00ad*/ 0x00, - /*0x00ae*/ 0x00, - /*0x00af*/ 0x00, - /*0x00b0*/ 0x00, - /*0x00b1*/ 0x00, - /*0x00b2*/ 0x00, - /*0x00b3*/ 0x00, - /*0x00b4*/ 0x00, - /*0x00b5*/ 0x00, - /*0x00b6*/ 0x00, - /*0x00b7*/ 0x07, - /*0x00b8*/ 0x06, - /*0x00b9*/ 0x00, - /*0x00ba*/ 0x09, - /*0x00bb*/ 0x00, - /*0x00bc*/ 0x00, - /*0x00bd*/ 0x06, - /*0x00be*/ 0x06, - /*0x00bf*/ 0x06, - /*0x00c0*/ 0x00, - /*0x00c1*/ 0x00, - /*0x00c2*/ 0x0b, - /*0x00c3*/ 0x00, - /*0x00c4*/ 0x00, - /*0x00c5*/ 0x06, - /*0x00c6*/ 0x09, - /*0x00c7*/ 0x00, - /*0x00c8*/ 0x00, - /*0x00c9*/ 0x0b, - /*0x00ca*/ 0x06, - /*0x00cb*/ 0x00, - /*0x00cc*/ 0x00, - /*0x00cd*/ 0x00, - /*0x00ce*/ 0x00, - /*0x00cf*/ 0x00, - /*0x00d0*/ 0x19, - /*0x00d1*/ 0x00, - /*0x00d2*/ 0x00, - /*0x00d3*/ 0x00, - /*0x00d4*/ 0x00, - /*0x00d5*/ 0x00, - /*0x00d6*/ 0x00, - /*0x00d7*/ 0x00, - /*0x00d8*/ 0x00, - /*0x00d9*/ 0x00, - /*0x00da*/ 0x00, - /*0x00db*/ 0x00, - /*0x00dc*/ 0x00, - /*0x00dd*/ 0x00, - /*0x00de*/ 0x00, - /*0x00df*/ 0x00, - /*0x00e0*/ 0x00, - /*0x00e1*/ 0x00, - /*0x00e2*/ 0x00, - /*0x00e3*/ 0x00, - /*0x00e4*/ 0x00, - /*0x00e5*/ 0x00, - /*0x00e6*/ 0x00, - /*0x00e7*/ 0x00, - /*0x00e8*/ 0x00, - /*0x00e9*/ 0x00, - /*0x00ea*/ 0x0b, - /*0x00eb*/ 0x00, - /*0x00ec*/ 0x00, - /*0x00ed*/ 0x00, - /*0x00ee*/ 0x00, - /*0x00ef*/ 0x00, - /*0x00f0*/ 0x00, - /*0x00f1*/ 0x00, - /*0x00f2*/ 0x00, - /*0x00f3*/ 0x11, - /*0x00f4*/ 0x00, - /*0x00f5*/ 0x00, - /*0x00f6*/ 0x00, - /*0x00f7*/ 0x00, - /*0x00f8*/ 0x00, - /*0x00f9*/ 0x00, - /*0x00fa*/ 0x00, - /*0x00fb*/ 0x00, - /*0x00fc*/ 0x00, - /*0x00fd*/ 0x00, - /*0x00fe*/ 0x00, - /*0x00ff*/ 0x00, - /*0x0100*/ 0x00, - /*0x0101*/ 0x00, - /*0x0102*/ 0x00, - /*0x0103*/ 0x00, - /*0x0104*/ 0x00, - /*0x0105*/ 0x00, - /*0x0106*/ 0x00, - /*0x0107*/ 0x00, - /*0x0108*/ 0x00, - /*0x0109*/ 0x00, - /*0x010a*/ 0x00, - /*0x010b*/ 0x00, - /*0x010c*/ 0x00, - /*0x010d*/ 0x00, - /*0x010e*/ 0x00, - /*0x010f*/ 0x00, - /*0x0110*/ 0x00, - /*0x0111*/ 0x00, - /*0x0112*/ 0x00, - /*0x0113*/ 0x00, - /*0x0114*/ 0x00, - /*0x0115*/ 0x00, - /*0x0116*/ 0x00, - /*0x0117*/ 0x00, - /*0x0118*/ 0x00, - /*0x0119*/ 0x00, - /*0x011a*/ 0x0d, - /*0x011b*/ 0x0d, - /*0x011c*/ 0x0d, - /*0x011d*/ 0x0d, - /*0x011e*/ 0x00, - /*0x011f*/ 0x00, - /*0x0120*/ 0x00, - /*0x0121*/ 0x00, - /*0x0122*/ 0x00, - /*0x0123*/ 0x00, - /*0x0124*/ 0x00, - /*0x0125*/ 0x00, - /*0x0126*/ 0x00, - /*0x0127*/ 0x0d, - /*0x0128*/ 0x0d, - /*0x0129*/ 0x00, - /*0x012a*/ 0x0d, - /*0x012b*/ 0x0d, - /*0x012c*/ 0x08, - /*0x012d*/ 0x00, - /*0x012e*/ 0x00, - /*0x012f*/ 0x0c, - /*0x0130*/ 0x0d, - /*0x0131*/ 0x07, - /*0x0132*/ 0x0b, - /*0x0133*/ 0x00, - /*0x0134*/ 0x07, - /*0x0135*/ 0x07, - /*0x0136*/ 0x00, - /*0x0137*/ 0x00, - /*0x0138*/ 0x00, - /*0x0139*/ 0x00, - /*0x013a*/ 0x00, - /*0x013b*/ 0x00, - /*0x013c*/ 0x00, - /*0x013d*/ 0x00, - /*0x013e*/ 0x00, - /*0x013f*/ 0x00, - /*0x0140*/ 0x00, - /*0x0141*/ 0x00, - /*0x0142*/ 0x00, - /*0x0143*/ 0x00, - /*0x0144*/ 0x00, - /*0x0145*/ 0x00, - /*0x0146*/ 0x00, - /*0x0147*/ 0x00, - /*0x0148*/ 0x00, - /*0x0149*/ 0x00, - /*0x014a*/ 0x00, - /*0x014b*/ 0x0d, - /*0x014c*/ 0x07, - /*0x014d*/ 0x00, - /*0x014e*/ 0x00, - /*0x014f*/ 0x00, - /*0x0150*/ 0x00, - /*0x0151*/ 0x07, - /*0x0152*/ 0x00, - /*0x0153*/ 0x00, - /*0x0154*/ 0x00, - /*0x0155*/ 0x00, - /*0x0156*/ 0x00, - /*0x0157*/ 0x07, - /*0x0158*/ 0x08, - /*0x0159*/ 0x06, - /*0x015a*/ 0x06, - /*0x015b*/ 0x06, - /*0x015c*/ 0x06, - /*0x015d*/ 0x08, - /*0x015e*/ 0x07, - /*0x015f*/ 0x07, - /*0x0160*/ 0x00, - /*0x0161*/ 0x00, - /*0x0162*/ 0x00, - /*0x0163*/ 0x00, - /*0x0164*/ 0x00, - /*0x0165*/ 0x00, - /*0x0166*/ 0x00, - /*0x0167*/ 0x00, - /*0x0168*/ 0x00, - /*0x0169*/ 0x00, - /*0x016a*/ 0x00, - /*0x016b*/ 0x00, - /*0x016c*/ 0x00, - /*0x016d*/ 0x00, - /*0x016e*/ 0x00, - /*0x016f*/ 0x00, - /*0x0170*/ 0x00, - /*0x0171*/ 0x00, - /*0x0172*/ 0x00, - /*0x0173*/ 0x00, - /*0x0174*/ 0x06, - /*0x0175*/ 0x00, - /*0x0176*/ 0x00, - /*0x0177*/ 0x00, - /*0x0178*/ 0x07, - /*0x0179*/ 0x00, - /*0x017a*/ 0x00, - /*0x017b*/ 0x00, - /*0x017c*/ 0x00, - /*0x017d*/ 0x00, - /*0x017e*/ 0x00, - /*0x017f*/ 0x06, - /*0x0180*/ 0x08, - /*0x0181*/ 0x08, - /*0x0182*/ 0x08, - /*0x0183*/ 0x00, - /*0x0184*/ 0x00, - /*0x0185*/ 0x00, - /*0x0186*/ 0x00, - /*0x0187*/ 0x00, - /*0x0188*/ 0x00, - /*0x0189*/ 0x00, - /*0x018a*/ 0x00, - /*0x018b*/ 0x00, - /*0x018c*/ 0x00, - /*0x018d*/ 0x06, - /*0x018e*/ 0x00, - /*0x018f*/ 0x00, - /*0x0190*/ 0x06, - /*0x0191*/ 0x00, - /*0x0192*/ 0x07, - /*0x0193*/ 0x07, - /*0x0194*/ 0x00, - /*0x0195*/ 0x00, - /*0x0196*/ 0x00, - /*0x0197*/ 0x00, - /*0x0198*/ 0x0d, - /*0x0199*/ 0x00, - /*0x019a*/ 0x00, - /*0x019b*/ 0x00, - /*0x019c*/ 0x00, - /*0x019d*/ 0x00, - /*0x019e*/ 0x06, - /*0x019f*/ 0x00, - /*0x01a0*/ 0x00, - /*0x01a1*/ 0x00, - /*0x01a2*/ 0x11, - /*0x01a3*/ 0x00, - /*0x01a4*/ 0x00, - /*0x01a5*/ 0x00, - /*0x01a6*/ 0x00, - /*0x01a7*/ 0x00, - /*0x01a8*/ 0x00, - /*0x01a9*/ 0x00, - /*0x01aa*/ 0x00, - /*0x01ab*/ 0x00, - /*0x01ac*/ 0x00, - /*0x01ad*/ 0x00, - /*0x01ae*/ 0x00, - /*0x01af*/ 0x0b, - /*0x01b0*/ 0x00, - /*0x01b1*/ 0x00, - /*0x01b2*/ 0x00, - /*0x01b3*/ 0x06, - /*0x01b4*/ 0x00, - /*0x01b5*/ 0x00, - /*0x01b6*/ 0x00, - /*0x01b7*/ 0x00, - /*0x01b8*/ 0x00, - /*0x01b9*/ 0x00, - /*0x01ba*/ 0x00, - /*0x01bb*/ 0x00, - /*0x01bc*/ 0x00, - /*0x01bd*/ 0x00, - /*0x01be*/ 0x00, - /*0x01bf*/ 0x00, -}; - -u32 var8007bff4 = 0x0000ff00; -u32 var8007bff8 = 0x00000000; -u32 var8007bffc = 0x00000000; -u32 var8007c000 = 0x00000000; -u32 var8007c004 = 0x00000000; -u32 var8007c008 = 0x00000000; -u32 var8007c00c = 0x00000000; -u32 var8007c010 = 0xf8f4f1e0; -u32 var8007c014 = 0x473f41dd; -u32 var8007c018 = 0xa510c9c6; -u32 var8007c01c = 0xbcae0bd1; -u32 var8007c020 = 0x0ff73a30; -u32 var8007c024 = 0x724083b7; -u32 var8007c028 = 0xffffffff; -u32 var8007c02c = 0xffffffff; -u32 var8007c030 = 0xffffffff; -u32 var8007c034 = 0x00000000; -u32 var8007c038 = 0x00000000; -u32 var8007c03c = 0x00000000; - -// 22060 -u16 var8007c040[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, -}; - -// 2208c -struct modeltype g_ModelTypeBasic = { - MODELTYPE_BASIC, 21, var8007c040, -}; - -u32 var8007c074 = 0x00000000; -u32 var8007c078 = 0x00000000; -u32 var8007c07c = 0x00000000; - -// 220a0 -u16 var8007c080[] = { - 0x0000, - 0x0101, -}; - -// 220a4 -struct modeltype g_ModelTypeChrGun = { - MODELTYPE_CHRGUN, 2, var8007c080, -}; - -u32 var8007c08c = 0x00000000; - -// 220b0 -u16 var8007c090[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0304, - 0x0403, - 0x0506, - 0x0605, - 0x0708, - 0x0807, - 0x090a, - 0x0a09, - 0x0b0c, - 0x0c0b, - 0x0d0e, - 0x0e0d, -}; - -// 220d0 -struct modeltype g_ModelType0B = { - MODELTYPE_0B, 15, var8007c090, -}; - -u32 var8007c0dc; -u32 var8007c0f4; -u32 var8007c10c; -u32 var8007c124; -u32 var8007c130; -u32 var8007c148; - -u32 var8007c0b8 = 0x00000000; -u32 var8007c0bc = 0x00000000; - -struct modelfiledata g_PlayerModelFileData = { - (struct modelnode *) &var8007c0dc, - &g_ModelType0B, - NULL, - 0, - 3, - 41.161228179932, - 0, - NULL, -}; - -u32 var8007c0dc = 0x00010000; -u32 var8007c0e0 = (u32) &var8007c124; -u32 var8007c0e4 = 0x00000000; -u32 var8007c0e8 = 0x00000000; -u32 var8007c0ec = 0x00000000; -u32 var8007c0f0 = (u32) &var8007c0f4; - -u32 var8007c0f4 = 0x00020000; -u32 var8007c0f8 = (u32) &var8007c130; -u32 var8007c0fc = (u32) &var8007c0dc; -u32 var8007c100 = 0x00000000; -u32 var8007c104 = 0x00000000; -u32 var8007c108 = (u32) &var8007c10c; - -u32 var8007c10c = 0x00020000; -u32 var8007c110 = (u32) &var8007c148; -u32 var8007c114 = (u32) &var8007c0f4; -u32 var8007c118 = 0x00000000; -u32 var8007c11c = 0x00000000; -u32 var8007c120 = 0x00000000; - -u32 var8007c124 = 0x00000001; -u32 var8007c128 = 0x00000000; -u32 var8007c12c = 0x00000000; - -u32 var8007c130 = 0x3f96c81d; -u32 var8007c134 = 0x422493d6; -u32 var8007c138 = 0x00000000; -u32 var8007c13c = 0x00010002; -u32 var8007c140 = 0xffffffff; -u32 var8007c144 = 0x00000000; - -u32 var8007c148 = 0xc024dda0; -u32 var8007c14c = 0x43f036ea; -u32 var8007c150 = 0x00000000; -u32 var8007c154 = 0x00020000; -u32 var8007c158 = 0xffffffff; -u32 var8007c15c = 0x00000000; - -// 22180 -u16 var8007c160[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0304, - 0x0403, - 0x0506, - 0x0605, - 0x0708, - 0x0807, - 0x090a, - 0x0a09, - 0x0b0c, - 0x0c0b, - 0x0d0e, - 0x0e0d, - 0x0f0f, - 0x1010, - 0x1111, -}; - -// 221a4 -struct modeltype g_ModelType0A = { - MODELTYPE_0A, 18, var8007c160, -}; - -u32 var8007c18c = 0x00000000; -// 221b0 -u16 var8007c190[] = { - 0x0000, -}; - -// 221b4 -struct modeltype g_ModelType20 = { - MODELTYPE_20, 1, var8007c190, -}; - -u32 var8007c19c = 0x00000000; -// 221c0 -u16 var8007c1a0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0505, - 0x0303, - 0x0404, -}; - -// 221cc -struct modeltype g_ModelTypeClassicGun = { - MODELTYPE_CLASSICGUN, 6, var8007c1a0, -}; - -u32 var8007c1b4 = 0x00000000; -u32 var8007c1b8 = 0x00000000; -u32 var8007c1bc = 0x00000000; -// 221e0 -u16 var8007c1c0[] = { - 0x0000, -}; - -// 221e4 -struct modeltype g_ModelTypeCasing = { - MODELTYPE_CASING, 1, var8007c1c0, -}; - -u32 var8007c1cc = 0x00000000; -// 221f0 -u16 var8007c1d0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, -}; - -// 22200 -struct modeltype g_ModelType06 = { - MODELTYPE_06, 7, var8007c1d0, -}; - -u32 var8007c1e8 = 0x00000000; -u32 var8007c1ec = 0x00000000; -// 22210 -u16 var8007c1f0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0606, - 0x0404, - 0x0505, -}; - -// 22220 -struct modeltype g_ModelTypeUzi = { - MODELTYPE_UZI, 7, var8007c1f0, -}; - -u32 var8007c208 = 0x00000000; -u32 var8007c20c = 0x00000000; -// 22230 -u16 var8007c210[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, -}; - -// 2224c -struct modeltype g_ModelTypeJoypad = { - MODELTYPE_JOYPAD, 13, var8007c210, -}; - -// 22254 -u16 var8007c234[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, - 0x2b2b, - 0x2c2c, - 0x2d2d, - 0x2e2e, -}; - -// 222b4 -struct modeltype g_ModelType21 = { - MODELTYPE_21, 47, var8007c234, -}; - -// 222bc -u16 var8007c29c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, - 0x2b2b, - 0x2c2c, - 0x2d2d, -}; - -// 22318 -struct modeltype g_ModelTypeLaptopGun = { - MODELTYPE_LAPTOPGUN, 46, var8007c29c, -}; - -// 22320 -u16 var8007c300[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, -}; - -// 22374 -struct modeltype g_ModelTypeK7Avenger = { - MODELTYPE_K7AVENGER, 41, var8007c300, -}; - -// 2237c -u16 var8007c35c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, -}; - -// 223d4 -struct modeltype g_ModelTypeFalcon2 = { - MODELTYPE_FALCON2, 43, var8007c35c, -}; - -// 223dc -u16 var8007c3bc[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, -}; - -// 22424 -struct modeltype g_ModelTypeKnife = { - MODELTYPE_KNIFE, 35, var8007c3bc, -}; - -// 2242c -u16 var8007c40c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, -}; - -// 2247c -struct modeltype g_ModelTypeCmp150 = { - MODELTYPE_CMP150, 40, var8007c40c, -}; - -// 22484 -u16 var8007c464[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, -}; - -// 224d8 -struct modeltype g_ModelTypeDragon = { - MODELTYPE_DRAGON, 41, var8007c464, -}; - -// 224e0 -u16 var8007c4c0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, -}; - -// 22538 -struct modeltype g_ModelTypeSuperDragon = { - MODELTYPE_SUPERDRAGON, 43, var8007c4c0, -}; - -// 22540 -u16 var8007c520[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, -}; - -// 2258c -struct modeltype g_ModelTypeRocket = { - MODELTYPE_ROCKET, 38, var8007c520, -}; - -// 22594 -u16 var8007c574[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, -}; - -// 225d8 -struct modeltype g_ModelType4A = { - MODELTYPE_4A, 33, var8007c574, -}; - -// 225e0 -u16 var8007c5c0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, -}; - -// 22630 -struct modeltype g_ModelTypeShotgun = { - MODELTYPE_SHOTGUN, 39, var8007c5c0, -}; - -// 22638 -u16 var8007c618[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, - 0x2b2b, - 0x2c2c, - 0x2d2d, - 0x2e2e, - 0x2f2f, -}; - -// 22698 -struct modeltype g_ModelTypeFarsight = { - MODELTYPE_FARSIGHT, 48, var8007c618, -}; - -// 226a0 -u16 var8007c680[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, -}; - -// 226e8 -struct modeltype g_ModelType4D = { - MODELTYPE_4D, 35, var8007c680, -}; - -// 226f0 -u16 var8007c6d0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, - 0x2b2b, - 0x2c2c, - 0x2d2d, - 0x2e2e, - 0x2f2f, - 0x3030, - 0x3131, -}; - -// 22754 -struct modeltype g_ModelTypeReaper = { - MODELTYPE_REAPER, 50, var8007c6d0, -}; - -// 2275c -u16 var8007c73c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, -}; - -// 227ac -struct modeltype g_ModelTypeMauler = { - MODELTYPE_MAULER, 39, var8007c73c, -}; - -// 227b4 -u16 var8007c794[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, -}; - -// 22804 -struct modeltype g_ModelTypeDevastator = { - MODELTYPE_DEVASTATOR, 40, var8007c794, -}; - -// 2280c -u16 var8007c7ec[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, -}; - -// 2285c -struct modeltype g_ModelTypePistol = { - MODELTYPE_PISTOL, 40, var8007c7ec, -}; - -// 22864 -u16 var8007c844[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, -}; - -// 228b4 -struct modeltype g_ModelTypeAr34 = { - MODELTYPE_AR34, 40, var8007c844, -}; - -// 228bc -u16 var8007c89c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, - 0x2b2b, - 0x2c2c, - 0x2d2d, - 0x2e2e, -}; - -// 2291c -struct modeltype g_ModelTypeMagnum = { - MODELTYPE_MAGNUM, 47, var8007c89c, -}; - -// 22924 -u16 var8007c904[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, -}; - -// 22970 -struct modeltype g_ModelTypeSlayerRocket = { - MODELTYPE_SLAYERROCKET, 37, var8007c904, -}; - -// 22978 -u16 var8007c958[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, -}; - -// 229c4 -struct modeltype g_ModelTypeCyclone = { - MODELTYPE_CYCLONE, 38, var8007c958, -}; - -// 229cc -u16 var8007c9ac[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, -}; - -// 22a20 -struct modeltype g_ModelTypeSniperRifle = { - MODELTYPE_SNIPERRIFLE, 42, var8007c9ac, -}; - -// 22a28 -u16 var8007ca08[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, -}; - -// 22a78 -struct modeltype g_ModelTypeTranquilizer = { - MODELTYPE_TRANQUILIZER, 39, var8007ca08, -}; - -// 22a80 -u16 var8007ca60[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, - 0x2b2b, - 0x2c2c, - 0x2d2d, -}; - -// 22adc -struct modeltype g_ModelTypeCrossbow = { - MODELTYPE_CROSSBOW, 46, var8007ca60, -}; - -// 22ae4 -u16 var8007cac4[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, -}; - -// 22b28 -struct modeltype g_ModelTypeTimedProxyMine = { - MODELTYPE_TIMEDPROXYMINE, 34, var8007cac4, -}; - -// 22b30 -u16 var8007cb10[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, -}; - -// 22b80 -struct modeltype g_ModelTypePhoenix = { - MODELTYPE_PHOENIX, 40, var8007cb10, -}; - -// 22b88 -u16 var8007cb68[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, - 0x2929, - 0x2a2a, -}; - -// 22be0 -struct modeltype g_ModelTypeCallisto = { - MODELTYPE_CALLISTO, 43, var8007cb68, -}; - -// 22be8 -u16 var8007cbc8[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, - 0x2525, - 0x2626, - 0x2727, - 0x2828, -}; - -// 22c3c -struct modeltype g_ModelTypeRcp120 = { - MODELTYPE_RCP120, 41, var8007cbc8, -}; - -// 22c44 -u16 var8007cc24[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, -}; - -// 22c54 -struct modeltype g_ModelTypeHudPiece = { - MODELTYPE_HUDPIECE, 7, var8007cc24, -}; - -// 22c5c -u16 var8007cc3c[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, -}; - -// 22ca0 -struct modeltype g_ModelTypeHand = { - MODELTYPE_HAND, 33, var8007cc3c, -}; - -// 22ca8 -u16 var8007cc88[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, -}; - -// 22cf0 -struct modeltype g_ModelTypeLaser = { - MODELTYPE_LASER, 35, var8007cc88, -}; - -// 22cf8 -u16 var8007ccd8[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, -}; - -// 22d40 -struct modeltype g_ModelTypeGrenade = { - MODELTYPE_GRENADE, 35, var8007ccd8, -}; - -// 22d48 -u16 var8007cd28[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, -}; - -// 22d90 -struct modeltype g_ModelTypeEcmMine = { - MODELTYPE_ECMMINE, 35, var8007cd28, -}; - -// 22d98 -u16 var8007cd78[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, -}; - -// 22de0 -struct modeltype g_ModelTypeUplink = { - MODELTYPE_UPLINK, 35, var8007cd78, -}; - -// 22de8 -u16 var8007cdc8[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1212, - 0x1313, - 0x1414, - 0x1515, - 0x1616, - 0x1717, - 0x1818, - 0x1919, - 0x1a1a, - 0x1b1b, - 0x1c1c, - 0x1d1d, - 0x1e1e, - 0x1f1f, - 0x2020, - 0x2121, - 0x2222, - 0x2323, - 0x2424, -}; - -// 22e34 -struct modeltype g_ModelTypeRemoteMine = { - MODELTYPE_REMOTEMINE, 37, var8007cdc8, -}; - -u32 var8007ce1c = 0x00000000; -// 22e40 -u16 var8007ce20[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0304, - 0x0403, - 0x0506, - 0x0605, - 0x0708, - 0x0807, - 0x090a, - 0x0a09, - 0x0b0c, - 0x0c0b, - 0x0d0e, - 0x0e0d, -}; - -// 22e60 -struct modeltype g_ModelTypeChr = { - MODELTYPE_CHR, 15, var8007ce20, -}; - -u32 var8007ce48 = 0x00000000; -u32 var8007ce4c = 0x00000000; -// 22e70 -u16 var8007ce50[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x080f, - 0x0910, - 0x0a11, - 0x0b12, - 0x0c13, - 0x0d14, - 0x0e15, - 0x0f08, - 0x1009, - 0x110a, - 0x120b, - 0x130c, - 0x140d, - 0x150e, - 0x161d, - 0x171e, - 0x181f, - 0x1920, - 0x1a21, - 0x1b22, - 0x1c23, - 0x1d16, - 0x1e17, - 0x1f18, - 0x2019, - 0x211a, - 0x221b, - 0x231c, -}; - -// 22eb8 -struct modeltype g_ModelTypeSkedar = { - MODELTYPE_SKEDAR, 36, var8007ce50, -}; - -// 22ec0 -u16 var8007cea0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, -}; - -// 22ec8 -struct modeltype g_ModelTypeDrCaroll = { - MODELTYPE_DRCAROLL, 4, var8007cea0, -}; - -// 22ed0 -u16 var8007ceb0[] = { - 0x0000, - 0x0101, - 0x0202, - 0x0303, - 0x0404, - 0x0505, - 0x0606, - 0x0707, - 0x0808, - 0x0909, - 0x0a0a, - 0x0b0b, - 0x0c0c, - 0x0d0d, - 0x0e0e, - 0x0f0f, - 0x1010, - 0x1111, - 0x1213, - 0x1312, - 0x1415, - 0x1514, - 0x1617, - 0x1716, - 0x1819, - 0x1918, - 0x1a1b, - 0x1b1a, - 0x1c1d, - 0x1d1c, -}; - -// 22f0c -struct modeltype g_ModelType22 = { - MODELTYPE_22, 30, var8007ceb0, -}; - -// 22f14 -u16 var8007cef4[] = { - 0x0000, - 0x0102, - 0x0201, -}; - -// 22f1c -struct modeltype g_ModelTypeRobot = { - MODELTYPE_ROBOT, 3, var8007cef4, -}; - -// 22f24 -struct headorbody g_HeadsAndBodies[] = { - // ismale - // | height - // | | -#if VERSION >= VERSION_NTSC_1_0 - { /*0x0000*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CDJBOND, 1, 1.0446009635925, 0, FILE_GHAND_DDSECURITY }, - { /*0x0001*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CCONNERY, 1, 1.0300469398499, 0, FILE_GHAND_MRBLONDE }, - { /*0x0002*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 165, FILE_CDALTON, 1, 1.0572769641876, 0, FILE_GHAND_DDSECURITY }, - { /*0x0003*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CMOORE, 1, 1.0399061441422, 0, FILE_GHAND_DDSECURITY }, -#else - { /*0x0000*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CDJBOND, 1, 1.0446009635925, 0, FILE_GHAND_DDSECURITY }, - { /*0x0001*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CCONNERY, 1, 1.0300469398499, 0, FILE_GHAND_MRBLONDE }, - { /*0x0002*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CDALTON, 1, 1.0572769641876, 0, FILE_GHAND_DDSECURITY }, - { /*0x0003*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CMOORE, 1, 1.0399061441422, 0, FILE_GHAND_DDSECURITY }, -#endif - { /*0x0004*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARK_COMBAT, 1, 1, 0, 0 }, - { /*0x0005*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADELVIS, 1, 1, 0, 0 }, - { /*0x0006*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADROSS, 1, 1, 0, 0 }, - { /*0x0007*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADCARRINGTON, 1, 1, 0, 0 }, - { /*0x0008*/ 1, 1, 0, HEADBODYTYPE_MRBLONDE, 13, FILE_CHEADMRBLONDE, 1, 1, 0, 0 }, - { /*0x0009*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADTRENT, 1, 1, 0, 0 }, - { /*0x000a*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDDSHOCK, 1, 1, 0, 0 }, - { /*0x000b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADGRAHAM, 1, 1, 0, 0 }, - { /*0x000c*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARK_FROCK, 1, 1, 0, 0 }, - { /*0x000d*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADSECRETARY, 1, 1, 0, 0 }, - { /*0x000e*/ 0, 1, 0, HEADBODYTYPE_CASS, 13, FILE_CHEADCASSANDRA, 1, 1, 0, 0 }, - { /*0x000f*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADTHEKING, 1, 1, 0, 0 }, - { /*0x0010*/ 0, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADFEM_GUARD, 1, 1, 0, 0 }, - { /*0x0011*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJON, 1, 1, 0, 0 }, - { /*0x0012*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMARK2, 1, 1, 0, 0 }, - { /*0x0013*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADCHRIST, 1, 1, 0, 0 }, - { /*0x0014*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADRUSS, 1, 1, 0, 0 }, - { /*0x0015*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 13, FILE_CHEADGREY, 1, 1, 0, 0 }, - { /*0x0016*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDARLING, 1, 1, 0, 0 }, - { /*0x0017*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADROBERT, 1, 1, 0, 0 }, - { /*0x0018*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, - { /*0x0019*/ 0, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADFEM_GUARD2, 1, 1, 0, 0 }, - { /*0x001a*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBRIAN, 1, 1, 0, 0 }, - { /*0x001b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJAMIE, 1, 1, 0, 0 }, - { /*0x001c*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDUNCAN2, 1, 1, 0, 0 }, - { /*0x001d*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBIOTECH, 1, 1, 0, 0 }, - { /*0x001e*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADNEIL2, 1, 1, 0, 0 }, - { /*0x001f*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADEDMCG, 1, 1, 0, 0 }, - { /*0x0020*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADANKA, 1, 1, 0, 0 }, - { /*0x0021*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADLESLIE_S, 1, 1, 0, 0 }, - { /*0x0022*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMATT_C, 1, 1, 0, 0 }, - { /*0x0023*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPEER_S, 1, 1, 0, 0 }, - { /*0x0024*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADEILEEN_T, 1, 1, 0, 0 }, - { /*0x0025*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADANDY_R, 1, 1, 0, 0 }, - { /*0x0026*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEN_R, 1, 1, 0, 0 }, - { /*0x0027*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSTEVE_K, 1, 1, 0, 0 }, - { /*0x0028*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJONATHAN, 1, 1, 0, 0 }, - { /*0x0029*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADMAIAN_S, 1, 1, 0, 0 }, - { /*0x002a*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSHAUN, 1, 1, 0, 0 }, - { /*0x002b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, - { /*0x002c*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADEILEEN_H, 1, 1, 0, 0 }, - { /*0x002d*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSCOTT_H, 1, 1, 0, 0 }, - { /*0x002e*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSANCHEZ, 1, 1, 0, 0 }, - { /*0x002f*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARKAQUA, 1, 1, 0, 0 }, - { /*0x0030*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDDSNIPER, 1, 1, 0, 0 }, - { /*0x0031*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, - { /*0x0032*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, - { /*0x0033*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, - { /*0x0034*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, - { /*0x0035*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADGRIFFEY, 1, 1, 0, 0 }, - { /*0x0036*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMOTO, 1, 1, 0, 0 }, - { /*0x0037*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADKEITH, 1, 1, 0, 0 }, - { /*0x0038*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADWINNER, 1, 1, 0, 0 }, - { /*0x0039*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CA51FACEPLATE, 1, 1, 0, 0 }, - { /*0x003a*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADELVIS_GOGS, 1, 1, 0, 0 }, - { /*0x003b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSTEVEM, 1, 1, 0, 0 }, - { /*0x003c*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARK_SNOW, 1, 1, 0, 0 }, - { /*0x003d*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPRESIDENT, 1, 1, 0, 0 }, - { /*0x003e*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEAD_VD, 1, 1, 0, 0 }, - { /*0x003f*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADKEN, 1, 1, 0, 0 }, - { /*0x0040*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJOEL, 1, 1, 0, 0 }, - { /*0x0041*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADTIM, 1, 1, 0, 0 }, - { /*0x0042*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADGRANT, 1, 1, 0, 0 }, - { /*0x0043*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPENNY, 1, 1, 0, 0 }, - { /*0x0044*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADROBIN, 1, 1, 0, 0 }, - { /*0x0045*/ 0, 1, 0, HEADBODYTYPE_FEMALEGUARD, 13, FILE_CHEADALEX, 1, 1, 0, 0 }, - { /*0x0046*/ 0, 1, 0, HEADBODYTYPE_FEMALEGUARD, 13, FILE_CHEADJULIANNE, 1, 1, 0, 0 }, - { /*0x0047*/ 0, 1, 0, HEADBODYTYPE_FEMALEGUARD, 13, FILE_CHEADLAURA, 1, 1, 0, 0 }, - { /*0x0048*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDAVEC, 1, 1, 0, 0 }, - { /*0x0049*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADCOOK, 1, 1, 0, 0 }, - { /*0x004a*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPRYCE, 1, 1, 0, 0 }, - { /*0x004b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSILKE, 1, 1, 0, 0 }, - { /*0x004c*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSMITH, 1, 1, 0, 0 }, - { /*0x004d*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADGARETH, 1, 1, 0, 0 }, - { /*0x004e*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMURCHIE, 1, 1, 0, 0 }, - { /*0x004f*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADWONG, 1, 1, 0, 0 }, - { /*0x0050*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADCARTER, 1, 1, 0, 0 }, - { /*0x0051*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADTINTIN, 1, 1, 0, 0 }, - { /*0x0052*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMUNTON, 1, 1, 0, 0 }, - { /*0x0053*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSTAMPER, 1, 1, 0, 0 }, - { /*0x0054*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJONES, 1, 1, 0, 0 }, - { /*0x0055*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPHELPS, 1, 1, 0, 0 }, - { /*0x0056*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_COMBAT, 1, 0.95305162668228, 0, FILE_GCOMBATHANDSLOD }, - { /*0x0057*/ 1, 0, 0, HEADBODYTYPE_MAIAN, 106, FILE_CELVIS1, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, - { /*0x0058*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CAREA51GUARD, 1, 0.92769956588745, 0, FILE_GHAND_A51GUARD }, - { /*0x0059*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_COVERALL, 1, 0.92769956588745, 0, FILE_GHAND_A51GUARD }, - { /*0x005a*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 154, FILE_CCARRINGTON, 1, 0.85915493965149, 0, FILE_GHAND_CARRINGTON }, -#if VERSION >= VERSION_NTSC_1_0 - { /*0x005b*/ 1, 0, 0, HEADBODYTYPE_MRBLONDE, 169, FILE_CMRBLONDE, 1, 1.1032863855362, 0, FILE_GHAND_MRBLONDE }, -#else - { /*0x005b*/ 1, 0, 0, HEADBODYTYPE_MRBLONDE, 175, FILE_CMRBLONDE, 1, 1.1032863855362, 0, FILE_GHAND_MRBLONDE }, -#endif - { /*0x005c*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CSKEDAR, 1, 1, 0, 0 }, - { /*0x005d*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 161, FILE_CTRENT, 1, 0.93896716833115, 0, FILE_GHAND_TRENT }, - { /*0x005e*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CDDSHOCK, 1, 0.93896716833115, 0, FILE_GHAND_DDFODDER }, - { /*0x005f*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CLABTECH, 1, 0.93896716833115, 0, FILE_GHAND_MRBLONDE }, - { /*0x0060*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 158, FILE_CSTRIPES, 1, 0.92769956588745, 0, FILE_GHAND_BLACKGUARD }, - { /*0x0061*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_FROCK, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK }, - { /*0x0062*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_TRENCH, 1, 0.95305162668228, 0, FILE_GHAND_JOTRENCH }, - { /*0x0063*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 157, FILE_COFFICEWORKER, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK }, - { /*0x0064*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 157, FILE_COFFICEWORKER2, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK }, - { /*0x0065*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 140, FILE_CSECRETARY, 1, 0.87323945760727, 0, FILE_GHAND_JOFROCK }, -#if VERSION >= VERSION_NTSC_1_0 - { /*0x0066*/ 0, 0, 0, HEADBODYTYPE_CASS, 167, FILE_CCASSANDRA, 1, 0.98591554164886, 0, FILE_GHAND_VRIES }, -#else - { /*0x0066*/ 0, 0, 0, HEADBODYTYPE_CASS, 169, FILE_CCASSANDRA, 1, 0.98591554164886, 0, FILE_GHAND_VRIES }, -#endif - { /*0x0067*/ 1, 0, 0, HEADBODYTYPE_MAIAN, 106, FILE_CTHEKING, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, - { /*0x0068*/ 0, 0, 1, HEADBODYTYPE_FEMALEGUARD, 160, FILE_CFEM_GUARD, 1, 0.96713620424271, 0, FILE_GHAND_JOTRENCH }, - { /*0x0069*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CDD_LABTECH, 1, 0.93896716833115, 0, FILE_GHAND_DDLABTECH }, - { /*0x006a*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 160, FILE_CDD_SECGUARD, 1, 0.93427228927612, 0, FILE_GHAND_DDSECURITY }, - { /*0x006b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CDRCARROLL, 1, 1, 0, 0 }, - { /*0x006c*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CEYESPY, 1, 1, 0, 0 }, - { /*0x006d*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_RIPPED, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK }, - { /*0x006e*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 160, FILE_CDD_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_DDSECURITY }, - { /*0x006f*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CDD_SHOCK_INF, 1, 0.93896716833115, 0, FILE_GHAND_DDSHOCK }, - { /*0x0070*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CTESTCHR, 1, 1, 0, 0 }, - { /*0x0071*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 155, FILE_CBIOTECH, 1, 0.93896716833115, 0, FILE_GHAND_DDBIO }, - { /*0x0072*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CFBIGUY, 1, 0.93896716833115, 0, FILE_GHAND_FBIARM }, - { /*0x0073*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CCIAGUY, 1, 0.93896716833115, 0, FILE_GHAND_CIA }, - { /*0x0074*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CA51TROOPER, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK }, - { /*0x0075*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 157, FILE_CA51AIRMAN, 1, 0.93896716833115, 0, FILE_GHAND_A51AIRMAN }, - { /*0x0076*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CCHICROB, 1, 1, 0, 0 }, - { /*0x0077*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 153, FILE_CSTEWARD, 1, 0.89201879501343, 0, FILE_GHAND_JOFROCK }, - { /*0x0078*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 143, FILE_CSTEWARDESS, 1, 0.85446006059647, 0, FILE_GHAND_JOFROCK }, - { /*0x0079*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPRESIDENT, 1, 0.93896716833115, 0, FILE_GHAND_PRESIDENT }, - { /*0x007a*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 143, FILE_CSTEWARDESS_COAT, 1, 0.85446006059647, 0, FILE_GHAND_STEWARDESS_COAT }, - { /*0x007b*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CMINISKEDAR, 0.75, 0.5, 0, 0 }, - { /*0x007c*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CNSA_LACKEY, 1, 0.93896716833115, 0, FILE_GHAND_CARRINGTON }, - { /*0x007d*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPRES_SECURITY, 1, 0.93896716833115, 0, FILE_GHAND_CARRINGTON }, - { /*0x007e*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 142, FILE_CNEGOTIATOR, 1, 0.85446006059647, 0, FILE_GHAND_JOFROCK }, - { /*0x007f*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CG5_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_G5GUARD }, - { /*0x0080*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CPELAGIC_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_TRAGIC_PELAGIC }, - { /*0x0081*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 158, FILE_CG5_SWAT_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_G5GUARD }, - { /*0x0082*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 158, FILE_CALASKAN_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_JOSNOW }, - { /*0x0083*/ 1, 0, 1, HEADBODYTYPE_MAIAN, 106, FILE_CMAIAN_SOLDIER, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, - { /*0x0084*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPRESIDENT_CLONE, 1, 0.93896716833115, 0, FILE_GCOMBATHANDSLOD }, - { /*0x0085*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPRESIDENT_CLONE, 1, 0.93896716833115, 0, FILE_GHAND_PRESIDENT }, - { /*0x0086*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_AF1, 1, 0.95305162668228, 0, FILE_GHAND_JOPILOT }, - { /*0x0087*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARKWET, 1, 0.95305162668228, 0, FILE_GHAND_JOWETSUIT }, - { /*0x0088*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARKAQUALUNG, 1, 0.95305162668228, 0, FILE_GHAND_JOWETSUIT }, - { /*0x0089*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARKSNOW, 1, 0.95305162668228, 0, FILE_GHAND_JOSNOW }, - { /*0x008a*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARKLAB, 1, 0.95305162668228, 0, FILE_GHAND_MRBLONDE }, - { /*0x008b*/ 0, 0, 1, HEADBODYTYPE_FEMALE, 159, FILE_CFEMLABTECH, 1, 0.87323945760727, 0, FILE_GHAND_MRBLONDE }, - { /*0x008c*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CDDSNIPER, 1, 0.93896716833115, 0, FILE_GHAND_DDSNIPER }, - { /*0x008d*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPILOTAF1, 1, 0.88262909650803, 0, FILE_GHAND_JOPILOT }, - { /*0x008e*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CCILABTECH, 1, 0.93896716833115, 0, FILE_GHAND_CIFEMTECH }, - { /*0x008f*/ 0, 0, 1, HEADBODYTYPE_FEMALE, 159, FILE_CCIFEMTECH, 1, 0.86854463815689, 0, FILE_GHAND_CIFEMTECH }, - { /*0x0090*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CCARREVENINGSUIT, 1, 0.85915493965149, 0, FILE_GHAND_MRBLONDE }, - { /*0x0091*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CJONATHON, 1, 0.93896716833115, 0, FILE_GHAND_A51GUARD }, - { /*0x0092*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CCISOLDIER, 1, 0.93896716833115, 0, FILE_GHAND_CISOLDIER }, - { /*0x0093*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CSKEDARKING, 1, 1.25, 0, 0 }, - { /*0x0094*/ 1, 0, 0, HEADBODYTYPE_MAIAN, 106, FILE_CELVISWAISTCOAT, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, - { /*0x0095*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_LEATHER, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK }, - { /*0x0096*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_NEGOTIATOR, 1, 0.95305162668228, 0, FILE_GHAND_JOAF1 }, - { /*0x0097*/ 0, 0, 0, HEADBODYTYPE_DEFAULT, 0, 0, 1, 0, 0, FILE_GCOMBATHANDSLOD }, -}; - -// [headnum][hattype] -struct hatposition var8007dae4[1][6] = { - { - // HEAD_SHAUN - { -0.070299997925758, 0.49189999699593, -0.83359998464584, 1.072811961174, 1.0883259773254, 0.92612099647522 }, - { -0.10000000149012, 0.42750000953674, -0.48249998688698, 1.0333679914474, 0.96552097797394, 0.92990499734879 }, - { 0.18000000715256, 0, 0, 1.0722140073776, 1, 1 }, - { 0.23700000345707, 0.97699999809265, -0.43999999761581, 1.1784629821777, 1.1406099796295, 1.1434650421143 }, - { -0.090300001204014, 0.23190000653267, 0.12639999389648, 0.99080002307892, 1.0199999809265, 0.84659999608994 }, - { 0, 0.14849999547005, 0.37929999828339, 1.1548000574112, 0.99190002679825, 0.95139998197556 }, - } -}; - -u32 var8007db74 = 0x00000000; -u32 var8007db78 = 0x00000000; -u32 var8007db7c = 0x00000000; -f32 var8007db80 = 0; -f32 var8007db84 = 1; -u32 var8007db88 = 0x00000000; -u32 var8007db8c = 0x00000000; -u32 var8007db90 = 0x00000000; -u32 var8007db94 = 0x00000000; -u32 var8007db98 = 0x00000000; -u32 var8007db9c = 0x00000000; -u32 var8007dba0 = 0x00000010; -u32 var8007dba4 = 0x00000020; -u32 var8007dba8 = 0x0000000c; -u32 var8007dbac = 0x00000020; -u32 var8007dbb0 = 0x00000018; -u32 var8007dbb4 = 0x00000040; -u32 var8007dbb8 = 0x0000003c; -u32 var8007dbbc = 0x00000050; -u32 var8007dbc0 = 0x000000e1; -u32 var8007dbc4 = 0x00000113; -u32 var8007dbc8 = 0x000001d6; -u32 var8007dbcc = 0x0000023a; -u32 var8007dbd0 = 0xff99ffff; -u32 var8007dbd4 = 0x9999ffff; -u32 var8007dbd8 = 0x99ffffff; -u32 var8007dbdc = 0x99ff99ff; -u32 var8007dbe0 = 0xffff99ff; -u32 var8007dbe4 = 0xff9999ff; -u32 var8007dbe8 = 0x00000000; -u32 var8007dbec = 0x00000000; -u32 var8007dbf0 = 0x00000000; -u32 var8007dbf4 = 0x00000000; -u32 var8007dbf8 = 0x00000000; -u32 var8007dbfc = 0x3f800000; -u32 var8007dc00 = 0x00000000; -u32 var8007dc04 = 0x3f800000; -u32 var8007dc08 = 0x00000000; -u32 var8007dc0c = 0x00000000; diff --git a/src/game/data/ailists.c b/src/game/gailists.c similarity index 99% rename from src/game/data/ailists.c rename to src/game/gailists.c index e58008cce..a50ae8dee 100644 --- a/src/game/data/ailists.c +++ b/src/game/gailists.c @@ -6,6 +6,16 @@ #include "data.h" #include "types.h" +/** + * gailists - Global AI Lists + * + * AI lists are bytecode that is interpreted by the game engine to implement AI. + * The u8 arrays below make heavy use of macros for readability purposes. + * + * The file contains the AI lists that are common to all stages such as general + * guard combat. + */ + u8 func0000_idle[] = { dprint 'd','y','e','n','g',0, beginloop(0x0d) diff --git a/src/game/game_000130.c b/src/game/game_000130.c index 6d8fa8a9e..1e572b5cb 100644 --- a/src/game/game_000130.c +++ b/src/game/game_000130.c @@ -46,7 +46,7 @@ u16 func0f0002a0(s16 animnum, s32 frame, s32 endframe) u16 count = 0; while (frame < endframe) { - count += anim0002485c(0, 0, &g_ModelTypeChr, animnum, frame, sp48, 0); + count += anim0002485c(0, 0, &g_SkelChr, animnum, frame, sp48, 0); frame++; } @@ -59,7 +59,7 @@ s32 func0f000358(s16 animnum, s32 frame, s32 endframe) s16 sp44[4]; while (frame < endframe) { - anim0002485c(0, 0, &g_ModelTypeChr, animnum, frame, sp44, 0); + anim0002485c(0, 0, &g_SkelChr, animnum, frame, sp44, 0); count += sp44[2]; frame++; } diff --git a/src/game/game_0125a0.c b/src/game/game_0125a0.c index 83d9eb588..948fb169d 100644 --- a/src/game/game_0125a0.c +++ b/src/game/game_0125a0.c @@ -22,7 +22,7 @@ void func0f0125a0(s16 animnum, s32 loopframe, s32 endframe, s32 *arg3) arg3[2] = 0; while (loopframe < endframe) { - anim0002485c(0, 0, &g_ModelTypeChr, animnum, loopframe, sp48, 0); + anim0002485c(0, 0, &g_SkelChr, animnum, loopframe, sp48, 0); arg3[0] += sp48[0]; arg3[1] += sp48[1]; diff --git a/src/game/game_02cde0.c b/src/game/game_02cde0.c index 12ce273e5..3f3a03a21 100644 --- a/src/game/game_02cde0.c +++ b/src/game/game_02cde0.c @@ -234,8 +234,8 @@ glabel var7f1a8a84 /* f02cf4c: 056200b9 */ bltzl $t3,.L0f02d234 /* f02cf50: 8fa2005c */ lw $v0,0x5c($sp) /* f02cf54: 8d830004 */ lw $v1,0x4($t4) -/* f02cf58: 3c0d8008 */ lui $t5,%hi(g_ModelTypeChr) -/* f02cf5c: 25adce40 */ addiu $t5,$t5,%lo(g_ModelTypeChr) +/* f02cf58: 3c0d8008 */ lui $t5,%hi(g_SkelChr) +/* f02cf5c: 25adce40 */ addiu $t5,$t5,%lo(g_SkelChr) /* f02cf60: 15a30090 */ bne $t5,$v1,.L0f02d1a4 /* f02cf64: 01802025 */ or $a0,$t4,$zero /* f02cf68: 0c006a47 */ jal modelGetPart @@ -390,8 +390,8 @@ glabel var7f1a8a84 /* f02d19c: 10000024 */ b .L0f02d230 /* f02d1a0: e7aa0044 */ swc1 $f10,0x44($sp) .L0f02d1a4: -/* f02d1a4: 3c0d8008 */ lui $t5,%hi(g_ModelTypeSkedar) -/* f02d1a8: 25adce98 */ addiu $t5,$t5,%lo(g_ModelTypeSkedar) +/* f02d1a4: 3c0d8008 */ lui $t5,%hi(g_SkelSkedar) +/* f02d1a8: 25adce98 */ addiu $t5,$t5,%lo(g_SkelSkedar) /* f02d1ac: 15a30020 */ bne $t5,$v1,.L0f02d230 /* f02d1b0: 0002c080 */ sll $t8,$v0,0x2 /* f02d1b4: 0701001e */ bgez $t8,.L0f02d230 @@ -527,7 +527,7 @@ glabel var7f1a8a84 // modelCalculateRwDataLen(bodyfiledata); // // if (!g_HeadsAndBodies[bodynum].unk00_01) { -// if (bodyfiledata->type == &g_ModelTypeChr) { +// if (bodyfiledata->type == &g_SkelChr) { // node = modelGetPart(bodyfiledata, MODELPART_CHR_HEADSPOT); // // if (node != NULL) { @@ -575,7 +575,7 @@ glabel var7f1a8a84 // } // } // } -// } else if (bodyfiledata->type == &g_ModelTypeSkedar) { +// } else if (bodyfiledata->type == &g_SkelSkedar) { // if (g_HeadsAndBodies[bodynum].canvaryheight && varyheight && bodynum == BODY_SKEDAR) { // // Set height to between 65% and 85% // f32 frac = random() * (1.0f / U32_MAX); @@ -601,7 +601,7 @@ glabel var7f1a8a84 // // func0f0b32a0(model, node, headfiledata); // -// if ((s16)*(s32 *)&headfiledata->type == MODELTYPE_HEAD) { +// if ((s16)*(s32 *)&headfiledata->type == SKEL_HEAD) { // struct modelnode *node2; // // if (!sunglasses) { @@ -982,7 +982,7 @@ void bodyCalculateHeadOffset(struct modelfiledata *headfiledata, s32 headnum, s3 struct modelrodata_bbox *bbox; s32 i; - if ((s16)(*(s32 *)&headfiledata->type) == MODELTYPE_HEAD) { + if ((s16)(*(s32 *)&headfiledata->skel) == SKEL_HEAD) { if (g_HeadsAndBodies[headnum].type == g_HeadsAndBodies[bodynum].type) { return; } diff --git a/src/game/game_0b69d0.c b/src/game/game_0b69d0.c index 0966ee9c0..204a7c2a6 100644 --- a/src/game/game_0b69d0.c +++ b/src/game/game_0b69d0.c @@ -3893,7 +3893,7 @@ void func0f0ba190(u32 arg0) anim00023d38(g_CutsceneAnimNum); sp7f = anim00023ab0(g_CutsceneAnimNum, lastframe); anim00023d0c(); - anim00024050(0, 0, &g_ModelType20, g_CutsceneAnimNum, sp7f, &sp94, &sp88, &sp7c); + anim00024050(0, 0, &g_Skel20, g_CutsceneAnimNum, sp7f, &sp94, &sp88, &sp7c); mtx4LoadRotation(&sp94, &sp38); theta = atan2f(-sp38.m[2][0], -sp38.m[2][2]); @@ -3984,7 +3984,7 @@ void func0f0ba29c(bool arg0) g_Vars.in_cutscene = (g_Vars.tickmode == TICKMODE_CUTSCENE && g_CutsceneCurAnimFrame60 < endframe); sp15f = anim00023ab0(g_CutsceneAnimNum, g_CutsceneCurAnimFrame60); anim00023d0c(); - anim00024050(0, 0, &g_ModelType20, g_CutsceneAnimNum, sp15f, &sp178, &sp16c, &sp160); + anim00024050(0, 0, &g_Skel20, g_CutsceneAnimNum, sp15f, &sp178, &sp16c, &sp160); pos.x = sp16c.x * sp118; pos.y = sp16c.y * sp118; @@ -15260,7 +15260,7 @@ s32 playerTick(struct prop *prop) chr0f0220ac(prop->chr); if (prop->flags & PROPFLAG_ONTHISSCREENTHISTICK) { - if (player->model00d4->filedata->type == &g_ModelTypeChr) { + if (player->model00d4->filedata->skel == &g_SkelChr) { spe8 = player->model00d4->matrices; } else { spe8 = player->model00d4->matrices; diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index b14f14c0a..5aca99241 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -8134,8 +8134,8 @@ glabel var7f1b2948 /* f0f3df8: 240a0001 */ addiu $t2,$zero,0x1 /* f0f3dfc: afaa02f4 */ sw $t2,0x2f4($sp) /* f0f3e00: 8e040054 */ lw $a0,0x54($s0) -/* f0f3e04: 3c0b8008 */ lui $t3,%hi(g_ModelTypeChr) -/* f0f3e08: 256bce40 */ addiu $t3,$t3,%lo(g_ModelTypeChr) +/* f0f3e04: 3c0b8008 */ lui $t3,%hi(g_SkelChr) +/* f0f3e08: 256bce40 */ addiu $t3,$t3,%lo(g_SkelChr) /* f0f3e0c: 8c8e0004 */ lw $t6,0x4($a0) /* f0f3e10: 556e002f */ bnel $t3,$t6,.L0f0f3ed0 /* f0f3e14: 8faf02f4 */ lw $t7,0x2f4($sp) @@ -8999,8 +8999,8 @@ glabel var7f1b2948 /* f0f4ab4: 0c0073af */ jal model0001cebc /* f0f4ab8: afaf03c8 */ sw $t7,0x3c8($sp) /* f0f4abc: 8e040054 */ lw $a0,0x54($s0) -/* f0f4ac0: 3c188008 */ lui $t8,%hi(g_ModelTypeHudPiece) -/* f0f4ac4: 2718cc34 */ addiu $t8,$t8,%lo(g_ModelTypeHudPiece) +/* f0f4ac0: 3c188008 */ lui $t8,%hi(g_SkelHudPiece) +/* f0f4ac4: 2718cc34 */ addiu $t8,$t8,%lo(g_SkelHudPiece) /* f0f4ac8: 8c990004 */ lw $t9,0x4($a0) /* f0f4acc: 57190092 */ bnel $t8,$t9,.L0f0f4d18 /* f0f4ad0: 8fb80440 */ lw $t8,0x440($sp) diff --git a/src/game/game_11f000.c b/src/game/game_11f000.c index 1fb926f94..0f2f9c8f3 100644 --- a/src/game/game_11f000.c +++ b/src/game/game_11f000.c @@ -50,6 +50,41 @@ u32 var800a3424; u32 var800a3428; u32 var800a342c; +f32 var8007db80 = 0; +f32 var8007db84 = 1; +u32 var8007db88 = 0x00000000; +u32 var8007db8c = 0x00000000; +u32 var8007db90 = 0x00000000; +u32 var8007db94 = 0x00000000; +u32 var8007db98 = 0x00000000; +u32 var8007db9c = 0x00000000; +u32 var8007dba0 = 0x00000010; +u32 var8007dba4 = 0x00000020; +u32 var8007dba8 = 0x0000000c; +u32 var8007dbac = 0x00000020; +u32 var8007dbb0 = 0x00000018; +u32 var8007dbb4 = 0x00000040; +u32 var8007dbb8 = 0x0000003c; +u32 var8007dbbc = 0x00000050; +u32 var8007dbc0 = 0x000000e1; +u32 var8007dbc4 = 0x00000113; +u32 var8007dbc8 = 0x000001d6; +u32 var8007dbcc = 0x0000023a; +u32 var8007dbd0 = 0xff99ffff; +u32 var8007dbd4 = 0x9999ffff; +u32 var8007dbd8 = 0x99ffffff; +u32 var8007dbdc = 0x99ff99ff; +u32 var8007dbe0 = 0xffff99ff; +u32 var8007dbe4 = 0xff9999ff; +u32 var8007dbe8 = 0x00000000; +u32 var8007dbec = 0x00000000; +u32 var8007dbf0 = 0x00000000; +u32 var8007dbf4 = 0x00000000; +u32 var8007dbf8 = 0x00000000; +u32 var8007dbfc = 0x3f800000; +u32 var8007dc00 = 0x00000000; +u32 var8007dc04 = 0x3f800000; + GLOBAL_ASM( glabel func0f11f000 /* f11f000: 27bdffd8 */ addiu $sp,$sp,-40 diff --git a/src/game/game_1a7560.c b/src/game/game_1a7560.c index d13f318da..d70cfa877 100644 --- a/src/game/game_1a7560.c +++ b/src/game/game_1a7560.c @@ -23,86 +23,86 @@ #include "data.h" #include "types.h" -struct modeltype *g_ModelTypes[] = { - &g_ModelTypeChr, - &g_ModelTypeClassicGun, - &g_ModelType06, - &g_ModelTypeUzi, - &g_ModelTypeBasic, - &g_ModelTypeCctv, - &g_ModelTypeWindowedDoor, - &g_ModelType11, - &g_ModelType12, - &g_ModelType13, - &g_ModelTypeTerminal, - &g_ModelTypeCiHub, - &g_ModelTypeAutogun, - &g_ModelType17, - &g_ModelType18, - &g_ModelType19, - &g_ModelType0A, - &g_ModelType0B, - &g_ModelTypeCasing, - &g_ModelTypeChrGun, - &g_ModelType0C, - &g_ModelTypeJoypad, - &g_ModelTypeLift, - &g_ModelTypeSkedar, - &g_ModelTypeLogo, - &g_ModelTypePdLogo, - &g_ModelTypeHoverbike, - &g_ModelTypeJumpship, - &g_ModelType20, - &g_ModelType21, - &g_ModelType22, - &g_ModelTypeLaptopGun, - &g_ModelTypeK7Avenger, - &g_ModelTypeChopper, - &g_ModelTypeFalcon2, - &g_ModelTypeKnife, - &g_ModelTypeDrCaroll, - &g_ModelTypeRope, - &g_ModelTypeCmp150, - &g_ModelTypeBanner, - &g_ModelTypeDragon, - &g_ModelTypeSuperDragon, - &g_ModelTypeRocket, - &g_ModelType4A, - &g_ModelTypeShotgun, - &g_ModelTypeFarsight, - &g_ModelType4D, - &g_ModelTypeReaper, - &g_ModelTypeDropship, - &g_ModelTypeMauler, - &g_ModelTypeDevastator, - &g_ModelTypeRobot, - &g_ModelTypePistol, - &g_ModelTypeAr34, - &g_ModelTypeMagnum, - &g_ModelTypeSlayerRocket, - &g_ModelTypeCyclone, - &g_ModelTypeSniperRifle, - &g_ModelTypeTranquilizer, - &g_ModelTypeCrossbow, - &g_ModelTypeHudPiece, - &g_ModelTypeTimedProxyMine, - &g_ModelTypePhoenix, - &g_ModelTypeCallisto, - &g_ModelTypeHand, - &g_ModelTypeRcp120, - &g_ModelTypeSkShuttle, - &g_ModelTypeLaser, - &g_ModelTypeMaianUfo, - &g_ModelTypeGrenade, - &g_ModelTypeCableCar, - &g_ModelTypeSubmarine, - &g_ModelTypeTarget, - &g_ModelTypeEcmMine, - &g_ModelTypeUplink, - &g_ModelTypeRareLogo, - &g_ModelTypeWireFence, - &g_ModelTypeRemoteMine, - &g_ModelTypeBB, +struct skeleton *g_Skeletons[] = { + &g_SkelChr, + &g_SkelClassicGun, + &g_Skel06, + &g_SkelUzi, + &g_SkelBasic, + &g_SkelCctv, + &g_SkelWindowedDoor, + &g_Skel11, + &g_Skel12, + &g_Skel13, + &g_SkelTerminal, + &g_SkelCiHub, + &g_SkelAutogun, + &g_Skel17, + &g_Skel18, + &g_Skel19, + &g_Skel0A, + &g_Skel0B, + &g_SkelCasing, + &g_SkelChrGun, + &g_Skel0C, + &g_SkelJoypad, + &g_SkelLift, + &g_SkelSkedar, + &g_SkelLogo, + &g_SkelPdLogo, + &g_SkelHoverbike, + &g_SkelJumpship, + &g_Skel20, + &g_Skel21, + &g_Skel22, + &g_SkelLaptopGun, + &g_SkelK7Avenger, + &g_SkelChopper, + &g_SkelFalcon2, + &g_SkelKnife, + &g_SkelDrCaroll, + &g_SkelRope, + &g_SkelCmp150, + &g_SkelBanner, + &g_SkelDragon, + &g_SkelSuperDragon, + &g_SkelRocket, + &g_Skel4A, + &g_SkelShotgun, + &g_SkelFarsight, + &g_Skel4D, + &g_SkelReaper, + &g_SkelDropship, + &g_SkelMauler, + &g_SkelDevastator, + &g_SkelRobot, + &g_SkelPistol, + &g_SkelAr34, + &g_SkelMagnum, + &g_SkelSlayerRocket, + &g_SkelCyclone, + &g_SkelSniperRifle, + &g_SkelTranquilizer, + &g_SkelCrossbow, + &g_SkelHudPiece, + &g_SkelTimedProxyMine, + &g_SkelPhoenix, + &g_SkelCallisto, + &g_SkelHand, + &g_SkelRcp120, + &g_SkelSkShuttle, + &g_SkelLaser, + &g_SkelMaianUfo, + &g_SkelGrenade, + &g_SkelCableCar, + &g_SkelSubmarine, + &g_SkelTarget, + &g_SkelEcmMine, + &g_SkelUplink, + &g_SkelRareLogo, + &g_SkelWireFence, + &g_SkelRemoteMine, + &g_SkelBB, }; @@ -237,10 +237,10 @@ void modelPromoteTypeToPointer(struct modelfiledata *filedata) { s32 i; - if ((u32)filedata->type < 0x10000) { - for (i = 0; g_ModelTypes[i] != NULL; i++) { - if ((s16)filedata->type == g_ModelTypes[i]->type) { - filedata->type = g_ModelTypes[i]; + if ((u32)filedata->skel < 0x10000) { + for (i = 0; g_Skeletons[i] != NULL; i++) { + if ((s16)filedata->skel == g_Skeletons[i]->skel) { + filedata->skel = g_Skeletons[i]; return; } } diff --git a/src/game/modeldata/basic.c b/src/game/modeldata/basic.c new file mode 100644 index 000000000..6158319fa --- /dev/null +++ b/src/game/modeldata/basic.c @@ -0,0 +1,32 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelBasicJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, +}; + +struct skeleton g_SkelBasic = { + SKEL_BASIC, ARRAYCOUNT(g_SkelBasicJoints), g_SkelBasicJoints, +}; diff --git a/src/game/modeldata/casing.c b/src/game/modeldata/casing.c new file mode 100644 index 000000000..96840fd4b --- /dev/null +++ b/src/game/modeldata/casing.c @@ -0,0 +1,12 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelCasingJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelCasing = { + SKEL_CASING, ARRAYCOUNT(g_SkelCasingJoints), g_SkelCasingJoints, +}; diff --git a/src/game/modeldata/chr.c b/src/game/modeldata/chr.c new file mode 100644 index 000000000..86891bbfa --- /dev/null +++ b/src/game/modeldata/chr.c @@ -0,0 +1,26 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelChrJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 4 }, + { 4, 3 }, + { 5, 6 }, + { 6, 5 }, + { 7, 8 }, + { 8, 7 }, + { 9, 10 }, + { 10, 9 }, + { 11, 12 }, + { 12, 11 }, + { 13, 14 }, + { 14, 13 }, +}; + +struct skeleton g_SkelChr = { + SKEL_CHR, ARRAYCOUNT(g_SkelChrJoints), g_SkelChrJoints, +}; diff --git a/src/game/modeldata/chrgun.c b/src/game/modeldata/chrgun.c new file mode 100644 index 000000000..73a246c99 --- /dev/null +++ b/src/game/modeldata/chrgun.c @@ -0,0 +1,13 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelChrGunJoints[][2] = { + { 0, 0 }, + { 1, 1 }, +}; + +struct skeleton g_SkelChrGun = { + SKEL_CHRGUN, ARRAYCOUNT(g_SkelChrGunJoints), g_SkelChrGunJoints, +}; diff --git a/src/game/modeldata/classicgun.c b/src/game/modeldata/classicgun.c new file mode 100644 index 000000000..99f3848db --- /dev/null +++ b/src/game/modeldata/classicgun.c @@ -0,0 +1,17 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelClassicGunJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 5, 5 }, + { 3, 3 }, + { 4, 4 }, +}; + +struct skeleton g_SkelClassicGun = { + SKEL_CLASSICGUN, ARRAYCOUNT(g_SkelClassicGunJoints), g_SkelClassicGunJoints, +}; diff --git a/src/game/modeldata/general.c b/src/game/modeldata/general.c new file mode 100644 index 000000000..9a027b47a --- /dev/null +++ b/src/game/modeldata/general.c @@ -0,0 +1,1315 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelDropshipJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, +}; + +struct skeleton g_SkelDropship = { + SKEL_DROPSHIP, ARRAYCOUNT(g_SkelDropshipJoints), g_SkelDropshipJoints, +}; + +u8 g_SkelSkShuttleJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, +}; + +struct skeleton g_SkelSkShuttle = { + SKEL_SKSHUTTLE, ARRAYCOUNT(g_SkelSkShuttleJoints), g_SkelSkShuttleJoints, +}; + +u8 g_SkelLiftJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelLift = { + SKEL_LIFT, ARRAYCOUNT(g_SkelLiftJoints), g_SkelLiftJoints, +}; + +u8 g_SkelCctvJoints[][2] = { + { 0, 0 }, + { 1, 1 }, +}; + +struct skeleton g_SkelCctv = { + SKEL_CCTV, ARRAYCOUNT(g_SkelCctvJoints), g_SkelCctvJoints, +}; + +u8 g_SkelTerminalJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelTerminal = { + SKEL_TERMINAL, ARRAYCOUNT(g_SkelTerminalJoints), g_SkelTerminalJoints, +}; + +u8 g_SkelCiHubJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelCiHub = { + SKEL_CIHUB, ARRAYCOUNT(g_SkelCiHubJoints), g_SkelCiHubJoints, +}; + +u8 g_Skel19Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, +}; + +struct skeleton g_Skel19 = { + SKEL_19, ARRAYCOUNT(g_Skel19Joints), g_Skel19Joints, +}; + +u8 g_SkelAutogunJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, +}; + +struct skeleton g_SkelAutogun = { + SKEL_AUTOGUN, ARRAYCOUNT(g_SkelAutogunJoints), g_SkelAutogunJoints, +}; + +u8 g_Skel11Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, +}; + +struct skeleton g_Skel11 = { + SKEL_11, ARRAYCOUNT(g_Skel11Joints), g_Skel11Joints, +}; + +u8 g_Skel13Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, +}; + +struct skeleton g_Skel13 = { + SKEL_13, ARRAYCOUNT(g_Skel13Joints), g_Skel13Joints, +}; + +u8 g_Skel18Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, +}; + +struct skeleton g_Skel18 = { + SKEL_18, ARRAYCOUNT(g_Skel18Joints), g_Skel18Joints, +}; + +u8 g_Skel12Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, +}; + +struct skeleton g_Skel12 = { + SKEL_12, ARRAYCOUNT(g_Skel12Joints), g_Skel12Joints, +}; + +u8 g_SkelWindowedDoorJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelWindowedDoor = { + SKEL_WINDOWEDDOOR, ARRAYCOUNT(g_SkelWindowedDoorJoints), g_SkelWindowedDoorJoints, +}; + +u8 g_Skel17Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, +}; + +struct skeleton g_Skel17 = { + SKEL_17, ARRAYCOUNT(g_Skel17Joints), g_Skel17Joints, +}; + +u8 g_Skel0CJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_Skel0C = { + SKEL_0C, ARRAYCOUNT(g_Skel0CJoints), g_Skel0CJoints, +}; + +u8 g_SkelLogoJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelLogo = { + SKEL_LOGO, ARRAYCOUNT(g_SkelLogoJoints), g_SkelLogoJoints, +}; + +u8 g_SkelPdLogoJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, +}; + +struct skeleton g_SkelPdLogo = { + SKEL_PDLOGO, ARRAYCOUNT(g_SkelPdLogoJoints), g_SkelPdLogoJoints, +}; + +u8 g_SkelHoverbikeJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelHoverbike = { + SKEL_HOVERBIKE, ARRAYCOUNT(g_SkelHoverbikeJoints), g_SkelHoverbikeJoints, +}; + +u8 g_SkelJumpshipJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, +}; + +struct skeleton g_SkelJumpship = { + SKEL_JUMPSHIP, ARRAYCOUNT(g_SkelJumpshipJoints), g_SkelJumpshipJoints, +}; + +u8 g_SkelChopperJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, +}; + +struct skeleton g_SkelChopper = { + SKEL_CHOPPER, ARRAYCOUNT(g_SkelChopperJoints), g_SkelChopperJoints, +}; + +u8 g_SkelRopeJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, +}; + +struct skeleton g_SkelRope = { + SKEL_ROPE, ARRAYCOUNT(g_SkelRopeJoints), g_SkelRopeJoints, +}; + +u8 g_SkelBannerJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, +}; + +struct skeleton g_SkelBanner = { + SKEL_BANNER, ARRAYCOUNT(g_SkelBannerJoints), g_SkelBannerJoints, +}; + +u8 g_SkelMaianUfoJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, +}; + +struct skeleton g_SkelMaianUfo = { + SKEL_MAIANUFO, ARRAYCOUNT(g_SkelMaianUfoJoints), g_SkelMaianUfoJoints, +}; + +u8 g_SkelCableCarJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, +}; + +struct skeleton g_SkelCableCar = { + SKEL_CABLECAR, ARRAYCOUNT(g_SkelCableCarJoints), g_SkelCableCarJoints, +}; + +u8 g_SkelSubmarineJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, +}; + +struct skeleton g_SkelSubmarine = { + SKEL_SUBMARINE, ARRAYCOUNT(g_SkelSubmarineJoints), g_SkelSubmarineJoints, +}; + +u8 g_SkelTargetJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelTarget = { + SKEL_TARGET, ARRAYCOUNT(g_SkelTargetJoints), g_SkelTargetJoints, +}; + +u8 g_SkelRareLogoJoints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_SkelRareLogo = { + SKEL_RARELOGO, ARRAYCOUNT(g_SkelRareLogoJoints), g_SkelRareLogoJoints, +}; + +u8 g_SkelWireFenceJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, +}; + +struct skeleton g_SkelWireFence = { + SKEL_WIREFENCE, ARRAYCOUNT(g_SkelWireFenceJoints), g_SkelWireFenceJoints, +}; + +u8 g_SkelBBJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, +}; + +struct skeleton g_SkelBB = { + SKEL_BB, ARRAYCOUNT(g_SkelBBJoints), g_SkelBBJoints, +}; + +struct modelstate g_ModelStates[441] = { + // file scale + /*0x0000*/ { NULL, FILE_PROOFGUN, 0x0199 }, + /*0x0001*/ { NULL, FILE_PGROUNDGUN, 0x0199 }, + /*0x0002*/ { NULL, FILE_PTVSCREEN, 0x0199 }, + /*0x0003*/ { NULL, FILE_PBORG_CRATE, 0x0199 }, + /*0x0004*/ { NULL, FILE_PWINDOW, 0x0199 }, + /*0x0005*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x0006*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x0007*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x0008*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x0009*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x000a*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x000b*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x000c*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x000d*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x000e*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x000f*/ { NULL, FILE_PA51_CRATE1, 0x0199 }, + /*0x0010*/ { NULL, FILE_PCRYPTDOOR1B, 0x1000 }, + /*0x0011*/ { NULL, FILE_PCHRBRIEFCASE, 0x0199 }, + /*0x0012*/ { NULL, FILE_PCHRBUG, 0x0199 }, + /*0x0013*/ { NULL, FILE_PCHRDATATHIEF, 0x0199 }, + /*0x0014*/ { NULL, FILE_PNINTENDOLOGO, 0x0199 }, + /*0x0015*/ { NULL, FILE_PDOOR_ROLLERTRAIN, 0x1000 }, + /*0x0016*/ { NULL, FILE_PFLAG, 0x0199 }, + /*0x0017*/ { NULL, FILE_PMODEMBOX, 0x0199 }, + /*0x0018*/ { NULL, FILE_PDOORCONSOLE, 0x0199 }, + /*0x0019*/ { NULL, FILE_PA51_HORIZ_DOOR_TOP, 0x1000 }, + /*0x001a*/ { NULL, FILE_PA51_HORIZ_DOOR_BOT, 0x1000 }, + /*0x001b*/ { NULL, FILE_PA51_VERT_DOOR_LEFT, 0x1000 }, + /*0x001c*/ { NULL, FILE_PA51_VERT_DOOR_RIGHT, 0x1000 }, + /*0x001d*/ { NULL, FILE_PA51_VERT_DOOR_ST, 0x1000 }, + /*0x001e*/ { NULL, FILE_PA51_HORIZ_DOOR_GL, 0x1000 }, + /*0x001f*/ { NULL, FILE_PA51_HORIZ_DOOR_SECRET, 0x1000 }, + /*0x0020*/ { NULL, FILE_PA51_CRATE1, 0x1000 }, + /*0x0021*/ { NULL, FILE_PA51_CRATE2, 0x1000 }, + /*0x0022*/ { NULL, FILE_PA51_CRATE3, 0x1000 }, + /*0x0023*/ { NULL, FILE_PA51_EXP1, 0x0199 }, + /*0x0024*/ { NULL, FILE_PA51_UNEXP1, 0x1000 }, + /*0x0025*/ { NULL, FILE_PA51_EXP2, 0x0199 }, + /*0x0026*/ { NULL, FILE_PA51_UNEXP2, 0x1000 }, + /*0x0027*/ { NULL, FILE_PA51_UNEXP3, 0x0199 }, + /*0x0028*/ { NULL, FILE_PAIVILLADOOR1, 0x1000 }, + /*0x0029*/ { NULL, FILE_PAIVILLADOOR2A, 0x1000 }, + /*0x002a*/ { NULL, FILE_PAIVILLADOOR4, 0x1000 }, + /*0x002b*/ { NULL, FILE_PA51_LIFT_HANGAR, 0x1000 }, + /*0x002c*/ { NULL, FILE_PA51_LIFT_CONTROL, 0x1000 }, + /*0x002d*/ { NULL, FILE_PA51_LIFT_STORE, 0x1000 }, + /*0x002e*/ { NULL, FILE_PA51_LIFT_THINWALL, 0x1000 }, + /*0x002f*/ { NULL, FILE_PAIVILLABOT1, 0x1000 }, + /*0x0030*/ { NULL, FILE_PAIVILLABOT2, 0x1000 }, + /*0x0031*/ { NULL, FILE_PAIVILLABOT3, 0x1000 }, + /*0x0032*/ { NULL, FILE_PAIVILLAWINDMILL, 0x1000 }, + /*0x0033*/ { NULL, FILE_PHOVERBED, 0x0199 }, + /*0x0034*/ { NULL, FILE_PMARKER, 0x1000 }, + /*0x0035*/ { NULL, FILE_PALDOOR_R, 0x1000 }, + /*0x0036*/ { NULL, FILE_PALDOOR_L, 0x1000 }, + /*0x0037*/ { NULL, FILE_PDD_LIFTR, 0x1000 }, + /*0x0038*/ { NULL, FILE_PDD_FANROOF, 0x1000 }, + /*0x0039*/ { NULL, FILE_PDD_FANWALL, 0x1000 }, + /*0x003a*/ { NULL, FILE_PHOVBIKE, 0x0199 }, + /*0x003b*/ { NULL, FILE_PDD_OFFICEDOOR, 0x1000 }, + /*0x003c*/ { NULL, FILE_PDD_PLANTRUBBER, 0x1000 }, + /*0x003d*/ { NULL, FILE_PDD_PLANTSPIKE, 0x1000 }, + /*0x003e*/ { NULL, FILE_PDD_PLANTSPIDER, 0x1000 }, + /*0x003f*/ { NULL, FILE_PDD_WINDOW, 0x1000 }, + /*0x0040*/ { NULL, FILE_PDD_REDSOFA, 0x1000 }, + /*0x0041*/ { NULL, FILE_PDD_REDARM, 0x1000 }, + /*0x0042*/ { NULL, FILE_PDD_SERVICEDOOR, 0x1000 }, + /*0x0043*/ { NULL, FILE_PDD_WINDDOOR, 0x1000 }, + /*0x0044*/ { NULL, FILE_PDD_LIFTDOOR, 0x1000 }, + /*0x0045*/ { NULL, FILE_PDD_VERTBLIND, 0x1000 }, + /*0x0046*/ { NULL, FILE_PDD_DESK, 0x1000 }, + /*0x0047*/ { NULL, FILE_PDD_CHAIR, 0x1000 }, + /*0x0048*/ { NULL, FILE_PNLOGO, 0x0199 }, + /*0x0049*/ { NULL, FILE_PNLOGO2, 0x0199 }, + /*0x004a*/ { NULL, FILE_PNLOGO3, 0x0199 }, + /*0x004b*/ { NULL, FILE_PPERFECTDARK, 0x0199 }, + /*0x004c*/ { NULL, FILE_PPDONE, 0x0199 }, + /*0x004d*/ { NULL, FILE_PPDTWO, 0x0199 }, + /*0x004e*/ { NULL, FILE_PPDTHREE, 0x0199 }, + /*0x004f*/ { NULL, FILE_PPDFOUR, 0x0199 }, + /*0x0050*/ { NULL, FILE_PDD_HOVCOP, 0x1000 }, + /*0x0051*/ { NULL, FILE_PDD_HOVMOTO, 0x1000 }, + /*0x0052*/ { NULL, FILE_PDD_HOVTRUCK, 0x1000 }, + /*0x0053*/ { NULL, FILE_PDD_HOVCAR, 0x1000 }, + /*0x0054*/ { NULL, FILE_PDD_HOVCAB, 0x1000 }, + /*0x0055*/ { NULL, FILE_PDD_AC_UNEXP, 0x1000 }, + /*0x0056*/ { NULL, FILE_PDD_AC_EXP, 0x1000 }, + /*0x0057*/ { NULL, FILE_PDD_ACBOT_UNEXP, 0x1000 }, + /*0x0058*/ { NULL, FILE_PDD_ACBOT_EXP, 0x1000 }, + /*0x0059*/ { NULL, FILE_PPC1, 0x1000 }, + /*0x005a*/ { NULL, FILE_PHOVERCRATE1, 0x1000 }, + /*0x005b*/ { NULL, FILE_PDROPSHIP, 0x0199 }, + /*0x005c*/ { NULL, FILE_PAL_AIRLOCK, 0x1000 }, + /*0x005d*/ { NULL, FILE_PAL_DOCKLIFT, 0x1000 }, + /*0x005e*/ { NULL, FILE_PCASE, 0x1000 }, + /*0x005f*/ { NULL, FILE_PDD_STONEDESK, 0x1000 }, + /*0x0060*/ { NULL, FILE_PMEDLABWIN1, 0x0199 }, + /*0x0061*/ { NULL, FILE_PMEDLABWIN2, 0x0199 }, + /*0x0062*/ { NULL, FILE_PA51TABLE, 0x1000 }, + /*0x0063*/ { NULL, FILE_PA51CHAIR, 0x1000 }, + /*0x0064*/ { NULL, FILE_PA51SCREEN, 0x1000 }, + /*0x0065*/ { NULL, FILE_PA51WASTEBIN, 0x1000 }, + /*0x0066*/ { NULL, FILE_PA51DESKENT, 0x0199 }, + /*0x0067*/ { NULL, FILE_PA51TROLLEY, 0x1000 }, + /*0x0068*/ { NULL, FILE_PA51DIVIDE, 0x1000 }, + /*0x0069*/ { NULL, FILE_PA51BOARD, 0x1000 }, + /*0x006a*/ { NULL, FILE_PSKCREV_EXP1, 0x1000 }, + /*0x006b*/ { NULL, FILE_PSKCREV_UNEXP1, 0x1000 }, + /*0x006c*/ { NULL, FILE_PSKTNL_EXP1, 0x1000 }, + /*0x006d*/ { NULL, FILE_PSKTNL_UNEXP1, 0x1000 }, + /*0x006e*/ { NULL, FILE_PSK_DOOR1, 0x1000 }, + /*0x006f*/ { NULL, FILE_PSK_SHIP_DOOR1, 0x1000 }, + /*0x0070*/ { NULL, FILE_PSK_SHIP_HOLO1, 0x1000 }, + /*0x0071*/ { NULL, FILE_PSK_SHIP_HOLO2, 0x1000 }, + /*0x0072*/ { NULL, FILE_PSK_SHIP_HULLDOOR1, 0x1000 }, + /*0x0073*/ { NULL, FILE_PSK_SHIP_HULLDOOR2, 0x1000 }, + /*0x0074*/ { NULL, FILE_PSK_SHIP_HULLDOOR3, 0x1000 }, + /*0x0075*/ { NULL, FILE_PSK_SHIP_HULLDOOR4, 0x1000 }, + /*0x0076*/ { NULL, FILE_PSK_FIGHTER1, 0x1000 }, + /*0x0077*/ { NULL, FILE_PSK_CRYOPOD1_TOP, 0x1000 }, + /*0x0078*/ { NULL, FILE_PSK_CRYOPOD1_BOT, 0x1000 }, + /*0x0079*/ { NULL, FILE_PSK_UNDER_GENERATOR, 0x1000 }, + /*0x007a*/ { NULL, FILE_PSK_UNDER_TRANS, 0x1000 }, + /*0x007b*/ { NULL, FILE_PSK_HANGARDOOR_TOP, 0x1000 }, + /*0x007c*/ { NULL, FILE_PSK_HANGARDOOR_BOT, 0x1000 }, + /*0x007d*/ { NULL, FILE_PDOOR2_G5, 0x1000 }, + /*0x007e*/ { NULL, FILE_PDOOR1A_G5, 0x1000 }, + /*0x007f*/ { NULL, FILE_PDOOR1B_G5, 0x1000 }, + /*0x0080*/ { NULL, FILE_PDOOR1ATRI_G5, 0x1000 }, + /*0x0081*/ { NULL, FILE_PDOOR2A_G5, 0x1000 }, + /*0x0082*/ { NULL, FILE_PDD_DECODOOR, 0x1000 }, + /*0x0083*/ { NULL, FILE_PDD_SECRETDOOR, 0x1000 }, + /*0x0084*/ { NULL, FILE_PDD_SECRETDOOR2, 0x1000 }, + /*0x0085*/ { NULL, FILE_PDDJUMPSHIP, 0x0199 }, + /*0x0086*/ { NULL, FILE_PTAXICAB, 0x0199 }, + /*0x0087*/ { NULL, FILE_PPOLICECAR, 0x0199 }, + /*0x0088*/ { NULL, FILE_PRAVINELIFT, 0x1000 }, + /*0x0089*/ { NULL, FILE_PDD_LAB_DOOR_BS, 0x1000 }, + /*0x008a*/ { NULL, FILE_PDD_LAB_DOOR_SEC, 0x1000 }, + /*0x008b*/ { NULL, FILE_PDD_LAB_DOOR_WIND, 0x1000 }, + /*0x008c*/ { NULL, FILE_PHOOVERBOT, 0x0800 }, + /*0x008d*/ { NULL, FILE_PTESTERBOT, 0x0800 }, + /*0x008e*/ { NULL, FILE_PDD_LAB_SECTOR2BOT, 0x1000 }, + /*0x008f*/ { NULL, FILE_PDD_LAB_SECTOR2TOP, 0x1000 }, + /*0x0090*/ { NULL, FILE_PDD_LAB_CAUTIONTOP, 0x1000 }, + /*0x0091*/ { NULL, FILE_PDD_LAB_HAZARD, 0x1000 }, + /*0x0092*/ { NULL, FILE_PDD_LAB_CAUTION, 0x1000 }, + /*0x0093*/ { NULL, FILE_PDR_CAROLL_DOOR, 0x1000 }, + /*0x0094*/ { NULL, FILE_PDD_LAB_SECTOR3TOP, 0x1000 }, + /*0x0095*/ { NULL, FILE_PDD_LAB_SECTOR3, 0x1000 }, + /*0x0096*/ { NULL, FILE_PDD_LAB_SECTOR3WIND, 0x1000 }, + /*0x0097*/ { NULL, FILE_PDD_HOVERCOPTER, 0x1000 }, + /*0x0098*/ { NULL, FILE_PDD_LAB_SECTOR4TOP, 0x1000 }, + /*0x0099*/ { NULL, FILE_PDD_LAB_RESTRICTED, 0x1000 }, + /*0x009a*/ { NULL, FILE_PDOOR4A_G5, 0x1000 }, + /*0x009b*/ { NULL, FILE_PDOOR4B_G5, 0x1000 }, + /*0x009c*/ { NULL, FILE_PLASDOOR, 0x1000 }, + /*0x009d*/ { NULL, FILE_PG5SAFEDOOR, 0x1000 }, + /*0x009e*/ { NULL, FILE_PROPE, 0x0199 }, + /*0x009f*/ { NULL, FILE_PG5_MAINFRAME, 0x1000 }, + /*0x00a0*/ { NULL, FILE_PDR_CAROLL_DOOR_BASE, 0x1000 }, + /*0x00a1*/ { NULL, FILE_PDR_CAROLL_DOOR_MAIN, 0x1000 }, + /*0x00a2*/ { NULL, FILE_PDR_CAROLL_DOOR_LEFT, 0x1000 }, + /*0x00a3*/ { NULL, FILE_PDR_CAROLL_DOOR_RIGHT, 0x1000 }, + /*0x00a4*/ { NULL, FILE_PDR_CAROLL_DOOR_BMAIN, 0x1000 }, + /*0x00a5*/ { NULL, FILE_PDR_CAROLL_DOOR_BLEFT, 0x1000 }, + /*0x00a6*/ { NULL, FILE_PDR_CAROLL_DOOR_BRIGHT, 0x1000 }, + /*0x00a7*/ { NULL, FILE_PDD_BANNER, 0x0199 }, + /*0x00a8*/ { NULL, FILE_PG5_ESCDOORUP, 0x1000 }, + /*0x00a9*/ { NULL, FILE_PG5_ESCDOORUPBOOM, 0x1000 }, + /*0x00aa*/ { NULL, FILE_PG5_ESCDOORDOWN, 0x1000 }, + /*0x00ab*/ { NULL, FILE_PG5_ESCDOORDOWNBOOM, 0x1000 }, + /*0x00ac*/ { NULL, FILE_PDUMPSTER, 0x1000 }, + /*0x00ad*/ { NULL, FILE_PG5CARLIFTDOOR, 0x1000 }, + /*0x00ae*/ { NULL, FILE_PCH_SHUTTER1, 0x1000 }, + /*0x00af*/ { NULL, FILE_PCCTV_PD, 0x1000 }, + /*0x00b0*/ { NULL, FILE_PCOMHUB, 0x1000 }, + /*0x00b1*/ { NULL, FILE_PQUADPOD, 0x1000 }, + /*0x00b2*/ { NULL, FILE_PPD_CONSOLE, 0x1000 }, + /*0x00b3*/ { NULL, FILE_PDD_GRATE, 0x1000 }, + /*0x00b4*/ { NULL, FILE_PLIFT_PLATFORM, 0x1000 }, + /*0x00b5*/ { NULL, FILE_PLIGHTSWITCH, 0x1000 }, + /*0x00b6*/ { NULL, FILE_PBLASTSHIELD, 0x1000 }, + /*0x00b7*/ { NULL, FILE_PLIGHTSWITCH2, 0x0199 }, + /*0x00b8*/ { NULL, FILE_PDD_ACCESSDOORUP, 0x1000 }, + /*0x00b9*/ { NULL, FILE_PDD_ACCESSDOORDN, 0x1000 }, + /*0x00ba*/ { NULL, FILE_PLAB_CONTAINER, 0x1000 }, + /*0x00bb*/ { NULL, FILE_PLAB_CHAIR, 0x1000 }, + /*0x00bc*/ { NULL, FILE_PLAB_TABLE, 0x1000 }, + /*0x00bd*/ { NULL, FILE_PLAB_MICROSCOPE, 0x1000 }, + /*0x00be*/ { NULL, FILE_PLAB_MAINFRAME, 0x1000 }, + /*0x00bf*/ { NULL, FILE_PDD_LABDOOR, 0x1000 }, + /*0x00c0*/ { NULL, FILE_PDD_LAB_DOORTOP, 0x1000 }, + /*0x00c1*/ { NULL, FILE_PMULTI_AMMO_CRATE, 0x1000 }, + /*0x00c2*/ { NULL, FILE_PCHRCHAIN, 0x1000 }, + /*0x00c3*/ { NULL, FILE_PTDOOR, 0x1000 }, + /*0x00c4*/ { NULL, FILE_PCI_SOFA, 0x1000 }, + /*0x00c5*/ { NULL, FILE_PCI_LIFT, 0x1000 }, + /*0x00c6*/ { NULL, FILE_PCI_LIFTDOOR, 0x1000 }, + /*0x00c7*/ { NULL, FILE_PLASERCUT, 0x0199 }, + /*0x00c8*/ { NULL, FILE_PSK_SHUTTLE, 0x0199 }, + /*0x00c9*/ { NULL, FILE_PNEWVILLADOOR, 0x1000 }, + /*0x00ca*/ { NULL, FILE_PSK_PILLARLEFT, 0x1000 }, + /*0x00cb*/ { NULL, FILE_PSK_PILLARRIGHT, 0x1000 }, + /*0x00cc*/ { NULL, FILE_PSK_PLINTH_T, 0x1000 }, + /*0x00cd*/ { NULL, FILE_PSK_PLINTH_ML, 0x1000 }, + /*0x00ce*/ { NULL, FILE_PSK_PLINTH_MR, 0x1000 }, + /*0x00cf*/ { NULL, FILE_PSK_PLINTH_BL, 0x1000 }, + /*0x00d0*/ { NULL, FILE_PSK_PLINTH_BR, 0x1000 }, + /*0x00d1*/ { NULL, FILE_PSK_FL_SHAD_T, 0x1000 }, + /*0x00d2*/ { NULL, FILE_PSK_FL_SHAD_ML, 0x1000 }, + /*0x00d3*/ { NULL, FILE_PSK_FL_SHAD_MR, 0x1000 }, + /*0x00d4*/ { NULL, FILE_PSK_FL_SHAD_BL, 0x1000 }, + /*0x00d5*/ { NULL, FILE_PSK_FL_SHAD_BR, 0x1000 }, + /*0x00d6*/ { NULL, FILE_PSK_FL_NOSHAD_T, 0x1000 }, + /*0x00d7*/ { NULL, FILE_PSK_FL_NOSHAD_ML, 0x1000 }, + /*0x00d8*/ { NULL, FILE_PSK_FL_NOSHAD_MR, 0x1000 }, + /*0x00d9*/ { NULL, FILE_PSK_FL_NOSHAD_BL, 0x1000 }, + /*0x00da*/ { NULL, FILE_PSK_FL_NOSHAD_BR, 0x1000 }, + /*0x00db*/ { NULL, FILE_PSK_TEMPLECOLUMN1, 0x1000 }, + /*0x00dc*/ { NULL, FILE_PSK_TEMPLECOLUMN2, 0x1000 }, + /*0x00dd*/ { NULL, FILE_PSK_TEMPLECOLUMN3, 0x1000 }, + /*0x00de*/ { NULL, FILE_PSK_SUNSHAD1, 0x1000 }, + /*0x00df*/ { NULL, FILE_PSK_SUNSHAD2, 0x1000 }, + /*0x00e0*/ { NULL, FILE_PSK_SUNNOSHAD1, 0x1000 }, + /*0x00e1*/ { NULL, FILE_PSK_SUNNOSHAD2, 0x1000 }, + /*0x00e2*/ { NULL, FILE_PBARREL, 0x1000 }, + /*0x00e3*/ { NULL, FILE_PGLASS_FLOOR, 0x0199 }, + /*0x00e4*/ { NULL, FILE_PESCA_STEP, 0x0199 }, + /*0x00e5*/ { NULL, FILE_PMATRIX_LIFT, 0x0199 }, + /*0x00e6*/ { NULL, FILE_PRUBBLE1, 0x1000 }, + /*0x00e7*/ { NULL, FILE_PRUBBLE2, 0x1000 }, + /*0x00e8*/ { NULL, FILE_PRUBBLE3, 0x1000 }, + /*0x00e9*/ { NULL, FILE_PRUBBLE4, 0x1000 }, + /*0x00ea*/ { NULL, FILE_PCABLE_CAR, 0x0199 }, + /*0x00eb*/ { NULL, FILE_PELVIS_SAUCER, 0x0199 }, + /*0x00ec*/ { NULL, FILE_PSTEWARDESS_TROLLEY, 0x0199 }, + /*0x00ed*/ { NULL, FILE_PAIRBASE_LIFT_ENCLOSED, 0x0199 }, + /*0x00ee*/ { NULL, FILE_PAIRBASE_LIFT_ANGLE, 0x0199 }, + /*0x00ef*/ { NULL, FILE_PAIRBASE_SAFEDOOR, 0x1000 }, + /*0x00f0*/ { NULL, FILE_PAF1_PILOTCHAIR, 0x0199 }, + /*0x00f1*/ { NULL, FILE_PAF1_PASSCHAIR, 0x0199 }, + /*0x00f2*/ { NULL, FILE_PTESTOBJ, 0x0199 }, + /*0x00f3*/ { NULL, FILE_PCHRNIGHTSIGHT, 0x0c00 }, + /*0x00f4*/ { NULL, FILE_PCHRSHIELD, 0x0199 }, + /*0x00f5*/ { NULL, FILE_PCHRFALCON2, 0x0199 }, + /*0x00f6*/ { NULL, FILE_PCHRLEEGUN1, 0x0199 }, + /*0x00f7*/ { NULL, FILE_PCHRMAULER, 0x0199 }, + /*0x00f8*/ { NULL, FILE_PCHRDY357, 0x0199 }, + /*0x00f9*/ { NULL, FILE_PCHRDY357TRENT, 0x0199 }, + /*0x00fa*/ { NULL, FILE_PCHRMAIANPISTOL, 0x0199 }, + /*0x00fb*/ { NULL, FILE_PCHRFALCON2SIL, 0x0199 }, + /*0x00fc*/ { NULL, FILE_PCHRFALCON2SCOPE, 0x0199 }, + /*0x00fd*/ { NULL, FILE_PCHRCMP150, 0x0199 }, + /*0x00fe*/ { NULL, FILE_PCHRAR34, 0x0199 }, + /*0x00ff*/ { NULL, FILE_PCHRDRAGON, 0x0199 }, + /*0x0100*/ { NULL, FILE_PCHRSUPERDRAGON, 0x0199 }, + /*0x0101*/ { NULL, FILE_PCHRAVENGER, 0x0199 }, + /*0x0102*/ { NULL, FILE_PCHRCYCLONE, 0x0199 }, + /*0x0103*/ { NULL, FILE_PCHRMAIANSMG, 0x0199 }, + /*0x0104*/ { NULL, FILE_PCHRRCP120, 0x0199 }, + /*0x0105*/ { NULL, FILE_PCHRPCGUN, 0x0199 }, + /*0x0106*/ { NULL, FILE_PCHRSHOTGUN, 0x0199 }, + /*0x0107*/ { NULL, FILE_PCHRSKMINIGUN, 0x0199 }, + /*0x0108*/ { NULL, FILE_PCHRDYROCKET, 0x0199 }, + /*0x0109*/ { NULL, FILE_PCHRDEVASTATOR, 0x0199 }, + /*0x010a*/ { NULL, FILE_PCHRSKROCKET, 0x0199 }, + /*0x010b*/ { NULL, FILE_PCHRZ2020, 0x0199 }, + /*0x010c*/ { NULL, FILE_PCHRSNIPERRIFLE, 0x0199 }, + /*0x010d*/ { NULL, FILE_PCHRCROSSBOW, 0x0199 }, + /*0x010e*/ { NULL, FILE_PCHRDRUGGUN, 0x0199 }, + /*0x010f*/ { NULL, FILE_PCHRKNIFE, 0x0199 }, + /*0x0110*/ { NULL, FILE_PCHRNBOMB, 0x0199 }, + /*0x0111*/ { NULL, FILE_PCHRFLASHBANG, 0x0199 }, + /*0x0112*/ { NULL, FILE_PCHRGRENADE, 0x0199 }, + /*0x0113*/ { NULL, FILE_PCHRTIMEDMINE, 0x0199 }, + /*0x0114*/ { NULL, FILE_PCHRPROXIMITYMINE, 0x0199 }, + /*0x0115*/ { NULL, FILE_PCHRREMOTEMINE, 0x0199 }, + /*0x0116*/ { NULL, FILE_PCHRECMMINE, 0x0199 }, + /*0x0117*/ { NULL, FILE_PCHRWPPK, 0x0199 }, + /*0x0118*/ { NULL, FILE_PCHRTT33, 0x0199 }, + /*0x0119*/ { NULL, FILE_PCHRSKORPION, 0x0199 }, + /*0x011a*/ { NULL, FILE_PCHRKALASH, 0x0199 }, + /*0x011b*/ { NULL, FILE_PCHRUZI, 0x0199 }, + /*0x011c*/ { NULL, FILE_PCHRMP5K, 0x0199 }, + /*0x011d*/ { NULL, FILE_PCHRM16, 0x0199 }, + /*0x011e*/ { NULL, FILE_PCHRFNP90, 0x0199 }, + /*0x011f*/ { NULL, FILE_PCHRDYROCKETMIS, 0x0199 }, + /*0x0120*/ { NULL, FILE_PCHRSKROCKETMIS, 0x0199 }, + /*0x0121*/ { NULL, FILE_PCHRCROSSBOLT, 0x0199 }, + /*0x0122*/ { NULL, FILE_PCHRDEVGRENADE, 0x0199 }, + /*0x0123*/ { NULL, FILE_PCHRDRAGGRENADE, 0x0199 }, + /*0x0124*/ { NULL, FILE_PA51_TURRET, 0x0199 }, + /*0x0125*/ { NULL, FILE_PPELAGICDOOR, 0x1000 }, + /*0x0126*/ { NULL, FILE_PAUTOSURGEON, 0x0199 }, + /*0x0127*/ { NULL, FILE_PLIMO, 0x0199 }, + /*0x0128*/ { NULL, FILE_PA51INTERCEPTOR, 0x0199 }, + /*0x0129*/ { NULL, FILE_PA51DISH, 0x0199 }, + /*0x012a*/ { NULL, FILE_PA51RADARCONSOLE, 0x0199 }, + /*0x012b*/ { NULL, FILE_PA51LOCKERDOOR, 0x0199 }, + /*0x012c*/ { NULL, FILE_PG5GENERATOR, 0x0199 }, + /*0x012d*/ { NULL, FILE_PG5DUMPSTER, 0x0199 }, + /*0x012e*/ { NULL, FILE_PCHRCLOAKER, 0x0199 }, + /*0x012f*/ { NULL, FILE_PCHRSPEEDPILL, 0x2800 }, + /*0x0130*/ { NULL, FILE_PBIGPELAGICDOOR, 0x1000 }, + /*0x0131*/ { NULL, FILE_PSK_JONRUBBLE3, 0x1000 }, + /*0x0132*/ { NULL, FILE_PSK_JONRUBBLE4, 0x1000 }, + /*0x0133*/ { NULL, FILE_PSK_JONRUBBLE5, 0x1000 }, + /*0x0134*/ { NULL, FILE_PSK_JONRUBBLE6, 0x1000 }, + /*0x0135*/ { NULL, FILE_PBAGGAGECARRIER, 0x0199 }, + /*0x0136*/ { NULL, FILE_PMINESIGN, 0x0199 }, + /*0x0137*/ { NULL, FILE_PCHAMBER, 0x0199 }, + /*0x0138*/ { NULL, FILE_PISOTOPEEXPERIMENT, 0x0199 }, + /*0x0139*/ { NULL, FILE_PISOTOPE, 0x0199 }, + /*0x013a*/ { NULL, FILE_PREACTORDOOR, 0x0199 }, + /*0x013b*/ { NULL, FILE_PSAUCERINSIDE, 0x1000 }, + /*0x013c*/ { NULL, FILE_PVILLASTOOL, 0x0199 }, + /*0x013d*/ { NULL, FILE_PCETANWINDOW1, 0x0199 }, + /*0x013e*/ { NULL, FILE_PCETANWINDOW2, 0x0199 }, + /*0x013f*/ { NULL, FILE_PCETANWINDOW3, 0x0199 }, + /*0x0140*/ { NULL, FILE_PBINOCULARS, 0x0199 }, + /*0x0141*/ { NULL, FILE_PSUBMARINE, 0x0199 }, + /*0x0142*/ { NULL, FILE_PAIRFORCE1, 0x1000 }, + /*0x0143*/ { NULL, FILE_PENGINEPART, 0x0199 }, + /*0x0144*/ { NULL, FILE_PCETROOFGUN, 0x0199 }, + /*0x0145*/ { NULL, FILE_PCETANSMALLDOOR, 0x1000 }, + /*0x0146*/ { NULL, FILE_PPOWERNODE, 0x0199 }, + /*0x0147*/ { NULL, FILE_PCETANBLUEGREENL, 0x1000 }, + /*0x0148*/ { NULL, FILE_PCETANBLUEGREENR, 0x1000 }, + /*0x0149*/ { NULL, FILE_PSKEDARCONSOLE, 0x1000 }, + /*0x014a*/ { NULL, FILE_PSKEDARCONSOLEPANEL, 0x1000 }, + /*0x014b*/ { NULL, FILE_PWEAPONCDOOR, 0x1000 }, + /*0x014c*/ { NULL, FILE_PTARGET, 0x1000 }, + /*0x014d*/ { NULL, FILE_PDEVICESECRETDOOR, 0x1000 }, + /*0x014e*/ { NULL, FILE_PCARRINGTONSECRETDOOR, 0x1000 }, + /*0x014f*/ { NULL, FILE_PSINISTERPC, 0x1000 }, + /*0x0150*/ { NULL, FILE_PSINISTERSTATION, 0x1000 }, + /*0x0151*/ { NULL, FILE_PKEYPADLOCK, 0x1000 }, + /*0x0152*/ { NULL, FILE_PTHUMBPRINTSCANNER, 0x1000 }, + /*0x0153*/ { NULL, FILE_PRETINALOCK, 0x1000 }, + /*0x0154*/ { NULL, FILE_PCARDLOCK, 0x1000 }, + /*0x0155*/ { NULL, FILE_PGOODSTATION, 0x1000 }, + /*0x0156*/ { NULL, FILE_PGOODPC, 0x1000 }, + /*0x0157*/ { NULL, FILE_PCHRAUTOGUN, 0x0199 }, + /*0x0158*/ { NULL, FILE_PG5BIGCHAIR, 0x0199 }, + /*0x0159*/ { NULL, FILE_PG5SMALLCHAIR, 0x0199 }, + /*0x015a*/ { NULL, FILE_PKINGSCEPTRE, 0x0199 }, + /*0x015b*/ { NULL, FILE_PLABCOAT, 0x0199 }, + /*0x015c*/ { NULL, FILE_PCIDOOR1, 0x1000 }, + /*0x015d*/ { NULL, FILE_PG5_CHAIR, 0x1000 }, + /*0x015e*/ { NULL, FILE_PG5_CHAIR2, 0x1000 }, + /*0x015f*/ { NULL, FILE_PDD_WINDOW_FOYER, 0x0199 }, + /*0x0160*/ { NULL, FILE_PCI_CABINET, 0x1000 }, + /*0x0161*/ { NULL, FILE_PCI_DESK, 0x1000 }, + /*0x0162*/ { NULL, FILE_PCI_CARR_DESK, 0x1000 }, + /*0x0163*/ { NULL, FILE_PCI_F_CHAIR, 0x1000 }, + /*0x0164*/ { NULL, FILE_PCI_LOUNGER, 0x1000 }, + /*0x0165*/ { NULL, FILE_PCI_F_SOFA, 0x1000 }, + /*0x0166*/ { NULL, FILE_PCI_TABLE, 0x1000 }, + /*0x0167*/ { NULL, FILE_PCV_COFFEE_TABLE, 0x1000 }, + /*0x0168*/ { NULL, FILE_PCV_CHAIR1, 0x1000 }, + /*0x0169*/ { NULL, FILE_PCV_CHAIR2, 0x1000 }, + /*0x016a*/ { NULL, FILE_PCV_SOFA, 0x1000 }, + /*0x016b*/ { NULL, FILE_PCV_CHAIR4, 0x1000 }, + /*0x016c*/ { NULL, FILE_PCV_LAMP, 0x1000 }, + /*0x016d*/ { NULL, FILE_PCV_CABINET, 0x1000 }, + /*0x016e*/ { NULL, FILE_PCV_F_BED, 0x1000 }, + /*0x016f*/ { NULL, FILE_PPEL_CHAIR1, 0x1000 }, + /*0x0170*/ { NULL, FILE_PSK_CONSOLE2, 0x1000 }, + /*0x0171*/ { NULL, FILE_PDD_EAR_TABLE, 0x1000 }, + /*0x0172*/ { NULL, FILE_PDD_EAR_CHAIR, 0x1000 }, + /*0x0173*/ { NULL, FILE_PAIRBASE_TABLE2, 0x1000 }, + /*0x0174*/ { NULL, FILE_PAIRBASE_CHAIR2, 0x1000 }, + /*0x0175*/ { NULL, FILE_PMISC_CRATE, 0x1000 }, + /*0x0176*/ { NULL, FILE_PA51_CRATE1, 0x1000 }, + /*0x0177*/ { NULL, FILE_PMISC_IRSPECS, 0x0c00 }, + /*0x0178*/ { NULL, FILE_PA51_ROOFGUN, 0x0199 }, + /*0x0179*/ { NULL, FILE_PSK_DRONE_GUN, 0x0199 }, + /*0x017a*/ { NULL, FILE_PCI_ROOFGUN, 0x0199 }, + /*0x017b*/ { NULL, FILE_PCV_TABLE, 0x1000 }, + /*0x017c*/ { NULL, FILE_PCIDOOR1_REF, 0x1000 }, + /*0x017d*/ { NULL, FILE_PALASKADOOR_OUT, 0x1000 }, + /*0x017e*/ { NULL, FILE_PALASKADOOR_IN, 0x1000 }, + /*0x017f*/ { NULL, FILE_PWIREFENCE, 0x0199 }, + /*0x0180*/ { NULL, FILE_PRARELOGO, 0x1000 }, + /*0x0181*/ { NULL, FILE_PKEYCARD, 0x0199 }, + /*0x0182*/ { NULL, FILE_PBODYARMOUR, 0x0133 }, + /*0x0183*/ { NULL, FILE_PA51GATE_R, 0x1000 }, + /*0x0184*/ { NULL, FILE_PA51GATE_L, 0x1000 }, + /*0x0185*/ { NULL, FILE_PAF1_LAMP, 0x1000 }, + /*0x0186*/ { NULL, FILE_PAF1_TOILET, 0x1000 }, + /*0x0187*/ { NULL, FILE_PAF1_DOORBIG2, 0x1000 }, + /*0x0188*/ { NULL, FILE_PAF1_PHONE, 0x1000 }, + /*0x0189*/ { NULL, FILE_PAF1_CARGODOOR, 0x1000 }, + /*0x018a*/ { NULL, FILE_PG5_ALARM, 0x1000 }, + /*0x018b*/ { NULL, FILE_PG5_LASER_SWITCH, 0x1000 }, + /*0x018c*/ { NULL, FILE_PSK_TEMPLECOLUMN4, 0x1000 }, + /*0x018d*/ { NULL, FILE_PCOREHATCH, 0x1000 }, + /*0x018e*/ { NULL, FILE_PA51GRATE, 0x1000 }, + /*0x018f*/ { NULL, FILE_PAF1ESCAPEDOOR, 0x1000 }, + /*0x0190*/ { NULL, FILE_PPRESCAPSULE, 0x1000 }, + /*0x0191*/ { NULL, FILE_PSKEDARBRIDGE, 0x1000 }, + /*0x0192*/ { NULL, FILE_PPELAGICDOOR2, 0x1000 }, + /*0x0193*/ { NULL, FILE_PTTB_BOX, 0x0066 }, + /*0x0194*/ { NULL, FILE_PINSTFRONTDOOR, 0x1000 }, + /*0x0195*/ { NULL, FILE_PCHRLASER, 0x0199 }, + /*0x0196*/ { NULL, FILE_PBAFTA, 0x1000 }, + /*0x0197*/ { NULL, FILE_PCHRSONICSCREWER, 0x0199 }, + /*0x0198*/ { NULL, FILE_PCHRLUMPHAMMER, 0x0199 }, + /*0x0199*/ { NULL, FILE_PEXPLOSIVEBRICK, 0x1000 }, + /*0x019a*/ { NULL, FILE_PSKEDARBOMB, 0x1000 }, + /*0x019b*/ { NULL, FILE_PZIGGYCARD, 0x1000 }, + /*0x019c*/ { NULL, FILE_PSAFEITEM, 0x1000 }, + /*0x019d*/ { NULL, FILE_PRUSSDAR, 0x0333 }, + /*0x019e*/ { NULL, FILE_PXRAYSPECS, 0x0c00 }, + /*0x019f*/ { NULL, FILE_PCHRLUMPHAMMER, 0x1000 }, + /*0x01a0*/ { NULL, FILE_PCHREYESPY, 0x1800 }, + /*0x01a1*/ { NULL, FILE_PCHRDOORDECODER, 0x0199 }, + /*0x01a2*/ { NULL, FILE_PAF1_TABLE, 0x0199 }, + /*0x01a3*/ { NULL, FILE_PSHUTTLEDOOR, 0x1000 }, + /*0x01a4*/ { NULL, FILE_PRUINBRIDGE, 0x0199 }, + /*0x01a5*/ { NULL, FILE_PSECRETINDOOR, 0x1000 }, + /*0x01a6*/ { NULL, FILE_PSENSITIVEINFO, 0x0199 }, + /*0x01a7*/ { NULL, FILE_PSUITCASE, 0x1000 }, + /*0x01a8*/ { NULL, FILE_PSKPUZZLEOBJECT, 0x1000 }, + /*0x01a9*/ { NULL, FILE_PA51LIFTDOOR, 0x1000 }, + /*0x01aa*/ { NULL, FILE_PCIHUB, 0x1000 }, + /*0x01ab*/ { NULL, FILE_PSK_SHIP_DOOR2, 0x1000 }, + /*0x01ac*/ { NULL, FILE_PSK_WINDOW1, 0x1000 }, + /*0x01ad*/ { NULL, FILE_PSK_HANGARDOORB_TOP, 0x1000 }, + /*0x01ae*/ { NULL, FILE_PSK_HANGARDOORB_BOT, 0x1000 }, + /*0x01af*/ { NULL, FILE_PAF1_INNERDOOR, 0x1000 }, + /*0x01b0*/ { NULL, FILE_PLASER_POST, 0x1000 }, + /*0x01b1*/ { NULL, FILE_PTARGETAMP, 0x0199 }, + /*0x01b2*/ { NULL, FILE_PSK_LIFT, 0x1000 }, + /*0x01b3*/ { NULL, FILE_PKNOCKKNOCK, 0x1000 }, + /*0x01b4*/ { NULL, FILE_PCETANDOOR, 0x1000 }, + /*0x01b5*/ { NULL, FILE_PAF1RUBBLE, 0x1000 }, + /*0x01b6*/ { NULL, FILE_PDD_DR_NONREF, 0x1000 }, + /*0x01b7*/ { NULL, FILE_PCETANDOORSIDE, 0x1000 }, + /*0x01b8*/ { NULL, FILE_PBUDDYBRIDGE, 0x0199 }, +}; + +u8 g_PropExplosionTypes[] = { + /*0x0000*/ EXPLOSIONTYPE_0, + /*0x0001*/ EXPLOSIONTYPE_0, + /*0x0002*/ EXPLOSIONTYPE_0, + /*0x0003*/ EXPLOSIONTYPE_0, + /*0x0004*/ EXPLOSIONTYPE_0, + /*0x0005*/ EXPLOSIONTYPE_0, + /*0x0006*/ EXPLOSIONTYPE_16, + /*0x0007*/ EXPLOSIONTYPE_0, + /*0x0008*/ EXPLOSIONTYPE_8, + /*0x0009*/ EXPLOSIONTYPE_11, + /*0x000a*/ EXPLOSIONTYPE_6, + /*0x000b*/ EXPLOSIONTYPE_4, + /*0x000c*/ EXPLOSIONTYPE_0, + /*0x000d*/ EXPLOSIONTYPE_0, + /*0x000e*/ EXPLOSIONTYPE_0, + /*0x000f*/ EXPLOSIONTYPE_0, + /*0x0010*/ EXPLOSIONTYPE_0, + /*0x0011*/ EXPLOSIONTYPE_0, + /*0x0012*/ EXPLOSIONTYPE_0, + /*0x0013*/ EXPLOSIONTYPE_0, + /*0x0014*/ EXPLOSIONTYPE_0, + /*0x0015*/ EXPLOSIONTYPE_0, + /*0x0016*/ EXPLOSIONTYPE_0, + /*0x0017*/ EXPLOSIONTYPE_0, + /*0x0018*/ EXPLOSIONTYPE_0, + /*0x0019*/ EXPLOSIONTYPE_3, + /*0x001a*/ EXPLOSIONTYPE_0, + /*0x001b*/ EXPLOSIONTYPE_6, + /*0x001c*/ EXPLOSIONTYPE_0, + /*0x001d*/ EXPLOSIONTYPE_0, + /*0x001e*/ EXPLOSIONTYPE_0, + /*0x001f*/ EXPLOSIONTYPE_6, + /*0x0020*/ EXPLOSIONTYPE_9, + /*0x0021*/ EXPLOSIONTYPE_0, + /*0x0022*/ EXPLOSIONTYPE_0, + /*0x0023*/ EXPLOSIONTYPE_0, + /*0x0024*/ EXPLOSIONTYPE_0, + /*0x0025*/ EXPLOSIONTYPE_0, + /*0x0026*/ EXPLOSIONTYPE_0, + /*0x0027*/ EXPLOSIONTYPE_0, + /*0x0028*/ EXPLOSIONTYPE_3, + /*0x0029*/ EXPLOSIONTYPE_3, + /*0x002a*/ EXPLOSIONTYPE_3, + /*0x002b*/ EXPLOSIONTYPE_0, + /*0x002c*/ EXPLOSIONTYPE_0, + /*0x002d*/ EXPLOSIONTYPE_0, + /*0x002e*/ EXPLOSIONTYPE_0, + /*0x002f*/ EXPLOSIONTYPE_0, + /*0x0030*/ EXPLOSIONTYPE_0, + /*0x0031*/ EXPLOSIONTYPE_0, + /*0x0032*/ EXPLOSIONTYPE_0, + /*0x0033*/ EXPLOSIONTYPE_0, + /*0x0034*/ EXPLOSIONTYPE_0, + /*0x0035*/ EXPLOSIONTYPE_0, + /*0x0036*/ EXPLOSIONTYPE_0, + /*0x0037*/ EXPLOSIONTYPE_0, + /*0x0038*/ EXPLOSIONTYPE_0, + /*0x0039*/ EXPLOSIONTYPE_0, + /*0x003a*/ EXPLOSIONTYPE_0, + /*0x003b*/ EXPLOSIONTYPE_12, + /*0x003c*/ EXPLOSIONTYPE_0, + /*0x003d*/ EXPLOSIONTYPE_0, + /*0x003e*/ EXPLOSIONTYPE_0, + /*0x003f*/ EXPLOSIONTYPE_0, + /*0x0040*/ EXPLOSIONTYPE_0, + /*0x0041*/ EXPLOSIONTYPE_0, + /*0x0042*/ EXPLOSIONTYPE_11, + /*0x0043*/ EXPLOSIONTYPE_0, + /*0x0044*/ EXPLOSIONTYPE_0, + /*0x0045*/ EXPLOSIONTYPE_0, + /*0x0046*/ EXPLOSIONTYPE_0, + /*0x0047*/ EXPLOSIONTYPE_0, + /*0x0048*/ EXPLOSIONTYPE_0, + /*0x0049*/ EXPLOSIONTYPE_0, + /*0x004a*/ EXPLOSIONTYPE_0, + /*0x004b*/ EXPLOSIONTYPE_0, + /*0x004c*/ EXPLOSIONTYPE_0, + /*0x004d*/ EXPLOSIONTYPE_0, + /*0x004e*/ EXPLOSIONTYPE_0, + /*0x004f*/ EXPLOSIONTYPE_0, + /*0x0050*/ EXPLOSIONTYPE_0, + /*0x0051*/ EXPLOSIONTYPE_0, + /*0x0052*/ EXPLOSIONTYPE_0, + /*0x0053*/ EXPLOSIONTYPE_0, + /*0x0054*/ EXPLOSIONTYPE_0, + /*0x0055*/ EXPLOSIONTYPE_0, + /*0x0056*/ EXPLOSIONTYPE_0, + /*0x0057*/ EXPLOSIONTYPE_0, + /*0x0058*/ EXPLOSIONTYPE_13, + /*0x0059*/ EXPLOSIONTYPE_13, + /*0x005a*/ EXPLOSIONTYPE_13, + /*0x005b*/ EXPLOSIONTYPE_13, + /*0x005c*/ EXPLOSIONTYPE_13, + /*0x005d*/ EXPLOSIONTYPE_0, + /*0x005e*/ EXPLOSIONTYPE_0, + /*0x005f*/ EXPLOSIONTYPE_0, + /*0x0060*/ EXPLOSIONTYPE_0, + /*0x0061*/ EXPLOSIONTYPE_7, + /*0x0062*/ EXPLOSIONTYPE_4, + /*0x0063*/ EXPLOSIONTYPE_12, + /*0x0064*/ EXPLOSIONTYPE_0, + /*0x0065*/ EXPLOSIONTYPE_0, + /*0x0066*/ EXPLOSIONTYPE_3, + /*0x0067*/ EXPLOSIONTYPE_0, + /*0x0068*/ EXPLOSIONTYPE_0, + /*0x0069*/ EXPLOSIONTYPE_0, + /*0x006a*/ EXPLOSIONTYPE_0, + /*0x006b*/ EXPLOSIONTYPE_0, + /*0x006c*/ EXPLOSIONTYPE_0, + /*0x006d*/ EXPLOSIONTYPE_0, + /*0x006e*/ EXPLOSIONTYPE_12, + /*0x006f*/ EXPLOSIONTYPE_12, + /*0x0070*/ EXPLOSIONTYPE_0, + /*0x0071*/ EXPLOSIONTYPE_0, + /*0x0072*/ EXPLOSIONTYPE_0, + /*0x0073*/ EXPLOSIONTYPE_0, + /*0x0074*/ EXPLOSIONTYPE_0, + /*0x0075*/ EXPLOSIONTYPE_0, + /*0x0076*/ EXPLOSIONTYPE_0, + /*0x0077*/ EXPLOSIONTYPE_0, + /*0x0078*/ EXPLOSIONTYPE_0, + /*0x0079*/ EXPLOSIONTYPE_0, + /*0x007a*/ EXPLOSIONTYPE_0, + /*0x007b*/ EXPLOSIONTYPE_0, + /*0x007c*/ EXPLOSIONTYPE_0, + /*0x007d*/ EXPLOSIONTYPE_0, + /*0x007e*/ EXPLOSIONTYPE_13, + /*0x007f*/ EXPLOSIONTYPE_0, + /*0x0080*/ EXPLOSIONTYPE_0, + /*0x0081*/ EXPLOSIONTYPE_0, + /*0x0082*/ EXPLOSIONTYPE_0, + /*0x0083*/ EXPLOSIONTYPE_0, + /*0x0084*/ EXPLOSIONTYPE_0, + /*0x0085*/ EXPLOSIONTYPE_0, + /*0x0086*/ EXPLOSIONTYPE_0, + /*0x0087*/ EXPLOSIONTYPE_0, + /*0x0088*/ EXPLOSIONTYPE_0, + /*0x0089*/ EXPLOSIONTYPE_0, + /*0x008a*/ EXPLOSIONTYPE_0, + /*0x008b*/ EXPLOSIONTYPE_0, + /*0x008c*/ EXPLOSIONTYPE_0, + /*0x008d*/ EXPLOSIONTYPE_13, + /*0x008e*/ EXPLOSIONTYPE_12, + /*0x008f*/ EXPLOSIONTYPE_12, + /*0x0090*/ EXPLOSIONTYPE_0, + /*0x0091*/ EXPLOSIONTYPE_0, + /*0x0092*/ EXPLOSIONTYPE_0, + /*0x0093*/ EXPLOSIONTYPE_0, + /*0x0094*/ EXPLOSIONTYPE_0, + /*0x0095*/ EXPLOSIONTYPE_0, + /*0x0096*/ EXPLOSIONTYPE_0, + /*0x0097*/ EXPLOSIONTYPE_0, + /*0x0098*/ EXPLOSIONTYPE_0, + /*0x0099*/ EXPLOSIONTYPE_0, + /*0x009a*/ EXPLOSIONTYPE_0, + /*0x009b*/ EXPLOSIONTYPE_0, + /*0x009c*/ EXPLOSIONTYPE_0, + /*0x009d*/ EXPLOSIONTYPE_0, + /*0x009e*/ EXPLOSIONTYPE_0, + /*0x009f*/ EXPLOSIONTYPE_13, + /*0x00a0*/ EXPLOSIONTYPE_0, + /*0x00a1*/ EXPLOSIONTYPE_0, + /*0x00a2*/ EXPLOSIONTYPE_0, + /*0x00a3*/ EXPLOSIONTYPE_0, + /*0x00a4*/ EXPLOSIONTYPE_0, + /*0x00a5*/ EXPLOSIONTYPE_0, + /*0x00a6*/ EXPLOSIONTYPE_0, + /*0x00a7*/ EXPLOSIONTYPE_9, + /*0x00a8*/ EXPLOSIONTYPE_0, + /*0x00a9*/ EXPLOSIONTYPE_0, + /*0x00aa*/ EXPLOSIONTYPE_0, + /*0x00ab*/ EXPLOSIONTYPE_0, + /*0x00ac*/ EXPLOSIONTYPE_0, + /*0x00ad*/ EXPLOSIONTYPE_0, + /*0x00ae*/ EXPLOSIONTYPE_0, + /*0x00af*/ EXPLOSIONTYPE_0, + /*0x00b0*/ EXPLOSIONTYPE_0, + /*0x00b1*/ EXPLOSIONTYPE_0, + /*0x00b2*/ EXPLOSIONTYPE_0, + /*0x00b3*/ EXPLOSIONTYPE_0, + /*0x00b4*/ EXPLOSIONTYPE_0, + /*0x00b5*/ EXPLOSIONTYPE_0, + /*0x00b6*/ EXPLOSIONTYPE_0, + /*0x00b7*/ EXPLOSIONTYPE_7, + /*0x00b8*/ EXPLOSIONTYPE_6, + /*0x00b9*/ EXPLOSIONTYPE_0, + /*0x00ba*/ EXPLOSIONTYPE_9, + /*0x00bb*/ EXPLOSIONTYPE_0, + /*0x00bc*/ EXPLOSIONTYPE_0, + /*0x00bd*/ EXPLOSIONTYPE_6, + /*0x00be*/ EXPLOSIONTYPE_6, + /*0x00bf*/ EXPLOSIONTYPE_6, + /*0x00c0*/ EXPLOSIONTYPE_0, + /*0x00c1*/ EXPLOSIONTYPE_0, + /*0x00c2*/ EXPLOSIONTYPE_11, + /*0x00c3*/ EXPLOSIONTYPE_0, + /*0x00c4*/ EXPLOSIONTYPE_0, + /*0x00c5*/ EXPLOSIONTYPE_6, + /*0x00c6*/ EXPLOSIONTYPE_9, + /*0x00c7*/ EXPLOSIONTYPE_0, + /*0x00c8*/ EXPLOSIONTYPE_0, + /*0x00c9*/ EXPLOSIONTYPE_11, + /*0x00ca*/ EXPLOSIONTYPE_6, + /*0x00cb*/ EXPLOSIONTYPE_0, + /*0x00cc*/ EXPLOSIONTYPE_0, + /*0x00cd*/ EXPLOSIONTYPE_0, + /*0x00ce*/ EXPLOSIONTYPE_0, + /*0x00cf*/ EXPLOSIONTYPE_0, + /*0x00d0*/ EXPLOSIONTYPE_25, + /*0x00d1*/ EXPLOSIONTYPE_0, + /*0x00d2*/ EXPLOSIONTYPE_0, + /*0x00d3*/ EXPLOSIONTYPE_0, + /*0x00d4*/ EXPLOSIONTYPE_0, + /*0x00d5*/ EXPLOSIONTYPE_0, + /*0x00d6*/ EXPLOSIONTYPE_0, + /*0x00d7*/ EXPLOSIONTYPE_0, + /*0x00d8*/ EXPLOSIONTYPE_0, + /*0x00d9*/ EXPLOSIONTYPE_0, + /*0x00da*/ EXPLOSIONTYPE_0, + /*0x00db*/ EXPLOSIONTYPE_0, + /*0x00dc*/ EXPLOSIONTYPE_0, + /*0x00dd*/ EXPLOSIONTYPE_0, + /*0x00de*/ EXPLOSIONTYPE_0, + /*0x00df*/ EXPLOSIONTYPE_0, + /*0x00e0*/ EXPLOSIONTYPE_0, + /*0x00e1*/ EXPLOSIONTYPE_0, + /*0x00e2*/ EXPLOSIONTYPE_0, + /*0x00e3*/ EXPLOSIONTYPE_0, + /*0x00e4*/ EXPLOSIONTYPE_0, + /*0x00e5*/ EXPLOSIONTYPE_0, + /*0x00e6*/ EXPLOSIONTYPE_0, + /*0x00e7*/ EXPLOSIONTYPE_0, + /*0x00e8*/ EXPLOSIONTYPE_0, + /*0x00e9*/ EXPLOSIONTYPE_0, + /*0x00ea*/ EXPLOSIONTYPE_11, + /*0x00eb*/ EXPLOSIONTYPE_0, + /*0x00ec*/ EXPLOSIONTYPE_0, + /*0x00ed*/ EXPLOSIONTYPE_0, + /*0x00ee*/ EXPLOSIONTYPE_0, + /*0x00ef*/ EXPLOSIONTYPE_0, + /*0x00f0*/ EXPLOSIONTYPE_0, + /*0x00f1*/ EXPLOSIONTYPE_0, + /*0x00f2*/ EXPLOSIONTYPE_0, + /*0x00f3*/ EXPLOSIONTYPE_17, + /*0x00f4*/ EXPLOSIONTYPE_0, + /*0x00f5*/ EXPLOSIONTYPE_0, + /*0x00f6*/ EXPLOSIONTYPE_0, + /*0x00f7*/ EXPLOSIONTYPE_0, + /*0x00f8*/ EXPLOSIONTYPE_0, + /*0x00f9*/ EXPLOSIONTYPE_0, + /*0x00fa*/ EXPLOSIONTYPE_0, + /*0x00fb*/ EXPLOSIONTYPE_0, + /*0x00fc*/ EXPLOSIONTYPE_0, + /*0x00fd*/ EXPLOSIONTYPE_0, + /*0x00fe*/ EXPLOSIONTYPE_0, + /*0x00ff*/ EXPLOSIONTYPE_0, + /*0x0100*/ EXPLOSIONTYPE_0, + /*0x0101*/ EXPLOSIONTYPE_0, + /*0x0102*/ EXPLOSIONTYPE_0, + /*0x0103*/ EXPLOSIONTYPE_0, + /*0x0104*/ EXPLOSIONTYPE_0, + /*0x0105*/ EXPLOSIONTYPE_0, + /*0x0106*/ EXPLOSIONTYPE_0, + /*0x0107*/ EXPLOSIONTYPE_0, + /*0x0108*/ EXPLOSIONTYPE_0, + /*0x0109*/ EXPLOSIONTYPE_0, + /*0x010a*/ EXPLOSIONTYPE_0, + /*0x010b*/ EXPLOSIONTYPE_0, + /*0x010c*/ EXPLOSIONTYPE_0, + /*0x010d*/ EXPLOSIONTYPE_0, + /*0x010e*/ EXPLOSIONTYPE_0, + /*0x010f*/ EXPLOSIONTYPE_0, + /*0x0110*/ EXPLOSIONTYPE_0, + /*0x0111*/ EXPLOSIONTYPE_0, + /*0x0112*/ EXPLOSIONTYPE_0, + /*0x0113*/ EXPLOSIONTYPE_0, + /*0x0114*/ EXPLOSIONTYPE_0, + /*0x0115*/ EXPLOSIONTYPE_0, + /*0x0116*/ EXPLOSIONTYPE_0, + /*0x0117*/ EXPLOSIONTYPE_0, + /*0x0118*/ EXPLOSIONTYPE_0, + /*0x0119*/ EXPLOSIONTYPE_0, + /*0x011a*/ EXPLOSIONTYPE_13, + /*0x011b*/ EXPLOSIONTYPE_13, + /*0x011c*/ EXPLOSIONTYPE_13, + /*0x011d*/ EXPLOSIONTYPE_13, + /*0x011e*/ EXPLOSIONTYPE_0, + /*0x011f*/ EXPLOSIONTYPE_0, + /*0x0120*/ EXPLOSIONTYPE_0, + /*0x0121*/ EXPLOSIONTYPE_0, + /*0x0122*/ EXPLOSIONTYPE_0, + /*0x0123*/ EXPLOSIONTYPE_0, + /*0x0124*/ EXPLOSIONTYPE_0, + /*0x0125*/ EXPLOSIONTYPE_0, + /*0x0126*/ EXPLOSIONTYPE_0, + /*0x0127*/ EXPLOSIONTYPE_13, + /*0x0128*/ EXPLOSIONTYPE_13, + /*0x0129*/ EXPLOSIONTYPE_0, + /*0x012a*/ EXPLOSIONTYPE_13, + /*0x012b*/ EXPLOSIONTYPE_13, + /*0x012c*/ EXPLOSIONTYPE_8, + /*0x012d*/ EXPLOSIONTYPE_0, + /*0x012e*/ EXPLOSIONTYPE_0, + /*0x012f*/ EXPLOSIONTYPE_12, + /*0x0130*/ EXPLOSIONTYPE_13, + /*0x0131*/ EXPLOSIONTYPE_7, + /*0x0132*/ EXPLOSIONTYPE_11, + /*0x0133*/ EXPLOSIONTYPE_0, + /*0x0134*/ EXPLOSIONTYPE_7, + /*0x0135*/ EXPLOSIONTYPE_7, + /*0x0136*/ EXPLOSIONTYPE_0, + /*0x0137*/ EXPLOSIONTYPE_0, + /*0x0138*/ EXPLOSIONTYPE_0, + /*0x0139*/ EXPLOSIONTYPE_0, + /*0x013a*/ EXPLOSIONTYPE_0, + /*0x013b*/ EXPLOSIONTYPE_0, + /*0x013c*/ EXPLOSIONTYPE_0, + /*0x013d*/ EXPLOSIONTYPE_0, + /*0x013e*/ EXPLOSIONTYPE_0, + /*0x013f*/ EXPLOSIONTYPE_0, + /*0x0140*/ EXPLOSIONTYPE_0, + /*0x0141*/ EXPLOSIONTYPE_0, + /*0x0142*/ EXPLOSIONTYPE_0, + /*0x0143*/ EXPLOSIONTYPE_0, + /*0x0144*/ EXPLOSIONTYPE_0, + /*0x0145*/ EXPLOSIONTYPE_0, + /*0x0146*/ EXPLOSIONTYPE_0, + /*0x0147*/ EXPLOSIONTYPE_0, + /*0x0148*/ EXPLOSIONTYPE_0, + /*0x0149*/ EXPLOSIONTYPE_0, + /*0x014a*/ EXPLOSIONTYPE_0, + /*0x014b*/ EXPLOSIONTYPE_13, + /*0x014c*/ EXPLOSIONTYPE_7, + /*0x014d*/ EXPLOSIONTYPE_0, + /*0x014e*/ EXPLOSIONTYPE_0, + /*0x014f*/ EXPLOSIONTYPE_0, + /*0x0150*/ EXPLOSIONTYPE_0, + /*0x0151*/ EXPLOSIONTYPE_7, + /*0x0152*/ EXPLOSIONTYPE_0, + /*0x0153*/ EXPLOSIONTYPE_0, + /*0x0154*/ EXPLOSIONTYPE_0, + /*0x0155*/ EXPLOSIONTYPE_0, + /*0x0156*/ EXPLOSIONTYPE_0, + /*0x0157*/ EXPLOSIONTYPE_7, + /*0x0158*/ EXPLOSIONTYPE_8, + /*0x0159*/ EXPLOSIONTYPE_6, + /*0x015a*/ EXPLOSIONTYPE_6, + /*0x015b*/ EXPLOSIONTYPE_6, + /*0x015c*/ EXPLOSIONTYPE_6, + /*0x015d*/ EXPLOSIONTYPE_8, + /*0x015e*/ EXPLOSIONTYPE_7, + /*0x015f*/ EXPLOSIONTYPE_7, + /*0x0160*/ EXPLOSIONTYPE_0, + /*0x0161*/ EXPLOSIONTYPE_0, + /*0x0162*/ EXPLOSIONTYPE_0, + /*0x0163*/ EXPLOSIONTYPE_0, + /*0x0164*/ EXPLOSIONTYPE_0, + /*0x0165*/ EXPLOSIONTYPE_0, + /*0x0166*/ EXPLOSIONTYPE_0, + /*0x0167*/ EXPLOSIONTYPE_0, + /*0x0168*/ EXPLOSIONTYPE_0, + /*0x0169*/ EXPLOSIONTYPE_0, + /*0x016a*/ EXPLOSIONTYPE_0, + /*0x016b*/ EXPLOSIONTYPE_0, + /*0x016c*/ EXPLOSIONTYPE_0, + /*0x016d*/ EXPLOSIONTYPE_0, + /*0x016e*/ EXPLOSIONTYPE_0, + /*0x016f*/ EXPLOSIONTYPE_0, + /*0x0170*/ EXPLOSIONTYPE_0, + /*0x0171*/ EXPLOSIONTYPE_0, + /*0x0172*/ EXPLOSIONTYPE_0, + /*0x0173*/ EXPLOSIONTYPE_0, + /*0x0174*/ EXPLOSIONTYPE_6, + /*0x0175*/ EXPLOSIONTYPE_0, + /*0x0176*/ EXPLOSIONTYPE_0, + /*0x0177*/ EXPLOSIONTYPE_0, + /*0x0178*/ EXPLOSIONTYPE_7, + /*0x0179*/ EXPLOSIONTYPE_0, + /*0x017a*/ EXPLOSIONTYPE_0, + /*0x017b*/ EXPLOSIONTYPE_0, + /*0x017c*/ EXPLOSIONTYPE_0, + /*0x017d*/ EXPLOSIONTYPE_0, + /*0x017e*/ EXPLOSIONTYPE_0, + /*0x017f*/ EXPLOSIONTYPE_6, + /*0x0180*/ EXPLOSIONTYPE_8, + /*0x0181*/ EXPLOSIONTYPE_8, + /*0x0182*/ EXPLOSIONTYPE_8, + /*0x0183*/ EXPLOSIONTYPE_0, + /*0x0184*/ EXPLOSIONTYPE_0, + /*0x0185*/ EXPLOSIONTYPE_0, + /*0x0186*/ EXPLOSIONTYPE_0, + /*0x0187*/ EXPLOSIONTYPE_0, + /*0x0188*/ EXPLOSIONTYPE_0, + /*0x0189*/ EXPLOSIONTYPE_0, + /*0x018a*/ EXPLOSIONTYPE_0, + /*0x018b*/ EXPLOSIONTYPE_0, + /*0x018c*/ EXPLOSIONTYPE_0, + /*0x018d*/ EXPLOSIONTYPE_6, + /*0x018e*/ EXPLOSIONTYPE_0, + /*0x018f*/ EXPLOSIONTYPE_0, + /*0x0190*/ EXPLOSIONTYPE_6, + /*0x0191*/ EXPLOSIONTYPE_0, + /*0x0192*/ EXPLOSIONTYPE_7, + /*0x0193*/ EXPLOSIONTYPE_7, + /*0x0194*/ EXPLOSIONTYPE_0, + /*0x0195*/ EXPLOSIONTYPE_0, + /*0x0196*/ EXPLOSIONTYPE_0, + /*0x0197*/ EXPLOSIONTYPE_0, + /*0x0198*/ EXPLOSIONTYPE_13, + /*0x0199*/ EXPLOSIONTYPE_0, + /*0x019a*/ EXPLOSIONTYPE_0, + /*0x019b*/ EXPLOSIONTYPE_0, + /*0x019c*/ EXPLOSIONTYPE_0, + /*0x019d*/ EXPLOSIONTYPE_0, + /*0x019e*/ EXPLOSIONTYPE_6, + /*0x019f*/ EXPLOSIONTYPE_0, + /*0x01a0*/ EXPLOSIONTYPE_0, + /*0x01a1*/ EXPLOSIONTYPE_0, + /*0x01a2*/ EXPLOSIONTYPE_17, + /*0x01a3*/ EXPLOSIONTYPE_0, + /*0x01a4*/ EXPLOSIONTYPE_0, + /*0x01a5*/ EXPLOSIONTYPE_0, + /*0x01a6*/ EXPLOSIONTYPE_0, + /*0x01a7*/ EXPLOSIONTYPE_0, + /*0x01a8*/ EXPLOSIONTYPE_0, + /*0x01a9*/ EXPLOSIONTYPE_0, + /*0x01aa*/ EXPLOSIONTYPE_0, + /*0x01ab*/ EXPLOSIONTYPE_0, + /*0x01ac*/ EXPLOSIONTYPE_0, + /*0x01ad*/ EXPLOSIONTYPE_0, + /*0x01ae*/ EXPLOSIONTYPE_0, + /*0x01af*/ EXPLOSIONTYPE_11, + /*0x01b0*/ EXPLOSIONTYPE_0, + /*0x01b1*/ EXPLOSIONTYPE_0, + /*0x01b2*/ EXPLOSIONTYPE_0, + /*0x01b3*/ EXPLOSIONTYPE_6, + /*0x01b4*/ EXPLOSIONTYPE_0, + /*0x01b5*/ EXPLOSIONTYPE_0, + /*0x01b6*/ EXPLOSIONTYPE_0, + /*0x01b7*/ EXPLOSIONTYPE_0, + /*0x01b8*/ EXPLOSIONTYPE_0, + /*0x01b9*/ EXPLOSIONTYPE_0, + /*0x01ba*/ EXPLOSIONTYPE_0, + /*0x01bb*/ EXPLOSIONTYPE_0, + /*0x01bc*/ EXPLOSIONTYPE_0, + /*0x01bd*/ EXPLOSIONTYPE_0, + /*0x01be*/ EXPLOSIONTYPE_0, + /*0x01bf*/ EXPLOSIONTYPE_0, +}; + +u32 var8007bff4 = 0x0000ff00; +u32 var8007bff8 = 0x00000000; +u32 var8007bffc = 0x00000000; +u32 var8007c000 = 0x00000000; +u32 var8007c004 = 0x00000000; +u32 var8007c008 = 0x00000000; +u32 var8007c00c = 0x00000000; +u32 var8007c010 = 0xf8f4f1e0; +u32 var8007c014 = 0x473f41dd; +u32 var8007c018 = 0xa510c9c6; +u32 var8007c01c = 0xbcae0bd1; +u32 var8007c020 = 0x0ff73a30; +u32 var8007c024 = 0x724083b7; +u32 var8007c028 = 0xffffffff; +u32 var8007c02c = 0xffffffff; +u32 var8007c030 = 0xffffffff; diff --git a/src/game/modeldata/player.c b/src/game/modeldata/player.c new file mode 100644 index 000000000..203e8bae2 --- /dev/null +++ b/src/game/modeldata/player.c @@ -0,0 +1,43 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +struct modelnode var8007c0dc; +struct modelnode var8007c0f4; +struct modelnode var8007c10c; +struct modelrodata_chrinfo var8007c124; +struct modelrodata_position var8007c130; +struct modelrodata_position var8007c148; + +struct modelfiledata g_PlayerModelFileData = { + (struct modelnode *) &var8007c0dc, + &g_Skel0B, + NULL, + 0, + 3, + 41.161228179932, + 0, + NULL, +}; + +// rodata parent next prev child +struct modelnode var8007c0dc = { MODELNODETYPE_CHRINFO, (union modelrodata *)&var8007c124, NULL, NULL, NULL, &var8007c0f4 }; +struct modelnode var8007c0f4 = { MODELNODETYPE_POSITION, (union modelrodata *)&var8007c130, &var8007c0dc, NULL, NULL, &var8007c10c }; +struct modelnode var8007c10c = { MODELNODETYPE_POSITION, (union modelrodata *)&var8007c148, &var8007c0f4, NULL, NULL, NULL }; + +struct modelrodata_chrinfo var8007c124 = {0, 1, 0, 0}; + +struct modelrodata_position var8007c130 = { + { 1.1779819726944f, 41.144371032715, 0 }, // pos + MODELPART_0001, // part + { 2, -1, -1 }, // pieces + 0, // draw distance +}; + +struct modelrodata_position var8007c148 = { + { -2.5760269165039, 480.42901611328, 0 }, // pos + MODELPART_0002, // part + { 0, -1, -1 }, // pieces + 0, // draw distance +}; diff --git a/src/game/modeldata/robot.c b/src/game/modeldata/robot.c new file mode 100644 index 000000000..df483dfda --- /dev/null +++ b/src/game/modeldata/robot.c @@ -0,0 +1,248 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelDrCarollJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, +}; + +struct skeleton g_SkelDrCaroll = { + SKEL_DRCAROLL, ARRAYCOUNT(g_SkelDrCarollJoints), g_SkelDrCarollJoints, +}; + +u8 g_Skel22Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 19 }, + { 19, 18 }, + { 20, 21 }, + { 21, 20 }, + { 22, 23 }, + { 23, 22 }, + { 24, 25 }, + { 25, 24 }, + { 26, 27 }, + { 27, 26 }, + { 28, 29 }, + { 29, 28 }, +}; + +struct skeleton g_Skel22 = { + SKEL_22, ARRAYCOUNT(g_Skel22Joints), g_Skel22Joints, +}; + +u8 g_SkelRobotJoints[][2] = { + { 0, 0 }, + { 1, 2 }, + { 2, 1 }, +}; + +struct skeleton g_SkelRobot = { + SKEL_ROBOT, ARRAYCOUNT(g_SkelRobotJoints), g_SkelRobotJoints, +}; + +struct headorbody g_HeadsAndBodies[] = { + // ismale + // | height + // | | +#if VERSION >= VERSION_NTSC_1_0 + { /*0x0000*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CDJBOND, 1, 1.0446009635925, 0, FILE_GHAND_DDSECURITY }, + { /*0x0001*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CCONNERY, 1, 1.0300469398499, 0, FILE_GHAND_MRBLONDE }, + { /*0x0002*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 165, FILE_CDALTON, 1, 1.0572769641876, 0, FILE_GHAND_DDSECURITY }, + { /*0x0003*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CMOORE, 1, 1.0399061441422, 0, FILE_GHAND_DDSECURITY }, +#else + { /*0x0000*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CDJBOND, 1, 1.0446009635925, 0, FILE_GHAND_DDSECURITY }, + { /*0x0001*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CCONNERY, 1, 1.0300469398499, 0, FILE_GHAND_MRBLONDE }, + { /*0x0002*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 167, FILE_CDALTON, 1, 1.0572769641876, 0, FILE_GHAND_DDSECURITY }, + { /*0x0003*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 169, FILE_CMOORE, 1, 1.0399061441422, 0, FILE_GHAND_DDSECURITY }, +#endif + { /*0x0004*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARK_COMBAT, 1, 1, 0, 0 }, + { /*0x0005*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADELVIS, 1, 1, 0, 0 }, + { /*0x0006*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADROSS, 1, 1, 0, 0 }, + { /*0x0007*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADCARRINGTON, 1, 1, 0, 0 }, + { /*0x0008*/ 1, 1, 0, HEADBODYTYPE_MRBLONDE, 13, FILE_CHEADMRBLONDE, 1, 1, 0, 0 }, + { /*0x0009*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADTRENT, 1, 1, 0, 0 }, + { /*0x000a*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDDSHOCK, 1, 1, 0, 0 }, + { /*0x000b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADGRAHAM, 1, 1, 0, 0 }, + { /*0x000c*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARK_FROCK, 1, 1, 0, 0 }, + { /*0x000d*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADSECRETARY, 1, 1, 0, 0 }, + { /*0x000e*/ 0, 1, 0, HEADBODYTYPE_CASS, 13, FILE_CHEADCASSANDRA, 1, 1, 0, 0 }, + { /*0x000f*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADTHEKING, 1, 1, 0, 0 }, + { /*0x0010*/ 0, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADFEM_GUARD, 1, 1, 0, 0 }, + { /*0x0011*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJON, 1, 1, 0, 0 }, + { /*0x0012*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMARK2, 1, 1, 0, 0 }, + { /*0x0013*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADCHRIST, 1, 1, 0, 0 }, + { /*0x0014*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADRUSS, 1, 1, 0, 0 }, + { /*0x0015*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 13, FILE_CHEADGREY, 1, 1, 0, 0 }, + { /*0x0016*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDARLING, 1, 1, 0, 0 }, + { /*0x0017*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADROBERT, 1, 1, 0, 0 }, + { /*0x0018*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, + { /*0x0019*/ 0, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADFEM_GUARD2, 1, 1, 0, 0 }, + { /*0x001a*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBRIAN, 1, 1, 0, 0 }, + { /*0x001b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJAMIE, 1, 1, 0, 0 }, + { /*0x001c*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDUNCAN2, 1, 1, 0, 0 }, + { /*0x001d*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBIOTECH, 1, 1, 0, 0 }, + { /*0x001e*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADNEIL2, 1, 1, 0, 0 }, + { /*0x001f*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADEDMCG, 1, 1, 0, 0 }, + { /*0x0020*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADANKA, 1, 1, 0, 0 }, + { /*0x0021*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADLESLIE_S, 1, 1, 0, 0 }, + { /*0x0022*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMATT_C, 1, 1, 0, 0 }, + { /*0x0023*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPEER_S, 1, 1, 0, 0 }, + { /*0x0024*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADEILEEN_T, 1, 1, 0, 0 }, + { /*0x0025*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADANDY_R, 1, 1, 0, 0 }, + { /*0x0026*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEN_R, 1, 1, 0, 0 }, + { /*0x0027*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSTEVE_K, 1, 1, 0, 0 }, + { /*0x0028*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJONATHAN, 1, 1, 0, 0 }, + { /*0x0029*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADMAIAN_S, 1, 1, 0, 0 }, + { /*0x002a*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSHAUN, 1, 1, 0, 0 }, + { /*0x002b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, + { /*0x002c*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADEILEEN_H, 1, 1, 0, 0 }, + { /*0x002d*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSCOTT_H, 1, 1, 0, 0 }, + { /*0x002e*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSANCHEZ, 1, 1, 0, 0 }, + { /*0x002f*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARKAQUA, 1, 1, 0, 0 }, + { /*0x0030*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDDSNIPER, 1, 1, 0, 0 }, + { /*0x0031*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, + { /*0x0032*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, + { /*0x0033*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, + { /*0x0034*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADBEAU, 1, 1, 0, 0 }, + { /*0x0035*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADGRIFFEY, 1, 1, 0, 0 }, + { /*0x0036*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMOTO, 1, 1, 0, 0 }, + { /*0x0037*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADKEITH, 1, 1, 0, 0 }, + { /*0x0038*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADWINNER, 1, 1, 0, 0 }, + { /*0x0039*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CA51FACEPLATE, 1, 1, 0, 0 }, + { /*0x003a*/ 1, 1, 0, HEADBODYTYPE_MAIAN, 27, FILE_CHEADELVIS_GOGS, 1, 1, 0, 0 }, + { /*0x003b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSTEVEM, 1, 1, 0, 0 }, + { /*0x003c*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEADDARK_SNOW, 1, 1, 0, 0 }, + { /*0x003d*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPRESIDENT, 1, 1, 0, 0 }, + { /*0x003e*/ 0, 1, 0, HEADBODYTYPE_FEMALE, 13, FILE_CHEAD_VD, 1, 1, 0, 0 }, + { /*0x003f*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADKEN, 1, 1, 0, 0 }, + { /*0x0040*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJOEL, 1, 1, 0, 0 }, + { /*0x0041*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADTIM, 1, 1, 0, 0 }, + { /*0x0042*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADGRANT, 1, 1, 0, 0 }, + { /*0x0043*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPENNY, 1, 1, 0, 0 }, + { /*0x0044*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADROBIN, 1, 1, 0, 0 }, + { /*0x0045*/ 0, 1, 0, HEADBODYTYPE_FEMALEGUARD, 13, FILE_CHEADALEX, 1, 1, 0, 0 }, + { /*0x0046*/ 0, 1, 0, HEADBODYTYPE_FEMALEGUARD, 13, FILE_CHEADJULIANNE, 1, 1, 0, 0 }, + { /*0x0047*/ 0, 1, 0, HEADBODYTYPE_FEMALEGUARD, 13, FILE_CHEADLAURA, 1, 1, 0, 0 }, + { /*0x0048*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADDAVEC, 1, 1, 0, 0 }, + { /*0x0049*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADCOOK, 1, 1, 0, 0 }, + { /*0x004a*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPRYCE, 1, 1, 0, 0 }, + { /*0x004b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSILKE, 1, 1, 0, 0 }, + { /*0x004c*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSMITH, 1, 1, 0, 0 }, + { /*0x004d*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADGARETH, 1, 1, 0, 0 }, + { /*0x004e*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMURCHIE, 1, 1, 0, 0 }, + { /*0x004f*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADWONG, 1, 1, 0, 0 }, + { /*0x0050*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADCARTER, 1, 1, 0, 0 }, + { /*0x0051*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADTINTIN, 1, 1, 0, 0 }, + { /*0x0052*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADMUNTON, 1, 1, 0, 0 }, + { /*0x0053*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADSTAMPER, 1, 1, 0, 0 }, + { /*0x0054*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADJONES, 1, 1, 0, 0 }, + { /*0x0055*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 13, FILE_CHEADPHELPS, 1, 1, 0, 0 }, + { /*0x0056*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_COMBAT, 1, 0.95305162668228, 0, FILE_GCOMBATHANDSLOD }, + { /*0x0057*/ 1, 0, 0, HEADBODYTYPE_MAIAN, 106, FILE_CELVIS1, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, + { /*0x0058*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CAREA51GUARD, 1, 0.92769956588745, 0, FILE_GHAND_A51GUARD }, + { /*0x0059*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_COVERALL, 1, 0.92769956588745, 0, FILE_GHAND_A51GUARD }, + { /*0x005a*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 154, FILE_CCARRINGTON, 1, 0.85915493965149, 0, FILE_GHAND_CARRINGTON }, +#if VERSION >= VERSION_NTSC_1_0 + { /*0x005b*/ 1, 0, 0, HEADBODYTYPE_MRBLONDE, 169, FILE_CMRBLONDE, 1, 1.1032863855362, 0, FILE_GHAND_MRBLONDE }, +#else + { /*0x005b*/ 1, 0, 0, HEADBODYTYPE_MRBLONDE, 175, FILE_CMRBLONDE, 1, 1.1032863855362, 0, FILE_GHAND_MRBLONDE }, +#endif + { /*0x005c*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CSKEDAR, 1, 1, 0, 0 }, + { /*0x005d*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 161, FILE_CTRENT, 1, 0.93896716833115, 0, FILE_GHAND_TRENT }, + { /*0x005e*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CDDSHOCK, 1, 0.93896716833115, 0, FILE_GHAND_DDFODDER }, + { /*0x005f*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CLABTECH, 1, 0.93896716833115, 0, FILE_GHAND_MRBLONDE }, + { /*0x0060*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 158, FILE_CSTRIPES, 1, 0.92769956588745, 0, FILE_GHAND_BLACKGUARD }, + { /*0x0061*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_FROCK, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK }, + { /*0x0062*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_TRENCH, 1, 0.95305162668228, 0, FILE_GHAND_JOTRENCH }, + { /*0x0063*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 157, FILE_COFFICEWORKER, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK }, + { /*0x0064*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 157, FILE_COFFICEWORKER2, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK }, + { /*0x0065*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 140, FILE_CSECRETARY, 1, 0.87323945760727, 0, FILE_GHAND_JOFROCK }, +#if VERSION >= VERSION_NTSC_1_0 + { /*0x0066*/ 0, 0, 0, HEADBODYTYPE_CASS, 167, FILE_CCASSANDRA, 1, 0.98591554164886, 0, FILE_GHAND_VRIES }, +#else + { /*0x0066*/ 0, 0, 0, HEADBODYTYPE_CASS, 169, FILE_CCASSANDRA, 1, 0.98591554164886, 0, FILE_GHAND_VRIES }, +#endif + { /*0x0067*/ 1, 0, 0, HEADBODYTYPE_MAIAN, 106, FILE_CTHEKING, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, + { /*0x0068*/ 0, 0, 1, HEADBODYTYPE_FEMALEGUARD, 160, FILE_CFEM_GUARD, 1, 0.96713620424271, 0, FILE_GHAND_JOTRENCH }, + { /*0x0069*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CDD_LABTECH, 1, 0.93896716833115, 0, FILE_GHAND_DDLABTECH }, + { /*0x006a*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 160, FILE_CDD_SECGUARD, 1, 0.93427228927612, 0, FILE_GHAND_DDSECURITY }, + { /*0x006b*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CDRCARROLL, 1, 1, 0, 0 }, + { /*0x006c*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CEYESPY, 1, 1, 0, 0 }, + { /*0x006d*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_RIPPED, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK }, + { /*0x006e*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 160, FILE_CDD_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_DDSECURITY }, + { /*0x006f*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 157, FILE_CDD_SHOCK_INF, 1, 0.93896716833115, 0, FILE_GHAND_DDSHOCK }, + { /*0x0070*/ 1, 1, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CTESTCHR, 1, 1, 0, 0 }, + { /*0x0071*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 155, FILE_CBIOTECH, 1, 0.93896716833115, 0, FILE_GHAND_DDBIO }, + { /*0x0072*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CFBIGUY, 1, 0.93896716833115, 0, FILE_GHAND_FBIARM }, + { /*0x0073*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CCIAGUY, 1, 0.93896716833115, 0, FILE_GHAND_CIA }, + { /*0x0074*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CA51TROOPER, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK }, + { /*0x0075*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 157, FILE_CA51AIRMAN, 1, 0.93896716833115, 0, FILE_GHAND_A51AIRMAN }, + { /*0x0076*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CCHICROB, 1, 1, 0, 0 }, + { /*0x0077*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 153, FILE_CSTEWARD, 1, 0.89201879501343, 0, FILE_GHAND_JOFROCK }, + { /*0x0078*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 143, FILE_CSTEWARDESS, 1, 0.85446006059647, 0, FILE_GHAND_JOFROCK }, + { /*0x0079*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPRESIDENT, 1, 0.93896716833115, 0, FILE_GHAND_PRESIDENT }, + { /*0x007a*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 143, FILE_CSTEWARDESS_COAT, 1, 0.85446006059647, 0, FILE_GHAND_STEWARDESS_COAT }, + { /*0x007b*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CMINISKEDAR, 0.75, 0.5, 0, 0 }, + { /*0x007c*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CNSA_LACKEY, 1, 0.93896716833115, 0, FILE_GHAND_CARRINGTON }, + { /*0x007d*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPRES_SECURITY, 1, 0.93896716833115, 0, FILE_GHAND_CARRINGTON }, + { /*0x007e*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 142, FILE_CNEGOTIATOR, 1, 0.85446006059647, 0, FILE_GHAND_JOFROCK }, + { /*0x007f*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CG5_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_G5GUARD }, + { /*0x0080*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CPELAGIC_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_TRAGIC_PELAGIC }, + { /*0x0081*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 158, FILE_CG5_SWAT_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_G5GUARD }, + { /*0x0082*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 158, FILE_CALASKAN_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_JOSNOW }, + { /*0x0083*/ 1, 0, 1, HEADBODYTYPE_MAIAN, 106, FILE_CMAIAN_SOLDIER, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, + { /*0x0084*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPRESIDENT_CLONE, 1, 0.93896716833115, 0, FILE_GCOMBATHANDSLOD }, + { /*0x0085*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPRESIDENT_CLONE, 1, 0.93896716833115, 0, FILE_GHAND_PRESIDENT }, + { /*0x0086*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_AF1, 1, 0.95305162668228, 0, FILE_GHAND_JOPILOT }, + { /*0x0087*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARKWET, 1, 0.95305162668228, 0, FILE_GHAND_JOWETSUIT }, + { /*0x0088*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARKAQUALUNG, 1, 0.95305162668228, 0, FILE_GHAND_JOWETSUIT }, + { /*0x0089*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARKSNOW, 1, 0.95305162668228, 0, FILE_GHAND_JOSNOW }, + { /*0x008a*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARKLAB, 1, 0.95305162668228, 0, FILE_GHAND_MRBLONDE }, + { /*0x008b*/ 0, 0, 1, HEADBODYTYPE_FEMALE, 159, FILE_CFEMLABTECH, 1, 0.87323945760727, 0, FILE_GHAND_MRBLONDE }, + { /*0x008c*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CDDSNIPER, 1, 0.93896716833115, 0, FILE_GHAND_DDSNIPER }, + { /*0x008d*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CPILOTAF1, 1, 0.88262909650803, 0, FILE_GHAND_JOPILOT }, + { /*0x008e*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CCILABTECH, 1, 0.93896716833115, 0, FILE_GHAND_CIFEMTECH }, + { /*0x008f*/ 0, 0, 1, HEADBODYTYPE_FEMALE, 159, FILE_CCIFEMTECH, 1, 0.86854463815689, 0, FILE_GHAND_CIFEMTECH }, + { /*0x0090*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CCARREVENINGSUIT, 1, 0.85915493965149, 0, FILE_GHAND_MRBLONDE }, + { /*0x0091*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CJONATHON, 1, 0.93896716833115, 0, FILE_GHAND_A51GUARD }, + { /*0x0092*/ 1, 0, 1, HEADBODYTYPE_DEFAULT, 159, FILE_CCISOLDIER, 1, 0.93896716833115, 0, FILE_GHAND_CISOLDIER }, + { /*0x0093*/ 1, 0, 0, HEADBODYTYPE_DEFAULT, 159, FILE_CSKEDARKING, 1, 1.25, 0, 0 }, + { /*0x0094*/ 1, 0, 0, HEADBODYTYPE_MAIAN, 106, FILE_CELVISWAISTCOAT, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS }, + { /*0x0095*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_LEATHER, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK }, + { /*0x0096*/ 0, 0, 0, HEADBODYTYPE_FEMALE, 159, FILE_CDARK_NEGOTIATOR, 1, 0.95305162668228, 0, FILE_GHAND_JOAF1 }, + { /*0x0097*/ 0, 0, 0, HEADBODYTYPE_DEFAULT, 0, 0, 1, 0, 0, FILE_GCOMBATHANDSLOD }, +}; + +// [headnum][hattype] +struct hatposition var8007dae4[1][6] = { + { + // HEAD_SHAUN + { -0.070299997925758, 0.49189999699593, -0.83359998464584, 1.072811961174, 1.0883259773254, 0.92612099647522 }, + { -0.10000000149012, 0.42750000953674, -0.48249998688698, 1.0333679914474, 0.96552097797394, 0.92990499734879 }, + { 0.18000000715256, 0, 0, 1.0722140073776, 1, 1 }, + { 0.23700000345707, 0.97699999809265, -0.43999999761581, 1.1784629821777, 1.1406099796295, 1.1434650421143 }, + { -0.090300001204014, 0.23190000653267, 0.12639999389648, 0.99080002307892, 1.0199999809265, 0.84659999608994 }, + { 0, 0.14849999547005, 0.37929999828339, 1.1548000574112, 0.99190002679825, 0.95139998197556 }, + } +}; diff --git a/src/game/modeldata/skedar.c b/src/game/modeldata/skedar.c new file mode 100644 index 000000000..7c9225d8e --- /dev/null +++ b/src/game/modeldata/skedar.c @@ -0,0 +1,47 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelSkedarJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 15 }, + { 9, 16 }, + { 10, 17 }, + { 11, 18 }, + { 12, 19 }, + { 13, 20 }, + { 14, 21 }, + { 15, 8 }, + { 16, 9 }, + { 17, 10 }, + { 18, 11 }, + { 19, 12 }, + { 20, 13 }, + { 21, 14 }, + { 22, 29 }, + { 23, 30 }, + { 24, 31 }, + { 25, 32 }, + { 26, 33 }, + { 27, 34 }, + { 28, 35 }, + { 29, 22 }, + { 30, 23 }, + { 31, 24 }, + { 32, 25 }, + { 33, 26 }, + { 34, 27 }, + { 35, 28 }, +}; + +struct skeleton g_SkelSkedar = { + SKEL_SKEDAR, ARRAYCOUNT(g_SkelSkedarJoints), g_SkelSkedarJoints, +}; diff --git a/src/game/modeldata/skel06.c b/src/game/modeldata/skel06.c new file mode 100644 index 000000000..cf992d662 --- /dev/null +++ b/src/game/modeldata/skel06.c @@ -0,0 +1,18 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_Skel06Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, +}; + +struct skeleton g_Skel06 = { + SKEL_06, ARRAYCOUNT(g_Skel06Joints), g_Skel06Joints, +}; diff --git a/src/game/modeldata/skel0a.c b/src/game/modeldata/skel0a.c new file mode 100644 index 000000000..48319e972 --- /dev/null +++ b/src/game/modeldata/skel0a.c @@ -0,0 +1,29 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_Skel0AJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 4 }, + { 4, 3 }, + { 5, 6 }, + { 6, 5 }, + { 7, 8 }, + { 8, 7 }, + { 9, 10 }, + { 10, 9 }, + { 11, 12 }, + { 12, 11 }, + { 13, 14 }, + { 14, 13 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, +}; + +struct skeleton g_Skel0A = { + SKEL_0A, ARRAYCOUNT(g_Skel0AJoints), g_Skel0AJoints, +}; diff --git a/src/game/modeldata/skel0b.c b/src/game/modeldata/skel0b.c new file mode 100644 index 000000000..007acbfda --- /dev/null +++ b/src/game/modeldata/skel0b.c @@ -0,0 +1,26 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_Skel0BJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 4 }, + { 4, 3 }, + { 5, 6 }, + { 6, 5 }, + { 7, 8 }, + { 8, 7 }, + { 9, 10 }, + { 10, 9 }, + { 11, 12 }, + { 12, 11 }, + { 13, 14 }, + { 14, 13 }, +}; + +struct skeleton g_Skel0B = { + SKEL_0B, ARRAYCOUNT(g_Skel0BJoints), g_Skel0BJoints, +}; diff --git a/src/game/modeldata/skel20.c b/src/game/modeldata/skel20.c new file mode 100644 index 000000000..571467b1b --- /dev/null +++ b/src/game/modeldata/skel20.c @@ -0,0 +1,12 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_Skel20Joints[][2] = { + { 0, 0 }, +}; + +struct skeleton g_Skel20 = { + SKEL_20, ARRAYCOUNT(g_Skel20Joints), g_Skel20Joints, +}; diff --git a/src/game/modeldata/uzi.c b/src/game/modeldata/uzi.c new file mode 100644 index 000000000..73b80de98 --- /dev/null +++ b/src/game/modeldata/uzi.c @@ -0,0 +1,18 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelUziJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 6, 6 }, + { 4, 4 }, + { 5, 5 }, +}; + +struct skeleton g_SkelUzi = { + SKEL_UZI, ARRAYCOUNT(g_SkelUziJoints), g_SkelUziJoints, +}; diff --git a/src/game/modeldata/weapon.c b/src/game/modeldata/weapon.c new file mode 100644 index 000000000..362fd8b54 --- /dev/null +++ b/src/game/modeldata/weapon.c @@ -0,0 +1,1631 @@ +#include +#include "bss.h" +#include "data.h" +#include "types.h" + +u8 g_SkelJoypadJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, +}; + +struct skeleton g_SkelJoypad = { + SKEL_JOYPAD, ARRAYCOUNT(g_SkelJoypadJoints), g_SkelJoypadJoints, +}; + +u8 g_Skel21Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, + { 43, 43 }, + { 44, 44 }, + { 45, 45 }, + { 46, 46 }, +}; + +struct skeleton g_Skel21 = { + SKEL_21, ARRAYCOUNT(g_Skel21Joints), g_Skel21Joints, +}; + +u8 g_SkelLaptopGunJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, + { 43, 43 }, + { 44, 44 }, + { 45, 45 }, +}; + +struct skeleton g_SkelLaptopGun = { + SKEL_LAPTOPGUN, ARRAYCOUNT(g_SkelLaptopGunJoints), g_SkelLaptopGunJoints, +}; + +u8 g_SkelK7AvengerJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, +}; + +struct skeleton g_SkelK7Avenger = { + SKEL_K7AVENGER, ARRAYCOUNT(g_SkelK7AvengerJoints), g_SkelK7AvengerJoints, +}; + +u8 g_SkelFalcon2Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, +}; + +struct skeleton g_SkelFalcon2 = { + SKEL_FALCON2, ARRAYCOUNT(g_SkelFalcon2Joints), g_SkelFalcon2Joints, +}; + +u8 g_SkelKnifeJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, +}; + +struct skeleton g_SkelKnife = { + SKEL_KNIFE, ARRAYCOUNT(g_SkelKnifeJoints), g_SkelKnifeJoints, +}; + +u8 g_SkelCmp150Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, +}; + +struct skeleton g_SkelCmp150 = { + SKEL_CMP150, ARRAYCOUNT(g_SkelCmp150Joints), g_SkelCmp150Joints, +}; + +u8 g_SkelDragonJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, +}; + +struct skeleton g_SkelDragon = { + SKEL_DRAGON, ARRAYCOUNT(g_SkelDragonJoints), g_SkelDragonJoints, +}; + +u8 g_SkelSuperDragonJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, +}; + +struct skeleton g_SkelSuperDragon = { + SKEL_SUPERDRAGON, ARRAYCOUNT(g_SkelSuperDragonJoints), g_SkelSuperDragonJoints, +}; + +u8 g_SkelRocketJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, +}; + +struct skeleton g_SkelRocket = { + SKEL_ROCKET, ARRAYCOUNT(g_SkelRocketJoints), g_SkelRocketJoints, +}; + +u8 g_Skel4AJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, +}; + +struct skeleton g_Skel4A = { + SKEL_4A, ARRAYCOUNT(g_Skel4AJoints), g_Skel4AJoints, +}; + +u8 g_SkelShotgunJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, +}; + +struct skeleton g_SkelShotgun = { + SKEL_SHOTGUN, ARRAYCOUNT(g_SkelShotgunJoints), g_SkelShotgunJoints, +}; + +u8 g_SkelFarsightJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, + { 43, 43 }, + { 44, 44 }, + { 45, 45 }, + { 46, 46 }, + { 47, 47 }, +}; + +struct skeleton g_SkelFarsight = { + SKEL_FARSIGHT, ARRAYCOUNT(g_SkelFarsightJoints), g_SkelFarsightJoints, +}; + +u8 g_Skel4DJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, +}; + +struct skeleton g_Skel4D = { + SKEL_4D, ARRAYCOUNT(g_Skel4DJoints), g_Skel4DJoints, +}; + +u8 g_SkelReaperJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, + { 43, 43 }, + { 44, 44 }, + { 45, 45 }, + { 46, 46 }, + { 47, 47 }, + { 48, 48 }, + { 49, 49 }, +}; + +struct skeleton g_SkelReaper = { + SKEL_REAPER, ARRAYCOUNT(g_SkelReaperJoints), g_SkelReaperJoints, +}; + +u8 g_SkelMaulerJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, +}; + +struct skeleton g_SkelMauler = { + SKEL_MAULER, ARRAYCOUNT(g_SkelMaulerJoints), g_SkelMaulerJoints, +}; + +u8 g_SkelDevastatorJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, +}; + +struct skeleton g_SkelDevastator = { + SKEL_DEVASTATOR, ARRAYCOUNT(g_SkelDevastatorJoints), g_SkelDevastatorJoints, +}; + +u8 g_SkelPistolJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, +}; + +struct skeleton g_SkelPistol = { + SKEL_PISTOL, ARRAYCOUNT(g_SkelPistolJoints), g_SkelPistolJoints, +}; + +u8 g_SkelAr34Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, +}; + +struct skeleton g_SkelAr34 = { + SKEL_AR34, ARRAYCOUNT(g_SkelAr34Joints), g_SkelAr34Joints, +}; + +u8 g_SkelMagnumJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, + { 43, 43 }, + { 44, 44 }, + { 45, 45 }, + { 46, 46 }, +}; + +struct skeleton g_SkelMagnum = { + SKEL_MAGNUM, ARRAYCOUNT(g_SkelMagnumJoints), g_SkelMagnumJoints, +}; + +u8 g_SkelSlayerRocketJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, +}; + +struct skeleton g_SkelSlayerRocket = { + SKEL_SLAYERROCKET, ARRAYCOUNT(g_SkelSlayerRocketJoints), g_SkelSlayerRocketJoints, +}; + +u8 g_SkelCycloneJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, +}; + +struct skeleton g_SkelCyclone = { + SKEL_CYCLONE, ARRAYCOUNT(g_SkelCycloneJoints), g_SkelCycloneJoints, +}; + +u8 g_SkelSniperRifleJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, +}; + +struct skeleton g_SkelSniperRifle = { + SKEL_SNIPERRIFLE, ARRAYCOUNT(g_SkelSniperRifleJoints), g_SkelSniperRifleJoints, +}; + +u8 g_SkelTranquilizerJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, +}; + +struct skeleton g_SkelTranquilizer = { + SKEL_TRANQUILIZER, ARRAYCOUNT(g_SkelTranquilizerJoints), g_SkelTranquilizerJoints, +}; + +u8 g_SkelCrossbowJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, + { 43, 43 }, + { 44, 44 }, + { 45, 45 }, +}; + +struct skeleton g_SkelCrossbow = { + SKEL_CROSSBOW, ARRAYCOUNT(g_SkelCrossbowJoints), g_SkelCrossbowJoints, +}; + +u8 g_SkelTimedProxyMineJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, +}; + +struct skeleton g_SkelTimedProxyMine = { + SKEL_TIMEDPROXYMINE, ARRAYCOUNT(g_SkelTimedProxyMineJoints), g_SkelTimedProxyMineJoints, +}; + +u8 g_SkelPhoenixJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, +}; + +struct skeleton g_SkelPhoenix = { + SKEL_PHOENIX, ARRAYCOUNT(g_SkelPhoenixJoints), g_SkelPhoenixJoints, +}; + +u8 g_SkelCallistoJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, + { 41, 41 }, + { 42, 42 }, +}; + +struct skeleton g_SkelCallisto = { + SKEL_CALLISTO, ARRAYCOUNT(g_SkelCallistoJoints), g_SkelCallistoJoints, +}; + +u8 g_SkelRcp120Joints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, + { 37, 37 }, + { 38, 38 }, + { 39, 39 }, + { 40, 40 }, +}; + +struct skeleton g_SkelRcp120 = { + SKEL_RCP120, ARRAYCOUNT(g_SkelRcp120Joints), g_SkelRcp120Joints, +}; + +u8 g_SkelHudPieceJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, +}; + +struct skeleton g_SkelHudPiece = { + SKEL_HUDPIECE, ARRAYCOUNT(g_SkelHudPieceJoints), g_SkelHudPieceJoints, +}; + +u8 g_SkelHandJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, +}; + +struct skeleton g_SkelHand = { + SKEL_HAND, ARRAYCOUNT(g_SkelHandJoints), g_SkelHandJoints, +}; + +u8 g_SkelLaserJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, +}; + +struct skeleton g_SkelLaser = { + SKEL_LASER, ARRAYCOUNT(g_SkelLaserJoints), g_SkelLaserJoints, +}; + +u8 g_SkelGrenadeJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, +}; + +struct skeleton g_SkelGrenade = { + SKEL_GRENADE, ARRAYCOUNT(g_SkelGrenadeJoints), g_SkelGrenadeJoints, +}; + +u8 g_SkelEcmMineJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, +}; + +struct skeleton g_SkelEcmMine = { + SKEL_ECMMINE, ARRAYCOUNT(g_SkelEcmMineJoints), g_SkelEcmMineJoints, +}; + +u8 g_SkelUplinkJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, +}; + +struct skeleton g_SkelUplink = { + SKEL_UPLINK, ARRAYCOUNT(g_SkelUplinkJoints), g_SkelUplinkJoints, +}; + +u8 g_SkelRemoteMineJoints[][2] = { + { 0, 0 }, + { 1, 1 }, + { 2, 2 }, + { 3, 3 }, + { 4, 4 }, + { 5, 5 }, + { 6, 6 }, + { 7, 7 }, + { 8, 8 }, + { 9, 9 }, + { 10, 10 }, + { 11, 11 }, + { 12, 12 }, + { 13, 13 }, + { 14, 14 }, + { 15, 15 }, + { 16, 16 }, + { 17, 17 }, + { 18, 18 }, + { 19, 19 }, + { 20, 20 }, + { 21, 21 }, + { 22, 22 }, + { 23, 23 }, + { 24, 24 }, + { 25, 25 }, + { 26, 26 }, + { 27, 27 }, + { 28, 28 }, + { 29, 29 }, + { 30, 30 }, + { 31, 31 }, + { 32, 32 }, + { 33, 33 }, + { 34, 34 }, + { 35, 35 }, + { 36, 36 }, +}; + +struct skeleton g_SkelRemoteMine = { + SKEL_REMOTEMINE, ARRAYCOUNT(g_SkelRemoteMineJoints), g_SkelRemoteMineJoints, +}; diff --git a/src/game/propobj.c b/src/game/propobj.c index 0586949af..33d4ab2ce 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -4056,20 +4056,20 @@ glabel func0f069850 /* f06988c: 0c005775 */ jal mtx4SetTranslation /* f069890: 27a50038 */ addiu $a1,$sp,0x38 /* f069894: 8e0e0018 */ lw $t6,0x18($s0) -/* f069898: 3c0f8008 */ lui $t7,%hi(g_ModelTypeHoverbike) -/* f06989c: 25efaf3c */ addiu $t7,$t7,%lo(g_ModelTypeHoverbike) +/* f069898: 3c0f8008 */ lui $t7,%hi(g_SkelHoverbike) +/* f06989c: 25efaf3c */ addiu $t7,$t7,%lo(g_SkelHoverbike) /* f0698a0: 8dc40008 */ lw $a0,0x8($t6) -/* f0698a4: 3c188008 */ lui $t8,%hi(g_ModelTypeBasic) -/* f0698a8: 2718c06c */ addiu $t8,$t8,%lo(g_ModelTypeBasic) +/* f0698a4: 3c188008 */ lui $t8,%hi(g_SkelBasic) +/* f0698a8: 2718c06c */ addiu $t8,$t8,%lo(g_SkelBasic) /* f0698ac: 8c820004 */ lw $v0,0x4($a0) /* f0698b0: 11e20009 */ beq $t7,$v0,.L0f0698d8 /* f0698b4: 00000000 */ nop /* f0698b8: 13020007 */ beq $t8,$v0,.L0f0698d8 -/* f0698bc: 3c198008 */ lui $t9,%hi(g_ModelTypeMaianUfo) -/* f0698c0: 2739afc8 */ addiu $t9,$t9,%lo(g_ModelTypeMaianUfo) +/* f0698bc: 3c198008 */ lui $t9,%hi(g_SkelMaianUfo) +/* f0698c0: 2739afc8 */ addiu $t9,$t9,%lo(g_SkelMaianUfo) /* f0698c4: 13220004 */ beq $t9,$v0,.L0f0698d8 -/* f0698c8: 3c088008 */ lui $t0,%hi(g_ModelTypeDropship) -/* f0698cc: 2508adf0 */ addiu $t0,$t0,%lo(g_ModelTypeDropship) +/* f0698c8: 3c088008 */ lui $t0,%hi(g_SkelDropship) +/* f0698cc: 2508adf0 */ addiu $t0,$t0,%lo(g_SkelDropship) /* f0698d0: 55020005 */ bnel $t0,$v0,.L0f0698e8 /* f0698d4: 8e090010 */ lw $t1,0x10($s0) .L0f0698d8: @@ -33366,7 +33366,7 @@ void doorTick(struct prop *doorprop) } // Consider playing a sound effect - if (model->filedata->type == &g_ModelType13) { + if (model->filedata->skel == &g_Skel13) { f32 soundpoint = door->maxfrac * 0.3f; if (door->frac > soundpoint) { @@ -33440,7 +33440,7 @@ void doorUpdatePortalIfWindowed(struct prop *doorprop, s32 playercount) canhide = false; } - if (model->filedata->type == &g_ModelTypeWindowedDoor) { + if (model->filedata->skel == &g_SkelWindowedDoor) { node = modelGetPart(model->filedata, MODELPART_WINDOWEDDOOR_0001); rwdata = modelGetNodeRwData(model, node); @@ -33497,13 +33497,13 @@ glabel var7f1aa44c /* f07749c: 0c0056f8 */ jal mtx00015be0 /* f0774a0: 02a02825 */ or $a1,$s5,$zero /* f0774a4: 8ec40008 */ lw $a0,0x8($s6) -/* f0774a8: 3c0e8008 */ lui $t6,%hi(g_ModelType11) -/* f0774ac: 25ceae84 */ addiu $t6,$t6,%lo(g_ModelType11) +/* f0774a8: 3c0e8008 */ lui $t6,%hi(g_Skel11) +/* f0774ac: 25ceae84 */ addiu $t6,$t6,%lo(g_Skel11) /* f0774b0: 8c820004 */ lw $v0,0x4($a0) -/* f0774b4: 3c0f8008 */ lui $t7,%hi(g_ModelType13) +/* f0774b4: 3c0f8008 */ lui $t7,%hi(g_Skel13) /* f0774b8: 3c017f1b */ lui $at,%hi(var7f1aa440) /* f0774bc: 15c20024 */ bne $t6,$v0,.L0f077550 -/* f0774c0: 25efaea8 */ addiu $t7,$t7,%lo(g_ModelType13) +/* f0774c0: 25efaea8 */ addiu $t7,$t7,%lo(g_Skel13) /* f0774c4: c42ea440 */ lwc1 $f14,%lo(var7f1aa440)($at) /* f0774c8: c604007c */ lwc1 $f4,0x7c($s0) /* f0774cc: 3c017f1b */ lui $at,%hi(var7f1aa444) @@ -33628,7 +33628,7 @@ glabel var7f1aa44c // func0f08c424(door, matrices); // mtx00015be0(currentPlayerGetMatrix1740(), matrices); // -// if (model->filedata->type == &g_ModelType11) { +// if (model->filedata->type == &g_Skel11) { // f32 xrot = M_BADTAU - door->frac * 0.017450513318181f; // // rodata = modelGetPartRodata(model->filedata, 1); @@ -33640,7 +33640,7 @@ glabel var7f1aa44c // mtx4LoadXRotation(M_BADTAU - xrot, &matrices[2]); // mtx4SetTranslation(&rodata->position.pos, &matrices[2]); // mtx4MultMtx4InPlace(matrices, &matrices[2]); -// } else if (model->filedata->type == &g_ModelType13) { +// } else if (model->filedata->type == &g_Skel13) { // f32 zrot1 = 0; // f32 zrot2 = door->frac * 0.017450513318181f; // f32 limit = door->maxfrac * 0.3f; @@ -49782,7 +49782,7 @@ s32 objTick(struct prop *prop) sp144 = floorf(model->anim->frame); for (i = sp148; i <= sp144; i++) { - anim00024b64(0, 0, model->filedata->type, model->anim->animnum, i, &sp128, 0); + anim00024b64(0, 0, model->filedata->skel, model->anim->animnum, i, &sp128, 0); sp116.x += sp128.x * 0.1f; sp112 = sp128.y * 0.1f; @@ -49943,7 +49943,7 @@ s32 objTick(struct prop *prop) if (obj->type == OBJTYPE_FAN) { fanUpdateModel(prop); - } else if (obj->model->filedata->type == &g_ModelTypeDropship) { + } else if (obj->model->filedata->skel == &g_SkelDropship) { dropshipUpdateInterior(prop); } @@ -53838,13 +53838,13 @@ glabel var7f1aa82c bool modelIsNodeNotTvscreen(struct modelfiledata *filedata, struct modelnode *node) { - if (filedata->type == &g_ModelTypeTerminal) { + if (filedata->skel == &g_SkelTerminal) { if (modelGetPart(filedata, MODELPART_TERMINAL_0000) == node) { return false; } } - if (filedata->type == &g_ModelTypeCiHub) { + if (filedata->skel == &g_SkelCiHub) { if (modelGetPart(filedata, MODELPART_CIHUB_0000) == node || modelGetPart(filedata, MODELPART_CIHUB_0001) == node || modelGetPart(filedata, MODELPART_CIHUB_0002) == node @@ -57662,10 +57662,10 @@ glabel func0f0841dc /* f08421c: 3c19800a */ lui $t9,%hi(g_Vars+0x2ac) /* f084220: 8f39a26c */ lw $t9,%lo(g_Vars+0x2ac)($t9) /* f084224: 8e050014 */ lw $a1,0x14($s0) -/* f084228: 3c068008 */ lui $a2,%hi(propexplosiontypes+0x8) +/* f084228: 3c068008 */ lui $a2,%hi(g_PropExplosionTypes+0x8) /* f08422c: 24010006 */ addiu $at,$zero,0x6 /* f084230: 00d83021 */ addu $a2,$a2,$t8 -/* f084234: 80c6be3c */ lb $a2,%lo(propexplosiontypes+0x8)($a2) +/* f084234: 80c6be3c */ lb $a2,%lo(g_PropExplosionTypes+0x8)($a2) /* f084238: 17210007 */ bne $t9,$at,.L0f084258 /* f08423c: 00a01825 */ or $v1,$a1,$zero /* f084240: 3c08800a */ lui $t0,%hi(g_CutsceneAnimNum) @@ -57924,10 +57924,10 @@ glabel func0f0841dc /* f08421c: 3c19800a */ lui $t9,%hi(g_Vars+0x2ac) /* f084220: 8f39a26c */ lw $t9,%lo(g_Vars+0x2ac)($t9) /* f084224: 8e050014 */ lw $a1,0x14($s0) -/* f084228: 3c068008 */ lui $a2,%hi(propexplosiontypes+0x8) +/* f084228: 3c068008 */ lui $a2,%hi(g_PropExplosionTypes+0x8) /* f08422c: 24010006 */ addiu $at,$zero,0x6 /* f084230: 00d83021 */ addu $a2,$a2,$t8 -/* f084234: 80c6be3c */ lb $a2,%lo(propexplosiontypes+0x8)($a2) +/* f084234: 80c6be3c */ lb $a2,%lo(g_PropExplosionTypes+0x8)($a2) /* f084238: 17210007 */ bne $t9,$at,.L0f084258 /* f08423c: 00a01825 */ or $v1,$a1,$zero /* f084240: 3c08800a */ lui $t0,%hi(g_CutsceneAnimNum) @@ -59258,7 +59258,7 @@ void func0f0859a0(struct prop *prop, struct shotdata *shotdata) if ((obj->flags & OBJFLAG_INVINCIBLE) == 0) { if (obj->type == OBJTYPE_GLASS || obj->type == OBJTYPE_TINTEDGLASS) { isnotglass = false; - } else if (obj->model->filedata->type == &g_ModelTypeWindowedDoor + } else if (obj->model->filedata->skel == &g_SkelWindowedDoor && modelGetPart(obj->model->filedata, MODELPART_WINDOWEDDOOR_0003) == node2) { isnotglass = false; } @@ -59598,8 +59598,8 @@ glabel objHit /* f0862e4: 15c00041 */ bnez $t6,.L0f0863ec /* f0862e8: 00000000 */ nop /* f0862ec: 8f2f0018 */ lw $t7,0x18($t9) -/* f0862f0: 3c188008 */ lui $t8,%hi(g_ModelTypeWindowedDoor) -/* f0862f4: 2718aed8 */ addiu $t8,$t8,%lo(g_ModelTypeWindowedDoor) +/* f0862f0: 3c188008 */ lui $t8,%hi(g_SkelWindowedDoor) +/* f0862f4: 2718aed8 */ addiu $t8,$t8,%lo(g_SkelWindowedDoor) /* f0862f8: 8deb0008 */ lw $t3,0x8($t7) /* f0862fc: 8d0a0004 */ lw $t2,0x4($t0) /* f086300: 00001825 */ or $v1,$zero,$zero @@ -59700,9 +59700,9 @@ glabel objHit /* f086458: afa600d0 */ sw $a2,0xd0($sp) /* f08645c: 8fa600d0 */ lw $a2,0xd0($sp) /* f086460: 8fb9011c */ lw $t9,0x11c($sp) -/* f086464: 3c188008 */ lui $t8,%hi(g_ModelTypeWindowedDoor) +/* f086464: 3c188008 */ lui $t8,%hi(g_SkelWindowedDoor) /* f086468: 84ce000a */ lh $t6,0xa($a2) -/* f08646c: 2718aed8 */ addiu $t8,$t8,%lo(g_ModelTypeWindowedDoor) +/* f08646c: 2718aed8 */ addiu $t8,$t8,%lo(g_SkelWindowedDoor) /* f086470: 24050003 */ addiu $a1,$zero,0x3 /* f086474: 004e001b */ divu $zero,$v0,$t6 /* f086478: 00007810 */ mfhi $t7 @@ -59728,8 +59728,8 @@ glabel objHit /* f0864c4: 8de40008 */ lw $a0,0x8($t7) /* f0864c8: 8c830004 */ lw $v1,0x4($a0) .L0f0864cc: -/* f0864cc: 3c198008 */ lui $t9,%hi(g_ModelTypeCctv) -/* f0864d0: 2739ae34 */ addiu $t9,$t9,%lo(g_ModelTypeCctv) +/* f0864cc: 3c198008 */ lui $t9,%hi(g_SkelCctv) +/* f0864d0: 2739ae34 */ addiu $t9,$t9,%lo(g_SkelCctv) /* f0864d4: 17230009 */ bne $t9,$v1,.L0f0864fc /* f0864d8: 24050001 */ addiu $a1,$zero,0x1 /* f0864dc: 0c006a47 */ jal modelGetPart @@ -59833,8 +59833,8 @@ glabel objHit /* f086644: 1441001d */ bne $v0,$at,.L0f0866bc /* f086648: 8fac0100 */ lw $t4,0x100($sp) /* f08664c: 8fae011c */ lw $t6,0x11c($sp) -/* f086650: 3c0b8008 */ lui $t3,%hi(g_ModelTypeCctv) -/* f086654: 256bae34 */ addiu $t3,$t3,%lo(g_ModelTypeCctv) +/* f086650: 3c0b8008 */ lui $t3,%hi(g_SkelCctv) +/* f086654: 256bae34 */ addiu $t3,$t3,%lo(g_SkelCctv) /* f086658: 8dcf0018 */ lw $t7,0x18($t6) /* f08665c: 24050001 */ addiu $a1,$zero,0x1 /* f086660: 8de40008 */ lw $a0,0x8($t7) @@ -59892,8 +59892,8 @@ glabel objHit /* f086718: 0fc2149c */ jal objTakeGunfire /* f08671c: afaf0010 */ sw $t7,0x10($sp) /* f086720: 8fa4011c */ lw $a0,0x11c($sp) -/* f086724: 3c0b8008 */ lui $t3,%hi(g_ModelTypeWindowedDoor) -/* f086728: 256baed8 */ addiu $t3,$t3,%lo(g_ModelTypeWindowedDoor) +/* f086724: 3c0b8008 */ lui $t3,%hi(g_SkelWindowedDoor) +/* f086728: 256baed8 */ addiu $t3,$t3,%lo(g_SkelWindowedDoor) /* f08672c: 8c980018 */ lw $t8,0x18($a0) /* f086730: 8fac0124 */ lw $t4,0x124($sp) /* f086734: 8f190008 */ lw $t9,0x8($t8) @@ -65126,7 +65126,7 @@ glabel func0f089a94 struct prop *hatApplyToChr(struct hatobj *hat, struct chrdata *chr, struct modelfiledata *filedata, struct prop *prop, struct model *model) { - if (chr->model->filedata->type == &g_ModelTypeChr) { + if (chr->model->filedata->skel == &g_SkelChr) { prop = objInit(&hat->base, filedata, prop, model); if (prop && hat->base.model) { @@ -65763,7 +65763,7 @@ bool chrEquipWeapon(struct weaponobj *weapon, struct chrdata *chr) } if (!chr->weapons_held[handnum]) { - if (chr->model->filedata->type == &g_ModelTypeChr) { + if (chr->model->filedata->skel == &g_SkelChr) { weapon->base.model->attachedtomodel = chr->model; if (handnum == HAND_RIGHT) { @@ -65777,7 +65777,7 @@ bool chrEquipWeapon(struct weaponobj *weapon, struct chrdata *chr) if ((weapon->base.flags & OBJFLAG_80000000) && chr->weapons_held[1 - handnum]) { propweaponSetDual(weapon, chr->weapons_held[1 - handnum]->weapon); } - } else if (chr->model->filedata->type == &g_ModelTypeSkedar) { + } else if (chr->model->filedata->skel == &g_SkelSkedar) { weapon->base.model->attachedtomodel = chr->model; if (handnum == HAND_RIGHT) { @@ -66603,7 +66603,7 @@ void weaponSetGunfireVisible(struct prop *prop, bool visible, s16 room) if (obj && obj->type == OBJTYPE_WEAPON) { struct model *model = obj->model; - if (model && model->filedata->type == &g_ModelTypeChrGun) { + if (model && model->filedata->skel == &g_SkelChrGun) { node1 = modelGetPart(model->filedata, MODELPART_CHRGUN_GUNFIRE); if (node1) { @@ -66639,7 +66639,7 @@ bool weaponIsGunfireVisible(struct prop *prop) struct model *model = obj->model; struct modelnode *node; - if (model && model->filedata->type == &g_ModelTypeChrGun) { + if (model && model->filedata->skel == &g_SkelChrGun) { node = modelGetPart(model->filedata, MODELPART_CHRGUN_GUNFIRE); if (node) { diff --git a/src/include/constants.h b/src/include/constants.h index c352428d3..c5280e71e 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -731,12 +731,17 @@ #define EXPLOSIONTYPE_1 1 #define EXPLOSIONTYPE_2 2 #define EXPLOSIONTYPE_3 3 +#define EXPLOSIONTYPE_4 4 #define EXPLOSIONTYPE_5 5 +#define EXPLOSIONTYPE_6 6 #define EXPLOSIONTYPE_7 7 #define EXPLOSIONTYPE_8 8 +#define EXPLOSIONTYPE_9 9 +#define EXPLOSIONTYPE_11 11 #define EXPLOSIONTYPE_12 12 #define EXPLOSIONTYPE_13 13 #define EXPLOSIONTYPE_14 14 +#define EXPLOSIONTYPE_16 16 #define EXPLOSIONTYPE_17 17 #define EXPLOSIONTYPE_18 18 #define EXPLOSIONTYPE_21 21 @@ -2284,87 +2289,6 @@ #define MODELPART_0066 0x0066 #define MODELPART_0067 0x0067 -#define MODELTYPE_BASIC 0x02 -#define MODELTYPE_CHRGUN 0x03 -#define MODELTYPE_JOYPAD 0x04 -#define MODELTYPE_UZI 0x05 -#define MODELTYPE_06 0x06 -#define MODELTYPE_CLASSICGUN 0x07 -#define MODELTYPE_CASING 0x08 -#define MODELTYPE_CHR 0x09 -#define MODELTYPE_0A 0x0a -#define MODELTYPE_0B 0x0b -#define MODELTYPE_0C 0x0c -#define MODELTYPE_HEAD 0x0d -#define MODELTYPE_CCTV 0x0f -#define MODELTYPE_WINDOWEDDOOR 0x10 -#define MODELTYPE_11 0x11 -#define MODELTYPE_12 0x12 -#define MODELTYPE_13 0x13 -#define MODELTYPE_TERMINAL 0x14 -#define MODELTYPE_CIHUB 0x15 -#define MODELTYPE_AUTOGUN 0x16 -#define MODELTYPE_17 0x17 -#define MODELTYPE_18 0x18 -#define MODELTYPE_19 0x19 -#define MODELTYPE_LIFT 0x1b -#define MODELTYPE_SKEDAR 0x1c -#define MODELTYPE_LOGO 0x1d -#define MODELTYPE_PDLOGO 0x1e -#define MODELTYPE_HOVERBIKE 0x1f -#define MODELTYPE_20 0x20 -#define MODELTYPE_21 0x21 -#define MODELTYPE_22 0x22 -#define MODELTYPE_LAPTOPGUN 0x23 -#define MODELTYPE_K7AVENGER 0x24 -#define MODELTYPE_FALCON2 0x25 -#define MODELTYPE_KNIFE 0x26 -#define MODELTYPE_CHOPPER 0x27 -#define MODELTYPE_DRCAROLL 0x28 -#define MODELTYPE_ROPE 0x29 -#define MODELTYPE_HUDPIECE 0x2a -#define MODELTYPE_RARELOGO 0x2c -#define MODELTYPE_JUMPSHIP 0x32 -#define MODELTYPE_BANNER 0x33 -#define MODELTYPE_ROBOT 0x34 -#define MODELTYPE_CABLECAR 0x3c -#define MODELTYPE_SUBMARINE 0x43 -#define MODELTYPE_MAIANUFO 0x44 -#define MODELTYPE_SKSHUTTLE 0x45 -#define MODELTYPE_CMP150 0x46 -#define MODELTYPE_DRAGON 0x47 -#define MODELTYPE_SUPERDRAGON 0x48 -#define MODELTYPE_ROCKET 0x49 -#define MODELTYPE_4A 0x4a -#define MODELTYPE_SHOTGUN 0x4b -#define MODELTYPE_FARSIGHT 0x4c -#define MODELTYPE_4D 0x4d -#define MODELTYPE_REAPER 0x4e -#define MODELTYPE_DROPSHIP 0x4f -#define MODELTYPE_MAULER 0x64 -#define MODELTYPE_DEVASTATOR 0x65 -#define MODELTYPE_PISTOL 0x66 -#define MODELTYPE_AR34 0x67 -#define MODELTYPE_MAGNUM 0x68 -#define MODELTYPE_SLAYERROCKET 0x69 -#define MODELTYPE_CYCLONE 0x6a -#define MODELTYPE_SNIPERRIFLE 0x6b -#define MODELTYPE_TRANQUILIZER 0x6c -#define MODELTYPE_CROSSBOW 0x6d -#define MODELTYPE_TIMEDPROXYMINE 0x6e -#define MODELTYPE_PHOENIX 0x6f -#define MODELTYPE_CALLISTO 0x70 -#define MODELTYPE_RCP120 0x71 -#define MODELTYPE_LASER 0x72 -#define MODELTYPE_GRENADE 0x73 -#define MODELTYPE_ECMMINE 0x74 -#define MODELTYPE_UPLINK 0x75 -#define MODELTYPE_REMOTEMINE 0x76 -#define MODELTYPE_TARGET 0x8c -#define MODELTYPE_BB 0xbb -#define MODELTYPE_WIREFENCE 0xc8 -#define MODELTYPE_HAND 0xfa - #define MODFILE_GAME 1 #define MODFILE_MPSETUP 2 #define MODFILE_BOSS 4 @@ -3406,6 +3330,87 @@ #define SIMTYPE_TURTLE 11 #define SIMTYPE_VENGE 12 +#define SKEL_BASIC 0x02 +#define SKEL_CHRGUN 0x03 +#define SKEL_JOYPAD 0x04 +#define SKEL_UZI 0x05 +#define SKEL_06 0x06 +#define SKEL_CLASSICGUN 0x07 +#define SKEL_CASING 0x08 +#define SKEL_CHR 0x09 +#define SKEL_0A 0x0a +#define SKEL_0B 0x0b +#define SKEL_0C 0x0c +#define SKEL_HEAD 0x0d +#define SKEL_CCTV 0x0f +#define SKEL_WINDOWEDDOOR 0x10 +#define SKEL_11 0x11 +#define SKEL_12 0x12 +#define SKEL_13 0x13 +#define SKEL_TERMINAL 0x14 +#define SKEL_CIHUB 0x15 +#define SKEL_AUTOGUN 0x16 +#define SKEL_17 0x17 +#define SKEL_18 0x18 +#define SKEL_19 0x19 +#define SKEL_LIFT 0x1b +#define SKEL_SKEDAR 0x1c +#define SKEL_LOGO 0x1d +#define SKEL_PDLOGO 0x1e +#define SKEL_HOVERBIKE 0x1f +#define SKEL_20 0x20 +#define SKEL_21 0x21 +#define SKEL_22 0x22 +#define SKEL_LAPTOPGUN 0x23 +#define SKEL_K7AVENGER 0x24 +#define SKEL_FALCON2 0x25 +#define SKEL_KNIFE 0x26 +#define SKEL_CHOPPER 0x27 +#define SKEL_DRCAROLL 0x28 +#define SKEL_ROPE 0x29 +#define SKEL_HUDPIECE 0x2a +#define SKEL_RARELOGO 0x2c +#define SKEL_JUMPSHIP 0x32 +#define SKEL_BANNER 0x33 +#define SKEL_ROBOT 0x34 +#define SKEL_CABLECAR 0x3c +#define SKEL_SUBMARINE 0x43 +#define SKEL_MAIANUFO 0x44 +#define SKEL_SKSHUTTLE 0x45 +#define SKEL_CMP150 0x46 +#define SKEL_DRAGON 0x47 +#define SKEL_SUPERDRAGON 0x48 +#define SKEL_ROCKET 0x49 +#define SKEL_4A 0x4a +#define SKEL_SHOTGUN 0x4b +#define SKEL_FARSIGHT 0x4c +#define SKEL_4D 0x4d +#define SKEL_REAPER 0x4e +#define SKEL_DROPSHIP 0x4f +#define SKEL_MAULER 0x64 +#define SKEL_DEVASTATOR 0x65 +#define SKEL_PISTOL 0x66 +#define SKEL_AR34 0x67 +#define SKEL_MAGNUM 0x68 +#define SKEL_SLAYERROCKET 0x69 +#define SKEL_CYCLONE 0x6a +#define SKEL_SNIPERRIFLE 0x6b +#define SKEL_TRANQUILIZER 0x6c +#define SKEL_CROSSBOW 0x6d +#define SKEL_TIMEDPROXYMINE 0x6e +#define SKEL_PHOENIX 0x6f +#define SKEL_CALLISTO 0x70 +#define SKEL_RCP120 0x71 +#define SKEL_LASER 0x72 +#define SKEL_GRENADE 0x73 +#define SKEL_ECMMINE 0x74 +#define SKEL_UPLINK 0x75 +#define SKEL_REMOTEMINE 0x76 +#define SKEL_TARGET 0x8c +#define SKEL_BB 0xbb +#define SKEL_WIREFENCE 0xc8 +#define SKEL_HAND 0xfa + #define SKJUMPSTATE_TAKEOFF 0 #define SKJUMPSTATE_AIRBORNE 1 diff --git a/src/include/data.h b/src/include/data.h index 5075da33e..08339fc4f 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -320,88 +320,88 @@ extern u8 unregistered_function1[]; extern u8 unregistered_function2[]; extern u8 unregistered_function3[]; extern struct ailist g_GlobalAilists[]; -extern struct modeltype g_ModelTypeDropship; -extern struct modeltype g_ModelTypeSkShuttle; -extern struct modeltype g_ModelTypeLift; -extern struct modeltype g_ModelTypeCctv; -extern struct modeltype g_ModelTypeTerminal; -extern struct modeltype g_ModelTypeCiHub; -extern struct modeltype g_ModelType19; -extern struct modeltype g_ModelTypeAutogun; -extern struct modeltype g_ModelType11; -extern struct modeltype g_ModelType13; -extern struct modeltype g_ModelType18; -extern struct modeltype g_ModelType12; -extern struct modeltype g_ModelTypeWindowedDoor; -extern struct modeltype g_ModelType17; -extern struct modeltype g_ModelType0C; -extern struct modeltype g_ModelTypeLogo; -extern struct modeltype g_ModelTypePdLogo; -extern struct modeltype g_ModelTypeHoverbike; -extern struct modeltype g_ModelTypeJumpship; -extern struct modeltype g_ModelTypeChopper; -extern struct modeltype g_ModelTypeRope; -extern struct modeltype g_ModelTypeBanner; -extern struct modeltype g_ModelTypeMaianUfo; -extern struct modeltype g_ModelTypeCableCar; -extern struct modeltype g_ModelTypeSubmarine; -extern struct modeltype g_ModelTypeTarget; -extern struct modeltype g_ModelTypeRareLogo; -extern struct modeltype g_ModelTypeWireFence; -extern struct modeltype g_ModelTypeBB; +extern struct skeleton g_SkelDropship; +extern struct skeleton g_SkelSkShuttle; +extern struct skeleton g_SkelLift; +extern struct skeleton g_SkelCctv; +extern struct skeleton g_SkelTerminal; +extern struct skeleton g_SkelCiHub; +extern struct skeleton g_Skel19; +extern struct skeleton g_SkelAutogun; +extern struct skeleton g_Skel11; +extern struct skeleton g_Skel13; +extern struct skeleton g_Skel18; +extern struct skeleton g_Skel12; +extern struct skeleton g_SkelWindowedDoor; +extern struct skeleton g_Skel17; +extern struct skeleton g_Skel0C; +extern struct skeleton g_SkelLogo; +extern struct skeleton g_SkelPdLogo; +extern struct skeleton g_SkelHoverbike; +extern struct skeleton g_SkelJumpship; +extern struct skeleton g_SkelChopper; +extern struct skeleton g_SkelRope; +extern struct skeleton g_SkelBanner; +extern struct skeleton g_SkelMaianUfo; +extern struct skeleton g_SkelCableCar; +extern struct skeleton g_SkelSubmarine; +extern struct skeleton g_SkelTarget; +extern struct skeleton g_SkelRareLogo; +extern struct skeleton g_SkelWireFence; +extern struct skeleton g_SkelBB; extern struct modelstate g_ModelStates[441]; -extern u8 propexplosiontypes[]; -extern struct modeltype g_ModelTypeBasic; -extern struct modeltype g_ModelTypeChrGun; -extern struct modeltype g_ModelType0B; +extern u8 g_PropExplosionTypes[]; +extern struct skeleton g_SkelBasic; +extern struct skeleton g_SkelChrGun; +extern struct skeleton g_Skel0B; extern struct modelfiledata g_PlayerModelFileData; -extern struct modeltype g_ModelType0A; -extern struct modeltype g_ModelType20; -extern struct modeltype g_ModelTypeClassicGun; -extern struct modeltype g_ModelTypeCasing; -extern struct modeltype g_ModelType06; -extern struct modeltype g_ModelTypeUzi; -extern struct modeltype g_ModelTypeJoypad; -extern struct modeltype g_ModelType21; -extern struct modeltype g_ModelTypeLaptopGun; -extern struct modeltype g_ModelTypeK7Avenger; -extern struct modeltype g_ModelTypeFalcon2; -extern struct modeltype g_ModelTypeKnife; -extern struct modeltype g_ModelTypeCmp150; -extern struct modeltype g_ModelTypeDragon; -extern struct modeltype g_ModelTypeSuperDragon; -extern struct modeltype g_ModelTypeRocket; -extern struct modeltype g_ModelType4A; -extern struct modeltype g_ModelTypeShotgun; -extern struct modeltype g_ModelTypeFarsight; -extern struct modeltype g_ModelType4D; -extern struct modeltype g_ModelTypeReaper; -extern struct modeltype g_ModelTypeMauler; -extern struct modeltype g_ModelTypeDevastator; -extern struct modeltype g_ModelTypePistol; -extern struct modeltype g_ModelTypeAr34; -extern struct modeltype g_ModelTypeMagnum; -extern struct modeltype g_ModelTypeSlayerRocket; -extern struct modeltype g_ModelTypeCyclone; -extern struct modeltype g_ModelTypeSniperRifle; -extern struct modeltype g_ModelTypeTranquilizer; -extern struct modeltype g_ModelTypeCrossbow; -extern struct modeltype g_ModelTypeTimedProxyMine; -extern struct modeltype g_ModelTypePhoenix; -extern struct modeltype g_ModelTypeCallisto; -extern struct modeltype g_ModelTypeRcp120; -extern struct modeltype g_ModelTypeHudPiece; -extern struct modeltype g_ModelTypeHand; -extern struct modeltype g_ModelTypeLaser; -extern struct modeltype g_ModelTypeGrenade; -extern struct modeltype g_ModelTypeEcmMine; -extern struct modeltype g_ModelTypeUplink; -extern struct modeltype g_ModelTypeRemoteMine; -extern struct modeltype g_ModelTypeChr; -extern struct modeltype g_ModelTypeSkedar; -extern struct modeltype g_ModelTypeDrCaroll; -extern struct modeltype g_ModelType22; -extern struct modeltype g_ModelTypeRobot; +extern struct skeleton g_Skel0A; +extern struct skeleton g_Skel20; +extern struct skeleton g_SkelClassicGun; +extern struct skeleton g_SkelCasing; +extern struct skeleton g_Skel06; +extern struct skeleton g_SkelUzi; +extern struct skeleton g_SkelJoypad; +extern struct skeleton g_Skel21; +extern struct skeleton g_SkelLaptopGun; +extern struct skeleton g_SkelK7Avenger; +extern struct skeleton g_SkelFalcon2; +extern struct skeleton g_SkelKnife; +extern struct skeleton g_SkelCmp150; +extern struct skeleton g_SkelDragon; +extern struct skeleton g_SkelSuperDragon; +extern struct skeleton g_SkelRocket; +extern struct skeleton g_Skel4A; +extern struct skeleton g_SkelShotgun; +extern struct skeleton g_SkelFarsight; +extern struct skeleton g_Skel4D; +extern struct skeleton g_SkelReaper; +extern struct skeleton g_SkelMauler; +extern struct skeleton g_SkelDevastator; +extern struct skeleton g_SkelPistol; +extern struct skeleton g_SkelAr34; +extern struct skeleton g_SkelMagnum; +extern struct skeleton g_SkelSlayerRocket; +extern struct skeleton g_SkelCyclone; +extern struct skeleton g_SkelSniperRifle; +extern struct skeleton g_SkelTranquilizer; +extern struct skeleton g_SkelCrossbow; +extern struct skeleton g_SkelTimedProxyMine; +extern struct skeleton g_SkelPhoenix; +extern struct skeleton g_SkelCallisto; +extern struct skeleton g_SkelRcp120; +extern struct skeleton g_SkelHudPiece; +extern struct skeleton g_SkelHand; +extern struct skeleton g_SkelLaser; +extern struct skeleton g_SkelGrenade; +extern struct skeleton g_SkelEcmMine; +extern struct skeleton g_SkelUplink; +extern struct skeleton g_SkelRemoteMine; +extern struct skeleton g_SkelChr; +extern struct skeleton g_SkelSkedar; +extern struct skeleton g_SkelDrCaroll; +extern struct skeleton g_Skel22; +extern struct skeleton g_SkelRobot; extern struct headorbody g_HeadsAndBodies[]; extern struct hatposition var8007dae4[1][6]; extern f32 var8007db80; diff --git a/src/include/lib/anim.h b/src/include/lib/anim.h index aa9c7a799..013ac727d 100644 --- a/src/include/lib/anim.h +++ b/src/include/lib/anim.h @@ -19,9 +19,9 @@ void anim00023d0c(void); void anim00023d38(s16 animnum); u32 anim00023f50(u8 *arg0, u8 arg1, u32 arg2); u32 anim00023fe0(u8 *arg0, u8 arg1, u32 arg2); -void anim00024050(s32 arg0, s32 arg1, struct modeltype *arg2, s32 animnum, u32 arg4, struct coord *arg5, struct coord *arg6, struct coord *arg7); -u32 anim0002485c(s32 arg0, s32 arg1, struct modeltype *arg2, s16 animnum, s32 loopframe, s16 *arg5, s32 arg6); -f32 anim00024b64(u32 arg0, u32 arg1, struct modeltype *arg2, s16 animnum, u32 arg4, struct coord *coord, u32 arg6); +void anim00024050(s32 arg0, s32 arg1, struct skeleton *skel, s32 animnum, u32 arg4, struct coord *arg5, struct coord *arg6, struct coord *arg7); +u32 anim0002485c(s32 arg0, s32 arg1, struct skeleton *skel, s16 animnum, s32 loopframe, s16 *arg5, s32 arg6); +f32 anim00024b64(u32 arg0, u32 arg1, struct skeleton *skel, s16 animnum, u32 arg4, struct coord *coord, u32 arg6); f32 anim00024c14(s32 arg0, s16 animnum, u8 arg2); #endif diff --git a/src/include/types.h b/src/include/types.h index c536d5690..b11131964 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -535,10 +535,10 @@ struct anim { /*0x88*/ f32 animscale; }; -struct modeltype { - s16 type; +struct skeleton { + s16 skel; u16 numthings; - u16 *things; + u8 (*things)[2]; }; struct modelrodata_chrinfo { // type 0x01 @@ -704,7 +704,7 @@ struct modelnode { struct modelfiledata { struct modelnode *rootnode; - struct modeltype *type; + struct skeleton *skel; // This is a pointer to a variable length array of pointers to modelnodes, // but the array is followed by an s16 array of part numbers. diff --git a/src/lib/anim.c b/src/lib/anim.c index 0fbd4b6a6..04d12f966 100644 --- a/src/lib/anim.c +++ b/src/lib/anim.c @@ -1498,7 +1498,7 @@ glabel anim0002485c /* 24b60: 01001025 */ or $v0,$t0,$zero ); -f32 anim00024b64(u32 arg0, u32 arg1, struct modeltype *arg2, s16 animnum, u32 arg4, struct coord *coord, u32 arg6) +f32 anim00024b64(u32 arg0, u32 arg1, struct skeleton *arg2, s16 animnum, u32 arg4, struct coord *coord, u32 arg6) { s16 sp30[3]; diff --git a/src/lib/model.c b/src/lib/model.c index d1940dc97..dd0f9a122 100644 --- a/src/lib/model.c +++ b/src/lib/model.c @@ -667,7 +667,7 @@ void model0001b400(struct objticksp476 *arg0, struct model *model, struct modeln u32 stack1; Mtxf *mtx = &model->matrices[rodata->chrinfo.mtxindex]; s32 sp240 = rodata->chrinfo.unk00; - struct modeltype *type = model->filedata->type; + struct skeleton *skel = model->filedata->skel; struct coord sp230; struct coord sp224; struct coord sp218; @@ -701,7 +701,7 @@ void model0001b400(struct objticksp476 *arg0, struct model *model, struct modeln sp24c = arg0->matrix; } - anim00024050(sp240, anim->flip, type, anim->animnum, anim->unk04, &sp230, &sp224, &sp218); + anim00024050(sp240, anim->flip, skel, anim->animnum, anim->unk04, &sp230, &sp224, &sp218); if (g_Vars.in_cutscene && anim->speed > 0) { #if VERSION >= VERSION_PAL_FINAL @@ -714,15 +714,15 @@ void model0001b400(struct objticksp476 *arg0, struct model *model, struct modeln } if (sp154 != 0.0f) { - anim00024050(sp240, anim->flip, type, anim->animnum, anim->unk05, &sp148, &sp13c, &sp130); + anim00024050(sp240, anim->flip, skel, anim->animnum, anim->unk05, &sp148, &sp13c, &sp130); model0001b07c(&sp230, &sp148, sp154); } if (anim->fracmerge != 0.0f) { - anim00024050(sp240, anim->flip2, type, anim->animnum2, anim->unk06, &sp124, &sp118, &sp10c); + anim00024050(sp240, anim->flip2, skel, anim->animnum2, anim->unk06, &sp124, &sp118, &sp10c); if (anim->frac2 != 0.0f) { - anim00024050(sp240, anim->flip2, type, anim->animnum2, anim->unk07, &spd0, &spc4, &spb8); + anim00024050(sp240, anim->flip2, skel, anim->animnum2, anim->unk07, &spd0, &spc4, &spb8); model0001b07c(&sp124, &spd0, anim->frac2); } @@ -2781,7 +2781,7 @@ void model0001d62c(struct model *model, s16 animnum, s32 flip, f32 fstartframe, struct modelrodata_chrinfo *rodata = &model->filedata->rootnode->rodata->chrinfo; struct modelrwdata_chrinfo *rwdata = (struct modelrwdata_chrinfo *) modelGetNodeRwData(model, model->filedata->rootnode); s32 spa4 = rodata->unk00; - struct modeltype *type = model->filedata->type; + struct skeleton *skel = model->filedata->skel; f32 scale; f32 sp98; f32 sp94; @@ -2803,7 +2803,7 @@ void model0001d62c(struct model *model, s16 animnum, s32 flip, f32 fstartframe, anim00023d38(anim->animnum); sp83 = anim00023ab0(anim->animnum, anim->framea); anim00023d0c(); - anim00024050(spa4, anim->flip, type, anim->animnum, sp83, &sp74, &sp88, &sp68); + anim00024050(spa4, anim->flip, skel, anim->animnum, sp83, &sp74, &sp88, &sp68); rwdata->unk34.x = sp88.x * sp64; rwdata->unk34.y = sp88.y * sp64; @@ -2816,7 +2816,7 @@ void model0001d62c(struct model *model, s16 animnum, s32 flip, f32 fstartframe, anim00023d38(anim->animnum); sp83 = anim00023ab0(anim->animnum, anim->frameb); anim00023d0c(); - anim00024050(spa4, anim->flip, type, anim->animnum, sp83, &sp74, &sp88, &sp68); + anim00024050(spa4, anim->flip, skel, anim->animnum, sp83, &sp74, &sp88, &sp68); rwdata->unk24.x = sp88.x * sp64; rwdata->unk24.y = sp88.y * sp64; @@ -2826,7 +2826,7 @@ void model0001d62c(struct model *model, s16 animnum, s32 flip, f32 fstartframe, rwdata->unk01 = 1; } } else { - sp84 = anim00024b64(spa4, anim->flip, type, anim->animnum, anim->frameb, &sp88, anim->average); + sp84 = anim00024b64(spa4, anim->flip, skel, anim->animnum, anim->frameb, &sp88, anim->average); scale = model->scale * anim->animscale; if (scale != 1) {