Decompile bodyCalculateHeadOffset

This commit is contained in:
Ryan Dwyer
2021-05-18 17:02:03 +10:00
parent a1414a4776
commit 11b3ab555b
12 changed files with 306 additions and 362 deletions
+154 -154
View File
@@ -3465,160 +3465,160 @@ struct modeltype g_ModelTypeRobot = {
// 22f24
struct headorbody g_HeadsAndBodies[] = {
// ismale
// | height
// | |
{ /*0x0000*/ 1, 0, 0, 0, 167, FILE_CDJBOND, 1, 1.0446009635925, 0, FILE_GHAND_DDSECURITY },
{ /*0x0001*/ 1, 0, 0, 0, 167, FILE_CCONNERY, 1, 1.0300469398499, 0, FILE_GHAND_MRBLONDE },
{ /*0x0002*/ 1, 0, 0, 0, 165, FILE_CDALTON, 1, 1.0572769641876, 0, FILE_GHAND_DDSECURITY },
{ /*0x0003*/ 1, 0, 0, 0, 167, FILE_CMOORE, 1, 1.0399061441422, 0, FILE_GHAND_DDSECURITY },
{ /*0x0004*/ 0, 1, 0, 1, 13, FILE_CHEADDARK_COMBAT, 1, 1, 0, 0 },
{ /*0x0005*/ 1, 1, 0, 3, 27, FILE_CHEADELVIS, 1, 1, 0, 0 },
{ /*0x0006*/ 1, 1, 0, 0, 13, FILE_CHEADROSS, 1, 1, 0, 0 },
{ /*0x0007*/ 1, 1, 0, 0, 13, FILE_CHEADCARRINGTON, 1, 1, 0, 0 },
{ /*0x0008*/ 1, 1, 0, 5, 13, FILE_CHEADMRBLONDE, 1, 1, 0, 0 },
{ /*0x0009*/ 1, 1, 0, 0, 13, FILE_CHEADTRENT, 1, 1, 0, 0 },
{ /*0x000a*/ 1, 1, 0, 0, 13, FILE_CHEADDDSHOCK, 1, 1, 0, 0 },
{ /*0x000b*/ 1, 1, 0, 0, 13, FILE_CHEADGRAHAM, 1, 1, 0, 0 },
{ /*0x000c*/ 0, 1, 0, 1, 13, FILE_CHEADDARK_FROCK, 1, 1, 0, 0 },
{ /*0x000d*/ 0, 1, 0, 1, 13, FILE_CHEADSECRETARY, 1, 1, 0, 0 },
{ /*0x000e*/ 0, 1, 0, 4, 13, FILE_CHEADCASSANDRA, 1, 1, 0, 0 },
{ /*0x000f*/ 1, 1, 0, 3, 27, FILE_CHEADTHEKING, 1, 1, 0, 0 },
{ /*0x0010*/ 0, 1, 0, 0, 13, FILE_CHEADFEM_GUARD, 1, 1, 0, 0 },
{ /*0x0011*/ 1, 1, 0, 0, 13, FILE_CHEADJON, 1, 1, 0, 0 },
{ /*0x0012*/ 1, 1, 0, 0, 13, FILE_CHEADMARK2, 1, 1, 0, 0 },
{ /*0x0013*/ 1, 1, 0, 0, 13, FILE_CHEADCHRIST, 1, 1, 0, 0 },
{ /*0x0014*/ 1, 1, 0, 0, 13, FILE_CHEADRUSS, 1, 1, 0, 0 },
{ /*0x0015*/ 1, 1, 0, 3, 13, FILE_CHEADGREY, 1, 1, 0, 0 },
{ /*0x0016*/ 1, 1, 0, 0, 13, FILE_CHEADDARLING, 1, 1, 0, 0 },
{ /*0x0017*/ 1, 1, 0, 0, 13, FILE_CHEADROBERT, 1, 1, 0, 0 },
{ /*0x0018*/ 1, 1, 0, 0, 13, FILE_CHEADBEAU, 1, 1, 0, 0 },
{ /*0x0019*/ 0, 1, 0, 0, 13, FILE_CHEADFEM_GUARD2, 1, 1, 0, 0 },
{ /*0x001a*/ 1, 1, 0, 0, 13, FILE_CHEADBRIAN, 1, 1, 0, 0 },
{ /*0x001b*/ 1, 1, 0, 0, 13, FILE_CHEADJAMIE, 1, 1, 0, 0 },
{ /*0x001c*/ 1, 1, 0, 0, 13, FILE_CHEADDUNCAN2, 1, 1, 0, 0 },
{ /*0x001d*/ 1, 1, 0, 0, 13, FILE_CHEADBIOTECH, 1, 1, 0, 0 },
{ /*0x001e*/ 1, 1, 0, 0, 13, FILE_CHEADNEIL2, 1, 1, 0, 0 },
{ /*0x001f*/ 1, 1, 0, 0, 13, FILE_CHEADEDMCG, 1, 1, 0, 0 },
{ /*0x0020*/ 0, 1, 0, 1, 13, FILE_CHEADANKA, 1, 1, 0, 0 },
{ /*0x0021*/ 0, 1, 0, 1, 13, FILE_CHEADLESLIE_S, 1, 1, 0, 0 },
{ /*0x0022*/ 1, 1, 0, 0, 13, FILE_CHEADMATT_C, 1, 1, 0, 0 },
{ /*0x0023*/ 1, 1, 0, 0, 13, FILE_CHEADPEER_S, 1, 1, 0, 0 },
{ /*0x0024*/ 0, 1, 0, 1, 13, FILE_CHEADEILEEN_T, 1, 1, 0, 0 },
{ /*0x0025*/ 1, 1, 0, 0, 13, FILE_CHEADANDY_R, 1, 1, 0, 0 },
{ /*0x0026*/ 1, 1, 0, 0, 13, FILE_CHEADBEN_R, 1, 1, 0, 0 },
{ /*0x0027*/ 1, 1, 0, 0, 13, FILE_CHEADSTEVE_K, 1, 1, 0, 0 },
{ /*0x0028*/ 1, 1, 0, 0, 13, FILE_CHEADJONATHAN, 1, 1, 0, 0 },
{ /*0x0029*/ 1, 1, 0, 3, 27, FILE_CHEADMAIAN_S, 1, 1, 0, 0 },
{ /*0x002a*/ 1, 1, 0, 0, 13, FILE_CHEADSHAUN, 1, 1, 0, 0 },
{ /*0x002b*/ 1, 1, 0, 0, 13, FILE_CHEADBEAU, 1, 1, 0, 0 },
{ /*0x002c*/ 0, 1, 0, 1, 13, FILE_CHEADEILEEN_H, 1, 1, 0, 0 },
{ /*0x002d*/ 1, 1, 0, 0, 13, FILE_CHEADSCOTT_H, 1, 1, 0, 0 },
{ /*0x002e*/ 1, 1, 0, 0, 13, FILE_CHEADSANCHEZ, 1, 1, 0, 0 },
{ /*0x002f*/ 0, 1, 0, 1, 13, FILE_CHEADDARKAQUA, 1, 1, 0, 0 },
{ /*0x0030*/ 1, 1, 0, 0, 13, FILE_CHEADDDSNIPER, 1, 1, 0, 0 },
{ /*0x0031*/ 1, 1, 0, 0, 13, FILE_CHEADBEAU, 1, 1, 0, 0 },
{ /*0x0032*/ 1, 1, 0, 0, 13, FILE_CHEADBEAU, 1, 1, 0, 0 },
{ /*0x0033*/ 1, 1, 0, 0, 13, FILE_CHEADBEAU, 1, 1, 0, 0 },
{ /*0x0034*/ 1, 1, 0, 0, 13, FILE_CHEADBEAU, 1, 1, 0, 0 },
{ /*0x0035*/ 1, 1, 0, 0, 13, FILE_CHEADGRIFFEY, 1, 1, 0, 0 },
{ /*0x0036*/ 1, 1, 0, 0, 13, FILE_CHEADMOTO, 1, 1, 0, 0 },
{ /*0x0037*/ 1, 1, 0, 0, 13, FILE_CHEADKEITH, 1, 1, 0, 0 },
{ /*0x0038*/ 0, 1, 0, 1, 13, FILE_CHEADWINNER, 1, 1, 0, 0 },
{ /*0x0039*/ 1, 1, 0, 0, 13, FILE_CA51FACEPLATE, 1, 1, 0, 0 },
{ /*0x003a*/ 1, 1, 0, 3, 27, FILE_CHEADELVIS_GOGS, 1, 1, 0, 0 },
{ /*0x003b*/ 1, 1, 0, 0, 13, FILE_CHEADSTEVEM, 1, 1, 0, 0 },
{ /*0x003c*/ 0, 1, 0, 1, 13, FILE_CHEADDARK_SNOW, 1, 1, 0, 0 },
{ /*0x003d*/ 1, 1, 0, 0, 13, FILE_CHEADPRESIDENT, 1, 1, 0, 0 },
{ /*0x003e*/ 0, 1, 0, 1, 13, FILE_CHEAD_VD, 1, 1, 0, 0 },
{ /*0x003f*/ 1, 1, 0, 0, 13, FILE_CHEADKEN, 1, 1, 0, 0 },
{ /*0x0040*/ 1, 1, 0, 0, 13, FILE_CHEADJOEL, 1, 1, 0, 0 },
{ /*0x0041*/ 1, 1, 0, 0, 13, FILE_CHEADTIM, 1, 1, 0, 0 },
{ /*0x0042*/ 1, 1, 0, 0, 13, FILE_CHEADGRANT, 1, 1, 0, 0 },
{ /*0x0043*/ 1, 1, 0, 0, 13, FILE_CHEADPENNY, 1, 1, 0, 0 },
{ /*0x0044*/ 1, 1, 0, 0, 13, FILE_CHEADROBIN, 1, 1, 0, 0 },
{ /*0x0045*/ 0, 1, 0, 2, 13, FILE_CHEADALEX, 1, 1, 0, 0 },
{ /*0x0046*/ 0, 1, 0, 2, 13, FILE_CHEADJULIANNE, 1, 1, 0, 0 },
{ /*0x0047*/ 0, 1, 0, 2, 13, FILE_CHEADLAURA, 1, 1, 0, 0 },
{ /*0x0048*/ 1, 1, 0, 0, 13, FILE_CHEADDAVEC, 1, 1, 0, 0 },
{ /*0x0049*/ 1, 1, 0, 0, 13, FILE_CHEADCOOK, 1, 1, 0, 0 },
{ /*0x004a*/ 1, 1, 0, 0, 13, FILE_CHEADPRYCE, 1, 1, 0, 0 },
{ /*0x004b*/ 1, 1, 0, 0, 13, FILE_CHEADSILKE, 1, 1, 0, 0 },
{ /*0x004c*/ 1, 1, 0, 0, 13, FILE_CHEADSMITH, 1, 1, 0, 0 },
{ /*0x004d*/ 1, 1, 0, 0, 13, FILE_CHEADGARETH, 1, 1, 0, 0 },
{ /*0x004e*/ 1, 1, 0, 0, 13, FILE_CHEADMURCHIE, 1, 1, 0, 0 },
{ /*0x004f*/ 1, 1, 0, 0, 13, FILE_CHEADWONG, 1, 1, 0, 0 },
{ /*0x0050*/ 1, 1, 0, 0, 13, FILE_CHEADCARTER, 1, 1, 0, 0 },
{ /*0x0051*/ 1, 1, 0, 0, 13, FILE_CHEADTINTIN, 1, 1, 0, 0 },
{ /*0x0052*/ 1, 1, 0, 0, 13, FILE_CHEADMUNTON, 1, 1, 0, 0 },
{ /*0x0053*/ 1, 1, 0, 0, 13, FILE_CHEADSTAMPER, 1, 1, 0, 0 },
{ /*0x0054*/ 1, 1, 0, 0, 13, FILE_CHEADJONES, 1, 1, 0, 0 },
{ /*0x0055*/ 1, 1, 0, 0, 13, FILE_CHEADPHELPS, 1, 1, 0, 0 },
{ /*0x0056*/ 0, 0, 0, 1, 159, FILE_CDARK_COMBAT, 1, 0.95305162668228, 0, FILE_GCOMBATHANDSLOD },
{ /*0x0057*/ 1, 0, 0, 3, 106, FILE_CELVIS1, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS },
{ /*0x0058*/ 1, 0, 1, 0, 157, FILE_CAREA51GUARD, 1, 0.92769956588745, 0, FILE_GHAND_A51GUARD },
{ /*0x0059*/ 1, 0, 0, 0, 159, FILE_COVERALL, 1, 0.92769956588745, 0, FILE_GHAND_A51GUARD },
{ /*0x005a*/ 1, 0, 0, 0, 154, FILE_CCARRINGTON, 1, 0.85915493965149, 0, FILE_GHAND_CARRINGTON },
{ /*0x005b*/ 1, 0, 0, 5, 169, FILE_CMRBLONDE, 1, 1.1032863855362, 0, FILE_GHAND_MRBLONDE },
{ /*0x005c*/ 1, 0, 1, 0, 159, FILE_CSKEDAR, 1, 1, 0, 0 },
{ /*0x005d*/ 1, 0, 0, 0, 161, FILE_CTRENT, 1, 0.93896716833115, 0, FILE_GHAND_TRENT },
{ /*0x005e*/ 1, 0, 1, 0, 157, FILE_CDDSHOCK, 1, 0.93896716833115, 0, FILE_GHAND_DDFODDER },
{ /*0x005f*/ 1, 0, 1, 0, 157, FILE_CLABTECH, 1, 0.93896716833115, 0, FILE_GHAND_MRBLONDE },
{ /*0x0060*/ 1, 0, 1, 0, 158, FILE_CSTRIPES, 1, 0.92769956588745, 0, FILE_GHAND_BLACKGUARD },
{ /*0x0061*/ 0, 0, 0, 1, 159, FILE_CDARK_FROCK, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK },
{ /*0x0062*/ 0, 0, 0, 1, 159, FILE_CDARK_TRENCH, 1, 0.95305162668228, 0, FILE_GHAND_JOTRENCH },
{ /*0x0063*/ 1, 0, 0, 0, 157, FILE_COFFICEWORKER, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK },
{ /*0x0064*/ 1, 0, 0, 0, 157, FILE_COFFICEWORKER2, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK },
{ /*0x0065*/ 0, 0, 0, 1, 140, FILE_CSECRETARY, 1, 0.87323945760727, 0, FILE_GHAND_JOFROCK },
{ /*0x0066*/ 0, 0, 0, 4, 167, FILE_CCASSANDRA, 1, 0.98591554164886, 0, FILE_GHAND_VRIES },
{ /*0x0067*/ 1, 0, 0, 3, 106, FILE_CTHEKING, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS },
{ /*0x0068*/ 0, 0, 1, 2, 160, FILE_CFEM_GUARD, 1, 0.96713620424271, 0, FILE_GHAND_JOTRENCH },
{ /*0x0069*/ 1, 0, 1, 0, 157, FILE_CDD_LABTECH, 1, 0.93896716833115, 0, FILE_GHAND_DDLABTECH },
{ /*0x006a*/ 1, 0, 1, 0, 160, FILE_CDD_SECGUARD, 1, 0.93427228927612, 0, FILE_GHAND_DDSECURITY },
{ /*0x006b*/ 1, 1, 0, 0, 159, FILE_CDRCARROLL, 1, 1, 0, 0 },
{ /*0x006c*/ 1, 0, 0, 0, 159, FILE_CEYESPY, 1, 1, 0, 0 },
{ /*0x006d*/ 0, 0, 0, 1, 159, FILE_CDARK_RIPPED, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK },
{ /*0x006e*/ 1, 0, 1, 0, 160, FILE_CDD_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_DDSECURITY },
{ /*0x006f*/ 1, 0, 1, 0, 157, FILE_CDD_SHOCK_INF, 1, 0.93896716833115, 0, FILE_GHAND_DDSHOCK },
{ /*0x0070*/ 1, 1, 0, 0, 159, FILE_CTESTCHR, 1, 1, 0, 0 },
{ /*0x0071*/ 1, 0, 1, 0, 155, FILE_CBIOTECH, 1, 0.93896716833115, 0, FILE_GHAND_DDBIO },
{ /*0x0072*/ 1, 0, 1, 0, 159, FILE_CFBIGUY, 1, 0.93896716833115, 0, FILE_GHAND_FBIARM },
{ /*0x0073*/ 1, 0, 1, 0, 159, FILE_CCIAGUY, 1, 0.93896716833115, 0, FILE_GHAND_CIA },
{ /*0x0074*/ 1, 0, 1, 0, 159, FILE_CA51TROOPER, 1, 0.93896716833115, 0, FILE_GHAND_JOFROCK },
{ /*0x0075*/ 1, 0, 0, 0, 157, FILE_CA51AIRMAN, 1, 0.93896716833115, 0, FILE_GHAND_A51AIRMAN },
{ /*0x0076*/ 1, 0, 0, 0, 159, FILE_CCHICROB, 1, 1, 0, 0 },
{ /*0x0077*/ 1, 0, 0, 0, 153, FILE_CSTEWARD, 1, 0.89201879501343, 0, FILE_GHAND_JOFROCK },
{ /*0x0078*/ 0, 0, 0, 1, 143, FILE_CSTEWARDESS, 1, 0.85446006059647, 0, FILE_GHAND_JOFROCK },
{ /*0x0079*/ 1, 0, 0, 0, 159, FILE_CPRESIDENT, 1, 0.93896716833115, 0, FILE_GHAND_PRESIDENT },
{ /*0x007a*/ 0, 0, 0, 1, 143, FILE_CSTEWARDESS_COAT, 1, 0.85446006059647, 0, FILE_GHAND_STEWARDESS_COAT },
{ /*0x007b*/ 1, 0, 0, 0, 159, FILE_CMINISKEDAR, 0.75, 0.5, 0, 0 },
{ /*0x007c*/ 1, 0, 0, 0, 159, FILE_CNSA_LACKEY, 1, 0.93896716833115, 0, FILE_GHAND_CARRINGTON },
{ /*0x007d*/ 1, 0, 0, 0, 159, FILE_CPRES_SECURITY, 1, 0.93896716833115, 0, FILE_GHAND_CARRINGTON },
{ /*0x007e*/ 0, 0, 0, 1, 142, FILE_CNEGOTIATOR, 1, 0.85446006059647, 0, FILE_GHAND_JOFROCK },
{ /*0x007f*/ 1, 0, 0, 0, 159, FILE_CG5_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_G5GUARD },
{ /*0x0080*/ 1, 0, 1, 0, 159, FILE_CPELAGIC_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_TRAGIC_PELAGIC },
{ /*0x0081*/ 1, 0, 1, 0, 158, FILE_CG5_SWAT_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_G5GUARD },
{ /*0x0082*/ 1, 0, 1, 0, 158, FILE_CALASKAN_GUARD, 1, 0.93896716833115, 0, FILE_GHAND_JOSNOW },
{ /*0x0083*/ 1, 0, 1, 3, 106, FILE_CMAIAN_SOLDIER, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS },
{ /*0x0084*/ 1, 0, 0, 0, 159, FILE_CPRESIDENT_CLONE, 1, 0.93896716833115, 0, FILE_GCOMBATHANDSLOD },
{ /*0x0085*/ 1, 0, 0, 0, 159, FILE_CPRESIDENT_CLONE, 1, 0.93896716833115, 0, FILE_GHAND_PRESIDENT },
{ /*0x0086*/ 0, 0, 0, 1, 159, FILE_CDARK_AF1, 1, 0.95305162668228, 0, FILE_GHAND_JOPILOT },
{ /*0x0087*/ 0, 0, 0, 1, 159, FILE_CDARKWET, 1, 0.95305162668228, 0, FILE_GHAND_JOWETSUIT },
{ /*0x0088*/ 0, 0, 0, 1, 159, FILE_CDARKAQUALUNG, 1, 0.95305162668228, 0, FILE_GHAND_JOWETSUIT },
{ /*0x0089*/ 0, 0, 0, 1, 159, FILE_CDARKSNOW, 1, 0.95305162668228, 0, FILE_GHAND_JOSNOW },
{ /*0x008a*/ 0, 0, 0, 1, 159, FILE_CDARKLAB, 1, 0.95305162668228, 0, FILE_GHAND_MRBLONDE },
{ /*0x008b*/ 0, 0, 1, 1, 159, FILE_CFEMLABTECH, 1, 0.87323945760727, 0, FILE_GHAND_MRBLONDE },
{ /*0x008c*/ 1, 0, 1, 0, 159, FILE_CDDSNIPER, 1, 0.93896716833115, 0, FILE_GHAND_DDSNIPER },
{ /*0x008d*/ 1, 0, 0, 0, 159, FILE_CPILOTAF1, 1, 0.88262909650803, 0, FILE_GHAND_JOPILOT },
{ /*0x008e*/ 1, 0, 1, 0, 159, FILE_CCILABTECH, 1, 0.93896716833115, 0, FILE_GHAND_CIFEMTECH },
{ /*0x008f*/ 0, 0, 1, 1, 159, FILE_CCIFEMTECH, 1, 0.86854463815689, 0, FILE_GHAND_CIFEMTECH },
{ /*0x0090*/ 1, 0, 0, 0, 159, FILE_CCARREVENINGSUIT, 1, 0.85915493965149, 0, FILE_GHAND_MRBLONDE },
{ /*0x0091*/ 1, 0, 0, 0, 159, FILE_CJONATHON, 1, 0.93896716833115, 0, FILE_GHAND_A51GUARD },
{ /*0x0092*/ 1, 0, 1, 0, 159, FILE_CCISOLDIER, 1, 0.93896716833115, 0, FILE_GHAND_CISOLDIER },
{ /*0x0093*/ 1, 0, 0, 0, 159, FILE_CSKEDARKING, 1, 1.25, 0, 0 },
{ /*0x0094*/ 1, 0, 0, 3, 106, FILE_CELVISWAISTCOAT, 1, 0.57276993989944, 0, FILE_GHAND_ELVIS },
{ /*0x0095*/ 0, 0, 0, 1, 159, FILE_CDARK_LEATHER, 1, 0.95305162668228, 0, FILE_GHAND_JOFROCK },
{ /*0x0096*/ 0, 0, 0, 1, 159, FILE_CDARK_NEGOTIATOR, 1, 0.95305162668228, 0, FILE_GHAND_JOAF1 },
{ /*0x0097*/ 0, 0, 0, 0, 0, 0, 1, 0, 0, FILE_GCOMBATHANDSLOD },
// | height
// | |
{ /*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 },
{ /*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 },
{ /*0x005b*/ 1, 0, 0, HEADBODYTYPE_MRBLONDE, 169, FILE_CMRBLONDE, 1, 1.1032863855362, 0, FILE_GHAND_MRBLONDE },
{ /*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 },
{ /*0x0066*/ 0, 0, 0, HEADBODYTYPE_CASS, 167, FILE_CCASSANDRA, 1, 0.98591554164886, 0, FILE_GHAND_VRIES },
{ /*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 },
};
u32 var8007dae4 = 0xbd8ff972;
+105 -186
View File
@@ -290,7 +290,7 @@ glabel var7f1a8a84
/* f02d028: afa20054 */ sw $v0,0x54($sp)
/* f02d02c: ac206680 */ sw $zero,%lo(g_FileInfo)($at)
/* f02d030: 00402025 */ or $a0,$v0,$zero
/* f02d034: 0fc0b76f */ jal func0f02ddbc
/* f02d034: 0fc0b76f */ jal bodyCalculateHeadOffset
/* f02d038: 8fa60048 */ lw $a2,0x48($sp)
/* f02d03c: 10000014 */ b .L0f02d090
/* f02d040: 00000000 */ nop
@@ -540,7 +540,7 @@ glabel var7f1a8a84
// headfiledata = fileLoad(g_HeadsAndBodies[headnum].filenum);
// g_HeadsAndBodies[headnum].filedata = headfiledata;
// g_FileInfo[g_HeadsAndBodies[headnum].filenum].size = 0;
// func0f02ddbc(headfiledata, headnum, bodynum);
// bodyCalculateHeadOffset(headfiledata, headnum, bodynum);
// } else {
// if (g_HeadsAndBodies[headnum].filedata == NULL) {
// g_HeadsAndBodies[headnum].filedata = fileLoad(g_HeadsAndBodies[headnum].filenum);
@@ -965,187 +965,106 @@ void func0f02ddbf(void)
// empty
}
GLOBAL_ASM(
glabel func0f02ddbc
.late_rodata
glabel var7f1a8a88
.word func0f02ddbc+0x94 # f02de50
glabel var7f1a8a8c
.word func0f02ddbc+0x84 # f02de40
glabel var7f1a8a90
.word func0f02ddbc+0xac # f02de68
glabel var7f1a8a94
.word func0f02ddbc+0x8c # f02de48
glabel var7f1a8a98
.word func0f02ddbc+0xa4 # f02de60
glabel var7f1a8a9c
.word func0f02ddbc+0x9c # f02de58
glabel var7f1a8aa0
.word func0f02ddbc+0xd8 # f02de94
glabel var7f1a8aa4
.word func0f02ddbc+0xec # f02dea8
glabel var7f1a8aa8
.word func0f02ddbc+0xe8 # f02dea4
glabel var7f1a8aac
.word func0f02ddbc+0xd0 # f02de8c
glabel var7f1a8ab0
.word func0f02ddbc+0xe0 # f02de9c
glabel var7f1a8ab4
.word func0f02ddbc+0xec # f02dea8
.text
/* f02ddbc: 27bdffb8 */ addiu $sp,$sp,-72
/* f02ddc0: afbf001c */ sw $ra,0x1c($sp)
/* f02ddc4: afb00018 */ sw $s0,0x18($sp)
/* f02ddc8: 848e0006 */ lh $t6,0x6($a0)
/* f02ddcc: 00a03825 */ or $a3,$a1,$zero
/* f02ddd0: 2401000d */ addiu $at,$zero,0xd
/* f02ddd4: 15c10081 */ bne $t6,$at,.L0f02dfdc
/* f02ddd8: 24050014 */ addiu $a1,$zero,0x14
/* f02dddc: 00e50019 */ multu $a3,$a1
/* f02dde0: 3c038008 */ lui $v1,%hi(g_HeadsAndBodies)
/* f02dde4: 2463cf04 */ addiu $v1,$v1,%lo(g_HeadsAndBodies)
/* f02dde8: 00007812 */ mflo $t7
/* f02ddec: 006fc021 */ addu $t8,$v1,$t7
/* f02ddf0: 8f020000 */ lw $v0,0x0($t8)
/* f02ddf4: 00c50019 */ multu $a2,$a1
/* f02ddf8: 0002c8c0 */ sll $t9,$v0,0x3
/* f02ddfc: 00194742 */ srl $t0,$t9,0x1d
/* f02de00: 01001025 */ or $v0,$t0,$zero
/* f02de04: 2d010006 */ sltiu $at,$t0,0x6
/* f02de08: 00004812 */ mflo $t1
/* f02de0c: 00695021 */ addu $t2,$v1,$t1
/* f02de10: 8d460000 */ lw $a2,0x0($t2)
/* f02de14: 000658c0 */ sll $t3,$a2,0x3
/* f02de18: 000b3742 */ srl $a2,$t3,0x1d
/* f02de1c: 51060070 */ beql $t0,$a2,.L0f02dfe0
/* f02de20: 8fbf001c */ lw $ra,0x1c($sp)
/* f02de24: 10200006 */ beqz $at,.L0f02de40
/* f02de28: 00086880 */ sll $t5,$t0,0x2
/* f02de2c: 3c017f1b */ lui $at,%hi(var7f1a8a88)
/* f02de30: 002d0821 */ addu $at,$at,$t5
/* f02de34: 8c2d8a88 */ lw $t5,%lo(var7f1a8a88)($at)
/* f02de38: 01a00008 */ jr $t5
/* f02de3c: 00000000 */ nop
.L0f02de40:
/* f02de40: 1000000a */ b .L0f02de6c
/* f02de44: 00003825 */ or $a3,$zero,$zero
/* f02de48: 10000008 */ b .L0f02de6c
/* f02de4c: 00003825 */ or $a3,$zero,$zero
/* f02de50: 10000006 */ b .L0f02de6c
/* f02de54: 2407ffdd */ addiu $a3,$zero,-35
/* f02de58: 10000004 */ b .L0f02de6c
/* f02de5c: 00003825 */ or $a3,$zero,$zero
/* f02de60: 10000002 */ b .L0f02de6c
/* f02de64: 2407ffec */ addiu $a3,$zero,-20
/* f02de68: 2407ffd8 */ addiu $a3,$zero,-40
.L0f02de6c:
/* f02de6c: 2cc10006 */ sltiu $at,$a2,0x6
/* f02de70: 1020000d */ beqz $at,.L0f02dea8
/* f02de74: 00067080 */ sll $t6,$a2,0x2
/* f02de78: 3c017f1b */ lui $at,%hi(var7f1a8aa0)
/* f02de7c: 002e0821 */ addu $at,$at,$t6
/* f02de80: 8c2e8aa0 */ lw $t6,%lo(var7f1a8aa0)($at)
/* f02de84: 01c00008 */ jr $t6
/* f02de88: 00000000 */ nop
/* f02de8c: 10000006 */ b .L0f02dea8
/* f02de90: 24e7ffe2 */ addiu $a3,$a3,-30
/* f02de94: 10000004 */ b .L0f02dea8
/* f02de98: 24e70023 */ addiu $a3,$a3,0x23
/* f02de9c: 10000002 */ b .L0f02dea8
/* f02dea0: 24e70014 */ addiu $a3,$a3,0x14
/* f02dea4: 24e70028 */ addiu $a3,$a3,0x28
.L0f02dea8:
/* f02dea8: 24010001 */ addiu $at,$zero,0x1
/* f02deac: 54c1000f */ bnel $a2,$at,.L0f02deec
/* f02deb0: 24010004 */ addiu $at,$zero,0x4
/* f02deb4: 10400003 */ beqz $v0,.L0f02dec4
/* f02deb8: 24010005 */ addiu $at,$zero,0x5
/* f02debc: 54410004 */ bnel $v0,$at,.L0f02ded0
/* f02dec0: 24010004 */ addiu $at,$zero,0x4
.L0f02dec4:
/* f02dec4: 10000010 */ b .L0f02df08
/* f02dec8: 24e7fff6 */ addiu $a3,$a3,-10
/* f02decc: 24010004 */ addiu $at,$zero,0x4
.L0f02ded0:
/* f02ded0: 10410003 */ beq $v0,$at,.L0f02dee0
/* f02ded4: 24010002 */ addiu $at,$zero,0x2
/* f02ded8: 1441000b */ bne $v0,$at,.L0f02df08
/* f02dedc: 00000000 */ nop
.L0f02dee0:
/* f02dee0: 10000009 */ b .L0f02df08
/* f02dee4: 24e7fffb */ addiu $a3,$a3,-5
/* f02dee8: 24010004 */ addiu $at,$zero,0x4
.L0f02deec:
/* f02deec: 14c10006 */ bne $a2,$at,.L0f02df08
/* f02def0: 00000000 */ nop
/* f02def4: 10400003 */ beqz $v0,.L0f02df04
/* f02def8: 24010005 */ addiu $at,$zero,0x5
/* f02defc: 14410002 */ bne $v0,$at,.L0f02df08
/* f02df00: 00000000 */ nop
.L0f02df04:
/* f02df04: 24e7fffb */ addiu $a3,$a3,-5
.L0f02df08:
/* f02df08: 50e00035 */ beqzl $a3,.L0f02dfe0
/* f02df0c: 8fbf001c */ lw $ra,0x1c($sp)
/* f02df10: afa00044 */ sw $zero,0x44($sp)
/* f02df14: afa40048 */ sw $a0,0x48($sp)
/* f02df18: 8fa40048 */ lw $a0,0x48($sp)
.L0f02df1c:
/* f02df1c: 8fb00044 */ lw $s0,0x44($sp)
/* f02df20: 27a50044 */ addiu $a1,$sp,0x44
/* f02df24: 27a6003c */ addiu $a2,$sp,0x3c
/* f02df28: 0c008c67 */ jal func0002319c
/* f02df2c: afa70038 */ sw $a3,0x38($sp)
/* f02df30: 8faf0044 */ lw $t7,0x44($sp)
/* f02df34: 8fa70038 */ lw $a3,0x38($sp)
/* f02df38: 51e00019 */ beqzl $t7,.L0f02dfa0
/* f02df3c: 8fac0044 */ lw $t4,0x44($sp)
/* f02df40: 51f00017 */ beql $t7,$s0,.L0f02dfa0
/* f02df44: 8fac0044 */ lw $t4,0x44($sp)
/* f02df48: 95f80000 */ lhu $t8,0x0($t7)
/* f02df4c: 24010018 */ addiu $at,$zero,0x18
/* f02df50: 57010013 */ bnel $t8,$at,.L0f02dfa0
/* f02df54: 8fac0044 */ lw $t4,0x44($sp)
/* f02df58: 8de50004 */ lw $a1,0x4($t7)
/* f02df5c: 00001825 */ or $v1,$zero,$zero
/* f02df60: 00002025 */ or $a0,$zero,$zero
/* f02df64: 84b90010 */ lh $t9,0x10($a1)
/* f02df68: 5b20000d */ blezl $t9,.L0f02dfa0
/* f02df6c: 8fac0044 */ lw $t4,0x44($sp)
/* f02df70: 8ca8000c */ lw $t0,0xc($a1)
.L0f02df74:
/* f02df74: 24630001 */ addiu $v1,$v1,0x1
/* f02df78: 01041021 */ addu $v0,$t0,$a0
/* f02df7c: 84490002 */ lh $t1,0x2($v0)
/* f02df80: 2484000c */ addiu $a0,$a0,0xc
/* f02df84: 01275021 */ addu $t2,$t1,$a3
/* f02df88: a44a0002 */ sh $t2,0x2($v0)
/* f02df8c: 84ab0010 */ lh $t3,0x10($a1)
/* f02df90: 006b082a */ slt $at,$v1,$t3
/* f02df94: 5420fff7 */ bnezl $at,.L0f02df74
/* f02df98: 8ca8000c */ lw $t0,0xc($a1)
/* f02df9c: 8fac0044 */ lw $t4,0x44($sp)
.L0f02dfa0:
/* f02dfa0: 5580ffde */ bnezl $t4,.L0f02df1c
/* f02dfa4: 8fa40048 */ lw $a0,0x48($sp)
/* f02dfa8: 8fa40048 */ lw $a0,0x48($sp)
/* f02dfac: 0fc1a25b */ jal func0f06896c
/* f02dfb0: afa70038 */ sw $a3,0x38($sp)
/* f02dfb4: 10400009 */ beqz $v0,.L0f02dfdc
/* f02dfb8: 8fa70038 */ lw $a3,0x38($sp)
/* f02dfbc: 44872000 */ mtc1 $a3,$f4
/* f02dfc0: c446000c */ lwc1 $f6,0xc($v0)
/* f02dfc4: c44a0010 */ lwc1 $f10,0x10($v0)
/* f02dfc8: 46802020 */ cvt.s.w $f0,$f4
/* f02dfcc: 46003200 */ add.s $f8,$f6,$f0
/* f02dfd0: 46005400 */ add.s $f16,$f10,$f0
/* f02dfd4: e448000c */ swc1 $f8,0xc($v0)
/* f02dfd8: e4500010 */ swc1 $f16,0x10($v0)
.L0f02dfdc:
/* f02dfdc: 8fbf001c */ lw $ra,0x1c($sp)
.L0f02dfe0:
/* f02dfe0: 8fb00018 */ lw $s0,0x18($sp)
/* f02dfe4: 27bd0048 */ addiu $sp,$sp,0x48
/* f02dfe8: 03e00008 */ jr $ra
/* f02dfec: 00000000 */ nop
);
/**
* Tweak the head's Y offset to suit the body.
*
* By default, heads and their matching bodies align perfectly and don't need
* any tweaking. This function is used in multiplier where players can put any
* heads on any bodies.
*/
void bodyCalculateHeadOffset(struct modelfiledata *headfiledata, s32 headnum, s32 bodynum)
{
struct modelnode *node;
struct modelnode *prev;
Gfx *gdl;
s32 offset;
struct modelrodata_bbox *bbox;
s32 i;
if ((s16)(*(s32 *)&headfiledata->type) == MODELTYPE_HEAD) {
if (g_HeadsAndBodies[headnum].type == g_HeadsAndBodies[bodynum].type) {
return;
}
switch (g_HeadsAndBodies[headnum].type) {
default:
case HEADBODYTYPE_FEMALE:
offset = 0;
break;
case HEADBODYTYPE_MAIAN:
offset = 0;
break;
case HEADBODYTYPE_DEFAULT:
offset = -35;
break;
case HEADBODYTYPE_MRBLONDE:
offset = 0;
break;
case HEADBODYTYPE_CASS:
offset = -20;
break;
case HEADBODYTYPE_FEMALEGUARD:
offset = -40;
break;
}
switch (g_HeadsAndBodies[bodynum].type) {
case HEADBODYTYPE_FEMALE:
break;
case HEADBODYTYPE_MAIAN:
offset -= 30;
break;
case HEADBODYTYPE_DEFAULT:
offset += 35;
break;
case HEADBODYTYPE_MRBLONDE:
break;
case HEADBODYTYPE_CASS:
offset += 20;
break;
case HEADBODYTYPE_FEMALEGUARD:
offset += 40;
break;
}
if (g_HeadsAndBodies[bodynum].type == HEADBODYTYPE_FEMALE) {
if (g_HeadsAndBodies[headnum].type == HEADBODYTYPE_DEFAULT
|| g_HeadsAndBodies[headnum].type == HEADBODYTYPE_MRBLONDE) {
offset -= 10;
} else if (g_HeadsAndBodies[headnum].type == HEADBODYTYPE_CASS
|| g_HeadsAndBodies[headnum].type == HEADBODYTYPE_FEMALEGUARD) {
offset -= 5;
}
} else if (g_HeadsAndBodies[bodynum].type == HEADBODYTYPE_CASS
&& (g_HeadsAndBodies[headnum].type == HEADBODYTYPE_DEFAULT
|| g_HeadsAndBodies[headnum].type == HEADBODYTYPE_MRBLONDE)) {
offset -= 5;
}
// Apply the offset
if (offset != 0) {
node = NULL;
do {
prev = node;
modelIterateDisplayLists(headfiledata, &node, &gdl);
if (node && node != prev && node->type == MODELNODETYPE_DL) {
struct modelrodata_dl *rodata = &node->rodata->dl;
for (i = 0; i < rodata->pcount; i++) {
rodata->ptable[i].unk02 += offset;
}
}
} while (node);
bbox = func0f06896c(headfiledata);
if (bbox != NULL) {
bbox->ymin += offset;
bbox->ymax += offset;
}
}
}
}
+2 -2
View File
@@ -2103,7 +2103,7 @@ glabel var7f1ad5b4
/* f0b9148: ac206680 */ sw $zero,%lo(g_FileInfo)($at)
/* f0b914c: 00402025 */ or $a0,$v0,$zero
/* f0b9150: 8fa50064 */ lw $a1,0x64($sp)
/* f0b9154: 0fc0b76f */ jal func0f02ddbc
/* f0b9154: 0fc0b76f */ jal bodyCalculateHeadOffset
/* f0b9158: 8fa60068 */ lw $a2,0x68($sp)
/* f0b915c: 10000017 */ b .L0f0b91bc
/* f0b9160: 8fae005c */ lw $t6,0x5c($sp)
@@ -2761,7 +2761,7 @@ glabel var7f1ad5b4
/* f0b6e60: ac20af40 */ sw $zero,-0x50c0($at)
/* f0b6e64: 00402025 */ or $a0,$v0,$zero
/* f0b6e68: 8fa50064 */ lw $a1,0x64($sp)
/* f0b6e6c: 0fc0b5be */ jal func0f02ddbc
/* f0b6e6c: 0fc0b5be */ jal bodyCalculateHeadOffset
/* f0b6e70: 8fa60068 */ lw $a2,0x68($sp)
/* f0b6e74: 10000017 */ beqz $zero,.NB0f0b6ed4
/* f0b6e78: 8fae005c */ lw $t6,0x5c($sp)
+3 -3
View File
@@ -5406,7 +5406,7 @@ glabel var7f1b3c40pf
/* f0f42f8: 8fa40040 */ lw $a0,0x40($sp)
/* f0f42fc: 8e040058 */ lw $a0,0x58($s0)
/* f0f4300: 8fa50400 */ lw $a1,0x400($sp)
/* f0f4304: 0fc0b7b7 */ jal func0f02ddbc
/* f0f4304: 0fc0b7b7 */ jal bodyCalculateHeadOffset
/* f0f4308: 8fa60404 */ lw $a2,0x404($sp)
/* f0f430c: 0c00898a */ jal modelCalculateRwDataLen
/* f0f4310: 8e040058 */ lw $a0,0x58($s0)
@@ -7008,7 +7008,7 @@ glabel var7f1b2948
/* f0f3ba4: 8fa40040 */ lw $a0,0x40($sp)
/* f0f3ba8: 8e040058 */ lw $a0,0x58($s0)
/* f0f3bac: 8fa50400 */ lw $a1,0x400($sp)
/* f0f3bb0: 0fc0b76f */ jal func0f02ddbc
/* f0f3bb0: 0fc0b76f */ jal bodyCalculateHeadOffset
/* f0f3bb4: 8fa60404 */ lw $a2,0x404($sp)
/* f0f3bb8: 0c008b49 */ jal modelCalculateRwDataLen
/* f0f3bbc: 8e040058 */ lw $a0,0x58($s0)
@@ -8617,7 +8617,7 @@ glabel var7f1b2948
/* f0f06e8: 8fa40044 */ lw $a0,0x44($sp)
/* f0f06ec: 8e240058 */ lw $a0,0x58($s1)
/* f0f06f0: 8fa50428 */ lw $a1,0x428($sp)
/* f0f06f4: 0fc0b5be */ jal func0f02ddbc
/* f0f06f4: 0fc0b5be */ jal bodyCalculateHeadOffset
/* f0f06f8: 8fa6042c */ lw $a2,0x42c($sp)
/* f0f06fc: 0c008f6f */ jal modelCalculateRwDataLen
/* f0f0700: 8e240058 */ lw $a0,0x58($s1)
+2 -2
View File
@@ -133,7 +133,7 @@ glabel func0f1a7560
/* f1a75b8: afa00074 */ sw $zero,0x74($sp)
/* f1a75bc: 02602025 */ or $a0,$s3,$zero
/* f1a75c0: 27a50074 */ addiu $a1,$sp,0x74
/* f1a75c4: 0c008c67 */ jal func0002319c
/* f1a75c4: 0c008c67 */ jal modelIterateDisplayLists
/* f1a75c8: 27a6006c */ addiu $a2,$sp,0x6c
/* f1a75cc: 8fb6006c */ lw $s6,0x6c($sp)
/* f1a75d0: 3c1700ff */ lui $s7,0xff
@@ -165,7 +165,7 @@ glabel func0f1a7560
/* f1a7634: 8fb10074 */ lw $s1,0x74($sp)
/* f1a7638: 02602025 */ or $a0,$s3,$zero
/* f1a763c: 27a50074 */ addiu $a1,$sp,0x74
/* f1a7640: 0c008c67 */ jal func0002319c
/* f1a7640: 0c008c67 */ jal modelIterateDisplayLists
/* f1a7644: 27a6006c */ addiu $a2,$sp,0x6c
/* f1a7648: 8fb6006c */ lw $s6,0x6c($sp)
/* f1a764c: 02602025 */ or $a0,$s3,$zero
+7
View File
@@ -1043,6 +1043,13 @@
#define HATTYPE_METAL 3
#define HATTYPE_CLOTH 5
#define HEADBODYTYPE_DEFAULT 0
#define HEADBODYTYPE_FEMALE 1
#define HEADBODYTYPE_FEMALEGUARD 2
#define HEADBODYTYPE_MAIAN 3
#define HEADBODYTYPE_CASS 4
#define HEADBODYTYPE_MRBLONDE 5
#define HEALTHSHOWMODE_HIDDEN 0 // health bar not visible
#define HEALTHSHOWMODE_OPENING 1 // height expanding
#define HEALTHSHOWMODE_PREVIOUS 2 // full height, showing previous health amount
+1 -1
View File
@@ -13,6 +13,6 @@ s32 func0f02d3f8(void);
s32 bodyChooseHead(s32 bodynum);
void chrUnpack(s32 stagenum, struct packedchr *packed, s32 cmdindex);
struct prop *propAllocateEyespy(struct pad *pad, s16 room);
void func0f02ddbc(struct modelfiledata *headfiledata, s32 headnum, s32 bodynum);
void bodyCalculateHeadOffset(struct modelfiledata *headfiledata, s32 headnum, s32 bodynum);
#endif
+1 -1
View File
@@ -78,7 +78,7 @@ s32 func0f068760(struct defaultobj *obj);
s32 func0f0687b8(struct defaultobj *obj);
struct modelnode *func0f0687e4(struct model *model);
u32 func0f0688f4(void);
f32 *func0f06896c(void *modelfiledata);
struct modelrodata_bbox *func0f06896c(struct modelfiledata *filedata);
u32 func0f068998(void);
struct model08thing *func0f068aa8(struct model *model);
u32 func0f068ad4(void);
+1 -1
View File
@@ -99,7 +99,7 @@ void modelInitRwData(struct model *model, struct modelnode *node);
void modelInit(struct model *model, struct modelfiledata *filedata, union modelrwdata **rwdatas, bool resetanim);
void animInit(struct anim *anim);
u32 func00023108(void);
void func0002319c(struct modelfiledata *filedata, struct modelfiledata *filedataptr, Gfx **gdlptr);
void modelIterateDisplayLists(struct modelfiledata *filedata, struct modelnode **nodeptr, Gfx **gdlptr);
void modelNodeReplaceGdl(u32 arg0, struct modelnode *node, Gfx *find, Gfx *replacement);
#endif
+12 -3
View File
@@ -642,11 +642,20 @@ struct modelrodata_headspot { // type 0x17
u16 rwdataindex;
};
struct ptableentry {
s16 unk00;
s16 unk02;
s16 unk04;
s16 unk06;
s16 unk08;
s16 unk0a;
};
struct modelrodata_dl { // type 0x18
/*0x00*/ Gfx *primary;
/*0x04*/ Gfx *secondary;
/*0x08*/ u32 *colourtable;
/*0x0c*/ struct coord *ptable;
/*0x0c*/ struct ptableentry *ptable;
/*0x10*/ s16 pcount;
/*0x12*/ s16 mcount;
/*0x14*/ u16 rwdataindex;
@@ -760,7 +769,7 @@ struct modelrwdata_headspot { // type 0x17
};
struct modelrwdata_dl { // type 0x18
struct coord *ptable;
struct ptableentry *ptable;
Gfx *gdl;
u32 *unk08;
};
@@ -3249,7 +3258,7 @@ struct headorbody {
/*0x00*/ u16 ismale : 1;
/*0x00*/ u16 unk00_01 : 1;
/*0x00*/ u16 canvaryheight : 1;
/*0x00*/ u16 unk00_03 : 3;
/*0x00*/ u16 type : 3;
/*0x00*/ u16 height : 8;
/*0x02*/ u16 filenum;
/*0x04*/ f32 scale;
+18 -6
View File
@@ -6599,9 +6599,21 @@ glabel func00023108
/* 23198: 00000000 */ nop
);
void func0002319c(struct modelfiledata *filedata, struct modelfiledata *filedataptr, Gfx **gdlptr)
/**
* This function can be called repeatedly to iterate a model's display lists.
*
* On the first call, the value passed as nodeptr should point to a NULL value.
* Each time the function is called, it will update *gdlptr to point to the next
* display list, and will update *nodeptr to point to the current node. On
* subsequent calls, the same values should be passed as nodeptr and gdlptr so
* the function can continue correctly.
*
* Note that some node types support multiple display lists, so the function
* may return the same node while it iterates the display lists for that node.
*/
void modelIterateDisplayLists(struct modelfiledata *filedata, struct modelnode **nodeptr, Gfx **gdlptr)
{
struct modelnode *node = filedataptr->rootnode;
struct modelnode *node = *nodeptr;
union modelrodata *rodata;
Gfx *gdl = NULL;
@@ -6616,7 +6628,7 @@ void func0002319c(struct modelfiledata *filedata, struct modelfiledata *filedata
case MODELNODETYPE_GUNDL:
rodata = node->rodata;
if (node != filedataptr->rootnode) {
if (node != *nodeptr) {
gdl = rodata->gundl.primary;
} else if (rodata->gundl.secondary != *gdlptr) {
gdl = rodata->gundl.secondary;
@@ -6625,7 +6637,7 @@ void func0002319c(struct modelfiledata *filedata, struct modelfiledata *filedata
case MODELNODETYPE_DL:
rodata = node->rodata;
if (node != filedataptr->rootnode) {
if (node != *nodeptr) {
gdl = rodata->dl.primary;
} else if (rodata->dl.secondary != *gdlptr) {
gdl = rodata->dl.secondary;
@@ -6634,7 +6646,7 @@ void func0002319c(struct modelfiledata *filedata, struct modelfiledata *filedata
case MODELNODETYPE_16:
rodata = node->rodata;
if (node != filedataptr->rootnode) {
if (node != *nodeptr) {
gdl = rodata->type16.unk08;
}
break;
@@ -6670,7 +6682,7 @@ void func0002319c(struct modelfiledata *filedata, struct modelfiledata *filedata
}
*gdlptr = gdl;
filedataptr->rootnode = node;
*nodeptr = node;
}
void modelNodeReplaceGdl(u32 arg0, struct modelnode *node, Gfx *find, Gfx *replacement)
-3
View File
@@ -35,9 +35,6 @@ u32 var8009c374;
u32 var8009c378;
u32 var8009c37c;
u32 var8009c380;
u32 var8009c384;
u32 var8009c388;
u32 var8009c38c;
u32 var8005f150 = 0x00000000;
u32 var8005f154 = 0x00002710;