code proc UI_PlayerInfo_SetWeapon 80 8 file "../ui_players.c" line 34 ;1:// Copyright (C) 1999-2000 Id Software, Inc. ;2:// ;3:// ui_players.c ;4: ;5:#include "ui_local.h" ;6: ;7: ;8:#define UI_TIMER_GESTURE 2300 ;9:#define UI_TIMER_JUMP 1000 ;10:#define UI_TIMER_LAND 130 ;11:#define UI_TIMER_WEAPON_SWITCH 300 ;12:#define UI_TIMER_ATTACK 500 ;13:#define UI_TIMER_MUZZLE_FLASH 20 ;14:#define UI_TIMER_WEAPON_DELAY 250 ;15: ;16:#define JUMP_HEIGHT 56 ;17: ;18:#define SWINGSPEED 0.3f ;19: ;20:#define SPIN_SPEED 0.9f ;21:#define COAST_TIME 1000 ;22: ;23: ;24:static int dp_realtime; ;25:static float jumpHeight; ;26:sfxHandle_t weaponChangeSound; ;27: ;28: ;29:/* ;30:=============== ;31:UI_PlayerInfo_SetWeapon ;32:=============== ;33:*/ ;34:static void UI_PlayerInfo_SetWeapon( playerInfo_t *pi, weapon_t weaponNum ) { line 38 ;35: gitem_t * item; ;36: char path[MAX_QPATH]; ;37: ;38: pi->currentWeapon = weaponNum; ADDRFP4 0 INDIRP4 CNSTI4 1208 ADDP4 ADDRFP4 4 INDIRI4 ASGNI4 LABELV $91 line 40 ;39:tryagain: ;40: pi->realWeapon = weaponNum; ADDRFP4 0 INDIRP4 CNSTI4 1272 ADDP4 ADDRFP4 4 INDIRI4 ASGNI4 line 41 ;41: pi->weaponModel = 0; ADDRFP4 0 INDIRP4 CNSTI4 1156 ADDP4 CNSTI4 0 ASGNI4 line 42 ;42: pi->barrelModel = 0; ADDRFP4 0 INDIRP4 CNSTI4 1160 ADDP4 CNSTI4 0 ASGNI4 line 43 ;43: pi->flashModel = 0; ADDRFP4 0 INDIRP4 CNSTI4 1164 ADDP4 CNSTI4 0 ASGNI4 line 45 ;44: ;45: if ( weaponNum == WP_NONE ) { ADDRFP4 4 INDIRI4 CNSTI4 0 NEI4 $92 line 46 ;46: return; ADDRGP4 $90 JUMPV LABELV $92 line 49 ;47: } ;48: ;49: for ( item = bg_itemlist + 1; item->classname ; item++ ) { ADDRLP4 0 ADDRGP4 bg_itemlist+52 ASGNP4 ADDRGP4 $97 JUMPV LABELV $94 line 50 ;50: if ( item->giType != IT_WEAPON ) { ADDRLP4 0 INDIRP4 CNSTI4 36 ADDP4 INDIRI4 CNSTI4 1 EQI4 $99 line 51 ;51: continue; ADDRGP4 $95 JUMPV LABELV $99 line 53 ;52: } ;53: if ( item->giTag == weaponNum ) { ADDRLP4 0 INDIRP4 CNSTI4 40 ADDP4 INDIRI4 ADDRFP4 4 INDIRI4 NEI4 $101 line 54 ;54: break; ADDRGP4 $96 JUMPV LABELV $101 line 56 ;55: } ;56: } LABELV $95 line 49 ADDRLP4 0 ADDRLP4 0 INDIRP4 CNSTI4 52 ADDP4 ASGNP4 LABELV $97 ADDRLP4 0 INDIRP4 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $94 LABELV $96 line 58 ;57: ;58: if ( item->classname ) { ADDRLP4 0 INDIRP4 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $103 line 59 ;59: pi->weaponModel = trap_R_RegisterModel( item->world_model[0] ); ADDRLP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRP4 ARGP4 ADDRLP4 68 ADDRGP4 trap_R_RegisterModel CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 1156 ADDP4 ADDRLP4 68 INDIRI4 ASGNI4 line 60 ;60: } LABELV $103 line 62 ;61: ;62: if( pi->weaponModel == 0 ) { ADDRFP4 0 INDIRP4 CNSTI4 1156 ADDP4 INDIRI4 CNSTI4 0 NEI4 $105 line 64 ;63: //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL ;64: if( weaponNum == WP_PISTOL ) { ADDRFP4 4 INDIRI4 CNSTI4 1 NEI4 $107 line 65 ;65: weaponNum = WP_NONE; ADDRFP4 4 CNSTI4 0 ASGNI4 line 66 ;66: goto tryagain; ADDRGP4 $91 JUMPV LABELV $107 line 69 ;67: } ;68: //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL ;69: weaponNum = WP_PISTOL; ADDRFP4 4 CNSTI4 1 ASGNI4 line 70 ;70: goto tryagain; ADDRGP4 $91 JUMPV LABELV $105 line 80 ;71: } ;72: //Blaze: none of our weapons have barrel models ;73: /*if ( weaponNum == WP_PISTOL || weaponNum == WP_GAUNTLET || weaponNum == WP_BFG ) { ;74: strcpy( path, item->world_model[0] ); ;75: COM_StripExtension( path, path ); ;76: strcat( path, "_barrel.md3" ); ;77: pi->barrelModel = trap_R_RegisterModel( path ); ;78: }*/ ;79: ;80: strcpy( path, item->world_model[0] ); ADDRLP4 4 ARGP4 ADDRLP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRP4 ARGP4 ADDRGP4 strcpy CALLP4 pop line 81 ;81: COM_StripExtension( path, path ); ADDRLP4 4 ARGP4 ADDRLP4 4 ARGP4 ADDRGP4 COM_StripExtension CALLV pop line 82 ;82: strcat( path, "_flash.md3" ); ADDRLP4 4 ARGP4 ADDRGP4 $109 ARGP4 ADDRGP4 strcat CALLP4 pop line 83 ;83: pi->flashModel = trap_R_RegisterModel( path ); ADDRLP4 4 ARGP4 ADDRLP4 68 ADDRGP4 trap_R_RegisterModel CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 1164 ADDP4 ADDRLP4 68 INDIRI4 ASGNI4 line 88 ;84: ;85: ;86://Blaze: I think this makes some funky colors or something, I dont really know ;) ;87://Blaze: Reaction Weapons ;88: switch( weaponNum ) { ADDRLP4 72 ADDRFP4 4 INDIRI4 ASGNI4 ADDRLP4 72 INDIRI4 CNSTI4 1 LTI4 $110 ADDRLP4 72 INDIRI4 CNSTI4 9 GTI4 $110 ADDRLP4 72 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $122-4 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $122 address $114 address $119 address $117 address $118 address $116 address $115 address $120 address $113 address $121 code LABELV $113 line 90 ;89: case WP_KNIFE: ;90: MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1058642330 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1058642330 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 1065353216 ASGNF4 line 91 ;91: break; ADDRGP4 $111 JUMPV LABELV $114 line 94 ;92: ;93: case WP_PISTOL: ;94: MAKERGB( pi->flashDlightColor, 1, 1, 0 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 0 ASGNF4 line 95 ;95: break; ADDRGP4 $111 JUMPV LABELV $115 line 98 ;96: ;97: case WP_M4: ;98: MAKERGB( pi->flashDlightColor, 1, 1, 0 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 0 ASGNF4 line 99 ;99: break; ADDRGP4 $111 JUMPV LABELV $116 line 102 ;100: ;101: case WP_SSG3000: ;102: MAKERGB( pi->flashDlightColor, 1, 0.7f, 0.5f ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1060320051 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 1056964608 ASGNF4 line 103 ;103: break; ADDRGP4 $111 JUMPV LABELV $117 line 106 ;104: ;105: case WP_MP5: ;106: MAKERGB( pi->flashDlightColor, 1, 0.75f, 0 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1061158912 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 0 ASGNF4 line 107 ;107: break; ADDRGP4 $111 JUMPV LABELV $118 line 110 ;108: ;109: case WP_HANDCANNON: ;110: MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1058642330 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1058642330 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 1065353216 ASGNF4 line 111 ;111: break; ADDRGP4 $111 JUMPV LABELV $119 line 114 ;112: ;113: case WP_M3: ;114: MAKERGB( pi->flashDlightColor, 1, 0.5f, 0 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1056964608 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 0 ASGNF4 line 115 ;115: break; ADDRGP4 $111 JUMPV LABELV $120 line 118 ;116: ;117: case WP_AKIMBO: ;118: MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1058642330 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1058642330 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 1065353216 ASGNF4 line 119 ;119: break; ADDRGP4 $111 JUMPV LABELV $121 line 122 ;120: ;121: case WP_GRENADE: ;122: MAKERGB( pi->flashDlightColor, 1, 0.7f, 1 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1060320051 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 1065353216 ASGNF4 line 123 ;123: break; ADDRGP4 $111 JUMPV LABELV $110 line 126 ;124: ;125: default: ;126: MAKERGB( pi->flashDlightColor, 1, 1, 1 ); ADDRFP4 0 INDIRP4 CNSTI4 1168 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1172 ADDP4 CNSTF4 1065353216 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1176 ADDP4 CNSTF4 1065353216 ASGNF4 line 127 ;127: break; LABELV $111 line 129 ;128: } ;129:} LABELV $90 endproc UI_PlayerInfo_SetWeapon 80 8 proc UI_ForceLegsAnim 8 0 line 137 ;130: ;131: ;132:/* ;133:=============== ;134:UI_ForceLegsAnim ;135:=============== ;136:*/ ;137:static void UI_ForceLegsAnim( playerInfo_t *pi, int anim ) { line 138 ;138: pi->legsAnim = ( ( pi->legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 1212 ADDP4 ASGNP4 ADDRLP4 4 CNSTI4 128 ASGNI4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRLP4 4 INDIRI4 BANDI4 ADDRLP4 4 INDIRI4 BXORI4 ADDRFP4 4 INDIRI4 BORI4 ASGNI4 line 140 ;139: ;140: if ( anim == LEGS_JUMP ) { ADDRFP4 4 INDIRI4 CNSTI4 18 NEI4 $125 line 141 ;141: pi->legsAnimationTimer = UI_TIMER_JUMP; ADDRFP4 0 INDIRP4 CNSTI4 1248 ADDP4 CNSTI4 1000 ASGNI4 line 142 ;142: } LABELV $125 line 143 ;143:} LABELV $124 endproc UI_ForceLegsAnim 8 0 proc UI_SetLegsAnim 0 8 line 151 ;144: ;145: ;146:/* ;147:=============== ;148:UI_SetLegsAnim ;149:=============== ;150:*/ ;151:static void UI_SetLegsAnim( playerInfo_t *pi, int anim ) { line 152 ;152: if ( pi->pendingLegsAnim ) { ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 INDIRI4 CNSTI4 0 EQI4 $128 line 153 ;153: anim = pi->pendingLegsAnim; ADDRFP4 4 ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 INDIRI4 ASGNI4 line 154 ;154: pi->pendingLegsAnim = 0; ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 CNSTI4 0 ASGNI4 line 155 ;155: } LABELV $128 line 156 ;156: UI_ForceLegsAnim( pi, anim ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 UI_ForceLegsAnim CALLV pop line 157 ;157:} LABELV $127 endproc UI_SetLegsAnim 0 8 proc UI_ForceTorsoAnim 12 0 line 165 ;158: ;159: ;160:/* ;161:=============== ;162:UI_ForceTorsoAnim ;163:=============== ;164:*/ ;165:static void UI_ForceTorsoAnim( playerInfo_t *pi, int anim ) { line 166 ;166: pi->torsoAnim = ( ( pi->torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 1216 ADDP4 ASGNP4 ADDRLP4 4 CNSTI4 128 ASGNI4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRLP4 4 INDIRI4 BANDI4 ADDRLP4 4 INDIRI4 BXORI4 ADDRFP4 4 INDIRI4 BORI4 ASGNI4 line 168 ;167: ;168: if ( anim == TORSO_GESTURE ) { ADDRFP4 4 INDIRI4 CNSTI4 6 NEI4 $131 line 169 ;169: pi->torsoAnimationTimer = UI_TIMER_GESTURE; ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 CNSTI4 2300 ASGNI4 line 170 ;170: } LABELV $131 line 172 ;171: ;172: if ( anim == TORSO_ATTACK || anim == TORSO_ATTACK2 ) { ADDRLP4 8 ADDRFP4 4 INDIRI4 ASGNI4 ADDRLP4 8 INDIRI4 CNSTI4 7 EQI4 $135 ADDRLP4 8 INDIRI4 CNSTI4 8 NEI4 $133 LABELV $135 line 173 ;173: pi->torsoAnimationTimer = UI_TIMER_ATTACK; ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 CNSTI4 500 ASGNI4 line 174 ;174: } LABELV $133 line 175 ;175:} LABELV $130 endproc UI_ForceTorsoAnim 12 0 proc UI_SetTorsoAnim 0 8 line 183 ;176: ;177: ;178:/* ;179:=============== ;180:UI_SetTorsoAnim ;181:=============== ;182:*/ ;183:static void UI_SetTorsoAnim( playerInfo_t *pi, int anim ) { line 184 ;184: if ( pi->pendingTorsoAnim ) { ADDRFP4 0 INDIRP4 CNSTI4 1244 ADDP4 INDIRI4 CNSTI4 0 EQI4 $137 line 185 ;185: anim = pi->pendingTorsoAnim; ADDRFP4 4 ADDRFP4 0 INDIRP4 CNSTI4 1244 ADDP4 INDIRI4 ASGNI4 line 186 ;186: pi->pendingTorsoAnim = 0; ADDRFP4 0 INDIRP4 CNSTI4 1244 ADDP4 CNSTI4 0 ASGNI4 line 187 ;187: } LABELV $137 line 189 ;188: ;189: UI_ForceTorsoAnim( pi, anim ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 UI_ForceTorsoAnim CALLV pop line 190 ;190:} LABELV $136 endproc UI_SetTorsoAnim 0 8 proc UI_TorsoSequencing 16 8 line 198 ;191: ;192: ;193:/* ;194:=============== ;195:UI_TorsoSequencing ;196:=============== ;197:*/ ;198:static void UI_TorsoSequencing( playerInfo_t *pi ) { line 201 ;199: int currentAnim; ;200: ;201: currentAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 CNSTI4 -129 BANDI4 ASGNI4 line 203 ;202: ;203: if ( pi->weapon != pi->currentWeapon ) { ADDRLP4 4 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 4 INDIRP4 CNSTI4 1220 ADDP4 INDIRI4 ADDRLP4 4 INDIRP4 CNSTI4 1208 ADDP4 INDIRI4 EQI4 $140 line 204 ;204: if ( currentAnim != TORSO_DROP ) { ADDRLP4 0 INDIRI4 CNSTI4 9 EQI4 $142 line 205 ;205: pi->torsoAnimationTimer = UI_TIMER_WEAPON_SWITCH; ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 CNSTI4 300 ASGNI4 line 206 ;206: UI_ForceTorsoAnim( pi, TORSO_DROP ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 9 ARGI4 ADDRGP4 UI_ForceTorsoAnim CALLV pop line 207 ;207: } LABELV $142 line 208 ;208: } LABELV $140 line 210 ;209: ;210: if ( pi->torsoAnimationTimer > 0 ) { ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 INDIRI4 CNSTI4 0 LEI4 $144 line 211 ;211: return; ADDRGP4 $139 JUMPV LABELV $144 line 214 ;212: } ;213: ;214: if( currentAnim == TORSO_GESTURE ) { ADDRLP4 0 INDIRI4 CNSTI4 6 NEI4 $146 line 215 ;215: UI_SetTorsoAnim( pi, TORSO_STAND ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 11 ARGI4 ADDRGP4 UI_SetTorsoAnim CALLV pop line 216 ;216: return; ADDRGP4 $139 JUMPV LABELV $146 line 219 ;217: } ;218: ;219: if( currentAnim == TORSO_ATTACK || currentAnim == TORSO_ATTACK2 ) { ADDRLP4 0 INDIRI4 CNSTI4 7 EQI4 $150 ADDRLP4 0 INDIRI4 CNSTI4 8 NEI4 $148 LABELV $150 line 220 ;220: UI_SetTorsoAnim( pi, TORSO_STAND ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 11 ARGI4 ADDRGP4 UI_SetTorsoAnim CALLV pop line 221 ;221: return; ADDRGP4 $139 JUMPV LABELV $148 line 224 ;222: } ;223: ;224: if ( currentAnim == TORSO_DROP ) { ADDRLP4 0 INDIRI4 CNSTI4 9 NEI4 $151 line 225 ;225: UI_PlayerInfo_SetWeapon( pi, pi->weapon ); ADDRLP4 12 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 12 INDIRP4 ARGP4 ADDRLP4 12 INDIRP4 CNSTI4 1220 ADDP4 INDIRI4 ARGI4 ADDRGP4 UI_PlayerInfo_SetWeapon CALLV pop line 226 ;226: pi->torsoAnimationTimer = UI_TIMER_WEAPON_SWITCH; ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 CNSTI4 300 ASGNI4 line 227 ;227: UI_ForceTorsoAnim( pi, TORSO_RAISE ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 10 ARGI4 ADDRGP4 UI_ForceTorsoAnim CALLV pop line 228 ;228: return; ADDRGP4 $139 JUMPV LABELV $151 line 231 ;229: } ;230: ;231: if ( currentAnim == TORSO_RAISE ) { ADDRLP4 0 INDIRI4 CNSTI4 10 NEI4 $153 line 232 ;232: UI_SetTorsoAnim( pi, TORSO_STAND ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 11 ARGI4 ADDRGP4 UI_SetTorsoAnim CALLV pop line 233 ;233: return; LABELV $153 line 235 ;234: } ;235:} LABELV $139 endproc UI_TorsoSequencing 16 8 proc UI_LegsSequencing 8 8 line 243 ;236: ;237: ;238:/* ;239:=============== ;240:UI_LegsSequencing ;241:=============== ;242:*/ ;243:static void UI_LegsSequencing( playerInfo_t *pi ) { line 246 ;244: int currentAnim; ;245: ;246: currentAnim = pi->legsAnim & ~ANIM_TOGGLEBIT; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 1212 ADDP4 INDIRI4 CNSTI4 -129 BANDI4 ASGNI4 line 248 ;247: ;248: if ( pi->legsAnimationTimer > 0 ) { ADDRFP4 0 INDIRP4 CNSTI4 1248 ADDP4 INDIRI4 CNSTI4 0 LEI4 $156 line 249 ;249: if ( currentAnim == LEGS_JUMP ) { ADDRLP4 0 INDIRI4 CNSTI4 18 NEI4 $155 line 250 ;250: jumpHeight = JUMP_HEIGHT * sin( M_PI * ( UI_TIMER_JUMP - pi->legsAnimationTimer ) / UI_TIMER_JUMP ); CNSTF4 1078530011 CNSTI4 1000 ADDRFP4 0 INDIRP4 CNSTI4 1248 ADDP4 INDIRI4 SUBI4 CVIF4 4 MULF4 CNSTF4 1148846080 DIVF4 ARGF4 ADDRLP4 4 ADDRGP4 sin CALLF4 ASGNF4 ADDRGP4 jumpHeight CNSTF4 1113587712 ADDRLP4 4 INDIRF4 MULF4 ASGNF4 line 251 ;251: } line 252 ;252: return; ADDRGP4 $155 JUMPV LABELV $156 line 255 ;253: } ;254: ;255: if ( currentAnim == LEGS_JUMP ) { ADDRLP4 0 INDIRI4 CNSTI4 18 NEI4 $160 line 256 ;256: UI_ForceLegsAnim( pi, LEGS_LAND ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 19 ARGI4 ADDRGP4 UI_ForceLegsAnim CALLV pop line 257 ;257: pi->legsAnimationTimer = UI_TIMER_LAND; ADDRFP4 0 INDIRP4 CNSTI4 1248 ADDP4 CNSTI4 130 ASGNI4 line 258 ;258: jumpHeight = 0; ADDRGP4 jumpHeight CNSTF4 0 ASGNF4 line 259 ;259: return; ADDRGP4 $155 JUMPV LABELV $160 line 262 ;260: } ;261: ;262: if ( currentAnim == LEGS_LAND ) { ADDRLP4 0 INDIRI4 CNSTI4 19 NEI4 $162 line 263 ;263: UI_SetLegsAnim( pi, LEGS_IDLE ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 22 ARGI4 ADDRGP4 UI_SetLegsAnim CALLV pop line 264 ;264: return; LABELV $162 line 266 ;265: } ;266:} LABELV $155 endproc UI_LegsSequencing 8 8 proc UI_PositionEntityOnTag 84 24 line 275 ;267: ;268: ;269:/* ;270:====================== ;271:UI_PositionEntityOnTag ;272:====================== ;273:*/ ;274:static void UI_PositionEntityOnTag( refEntity_t *entity, const refEntity_t *parent, ;275: clipHandle_t parentModel, char *tagName ) { line 280 ;276: int i; ;277: orientation_t lerped; ;278: ;279: // lerp the tag ;280: trap_CM_LerpTag( &lerped, parentModel, parent->oldframe, parent->frame, ADDRLP4 4 ARGP4 ADDRFP4 8 INDIRI4 ARGI4 ADDRLP4 52 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 52 INDIRP4 CNSTI4 96 ADDP4 INDIRI4 ARGI4 ADDRLP4 52 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 ARGI4 CNSTF4 1065353216 ADDRLP4 52 INDIRP4 CNSTI4 100 ADDP4 INDIRF4 SUBF4 ARGF4 ADDRFP4 12 INDIRP4 ARGP4 ADDRGP4 trap_CM_LerpTag CALLI4 pop line 284 ;281: 1.0 - parent->backlerp, tagName ); ;282: ;283: // FIXME: allow origin offsets along tag? ;284: VectorCopy( parent->origin, entity->origin ); ADDRLP4 56 CNSTI4 68 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 56 INDIRI4 ADDP4 ADDRFP4 4 INDIRP4 ADDRLP4 56 INDIRI4 ADDP4 INDIRB ASGNB 12 line 285 ;285: for ( i = 0 ; i < 3 ; i++ ) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $165 line 286 ;286: VectorMA( entity->origin, lerped.origin[i], parent->axis[i], entity->origin ); ADDRLP4 60 ADDRFP4 0 INDIRP4 CNSTI4 68 ADDP4 ASGNP4 ADDRLP4 60 INDIRP4 ADDRLP4 60 INDIRP4 INDIRF4 CNSTI4 12 ADDRLP4 0 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 CNSTI4 28 ADDP4 ADDP4 INDIRF4 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 68 ADDRFP4 0 INDIRP4 CNSTI4 72 ADDP4 ASGNP4 ADDRLP4 68 INDIRP4 ADDRLP4 68 INDIRP4 INDIRF4 CNSTI4 12 ADDRLP4 0 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 CNSTI4 28 ADDP4 ADDP4 CNSTI4 4 ADDP4 INDIRF4 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 76 ADDRFP4 0 INDIRP4 CNSTI4 76 ADDP4 ASGNP4 ADDRLP4 76 INDIRP4 ADDRLP4 76 INDIRP4 INDIRF4 CNSTI4 12 ADDRLP4 0 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 CNSTI4 28 ADDP4 ADDP4 CNSTI4 8 ADDP4 INDIRF4 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 line 287 ;287: } LABELV $166 line 285 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $165 line 290 ;288: ;289: // cast away const because of compiler problems ;290: MatrixMultiply( lerped.axis, ((refEntity_t*)parent)->axis, entity->axis ); ADDRLP4 4+12 ARGP4 ADDRLP4 60 CNSTI4 28 ASGNI4 ADDRFP4 4 INDIRP4 ADDRLP4 60 INDIRI4 ADDP ARGP4 ADDRFP4 0 INDIRP4 ADDRLP4 60 INDIRI4 ADDP4 ARGP4 ADDRGP4 MatrixMultiply CALLV pop line 291 ;291: entity->backlerp = parent->backlerp; ADDRLP4 64 CNSTI4 100 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 ADDRFP4 4 INDIRP4 ADDRLP4 64 INDIRI4 ADDP4 INDIRF4 ASGNF4 line 292 ;292:} LABELV $164 endproc UI_PositionEntityOnTag 84 24 proc UI_PositionRotatedEntityOnTag 120 24 line 301 ;293: ;294: ;295:/* ;296:====================== ;297:UI_PositionRotatedEntityOnTag ;298:====================== ;299:*/ ;300:static void UI_PositionRotatedEntityOnTag( refEntity_t *entity, const refEntity_t *parent, ;301: clipHandle_t parentModel, char *tagName ) { line 307 ;302: int i; ;303: orientation_t lerped; ;304: vec3_t tempAxis[3]; ;305: ;306: // lerp the tag ;307: trap_CM_LerpTag( &lerped, parentModel, parent->oldframe, parent->frame, ADDRLP4 4 ARGP4 ADDRFP4 8 INDIRI4 ARGI4 ADDRLP4 88 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 88 INDIRP4 CNSTI4 96 ADDP4 INDIRI4 ARGI4 ADDRLP4 88 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 ARGI4 CNSTF4 1065353216 ADDRLP4 88 INDIRP4 CNSTI4 100 ADDP4 INDIRF4 SUBF4 ARGF4 ADDRFP4 12 INDIRP4 ARGP4 ADDRGP4 trap_CM_LerpTag CALLI4 pop line 311 ;308: 1.0 - parent->backlerp, tagName ); ;309: ;310: // FIXME: allow origin offsets along tag? ;311: VectorCopy( parent->origin, entity->origin ); ADDRLP4 92 CNSTI4 68 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 92 INDIRI4 ADDP4 ADDRFP4 4 INDIRP4 ADDRLP4 92 INDIRI4 ADDP4 INDIRB ASGNB 12 line 312 ;312: for ( i = 0 ; i < 3 ; i++ ) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $171 line 313 ;313: VectorMA( entity->origin, lerped.origin[i], parent->axis[i], entity->origin ); ADDRLP4 96 ADDRFP4 0 INDIRP4 CNSTI4 68 ADDP4 ASGNP4 ADDRLP4 96 INDIRP4 ADDRLP4 96 INDIRP4 INDIRF4 CNSTI4 12 ADDRLP4 0 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 CNSTI4 28 ADDP4 ADDP4 INDIRF4 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 104 ADDRFP4 0 INDIRP4 CNSTI4 72 ADDP4 ASGNP4 ADDRLP4 104 INDIRP4 ADDRLP4 104 INDIRP4 INDIRF4 CNSTI4 12 ADDRLP4 0 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 CNSTI4 28 ADDP4 ADDP4 CNSTI4 4 ADDP4 INDIRF4 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 112 ADDRFP4 0 INDIRP4 CNSTI4 76 ADDP4 ASGNP4 ADDRLP4 112 INDIRP4 ADDRLP4 112 INDIRP4 INDIRF4 CNSTI4 12 ADDRLP4 0 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 CNSTI4 28 ADDP4 ADDP4 CNSTI4 8 ADDP4 INDIRF4 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 line 314 ;314: } LABELV $172 line 312 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $171 line 317 ;315: ;316: // cast away const because of compiler problems ;317: MatrixMultiply( entity->axis, ((refEntity_t *)parent)->axis, tempAxis ); ADDRLP4 96 CNSTI4 28 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 96 INDIRI4 ADDP4 ARGP4 ADDRFP4 4 INDIRP4 ADDRLP4 96 INDIRI4 ADDP ARGP4 ADDRLP4 52 ARGP4 ADDRGP4 MatrixMultiply CALLV pop line 318 ;318: MatrixMultiply( lerped.axis, tempAxis, entity->axis ); ADDRLP4 4+12 ARGP4 ADDRLP4 52 ARGP4 ADDRFP4 0 INDIRP4 CNSTI4 28 ADDP4 ARGP4 ADDRGP4 MatrixMultiply CALLV pop line 319 ;319:} LABELV $170 endproc UI_PositionRotatedEntityOnTag 120 24 proc UI_SetLerpFrameAnimation 12 8 line 327 ;320: ;321: ;322:/* ;323:=============== ;324:UI_SetLerpFrameAnimation ;325:=============== ;326:*/ ;327:static void UI_SetLerpFrameAnimation( playerInfo_t *ci, lerpFrame_t *lf, int newAnimation ) { line 330 ;328: animation_t *anim; ;329: ;330: lf->animationNumber = newAnimation; ADDRFP4 4 INDIRP4 CNSTI4 36 ADDP4 ADDRFP4 8 INDIRI4 ASGNI4 line 331 ;331: newAnimation &= ~ANIM_TOGGLEBIT; ADDRFP4 8 ADDRFP4 8 INDIRI4 CNSTI4 -129 BANDI4 ASGNI4 line 333 ;332: ;333: if ( newAnimation < 0 || newAnimation >= MAX_ANIMATIONS ) { ADDRLP4 4 ADDRFP4 8 INDIRI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 0 LTI4 $179 ADDRLP4 4 INDIRI4 CNSTI4 31 LTI4 $177 LABELV $179 line 334 ;334: trap_Error( va("Bad animation number: %i", newAnimation) ); ADDRGP4 $180 ARGP4 ADDRFP4 8 INDIRI4 ARGI4 ADDRLP4 8 ADDRGP4 va CALLP4 ASGNP4 ADDRLP4 8 INDIRP4 ARGP4 ADDRGP4 trap_Error CALLV pop line 335 ;335: } LABELV $177 line 337 ;336: ;337: anim = &ci->animations[ newAnimation ]; ADDRLP4 0 CNSTI4 28 ADDRFP4 8 INDIRI4 MULI4 ADDRFP4 0 INDIRP4 CNSTI4 120 ADDP4 ADDP4 ASGNP4 line 339 ;338: ;339: lf->animation = anim; ADDRFP4 4 INDIRP4 CNSTI4 40 ADDP4 ADDRLP4 0 INDIRP4 ASGNP4 line 340 ;340: lf->animationTime = lf->frameTime + anim->initialLerp; ADDRLP4 8 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 8 INDIRP4 CNSTI4 44 ADDP4 ADDRLP4 8 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 ADDRLP4 0 INDIRP4 CNSTI4 16 ADDP4 INDIRI4 ADDI4 ASGNI4 line 341 ;341:} LABELV $176 endproc UI_SetLerpFrameAnimation 12 8 proc UI_RunLerpFrame 32 12 line 349 ;342: ;343: ;344:/* ;345:=============== ;346:UI_RunLerpFrame ;347:=============== ;348:*/ ;349:static void UI_RunLerpFrame( playerInfo_t *ci, lerpFrame_t *lf, int newAnimation ) { line 354 ;350: int f; ;351: animation_t *anim; ;352: ;353: // see if the animation sequence is switching ;354: if ( newAnimation != lf->animationNumber || !lf->animation ) { ADDRLP4 8 ADDRFP4 4 INDIRP4 ASGNP4 ADDRFP4 8 INDIRI4 ADDRLP4 8 INDIRP4 CNSTI4 36 ADDP4 INDIRI4 NEI4 $184 ADDRLP4 8 INDIRP4 CNSTI4 40 ADDP4 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $182 LABELV $184 line 355 ;355: UI_SetLerpFrameAnimation( ci, lf, newAnimation ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 8 INDIRI4 ARGI4 ADDRGP4 UI_SetLerpFrameAnimation CALLV pop line 356 ;356: } LABELV $182 line 360 ;357: ;358: // if we have passed the current frame, move it to ;359: // oldFrame and calculate a new frame ;360: if ( dp_realtime >= lf->frameTime ) { ADDRGP4 dp_realtime INDIRI4 ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 LTI4 $185 line 361 ;361: lf->oldFrame = lf->frame; ADDRLP4 12 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 12 INDIRP4 ADDRLP4 12 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 ASGNI4 line 362 ;362: lf->oldFrameTime = lf->frameTime; ADDRLP4 16 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 16 INDIRP4 CNSTI4 4 ADDP4 ADDRLP4 16 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 ASGNI4 line 365 ;363: ;364: // get the next frame based on the animation ;365: anim = lf->animation; ADDRLP4 0 ADDRFP4 4 INDIRP4 CNSTI4 40 ADDP4 INDIRP4 ASGNP4 line 366 ;366: if ( dp_realtime < lf->animationTime ) { ADDRGP4 dp_realtime INDIRI4 ADDRFP4 4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 GEI4 $187 line 367 ;367: lf->frameTime = lf->animationTime; // initial lerp ADDRLP4 20 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 20 INDIRP4 CNSTI4 12 ADDP4 ADDRLP4 20 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 ASGNI4 line 368 ;368: } else { ADDRGP4 $188 JUMPV LABELV $187 line 369 ;369: lf->frameTime = lf->oldFrameTime + anim->frameLerp; ADDRLP4 20 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 24 CNSTI4 12 ASGNI4 ADDRLP4 20 INDIRP4 ADDRLP4 24 INDIRI4 ADDP4 ADDRLP4 20 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ADDRLP4 0 INDIRP4 ADDRLP4 24 INDIRI4 ADDP4 INDIRI4 ADDI4 ASGNI4 line 370 ;370: } LABELV $188 line 371 ;371: f = ( lf->frameTime - lf->animationTime ) / anim->frameLerp; ADDRLP4 20 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 24 CNSTI4 12 ASGNI4 ADDRLP4 4 ADDRLP4 20 INDIRP4 ADDRLP4 24 INDIRI4 ADDP4 INDIRI4 ADDRLP4 20 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 SUBI4 ADDRLP4 0 INDIRP4 ADDRLP4 24 INDIRI4 ADDP4 INDIRI4 DIVI4 ASGNI4 line 372 ;372: if ( f >= anim->numFrames ) { ADDRLP4 4 INDIRI4 ADDRLP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 LTI4 $189 line 373 ;373: f -= anim->numFrames; ADDRLP4 4 ADDRLP4 4 INDIRI4 ADDRLP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 SUBI4 ASGNI4 line 374 ;374: if ( anim->loopFrames ) { ADDRLP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 CNSTI4 0 EQI4 $191 line 375 ;375: f %= anim->loopFrames; ADDRLP4 4 ADDRLP4 4 INDIRI4 ADDRLP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 MODI4 ASGNI4 line 376 ;376: f += anim->numFrames - anim->loopFrames; ADDRLP4 4 ADDRLP4 4 INDIRI4 ADDRLP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ADDRLP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 SUBI4 ADDI4 ASGNI4 line 377 ;377: } else { ADDRGP4 $192 JUMPV LABELV $191 line 378 ;378: f = anim->numFrames - 1; ADDRLP4 4 ADDRLP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 1 SUBI4 ASGNI4 line 381 ;379: // the animation is stuck at the end, so it ;380: // can immediately transition to another sequence ;381: lf->frameTime = dp_realtime; ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 ADDRGP4 dp_realtime INDIRI4 ASGNI4 line 382 ;382: } LABELV $192 line 383 ;383: } LABELV $189 line 384 ;384: lf->frame = anim->firstFrame + f; ADDRFP4 4 INDIRP4 CNSTI4 8 ADDP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRLP4 4 INDIRI4 ADDI4 ASGNI4 line 385 ;385: if ( dp_realtime > lf->frameTime ) { ADDRGP4 dp_realtime INDIRI4 ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 LEI4 $193 line 386 ;386: lf->frameTime = dp_realtime; ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 ADDRGP4 dp_realtime INDIRI4 ASGNI4 line 387 ;387: } LABELV $193 line 388 ;388: } LABELV $185 line 390 ;389: ;390: if ( lf->frameTime > dp_realtime + 200 ) { ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 ADDRGP4 dp_realtime INDIRI4 CNSTI4 200 ADDI4 LEI4 $195 line 391 ;391: lf->frameTime = dp_realtime; ADDRFP4 4 INDIRP4 CNSTI4 12 ADDP4 ADDRGP4 dp_realtime INDIRI4 ASGNI4 line 392 ;392: } LABELV $195 line 394 ;393: ;394: if ( lf->oldFrameTime > dp_realtime ) { ADDRFP4 4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ADDRGP4 dp_realtime INDIRI4 LEI4 $197 line 395 ;395: lf->oldFrameTime = dp_realtime; ADDRFP4 4 INDIRP4 CNSTI4 4 ADDP4 ADDRGP4 dp_realtime INDIRI4 ASGNI4 line 396 ;396: } LABELV $197 line 398 ;397: // calculate current lerp value ;398: if ( lf->frameTime == lf->oldFrameTime ) { ADDRLP4 12 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 12 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 ADDRLP4 12 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 NEI4 $199 line 399 ;399: lf->backlerp = 0; ADDRFP4 4 INDIRP4 CNSTI4 16 ADDP4 CNSTF4 0 ASGNF4 line 400 ;400: } else { ADDRGP4 $200 JUMPV LABELV $199 line 401 ;401: lf->backlerp = 1.0 - (float)( dp_realtime - lf->oldFrameTime ) / ( lf->frameTime - lf->oldFrameTime ); ADDRLP4 16 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 20 ADDRLP4 16 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ASGNI4 ADDRLP4 16 INDIRP4 CNSTI4 16 ADDP4 CNSTF4 1065353216 ADDRGP4 dp_realtime INDIRI4 ADDRLP4 20 INDIRI4 SUBI4 CVIF4 4 ADDRLP4 16 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 ADDRLP4 20 INDIRI4 SUBI4 CVIF4 4 DIVF4 SUBF4 ASGNF4 line 402 ;402: } LABELV $200 line 403 ;403:} LABELV $181 endproc UI_RunLerpFrame 32 12 proc UI_PlayerAnimation 16 12 line 412 ;404: ;405: ;406:/* ;407:=============== ;408:UI_PlayerAnimation ;409:=============== ;410:*/ ;411:static void UI_PlayerAnimation( playerInfo_t *pi, int *legsOld, int *legs, float *legsBackLerp, ;412: int *torsoOld, int *torso, float *torsoBackLerp ) { line 415 ;413: ;414: // legs animation ;415: pi->legsAnimationTimer -= uiInfo.uiDC.frameTime; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 1248 ADDP4 ASGNP4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRGP4 uiInfo+212 INDIRI4 SUBI4 ASGNI4 line 416 ;416: if ( pi->legsAnimationTimer < 0 ) { ADDRFP4 0 INDIRP4 CNSTI4 1248 ADDP4 INDIRI4 CNSTI4 0 GEI4 $203 line 417 ;417: pi->legsAnimationTimer = 0; ADDRFP4 0 INDIRP4 CNSTI4 1248 ADDP4 CNSTI4 0 ASGNI4 line 418 ;418: } LABELV $203 line 420 ;419: ;420: UI_LegsSequencing( pi ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 UI_LegsSequencing CALLV pop line 422 ;421: ;422: if ( pi->legs.yawing && ( pi->legsAnim & ~ANIM_TOGGLEBIT ) == LEGS_IDLE ) { ADDRLP4 4 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 4 INDIRP4 CNSTI4 32 ADDP4 INDIRI4 CNSTI4 0 EQI4 $205 ADDRLP4 4 INDIRP4 CNSTI4 1212 ADDP4 INDIRI4 CNSTI4 -129 BANDI4 CNSTI4 22 NEI4 $205 line 423 ;423: UI_RunLerpFrame( pi, &pi->legs, LEGS_TURN ); ADDRLP4 8 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 8 INDIRP4 ARGP4 ADDRLP4 8 INDIRP4 CNSTI4 8 ADDP4 ARGP4 CNSTI4 24 ARGI4 ADDRGP4 UI_RunLerpFrame CALLV pop line 424 ;424: } else { ADDRGP4 $206 JUMPV LABELV $205 line 425 ;425: UI_RunLerpFrame( pi, &pi->legs, pi->legsAnim ); ADDRLP4 8 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 8 INDIRP4 ARGP4 ADDRLP4 8 INDIRP4 CNSTI4 8 ADDP4 ARGP4 ADDRLP4 8 INDIRP4 CNSTI4 1212 ADDP4 INDIRI4 ARGI4 ADDRGP4 UI_RunLerpFrame CALLV pop line 426 ;426: } LABELV $206 line 427 ;427: *legsOld = pi->legs.oldFrame; ADDRFP4 4 INDIRP4 ADDRFP4 0 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 ASGNI4 line 428 ;428: *legs = pi->legs.frame; ADDRFP4 8 INDIRP4 ADDRFP4 0 INDIRP4 CNSTI4 16 ADDP4 INDIRI4 ASGNI4 line 429 ;429: *legsBackLerp = pi->legs.backlerp; ADDRFP4 12 INDIRP4 ADDRFP4 0 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 ASGNF4 line 432 ;430: ;431: // torso animation ;432: pi->torsoAnimationTimer -= uiInfo.uiDC.frameTime; ADDRLP4 8 ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRI4 ADDRGP4 uiInfo+212 INDIRI4 SUBI4 ASGNI4 line 433 ;433: if ( pi->torsoAnimationTimer < 0 ) { ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 INDIRI4 CNSTI4 0 GEI4 $208 line 434 ;434: pi->torsoAnimationTimer = 0; ADDRFP4 0 INDIRP4 CNSTI4 1240 ADDP4 CNSTI4 0 ASGNI4 line 435 ;435: } LABELV $208 line 437 ;436: ;437: UI_TorsoSequencing( pi ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 UI_TorsoSequencing CALLV pop line 439 ;438: ;439: UI_RunLerpFrame( pi, &pi->torso, pi->torsoAnim ); ADDRLP4 12 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 12 INDIRP4 ARGP4 ADDRLP4 12 INDIRP4 CNSTI4 64 ADDP4 ARGP4 ADDRLP4 12 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 ARGI4 ADDRGP4 UI_RunLerpFrame CALLV pop line 440 ;440: *torsoOld = pi->torso.oldFrame; ADDRFP4 16 INDIRP4 ADDRFP4 0 INDIRP4 CNSTI4 64 ADDP4 INDIRI4 ASGNI4 line 441 ;441: *torso = pi->torso.frame; ADDRFP4 20 INDIRP4 ADDRFP4 0 INDIRP4 CNSTI4 72 ADDP4 INDIRI4 ASGNI4 line 442 ;442: *torsoBackLerp = pi->torso.backlerp; ADDRFP4 24 INDIRP4 ADDRFP4 0 INDIRP4 CNSTI4 80 ADDP4 INDIRF4 ASGNF4 line 443 ;443:} LABELV $201 endproc UI_PlayerAnimation 16 12 proc UI_SwingAngles 28 8 line 452 ;444: ;445: ;446:/* ;447:================== ;448:UI_SwingAngles ;449:================== ;450:*/ ;451:static void UI_SwingAngles( float destination, float swingTolerance, float clampTolerance, ;452: float speed, float *angle, qboolean *swinging ) { line 457 ;453: float swing; ;454: float move; ;455: float scale; ;456: ;457: if ( !*swinging ) { ADDRFP4 20 INDIRP4 INDIRI4 CNSTI4 0 NEI4 $211 line 459 ;458: // see if a swing should be started ;459: swing = AngleSubtract( *angle, destination ); ADDRFP4 16 INDIRP4 INDIRF4 ARGF4 ADDRFP4 0 INDIRF4 ARGF4 ADDRLP4 12 ADDRGP4 AngleSubtract CALLF4 ASGNF4 ADDRLP4 0 ADDRLP4 12 INDIRF4 ASGNF4 line 460 ;460: if ( swing > swingTolerance || swing < -swingTolerance ) { ADDRLP4 20 ADDRFP4 4 INDIRF4 ASGNF4 ADDRLP4 0 INDIRF4 ADDRLP4 20 INDIRF4 GTF4 $215 ADDRLP4 0 INDIRF4 ADDRLP4 20 INDIRF4 NEGF4 GEF4 $213 LABELV $215 line 461 ;461: *swinging = qtrue; ADDRFP4 20 INDIRP4 CNSTI4 1 ASGNI4 line 462 ;462: } LABELV $213 line 463 ;463: } LABELV $211 line 465 ;464: ;465: if ( !*swinging ) { ADDRFP4 20 INDIRP4 INDIRI4 CNSTI4 0 NEI4 $216 line 466 ;466: return; ADDRGP4 $210 JUMPV LABELV $216 line 471 ;467: } ;468: ;469: // modify the speed depending on the delta ;470: // so it doesn't seem so linear ;471: swing = AngleSubtract( destination, *angle ); ADDRFP4 0 INDIRF4 ARGF4 ADDRFP4 16 INDIRP4 INDIRF4 ARGF4 ADDRLP4 12 ADDRGP4 AngleSubtract CALLF4 ASGNF4 ADDRLP4 0 ADDRLP4 12 INDIRF4 ASGNF4 line 472 ;472: scale = fabs( swing ); ADDRLP4 0 INDIRF4 ARGF4 ADDRLP4 16 ADDRGP4 fabs CALLF4 ASGNF4 ADDRLP4 4 ADDRLP4 16 INDIRF4 ASGNF4 line 473 ;473: if ( scale < swingTolerance * 0.5 ) { ADDRLP4 4 INDIRF4 CNSTF4 1056964608 ADDRFP4 4 INDIRF4 MULF4 GEF4 $218 line 474 ;474: scale = 0.5; ADDRLP4 4 CNSTF4 1056964608 ASGNF4 line 475 ;475: } else if ( scale < swingTolerance ) { ADDRGP4 $219 JUMPV LABELV $218 ADDRLP4 4 INDIRF4 ADDRFP4 4 INDIRF4 GEF4 $220 line 476 ;476: scale = 1.0; ADDRLP4 4 CNSTF4 1065353216 ASGNF4 line 477 ;477: } else { ADDRGP4 $221 JUMPV LABELV $220 line 478 ;478: scale = 2.0; ADDRLP4 4 CNSTF4 1073741824 ASGNF4 line 479 ;479: } LABELV $221 LABELV $219 line 482 ;480: ;481: // swing towards the destination angle ;482: if ( swing >= 0 ) { ADDRLP4 0 INDIRF4 CNSTF4 0 LTF4 $222 line 483 ;483: move = uiInfo.uiDC.frameTime * scale * speed; ADDRLP4 8 ADDRGP4 uiInfo+212 INDIRI4 CVIF4 4 ADDRLP4 4 INDIRF4 MULF4 ADDRFP4 12 INDIRF4 MULF4 ASGNF4 line 484 ;484: if ( move >= swing ) { ADDRLP4 8 INDIRF4 ADDRLP4 0 INDIRF4 LTF4 $225 line 485 ;485: move = swing; ADDRLP4 8 ADDRLP4 0 INDIRF4 ASGNF4 line 486 ;486: *swinging = qfalse; ADDRFP4 20 INDIRP4 CNSTI4 0 ASGNI4 line 487 ;487: } LABELV $225 line 488 ;488: *angle = AngleMod( *angle + move ); ADDRLP4 20 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 20 INDIRP4 INDIRF4 ADDRLP4 8 INDIRF4 ADDF4 ARGF4 ADDRLP4 24 ADDRGP4 AngleMod CALLF4 ASGNF4 ADDRLP4 20 INDIRP4 ADDRLP4 24 INDIRF4 ASGNF4 line 489 ;489: } else if ( swing < 0 ) { ADDRGP4 $223 JUMPV LABELV $222 ADDRLP4 0 INDIRF4 CNSTF4 0 GEF4 $227 line 490 ;490: move = uiInfo.uiDC.frameTime * scale * -speed; ADDRLP4 8 ADDRGP4 uiInfo+212 INDIRI4 CVIF4 4 ADDRLP4 4 INDIRF4 MULF4 ADDRFP4 12 INDIRF4 NEGF4 MULF4 ASGNF4 line 491 ;491: if ( move <= swing ) { ADDRLP4 8 INDIRF4 ADDRLP4 0 INDIRF4 GTF4 $230 line 492 ;492: move = swing; ADDRLP4 8 ADDRLP4 0 INDIRF4 ASGNF4 line 493 ;493: *swinging = qfalse; ADDRFP4 20 INDIRP4 CNSTI4 0 ASGNI4 line 494 ;494: } LABELV $230 line 495 ;495: *angle = AngleMod( *angle + move ); ADDRLP4 20 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 20 INDIRP4 INDIRF4 ADDRLP4 8 INDIRF4 ADDF4 ARGF4 ADDRLP4 24 ADDRGP4 AngleMod CALLF4 ASGNF4 ADDRLP4 20 INDIRP4 ADDRLP4 24 INDIRF4 ASGNF4 line 496 ;496: } LABELV $227 LABELV $223 line 499 ;497: ;498: // clamp to no more than tolerance ;499: swing = AngleSubtract( destination, *angle ); ADDRFP4 0 INDIRF4 ARGF4 ADDRFP4 16 INDIRP4 INDIRF4 ARGF4 ADDRLP4 20 ADDRGP4 AngleSubtract CALLF4 ASGNF4 ADDRLP4 0 ADDRLP4 20 INDIRF4 ASGNF4 line 500 ;500: if ( swing > clampTolerance ) { ADDRLP4 0 INDIRF4 ADDRFP4 8 INDIRF4 LEF4 $232 line 501 ;501: *angle = AngleMod( destination - (clampTolerance - 1) ); ADDRFP4 0 INDIRF4 ADDRFP4 8 INDIRF4 CNSTF4 1065353216 SUBF4 SUBF4 ARGF4 ADDRLP4 24 ADDRGP4 AngleMod CALLF4 ASGNF4 ADDRFP4 16 INDIRP4 ADDRLP4 24 INDIRF4 ASGNF4 line 502 ;502: } else if ( swing < -clampTolerance ) { ADDRGP4 $233 JUMPV LABELV $232 ADDRLP4 0 INDIRF4 ADDRFP4 8 INDIRF4 NEGF4 GEF4 $234 line 503 ;503: *angle = AngleMod( destination + (clampTolerance - 1) ); ADDRFP4 0 INDIRF4 ADDRFP4 8 INDIRF4 CNSTF4 1065353216 SUBF4 ADDF4 ARGF4 ADDRLP4 24 ADDRGP4 AngleMod CALLF4 ASGNF4 ADDRFP4 16 INDIRP4 ADDRLP4 24 INDIRF4 ASGNF4 line 504 ;504: } LABELV $234 LABELV $233 line 505 ;505:} LABELV $210 endproc UI_SwingAngles 28 8 proc UI_MovedirAdjustment 72 16 line 513 ;506: ;507: ;508:/* ;509:====================== ;510:UI_MovedirAdjustment ;511:====================== ;512:*/ ;513:static float UI_MovedirAdjustment( playerInfo_t *pi ) { line 517 ;514: vec3_t relativeAngles; ;515: vec3_t moveVector; ;516: ;517: VectorSubtract( pi->viewAngles, pi->moveAngles, relativeAngles ); ADDRLP4 24 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 12 ADDRLP4 24 INDIRP4 CNSTI4 1184 ADDP4 INDIRF4 ADDRLP4 24 INDIRP4 CNSTI4 1196 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 12+4 ADDRLP4 24 INDIRP4 CNSTI4 1188 ADDP4 INDIRF4 ADDRLP4 24 INDIRP4 CNSTI4 1200 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 28 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 12+8 ADDRLP4 28 INDIRP4 CNSTI4 1192 ADDP4 INDIRF4 ADDRLP4 28 INDIRP4 CNSTI4 1204 ADDP4 INDIRF4 SUBF4 ASGNF4 line 518 ;518: AngleVectors( relativeAngles, moveVector, NULL, NULL ); ADDRLP4 12 ARGP4 ADDRLP4 0 ARGP4 ADDRLP4 32 CNSTP4 0 ASGNP4 ADDRLP4 32 INDIRP4 ARGP4 ADDRLP4 32 INDIRP4 ARGP4 ADDRGP4 AngleVectors CALLV pop line 519 ;519: if ( Q_fabs( moveVector[0] ) < 0.01 ) { ADDRLP4 0 INDIRF4 ARGF4 ADDRLP4 36 ADDRGP4 Q_fabs CALLF4 ASGNF4 ADDRLP4 36 INDIRF4 CNSTF4 1008981770 GEF4 $239 line 520 ;520: moveVector[0] = 0.0; ADDRLP4 0 CNSTF4 0 ASGNF4 line 521 ;521: } LABELV $239 line 522 ;522: if ( Q_fabs( moveVector[1] ) < 0.01 ) { ADDRLP4 0+4 INDIRF4 ARGF4 ADDRLP4 40 ADDRGP4 Q_fabs CALLF4 ASGNF4 ADDRLP4 40 INDIRF4 CNSTF4 1008981770 GEF4 $241 line 523 ;523: moveVector[1] = 0.0; ADDRLP4 0+4 CNSTF4 0 ASGNF4 line 524 ;524: } LABELV $241 line 526 ;525: ;526: if ( moveVector[1] == 0 && moveVector[0] > 0 ) { ADDRLP4 44 CNSTF4 0 ASGNF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 44 INDIRF4 NEF4 $245 ADDRLP4 0 INDIRF4 ADDRLP4 44 INDIRF4 LEF4 $245 line 527 ;527: return 0; CNSTF4 0 RETF4 ADDRGP4 $236 JUMPV LABELV $245 line 529 ;528: } ;529: if ( moveVector[1] < 0 && moveVector[0] > 0 ) { ADDRLP4 48 CNSTF4 0 ASGNF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 48 INDIRF4 GEF4 $248 ADDRLP4 0 INDIRF4 ADDRLP4 48 INDIRF4 LEF4 $248 line 530 ;530: return 22; CNSTF4 1102053376 RETF4 ADDRGP4 $236 JUMPV LABELV $248 line 532 ;531: } ;532: if ( moveVector[1] < 0 && moveVector[0] == 0 ) { ADDRLP4 52 CNSTF4 0 ASGNF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 52 INDIRF4 GEF4 $251 ADDRLP4 0 INDIRF4 ADDRLP4 52 INDIRF4 NEF4 $251 line 533 ;533: return 45; CNSTF4 1110704128 RETF4 ADDRGP4 $236 JUMPV LABELV $251 line 535 ;534: } ;535: if ( moveVector[1] < 0 && moveVector[0] < 0 ) { ADDRLP4 56 CNSTF4 0 ASGNF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 56 INDIRF4 GEF4 $254 ADDRLP4 0 INDIRF4 ADDRLP4 56 INDIRF4 GEF4 $254 line 536 ;536: return -22; CNSTF4 3249537024 RETF4 ADDRGP4 $236 JUMPV LABELV $254 line 538 ;537: } ;538: if ( moveVector[1] == 0 && moveVector[0] < 0 ) { ADDRLP4 60 CNSTF4 0 ASGNF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 60 INDIRF4 NEF4 $257 ADDRLP4 0 INDIRF4 ADDRLP4 60 INDIRF4 GEF4 $257 line 539 ;539: return 0; CNSTF4 0 RETF4 ADDRGP4 $236 JUMPV LABELV $257 line 541 ;540: } ;541: if ( moveVector[1] > 0 && moveVector[0] < 0 ) { ADDRLP4 64 CNSTF4 0 ASGNF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 64 INDIRF4 LEF4 $260 ADDRLP4 0 INDIRF4 ADDRLP4 64 INDIRF4 GEF4 $260 line 542 ;542: return 22; CNSTF4 1102053376 RETF4 ADDRGP4 $236 JUMPV LABELV $260 line 544 ;543: } ;544: if ( moveVector[1] > 0 && moveVector[0] == 0 ) { ADDRLP4 68 CNSTF4 0 ASGNF4 ADDRLP4 0+4 INDIRF4 ADDRLP4 68 INDIRF4 LEF4 $263 ADDRLP4 0 INDIRF4 ADDRLP4 68 INDIRF4 NEF4 $263 line 545 ;545: return -45; CNSTF4 3258187776 RETF4 ADDRGP4 $236 JUMPV LABELV $263 line 548 ;546: } ;547: ;548: return -22; CNSTF4 3249537024 RETF4 LABELV $236 endproc UI_MovedirAdjustment 72 16 proc UI_PlayerAngles 80 24 line 557 ;549:} ;550: ;551: ;552:/* ;553:=============== ;554:UI_PlayerAngles ;555:=============== ;556:*/ ;557:static void UI_PlayerAngles( playerInfo_t *pi, vec3_t legs[3], vec3_t torso[3], vec3_t head[3] ) { line 562 ;558: vec3_t legsAngles, torsoAngles, headAngles; ;559: float dest; ;560: float adjust; ;561: ;562: VectorCopy( pi->viewAngles, headAngles ); ADDRLP4 12 ADDRFP4 0 INDIRP4 CNSTI4 1184 ADDP4 INDIRB ASGNB 12 line 563 ;563: headAngles[YAW] = AngleMod( headAngles[YAW] ); ADDRLP4 12+4 INDIRF4 ARGF4 ADDRLP4 44 ADDRGP4 AngleMod CALLF4 ASGNF4 ADDRLP4 12+4 ADDRLP4 44 INDIRF4 ASGNF4 line 564 ;564: VectorClear( legsAngles ); ADDRLP4 48 CNSTF4 0 ASGNF4 ADDRLP4 24+8 ADDRLP4 48 INDIRF4 ASGNF4 ADDRLP4 24+4 ADDRLP4 48 INDIRF4 ASGNF4 ADDRLP4 24 ADDRLP4 48 INDIRF4 ASGNF4 line 565 ;565: VectorClear( torsoAngles ); ADDRLP4 52 CNSTF4 0 ASGNF4 ADDRLP4 0+8 ADDRLP4 52 INDIRF4 ASGNF4 ADDRLP4 0+4 ADDRLP4 52 INDIRF4 ASGNF4 ADDRLP4 0 ADDRLP4 52 INDIRF4 ASGNF4 line 570 ;566: ;567: // --------- yaw ------------- ;568: ;569: // allow yaw to drift a bit ;570: if ( ( pi->legsAnim & ~ANIM_TOGGLEBIT ) != LEGS_IDLE ADDRLP4 56 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 60 CNSTI4 -129 ASGNI4 ADDRLP4 56 INDIRP4 CNSTI4 1212 ADDP4 INDIRI4 ADDRLP4 60 INDIRI4 BANDI4 CNSTI4 22 NEI4 $275 ADDRLP4 56 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 ADDRLP4 60 INDIRI4 BANDI4 CNSTI4 11 EQI4 $273 LABELV $275 line 571 ;571: || ( pi->torsoAnim & ~ANIM_TOGGLEBIT ) != TORSO_STAND ) { line 573 ;572: // if not standing still, always point all in the same direction ;573: pi->torso.yawing = qtrue; // always center ADDRFP4 0 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 1 ASGNI4 line 574 ;574: pi->torso.pitching = qtrue; // always center ADDRFP4 0 INDIRP4 CNSTI4 96 ADDP4 CNSTI4 1 ASGNI4 line 575 ;575: pi->legs.yawing = qtrue; // always center ADDRFP4 0 INDIRP4 CNSTI4 32 ADDP4 CNSTI4 1 ASGNI4 line 576 ;576: } LABELV $273 line 579 ;577: ;578: // adjust legs for movement dir ;579: adjust = UI_MovedirAdjustment( pi ); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 64 ADDRGP4 UI_MovedirAdjustment CALLF4 ASGNF4 ADDRLP4 36 ADDRLP4 64 INDIRF4 ASGNF4 line 580 ;580: legsAngles[YAW] = headAngles[YAW] + adjust; ADDRLP4 24+4 ADDRLP4 12+4 INDIRF4 ADDRLP4 36 INDIRF4 ADDF4 ASGNF4 line 581 ;581: torsoAngles[YAW] = headAngles[YAW] + 0.25 * adjust; ADDRLP4 0+4 ADDRLP4 12+4 INDIRF4 CNSTF4 1048576000 ADDRLP4 36 INDIRF4 MULF4 ADDF4 ASGNF4 line 585 ;582: ;583: ;584: // torso ;585: UI_SwingAngles( torsoAngles[YAW], 25, 90, SWINGSPEED, &pi->torso.yawAngle, &pi->torso.yawing ); ADDRLP4 0+4 INDIRF4 ARGF4 CNSTF4 1103626240 ARGF4 CNSTF4 1119092736 ARGF4 CNSTF4 1050253722 ARGF4 ADDRLP4 68 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 68 INDIRP4 CNSTI4 84 ADDP4 ARGP4 ADDRLP4 68 INDIRP4 CNSTI4 88 ADDP4 ARGP4 ADDRGP4 UI_SwingAngles CALLV pop line 586 ;586: UI_SwingAngles( legsAngles[YAW], 40, 90, SWINGSPEED, &pi->legs.yawAngle, &pi->legs.yawing ); ADDRLP4 24+4 INDIRF4 ARGF4 CNSTF4 1109393408 ARGF4 CNSTF4 1119092736 ARGF4 CNSTF4 1050253722 ARGF4 ADDRLP4 72 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 CNSTI4 28 ADDP4 ARGP4 ADDRLP4 72 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRGP4 UI_SwingAngles CALLV pop line 588 ;587: ;588: torsoAngles[YAW] = pi->torso.yawAngle; ADDRLP4 0+4 ADDRFP4 0 INDIRP4 CNSTI4 84 ADDP4 INDIRF4 ASGNF4 line 589 ;589: legsAngles[YAW] = pi->legs.yawAngle; ADDRLP4 24+4 ADDRFP4 0 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 ASGNF4 line 594 ;590: ;591: // --------- pitch ------------- ;592: ;593: // only show a fraction of the pitch angle in the torso ;594: if ( headAngles[PITCH] > 180 ) { ADDRLP4 12 INDIRF4 CNSTF4 1127481344 LEF4 $284 line 595 ;595: dest = (-360 + headAngles[PITCH]) * 0.75; ADDRLP4 40 CNSTF4 1061158912 ADDRLP4 12 INDIRF4 CNSTF4 3283353600 ADDF4 MULF4 ASGNF4 line 596 ;596: } else { ADDRGP4 $285 JUMPV LABELV $284 line 597 ;597: dest = headAngles[PITCH] * 0.75; ADDRLP4 40 CNSTF4 1061158912 ADDRLP4 12 INDIRF4 MULF4 ASGNF4 line 598 ;598: } LABELV $285 line 599 ;599: UI_SwingAngles( dest, 15, 30, 0.1f, &pi->torso.pitchAngle, &pi->torso.pitching ); ADDRLP4 40 INDIRF4 ARGF4 CNSTF4 1097859072 ARGF4 CNSTF4 1106247680 ARGF4 CNSTF4 1036831949 ARGF4 ADDRLP4 76 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 76 INDIRP4 CNSTI4 92 ADDP4 ARGP4 ADDRLP4 76 INDIRP4 CNSTI4 96 ADDP4 ARGP4 ADDRGP4 UI_SwingAngles CALLV pop line 600 ;600: torsoAngles[PITCH] = pi->torso.pitchAngle; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 92 ADDP4 INDIRF4 ASGNF4 line 603 ;601: ;602: // pull the angles back out of the hierarchial chain ;603: AnglesSubtract( headAngles, torsoAngles, headAngles ); ADDRLP4 12 ARGP4 ADDRLP4 0 ARGP4 ADDRLP4 12 ARGP4 ADDRGP4 AnglesSubtract CALLV pop line 604 ;604: AnglesSubtract( torsoAngles, legsAngles, torsoAngles ); ADDRLP4 0 ARGP4 ADDRLP4 24 ARGP4 ADDRLP4 0 ARGP4 ADDRGP4 AnglesSubtract CALLV pop line 605 ;605: AnglesToAxis( legsAngles, legs ); ADDRLP4 24 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRGP4 AnglesToAxis CALLV pop line 606 ;606: AnglesToAxis( torsoAngles, torso ); ADDRLP4 0 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 AnglesToAxis CALLV pop line 607 ;607: AnglesToAxis( headAngles, head ); ADDRLP4 12 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRGP4 AnglesToAxis CALLV pop line 608 ;608:} LABELV $266 endproc UI_PlayerAngles 80 24 proc UI_PlayerFloatSprite 140 12 line 616 ;609: ;610: ;611:/* ;612:=============== ;613:UI_PlayerFloatSprite ;614:=============== ;615:*/ ;616:static void UI_PlayerFloatSprite( playerInfo_t *pi, vec3_t origin, qhandle_t shader ) { line 619 ;617: refEntity_t ent; ;618: ;619: memset( &ent, 0, sizeof( ent ) ); ADDRLP4 0 ARGP4 CNSTI4 0 ARGI4 CNSTI4 140 ARGI4 ADDRGP4 memset CALLP4 pop line 620 ;620: VectorCopy( origin, ent.origin ); ADDRLP4 0+68 ADDRFP4 4 INDIRP4 INDIRB ASGNB 12 line 621 ;621: ent.origin[2] += 48; ADDRLP4 0+68+8 ADDRLP4 0+68+8 INDIRF4 CNSTF4 1111490560 ADDF4 ASGNF4 line 622 ;622: ent.reType = RT_SPRITE; ADDRLP4 0 CNSTI4 2 ASGNI4 line 623 ;623: ent.customShader = shader; ADDRLP4 0+112 ADDRFP4 8 INDIRI4 ASGNI4 line 624 ;624: ent.radius = 10; ADDRLP4 0+132 CNSTF4 1092616192 ASGNF4 line 625 ;625: ent.renderfx = 0; ADDRLP4 0+4 CNSTI4 0 ASGNI4 line 626 ;626: trap_R_AddRefEntityToScene( &ent ); ADDRLP4 0 ARGP4 ADDRGP4 trap_R_AddRefEntityToScene CALLV pop line 627 ;627:} LABELV $286 endproc UI_PlayerFloatSprite 140 12 export UI_MachinegunSpinAngle proc UI_MachinegunSpinAngle 28 4 line 635 ;628: ;629: ;630:/* ;631:====================== ;632:UI_MachinegunSpinAngle ;633:====================== ;634:*/ ;635:float UI_MachinegunSpinAngle( playerInfo_t *pi ) { line 641 ;636: int delta; ;637: float angle; ;638: float speed; ;639: int torsoAnim; ;640: ;641: delta = dp_realtime - pi->barrelTime; ADDRLP4 4 ADDRGP4 dp_realtime INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 1268 ADDP4 INDIRI4 SUBI4 ASGNI4 line 642 ;642: if ( pi->barrelSpinning ) { ADDRFP4 0 INDIRP4 CNSTI4 1260 ADDP4 INDIRI4 CNSTI4 0 EQI4 $294 line 643 ;643: angle = pi->barrelAngle + delta * SPIN_SPEED; ADDRLP4 8 ADDRFP4 0 INDIRP4 CNSTI4 1264 ADDP4 INDIRF4 CNSTF4 1063675494 ADDRLP4 4 INDIRI4 CVIF4 4 MULF4 ADDF4 ASGNF4 line 644 ;644: } else { ADDRGP4 $295 JUMPV LABELV $294 line 645 ;645: if ( delta > COAST_TIME ) { ADDRLP4 4 INDIRI4 CNSTI4 1000 LEI4 $296 line 646 ;646: delta = COAST_TIME; ADDRLP4 4 CNSTI4 1000 ASGNI4 line 647 ;647: } LABELV $296 line 649 ;648: ;649: speed = 0.5 * ( SPIN_SPEED + (float)( COAST_TIME - delta ) / COAST_TIME ); ADDRLP4 12 CNSTF4 1056964608 CNSTI4 1000 ADDRLP4 4 INDIRI4 SUBI4 CVIF4 4 CNSTF4 1148846080 DIVF4 CNSTF4 1063675494 ADDF4 MULF4 ASGNF4 line 650 ;650: angle = pi->barrelAngle + delta * speed; ADDRLP4 8 ADDRFP4 0 INDIRP4 CNSTI4 1264 ADDP4 INDIRF4 ADDRLP4 4 INDIRI4 CVIF4 4 ADDRLP4 12 INDIRF4 MULF4 ADDF4 ASGNF4 line 651 ;651: } LABELV $295 line 653 ;652: ;653: torsoAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 CNSTI4 -129 BANDI4 ASGNI4 line 654 ;654: if( torsoAnim == TORSO_ATTACK2 ) { ADDRLP4 0 INDIRI4 CNSTI4 8 NEI4 $298 line 655 ;655: torsoAnim = TORSO_ATTACK; ADDRLP4 0 CNSTI4 7 ASGNI4 line 656 ;656: } LABELV $298 line 657 ;657: if ( pi->barrelSpinning == !(torsoAnim == TORSO_ATTACK) ) { ADDRLP4 0 INDIRI4 CNSTI4 7 EQI4 $303 ADDRLP4 16 CNSTI4 1 ASGNI4 ADDRGP4 $304 JUMPV LABELV $303 ADDRLP4 16 CNSTI4 0 ASGNI4 LABELV $304 ADDRFP4 0 INDIRP4 CNSTI4 1260 ADDP4 INDIRI4 ADDRLP4 16 INDIRI4 NEI4 $300 line 658 ;658: pi->barrelTime = dp_realtime; ADDRFP4 0 INDIRP4 CNSTI4 1268 ADDP4 ADDRGP4 dp_realtime INDIRI4 ASGNI4 line 659 ;659: pi->barrelAngle = AngleMod( angle ); ADDRLP4 8 INDIRF4 ARGF4 ADDRLP4 20 ADDRGP4 AngleMod CALLF4 ASGNF4 ADDRFP4 0 INDIRP4 CNSTI4 1264 ADDP4 ADDRLP4 20 INDIRF4 ASGNF4 line 660 ;660: pi->barrelSpinning = !!(torsoAnim == TORSO_ATTACK); ADDRLP4 0 INDIRI4 CNSTI4 7 NEI4 $306 ADDRLP4 24 CNSTI4 1 ASGNI4 ADDRGP4 $307 JUMPV LABELV $306 ADDRLP4 24 CNSTI4 0 ASGNI4 LABELV $307 ADDRFP4 0 INDIRP4 CNSTI4 1260 ADDP4 ADDRLP4 24 INDIRI4 ASGNI4 line 661 ;661: } LABELV $300 line 663 ;662: ;663: return angle; ADDRLP4 8 INDIRF4 RETF4 LABELV $293 endproc UI_MachinegunSpinAngle 28 4 lit align 4 LABELV $309 byte 4 3246391296 byte 4 3246391296 byte 4 3250585600 align 4 LABELV $310 byte 4 1098907648 byte 4 1098907648 byte 4 1107296256 export UI_DrawPlayer code proc UI_DrawPlayer 1300 28 line 672 ;664:} ;665: ;666: ;667:/* ;668:=============== ;669:UI_DrawPlayer ;670:=============== ;671:*/ ;672:void UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int time ) { line 682 ;673: refdef_t refdef; ;674: refEntity_t legs; ;675: refEntity_t torso; ;676: refEntity_t head; ;677: refEntity_t gun; ;678: refEntity_t barrel; ;679: refEntity_t flash; ;680: vec3_t origin; ;681: int renderfx; ;682: vec3_t mins = {-16, -16, -24}; ADDRLP4 804 ADDRGP4 $309 INDIRB ASGNB 12 line 683 ;683: vec3_t maxs = {16, 16, 32}; ADDRLP4 816 ADDRGP4 $310 INDIRB ASGNB 12 line 687 ;684: float len; ;685: float xx; ;686: ;687: if ( !pi->legsModel || !pi->torsoModel || !pi->headModel || !pi->animations[0].numFrames ) { ADDRLP4 1256 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 1260 CNSTI4 0 ASGNI4 ADDRLP4 1256 INDIRP4 INDIRI4 ADDRLP4 1260 INDIRI4 EQI4 $315 ADDRLP4 1256 INDIRP4 CNSTI4 56 ADDP4 INDIRI4 ADDRLP4 1260 INDIRI4 EQI4 $315 ADDRLP4 1256 INDIRP4 CNSTI4 112 ADDP4 INDIRI4 ADDRLP4 1260 INDIRI4 EQI4 $315 ADDRLP4 1256 INDIRP4 CNSTI4 124 ADDP4 INDIRI4 ADDRLP4 1260 INDIRI4 NEI4 $311 LABELV $315 line 688 ;688: return; ADDRGP4 $308 JUMPV LABELV $311 line 692 ;689: } ;690: ;691: // this allows the ui to cache the player model on the main menu ;692: if (w == 0 || h == 0) { ADDRLP4 1264 CNSTF4 0 ASGNF4 ADDRFP4 8 INDIRF4 ADDRLP4 1264 INDIRF4 EQF4 $318 ADDRFP4 12 INDIRF4 ADDRLP4 1264 INDIRF4 NEF4 $316 LABELV $318 line 693 ;693: return; ADDRGP4 $308 JUMPV LABELV $316 line 696 ;694: } ;695: ;696: dp_realtime = time; ADDRGP4 dp_realtime ADDRFP4 20 INDIRI4 ASGNI4 line 698 ;697: ;698: if ( pi->pendingWeapon != -1 && dp_realtime > pi->weaponTimer ) { ADDRLP4 1268 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 1268 INDIRP4 CNSTI4 1228 ADDP4 INDIRI4 CNSTI4 -1 EQI4 $319 ADDRGP4 dp_realtime INDIRI4 ADDRLP4 1268 INDIRP4 CNSTI4 1232 ADDP4 INDIRI4 LEI4 $319 line 699 ;699: pi->weapon = pi->pendingWeapon; ADDRLP4 1272 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 1272 INDIRP4 CNSTI4 1220 ADDP4 ADDRLP4 1272 INDIRP4 CNSTI4 1228 ADDP4 INDIRI4 ASGNI4 line 700 ;700: pi->lastWeapon = pi->pendingWeapon; ADDRLP4 1276 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 1276 INDIRP4 CNSTI4 1224 ADDP4 ADDRLP4 1276 INDIRP4 CNSTI4 1228 ADDP4 INDIRI4 ASGNI4 line 701 ;701: pi->pendingWeapon = -1; ADDRFP4 16 INDIRP4 CNSTI4 1228 ADDP4 CNSTI4 -1 ASGNI4 line 702 ;702: pi->weaponTimer = 0; ADDRFP4 16 INDIRP4 CNSTI4 1232 ADDP4 CNSTI4 0 ASGNI4 line 703 ;703: if( pi->currentWeapon != pi->weapon ) { ADDRLP4 1280 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 1280 INDIRP4 CNSTI4 1208 ADDP4 INDIRI4 ADDRLP4 1280 INDIRP4 CNSTI4 1220 ADDP4 INDIRI4 EQI4 $321 line 704 ;704: trap_S_StartLocalSound( weaponChangeSound, CHAN_LOCAL ); ADDRGP4 weaponChangeSound INDIRI4 ARGI4 CNSTI4 1 ARGI4 ADDRGP4 trap_S_StartLocalSound CALLV pop line 705 ;705: } LABELV $321 line 706 ;706: } LABELV $319 line 708 ;707: ;708: UI_AdjustFrom640( &x, &y, &w, &h ); ADDRFP4 0 ARGP4 ADDRFP4 4 ARGP4 ADDRFP4 8 ARGP4 ADDRFP4 12 ARGP4 ADDRGP4 UI_AdjustFrom640 CALLV pop line 710 ;709: ;710: y -= jumpHeight; ADDRFP4 4 ADDRFP4 4 INDIRF4 ADDRGP4 jumpHeight INDIRF4 SUBF4 ASGNF4 line 712 ;711: ;712: memset( &refdef, 0, sizeof( refdef ) ); ADDRLP4 0 ARGP4 CNSTI4 0 ARGI4 CNSTI4 368 ARGI4 ADDRGP4 memset CALLP4 pop line 713 ;713: memset( &legs, 0, sizeof(legs) ); ADDRLP4 380 ARGP4 CNSTI4 0 ARGI4 CNSTI4 140 ARGI4 ADDRGP4 memset CALLP4 pop line 714 ;714: memset( &torso, 0, sizeof(torso) ); ADDRLP4 520 ARGP4 CNSTI4 0 ARGI4 CNSTI4 140 ARGI4 ADDRGP4 memset CALLP4 pop line 715 ;715: memset( &head, 0, sizeof(head) ); ADDRLP4 660 ARGP4 CNSTI4 0 ARGI4 CNSTI4 140 ARGI4 ADDRGP4 memset CALLP4 pop line 717 ;716: ;717: refdef.rdflags = RDF_NOWORLDMODEL; ADDRLP4 0+76 CNSTI4 1 ASGNI4 line 719 ;718: ;719: AxisClear( refdef.viewaxis ); ADDRLP4 0+36 ARGP4 ADDRGP4 AxisClear CALLV pop line 721 ;720: ;721: refdef.x = x; ADDRLP4 0 ADDRFP4 0 INDIRF4 CVFI4 4 ASGNI4 line 722 ;722: refdef.y = y; ADDRLP4 0+4 ADDRFP4 4 INDIRF4 CVFI4 4 ASGNI4 line 723 ;723: refdef.width = w; ADDRLP4 0+8 ADDRFP4 8 INDIRF4 CVFI4 4 ASGNI4 line 724 ;724: refdef.height = h; ADDRLP4 0+12 ADDRFP4 12 INDIRF4 CVFI4 4 ASGNI4 line 726 ;725: ;726: refdef.fov_x = (int)((float)refdef.width / 640.0f * 90.0f); ADDRLP4 0+16 CNSTF4 1119092736 ADDRLP4 0+8 INDIRI4 CVIF4 4 CNSTF4 1142947840 DIVF4 MULF4 CVFI4 4 CVIF4 4 ASGNF4 line 727 ;727: xx = refdef.width / tan( refdef.fov_x / 360 * M_PI ); CNSTF4 1078530011 ADDRLP4 0+16 INDIRF4 CNSTF4 1135869952 DIVF4 MULF4 ARGF4 ADDRLP4 1272 ADDRGP4 tan CALLF4 ASGNF4 ADDRLP4 1112 ADDRLP4 0+8 INDIRI4 CVIF4 4 ADDRLP4 1272 INDIRF4 DIVF4 ASGNF4 line 728 ;728: refdef.fov_y = atan2( refdef.height, xx ); ADDRLP4 0+12 INDIRI4 CVIF4 4 ARGF4 ADDRLP4 1112 INDIRF4 ARGF4 ADDRLP4 1276 ADDRGP4 atan2 CALLF4 ASGNF4 ADDRLP4 0+20 ADDRLP4 1276 INDIRF4 ASGNF4 line 729 ;729: refdef.fov_y *= ( 360 / (float)M_PI ); ADDRLP4 0+20 CNSTF4 1122316001 ADDRLP4 0+20 INDIRF4 MULF4 ASGNF4 line 732 ;730: ;731: // calculate distance so the player nearly fills the box ;732: len = 0.7 * ( maxs[2] - mins[2] ); ADDRLP4 1108 CNSTF4 1060320051 ADDRLP4 816+8 INDIRF4 ADDRLP4 804+8 INDIRF4 SUBF4 MULF4 ASGNF4 line 733 ;733: origin[0] = len / tan( DEG2RAD(refdef.fov_x) * 0.5 ); CNSTF4 1056964608 CNSTF4 1078530011 ADDRLP4 0+16 INDIRF4 MULF4 CNSTF4 1127481344 DIVF4 MULF4 ARGF4 ADDRLP4 1280 ADDRGP4 tan CALLF4 ASGNF4 ADDRLP4 368 ADDRLP4 1108 INDIRF4 ADDRLP4 1280 INDIRF4 DIVF4 ASGNF4 line 734 ;734: origin[1] = 0.5 * ( mins[1] + maxs[1] ); ADDRLP4 368+4 CNSTF4 1056964608 ADDRLP4 804+4 INDIRF4 ADDRLP4 816+4 INDIRF4 ADDF4 MULF4 ASGNF4 line 735 ;735: origin[2] = -0.5 * ( mins[2] + maxs[2] ); ADDRLP4 368+8 CNSTF4 3204448256 ADDRLP4 804+8 INDIRF4 ADDRLP4 816+8 INDIRF4 ADDF4 MULF4 ASGNF4 line 737 ;736: ;737: refdef.time = dp_realtime; ADDRLP4 0+72 ADDRGP4 dp_realtime INDIRI4 ASGNI4 line 739 ;738: ;739: trap_R_ClearScene(); ADDRGP4 trap_R_ClearScene CALLV pop line 742 ;740: ;741: // get the rotation information ;742: UI_PlayerAngles( pi, legs.axis, torso.axis, head.axis ); ADDRFP4 16 INDIRP4 ARGP4 ADDRLP4 380+28 ARGP4 ADDRLP4 520+28 ARGP4 ADDRLP4 660+28 ARGP4 ADDRGP4 UI_PlayerAngles CALLV pop line 745 ;743: ;744: // get the animation state (after rotation, to allow feet shuffle) ;745: UI_PlayerAnimation( pi, &legs.oldframe, &legs.frame, &legs.backlerp, ADDRFP4 16 INDIRP4 ARGP4 ADDRLP4 380+96 ARGP4 ADDRLP4 380+80 ARGP4 ADDRLP4 380+100 ARGP4 ADDRLP4 520+96 ARGP4 ADDRLP4 520+80 ARGP4 ADDRLP4 520+100 ARGP4 ADDRGP4 UI_PlayerAnimation CALLV pop line 748 ;746: &torso.oldframe, &torso.frame, &torso.backlerp ); ;747: ;748: renderfx = RF_LIGHTING_ORIGIN | RF_NOSHADOW; ADDRLP4 800 CNSTI4 192 ASGNI4 line 753 ;749: ;750: // ;751: // add the legs ;752: // ;753: legs.hModel = pi->legsModel; ADDRLP4 380+8 ADDRFP4 16 INDIRP4 INDIRI4 ASGNI4 line 754 ;754: legs.customSkin = pi->legsSkin; ADDRLP4 380+108 ADDRFP4 16 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ASGNI4 line 756 ;755: ;756: VectorCopy( origin, legs.origin ); ADDRLP4 380+68 ADDRLP4 368 INDIRB ASGNB 12 line 758 ;757: ;758: VectorCopy( origin, legs.lightingOrigin ); ADDRLP4 380+12 ADDRLP4 368 INDIRB ASGNB 12 line 759 ;759: legs.renderfx = renderfx; ADDRLP4 380+4 ADDRLP4 800 INDIRI4 ASGNI4 line 760 ;760: VectorCopy (legs.origin, legs.oldorigin); ADDRLP4 380+84 ADDRLP4 380+68 INDIRB ASGNB 12 line 762 ;761: ;762: trap_R_AddRefEntityToScene( &legs ); ADDRLP4 380 ARGP4 ADDRGP4 trap_R_AddRefEntityToScene CALLV pop line 764 ;763: ;764: if (!legs.hModel) { ADDRLP4 380+8 INDIRI4 CNSTI4 0 NEI4 $361 line 765 ;765: return; ADDRGP4 $308 JUMPV LABELV $361 line 771 ;766: } ;767: ;768: // ;769: // add the torso ;770: // ;771: torso.hModel = pi->torsoModel; ADDRLP4 520+8 ADDRFP4 16 INDIRP4 CNSTI4 56 ADDP4 INDIRI4 ASGNI4 line 772 ;772: if (!torso.hModel) { ADDRLP4 520+8 INDIRI4 CNSTI4 0 NEI4 $365 line 773 ;773: return; ADDRGP4 $308 JUMPV LABELV $365 line 776 ;774: } ;775: ;776: torso.customSkin = pi->torsoSkin; ADDRLP4 520+108 ADDRFP4 16 INDIRP4 CNSTI4 60 ADDP4 INDIRI4 ASGNI4 line 778 ;777: ;778: VectorCopy( origin, torso.lightingOrigin ); ADDRLP4 520+12 ADDRLP4 368 INDIRB ASGNB 12 line 780 ;779: ;780: UI_PositionRotatedEntityOnTag( &torso, &legs, pi->legsModel, "tag_torso"); ADDRLP4 520 ARGP4 ADDRLP4 380 ARGP4 ADDRFP4 16 INDIRP4 INDIRI4 ARGI4 ADDRGP4 $370 ARGP4 ADDRGP4 UI_PositionRotatedEntityOnTag CALLV pop line 782 ;781: ;782: torso.renderfx = renderfx; ADDRLP4 520+4 ADDRLP4 800 INDIRI4 ASGNI4 line 784 ;783: ;784: trap_R_AddRefEntityToScene( &torso ); ADDRLP4 520 ARGP4 ADDRGP4 trap_R_AddRefEntityToScene CALLV pop line 789 ;785: ;786: // ;787: // add the head ;788: // ;789: head.hModel = pi->headModel; ADDRLP4 660+8 ADDRFP4 16 INDIRP4 CNSTI4 112 ADDP4 INDIRI4 ASGNI4 line 790 ;790: if (!head.hModel) { ADDRLP4 660+8 INDIRI4 CNSTI4 0 NEI4 $373 line 791 ;791: return; ADDRGP4 $308 JUMPV LABELV $373 line 793 ;792: } ;793: head.customSkin = pi->headSkin; ADDRLP4 660+108 ADDRFP4 16 INDIRP4 CNSTI4 116 ADDP4 INDIRI4 ASGNI4 line 795 ;794: ;795: VectorCopy( origin, head.lightingOrigin ); ADDRLP4 660+12 ADDRLP4 368 INDIRB ASGNB 12 line 797 ;796: ;797: UI_PositionRotatedEntityOnTag( &head, &torso, pi->torsoModel, "tag_head"); ADDRLP4 660 ARGP4 ADDRLP4 520 ARGP4 ADDRFP4 16 INDIRP4 CNSTI4 56 ADDP4 INDIRI4 ARGI4 ADDRGP4 $378 ARGP4 ADDRGP4 UI_PositionRotatedEntityOnTag CALLV pop line 799 ;798: ;799: head.renderfx = renderfx; ADDRLP4 660+4 ADDRLP4 800 INDIRI4 ASGNI4 line 801 ;800: ;801: trap_R_AddRefEntityToScene( &head ); ADDRLP4 660 ARGP4 ADDRGP4 trap_R_AddRefEntityToScene CALLV pop line 806 ;802: ;803: // ;804: // add the gun ;805: // ;806: if ( pi->currentWeapon != WP_NONE ) { ADDRFP4 16 INDIRP4 CNSTI4 1208 ADDP4 INDIRI4 CNSTI4 0 EQI4 $380 line 807 ;807: memset( &gun, 0, sizeof(gun) ); ADDRLP4 828 ARGP4 CNSTI4 0 ARGI4 CNSTI4 140 ARGI4 ADDRGP4 memset CALLP4 pop line 808 ;808: gun.hModel = pi->weaponModel; ADDRLP4 828+8 ADDRFP4 16 INDIRP4 CNSTI4 1156 ADDP4 INDIRI4 ASGNI4 line 809 ;809: VectorCopy( origin, gun.lightingOrigin ); ADDRLP4 828+12 ADDRLP4 368 INDIRB ASGNB 12 line 810 ;810: UI_PositionEntityOnTag( &gun, &torso, pi->torsoModel, "tag_weapon"); ADDRLP4 828 ARGP4 ADDRLP4 520 ARGP4 ADDRFP4 16 INDIRP4 CNSTI4 56 ADDP4 INDIRI4 ARGI4 ADDRGP4 $384 ARGP4 ADDRGP4 UI_PositionEntityOnTag CALLV pop line 811 ;811: gun.renderfx = renderfx; ADDRLP4 828+4 ADDRLP4 800 INDIRI4 ASGNI4 line 812 ;812: trap_R_AddRefEntityToScene( &gun ); ADDRLP4 828 ARGP4 ADDRGP4 trap_R_AddRefEntityToScene CALLV pop line 813 ;813: } LABELV $380 line 846 ;814: ;815: // ;816: // add the spinning barrel ;817: // ;818: //Blaze: No spinning barrels in rq3 ;819: /* ;820: if ( pi->realWeapon == WP_MACHINEGUN || pi->realWeapon == WP_GAUNTLET || pi->realWeapon == WP_BFG ) { ;821: vec3_t angles; ;822: ;823: memset( &barrel, 0, sizeof(barrel) ); ;824: VectorCopy( origin, barrel.lightingOrigin ); ;825: barrel.renderfx = renderfx; ;826: ;827: barrel.hModel = pi->barrelModel; ;828: angles[YAW] = 0; ;829: angles[PITCH] = 0; ;830: angles[ROLL] = UI_MachinegunSpinAngle( pi ); ;831: if( pi->realWeapon == WP_GAUNTLET || pi->realWeapon == WP_BFG ) { ;832: angles[PITCH] = angles[ROLL]; ;833: angles[ROLL] = 0; ;834: } ;835: AnglesToAxis( angles, barrel.axis ); ;836: ;837: UI_PositionRotatedEntityOnTag( &barrel, &gun, pi->weaponModel, "tag_barrel"); ;838: ;839: trap_R_AddRefEntityToScene( &barrel ); ;840: } ;841: */ ;842: ;843: // ;844: // add muzzle flash ;845: // ;846: if ( dp_realtime <= pi->muzzleFlashTime ) { ADDRGP4 dp_realtime INDIRI4 ADDRFP4 16 INDIRP4 CNSTI4 1180 ADDP4 INDIRI4 GTI4 $386 line 847 ;847: if ( pi->flashModel ) { ADDRFP4 16 INDIRP4 CNSTI4 1164 ADDP4 INDIRI4 CNSTI4 0 EQI4 $388 line 848 ;848: memset( &flash, 0, sizeof(flash) ); ADDRLP4 968 ARGP4 CNSTI4 0 ARGI4 CNSTI4 140 ARGI4 ADDRGP4 memset CALLP4 pop line 849 ;849: flash.hModel = pi->flashModel; ADDRLP4 968+8 ADDRFP4 16 INDIRP4 CNSTI4 1164 ADDP4 INDIRI4 ASGNI4 line 850 ;850: VectorCopy( origin, flash.lightingOrigin ); ADDRLP4 968+12 ADDRLP4 368 INDIRB ASGNB 12 line 851 ;851: UI_PositionEntityOnTag( &flash, &gun, pi->weaponModel, "tag_flash"); ADDRLP4 968 ARGP4 ADDRLP4 828 ARGP4 ADDRFP4 16 INDIRP4 CNSTI4 1156 ADDP4 INDIRI4 ARGI4 ADDRGP4 $392 ARGP4 ADDRGP4 UI_PositionEntityOnTag CALLV pop line 852 ;852: flash.renderfx = renderfx; ADDRLP4 968+4 ADDRLP4 800 INDIRI4 ASGNI4 line 853 ;853: trap_R_AddRefEntityToScene( &flash ); ADDRLP4 968 ARGP4 ADDRGP4 trap_R_AddRefEntityToScene CALLV pop line 854 ;854: } LABELV $388 line 857 ;855: ;856: // make a dlight for the flash ;857: if ( pi->flashDlightColor[0] || pi->flashDlightColor[1] || pi->flashDlightColor[2] ) { ADDRLP4 1284 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 1288 CNSTF4 0 ASGNF4 ADDRLP4 1284 INDIRP4 CNSTI4 1168 ADDP4 INDIRF4 ADDRLP4 1288 INDIRF4 NEF4 $397 ADDRLP4 1284 INDIRP4 CNSTI4 1172 ADDP4 INDIRF4 ADDRLP4 1288 INDIRF4 NEF4 $397 ADDRLP4 1284 INDIRP4 CNSTI4 1176 ADDP4 INDIRF4 ADDRLP4 1288 INDIRF4 EQF4 $394 LABELV $397 line 858 ;858: trap_R_AddLightToScene( flash.origin, 200 + (rand()&31), pi->flashDlightColor[0], ADDRLP4 1292 ADDRGP4 rand CALLI4 ASGNI4 ADDRLP4 968+68 ARGP4 ADDRLP4 1292 INDIRI4 CNSTI4 31 BANDI4 CNSTI4 200 ADDI4 CVIF4 4 ARGF4 ADDRLP4 1296 ADDRFP4 16 INDIRP4 ASGNP4 ADDRLP4 1296 INDIRP4 CNSTI4 1168 ADDP4 INDIRF4 ARGF4 ADDRLP4 1296 INDIRP4 CNSTI4 1172 ADDP4 INDIRF4 ARGF4 ADDRLP4 1296 INDIRP4 CNSTI4 1176 ADDP4 INDIRF4 ARGF4 ADDRGP4 trap_R_AddLightToScene CALLV pop line 860 ;859: pi->flashDlightColor[1], pi->flashDlightColor[2] ); ;860: } LABELV $394 line 861 ;861: } LABELV $386 line 866 ;862: ;863: // ;864: // add the chat icon ;865: // ;866: if ( pi->chat ) { ADDRFP4 16 INDIRP4 CNSTI4 1252 ADDP4 INDIRI4 CNSTI4 0 EQI4 $399 line 867 ;867: UI_PlayerFloatSprite( pi, origin, trap_R_RegisterShaderNoMip( "sprites/balloon3" ) ); ADDRGP4 $401 ARGP4 ADDRLP4 1284 ADDRGP4 trap_R_RegisterShaderNoMip CALLI4 ASGNI4 ADDRFP4 16 INDIRP4 ARGP4 ADDRLP4 368 ARGP4 ADDRLP4 1284 INDIRI4 ARGI4 ADDRGP4 UI_PlayerFloatSprite CALLV pop line 868 ;868: } LABELV $399 line 873 ;869: ;870: // ;871: // add an accent light ;872: // ;873: origin[0] -= 100; // + = behind, - = in front ADDRLP4 368 ADDRLP4 368 INDIRF4 CNSTF4 1120403456 SUBF4 ASGNF4 line 874 ;874: origin[1] += 100; // + = left, - = right ADDRLP4 368+4 ADDRLP4 368+4 INDIRF4 CNSTF4 1120403456 ADDF4 ASGNF4 line 875 ;875: origin[2] += 100; // + = above, - = below ADDRLP4 368+8 ADDRLP4 368+8 INDIRF4 CNSTF4 1120403456 ADDF4 ASGNF4 line 876 ;876: trap_R_AddLightToScene( origin, 500, 1.0, 1.0, 1.0 ); ADDRLP4 368 ARGP4 CNSTF4 1140457472 ARGF4 ADDRLP4 1284 CNSTF4 1065353216 ASGNF4 ADDRLP4 1284 INDIRF4 ARGF4 ADDRLP4 1284 INDIRF4 ARGF4 ADDRLP4 1284 INDIRF4 ARGF4 ADDRGP4 trap_R_AddLightToScene CALLV pop line 878 ;877: ;878: origin[0] -= 100; ADDRLP4 368 ADDRLP4 368 INDIRF4 CNSTF4 1120403456 SUBF4 ASGNF4 line 879 ;879: origin[1] -= 100; ADDRLP4 368+4 ADDRLP4 368+4 INDIRF4 CNSTF4 1120403456 SUBF4 ASGNF4 line 880 ;880: origin[2] -= 100; ADDRLP4 368+8 ADDRLP4 368+8 INDIRF4 CNSTF4 1120403456 SUBF4 ASGNF4 line 881 ;881: trap_R_AddLightToScene( origin, 500, 1.0, 0.0, 0.0 ); ADDRLP4 368 ARGP4 CNSTF4 1140457472 ARGF4 CNSTF4 1065353216 ARGF4 ADDRLP4 1288 CNSTF4 0 ASGNF4 ADDRLP4 1288 INDIRF4 ARGF4 ADDRLP4 1288 INDIRF4 ARGF4 ADDRGP4 trap_R_AddLightToScene CALLV pop line 883 ;882: ;883: trap_R_RenderScene( &refdef ); ADDRLP4 0 ARGP4 ADDRGP4 trap_R_RenderScene CALLV pop line 884 ;884:} LABELV $308 endproc UI_DrawPlayer 1300 28 proc UI_FileExists 8 12 line 891 ;885: ;886:/* ;887:========================== ;888:UI_FileExists ;889:========================== ;890:*/ ;891:static qboolean UI_FileExists(const char *filename) { line 894 ;892: int len; ;893: ;894: len = trap_FS_FOpenFile( filename, 0, FS_READ ); ADDRFP4 0 INDIRP4 ARGP4 CNSTP4 0 ARGP4 CNSTI4 0 ARGI4 ADDRLP4 4 ADDRGP4 trap_FS_FOpenFile CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 4 INDIRI4 ASGNI4 line 895 ;895: if (len>0) { ADDRLP4 0 INDIRI4 CNSTI4 0 LEI4 $407 line 896 ;896: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $406 JUMPV LABELV $407 line 898 ;897: } ;898: return qfalse; CNSTI4 0 RETI4 LABELV $406 endproc UI_FileExists 8 12 proc UI_FindClientHeadFile 40 40 line 906 ;899:} ;900: ;901:/* ;902:========================== ;903:UI_FindClientHeadFile ;904:========================== ;905:*/ ;906:static qboolean UI_FindClientHeadFile( char *filename, int length, const char *teamName, const char *headModelName, const char *headSkinName, const char *base, const char *ext ) { line 910 ;907: char *team, *headsFolder; ;908: int i; ;909: ;910: team = "default"; ADDRLP4 8 ADDRGP4 $410 ASGNP4 line 912 ;911: ;912: if ( headModelName[0] == '*' ) { ADDRFP4 12 INDIRP4 INDIRI1 CVII4 1 CNSTI4 42 NEI4 $411 line 913 ;913: headsFolder = "heads/"; ADDRLP4 4 ADDRGP4 $413 ASGNP4 line 914 ;914: headModelName++; ADDRFP4 12 ADDRFP4 12 INDIRP4 CNSTI4 1 ADDP4 ASGNP4 line 915 ;915: } ADDRGP4 $416 JUMPV LABELV $411 line 916 ;916: else { line 917 ;917: headsFolder = ""; ADDRLP4 4 ADDRGP4 $414 ASGNP4 line 918 ;918: } ADDRGP4 $416 JUMPV LABELV $415 line 919 ;919: while(1) { line 920 ;920: for ( i = 0; i < 2; i++ ) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $418 line 921 ;921: if ( i == 0 && teamName && *teamName ) { ADDRLP4 12 CNSTI4 0 ASGNI4 ADDRLP4 0 INDIRI4 ADDRLP4 12 INDIRI4 NEI4 $422 ADDRLP4 16 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 16 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $422 ADDRLP4 16 INDIRP4 INDIRI1 CVII4 1 ADDRLP4 12 INDIRI4 EQI4 $422 line 922 ;922: Com_sprintf( filename, length, "models/players/%s%s/%s/%s%s_%s.%s", headsFolder, headModelName, headSkinName, teamName, base, team, ext ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 $424 ARGP4 ADDRLP4 4 INDIRP4 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRFP4 16 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRFP4 20 INDIRP4 ARGP4 ADDRLP4 8 INDIRP4 ARGP4 ADDRFP4 24 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 923 ;923: } ADDRGP4 $423 JUMPV LABELV $422 line 924 ;924: else { line 925 ;925: Com_sprintf( filename, length, "models/players/%s%s/%s/%s_%s.%s", headsFolder, headModelName, headSkinName, base, team, ext ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 $425 ARGP4 ADDRLP4 4 INDIRP4 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRFP4 16 INDIRP4 ARGP4 ADDRFP4 20 INDIRP4 ARGP4 ADDRLP4 8 INDIRP4 ARGP4 ADDRFP4 24 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 926 ;926: } LABELV $423 line 927 ;927: if ( UI_FileExists( filename ) ) { ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 20 ADDRGP4 UI_FileExists CALLI4 ASGNI4 ADDRLP4 20 INDIRI4 CNSTI4 0 EQI4 $426 line 928 ;928: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $409 JUMPV LABELV $426 line 930 ;929: } ;930: if ( i == 0 && teamName && *teamName ) { ADDRLP4 24 CNSTI4 0 ASGNI4 ADDRLP4 0 INDIRI4 ADDRLP4 24 INDIRI4 NEI4 $428 ADDRLP4 28 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 28 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $428 ADDRLP4 28 INDIRP4 INDIRI1 CVII4 1 ADDRLP4 24 INDIRI4 EQI4 $428 line 931 ;931: Com_sprintf( filename, length, "models/players/%s%s/%s%s_%s.%s", headsFolder, headModelName, teamName, base, headSkinName, ext ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 $430 ARGP4 ADDRLP4 4 INDIRP4 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRFP4 20 INDIRP4 ARGP4 ADDRFP4 16 INDIRP4 ARGP4 ADDRFP4 24 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 932 ;932: } ADDRGP4 $429 JUMPV LABELV $428 line 933 ;933: else { line 934 ;934: Com_sprintf( filename, length, "models/players/%s%s/%s_%s.%s", headsFolder, headModelName, base, headSkinName, ext ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 $431 ARGP4 ADDRLP4 4 INDIRP4 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRFP4 20 INDIRP4 ARGP4 ADDRFP4 16 INDIRP4 ARGP4 ADDRFP4 24 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 935 ;935: } LABELV $429 line 936 ;936: if ( UI_FileExists( filename ) ) { ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 32 ADDRGP4 UI_FileExists CALLI4 ASGNI4 ADDRLP4 32 INDIRI4 CNSTI4 0 EQI4 $432 line 937 ;937: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $409 JUMPV LABELV $432 line 939 ;938: } ;939: if ( !teamName || !*teamName ) { ADDRLP4 36 ADDRFP4 8 INDIRP4 ASGNP4 ADDRLP4 36 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $436 ADDRLP4 36 INDIRP4 INDIRI1 CVII4 1 CNSTI4 0 NEI4 $434 LABELV $436 line 940 ;940: break; ADDRGP4 $420 JUMPV LABELV $434 line 942 ;941: } ;942: } LABELV $419 line 920 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 2 LTI4 $418 LABELV $420 line 944 ;943: // if tried the heads folder first ;944: if ( headsFolder[0] ) { ADDRLP4 4 INDIRP4 INDIRI1 CVII4 1 CNSTI4 0 EQI4 $437 line 945 ;945: break; ADDRGP4 $417 JUMPV LABELV $437 line 947 ;946: } ;947: headsFolder = "heads/"; ADDRLP4 4 ADDRGP4 $413 ASGNP4 line 948 ;948: } LABELV $416 line 919 ADDRGP4 $415 JUMPV LABELV $417 line 950 ;949: ;950: return qfalse; CNSTI4 0 RETI4 LABELV $409 endproc UI_FindClientHeadFile 40 40 proc UI_RegisterClientSkin 156 28 line 958 ;951:} ;952: ;953:/* ;954:========================== ;955:UI_RegisterClientSkin ;956:========================== ;957:*/ ;958:static qboolean UI_RegisterClientSkin( playerInfo_t *pi, const char *modelName, const char *skinName, const char *headModelName, const char *headSkinName , const char *teamName) { line 961 ;959: char filename[MAX_QPATH*2]; ;960: ;961: if (teamName && *teamName) { ADDRLP4 128 ADDRFP4 20 INDIRP4 ASGNP4 ADDRLP4 128 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $440 ADDRLP4 128 INDIRP4 INDIRI1 CVII4 1 CNSTI4 0 EQI4 $440 line 962 ;962: Com_sprintf( filename, sizeof( filename ), "models/players/%s/%s/lower_%s.skin", modelName, teamName, skinName ); ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRGP4 $442 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 20 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 963 ;963: } else { ADDRGP4 $441 JUMPV LABELV $440 line 964 ;964: Com_sprintf( filename, sizeof( filename ), "models/players/%s/lower_%s.skin", modelName, skinName ); ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRGP4 $443 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 965 ;965: } LABELV $441 line 966 ;966: pi->legsSkin = trap_R_RegisterSkin( filename ); ADDRLP4 0 ARGP4 ADDRLP4 132 ADDRGP4 trap_R_RegisterSkin CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 ADDRLP4 132 INDIRI4 ASGNI4 line 967 ;967: if (!pi->legsSkin) { ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 0 NEI4 $444 line 968 ;968: if (teamName && *teamName) { ADDRLP4 136 ADDRFP4 20 INDIRP4 ASGNP4 ADDRLP4 136 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $446 ADDRLP4 136 INDIRP4 INDIRI1 CVII4 1 CNSTI4 0 EQI4 $446 line 969 ;969: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/%s/lower_%s.skin", modelName, teamName, skinName ); ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRGP4 $448 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 20 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 970 ;970: } else { ADDRGP4 $447 JUMPV LABELV $446 line 971 ;971: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/lower_%s.skin", modelName, skinName ); ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRGP4 $449 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 972 ;972: } LABELV $447 line 973 ;973: pi->legsSkin = trap_R_RegisterSkin( filename ); ADDRLP4 0 ARGP4 ADDRLP4 140 ADDRGP4 trap_R_RegisterSkin CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 ADDRLP4 140 INDIRI4 ASGNI4 line 974 ;974: } LABELV $444 line 976 ;975: ;976: if (teamName && *teamName) { ADDRLP4 136 ADDRFP4 20 INDIRP4 ASGNP4 ADDRLP4 136 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $450 ADDRLP4 136 INDIRP4 INDIRI1 CVII4 1 CNSTI4 0 EQI4 $450 line 977 ;977: Com_sprintf( filename, sizeof( filename ), "models/players/%s/%s/upper_%s.skin", modelName, teamName, skinName ); ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRGP4 $452 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 20 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 978 ;978: } else { ADDRGP4 $451 JUMPV LABELV $450 line 979 ;979: Com_sprintf( filename, sizeof( filename ), "models/players/%s/upper_%s.skin", modelName, skinName ); ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRGP4 $453 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 980 ;980: } LABELV $451 line 981 ;981: pi->torsoSkin = trap_R_RegisterSkin( filename ); ADDRLP4 0 ARGP4 ADDRLP4 140 ADDRGP4 trap_R_RegisterSkin CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 60 ADDP4 ADDRLP4 140 INDIRI4 ASGNI4 line 982 ;982: if (!pi->torsoSkin) { ADDRFP4 0 INDIRP4 CNSTI4 60 ADDP4 INDIRI4 CNSTI4 0 NEI4 $454 line 983 ;983: if (teamName && *teamName) { ADDRLP4 144 ADDRFP4 20 INDIRP4 ASGNP4 ADDRLP4 144 INDIRP4 CVPU4 4 CNSTU4 0 EQU4 $456 ADDRLP4 144 INDIRP4 INDIRI1 CVII4 1 CNSTI4 0 EQI4 $456 line 984 ;984: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/%s/upper_%s.skin", modelName, teamName, skinName ); ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRGP4 $458 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 20 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 985 ;985: } else { ADDRGP4 $457 JUMPV LABELV $456 line 986 ;986: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/upper_%s.skin", modelName, skinName ); ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRGP4 $459 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 987 ;987: } LABELV $457 line 988 ;988: pi->torsoSkin = trap_R_RegisterSkin( filename ); ADDRLP4 0 ARGP4 ADDRLP4 148 ADDRGP4 trap_R_RegisterSkin CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 60 ADDP4 ADDRLP4 148 INDIRI4 ASGNI4 line 989 ;989: } LABELV $454 line 991 ;990: ;991: if ( UI_FindClientHeadFile( filename, sizeof(filename), teamName, headModelName, headSkinName, "head", "skin" ) ) { ADDRLP4 0 ARGP4 CNSTI4 128 ARGI4 ADDRFP4 20 INDIRP4 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRFP4 16 INDIRP4 ARGP4 ADDRGP4 $462 ARGP4 ADDRGP4 $463 ARGP4 ADDRLP4 144 ADDRGP4 UI_FindClientHeadFile CALLI4 ASGNI4 ADDRLP4 144 INDIRI4 CNSTI4 0 EQI4 $460 line 992 ;992: pi->headSkin = trap_R_RegisterSkin( filename ); ADDRLP4 0 ARGP4 ADDRLP4 148 ADDRGP4 trap_R_RegisterSkin CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 116 ADDP4 ADDRLP4 148 INDIRI4 ASGNI4 line 993 ;993: } LABELV $460 line 995 ;994: ;995: if ( !pi->legsSkin || !pi->torsoSkin || !pi->headSkin ) { ADDRLP4 148 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 152 CNSTI4 0 ASGNI4 ADDRLP4 148 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ADDRLP4 152 INDIRI4 EQI4 $467 ADDRLP4 148 INDIRP4 CNSTI4 60 ADDP4 INDIRI4 ADDRLP4 152 INDIRI4 EQI4 $467 ADDRLP4 148 INDIRP4 CNSTI4 116 ADDP4 INDIRI4 ADDRLP4 152 INDIRI4 NEI4 $464 LABELV $467 line 996 ;996: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $439 JUMPV LABELV $464 line 999 ;997: } ;998: ;999: return qtrue; CNSTI4 1 RETI4 LABELV $439 endproc UI_RegisterClientSkin 156 28 proc UI_ParseAnimationFile 20068 12 line 1008 ;1000:} ;1001: ;1002: ;1003:/* ;1004:====================== ;1005:UI_ParseAnimationFile ;1006:====================== ;1007:*/ ;1008:static qboolean UI_ParseAnimationFile( const char *filename, animation_t *animations ) { line 1018 ;1009: char *text_p, *prev; ;1010: int len; ;1011: int i; ;1012: char *token; ;1013: float fps; ;1014: int skip; ;1015: char text[20000]; ;1016: fileHandle_t f; ;1017: ;1018: memset( animations, 0, sizeof( animation_t ) * MAX_ANIMATIONS ); ADDRFP4 4 INDIRP4 ARGP4 CNSTI4 0 ARGI4 CNSTI4 868 ARGI4 ADDRGP4 memset CALLP4 pop line 1021 ;1019: ;1020: // load the file ;1021: len = trap_FS_FOpenFile( filename, &f, FS_READ ); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 20028 ARGP4 CNSTI4 0 ARGI4 ADDRLP4 20032 ADDRGP4 trap_FS_FOpenFile CALLI4 ASGNI4 ADDRLP4 24 ADDRLP4 20032 INDIRI4 ASGNI4 line 1022 ;1022: if ( len <= 0 ) { ADDRLP4 24 INDIRI4 CNSTI4 0 GTI4 $469 line 1023 ;1023: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $468 JUMPV LABELV $469 line 1025 ;1024: } ;1025: if ( len >= ( sizeof( text ) - 1 ) ) { ADDRLP4 24 INDIRI4 CVIU4 4 CNSTU4 19999 LTU4 $471 line 1026 ;1026: Com_Printf( "File %s too long\n", filename ); ADDRGP4 $473 ARGP4 ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 Com_Printf CALLV pop line 1027 ;1027: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $468 JUMPV LABELV $471 line 1029 ;1028: } ;1029: trap_FS_Read( text, len, f ); ADDRLP4 28 ARGP4 ADDRLP4 24 INDIRI4 ARGI4 ADDRLP4 20028 INDIRI4 ARGI4 ADDRGP4 trap_FS_Read CALLV pop line 1030 ;1030: text[len] = 0; ADDRLP4 24 INDIRI4 ADDRLP4 28 ADDP4 CNSTI1 0 ASGNI1 line 1031 ;1031: trap_FS_FCloseFile( f ); ADDRLP4 20028 INDIRI4 ARGI4 ADDRGP4 trap_FS_FCloseFile CALLV pop line 1033 ;1032: ;1033: COM_Compress(text); ADDRLP4 28 ARGP4 ADDRGP4 COM_Compress CALLI4 pop line 1036 ;1034: ;1035: // parse the text ;1036: text_p = text; ADDRLP4 8 ADDRLP4 28 ASGNP4 line 1037 ;1037: skip = 0; // quite the compiler warning ADDRLP4 20 CNSTI4 0 ASGNI4 ADDRGP4 $475 JUMPV LABELV $474 line 1040 ;1038: ;1039: // read optional parameters ;1040: while ( 1 ) { line 1041 ;1041: prev = text_p; // so we can unget ADDRLP4 16 ADDRLP4 8 INDIRP4 ASGNP4 line 1042 ;1042: token = COM_Parse( &text_p ); ADDRLP4 8 ARGP4 ADDRLP4 20036 ADDRGP4 COM_Parse CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 20036 INDIRP4 ASGNP4 line 1043 ;1043: if ( !token ) { ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $477 line 1044 ;1044: break; ADDRGP4 $476 JUMPV LABELV $477 line 1046 ;1045: } ;1046: if ( !Q_stricmp( token, "footsteps" ) ) { ADDRLP4 0 INDIRP4 ARGP4 ADDRGP4 $481 ARGP4 ADDRLP4 20040 ADDRGP4 Q_stricmp CALLI4 ASGNI4 ADDRLP4 20040 INDIRI4 CNSTI4 0 NEI4 $479 line 1047 ;1047: token = COM_Parse( &text_p ); ADDRLP4 8 ARGP4 ADDRLP4 20044 ADDRGP4 COM_Parse CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 20044 INDIRP4 ASGNP4 line 1048 ;1048: if ( !token ) { ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $475 line 1049 ;1049: break; ADDRGP4 $476 JUMPV line 1051 ;1050: } ;1051: continue; LABELV $479 line 1052 ;1052: } else if ( !Q_stricmp( token, "headoffset" ) ) { ADDRLP4 0 INDIRP4 ARGP4 ADDRGP4 $486 ARGP4 ADDRLP4 20044 ADDRGP4 Q_stricmp CALLI4 ASGNI4 ADDRLP4 20044 INDIRI4 CNSTI4 0 NEI4 $484 line 1053 ;1053: for ( i = 0 ; i < 3 ; i++ ) { ADDRLP4 4 CNSTI4 0 ASGNI4 LABELV $487 line 1054 ;1054: token = COM_Parse( &text_p ); ADDRLP4 8 ARGP4 ADDRLP4 20048 ADDRGP4 COM_Parse CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 20048 INDIRP4 ASGNP4 line 1055 ;1055: if ( !token ) { ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $491 line 1056 ;1056: break; ADDRGP4 $475 JUMPV LABELV $491 line 1058 ;1057: } ;1058: } LABELV $488 line 1053 ADDRLP4 4 ADDRLP4 4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 3 LTI4 $487 line 1059 ;1059: continue; ADDRGP4 $475 JUMPV LABELV $484 line 1060 ;1060: } else if ( !Q_stricmp( token, "sex" ) ) { ADDRLP4 0 INDIRP4 ARGP4 ADDRGP4 $495 ARGP4 ADDRLP4 20048 ADDRGP4 Q_stricmp CALLI4 ASGNI4 ADDRLP4 20048 INDIRI4 CNSTI4 0 NEI4 $493 line 1061 ;1061: token = COM_Parse( &text_p ); ADDRLP4 8 ARGP4 ADDRLP4 20052 ADDRGP4 COM_Parse CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 20052 INDIRP4 ASGNP4 line 1062 ;1062: if ( !token ) { ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $475 line 1063 ;1063: break; ADDRGP4 $476 JUMPV line 1065 ;1064: } ;1065: continue; LABELV $493 line 1069 ;1066: } ;1067: ;1068: // if it is a number, start parsing animations ;1069: if ( token[0] >= '0' && token[0] <= '9' ) { ADDRLP4 20052 ADDRLP4 0 INDIRP4 INDIRI1 CVII4 1 ASGNI4 ADDRLP4 20052 INDIRI4 CNSTI4 48 LTI4 $498 ADDRLP4 20052 INDIRI4 CNSTI4 57 GTI4 $498 line 1070 ;1070: text_p = prev; // unget the token ADDRLP4 8 ADDRLP4 16 INDIRP4 ASGNP4 line 1071 ;1071: break; ADDRGP4 $476 JUMPV LABELV $498 line 1074 ;1072: } ;1073: ;1074: Com_Printf( "unknown token '%s' is %s\n", token, filename ); ADDRGP4 $500 ARGP4 ADDRLP4 0 INDIRP4 ARGP4 ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 Com_Printf CALLV pop line 1075 ;1075: } LABELV $475 line 1040 ADDRGP4 $474 JUMPV LABELV $476 line 1078 ;1076: ;1077: // read information for each frame ;1078: for ( i = 0 ; i < MAX_ANIMATIONS ; i++ ) { ADDRLP4 4 CNSTI4 0 ASGNI4 LABELV $501 line 1080 ;1079: ;1080: token = COM_Parse( &text_p ); ADDRLP4 8 ARGP4 ADDRLP4 20036 ADDRGP4 COM_Parse CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 20036 INDIRP4 ASGNP4 line 1081 ;1081: if ( !token ) { ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $505 line 1082 ;1082: break; ADDRGP4 $503 JUMPV LABELV $505 line 1084 ;1083: } ;1084: animations[i].firstFrame = atoi( token ); ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 20040 ADDRGP4 atoi CALLI4 ASGNI4 CNSTI4 28 ADDRLP4 4 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 ADDP4 ADDRLP4 20040 INDIRI4 ASGNI4 line 1086 ;1085: // leg only frames are adjusted to not count the upper body only frames ;1086: if ( i == LEGS_WALKCR ) { ADDRLP4 4 INDIRI4 CNSTI4 13 NEI4 $507 line 1087 ;1087: skip = animations[LEGS_WALKCR].firstFrame - animations[TORSO_GESTURE].firstFrame; ADDRLP4 20044 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 20 ADDRLP4 20044 INDIRP4 CNSTI4 364 ADDP4 INDIRI4 ADDRLP4 20044 INDIRP4 CNSTI4 168 ADDP4 INDIRI4 SUBI4 ASGNI4 line 1088 ;1088: } LABELV $507 line 1089 ;1089: if ( i >= LEGS_WALKCR ) { ADDRLP4 4 INDIRI4 CNSTI4 13 LTI4 $509 line 1090 ;1090: animations[i].firstFrame -= skip; ADDRLP4 20044 CNSTI4 28 ADDRLP4 4 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 ADDP4 ASGNP4 ADDRLP4 20044 INDIRP4 ADDRLP4 20044 INDIRP4 INDIRI4 ADDRLP4 20 INDIRI4 SUBI4 ASGNI4 line 1091 ;1091: } LABELV $509 line 1093 ;1092: ;1093: token = COM_Parse( &text_p ); ADDRLP4 8 ARGP4 ADDRLP4 20044 ADDRGP4 COM_Parse CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 20044 INDIRP4 ASGNP4 line 1094 ;1094: if ( !token ) { ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $511 line 1095 ;1095: break; ADDRGP4 $503 JUMPV LABELV $511 line 1097 ;1096: } ;1097: animations[i].numFrames = atoi( token ); ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 20048 ADDRGP4 atoi CALLI4 ASGNI4 CNSTI4 28 ADDRLP4 4 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 ADDP4 CNSTI4 4 ADDP4 ADDRLP4 20048 INDIRI4 ASGNI4 line 1099 ;1098: ;1099: token = COM_Parse( &text_p ); ADDRLP4 8 ARGP4 ADDRLP4 20052 ADDRGP4 COM_Parse CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 20052 INDIRP4 ASGNP4 line 1100 ;1100: if ( !token ) { ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $513 line 1101 ;1101: break; ADDRGP4 $503 JUMPV LABELV $513 line 1103 ;1102: } ;1103: animations[i].loopFrames = atoi( token ); ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 20056 ADDRGP4 atoi CALLI4 ASGNI4 CNSTI4 28 ADDRLP4 4 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 ADDP4 CNSTI4 8 ADDP4 ADDRLP4 20056 INDIRI4 ASGNI4 line 1105 ;1104: ;1105: token = COM_Parse( &text_p ); ADDRLP4 8 ARGP4 ADDRLP4 20060 ADDRGP4 COM_Parse CALLP4 ASGNP4 ADDRLP4 0 ADDRLP4 20060 INDIRP4 ASGNP4 line 1106 ;1106: if ( !token ) { ADDRLP4 0 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $515 line 1107 ;1107: break; ADDRGP4 $503 JUMPV LABELV $515 line 1109 ;1108: } ;1109: fps = atof( token ); ADDRLP4 0 INDIRP4 ARGP4 ADDRLP4 20064 ADDRGP4 atof CALLF4 ASGNF4 ADDRLP4 12 ADDRLP4 20064 INDIRF4 ASGNF4 line 1110 ;1110: if ( fps == 0 ) { ADDRLP4 12 INDIRF4 CNSTF4 0 NEF4 $517 line 1111 ;1111: fps = 1; ADDRLP4 12 CNSTF4 1065353216 ASGNF4 line 1112 ;1112: } LABELV $517 line 1113 ;1113: animations[i].frameLerp = 1000 / fps; CNSTI4 28 ADDRLP4 4 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 ADDP4 CNSTI4 12 ADDP4 CNSTF4 1148846080 ADDRLP4 12 INDIRF4 DIVF4 CVFI4 4 ASGNI4 line 1114 ;1114: animations[i].initialLerp = 1000 / fps; CNSTI4 28 ADDRLP4 4 INDIRI4 MULI4 ADDRFP4 4 INDIRP4 ADDP4 CNSTI4 16 ADDP4 CNSTF4 1148846080 ADDRLP4 12 INDIRF4 DIVF4 CVFI4 4 ASGNI4 line 1115 ;1115: } LABELV $502 line 1078 ADDRLP4 4 ADDRLP4 4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 31 LTI4 $501 LABELV $503 line 1117 ;1116: ;1117: if ( i != MAX_ANIMATIONS ) { ADDRLP4 4 INDIRI4 CNSTI4 31 EQI4 $519 line 1118 ;1118: Com_Printf( "Error parsing animation file: %s", filename ); ADDRGP4 $521 ARGP4 ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 Com_Printf CALLV pop line 1119 ;1119: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $468 JUMPV LABELV $519 line 1122 ;1120: } ;1121: ;1122: return qtrue; CNSTI4 1 RETI4 LABELV $468 endproc UI_ParseAnimationFile 20068 12 export UI_RegisterClientModelname proc UI_RegisterClientModelname 356 24 line 1130 ;1123:} ;1124: ;1125:/* ;1126:========================== ;1127:UI_RegisterClientModelname ;1128:========================== ;1129:*/ ;1130:qboolean UI_RegisterClientModelname( playerInfo_t *pi, const char *modelSkinName, const char *headModelSkinName, const char *teamName ) { line 1138 ;1131: char modelName[MAX_QPATH]; ;1132: char skinName[MAX_QPATH]; ;1133: char headModelName[MAX_QPATH]; ;1134: char headSkinName[MAX_QPATH]; ;1135: char filename[MAX_QPATH]; ;1136: char *slash; ;1137: ;1138: pi->torsoModel = 0; ADDRFP4 0 INDIRP4 CNSTI4 56 ADDP4 CNSTI4 0 ASGNI4 line 1139 ;1139: pi->headModel = 0; ADDRFP4 0 INDIRP4 CNSTI4 112 ADDP4 CNSTI4 0 ASGNI4 line 1141 ;1140: ;1141: if ( !modelSkinName[0] ) { ADDRFP4 4 INDIRP4 INDIRI1 CVII4 1 CNSTI4 0 NEI4 $523 line 1142 ;1142: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $522 JUMPV LABELV $523 line 1145 ;1143: } ;1144: ;1145: Q_strncpyz( modelName, modelSkinName, sizeof( modelName ) ); ADDRLP4 128 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 Q_strncpyz CALLV pop line 1147 ;1146: ;1147: slash = strchr( modelName, '/' ); ADDRLP4 128 ARGP4 CNSTI4 47 ARGI4 ADDRLP4 324 ADDRGP4 strchr CALLP4 ASGNP4 ADDRLP4 192 ADDRLP4 324 INDIRP4 ASGNP4 line 1148 ;1148: if ( !slash ) { ADDRLP4 192 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $525 line 1150 ;1149: // modelName did not include a skin name ;1150: Q_strncpyz( skinName, "default", sizeof( skinName ) ); ADDRLP4 196 ARGP4 ADDRGP4 $410 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 Q_strncpyz CALLV pop line 1151 ;1151: } else { ADDRGP4 $526 JUMPV LABELV $525 line 1152 ;1152: Q_strncpyz( skinName, slash + 1, sizeof( skinName ) ); ADDRLP4 196 ARGP4 ADDRLP4 192 INDIRP4 CNSTI4 1 ADDP4 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 Q_strncpyz CALLV pop line 1153 ;1153: *slash = '\0'; ADDRLP4 192 INDIRP4 CNSTI1 0 ASGNI1 line 1154 ;1154: } LABELV $526 line 1156 ;1155: ;1156: Q_strncpyz( headModelName, headModelSkinName, sizeof( headModelName ) ); ADDRLP4 64 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 Q_strncpyz CALLV pop line 1157 ;1157: slash = strchr( headModelName, '/' ); ADDRLP4 64 ARGP4 CNSTI4 47 ARGI4 ADDRLP4 328 ADDRGP4 strchr CALLP4 ASGNP4 ADDRLP4 192 ADDRLP4 328 INDIRP4 ASGNP4 line 1158 ;1158: if ( !slash ) { ADDRLP4 192 INDIRP4 CVPU4 4 CNSTU4 0 NEU4 $527 line 1160 ;1159: // modelName did not include a skin name ;1160: Q_strncpyz( headSkinName, "default", sizeof( skinName ) ); ADDRLP4 260 ARGP4 ADDRGP4 $410 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 Q_strncpyz CALLV pop line 1161 ;1161: } else { ADDRGP4 $528 JUMPV LABELV $527 line 1162 ;1162: Q_strncpyz( headSkinName, slash + 1, sizeof( skinName ) ); ADDRLP4 260 ARGP4 ADDRLP4 192 INDIRP4 CNSTI4 1 ADDP4 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 Q_strncpyz CALLV pop line 1163 ;1163: *slash = '\0'; ADDRLP4 192 INDIRP4 CNSTI1 0 ASGNI1 line 1164 ;1164: } LABELV $528 line 1168 ;1165: ;1166: // load cmodels before models so filecache works ;1167: ;1168: Com_sprintf( filename, sizeof( filename ), "models/players/%s/lower.md3", modelName ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $529 ARGP4 ADDRLP4 128 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1169 ;1169: pi->legsModel = trap_R_RegisterModel( filename ); ADDRLP4 0 ARGP4 ADDRLP4 332 ADDRGP4 trap_R_RegisterModel CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 332 INDIRI4 ASGNI4 line 1170 ;1170: if ( !pi->legsModel ) { ADDRFP4 0 INDIRP4 INDIRI4 CNSTI4 0 NEI4 $530 line 1171 ;1171: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/lower.md3", modelName ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $532 ARGP4 ADDRLP4 128 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1172 ;1172: pi->legsModel = trap_R_RegisterModel( filename ); ADDRLP4 0 ARGP4 ADDRLP4 336 ADDRGP4 trap_R_RegisterModel CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 ADDRLP4 336 INDIRI4 ASGNI4 line 1173 ;1173: if ( !pi->legsModel ) { ADDRFP4 0 INDIRP4 INDIRI4 CNSTI4 0 NEI4 $533 line 1174 ;1174: Com_Printf( "Failed to load model file %s\n", filename ); ADDRGP4 $535 ARGP4 ADDRLP4 0 ARGP4 ADDRGP4 Com_Printf CALLV pop line 1175 ;1175: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $522 JUMPV LABELV $533 line 1177 ;1176: } ;1177: } LABELV $530 line 1179 ;1178: ;1179: Com_sprintf( filename, sizeof( filename ), "models/players/%s/upper.md3", modelName ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $536 ARGP4 ADDRLP4 128 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1180 ;1180: pi->torsoModel = trap_R_RegisterModel( filename ); ADDRLP4 0 ARGP4 ADDRLP4 336 ADDRGP4 trap_R_RegisterModel CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 56 ADDP4 ADDRLP4 336 INDIRI4 ASGNI4 line 1181 ;1181: if ( !pi->torsoModel ) { ADDRFP4 0 INDIRP4 CNSTI4 56 ADDP4 INDIRI4 CNSTI4 0 NEI4 $537 line 1182 ;1182: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/upper.md3", modelName ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $539 ARGP4 ADDRLP4 128 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1183 ;1183: pi->torsoModel = trap_R_RegisterModel( filename ); ADDRLP4 0 ARGP4 ADDRLP4 340 ADDRGP4 trap_R_RegisterModel CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 56 ADDP4 ADDRLP4 340 INDIRI4 ASGNI4 line 1184 ;1184: if ( !pi->torsoModel ) { ADDRFP4 0 INDIRP4 CNSTI4 56 ADDP4 INDIRI4 CNSTI4 0 NEI4 $540 line 1185 ;1185: Com_Printf( "Failed to load model file %s\n", filename ); ADDRGP4 $535 ARGP4 ADDRLP4 0 ARGP4 ADDRGP4 Com_Printf CALLV pop line 1186 ;1186: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $522 JUMPV LABELV $540 line 1188 ;1187: } ;1188: } LABELV $537 line 1190 ;1189: ;1190: if (headModelName && headModelName[0] == '*' ) { ADDRLP4 64 CVPU4 4 CNSTU4 0 EQU4 $542 ADDRLP4 64 INDIRI1 CVII4 1 CNSTI4 42 NEI4 $542 line 1191 ;1191: Com_sprintf( filename, sizeof( filename ), "models/players/heads/%s/%s.md3", &headModelName[1], &headModelName[1] ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $544 ARGP4 ADDRLP4 64+1 ARGP4 ADDRLP4 64+1 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1192 ;1192: } ADDRGP4 $543 JUMPV LABELV $542 line 1193 ;1193: else { line 1194 ;1194: Com_sprintf( filename, sizeof( filename ), "models/players/%s/head.md3", headModelName ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $547 ARGP4 ADDRLP4 64 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1195 ;1195: } LABELV $543 line 1196 ;1196: pi->headModel = trap_R_RegisterModel( filename ); ADDRLP4 0 ARGP4 ADDRLP4 340 ADDRGP4 trap_R_RegisterModel CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 112 ADDP4 ADDRLP4 340 INDIRI4 ASGNI4 line 1197 ;1197: if ( !pi->headModel && headModelName[0] != '*') { ADDRFP4 0 INDIRP4 CNSTI4 112 ADDP4 INDIRI4 CNSTI4 0 NEI4 $548 ADDRLP4 64 INDIRI1 CVII4 1 CNSTI4 42 EQI4 $548 line 1198 ;1198: Com_sprintf( filename, sizeof( filename ), "models/players/heads/%s/%s.md3", headModelName, headModelName ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $544 ARGP4 ADDRLP4 64 ARGP4 ADDRLP4 64 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1199 ;1199: pi->headModel = trap_R_RegisterModel( filename ); ADDRLP4 0 ARGP4 ADDRLP4 344 ADDRGP4 trap_R_RegisterModel CALLI4 ASGNI4 ADDRFP4 0 INDIRP4 CNSTI4 112 ADDP4 ADDRLP4 344 INDIRI4 ASGNI4 line 1200 ;1200: } LABELV $548 line 1202 ;1201: ;1202: if (!pi->headModel) { ADDRFP4 0 INDIRP4 CNSTI4 112 ADDP4 INDIRI4 CNSTI4 0 NEI4 $550 line 1203 ;1203: Com_Printf( "Failed to load model file %s\n", filename ); ADDRGP4 $535 ARGP4 ADDRLP4 0 ARGP4 ADDRGP4 Com_Printf CALLV pop line 1204 ;1204: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $522 JUMPV LABELV $550 line 1208 ;1205: } ;1206: ;1207: // if any skins failed to load, fall back to default ;1208: if ( !UI_RegisterClientSkin( pi, modelName, skinName, headModelName, headSkinName, teamName) ) { ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 128 ARGP4 ADDRLP4 196 ARGP4 ADDRLP4 64 ARGP4 ADDRLP4 260 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRLP4 344 ADDRGP4 UI_RegisterClientSkin CALLI4 ASGNI4 ADDRLP4 344 INDIRI4 CNSTI4 0 NEI4 $552 line 1209 ;1209: if ( !UI_RegisterClientSkin( pi, modelName, "default", headModelName, "default", teamName ) ) { ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 128 ARGP4 ADDRLP4 348 ADDRGP4 $410 ASGNP4 ADDRLP4 348 INDIRP4 ARGP4 ADDRLP4 64 ARGP4 ADDRLP4 348 INDIRP4 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRLP4 352 ADDRGP4 UI_RegisterClientSkin CALLI4 ASGNI4 ADDRLP4 352 INDIRI4 CNSTI4 0 NEI4 $554 line 1210 ;1210: Com_Printf( "Failed to load skin file: %s : %s\n", modelName, skinName ); ADDRGP4 $556 ARGP4 ADDRLP4 128 ARGP4 ADDRLP4 196 ARGP4 ADDRGP4 Com_Printf CALLV pop line 1211 ;1211: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $522 JUMPV LABELV $554 line 1213 ;1212: } ;1213: } LABELV $552 line 1216 ;1214: ;1215: // load the animations ;1216: Com_sprintf( filename, sizeof( filename ), "models/players/%s/animation.cfg", modelName ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $557 ARGP4 ADDRLP4 128 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1217 ;1217: if ( !UI_ParseAnimationFile( filename, pi->animations ) ) { ADDRLP4 0 ARGP4 ADDRFP4 0 INDIRP4 CNSTI4 120 ADDP4 ARGP4 ADDRLP4 348 ADDRGP4 UI_ParseAnimationFile CALLI4 ASGNI4 ADDRLP4 348 INDIRI4 CNSTI4 0 NEI4 $558 line 1218 ;1218: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/animation.cfg", modelName ); ADDRLP4 0 ARGP4 CNSTI4 64 ARGI4 ADDRGP4 $560 ARGP4 ADDRLP4 128 ARGP4 ADDRGP4 Com_sprintf CALLV pop line 1219 ;1219: if ( !UI_ParseAnimationFile( filename, pi->animations ) ) { ADDRLP4 0 ARGP4 ADDRFP4 0 INDIRP4 CNSTI4 120 ADDP4 ARGP4 ADDRLP4 352 ADDRGP4 UI_ParseAnimationFile CALLI4 ASGNI4 ADDRLP4 352 INDIRI4 CNSTI4 0 NEI4 $561 line 1220 ;1220: Com_Printf( "Failed to load animation file %s\n", filename ); ADDRGP4 $563 ARGP4 ADDRLP4 0 ARGP4 ADDRGP4 Com_Printf CALLV pop line 1221 ;1221: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $522 JUMPV LABELV $561 line 1223 ;1222: } ;1223: } LABELV $558 line 1225 ;1224: ;1225: return qtrue; CNSTI4 1 RETI4 LABELV $522 endproc UI_RegisterClientModelname 356 24 export UI_PlayerInfo_SetModel proc UI_PlayerInfo_SetModel 12 16 line 1234 ;1226:} ;1227: ;1228: ;1229:/* ;1230:=============== ;1231:UI_PlayerInfo_SetModel ;1232:=============== ;1233:*/ ;1234:void UI_PlayerInfo_SetModel( playerInfo_t *pi, const char *model, const char *headmodel, char *teamName ) { line 1235 ;1235: memset( pi, 0, sizeof(*pi) ); ADDRFP4 0 INDIRP4 ARGP4 CNSTI4 0 ARGI4 CNSTI4 1276 ARGI4 ADDRGP4 memset CALLP4 pop line 1236 ;1236: UI_RegisterClientModelname( pi, model, headmodel, teamName ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRP4 ARGP4 ADDRFP4 8 INDIRP4 ARGP4 ADDRFP4 12 INDIRP4 ARGP4 ADDRGP4 UI_RegisterClientModelname CALLI4 pop line 1238 ;1237: //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL ;1238: pi->weapon = WP_PISTOL; ADDRFP4 0 INDIRP4 CNSTI4 1220 ADDP4 CNSTI4 1 ASGNI4 line 1239 ;1239: pi->currentWeapon = pi->weapon; ADDRLP4 0 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 0 INDIRP4 CNSTI4 1208 ADDP4 ADDRLP4 0 INDIRP4 CNSTI4 1220 ADDP4 INDIRI4 ASGNI4 line 1240 ;1240: pi->lastWeapon = pi->weapon; ADDRLP4 4 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 4 INDIRP4 CNSTI4 1224 ADDP4 ADDRLP4 4 INDIRP4 CNSTI4 1220 ADDP4 INDIRI4 ASGNI4 line 1241 ;1241: pi->pendingWeapon = -1; ADDRFP4 0 INDIRP4 CNSTI4 1228 ADDP4 CNSTI4 -1 ASGNI4 line 1242 ;1242: pi->weaponTimer = 0; ADDRFP4 0 INDIRP4 CNSTI4 1232 ADDP4 CNSTI4 0 ASGNI4 line 1243 ;1243: pi->chat = qfalse; ADDRFP4 0 INDIRP4 CNSTI4 1252 ADDP4 CNSTI4 0 ASGNI4 line 1244 ;1244: pi->newModel = qtrue; ADDRFP4 0 INDIRP4 CNSTI4 1256 ADDP4 CNSTI4 1 ASGNI4 line 1245 ;1245: UI_PlayerInfo_SetWeapon( pi, pi->weapon ); ADDRLP4 8 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 8 INDIRP4 ARGP4 ADDRLP4 8 INDIRP4 CNSTI4 1220 ADDP4 INDIRI4 ARGI4 ADDRGP4 UI_PlayerInfo_SetWeapon CALLV pop line 1246 ;1246:} LABELV $564 endproc UI_PlayerInfo_SetModel 12 16 export UI_PlayerInfo_SetInfo proc UI_PlayerInfo_SetInfo 36 8 line 1254 ;1247: ;1248: ;1249:/* ;1250:=============== ;1251:UI_PlayerInfo_SetInfo ;1252:=============== ;1253:*/ ;1254:void UI_PlayerInfo_SetInfo( playerInfo_t *pi, int legsAnim, int torsoAnim, vec3_t viewAngles, vec3_t moveAngles, weapon_t weaponNumber, qboolean chat ) { line 1258 ;1255: int currentAnim; ;1256: weapon_t weaponNum; ;1257: ;1258: pi->chat = chat; ADDRFP4 0 INDIRP4 CNSTI4 1252 ADDP4 ADDRFP4 24 INDIRI4 ASGNI4 line 1261 ;1259: ;1260: // view angles ;1261: VectorCopy( viewAngles, pi->viewAngles ); ADDRFP4 0 INDIRP4 CNSTI4 1184 ADDP4 ADDRFP4 12 INDIRP4 INDIRB ASGNB 12 line 1264 ;1262: ;1263: // move angles ;1264: VectorCopy( moveAngles, pi->moveAngles ); ADDRFP4 0 INDIRP4 CNSTI4 1196 ADDP4 ADDRFP4 16 INDIRP4 INDIRB ASGNB 12 line 1266 ;1265: ;1266: if ( pi->newModel ) { ADDRFP4 0 INDIRP4 CNSTI4 1256 ADDP4 INDIRI4 CNSTI4 0 EQI4 $566 line 1267 ;1267: pi->newModel = qfalse; ADDRFP4 0 INDIRP4 CNSTI4 1256 ADDP4 CNSTI4 0 ASGNI4 line 1269 ;1268: ;1269: jumpHeight = 0; ADDRGP4 jumpHeight CNSTF4 0 ASGNF4 line 1270 ;1270: pi->pendingLegsAnim = 0; ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 CNSTI4 0 ASGNI4 line 1271 ;1271: UI_ForceLegsAnim( pi, legsAnim ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 UI_ForceLegsAnim CALLV pop line 1272 ;1272: pi->legs.yawAngle = viewAngles[YAW]; ADDRFP4 0 INDIRP4 CNSTI4 28 ADDP4 ADDRFP4 12 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 ASGNF4 line 1273 ;1273: pi->legs.yawing = qfalse; ADDRFP4 0 INDIRP4 CNSTI4 32 ADDP4 CNSTI4 0 ASGNI4 line 1275 ;1274: ;1275: pi->pendingTorsoAnim = 0; ADDRFP4 0 INDIRP4 CNSTI4 1244 ADDP4 CNSTI4 0 ASGNI4 line 1276 ;1276: UI_ForceTorsoAnim( pi, torsoAnim ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 8 INDIRI4 ARGI4 ADDRGP4 UI_ForceTorsoAnim CALLV pop line 1277 ;1277: pi->torso.yawAngle = viewAngles[YAW]; ADDRFP4 0 INDIRP4 CNSTI4 84 ADDP4 ADDRFP4 12 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 ASGNF4 line 1278 ;1278: pi->torso.yawing = qfalse; ADDRFP4 0 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 0 ASGNI4 line 1280 ;1279: ;1280: if ( weaponNumber != -1 ) { ADDRFP4 20 INDIRI4 CNSTI4 -1 EQI4 $565 line 1281 ;1281: pi->weapon = weaponNumber; ADDRFP4 0 INDIRP4 CNSTI4 1220 ADDP4 ADDRFP4 20 INDIRI4 ASGNI4 line 1282 ;1282: pi->currentWeapon = weaponNumber; ADDRFP4 0 INDIRP4 CNSTI4 1208 ADDP4 ADDRFP4 20 INDIRI4 ASGNI4 line 1283 ;1283: pi->lastWeapon = weaponNumber; ADDRFP4 0 INDIRP4 CNSTI4 1224 ADDP4 ADDRFP4 20 INDIRI4 ASGNI4 line 1284 ;1284: pi->pendingWeapon = -1; ADDRFP4 0 INDIRP4 CNSTI4 1228 ADDP4 CNSTI4 -1 ASGNI4 line 1285 ;1285: pi->weaponTimer = 0; ADDRFP4 0 INDIRP4 CNSTI4 1232 ADDP4 CNSTI4 0 ASGNI4 line 1286 ;1286: UI_PlayerInfo_SetWeapon( pi, pi->weapon ); ADDRLP4 8 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 8 INDIRP4 ARGP4 ADDRLP4 8 INDIRP4 CNSTI4 1220 ADDP4 INDIRI4 ARGI4 ADDRGP4 UI_PlayerInfo_SetWeapon CALLV pop line 1287 ;1287: } line 1289 ;1288: ;1289: return; ADDRGP4 $565 JUMPV LABELV $566 line 1293 ;1290: } ;1291: ;1292: // weapon ;1293: if ( weaponNumber == -1 ) { ADDRFP4 20 INDIRI4 CNSTI4 -1 NEI4 $570 line 1294 ;1294: pi->pendingWeapon = -1; ADDRFP4 0 INDIRP4 CNSTI4 1228 ADDP4 CNSTI4 -1 ASGNI4 line 1295 ;1295: pi->weaponTimer = 0; ADDRFP4 0 INDIRP4 CNSTI4 1232 ADDP4 CNSTI4 0 ASGNI4 line 1296 ;1296: } ADDRGP4 $571 JUMPV LABELV $570 line 1297 ;1297: else if ( weaponNumber != WP_NONE ) { ADDRFP4 20 INDIRI4 CNSTI4 0 EQI4 $572 line 1298 ;1298: pi->pendingWeapon = weaponNumber; ADDRFP4 0 INDIRP4 CNSTI4 1228 ADDP4 ADDRFP4 20 INDIRI4 ASGNI4 line 1299 ;1299: pi->weaponTimer = dp_realtime + UI_TIMER_WEAPON_DELAY; ADDRFP4 0 INDIRP4 CNSTI4 1232 ADDP4 ADDRGP4 dp_realtime INDIRI4 CNSTI4 250 ADDI4 ASGNI4 line 1300 ;1300: } LABELV $572 LABELV $571 line 1301 ;1301: weaponNum = pi->lastWeapon; ADDRLP4 4 ADDRFP4 0 INDIRP4 CNSTI4 1224 ADDP4 INDIRI4 ASGNI4 line 1302 ;1302: pi->weapon = weaponNum; ADDRFP4 0 INDIRP4 CNSTI4 1220 ADDP4 ADDRLP4 4 INDIRI4 ASGNI4 line 1304 ;1303: ;1304: if ( torsoAnim == BOTH_DEATH1 || legsAnim == BOTH_DEATH1 ) { ADDRLP4 8 CNSTI4 0 ASGNI4 ADDRFP4 8 INDIRI4 ADDRLP4 8 INDIRI4 EQI4 $576 ADDRFP4 4 INDIRI4 ADDRLP4 8 INDIRI4 NEI4 $574 LABELV $576 line 1305 ;1305: torsoAnim = legsAnim = BOTH_DEATH1; ADDRLP4 12 CNSTI4 0 ASGNI4 ADDRFP4 4 ADDRLP4 12 INDIRI4 ASGNI4 ADDRFP4 8 ADDRLP4 12 INDIRI4 ASGNI4 line 1306 ;1306: pi->weapon = pi->currentWeapon = WP_NONE; ADDRLP4 16 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 20 CNSTI4 0 ASGNI4 ADDRLP4 16 INDIRP4 CNSTI4 1208 ADDP4 ADDRLP4 20 INDIRI4 ASGNI4 ADDRLP4 16 INDIRP4 CNSTI4 1220 ADDP4 ADDRLP4 20 INDIRI4 ASGNI4 line 1307 ;1307: UI_PlayerInfo_SetWeapon( pi, pi->weapon ); ADDRLP4 24 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 24 INDIRP4 ARGP4 ADDRLP4 24 INDIRP4 CNSTI4 1220 ADDP4 INDIRI4 ARGI4 ADDRGP4 UI_PlayerInfo_SetWeapon CALLV pop line 1309 ;1308: ;1309: jumpHeight = 0; ADDRGP4 jumpHeight CNSTF4 0 ASGNF4 line 1310 ;1310: pi->pendingLegsAnim = 0; ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 CNSTI4 0 ASGNI4 line 1311 ;1311: UI_ForceLegsAnim( pi, legsAnim ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 UI_ForceLegsAnim CALLV pop line 1313 ;1312: ;1313: pi->pendingTorsoAnim = 0; ADDRFP4 0 INDIRP4 CNSTI4 1244 ADDP4 CNSTI4 0 ASGNI4 line 1314 ;1314: UI_ForceTorsoAnim( pi, torsoAnim ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 8 INDIRI4 ARGI4 ADDRGP4 UI_ForceTorsoAnim CALLV pop line 1316 ;1315: ;1316: return; ADDRGP4 $565 JUMPV LABELV $574 line 1320 ;1317: } ;1318: ;1319: // leg animation ;1320: currentAnim = pi->legsAnim & ~ANIM_TOGGLEBIT; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 1212 ADDP4 INDIRI4 CNSTI4 -129 BANDI4 ASGNI4 line 1321 ;1321: if ( legsAnim != LEGS_JUMP && ( currentAnim == LEGS_JUMP || currentAnim == LEGS_LAND ) ) { ADDRLP4 12 CNSTI4 18 ASGNI4 ADDRFP4 4 INDIRI4 ADDRLP4 12 INDIRI4 EQI4 $577 ADDRLP4 0 INDIRI4 ADDRLP4 12 INDIRI4 EQI4 $579 ADDRLP4 0 INDIRI4 CNSTI4 19 NEI4 $577 LABELV $579 line 1322 ;1322: pi->pendingLegsAnim = legsAnim; ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 ADDRFP4 4 INDIRI4 ASGNI4 line 1323 ;1323: } ADDRGP4 $578 JUMPV LABELV $577 line 1324 ;1324: else if ( legsAnim != currentAnim ) { ADDRFP4 4 INDIRI4 ADDRLP4 0 INDIRI4 EQI4 $580 line 1325 ;1325: jumpHeight = 0; ADDRGP4 jumpHeight CNSTF4 0 ASGNF4 line 1326 ;1326: pi->pendingLegsAnim = 0; ADDRFP4 0 INDIRP4 CNSTI4 1236 ADDP4 CNSTI4 0 ASGNI4 line 1327 ;1327: UI_ForceLegsAnim( pi, legsAnim ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 4 INDIRI4 ARGI4 ADDRGP4 UI_ForceLegsAnim CALLV pop line 1328 ;1328: } LABELV $580 LABELV $578 line 1331 ;1329: ;1330: // torso animation ;1331: if ( torsoAnim == TORSO_STAND || torsoAnim == TORSO_STAND2 ) { ADDRLP4 20 ADDRFP4 8 INDIRI4 ASGNI4 ADDRLP4 20 INDIRI4 CNSTI4 11 EQI4 $584 ADDRLP4 20 INDIRI4 CNSTI4 12 NEI4 $582 LABELV $584 line 1333 ;1332: //Changed from WP_GAUNTLET to WP_KNIFE ;1333: if ( weaponNum == WP_NONE || weaponNum == WP_KNIFE ) { ADDRLP4 4 INDIRI4 CNSTI4 0 EQI4 $587 ADDRLP4 4 INDIRI4 CNSTI4 8 NEI4 $585 LABELV $587 line 1334 ;1334: torsoAnim = TORSO_STAND2; ADDRFP4 8 CNSTI4 12 ASGNI4 line 1335 ;1335: } ADDRGP4 $586 JUMPV LABELV $585 line 1336 ;1336: else { line 1337 ;1337: torsoAnim = TORSO_STAND; ADDRFP4 8 CNSTI4 11 ASGNI4 line 1338 ;1338: } LABELV $586 line 1339 ;1339: } LABELV $582 line 1341 ;1340: ;1341: if ( torsoAnim == TORSO_ATTACK || torsoAnim == TORSO_ATTACK2 ) { ADDRLP4 24 ADDRFP4 8 INDIRI4 ASGNI4 ADDRLP4 24 INDIRI4 CNSTI4 7 EQI4 $590 ADDRLP4 24 INDIRI4 CNSTI4 8 NEI4 $588 LABELV $590 line 1343 ;1342: //Changed from WP_GAUNTLET to WP_KNIFE ;1343: if ( weaponNum == WP_NONE || weaponNum == WP_KNIFE ) { ADDRLP4 4 INDIRI4 CNSTI4 0 EQI4 $593 ADDRLP4 4 INDIRI4 CNSTI4 8 NEI4 $591 LABELV $593 line 1344 ;1344: torsoAnim = TORSO_ATTACK2; ADDRFP4 8 CNSTI4 8 ASGNI4 line 1345 ;1345: } ADDRGP4 $592 JUMPV LABELV $591 line 1346 ;1346: else { line 1347 ;1347: torsoAnim = TORSO_ATTACK; ADDRFP4 8 CNSTI4 7 ASGNI4 line 1348 ;1348: } LABELV $592 line 1349 ;1349: pi->muzzleFlashTime = dp_realtime + UI_TIMER_MUZZLE_FLASH; ADDRFP4 0 INDIRP4 CNSTI4 1180 ADDP4 ADDRGP4 dp_realtime INDIRI4 CNSTI4 20 ADDI4 ASGNI4 line 1351 ;1350: //FIXME play firing sound here ;1351: } LABELV $588 line 1353 ;1352: ;1353: currentAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 1216 ADDP4 INDIRI4 CNSTI4 -129 BANDI4 ASGNI4 line 1355 ;1354: ;1355: if ( weaponNum != pi->currentWeapon || currentAnim == TORSO_RAISE || currentAnim == TORSO_DROP ) { ADDRLP4 4 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 1208 ADDP4 INDIRI4 NEI4 $597 ADDRLP4 0 INDIRI4 CNSTI4 10 EQI4 $597 ADDRLP4 0 INDIRI4 CNSTI4 9 NEI4 $594 LABELV $597 line 1356 ;1356: pi->pendingTorsoAnim = torsoAnim; ADDRFP4 0 INDIRP4 CNSTI4 1244 ADDP4 ADDRFP4 8 INDIRI4 ASGNI4 line 1357 ;1357: } ADDRGP4 $595 JUMPV LABELV $594 line 1358 ;1358: else if ( ( currentAnim == TORSO_GESTURE || currentAnim == TORSO_ATTACK ) && ( torsoAnim != currentAnim ) ) { ADDRLP4 0 INDIRI4 CNSTI4 6 EQI4 $600 ADDRLP4 0 INDIRI4 CNSTI4 7 NEI4 $598 LABELV $600 ADDRFP4 8 INDIRI4 ADDRLP4 0 INDIRI4 EQI4 $598 line 1359 ;1359: pi->pendingTorsoAnim = torsoAnim; ADDRFP4 0 INDIRP4 CNSTI4 1244 ADDP4 ADDRFP4 8 INDIRI4 ASGNI4 line 1360 ;1360: } ADDRGP4 $599 JUMPV LABELV $598 line 1361 ;1361: else if ( torsoAnim != currentAnim ) { ADDRFP4 8 INDIRI4 ADDRLP4 0 INDIRI4 EQI4 $601 line 1362 ;1362: pi->pendingTorsoAnim = 0; ADDRFP4 0 INDIRP4 CNSTI4 1244 ADDP4 CNSTI4 0 ASGNI4 line 1363 ;1363: UI_ForceTorsoAnim( pi, torsoAnim ); ADDRFP4 0 INDIRP4 ARGP4 ADDRFP4 8 INDIRI4 ARGI4 ADDRGP4 UI_ForceTorsoAnim CALLV pop line 1364 ;1364: } LABELV $601 LABELV $599 LABELV $595 line 1365 ;1365:} LABELV $565 endproc UI_PlayerInfo_SetInfo 36 8 bss align 4 LABELV jumpHeight skip 4 align 4 LABELV dp_realtime skip 4 import UI_RankStatusMenu import RankStatus_Cache import UI_SignupMenu import Signup_Cache import UI_LoginMenu import Login_Cache import UI_InitGameinfo import UI_SPUnlockMedals_f import UI_SPUnlock_f import UI_GetAwardLevel import UI_LogAwardData import UI_NewGame import UI_GetCurrentGame import UI_CanShowTierVideo import UI_ShowTierVideo import UI_TierCompleted import UI_SetBestScore import UI_GetBestScore import UI_GetBotNameByNumber import UI_LoadBots import UI_GetNumBots import UI_GetBotInfoByName import UI_GetBotInfoByNumber import UI_GetNumSPTiers import UI_GetNumSPArenas import UI_GetNumArenas import UI_GetSpecialArenaInfo import UI_GetArenaInfoByMap import UI_GetArenaInfoByNumber import UI_NetworkOptionsMenu import UI_NetworkOptionsMenu_Cache import UI_SoundOptionsMenu import UI_SoundOptionsMenu_Cache import UI_DisplayOptionsMenu import UI_DisplayOptionsMenu_Cache import UI_SaveConfigMenu import UI_SaveConfigMenu_Cache import UI_LoadConfigMenu import UI_LoadConfig_Cache import UI_TeamOrdersMenu_Cache import UI_TeamOrdersMenu_f import UI_TeamOrdersMenu import UI_RemoveBotsMenu import UI_RemoveBots_Cache import UI_AddBotsMenu import UI_AddBots_Cache import trap_VerifyCDKey import trap_R_RemapShader import trap_RealTime import trap_CIN_SetExtents import trap_CIN_DrawCinematic import trap_CIN_RunCinematic import trap_CIN_StopCinematic import trap_CIN_PlayCinematic import trap_S_StartBackgroundTrack import trap_S_StopBackgroundTrack import trap_R_RegisterFont import trap_SetCDKey import trap_GetCDKey import trap_MemoryRemaining import trap_LAN_CompareServers import trap_LAN_ServerStatus import trap_LAN_ResetPings import trap_LAN_RemoveServer import trap_LAN_AddServer import trap_LAN_UpdateVisiblePings import trap_LAN_ServerIsVisible import trap_LAN_MarkServerVisible import trap_LAN_SaveCachedServers import trap_LAN_LoadCachedServers import trap_LAN_GetPingInfo import trap_LAN_GetPing import trap_LAN_ClearPing import trap_LAN_GetPingQueueCount import trap_LAN_GetServerPing import trap_LAN_GetServerInfo import trap_LAN_GetServerAddressString import trap_LAN_GetServerCount import trap_GetConfigString import trap_GetGlconfig import trap_GetClientState import trap_GetClipboardData import trap_Key_SetCatcher import trap_Key_GetCatcher import trap_Key_ClearStates import trap_Key_SetOverstrikeMode import trap_Key_GetOverstrikeMode import trap_Key_IsDown import trap_Key_SetBinding import trap_Key_GetBindingBuf import trap_Key_KeynumToStringBuf import trap_S_RegisterSound import trap_S_StartLocalSound import trap_CM_LerpTag import trap_UpdateScreen import trap_R_ModelBounds import trap_R_DrawStretchPic import trap_R_SetColor import trap_R_RenderScene import trap_R_AddLightToScene import trap_R_AddPolyToScene import trap_R_AddRefEntityToScene import trap_R_ClearScene import trap_R_RegisterShaderNoMip import trap_R_RegisterSkin import trap_R_RegisterModel import trap_FS_GetFileList import trap_FS_FCloseFile import trap_FS_Write import trap_FS_Read import trap_FS_FOpenFile import trap_Cmd_ExecuteText import trap_Argv import trap_Argc import trap_Cvar_InfoStringBuffer import trap_Cvar_Create import trap_Cvar_Reset import trap_Cvar_SetValue import trap_Cvar_VariableStringBuffer import trap_Cvar_VariableValue import trap_Cvar_Set import trap_Cvar_Update import trap_Cvar_Register import trap_Milliseconds import trap_Error import trap_Print import UI_SPSkillMenu_Cache import UI_SPSkillMenu import UI_SPPostgameMenu_f import UI_SPPostgameMenu_Cache import UI_SPArena_Start import UI_SPLevelMenu_ReInit import UI_SPLevelMenu_f import UI_SPLevelMenu import UI_SPLevelMenu_Cache import uis import UI_LoadBestScores import m_entersound import UI_StartDemoLoop import UI_Cvar_VariableString import UI_Argv import UI_ForceMenuOff import UI_PopMenu import UI_PushMenu import UI_SetActiveMenu import UI_IsFullscreen import UI_DrawTextBox import UI_AdjustFrom640 import UI_CursorInRect import UI_DrawChar import UI_DrawString import UI_ProportionalStringWidth import UI_DrawProportionalString import UI_ProportionalSizeScale import UI_DrawBannerString import UI_LerpColor import UI_SetColor import UI_UpdateScreen import UI_DrawSides import UI_DrawTopBottom import UI_DrawRect import UI_FillRect import UI_DrawHandlePic import UI_DrawNamedPic import UI_ClampCvar import UI_ConsoleCommand import UI_Refresh import UI_MouseEvent import UI_KeyEvent import UI_Shutdown import UI_Init import uiInfo import DriverInfo_Cache import GraphicsOptions_Cache import UI_GraphicsOptionsMenu import ServerInfo_Cache import UI_ServerInfoMenu import UI_BotSelectMenu_Cache import UI_BotSelectMenu import ServerOptions_Cache import StartServer_Cache import UI_StartServerMenu import ArenaServers_Cache import UI_ArenaServersMenu import SpecifyServer_Cache import UI_SpecifyServerMenu import SpecifyLeague_Cache import UI_SpecifyLeagueMenu import Preferences_Cache import UI_PreferencesMenu import PlayerSettings_Cache import UI_PlayerSettingsMenu import PlayerModel_Cache import UI_PlayerModelMenu import UI_CDKeyMenu_f import UI_CDKeyMenu_Cache import UI_CDKeyMenu import UI_ModsMenu_Cache import UI_ModsMenu import UI_CinematicsMenu_Cache import UI_CinematicsMenu_f import UI_CinematicsMenu import Demos_Cache import UI_DemosMenu import Controls_Cache import UI_ControlsMenu import UI_DrawConnectScreen import TeamMain_Cache import UI_TeamMainMenu import UI_SetupMenu import UI_SetupMenu_Cache import UI_ConfirmMenu import ConfirmMenu_Cache import UI_InGameMenu import InGame_Cache import UI_CreditMenu import UI_UpdateCvars import UI_RegisterCvars import UI_MainMenu import MainMenu_Cache import UI_LoadArenas import UI_ClearScores import UI_ShowPostGame import UI_AdjustTimeByGame import _UI_SetActiveMenu import UI_LoadMenus import UI_Load import UI_Report import MenuField_Key import MenuField_Draw import MenuField_Init import MField_Draw import MField_CharEvent import MField_KeyDownEvent import MField_Clear import ui_medalSounds import ui_medalPicNames import ui_medalNames import text_color_highlight import text_color_normal import text_color_disabled import listbar_color import list_color import name_color import color_dim import color_red import color_orange import color_blue import color_yellow import color_white import color_black import menu_dim_color import menu_black_color import menu_red_color import menu_highlight_color import menu_dark_color import menu_grayed_color import menu_text_color export weaponChangeSound align 4 LABELV weaponChangeSound skip 4 import menu_null_sound import menu_buzz_sound import menu_out_sound import menu_move_sound import menu_in_sound import ScrollList_Key import ScrollList_Draw import Bitmap_Draw import Bitmap_Init import Menu_DefaultKey import Menu_SetCursorToItem import Menu_SetCursor import Menu_ActivateItem import Menu_ItemAtCursor import Menu_Draw import Menu_AdjustCursor import Menu_AddItem import Menu_Focus import Menu_Cache import ui_serverStatusTimeOut import ui_bigFont import ui_smallFont import ui_scoreTime import ui_scoreShutoutBonus import ui_scoreSkillBonus import ui_scoreTimeBonus import ui_scoreBase import ui_scoreTeam import ui_scorePerfect import ui_scoreScore import ui_scoreGauntlets import ui_scoreAssists import ui_scoreDefends import ui_scoreExcellents import ui_scoreImpressives import ui_scoreAccuracy import ui_singlePlayerActive import ui_lastServerRefresh_3 import ui_lastServerRefresh_2 import ui_lastServerRefresh_1 import ui_lastServerRefresh_0 import ui_selectedPlayerName import ui_selectedPlayer import ui_currentOpponent import ui_mapIndex import ui_currentNetMap import ui_currentMap import ui_currentTier import ui_menuFiles import ui_opponentName import ui_dedicated import ui_serverFilterType import ui_netSource import ui_joinGameType import ui_actualNetGameType import ui_netGameType import ui_gameType import ui_fragLimit import ui_captureLimit import ui_cdkeychecked import ui_cdkey import ui_server16 import ui_server15 import ui_server14 import ui_server13 import ui_server12 import ui_server11 import ui_server10 import ui_server9 import ui_server8 import ui_server7 import ui_server6 import ui_server5 import ui_server4 import ui_server3 import ui_server2 import ui_server1 import ui_marks import ui_drawCrosshairNames import ui_drawCrosshair import ui_brassTime import ui_browserShowEmpty import ui_browserShowFull import ui_browserSortKey import ui_browserGameType import ui_browserMaster import ui_spSelection import ui_spSkill import ui_spVideos import ui_spAwards import ui_spScores5 import ui_spScores4 import ui_spScores3 import ui_spScores2 import ui_spScores1 import ui_botsFile import ui_arenasFile import ui_ctf_friendly import ui_ctf_timelimit import ui_ctf_capturelimit import ui_team_friendly import ui_team_timelimit import ui_team_fraglimit import ui_tourney_timelimit import ui_tourney_fraglimit import ui_ffa_timelimit import ui_ffa_fraglimit import trap_PC_SourceFileAndLine import trap_PC_ReadToken import trap_PC_FreeSource import trap_PC_LoadSource import trap_PC_AddGlobalDefine import Controls_SetDefaults import Controls_SetConfig import Controls_GetConfig import UI_OutOfMemory import UI_InitMemory import UI_Alloc import Display_CacheAll import Menu_SetFeederSelection import Menu_Paint import Menus_CloseAll import LerpColor import Display_HandleKey import Menus_CloseByName import Menus_ShowByName import Menus_FindByName import Menus_OpenByName import Display_KeyBindPending import Display_CursorType import Display_MouseMove import Display_CaptureItem import Display_GetContext import Menus_Activate import Menus_AnyFullScreenVisible import Menu_Reset import Menus_ActivateByName import Menu_PaintAll import Menu_New import Menu_Count import PC_Script_Parse import PC_String_Parse import PC_Rect_Parse import PC_Int_Parse import PC_Color_Parse import PC_Float_Parse import Script_Parse import String_Parse import Rect_Parse import Int_Parse import Color_Parse import Float_Parse import Menu_ScrollFeeder import Menu_HandleMouseMove import Menu_HandleKey import Menu_GetFocused import Menu_PostParse import Item_Init import Menu_Init import Display_ExpandMacros import Init_Display import String_Report import String_Init import String_Alloc import BG_PlayerTouchesItem import BG_PlayerStateToEntityStateExtraPolate import BG_PlayerStateToEntityState import BG_TouchJumpPad import BG_AddPredictableEventToPlayerstate import BG_EvaluateTrajectoryDelta import BG_EvaluateTrajectory import BG_CanItemBeGrabbed import BG_FindItemForHoldable import BG_FindItemForPowerup import BG_FindItemForWeapon import BG_FindItem import bg_numItems import bg_itemlist import ClipAmountForAmmo import ClipAmountForReload import Pmove import PM_UpdateViewAngles import Com_Printf import Com_Error import Info_NextPair import Info_Validate import Info_SetValueForKey_Big import Info_SetValueForKey import Info_RemoveKey_big import Info_RemoveKey import Info_ValueForKey import va import Q_CleanStr import Q_PrintStrlen import Q_strcat import Q_strncpyz import Q_strrchr import Q_strupr import Q_strlwr import Q_stricmpn import Q_strncmp import Q_stricmp import Q_isalpha import Q_isupper import Q_islower import Q_isprint import Com_sprintf import Parse3DMatrix import Parse2DMatrix import Parse1DMatrix import SkipRestOfLine import SkipBracedSection import COM_MatchToken import COM_ParseWarning import COM_ParseError import COM_Compress import COM_ParseExt import COM_Parse import COM_GetCurrentParseLine import COM_BeginParseSession import COM_DefaultExtension import COM_StripExtension import COM_SkipPath import Com_Clamp import PerpendicularVector import AngleVectors import MatrixMultiply import MakeNormalVectors import RotateAroundDirection import RotatePointAroundVector import ProjectPointOnPlane import PlaneFromPoints import AngleDelta import AngleNormalize180 import AngleNormalize360 import AnglesSubtract import AngleSubtract import LerpAngle import AngleMod import BoxOnPlaneSide import SetPlaneSignbits import AxisCopy import AxisClear import AnglesToAxis import vectoangles import Q_crandom import Q_random import Q_rand import Q_acos import Q_log2 import VectorRotate import Vector4Scale import VectorNormalize2 import VectorNormalize import CrossProduct import VectorInverse import VectorNormalizeFast import DistanceSquared import Distance import VectorLengthSquared import VectorLength import VectorCompare import AddPointToBounds import ClearBounds import RadiusFromBounds import NormalizeColor import ColorBytes4 import ColorBytes3 import _VectorMA import _VectorScale import _VectorCopy import _VectorAdd import _VectorSubtract import _DotProduct import ByteToDir import DirToByte import ClampShort import ClampChar import Q_rsqrt import Q_fabs import axisDefault import vec3_origin import g_color_table import colorDkGrey import colorMdGrey import colorLtGrey import colorWhite import colorCyan import colorMagenta import colorYellow import colorBlue import colorGreen import colorRed import colorBlack import bytedirs import Com_Memcpy import Com_Memset import Hunk_Alloc import FloatSwap import LongSwap import ShortSwap import acos import fabs import abs import tan import atan2 import cos import sin import sqrt import floor import ceil import memcpy import memset import memmove import sscanf import vsprintf import _atoi import atoi import _atof import atof import toupper import tolower import strncpy import strstr import strchr import strcmp import strcpy import strcat import strlen import rand import srand import qsort lit align 1 LABELV $563 byte 1 70 byte 1 97 byte 1 105 byte 1 108 byte 1 101 byte 1 100 byte 1 32 byte 1 116 byte 1 111 byte 1 32 byte 1 108 byte 1 111 byte 1 97 byte 1 100 byte 1 32 byte 1 97 byte 1 110 byte 1 105 byte 1 109 byte 1 97 byte 1 116 byte 1 105 byte 1 111 byte 1 110 byte 1 32 byte 1 102 byte 1 105 byte 1 108 byte 1 101 byte 1 32 byte 1 37 byte 1 115 byte 1 10 byte 1 0 align 1 LABELV $560 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 99 byte 1 104 byte 1 97 byte 1 114 byte 1 97 byte 1 99 byte 1 116 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 97 byte 1 110 byte 1 105 byte 1 109 byte 1 97 byte 1 116 byte 1 105 byte 1 111 byte 1 110 byte 1 46 byte 1 99 byte 1 102 byte 1 103 byte 1 0 align 1 LABELV $557 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 97 byte 1 110 byte 1 105 byte 1 109 byte 1 97 byte 1 116 byte 1 105 byte 1 111 byte 1 110 byte 1 46 byte 1 99 byte 1 102 byte 1 103 byte 1 0 align 1 LABELV $556 byte 1 70 byte 1 97 byte 1 105 byte 1 108 byte 1 101 byte 1 100 byte 1 32 byte 1 116 byte 1 111 byte 1 32 byte 1 108 byte 1 111 byte 1 97 byte 1 100 byte 1 32 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 32 byte 1 102 byte 1 105 byte 1 108 byte 1 101 byte 1 58 byte 1 32 byte 1 37 byte 1 115 byte 1 32 byte 1 58 byte 1 32 byte 1 37 byte 1 115 byte 1 10 byte 1 0 align 1 LABELV $547 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 104 byte 1 101 byte 1 97 byte 1 100 byte 1 46 byte 1 109 byte 1 100 byte 1 51 byte 1 0 align 1 LABELV $544 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 104 byte 1 101 byte 1 97 byte 1 100 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 46 byte 1 109 byte 1 100 byte 1 51 byte 1 0 align 1 LABELV $539 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 99 byte 1 104 byte 1 97 byte 1 114 byte 1 97 byte 1 99 byte 1 116 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 117 byte 1 112 byte 1 112 byte 1 101 byte 1 114 byte 1 46 byte 1 109 byte 1 100 byte 1 51 byte 1 0 align 1 LABELV $536 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 117 byte 1 112 byte 1 112 byte 1 101 byte 1 114 byte 1 46 byte 1 109 byte 1 100 byte 1 51 byte 1 0 align 1 LABELV $535 byte 1 70 byte 1 97 byte 1 105 byte 1 108 byte 1 101 byte 1 100 byte 1 32 byte 1 116 byte 1 111 byte 1 32 byte 1 108 byte 1 111 byte 1 97 byte 1 100 byte 1 32 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 32 byte 1 102 byte 1 105 byte 1 108 byte 1 101 byte 1 32 byte 1 37 byte 1 115 byte 1 10 byte 1 0 align 1 LABELV $532 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 99 byte 1 104 byte 1 97 byte 1 114 byte 1 97 byte 1 99 byte 1 116 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 108 byte 1 111 byte 1 119 byte 1 101 byte 1 114 byte 1 46 byte 1 109 byte 1 100 byte 1 51 byte 1 0 align 1 LABELV $529 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 108 byte 1 111 byte 1 119 byte 1 101 byte 1 114 byte 1 46 byte 1 109 byte 1 100 byte 1 51 byte 1 0 align 1 LABELV $521 byte 1 69 byte 1 114 byte 1 114 byte 1 111 byte 1 114 byte 1 32 byte 1 112 byte 1 97 byte 1 114 byte 1 115 byte 1 105 byte 1 110 byte 1 103 byte 1 32 byte 1 97 byte 1 110 byte 1 105 byte 1 109 byte 1 97 byte 1 116 byte 1 105 byte 1 111 byte 1 110 byte 1 32 byte 1 102 byte 1 105 byte 1 108 byte 1 101 byte 1 58 byte 1 32 byte 1 37 byte 1 115 byte 1 0 align 1 LABELV $500 byte 1 117 byte 1 110 byte 1 107 byte 1 110 byte 1 111 byte 1 119 byte 1 110 byte 1 32 byte 1 116 byte 1 111 byte 1 107 byte 1 101 byte 1 110 byte 1 32 byte 1 39 byte 1 37 byte 1 115 byte 1 39 byte 1 32 byte 1 105 byte 1 115 byte 1 32 byte 1 37 byte 1 115 byte 1 10 byte 1 0 align 1 LABELV $495 byte 1 115 byte 1 101 byte 1 120 byte 1 0 align 1 LABELV $486 byte 1 104 byte 1 101 byte 1 97 byte 1 100 byte 1 111 byte 1 102 byte 1 102 byte 1 115 byte 1 101 byte 1 116 byte 1 0 align 1 LABELV $481 byte 1 102 byte 1 111 byte 1 111 byte 1 116 byte 1 115 byte 1 116 byte 1 101 byte 1 112 byte 1 115 byte 1 0 align 1 LABELV $473 byte 1 70 byte 1 105 byte 1 108 byte 1 101 byte 1 32 byte 1 37 byte 1 115 byte 1 32 byte 1 116 byte 1 111 byte 1 111 byte 1 32 byte 1 108 byte 1 111 byte 1 110 byte 1 103 byte 1 10 byte 1 0 align 1 LABELV $463 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $462 byte 1 104 byte 1 101 byte 1 97 byte 1 100 byte 1 0 align 1 LABELV $459 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 99 byte 1 104 byte 1 97 byte 1 114 byte 1 97 byte 1 99 byte 1 116 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 117 byte 1 112 byte 1 112 byte 1 101 byte 1 114 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $458 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 99 byte 1 104 byte 1 97 byte 1 114 byte 1 97 byte 1 99 byte 1 116 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 117 byte 1 112 byte 1 112 byte 1 101 byte 1 114 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $453 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 117 byte 1 112 byte 1 112 byte 1 101 byte 1 114 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $452 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 117 byte 1 112 byte 1 112 byte 1 101 byte 1 114 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $449 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 99 byte 1 104 byte 1 97 byte 1 114 byte 1 97 byte 1 99 byte 1 116 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 108 byte 1 111 byte 1 119 byte 1 101 byte 1 114 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $448 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 99 byte 1 104 byte 1 97 byte 1 114 byte 1 97 byte 1 99 byte 1 116 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 108 byte 1 111 byte 1 119 byte 1 101 byte 1 114 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $443 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 108 byte 1 111 byte 1 119 byte 1 101 byte 1 114 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $442 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 108 byte 1 111 byte 1 119 byte 1 101 byte 1 114 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 115 byte 1 107 byte 1 105 byte 1 110 byte 1 0 align 1 LABELV $431 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 37 byte 1 115 byte 1 0 align 1 LABELV $430 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 37 byte 1 115 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 37 byte 1 115 byte 1 0 align 1 LABELV $425 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 37 byte 1 115 byte 1 0 align 1 LABELV $424 byte 1 109 byte 1 111 byte 1 100 byte 1 101 byte 1 108 byte 1 115 byte 1 47 byte 1 112 byte 1 108 byte 1 97 byte 1 121 byte 1 101 byte 1 114 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 47 byte 1 37 byte 1 115 byte 1 37 byte 1 115 byte 1 95 byte 1 37 byte 1 115 byte 1 46 byte 1 37 byte 1 115 byte 1 0 align 1 LABELV $414 byte 1 0 align 1 LABELV $413 byte 1 104 byte 1 101 byte 1 97 byte 1 100 byte 1 115 byte 1 47 byte 1 0 align 1 LABELV $410 byte 1 100 byte 1 101 byte 1 102 byte 1 97 byte 1 117 byte 1 108 byte 1 116 byte 1 0 align 1 LABELV $401 byte 1 115 byte 1 112 byte 1 114 byte 1 105 byte 1 116 byte 1 101 byte 1 115 byte 1 47 byte 1 98 byte 1 97 byte 1 108 byte 1 108 byte 1 111 byte 1 111 byte 1 110 byte 1 51 byte 1 0 align 1 LABELV $392 byte 1 116 byte 1 97 byte 1 103 byte 1 95 byte 1 102 byte 1 108 byte 1 97 byte 1 115 byte 1 104 byte 1 0 align 1 LABELV $384 byte 1 116 byte 1 97 byte 1 103 byte 1 95 byte 1 119 byte 1 101 byte 1 97 byte 1 112 byte 1 111 byte 1 110 byte 1 0 align 1 LABELV $378 byte 1 116 byte 1 97 byte 1 103 byte 1 95 byte 1 104 byte 1 101 byte 1 97 byte 1 100 byte 1 0 align 1 LABELV $370 byte 1 116 byte 1 97 byte 1 103 byte 1 95 byte 1 116 byte 1 111 byte 1 114 byte 1 115 byte 1 111 byte 1 0 align 1 LABELV $180 byte 1 66 byte 1 97 byte 1 100 byte 1 32 byte 1 97 byte 1 110 byte 1 105 byte 1 109 byte 1 97 byte 1 116 byte 1 105 byte 1 111 byte 1 110 byte 1 32 byte 1 110 byte 1 117 byte 1 109 byte 1 98 byte 1 101 byte 1 114 byte 1 58 byte 1 32 byte 1 37 byte 1 105 byte 1 0 align 1 LABELV $109 byte 1 95 byte 1 102 byte 1 108 byte 1 97 byte 1 115 byte 1 104 byte 1 46 byte 1 109 byte 1 100 byte 1 51 byte 1 0