data export pm_stopspeed align 4 LABELV pm_stopspeed byte 4 1120403456 export pm_duckScale align 4 LABELV pm_duckScale byte 4 1048576000 export pm_swimScale align 4 LABELV pm_swimScale byte 4 1056964608 export pm_wadeScale align 4 LABELV pm_wadeScale byte 4 1060320051 export pm_accelerate align 4 LABELV pm_accelerate byte 4 1092616192 export pm_airaccelerate align 4 LABELV pm_airaccelerate byte 4 1065353216 export pm_wateraccelerate align 4 LABELV pm_wateraccelerate byte 4 1082130432 export pm_flyaccelerate align 4 LABELV pm_flyaccelerate byte 4 1090519040 export pm_friction align 4 LABELV pm_friction byte 4 1086324736 export pm_waterfriction align 4 LABELV pm_waterfriction byte 4 1065353216 export pm_flightfriction align 4 LABELV pm_flightfriction byte 4 1077936128 export pm_spectatorfriction align 4 LABELV pm_spectatorfriction byte 4 1084227584 export c_pmove align 4 LABELV c_pmove byte 4 0 export PM_AddEvent code proc PM_AddEvent 0 12 file "debug-x86-Linux-2.3/TA/cgame/game/bg_pmove.c" line 38 ;1:// Copyright (C) 1999-2000 Id Software, Inc. ;2:// ;3:// bg_pmove.c -- both games player movement code ;4:// takes a playerstate and a usercmd as input and returns a modifed playerstate ;5: ;6:#include "q_shared.h" ;7:#include "bg_public.h" ;8:#include "bg_local.h" ;9: ;10:pmove_t *pm; ;11:pml_t pml; ;12: ;13:// movement parameters ;14:float pm_stopspeed = 100.0f; ;15:float pm_duckScale = 0.25f; ;16:float pm_swimScale = 0.50f; ;17:float pm_wadeScale = 0.70f; ;18: ;19:float pm_accelerate = 10.0f; ;20:float pm_airaccelerate = 1.0f; ;21:float pm_wateraccelerate = 4.0f; ;22:float pm_flyaccelerate = 8.0f; ;23: ;24:float pm_friction = 6.0f; ;25:float pm_waterfriction = 1.0f; ;26:float pm_flightfriction = 3.0f; ;27:float pm_spectatorfriction = 5.0f; ;28: ;29:int c_pmove = 0; ;30: ;31: ;32:/* ;33:=============== ;34:PM_AddEvent ;35: ;36:=============== ;37:*/ ;38:void PM_AddEvent( int newEvent ) { line 39 ;39: BG_AddPredictableEventToPlayerstate( newEvent, 0, pm->ps ); ADDRFP4 0 INDIRI4 ARGI4 CNSTI4 0 ARGI4 ADDRGP4 pm INDIRP4 INDIRP4 ARGP4 ADDRGP4 BG_AddPredictableEventToPlayerstate CALLV pop line 40 ;40:} LABELV $41 endproc PM_AddEvent 0 12 export PM_AddTouchEnt proc PM_AddTouchEnt 12 0 line 47 ;41: ;42:/* ;43:=============== ;44:PM_AddTouchEnt ;45:=============== ;46:*/ ;47:void PM_AddTouchEnt( int entityNum ) { line 50 ;48: int i; ;49: ;50: if ( entityNum == ENTITYNUM_WORLD ) { ADDRFP4 0 INDIRI4 CNSTI4 1022 NEI4 $43 line 51 ;51: return; ADDRGP4 $42 JUMPV LABELV $43 line 53 ;52: } ;53: if ( pm->numtouch == MAXTOUCH ) { ADDRGP4 pm INDIRP4 CNSTI4 48 ADDP4 INDIRI4 CNSTI4 32 NEI4 $45 line 54 ;54: return; ADDRGP4 $42 JUMPV LABELV $45 line 58 ;55: } ;56: ;57: // see if it is already added ;58: for ( i = 0 ; i < pm->numtouch ; i++ ) { ADDRLP4 0 CNSTI4 0 ASGNI4 ADDRGP4 $50 JUMPV LABELV $47 line 59 ;59: if ( pm->touchents[ i ] == entityNum ) { ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 pm INDIRP4 CNSTI4 52 ADDP4 ADDP4 INDIRI4 ADDRFP4 0 INDIRI4 NEI4 $51 line 60 ;60: return; ADDRGP4 $42 JUMPV LABELV $51 line 62 ;61: } ;62: } LABELV $48 line 58 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 LABELV $50 ADDRLP4 0 INDIRI4 ADDRGP4 pm INDIRP4 CNSTI4 48 ADDP4 INDIRI4 LTI4 $47 line 65 ;63: ;64: // add it ;65: pm->touchents[pm->numtouch] = entityNum; ADDRLP4 4 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 4 INDIRP4 CNSTI4 48 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 4 INDIRP4 CNSTI4 52 ADDP4 ADDP4 ADDRFP4 0 INDIRI4 ASGNI4 line 66 ;66: pm->numtouch++; ADDRLP4 8 ADDRGP4 pm INDIRP4 CNSTI4 48 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 line 67 ;67:} LABELV $42 endproc PM_AddTouchEnt 12 0 proc PM_StartTorsoAnim 8 0 line 74 ;68: ;69:/* ;70:=================== ;71:PM_StartTorsoAnim ;72:=================== ;73:*/ ;74:static void PM_StartTorsoAnim( int anim ) { line 75 ;75: if ( pm->ps->pm_type >= PM_DEAD ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 3 LTI4 $54 line 76 ;76: return; ADDRGP4 $53 JUMPV LABELV $54 line 78 ;77: } ;78: pm->ps->torsoAnim = ( ( pm->ps->torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 84 ADDP4 ASGNP4 ADDRLP4 4 CNSTI4 128 ASGNI4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRLP4 4 INDIRI4 BANDI4 ADDRLP4 4 INDIRI4 BXORI4 ADDRFP4 0 INDIRI4 BORI4 ASGNI4 line 80 ;79: | anim; ;80:} LABELV $53 endproc PM_StartTorsoAnim 8 0 proc PM_StartLegsAnim 8 0 line 81 ;81:static void PM_StartLegsAnim( int anim ) { line 82 ;82: if ( pm->ps->pm_type >= PM_DEAD ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 3 LTI4 $57 line 83 ;83: return; ADDRGP4 $56 JUMPV LABELV $57 line 85 ;84: } ;85: if ( pm->ps->legsTimer > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 72 ADDP4 INDIRI4 CNSTI4 0 LEI4 $59 line 86 ;86: return; // a high priority animation is running ADDRGP4 $56 JUMPV LABELV $59 line 88 ;87: } ;88: pm->ps->legsAnim = ( ( pm->ps->legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 76 ADDP4 ASGNP4 ADDRLP4 4 CNSTI4 128 ASGNI4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRLP4 4 INDIRI4 BANDI4 ADDRLP4 4 INDIRI4 BXORI4 ADDRFP4 0 INDIRI4 BORI4 ASGNI4 line 90 ;89: | anim; ;90:} LABELV $56 endproc PM_StartLegsAnim 8 0 proc PM_ContinueLegsAnim 0 4 line 92 ;91: ;92:static void PM_ContinueLegsAnim( int anim ) { line 93 ;93: if ( ( pm->ps->legsAnim & ~ANIM_TOGGLEBIT ) == anim ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 76 ADDP4 INDIRI4 CNSTI4 -129 BANDI4 ADDRFP4 0 INDIRI4 NEI4 $62 line 94 ;94: return; ADDRGP4 $61 JUMPV LABELV $62 line 96 ;95: } ;96: if ( pm->ps->legsTimer > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 72 ADDP4 INDIRI4 CNSTI4 0 LEI4 $64 line 97 ;97: return; // a high priority animation is running ADDRGP4 $61 JUMPV LABELV $64 line 99 ;98: } ;99: PM_StartLegsAnim( anim ); ADDRFP4 0 INDIRI4 ARGI4 ADDRGP4 PM_StartLegsAnim CALLV pop line 100 ;100:} LABELV $61 endproc PM_ContinueLegsAnim 0 4 proc PM_ContinueTorsoAnim 0 4 line 102 ;101: ;102:static void PM_ContinueTorsoAnim( int anim ) { line 103 ;103: if ( ( pm->ps->torsoAnim & ~ANIM_TOGGLEBIT ) == anim ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 84 ADDP4 INDIRI4 CNSTI4 -129 BANDI4 ADDRFP4 0 INDIRI4 NEI4 $67 line 104 ;104: return; ADDRGP4 $66 JUMPV LABELV $67 line 106 ;105: } ;106: if ( pm->ps->torsoTimer > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 LEI4 $69 line 107 ;107: return; // a high priority animation is running ADDRGP4 $66 JUMPV LABELV $69 line 109 ;108: } ;109: PM_StartTorsoAnim( anim ); ADDRFP4 0 INDIRI4 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 110 ;110:} LABELV $66 endproc PM_ContinueTorsoAnim 0 4 proc PM_ForceLegsAnim 0 4 line 112 ;111: ;112:static void PM_ForceLegsAnim( int anim ) { line 113 ;113: pm->ps->legsTimer = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 72 ADDP4 CNSTI4 0 ASGNI4 line 114 ;114: PM_StartLegsAnim( anim ); ADDRFP4 0 INDIRI4 ARGI4 ADDRGP4 PM_StartLegsAnim CALLV pop line 115 ;115:} LABELV $71 endproc PM_ForceLegsAnim 0 4 export PM_ClipVelocity proc PM_ClipVelocity 32 0 line 125 ;116: ;117: ;118:/* ;119:================== ;120:PM_ClipVelocity ;121: ;122:Slide off of the impacting surface ;123:================== ;124:*/ ;125:void PM_ClipVelocity( vec3_t in, vec3_t normal, vec3_t out, float overbounce ) { line 130 ;126: float backoff; ;127: float change; ;128: int i; ;129: ;130: backoff = DotProduct (in, normal); ADDRLP4 12 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 16 ADDRFP4 4 INDIRP4 ASGNP4 ADDRLP4 20 CNSTI4 4 ASGNI4 ADDRLP4 24 CNSTI4 8 ASGNI4 ADDRLP4 8 ADDRLP4 12 INDIRP4 INDIRF4 ADDRLP4 16 INDIRP4 INDIRF4 MULF4 ADDRLP4 12 INDIRP4 ADDRLP4 20 INDIRI4 ADDP4 INDIRF4 ADDRLP4 16 INDIRP4 ADDRLP4 20 INDIRI4 ADDP4 INDIRF4 MULF4 ADDF4 ADDRLP4 12 INDIRP4 ADDRLP4 24 INDIRI4 ADDP4 INDIRF4 ADDRLP4 16 INDIRP4 ADDRLP4 24 INDIRI4 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 line 132 ;131: ;132: if ( backoff < 0 ) { ADDRLP4 8 INDIRF4 CNSTF4 0 GEF4 $73 line 133 ;133: backoff *= overbounce; ADDRLP4 8 ADDRLP4 8 INDIRF4 ADDRFP4 12 INDIRF4 MULF4 ASGNF4 line 134 ;134: } else { ADDRGP4 $74 JUMPV LABELV $73 line 135 ;135: backoff /= overbounce; ADDRLP4 8 ADDRLP4 8 INDIRF4 ADDRFP4 12 INDIRF4 DIVF4 ASGNF4 line 136 ;136: } LABELV $74 line 138 ;137: ;138: for ( i=0 ; i<3 ; i++ ) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $75 line 139 ;139: change = normal[i]*backoff; ADDRLP4 4 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRFP4 4 INDIRP4 ADDP4 INDIRF4 ADDRLP4 8 INDIRF4 MULF4 ASGNF4 line 140 ;140: out[i] = in[i] - change; ADDRLP4 28 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 28 INDIRI4 ADDRFP4 8 INDIRP4 ADDP4 ADDRLP4 28 INDIRI4 ADDRFP4 0 INDIRP4 ADDP4 INDIRF4 ADDRLP4 4 INDIRF4 SUBF4 ASGNF4 line 141 ;141: } LABELV $76 line 138 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $75 line 142 ;142:} LABELV $72 endproc PM_ClipVelocity 32 0 proc PM_Friction 48 4 line 152 ;143: ;144: ;145:/* ;146:================== ;147:PM_Friction ;148: ;149:Handles both ground friction and water friction ;150:================== ;151:*/ ;152:static void PM_Friction( void ) { line 158 ;153: vec3_t vec; ;154: float *vel; ;155: float speed, newspeed, control; ;156: float drop; ;157: ;158: vel = pm->ps->velocity; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ASGNP4 line 160 ;159: ;160: VectorCopy( vel, vec ); ADDRLP4 16 ADDRLP4 0 INDIRP4 INDIRB ASGNB 12 line 161 ;161: if ( pml.walking ) { ADDRGP4 pml+44 INDIRI4 CNSTI4 0 EQI4 $80 line 162 ;162: vec[2] = 0; // ignore slope movement ADDRLP4 16+8 CNSTF4 0 ASGNF4 line 163 ;163: } LABELV $80 line 165 ;164: ;165: speed = VectorLength(vec); ADDRLP4 16 ARGP4 ADDRLP4 32 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 8 ADDRLP4 32 INDIRF4 ASGNF4 line 166 ;166: if (speed < 1) { ADDRLP4 8 INDIRF4 CNSTF4 1065353216 GEF4 $84 line 167 ;167: vel[0] = 0; ADDRLP4 0 INDIRP4 CNSTF4 0 ASGNF4 line 168 ;168: vel[1] = 0; // allow sinking underwater ADDRLP4 0 INDIRP4 CNSTI4 4 ADDP4 CNSTF4 0 ASGNF4 line 170 ;169: // FIXME: still have z friction underwater? ;170: return; ADDRGP4 $79 JUMPV LABELV $84 line 173 ;171: } ;172: ;173: drop = 0; ADDRLP4 12 CNSTF4 0 ASGNF4 line 176 ;174: ;175: // apply ground friction ;176: if ( pm->waterlevel <= 1 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 1 GTI4 $86 line 177 ;177: if ( pml.walking && !(pml.groundTrace.surfaceFlags & SURF_SLICK) ) { ADDRLP4 36 CNSTI4 0 ASGNI4 ADDRGP4 pml+44 INDIRI4 ADDRLP4 36 INDIRI4 EQI4 $88 ADDRGP4 pml+52+44 INDIRI4 CNSTI4 2 BANDI4 ADDRLP4 36 INDIRI4 NEI4 $88 line 179 ;178: // if getting knocked back, no friction ;179: if ( ! (pm->ps->pm_flags & PMF_TIME_KNOCKBACK) ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 64 BANDI4 CNSTI4 0 NEI4 $93 line 180 ;180: control = speed < pm_stopspeed ? pm_stopspeed : speed; ADDRLP4 8 INDIRF4 ADDRGP4 pm_stopspeed INDIRF4 GEF4 $96 ADDRLP4 40 ADDRGP4 pm_stopspeed INDIRF4 ASGNF4 ADDRGP4 $97 JUMPV LABELV $96 ADDRLP4 40 ADDRLP4 8 INDIRF4 ASGNF4 LABELV $97 ADDRLP4 28 ADDRLP4 40 INDIRF4 ASGNF4 line 181 ;181: drop += control*pm_friction*pml.frametime; ADDRLP4 12 ADDRLP4 12 INDIRF4 ADDRLP4 28 INDIRF4 ADDRGP4 pm_friction INDIRF4 MULF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDF4 ASGNF4 line 182 ;182: } LABELV $93 line 183 ;183: } LABELV $88 line 184 ;184: } LABELV $86 line 187 ;185: ;186: // apply water friction even if just wading ;187: if ( pm->waterlevel ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 0 EQI4 $99 line 188 ;188: drop += speed*pm_waterfriction*pm->waterlevel*pml.frametime; ADDRLP4 12 ADDRLP4 12 INDIRF4 ADDRLP4 8 INDIRF4 ADDRGP4 pm_waterfriction INDIRF4 MULF4 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CVIF4 4 MULF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDF4 ASGNF4 line 189 ;189: } LABELV $99 line 192 ;190: ;191: // apply flying friction ;192: if ( pm->ps->powerups[PW_FLIGHT]) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 336 ADDP4 INDIRI4 CNSTI4 0 EQI4 $102 line 193 ;193: drop += speed*pm_flightfriction*pml.frametime; ADDRLP4 12 ADDRLP4 12 INDIRF4 ADDRLP4 8 INDIRF4 ADDRGP4 pm_flightfriction INDIRF4 MULF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDF4 ASGNF4 line 194 ;194: } LABELV $102 line 196 ;195: ;196: if ( pm->ps->pm_type == PM_SPECTATOR) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 2 NEI4 $105 line 197 ;197: drop += speed*pm_spectatorfriction*pml.frametime; ADDRLP4 12 ADDRLP4 12 INDIRF4 ADDRLP4 8 INDIRF4 ADDRGP4 pm_spectatorfriction INDIRF4 MULF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDF4 ASGNF4 line 198 ;198: } LABELV $105 line 201 ;199: ;200: // scale the velocity ;201: newspeed = speed - drop; ADDRLP4 4 ADDRLP4 8 INDIRF4 ADDRLP4 12 INDIRF4 SUBF4 ASGNF4 line 202 ;202: if (newspeed < 0) { ADDRLP4 4 INDIRF4 CNSTF4 0 GEF4 $108 line 203 ;203: newspeed = 0; ADDRLP4 4 CNSTF4 0 ASGNF4 line 204 ;204: } LABELV $108 line 205 ;205: newspeed /= speed; ADDRLP4 4 ADDRLP4 4 INDIRF4 ADDRLP4 8 INDIRF4 DIVF4 ASGNF4 line 207 ;206: ;207: vel[0] = vel[0] * newspeed; ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRF4 ADDRLP4 4 INDIRF4 MULF4 ASGNF4 line 208 ;208: vel[1] = vel[1] * newspeed; ADDRLP4 40 ADDRLP4 0 INDIRP4 CNSTI4 4 ADDP4 ASGNP4 ADDRLP4 40 INDIRP4 ADDRLP4 40 INDIRP4 INDIRF4 ADDRLP4 4 INDIRF4 MULF4 ASGNF4 line 209 ;209: vel[2] = vel[2] * newspeed; ADDRLP4 44 ADDRLP4 0 INDIRP4 CNSTI4 8 ADDP4 ASGNP4 ADDRLP4 44 INDIRP4 ADDRLP4 44 INDIRP4 INDIRF4 ADDRLP4 4 INDIRF4 MULF4 ASGNF4 line 210 ;210:} LABELV $79 endproc PM_Friction 48 4 proc PM_Accelerate 32 0 line 220 ;211: ;212: ;213:/* ;214:============== ;215:PM_Accelerate ;216: ;217:Handles user intended acceleration ;218:============== ;219:*/ ;220:static void PM_Accelerate( vec3_t wishdir, float wishspeed, float accel ) { line 226 ;221:#if 1 ;222: // q2 style ;223: int i; ;224: float addspeed, accelspeed, currentspeed; ;225: ;226: currentspeed = DotProduct (pm->ps->velocity, wishdir); ADDRLP4 16 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 20 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 12 ADDRLP4 16 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 ADDRLP4 20 INDIRP4 INDIRF4 MULF4 ADDRLP4 16 INDIRP4 CNSTI4 36 ADDP4 INDIRF4 ADDRLP4 20 INDIRP4 CNSTI4 4 ADDP4 INDIRF4 MULF4 ADDF4 ADDRLP4 16 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 ADDRLP4 20 INDIRP4 CNSTI4 8 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 line 227 ;227: addspeed = wishspeed - currentspeed; ADDRLP4 8 ADDRFP4 4 INDIRF4 ADDRLP4 12 INDIRF4 SUBF4 ASGNF4 line 228 ;228: if (addspeed <= 0) { ADDRLP4 8 INDIRF4 CNSTF4 0 GTF4 $111 line 229 ;229: return; ADDRGP4 $110 JUMPV LABELV $111 line 231 ;230: } ;231: accelspeed = accel*pml.frametime*wishspeed; ADDRLP4 4 ADDRFP4 8 INDIRF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDRFP4 4 INDIRF4 MULF4 ASGNF4 line 232 ;232: if (accelspeed > addspeed) { ADDRLP4 4 INDIRF4 ADDRLP4 8 INDIRF4 LEF4 $114 line 233 ;233: accelspeed = addspeed; ADDRLP4 4 ADDRLP4 8 INDIRF4 ASGNF4 line 234 ;234: } LABELV $114 line 236 ;235: ;236: for (i=0 ; i<3 ; i++) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $116 line 237 ;237: pm->ps->velocity[i] += accelspeed*wishdir[i]; ADDRLP4 24 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 28 ADDRLP4 24 INDIRI4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ADDP4 ASGNP4 ADDRLP4 28 INDIRP4 ADDRLP4 28 INDIRP4 INDIRF4 ADDRLP4 4 INDIRF4 ADDRLP4 24 INDIRI4 ADDRFP4 0 INDIRP4 ADDP4 INDIRF4 MULF4 ADDF4 ASGNF4 line 238 ;238: } LABELV $117 line 236 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $116 line 257 ;239:#else ;240: // proper way (avoids strafe jump maxspeed bug), but feels bad ;241: vec3_t wishVelocity; ;242: vec3_t pushDir; ;243: float pushLen; ;244: float canPush; ;245: ;246: VectorScale( wishdir, wishspeed, wishVelocity ); ;247: VectorSubtract( wishVelocity, pm->ps->velocity, pushDir ); ;248: pushLen = VectorNormalize( pushDir ); ;249: ;250: canPush = accel*pml.frametime*wishspeed; ;251: if (canPush > pushLen) { ;252: canPush = pushLen; ;253: } ;254: ;255: VectorMA( pm->ps->velocity, canPush, pushDir, pm->ps->velocity ); ;256:#endif ;257:} LABELV $110 endproc PM_Accelerate 32 0 proc PM_CmdScale 44 4 line 270 ;258: ;259: ;260: ;261:/* ;262:============ ;263:PM_CmdScale ;264: ;265:Returns the scale factor to apply to cmd movements ;266:This allows the clients to use axial -127 to 127 values for all directions ;267:without getting a sqrt(2) distortion in speed. ;268:============ ;269:*/ ;270:static float PM_CmdScale( usercmd_t *cmd ) { line 275 ;271: int max; ;272: float total; ;273: float scale; ;274: ;275: max = abs( cmd->forwardmove ); ADDRFP4 0 INDIRP4 CNSTI4 21 ADDP4 INDIRI1 CVII4 1 ARGI4 ADDRLP4 12 ADDRGP4 abs CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 12 INDIRI4 ASGNI4 line 276 ;276: if ( abs( cmd->rightmove ) > max ) { ADDRFP4 0 INDIRP4 CNSTI4 22 ADDP4 INDIRI1 CVII4 1 ARGI4 ADDRLP4 16 ADDRGP4 abs CALLI4 ASGNI4 ADDRLP4 16 INDIRI4 ADDRLP4 0 INDIRI4 LEI4 $121 line 277 ;277: max = abs( cmd->rightmove ); ADDRFP4 0 INDIRP4 CNSTI4 22 ADDP4 INDIRI1 CVII4 1 ARGI4 ADDRLP4 20 ADDRGP4 abs CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 20 INDIRI4 ASGNI4 line 278 ;278: } LABELV $121 line 279 ;279: if ( abs( cmd->upmove ) > max ) { ADDRFP4 0 INDIRP4 CNSTI4 23 ADDP4 INDIRI1 CVII4 1 ARGI4 ADDRLP4 20 ADDRGP4 abs CALLI4 ASGNI4 ADDRLP4 20 INDIRI4 ADDRLP4 0 INDIRI4 LEI4 $123 line 280 ;280: max = abs( cmd->upmove ); ADDRFP4 0 INDIRP4 CNSTI4 23 ADDP4 INDIRI1 CVII4 1 ARGI4 ADDRLP4 24 ADDRGP4 abs CALLI4 ASGNI4 ADDRLP4 0 ADDRLP4 24 INDIRI4 ASGNI4 line 281 ;281: } LABELV $123 line 282 ;282: if ( !max ) { ADDRLP4 0 INDIRI4 CNSTI4 0 NEI4 $125 line 283 ;283: return 0; CNSTF4 0 RETF4 ADDRGP4 $120 JUMPV LABELV $125 line 286 ;284: } ;285: ;286: total = sqrt( cmd->forwardmove * cmd->forwardmove ADDRLP4 24 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 28 ADDRLP4 24 INDIRP4 CNSTI4 21 ADDP4 INDIRI1 CVII4 1 ASGNI4 ADDRLP4 32 ADDRLP4 24 INDIRP4 CNSTI4 22 ADDP4 INDIRI1 CVII4 1 ASGNI4 ADDRLP4 36 ADDRLP4 24 INDIRP4 CNSTI4 23 ADDP4 INDIRI1 CVII4 1 ASGNI4 ADDRLP4 28 INDIRI4 ADDRLP4 28 INDIRI4 MULI4 ADDRLP4 32 INDIRI4 ADDRLP4 32 INDIRI4 MULI4 ADDI4 ADDRLP4 36 INDIRI4 ADDRLP4 36 INDIRI4 MULI4 ADDI4 CVIF4 4 ARGF4 ADDRLP4 40 ADDRGP4 sqrt CALLF4 ASGNF4 ADDRLP4 4 ADDRLP4 40 INDIRF4 ASGNF4 line 288 ;287: + cmd->rightmove * cmd->rightmove + cmd->upmove * cmd->upmove ); ;288: scale = (float)pm->ps->speed * max / ( 127.0 * total ); ADDRLP4 8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 CVIF4 4 ADDRLP4 0 INDIRI4 CVIF4 4 MULF4 CNSTF4 1123942400 ADDRLP4 4 INDIRF4 MULF4 DIVF4 ASGNF4 line 290 ;289: ;290: return scale; ADDRLP4 8 INDIRF4 RETF4 LABELV $120 endproc PM_CmdScale 44 4 proc PM_SetMovementDir 72 0 line 302 ;291:} ;292: ;293: ;294:/* ;295:================ ;296:PM_SetMovementDir ;297: ;298:Determine the rotation of the legs reletive ;299:to the facing dir ;300:================ ;301:*/ ;302:static void PM_SetMovementDir( void ) { line 303 ;303: if ( pm->cmd.forwardmove || pm->cmd.rightmove ) { ADDRLP4 0 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 4 CNSTI4 0 ASGNI4 ADDRLP4 0 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 4 INDIRI4 NEI4 $130 ADDRLP4 0 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 4 INDIRI4 EQI4 $128 LABELV $130 line 304 ;304: if ( pm->cmd.rightmove == 0 && pm->cmd.forwardmove > 0 ) { ADDRLP4 8 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 12 CNSTI4 0 ASGNI4 ADDRLP4 8 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 12 INDIRI4 NEI4 $131 ADDRLP4 8 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 12 INDIRI4 LEI4 $131 line 305 ;305: pm->ps->movementDir = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 0 ASGNI4 line 306 ;306: } else if ( pm->cmd.rightmove < 0 && pm->cmd.forwardmove > 0 ) { ADDRGP4 $129 JUMPV LABELV $131 ADDRLP4 16 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 20 CNSTI4 0 ASGNI4 ADDRLP4 16 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 20 INDIRI4 GEI4 $133 ADDRLP4 16 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 20 INDIRI4 LEI4 $133 line 307 ;307: pm->ps->movementDir = 1; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 1 ASGNI4 line 308 ;308: } else if ( pm->cmd.rightmove < 0 && pm->cmd.forwardmove == 0 ) { ADDRGP4 $129 JUMPV LABELV $133 ADDRLP4 24 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 28 CNSTI4 0 ASGNI4 ADDRLP4 24 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 28 INDIRI4 GEI4 $135 ADDRLP4 24 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 28 INDIRI4 NEI4 $135 line 309 ;309: pm->ps->movementDir = 2; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 2 ASGNI4 line 310 ;310: } else if ( pm->cmd.rightmove < 0 && pm->cmd.forwardmove < 0 ) { ADDRGP4 $129 JUMPV LABELV $135 ADDRLP4 32 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 36 CNSTI4 0 ASGNI4 ADDRLP4 32 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 36 INDIRI4 GEI4 $137 ADDRLP4 32 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 36 INDIRI4 GEI4 $137 line 311 ;311: pm->ps->movementDir = 3; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 3 ASGNI4 line 312 ;312: } else if ( pm->cmd.rightmove == 0 && pm->cmd.forwardmove < 0 ) { ADDRGP4 $129 JUMPV LABELV $137 ADDRLP4 40 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 44 CNSTI4 0 ASGNI4 ADDRLP4 40 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 44 INDIRI4 NEI4 $139 ADDRLP4 40 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 44 INDIRI4 GEI4 $139 line 313 ;313: pm->ps->movementDir = 4; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 4 ASGNI4 line 314 ;314: } else if ( pm->cmd.rightmove > 0 && pm->cmd.forwardmove < 0 ) { ADDRGP4 $129 JUMPV LABELV $139 ADDRLP4 48 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 52 CNSTI4 0 ASGNI4 ADDRLP4 48 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 52 INDIRI4 LEI4 $141 ADDRLP4 48 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 52 INDIRI4 GEI4 $141 line 315 ;315: pm->ps->movementDir = 5; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 5 ASGNI4 line 316 ;316: } else if ( pm->cmd.rightmove > 0 && pm->cmd.forwardmove == 0 ) { ADDRGP4 $129 JUMPV LABELV $141 ADDRLP4 56 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 60 CNSTI4 0 ASGNI4 ADDRLP4 56 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 60 INDIRI4 LEI4 $143 ADDRLP4 56 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 60 INDIRI4 NEI4 $143 line 317 ;317: pm->ps->movementDir = 6; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 6 ASGNI4 line 318 ;318: } else if ( pm->cmd.rightmove > 0 && pm->cmd.forwardmove > 0 ) { ADDRGP4 $129 JUMPV LABELV $143 ADDRLP4 64 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 68 CNSTI4 0 ASGNI4 ADDRLP4 64 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 68 INDIRI4 LEI4 $129 ADDRLP4 64 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 68 INDIRI4 LEI4 $129 line 319 ;319: pm->ps->movementDir = 7; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 7 ASGNI4 line 320 ;320: } line 321 ;321: } else { ADDRGP4 $129 JUMPV LABELV $128 line 325 ;322: // if they aren't actively going directly sideways, ;323: // change the animation to the diagonal so they ;324: // don't stop too crooked ;325: if ( pm->ps->movementDir == 2 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 INDIRI4 CNSTI4 2 NEI4 $147 line 326 ;326: pm->ps->movementDir = 1; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 1 ASGNI4 line 327 ;327: } else if ( pm->ps->movementDir == 6 ) { ADDRGP4 $148 JUMPV LABELV $147 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 INDIRI4 CNSTI4 6 NEI4 $149 line 328 ;328: pm->ps->movementDir = 7; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 88 ADDP4 CNSTI4 7 ASGNI4 line 329 ;329: } LABELV $149 LABELV $148 line 330 ;330: } LABELV $129 line 331 ;331:} LABELV $127 endproc PM_SetMovementDir 72 0 proc PM_CheckJump 8 4 line 339 ;332: ;333: ;334:/* ;335:============= ;336:PM_CheckJump ;337:============= ;338:*/ ;339:static qboolean PM_CheckJump( void ) { line 340 ;340: if ( pm->ps->pm_flags & PMF_RESPAWNED ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 512 BANDI4 CNSTI4 0 EQI4 $152 line 341 ;341: return qfalse; // don't allow jump until all buttons are up CNSTI4 0 RETI4 ADDRGP4 $151 JUMPV LABELV $152 line 344 ;342: } ;343: ;344: if ( pm->cmd.upmove < 10 ) { ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 INDIRI1 CVII4 1 CNSTI4 10 GEI4 $154 line 346 ;345: // not holding jump ;346: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $151 JUMPV LABELV $154 line 350 ;347: } ;348: ;349: // must wait for jump to be released ;350: if ( pm->ps->pm_flags & PMF_JUMP_HELD ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 2 BANDI4 CNSTI4 0 EQI4 $156 line 352 ;351: // clear upmove so cmdscale doesn't lower running speed ;352: pm->cmd.upmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 CNSTI1 0 ASGNI1 line 353 ;353: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $151 JUMPV LABELV $156 line 356 ;354: } ;355: ;356: pml.groundPlane = qfalse; // jumping away ADDRGP4 pml+48 CNSTI4 0 ASGNI4 line 357 ;357: pml.walking = qfalse; ADDRGP4 pml+44 CNSTI4 0 ASGNI4 line 358 ;358: pm->ps->pm_flags |= PMF_JUMP_HELD; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 CNSTI4 2 BORI4 ASGNI4 line 360 ;359: ;360: pm->ps->groundEntityNum = ENTITYNUM_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 CNSTI4 1023 ASGNI4 line 361 ;361: pm->ps->velocity[2] = JUMP_VELOCITY; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1132920832 ASGNF4 line 362 ;362: PM_AddEvent( EV_JUMP ); CNSTI4 14 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 364 ;363: ;364: if ( pm->cmd.forwardmove >= 0 ) { ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LTI4 $160 line 365 ;365: PM_ForceLegsAnim( LEGS_JUMP ); CNSTI4 18 ARGI4 ADDRGP4 PM_ForceLegsAnim CALLV pop line 366 ;366: pm->ps->pm_flags &= ~PMF_BACKWARDS_JUMP; ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 4 INDIRP4 ADDRLP4 4 INDIRP4 INDIRI4 CNSTI4 -9 BANDI4 ASGNI4 line 367 ;367: } else { ADDRGP4 $161 JUMPV LABELV $160 line 368 ;368: PM_ForceLegsAnim( LEGS_JUMPB ); CNSTI4 20 ARGI4 ADDRGP4 PM_ForceLegsAnim CALLV pop line 369 ;369: pm->ps->pm_flags |= PMF_BACKWARDS_JUMP; ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 4 INDIRP4 ADDRLP4 4 INDIRP4 INDIRI4 CNSTI4 8 BORI4 ASGNI4 line 370 ;370: } LABELV $161 line 372 ;371: ;372: return qtrue; CNSTI4 1 RETI4 LABELV $151 endproc PM_CheckJump 8 4 proc PM_CheckWaterJump 56 8 line 380 ;373:} ;374: ;375:/* ;376:============= ;377:PM_CheckWaterJump ;378:============= ;379:*/ ;380:static qboolean PM_CheckWaterJump( void ) { line 385 ;381: vec3_t spot; ;382: int cont; ;383: vec3_t flatforward; ;384: ;385: if (pm->ps->pm_time) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 INDIRI4 CNSTI4 0 EQI4 $163 line 386 ;386: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $162 JUMPV LABELV $163 line 390 ;387: } ;388: ;389: // check for water jump ;390: if ( pm->waterlevel != 2 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 2 EQI4 $165 line 391 ;391: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $162 JUMPV LABELV $165 line 394 ;392: } ;393: ;394: flatforward[0] = pml.forward[0]; ADDRLP4 12 ADDRGP4 pml INDIRF4 ASGNF4 line 395 ;395: flatforward[1] = pml.forward[1]; ADDRLP4 12+4 ADDRGP4 pml+4 INDIRF4 ASGNF4 line 396 ;396: flatforward[2] = 0; ADDRLP4 12+8 CNSTF4 0 ASGNF4 line 397 ;397: VectorNormalize (flatforward); ADDRLP4 12 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 399 ;398: ;399: VectorMA (pm->ps->origin, 30, flatforward, spot); ADDRLP4 28 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 32 CNSTF4 1106247680 ASGNF4 ADDRLP4 0 ADDRLP4 28 INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRF4 ADDRLP4 32 INDIRF4 ADDRLP4 12 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 0+4 ADDRLP4 28 INDIRP4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 ADDRLP4 32 INDIRF4 ADDRLP4 12+4 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 0+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 1106247680 ADDRLP4 12+8 INDIRF4 MULF4 ADDF4 ASGNF4 line 400 ;400: spot[2] += 4; ADDRLP4 0+8 ADDRLP4 0+8 INDIRF4 CNSTF4 1082130432 ADDF4 ASGNF4 line 401 ;401: cont = pm->pointcontents (spot, pm->ps->clientNum ); ADDRLP4 0 ARGP4 ADDRLP4 36 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 36 INDIRP4 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 40 ADDRLP4 36 INDIRP4 CNSTI4 228 ADDP4 INDIRP4 CALLI4 ASGNI4 ADDRLP4 24 ADDRLP4 40 INDIRI4 ASGNI4 line 402 ;402: if ( !(cont & CONTENTS_SOLID) ) { ADDRLP4 24 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 NEI4 $175 line 403 ;403: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $162 JUMPV LABELV $175 line 406 ;404: } ;405: ;406: spot[2] += 16; ADDRLP4 0+8 ADDRLP4 0+8 INDIRF4 CNSTF4 1098907648 ADDF4 ASGNF4 line 407 ;407: cont = pm->pointcontents (spot, pm->ps->clientNum ); ADDRLP4 0 ARGP4 ADDRLP4 44 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 44 INDIRP4 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 48 ADDRLP4 44 INDIRP4 CNSTI4 228 ADDP4 INDIRP4 CALLI4 ASGNI4 ADDRLP4 24 ADDRLP4 48 INDIRI4 ASGNI4 line 408 ;408: if ( cont ) { ADDRLP4 24 INDIRI4 CNSTI4 0 EQI4 $178 line 409 ;409: return qfalse; CNSTI4 0 RETI4 ADDRGP4 $162 JUMPV LABELV $178 line 413 ;410: } ;411: ;412: // jump out of water ;413: VectorScale (pml.forward, 200, pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 CNSTF4 1128792064 ADDRGP4 pml INDIRF4 MULF4 ASGNF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 CNSTF4 1128792064 ADDRGP4 pml+4 INDIRF4 MULF4 ASGNF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1128792064 ADDRGP4 pml+8 INDIRF4 MULF4 ASGNF4 line 414 ;414: pm->ps->velocity[2] = 350; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 CNSTF4 1135542272 ASGNF4 line 416 ;415: ;416: pm->ps->pm_flags |= PMF_TIME_WATERJUMP; ADDRLP4 52 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 52 INDIRP4 ADDRLP4 52 INDIRP4 INDIRI4 CNSTI4 256 BORI4 ASGNI4 line 417 ;417: pm->ps->pm_time = 2000; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 CNSTI4 2000 ASGNI4 line 419 ;418: ;419: return qtrue; CNSTI4 1 RETI4 LABELV $162 endproc PM_CheckWaterJump 56 8 proc PM_WaterJumpMove 12 4 line 432 ;420:} ;421: ;422://============================================================================ ;423: ;424: ;425:/* ;426:=================== ;427:PM_WaterJumpMove ;428: ;429:Flying out of the water ;430:=================== ;431:*/ ;432:static void PM_WaterJumpMove( void ) { line 435 ;433: // waterjump has no control, but falls ;434: ;435: PM_StepSlideMove( qtrue ); CNSTI4 1 ARGI4 ADDRGP4 PM_StepSlideMove CALLV pop line 437 ;436: ;437: pm->ps->velocity[2] -= pm->ps->gravity * pml.frametime; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 4 ADDRLP4 0 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 4 INDIRP4 ADDRLP4 4 INDIRP4 INDIRF4 ADDRLP4 0 INDIRP4 CNSTI4 48 ADDP4 INDIRI4 CVIF4 4 ADDRGP4 pml+36 INDIRF4 MULF4 SUBF4 ASGNF4 line 438 ;438: if (pm->ps->velocity[2] < 0) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 CNSTF4 0 GEF4 $184 line 440 ;439: // cancel as soon as we are falling down again ;440: pm->ps->pm_flags &= ~PMF_ALL_TIMES; ADDRLP4 8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRI4 CNSTI4 -353 BANDI4 ASGNI4 line 441 ;441: pm->ps->pm_time = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 CNSTI4 0 ASGNI4 line 442 ;442: } LABELV $184 line 443 ;443:} LABELV $182 endproc PM_WaterJumpMove 12 4 proc PM_WaterMove 76 16 line 451 ;444: ;445:/* ;446:=================== ;447:PM_WaterMove ;448: ;449:=================== ;450:*/ ;451:static void PM_WaterMove( void ) { line 459 ;452: int i; ;453: vec3_t wishvel; ;454: float wishspeed; ;455: vec3_t wishdir; ;456: float scale; ;457: float vel; ;458: ;459: if ( PM_CheckWaterJump() ) { ADDRLP4 40 ADDRGP4 PM_CheckWaterJump CALLI4 ASGNI4 ADDRLP4 40 INDIRI4 CNSTI4 0 EQI4 $187 line 460 ;460: PM_WaterJumpMove(); ADDRGP4 PM_WaterJumpMove CALLV pop line 461 ;461: return; ADDRGP4 $186 JUMPV LABELV $187 line 477 ;462: } ;463:#if 0 ;464: // jump = head for surface ;465: if ( pm->cmd.upmove >= 10 ) { ;466: if (pm->ps->velocity[2] > -300) { ;467: if ( pm->watertype == CONTENTS_WATER ) { ;468: pm->ps->velocity[2] = 100; ;469: } else if (pm->watertype == CONTENTS_SLIME) { ;470: pm->ps->velocity[2] = 80; ;471: } else { ;472: pm->ps->velocity[2] = 50; ;473: } ;474: } ;475: } ;476:#endif ;477: PM_Friction (); ADDRGP4 PM_Friction CALLV pop line 479 ;478: ;479: scale = PM_CmdScale( &pm->cmd ); ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 ARGP4 ADDRLP4 44 ADDRGP4 PM_CmdScale CALLF4 ASGNF4 ADDRLP4 4 ADDRLP4 44 INDIRF4 ASGNF4 line 483 ;480: // ;481: // user intentions ;482: // ;483: if ( !scale ) { ADDRLP4 4 INDIRF4 CNSTF4 0 NEF4 $189 line 484 ;484: wishvel[0] = 0; ADDRLP4 8 CNSTF4 0 ASGNF4 line 485 ;485: wishvel[1] = 0; ADDRLP4 8+4 CNSTF4 0 ASGNF4 line 486 ;486: wishvel[2] = -60; // sink towards bottom ADDRLP4 8+8 CNSTF4 3262119936 ASGNF4 line 487 ;487: } else { ADDRGP4 $190 JUMPV LABELV $189 line 488 ;488: for (i=0 ; i<3 ; i++) ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $193 line 489 ;489: wishvel[i] = scale * pml.forward[i]*pm->cmd.forwardmove + scale * pml.right[i]*pm->cmd.rightmove; ADDRLP4 48 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 56 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 48 INDIRI4 ADDRLP4 8 ADDP4 ADDRLP4 4 INDIRF4 ADDRLP4 48 INDIRI4 ADDRGP4 pml ADDP4 INDIRF4 MULF4 ADDRLP4 56 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CVIF4 4 MULF4 ADDRLP4 4 INDIRF4 ADDRLP4 48 INDIRI4 ADDRGP4 pml+12 ADDP4 INDIRF4 MULF4 ADDRLP4 56 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 CVIF4 4 MULF4 ADDF4 ASGNF4 LABELV $194 line 488 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $193 line 491 ;490: ;491: wishvel[2] += scale * pm->cmd.upmove; ADDRLP4 8+8 ADDRLP4 8+8 INDIRF4 ADDRLP4 4 INDIRF4 ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 INDIRI1 CVII4 1 CVIF4 4 MULF4 ADDF4 ASGNF4 line 492 ;492: } LABELV $190 line 494 ;493: ;494: VectorCopy (wishvel, wishdir); ADDRLP4 24 ADDRLP4 8 INDIRB ASGNB 12 line 495 ;495: wishspeed = VectorNormalize(wishdir); ADDRLP4 24 ARGP4 ADDRLP4 48 ADDRGP4 VectorNormalize CALLF4 ASGNF4 ADDRLP4 20 ADDRLP4 48 INDIRF4 ASGNF4 line 497 ;496: ;497: if ( wishspeed > pm->ps->speed * pm_swimScale ) { ADDRLP4 20 INDIRF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 CVIF4 4 ADDRGP4 pm_swimScale INDIRF4 MULF4 LEF4 $199 line 498 ;498: wishspeed = pm->ps->speed * pm_swimScale; ADDRLP4 20 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 CVIF4 4 ADDRGP4 pm_swimScale INDIRF4 MULF4 ASGNF4 line 499 ;499: } LABELV $199 line 501 ;500: ;501: PM_Accelerate (wishdir, wishspeed, pm_wateraccelerate); ADDRLP4 24 ARGP4 ADDRLP4 20 INDIRF4 ARGF4 ADDRGP4 pm_wateraccelerate INDIRF4 ARGF4 ADDRGP4 PM_Accelerate CALLV pop line 504 ;502: ;503: // make sure we can go up slopes easily under water ;504: if ( pml.groundPlane && DotProduct( pm->ps->velocity, pml.groundTrace.plane.normal ) < 0 ) { ADDRGP4 pml+48 INDIRI4 CNSTI4 0 EQI4 $201 ADDRLP4 52 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 52 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 ADDRGP4 pml+52+24 INDIRF4 MULF4 ADDRLP4 52 INDIRP4 CNSTI4 36 ADDP4 INDIRF4 ADDRGP4 pml+52+24+4 INDIRF4 MULF4 ADDF4 ADDRLP4 52 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 ADDRGP4 pml+52+24+8 INDIRF4 MULF4 ADDF4 CNSTF4 0 GEF4 $201 line 505 ;505: vel = VectorLength(pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRLP4 56 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 36 ADDRLP4 56 INDIRF4 ASGNF4 line 507 ;506: // slide along the ground plane ;507: PM_ClipVelocity (pm->ps->velocity, pml.groundTrace.plane.normal, ADDRLP4 60 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ASGNP4 ADDRLP4 60 INDIRP4 ARGP4 ADDRGP4 pml+52+24 ARGP4 ADDRLP4 60 INDIRP4 ARGP4 CNSTF4 1065361605 ARGF4 ADDRGP4 PM_ClipVelocity CALLV pop line 510 ;508: pm->ps->velocity, OVERCLIP ); ;509: ;510: VectorNormalize(pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 511 ;511: VectorScale(pm->ps->velocity, vel, pm->ps->velocity); ADDRLP4 64 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ASGNP4 ADDRLP4 64 INDIRP4 ADDRLP4 64 INDIRP4 INDIRF4 ADDRLP4 36 INDIRF4 MULF4 ASGNF4 ADDRLP4 68 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 ASGNP4 ADDRLP4 68 INDIRP4 ADDRLP4 68 INDIRP4 INDIRF4 ADDRLP4 36 INDIRF4 MULF4 ASGNF4 ADDRLP4 72 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 72 INDIRP4 ADDRLP4 72 INDIRP4 INDIRF4 ADDRLP4 36 INDIRF4 MULF4 ASGNF4 line 512 ;512: } LABELV $201 line 514 ;513: ;514: PM_SlideMove( qfalse ); CNSTI4 0 ARGI4 ADDRGP4 PM_SlideMove CALLI4 pop line 515 ;515:} LABELV $186 endproc PM_WaterMove 76 16 proc PM_InvulnerabilityMove 8 0 line 525 ;516: ;517:#ifdef MISSIONPACK ;518:/* ;519:=================== ;520:PM_InvulnerabilityMove ;521: ;522:Only with the invulnerability powerup ;523:=================== ;524:*/ ;525:static void PM_InvulnerabilityMove( void ) { line 526 ;526: pm->cmd.forwardmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 CNSTI1 0 ASGNI1 line 527 ;527: pm->cmd.rightmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 26 ADDP4 CNSTI1 0 ASGNI1 line 528 ;528: pm->cmd.upmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 CNSTI1 0 ASGNI1 line 529 ;529: VectorClear(pm->ps->velocity); ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 4 CNSTF4 0 ASGNF4 ADDRLP4 0 INDIRP4 CNSTI4 40 ADDP4 ADDRLP4 4 INDIRF4 ASGNF4 ADDRLP4 0 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 4 INDIRF4 ASGNF4 ADDRLP4 0 INDIRP4 CNSTI4 32 ADDP4 ADDRLP4 4 INDIRF4 ASGNF4 line 530 ;530:} LABELV $214 endproc PM_InvulnerabilityMove 8 0 proc PM_FlyMove 52 12 line 540 ;531:#endif ;532: ;533:/* ;534:=================== ;535:PM_FlyMove ;536: ;537:Only with the flight powerup ;538:=================== ;539:*/ ;540:static void PM_FlyMove( void ) { line 548 ;541: int i; ;542: vec3_t wishvel; ;543: float wishspeed; ;544: vec3_t wishdir; ;545: float scale; ;546: ;547: // normal slowdown ;548: PM_Friction (); ADDRGP4 PM_Friction CALLV pop line 550 ;549: ;550: scale = PM_CmdScale( &pm->cmd ); ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 ARGP4 ADDRLP4 36 ADDRGP4 PM_CmdScale CALLF4 ASGNF4 ADDRLP4 4 ADDRLP4 36 INDIRF4 ASGNF4 line 554 ;551: // ;552: // user intentions ;553: // ;554: if ( !scale ) { ADDRLP4 4 INDIRF4 CNSTF4 0 NEF4 $216 line 555 ;555: wishvel[0] = 0; ADDRLP4 8 CNSTF4 0 ASGNF4 line 556 ;556: wishvel[1] = 0; ADDRLP4 8+4 CNSTF4 0 ASGNF4 line 557 ;557: wishvel[2] = 0; ADDRLP4 8+8 CNSTF4 0 ASGNF4 line 558 ;558: } else { ADDRGP4 $217 JUMPV LABELV $216 line 559 ;559: for (i=0 ; i<3 ; i++) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $220 line 560 ;560: wishvel[i] = scale * pml.forward[i]*pm->cmd.forwardmove + scale * pml.right[i]*pm->cmd.rightmove; ADDRLP4 40 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 48 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 40 INDIRI4 ADDRLP4 8 ADDP4 ADDRLP4 4 INDIRF4 ADDRLP4 40 INDIRI4 ADDRGP4 pml ADDP4 INDIRF4 MULF4 ADDRLP4 48 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CVIF4 4 MULF4 ADDRLP4 4 INDIRF4 ADDRLP4 40 INDIRI4 ADDRGP4 pml+12 ADDP4 INDIRF4 MULF4 ADDRLP4 48 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 CVIF4 4 MULF4 ADDF4 ASGNF4 line 561 ;561: } LABELV $221 line 559 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $220 line 563 ;562: ;563: wishvel[2] += scale * pm->cmd.upmove; ADDRLP4 8+8 ADDRLP4 8+8 INDIRF4 ADDRLP4 4 INDIRF4 ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 INDIRI1 CVII4 1 CVIF4 4 MULF4 ADDF4 ASGNF4 line 564 ;564: } LABELV $217 line 566 ;565: ;566: VectorCopy (wishvel, wishdir); ADDRLP4 20 ADDRLP4 8 INDIRB ASGNB 12 line 567 ;567: wishspeed = VectorNormalize(wishdir); ADDRLP4 20 ARGP4 ADDRLP4 40 ADDRGP4 VectorNormalize CALLF4 ASGNF4 ADDRLP4 32 ADDRLP4 40 INDIRF4 ASGNF4 line 569 ;568: ;569: PM_Accelerate (wishdir, wishspeed, pm_flyaccelerate); ADDRLP4 20 ARGP4 ADDRLP4 32 INDIRF4 ARGF4 ADDRGP4 pm_flyaccelerate INDIRF4 ARGF4 ADDRGP4 PM_Accelerate CALLV pop line 571 ;570: ;571: PM_StepSlideMove( qfalse ); CNSTI4 0 ARGI4 ADDRGP4 PM_StepSlideMove CALLV pop line 572 ;572:} LABELV $215 endproc PM_FlyMove 52 12 proc PM_AirMove 80 16 line 581 ;573: ;574: ;575:/* ;576:=================== ;577:PM_AirMove ;578: ;579:=================== ;580:*/ ;581:static void PM_AirMove( void ) { line 590 ;582: int i; ;583: vec3_t wishvel; ;584: float fmove, smove; ;585: vec3_t wishdir; ;586: float wishspeed; ;587: float scale; ;588: usercmd_t cmd; ;589: ;590: PM_Friction(); ADDRGP4 PM_Friction CALLV pop line 592 ;591: ;592: fmove = pm->cmd.forwardmove; ADDRLP4 16 ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CVIF4 4 ASGNF4 line 593 ;593: smove = pm->cmd.rightmove; ADDRLP4 20 ADDRGP4 pm INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 CVIF4 4 ASGNF4 line 595 ;594: ;595: cmd = pm->cmd; ADDRLP4 44 ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 INDIRB ASGNB 24 line 596 ;596: scale = PM_CmdScale( &cmd ); ADDRLP4 44 ARGP4 ADDRLP4 68 ADDRGP4 PM_CmdScale CALLF4 ASGNF4 ADDRLP4 40 ADDRLP4 68 INDIRF4 ASGNF4 line 599 ;597: ;598: // set the movementDir so clients can rotate the legs for strafing ;599: PM_SetMovementDir(); ADDRGP4 PM_SetMovementDir CALLV pop line 602 ;600: ;601: // project moves down to flat plane ;602: pml.forward[2] = 0; ADDRGP4 pml+8 CNSTF4 0 ASGNF4 line 603 ;603: pml.right[2] = 0; ADDRGP4 pml+12+8 CNSTF4 0 ASGNF4 line 604 ;604: VectorNormalize (pml.forward); ADDRGP4 pml ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 605 ;605: VectorNormalize (pml.right); ADDRGP4 pml+12 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 607 ;606: ;607: for ( i = 0 ; i < 2 ; i++ ) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $231 line 608 ;608: wishvel[i] = pml.forward[i]*fmove + pml.right[i]*smove; ADDRLP4 72 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 72 INDIRI4 ADDRLP4 4 ADDP4 ADDRLP4 72 INDIRI4 ADDRGP4 pml ADDP4 INDIRF4 ADDRLP4 16 INDIRF4 MULF4 ADDRLP4 72 INDIRI4 ADDRGP4 pml+12 ADDP4 INDIRF4 ADDRLP4 20 INDIRF4 MULF4 ADDF4 ASGNF4 line 609 ;609: } LABELV $232 line 607 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 2 LTI4 $231 line 610 ;610: wishvel[2] = 0; ADDRLP4 4+8 CNSTF4 0 ASGNF4 line 612 ;611: ;612: VectorCopy (wishvel, wishdir); ADDRLP4 24 ADDRLP4 4 INDIRB ASGNB 12 line 613 ;613: wishspeed = VectorNormalize(wishdir); ADDRLP4 24 ARGP4 ADDRLP4 72 ADDRGP4 VectorNormalize CALLF4 ASGNF4 ADDRLP4 36 ADDRLP4 72 INDIRF4 ASGNF4 line 614 ;614: wishspeed *= scale; ADDRLP4 36 ADDRLP4 36 INDIRF4 ADDRLP4 40 INDIRF4 MULF4 ASGNF4 line 617 ;615: ;616: // not on ground, so little effect on velocity ;617: PM_Accelerate (wishdir, wishspeed, pm_airaccelerate); ADDRLP4 24 ARGP4 ADDRLP4 36 INDIRF4 ARGF4 ADDRGP4 pm_airaccelerate INDIRF4 ARGF4 ADDRGP4 PM_Accelerate CALLV pop line 622 ;618: ;619: // we may have a ground plane that is very steep, even ;620: // though we don't have a groundentity ;621: // slide along the steep plane ;622: if ( pml.groundPlane ) { ADDRGP4 pml+48 INDIRI4 CNSTI4 0 EQI4 $237 line 623 ;623: PM_ClipVelocity (pm->ps->velocity, pml.groundTrace.plane.normal, ADDRLP4 76 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ASGNP4 ADDRLP4 76 INDIRP4 ARGP4 ADDRGP4 pml+52+24 ARGP4 ADDRLP4 76 INDIRP4 ARGP4 CNSTF4 1065361605 ARGF4 ADDRGP4 PM_ClipVelocity CALLV pop line 625 ;624: pm->ps->velocity, OVERCLIP ); ;625: } LABELV $237 line 637 ;626: ;627:#if 0 ;628: //ZOID: If we are on the grapple, try stair-stepping ;629: //this allows a player to use the grapple to pull himself ;630: //over a ledge ;631: if (pm->ps->pm_flags & PMF_GRAPPLE_PULL) ;632: PM_StepSlideMove ( qtrue ); ;633: else ;634: PM_SlideMove ( qtrue ); ;635:#endif ;636: ;637: PM_StepSlideMove ( qtrue ); CNSTI4 1 ARGI4 ADDRGP4 PM_StepSlideMove CALLV pop line 638 ;638:} LABELV $226 endproc PM_AirMove 80 16 proc PM_GrappleMove 52 4 line 646 ;639: ;640:/* ;641:=================== ;642:PM_GrappleMove ;643: ;644:=================== ;645:*/ ;646:static void PM_GrappleMove( void ) { line 650 ;647: vec3_t vel, v; ;648: float vlen; ;649: ;650: VectorScale(pml.forward, -16, v); ADDRLP4 28 CNSTF4 3246391296 ASGNF4 ADDRLP4 12 ADDRLP4 28 INDIRF4 ADDRGP4 pml INDIRF4 MULF4 ASGNF4 ADDRLP4 12+4 ADDRLP4 28 INDIRF4 ADDRGP4 pml+4 INDIRF4 MULF4 ASGNF4 ADDRLP4 12+8 CNSTF4 3246391296 ADDRGP4 pml+8 INDIRF4 MULF4 ASGNF4 line 651 ;651: VectorAdd(pm->ps->grapplePoint, v, v); ADDRLP4 32 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 12 ADDRLP4 32 INDIRP4 INDIRP4 CNSTI4 92 ADDP4 INDIRF4 ADDRLP4 12 INDIRF4 ADDF4 ASGNF4 ADDRLP4 12+4 ADDRLP4 32 INDIRP4 INDIRP4 CNSTI4 96 ADDP4 INDIRF4 ADDRLP4 12+4 INDIRF4 ADDF4 ASGNF4 ADDRLP4 12+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 100 ADDP4 INDIRF4 ADDRLP4 12+8 INDIRF4 ADDF4 ASGNF4 line 652 ;652: VectorSubtract(v, pm->ps->origin, vel); ADDRLP4 36 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 0 ADDRLP4 12 INDIRF4 ADDRLP4 36 INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 0+4 ADDRLP4 12+4 INDIRF4 ADDRLP4 36 INDIRP4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 SUBF4 ASGNF4 ADDRLP4 0+8 ADDRLP4 12+8 INDIRF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 SUBF4 ASGNF4 line 653 ;653: vlen = VectorLength(vel); ADDRLP4 0 ARGP4 ADDRLP4 40 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 24 ADDRLP4 40 INDIRF4 ASGNF4 line 654 ;654: VectorNormalize( vel ); ADDRLP4 0 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 656 ;655: ;656: if (vlen <= 100) ADDRLP4 24 INDIRF4 CNSTF4 1120403456 GTF4 $255 line 657 ;657: VectorScale(vel, 10 * vlen, vel); ADDRLP4 44 CNSTF4 1092616192 ADDRLP4 24 INDIRF4 MULF4 ASGNF4 ADDRLP4 0 ADDRLP4 0 INDIRF4 ADDRLP4 44 INDIRF4 MULF4 ASGNF4 ADDRLP4 0+4 ADDRLP4 0+4 INDIRF4 ADDRLP4 44 INDIRF4 MULF4 ASGNF4 ADDRLP4 0+8 ADDRLP4 0+8 INDIRF4 CNSTF4 1092616192 ADDRLP4 24 INDIRF4 MULF4 MULF4 ASGNF4 ADDRGP4 $256 JUMPV LABELV $255 line 659 ;658: else ;659: VectorScale(vel, 800, vel); ADDRLP4 48 CNSTF4 1145569280 ASGNF4 ADDRLP4 0 ADDRLP4 48 INDIRF4 ADDRLP4 0 INDIRF4 MULF4 ASGNF4 ADDRLP4 0+4 ADDRLP4 48 INDIRF4 ADDRLP4 0+4 INDIRF4 MULF4 ASGNF4 ADDRLP4 0+8 CNSTF4 1145569280 ADDRLP4 0+8 INDIRF4 MULF4 ASGNF4 LABELV $256 line 661 ;660: ;661: VectorCopy(vel, pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ADDRLP4 0 INDIRB ASGNB 12 line 663 ;662: ;663: pml.groundPlane = qfalse; ADDRGP4 pml+48 CNSTI4 0 ASGNI4 line 664 ;664:} LABELV $242 endproc PM_GrappleMove 52 4 proc PM_WalkMove 128 16 line 672 ;665: ;666:/* ;667:=================== ;668:PM_WalkMove ;669: ;670:=================== ;671:*/ ;672:static void PM_WalkMove( void ) { line 683 ;673: int i; ;674: vec3_t wishvel; ;675: float fmove, smove; ;676: vec3_t wishdir; ;677: float wishspeed; ;678: float scale; ;679: usercmd_t cmd; ;680: float accelerate; ;681: float vel; ;682: ;683: if ( pm->waterlevel > 2 && DotProduct( pml.forward, pml.groundTrace.plane.normal ) > 0 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 2 LEI4 $267 ADDRGP4 pml INDIRF4 ADDRGP4 pml+52+24 INDIRF4 MULF4 ADDRGP4 pml+4 INDIRF4 ADDRGP4 pml+52+24+4 INDIRF4 MULF4 ADDF4 ADDRGP4 pml+8 INDIRF4 ADDRGP4 pml+52+24+8 INDIRF4 MULF4 ADDF4 CNSTF4 0 LEF4 $267 line 685 ;684: // begin swimming ;685: PM_WaterMove(); ADDRGP4 PM_WaterMove CALLV pop line 686 ;686: return; ADDRGP4 $266 JUMPV LABELV $267 line 690 ;687: } ;688: ;689: ;690: if ( PM_CheckJump () ) { ADDRLP4 76 ADDRGP4 PM_CheckJump CALLI4 ASGNI4 ADDRLP4 76 INDIRI4 CNSTI4 0 EQI4 $279 line 692 ;691: // jumped away ;692: if ( pm->waterlevel > 1 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 1 LEI4 $281 line 693 ;693: PM_WaterMove(); ADDRGP4 PM_WaterMove CALLV pop line 694 ;694: } else { ADDRGP4 $266 JUMPV LABELV $281 line 695 ;695: PM_AirMove(); ADDRGP4 PM_AirMove CALLV pop line 696 ;696: } line 697 ;697: return; ADDRGP4 $266 JUMPV LABELV $279 line 700 ;698: } ;699: ;700: PM_Friction (); ADDRGP4 PM_Friction CALLV pop line 702 ;701: ;702: fmove = pm->cmd.forwardmove; ADDRLP4 16 ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CVIF4 4 ASGNF4 line 703 ;703: smove = pm->cmd.rightmove; ADDRLP4 20 ADDRGP4 pm INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 CVIF4 4 ASGNF4 line 705 ;704: ;705: cmd = pm->cmd; ADDRLP4 48 ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 INDIRB ASGNB 24 line 706 ;706: scale = PM_CmdScale( &cmd ); ADDRLP4 48 ARGP4 ADDRLP4 80 ADDRGP4 PM_CmdScale CALLF4 ASGNF4 ADDRLP4 44 ADDRLP4 80 INDIRF4 ASGNF4 line 709 ;707: ;708: // set the movementDir so clients can rotate the legs for strafing ;709: PM_SetMovementDir(); ADDRGP4 PM_SetMovementDir CALLV pop line 712 ;710: ;711: // project moves down to flat plane ;712: pml.forward[2] = 0; ADDRGP4 pml+8 CNSTF4 0 ASGNF4 line 713 ;713: pml.right[2] = 0; ADDRGP4 pml+12+8 CNSTF4 0 ASGNF4 line 716 ;714: ;715: // project the forward and right directions onto the ground plane ;716: PM_ClipVelocity (pml.forward, pml.groundTrace.plane.normal, pml.forward, OVERCLIP ); ADDRLP4 84 ADDRGP4 pml ASGNP4 ADDRLP4 84 INDIRP4 ARGP4 ADDRGP4 pml+52+24 ARGP4 ADDRLP4 84 INDIRP4 ARGP4 CNSTF4 1065361605 ARGF4 ADDRGP4 PM_ClipVelocity CALLV pop line 717 ;717: PM_ClipVelocity (pml.right, pml.groundTrace.plane.normal, pml.right, OVERCLIP ); ADDRGP4 pml+12 ARGP4 ADDRGP4 pml+52+24 ARGP4 ADDRGP4 pml+12 ARGP4 CNSTF4 1065361605 ARGF4 ADDRGP4 PM_ClipVelocity CALLV pop line 719 ;718: // ;719: VectorNormalize (pml.forward); ADDRGP4 pml ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 720 ;720: VectorNormalize (pml.right); ADDRGP4 pml+12 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 722 ;721: ;722: for ( i = 0 ; i < 3 ; i++ ) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $293 line 723 ;723: wishvel[i] = pml.forward[i]*fmove + pml.right[i]*smove; ADDRLP4 88 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 88 INDIRI4 ADDRLP4 4 ADDP4 ADDRLP4 88 INDIRI4 ADDRGP4 pml ADDP4 INDIRF4 ADDRLP4 16 INDIRF4 MULF4 ADDRLP4 88 INDIRI4 ADDRGP4 pml+12 ADDP4 INDIRF4 ADDRLP4 20 INDIRF4 MULF4 ADDF4 ASGNF4 line 724 ;724: } LABELV $294 line 722 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $293 line 728 ;725: // when going up or down slopes the wish velocity should Not be zero ;726:// wishvel[2] = 0; ;727: ;728: VectorCopy (wishvel, wishdir); ADDRLP4 32 ADDRLP4 4 INDIRB ASGNB 12 line 729 ;729: wishspeed = VectorNormalize(wishdir); ADDRLP4 32 ARGP4 ADDRLP4 88 ADDRGP4 VectorNormalize CALLF4 ASGNF4 ADDRLP4 24 ADDRLP4 88 INDIRF4 ASGNF4 line 730 ;730: wishspeed *= scale; ADDRLP4 24 ADDRLP4 24 INDIRF4 ADDRLP4 44 INDIRF4 MULF4 ASGNF4 line 733 ;731: ;732: // clamp the speed lower if ducking ;733: if ( pm->ps->pm_flags & PMF_DUCKED ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 EQI4 $298 line 734 ;734: if ( wishspeed > pm->ps->speed * pm_duckScale ) { ADDRLP4 24 INDIRF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 CVIF4 4 ADDRGP4 pm_duckScale INDIRF4 MULF4 LEF4 $300 line 735 ;735: wishspeed = pm->ps->speed * pm_duckScale; ADDRLP4 24 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 CVIF4 4 ADDRGP4 pm_duckScale INDIRF4 MULF4 ASGNF4 line 736 ;736: } LABELV $300 line 737 ;737: } LABELV $298 line 740 ;738: ;739: // clamp the speed lower if wading or walking on the bottom ;740: if ( pm->waterlevel ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 0 EQI4 $302 line 743 ;741: float waterScale; ;742: ;743: waterScale = pm->waterlevel / 3.0; ADDRLP4 92 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CVIF4 4 CNSTF4 1077936128 DIVF4 ASGNF4 line 744 ;744: waterScale = 1.0 - ( 1.0 - pm_swimScale ) * waterScale; ADDRLP4 96 CNSTF4 1065353216 ASGNF4 ADDRLP4 92 ADDRLP4 96 INDIRF4 ADDRLP4 96 INDIRF4 ADDRGP4 pm_swimScale INDIRF4 SUBF4 ADDRLP4 92 INDIRF4 MULF4 SUBF4 ASGNF4 line 745 ;745: if ( wishspeed > pm->ps->speed * waterScale ) { ADDRLP4 24 INDIRF4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 CVIF4 4 ADDRLP4 92 INDIRF4 MULF4 LEF4 $304 line 746 ;746: wishspeed = pm->ps->speed * waterScale; ADDRLP4 24 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 52 ADDP4 INDIRI4 CVIF4 4 ADDRLP4 92 INDIRF4 MULF4 ASGNF4 line 747 ;747: } LABELV $304 line 748 ;748: } LABELV $302 line 752 ;749: ;750: // when a player gets hit, they temporarily lose ;751: // full control, which allows them to be moved a bit ;752: if ( ( pml.groundTrace.surfaceFlags & SURF_SLICK ) || pm->ps->pm_flags & PMF_TIME_KNOCKBACK ) { ADDRLP4 92 CNSTI4 0 ASGNI4 ADDRGP4 pml+52+44 INDIRI4 CNSTI4 2 BANDI4 ADDRLP4 92 INDIRI4 NEI4 $310 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 64 BANDI4 ADDRLP4 92 INDIRI4 EQI4 $306 LABELV $310 line 753 ;753: accelerate = pm_airaccelerate; ADDRLP4 72 ADDRGP4 pm_airaccelerate INDIRF4 ASGNF4 line 754 ;754: } else { ADDRGP4 $307 JUMPV LABELV $306 line 755 ;755: accelerate = pm_accelerate; ADDRLP4 72 ADDRGP4 pm_accelerate INDIRF4 ASGNF4 line 756 ;756: } LABELV $307 line 758 ;757: ;758: PM_Accelerate (wishdir, wishspeed, accelerate); ADDRLP4 32 ARGP4 ADDRLP4 24 INDIRF4 ARGF4 ADDRLP4 72 INDIRF4 ARGF4 ADDRGP4 PM_Accelerate CALLV pop line 763 ;759: ;760: //Com_Printf("velocity = %1.1f %1.1f %1.1f\n", pm->ps->velocity[0], pm->ps->velocity[1], pm->ps->velocity[2]); ;761: //Com_Printf("velocity1 = %1.1f\n", VectorLength(pm->ps->velocity)); ;762: ;763: if ( ( pml.groundTrace.surfaceFlags & SURF_SLICK ) || pm->ps->pm_flags & PMF_TIME_KNOCKBACK ) { ADDRLP4 96 CNSTI4 0 ASGNI4 ADDRGP4 pml+52+44 INDIRI4 CNSTI4 2 BANDI4 ADDRLP4 96 INDIRI4 NEI4 $315 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 64 BANDI4 ADDRLP4 96 INDIRI4 EQI4 $311 LABELV $315 line 764 ;764: pm->ps->velocity[2] -= pm->ps->gravity * pml.frametime; ADDRLP4 100 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 104 ADDRLP4 100 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 104 INDIRP4 ADDRLP4 104 INDIRP4 INDIRF4 ADDRLP4 100 INDIRP4 CNSTI4 48 ADDP4 INDIRI4 CVIF4 4 ADDRGP4 pml+36 INDIRF4 MULF4 SUBF4 ASGNF4 line 765 ;765: } else { LABELV $311 line 768 ;766: // don't reset the z velocity for slopes ;767:// pm->ps->velocity[2] = 0; ;768: } LABELV $312 line 770 ;769: ;770: vel = VectorLength(pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRLP4 100 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 28 ADDRLP4 100 INDIRF4 ASGNF4 line 773 ;771: ;772: // slide along the ground plane ;773: PM_ClipVelocity (pm->ps->velocity, pml.groundTrace.plane.normal, ADDRLP4 104 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ASGNP4 ADDRLP4 104 INDIRP4 ARGP4 ADDRGP4 pml+52+24 ARGP4 ADDRLP4 104 INDIRP4 ARGP4 CNSTF4 1065361605 ARGF4 ADDRGP4 PM_ClipVelocity CALLV pop line 777 ;774: pm->ps->velocity, OVERCLIP ); ;775: ;776: // don't decrease velocity when going up or down a slope ;777: VectorNormalize(pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 778 ;778: VectorScale(pm->ps->velocity, vel, pm->ps->velocity); ADDRLP4 108 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ASGNP4 ADDRLP4 108 INDIRP4 ADDRLP4 108 INDIRP4 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 ADDRLP4 112 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 ASGNP4 ADDRLP4 112 INDIRP4 ADDRLP4 112 INDIRP4 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 ADDRLP4 116 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 116 INDIRP4 ADDRLP4 116 INDIRP4 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 line 781 ;779: ;780: // don't do anything if standing still ;781: if (!pm->ps->velocity[0] && !pm->ps->velocity[1]) { ADDRLP4 120 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 124 CNSTF4 0 ASGNF4 ADDRLP4 120 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 ADDRLP4 124 INDIRF4 NEF4 $319 ADDRLP4 120 INDIRP4 CNSTI4 36 ADDP4 INDIRF4 ADDRLP4 124 INDIRF4 NEF4 $319 line 782 ;782: return; ADDRGP4 $266 JUMPV LABELV $319 line 785 ;783: } ;784: ;785: PM_StepSlideMove( qfalse ); CNSTI4 0 ARGI4 ADDRGP4 PM_StepSlideMove CALLV pop line 789 ;786: ;787: //Com_Printf("velocity2 = %1.1f\n", VectorLength(pm->ps->velocity)); ;788: ;789:} LABELV $266 endproc PM_WalkMove 128 16 proc PM_DeadMove 20 4 line 797 ;790: ;791: ;792:/* ;793:============== ;794:PM_DeadMove ;795:============== ;796:*/ ;797:static void PM_DeadMove( void ) { line 800 ;798: float forward; ;799: ;800: if ( !pml.walking ) { ADDRGP4 pml+44 INDIRI4 CNSTI4 0 NEI4 $322 line 801 ;801: return; ADDRGP4 $321 JUMPV LABELV $322 line 806 ;802: } ;803: ;804: // extra friction ;805: ;806: forward = VectorLength (pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRLP4 4 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 0 ADDRLP4 4 INDIRF4 ASGNF4 line 807 ;807: forward -= 20; ADDRLP4 0 ADDRLP4 0 INDIRF4 CNSTF4 1101004800 SUBF4 ASGNF4 line 808 ;808: if ( forward <= 0 ) { ADDRLP4 0 INDIRF4 CNSTF4 0 GTF4 $325 line 809 ;809: VectorClear (pm->ps->velocity); ADDRLP4 8 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 12 CNSTF4 0 ASGNF4 ADDRLP4 8 INDIRP4 CNSTI4 40 ADDP4 ADDRLP4 12 INDIRF4 ASGNF4 ADDRLP4 8 INDIRP4 CNSTI4 36 ADDP4 ADDRLP4 12 INDIRF4 ASGNF4 ADDRLP4 8 INDIRP4 CNSTI4 32 ADDP4 ADDRLP4 12 INDIRF4 ASGNF4 line 810 ;810: } else { ADDRGP4 $326 JUMPV LABELV $325 line 811 ;811: VectorNormalize (pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRGP4 VectorNormalize CALLF4 pop line 812 ;812: VectorScale (pm->ps->velocity, forward, pm->ps->velocity); ADDRLP4 8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRF4 ADDRLP4 0 INDIRF4 MULF4 ASGNF4 ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 ASGNP4 ADDRLP4 12 INDIRP4 ADDRLP4 12 INDIRP4 INDIRF4 ADDRLP4 0 INDIRF4 MULF4 ASGNF4 ADDRLP4 16 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 16 INDIRP4 ADDRLP4 16 INDIRP4 INDIRF4 ADDRLP4 0 INDIRF4 MULF4 ASGNF4 line 813 ;813: } LABELV $326 line 814 ;814:} LABELV $321 endproc PM_DeadMove 20 4 proc PM_NoclipMove 104 12 line 822 ;815: ;816: ;817:/* ;818:=============== ;819:PM_NoclipMove ;820:=============== ;821:*/ ;822:static void PM_NoclipMove( void ) { line 831 ;823: float speed, drop, friction, control, newspeed; ;824: int i; ;825: vec3_t wishvel; ;826: float fmove, smove; ;827: vec3_t wishdir; ;828: float wishspeed; ;829: float scale; ;830: ;831: pm->ps->viewheight = DEFAULT_VIEWHEIGHT; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 164 ADDP4 CNSTI4 26 ASGNI4 line 835 ;832: ;833: // friction ;834: ;835: speed = VectorLength (pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRLP4 64 ADDRGP4 VectorLength CALLF4 ASGNF4 ADDRLP4 24 ADDRLP4 64 INDIRF4 ASGNF4 line 836 ;836: if (speed < 1) ADDRLP4 24 INDIRF4 CNSTF4 1065353216 GEF4 $328 line 837 ;837: { line 838 ;838: VectorCopy (vec3_origin, pm->ps->velocity); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ADDRGP4 vec3_origin INDIRB ASGNB 12 line 839 ;839: } ADDRGP4 $329 JUMPV LABELV $328 line 841 ;840: else ;841: { line 842 ;842: drop = 0; ADDRLP4 52 CNSTF4 0 ASGNF4 line 844 ;843: ;844: friction = pm_friction*1.5; // extra friction ADDRLP4 56 CNSTF4 1069547520 ADDRGP4 pm_friction INDIRF4 MULF4 ASGNF4 line 845 ;845: control = speed < pm_stopspeed ? pm_stopspeed : speed; ADDRLP4 24 INDIRF4 ADDRGP4 pm_stopspeed INDIRF4 GEF4 $331 ADDRLP4 68 ADDRGP4 pm_stopspeed INDIRF4 ASGNF4 ADDRGP4 $332 JUMPV LABELV $331 ADDRLP4 68 ADDRLP4 24 INDIRF4 ASGNF4 LABELV $332 ADDRLP4 60 ADDRLP4 68 INDIRF4 ASGNF4 line 846 ;846: drop += control*friction*pml.frametime; ADDRLP4 52 ADDRLP4 52 INDIRF4 ADDRLP4 60 INDIRF4 ADDRLP4 56 INDIRF4 MULF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDF4 ASGNF4 line 849 ;847: ;848: // scale the velocity ;849: newspeed = speed - drop; ADDRLP4 28 ADDRLP4 24 INDIRF4 ADDRLP4 52 INDIRF4 SUBF4 ASGNF4 line 850 ;850: if (newspeed < 0) ADDRLP4 28 INDIRF4 CNSTF4 0 GEF4 $334 line 851 ;851: newspeed = 0; ADDRLP4 28 CNSTF4 0 ASGNF4 LABELV $334 line 852 ;852: newspeed /= speed; ADDRLP4 28 ADDRLP4 28 INDIRF4 ADDRLP4 24 INDIRF4 DIVF4 ASGNF4 line 854 ;853: ;854: VectorScale (pm->ps->velocity, newspeed, pm->ps->velocity); ADDRLP4 72 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ASGNP4 ADDRLP4 72 INDIRP4 ADDRLP4 72 INDIRP4 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 ADDRLP4 76 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 36 ADDP4 ASGNP4 ADDRLP4 76 INDIRP4 ADDRLP4 76 INDIRP4 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 ADDRLP4 80 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 40 ADDP4 ASGNP4 ADDRLP4 80 INDIRP4 ADDRLP4 80 INDIRP4 INDIRF4 ADDRLP4 28 INDIRF4 MULF4 ASGNF4 line 855 ;855: } LABELV $329 line 858 ;856: ;857: // accelerate ;858: scale = PM_CmdScale( &pm->cmd ); ADDRGP4 pm INDIRP4 CNSTI4 4 ADDP4 ARGP4 ADDRLP4 68 ADDRGP4 PM_CmdScale CALLF4 ASGNF4 ADDRLP4 48 ADDRLP4 68 INDIRF4 ASGNF4 line 860 ;859: ;860: fmove = pm->cmd.forwardmove; ADDRLP4 16 ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CVIF4 4 ASGNF4 line 861 ;861: smove = pm->cmd.rightmove; ADDRLP4 20 ADDRGP4 pm INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 CVIF4 4 ASGNF4 line 863 ;862: ;863: for (i=0 ; i<3 ; i++) ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $336 line 864 ;864: wishvel[i] = pml.forward[i]*fmove + pml.right[i]*smove; ADDRLP4 72 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 72 INDIRI4 ADDRLP4 4 ADDP4 ADDRLP4 72 INDIRI4 ADDRGP4 pml ADDP4 INDIRF4 ADDRLP4 16 INDIRF4 MULF4 ADDRLP4 72 INDIRI4 ADDRGP4 pml+12 ADDP4 INDIRF4 ADDRLP4 20 INDIRF4 MULF4 ADDF4 ASGNF4 LABELV $337 line 863 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $336 line 865 ;865: wishvel[2] += pm->cmd.upmove; ADDRLP4 4+8 ADDRLP4 4+8 INDIRF4 ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 INDIRI1 CVII4 1 CVIF4 4 ADDF4 ASGNF4 line 867 ;866: ;867: VectorCopy (wishvel, wishdir); ADDRLP4 32 ADDRLP4 4 INDIRB ASGNB 12 line 868 ;868: wishspeed = VectorNormalize(wishdir); ADDRLP4 32 ARGP4 ADDRLP4 76 ADDRGP4 VectorNormalize CALLF4 ASGNF4 ADDRLP4 44 ADDRLP4 76 INDIRF4 ASGNF4 line 869 ;869: wishspeed *= scale; ADDRLP4 44 ADDRLP4 44 INDIRF4 ADDRLP4 48 INDIRF4 MULF4 ASGNF4 line 871 ;870: ;871: PM_Accelerate( wishdir, wishspeed, pm_accelerate ); ADDRLP4 32 ARGP4 ADDRLP4 44 INDIRF4 ARGF4 ADDRGP4 pm_accelerate INDIRF4 ARGF4 ADDRGP4 PM_Accelerate CALLV pop line 874 ;872: ;873: // move ;874: VectorMA (pm->ps->origin, pml.frametime, pm->ps->velocity, pm->ps->origin); ADDRLP4 80 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 84 ADDRLP4 80 INDIRP4 CNSTI4 20 ADDP4 ASGNP4 ADDRLP4 84 INDIRP4 ADDRLP4 84 INDIRP4 INDIRF4 ADDRLP4 80 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 88 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 92 ADDRLP4 88 INDIRP4 CNSTI4 24 ADDP4 ASGNP4 ADDRLP4 92 INDIRP4 ADDRLP4 92 INDIRP4 INDIRF4 ADDRLP4 88 INDIRP4 CNSTI4 36 ADDP4 INDIRF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDF4 ASGNF4 ADDRLP4 96 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 100 ADDRLP4 96 INDIRP4 CNSTI4 28 ADDP4 ASGNP4 ADDRLP4 100 INDIRP4 ADDRLP4 100 INDIRP4 INDIRF4 ADDRLP4 96 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 ADDRGP4 pml+36 INDIRF4 MULF4 ADDF4 ASGNF4 line 875 ;875:} LABELV $327 endproc PM_NoclipMove 104 12 proc PM_FootstepForSurface 0 0 line 886 ;876: ;877://============================================================================ ;878: ;879:/* ;880:================ ;881:PM_FootstepForSurface ;882: ;883:Returns an event number apropriate for the groundsurface ;884:================ ;885:*/ ;886:static int PM_FootstepForSurface( void ) { line 887 ;887: if ( pml.groundTrace.surfaceFlags & SURF_NOSTEPS ) { ADDRGP4 pml+52+44 INDIRI4 CNSTI4 8192 BANDI4 CNSTI4 0 EQI4 $346 line 888 ;888: return 0; CNSTI4 0 RETI4 ADDRGP4 $345 JUMPV LABELV $346 line 890 ;889: } ;890: if ( pml.groundTrace.surfaceFlags & SURF_METALSTEPS ) { ADDRGP4 pml+52+44 INDIRI4 CNSTI4 4096 BANDI4 CNSTI4 0 EQI4 $350 line 891 ;891: return EV_FOOTSTEP_METAL; CNSTI4 2 RETI4 ADDRGP4 $345 JUMPV LABELV $350 line 893 ;892: } ;893: return EV_FOOTSTEP; CNSTI4 1 RETI4 LABELV $345 endproc PM_FootstepForSurface 0 0 proc PM_CrashLand 52 4 line 904 ;894:} ;895: ;896: ;897:/* ;898:================= ;899:PM_CrashLand ;900: ;901:Check for hard landings that generate sound events ;902:================= ;903:*/ ;904:static void PM_CrashLand( void ) { line 912 ;905: float delta; ;906: float dist; ;907: float vel, acc; ;908: float t; ;909: float a, b, c, den; ;910: ;911: // decide which landing animation to use ;912: if ( pm->ps->pm_flags & PMF_BACKWARDS_JUMP ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 8 BANDI4 CNSTI4 0 EQI4 $355 line 913 ;913: PM_ForceLegsAnim( LEGS_LANDB ); CNSTI4 21 ARGI4 ADDRGP4 PM_ForceLegsAnim CALLV pop line 914 ;914: } else { ADDRGP4 $356 JUMPV LABELV $355 line 915 ;915: PM_ForceLegsAnim( LEGS_LAND ); CNSTI4 19 ARGI4 ADDRGP4 PM_ForceLegsAnim CALLV pop line 916 ;916: } LABELV $356 line 918 ;917: ;918: pm->ps->legsTimer = TIMER_LAND; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 72 ADDP4 CNSTI4 130 ASGNI4 line 921 ;919: ;920: // calculate the exact velocity on landing ;921: dist = pm->ps->origin[2] - pml.previous_origin[2]; ADDRLP4 24 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 ADDRGP4 pml+112+8 INDIRF4 SUBF4 ASGNF4 line 922 ;922: vel = pml.previous_velocity[2]; ADDRLP4 8 ADDRGP4 pml+124+8 INDIRF4 ASGNF4 line 923 ;923: acc = -pm->ps->gravity; ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 48 ADDP4 INDIRI4 NEGI4 CVIF4 4 ASGNF4 line 925 ;924: ;925: a = acc / 2; ADDRLP4 16 ADDRLP4 12 INDIRF4 CNSTF4 1073741824 DIVF4 ASGNF4 line 926 ;926: b = vel; ADDRLP4 4 ADDRLP4 8 INDIRF4 ASGNF4 line 927 ;927: c = -dist; ADDRLP4 32 ADDRLP4 24 INDIRF4 NEGF4 ASGNF4 line 929 ;928: ;929: den = b * b - 4 * a * c; ADDRLP4 20 ADDRLP4 4 INDIRF4 ADDRLP4 4 INDIRF4 MULF4 CNSTF4 1082130432 ADDRLP4 16 INDIRF4 MULF4 ADDRLP4 32 INDIRF4 MULF4 SUBF4 ASGNF4 line 930 ;930: if ( den < 0 ) { ADDRLP4 20 INDIRF4 CNSTF4 0 GEF4 $361 line 931 ;931: return; ADDRGP4 $354 JUMPV LABELV $361 line 933 ;932: } ;933: t = (-b - sqrt( den ) ) / ( 2 * a ); ADDRLP4 20 INDIRF4 ARGF4 ADDRLP4 40 ADDRGP4 sqrt CALLF4 ASGNF4 ADDRLP4 28 ADDRLP4 4 INDIRF4 NEGF4 ADDRLP4 40 INDIRF4 SUBF4 CNSTF4 1073741824 ADDRLP4 16 INDIRF4 MULF4 DIVF4 ASGNF4 line 935 ;934: ;935: delta = vel + t * acc; ADDRLP4 0 ADDRLP4 8 INDIRF4 ADDRLP4 28 INDIRF4 ADDRLP4 12 INDIRF4 MULF4 ADDF4 ASGNF4 line 936 ;936: delta = delta*delta * 0.0001; ADDRLP4 0 CNSTF4 953267991 ADDRLP4 0 INDIRF4 ADDRLP4 0 INDIRF4 MULF4 MULF4 ASGNF4 line 939 ;937: ;938: // ducking while falling doubles damage ;939: if ( pm->ps->pm_flags & PMF_DUCKED ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 EQI4 $363 line 940 ;940: delta *= 2; ADDRLP4 0 CNSTF4 1073741824 ADDRLP4 0 INDIRF4 MULF4 ASGNF4 line 941 ;941: } LABELV $363 line 944 ;942: ;943: // never take falling damage if completely underwater ;944: if ( pm->waterlevel == 3 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 3 NEI4 $365 line 945 ;945: return; ADDRGP4 $354 JUMPV LABELV $365 line 949 ;946: } ;947: ;948: // reduce falling damage if there is standing water ;949: if ( pm->waterlevel == 2 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 2 NEI4 $367 line 950 ;950: delta *= 0.25; ADDRLP4 0 CNSTF4 1048576000 ADDRLP4 0 INDIRF4 MULF4 ASGNF4 line 951 ;951: } LABELV $367 line 952 ;952: if ( pm->waterlevel == 1 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 1 NEI4 $369 line 953 ;953: delta *= 0.5; ADDRLP4 0 CNSTF4 1056964608 ADDRLP4 0 INDIRF4 MULF4 ASGNF4 line 954 ;954: } LABELV $369 line 956 ;955: ;956: if ( delta < 1 ) { ADDRLP4 0 INDIRF4 CNSTF4 1065353216 GEF4 $371 line 957 ;957: return; ADDRGP4 $354 JUMPV LABELV $371 line 964 ;958: } ;959: ;960: // create a local entity event to play the sound ;961: ;962: // SURF_NODAMAGE is used for bounce pads where you don't ever ;963: // want to take damage or play a crunch sound ;964: if ( !(pml.groundTrace.surfaceFlags & SURF_NODAMAGE) ) { ADDRGP4 pml+52+44 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 NEI4 $373 line 965 ;965: if ( delta > 60 ) { ADDRLP4 0 INDIRF4 CNSTF4 1114636288 LEF4 $377 line 966 ;966: PM_AddEvent( EV_FALL_FAR ); CNSTI4 12 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 967 ;967: } else if ( delta > 40 ) { ADDRGP4 $378 JUMPV LABELV $377 ADDRLP4 0 INDIRF4 CNSTF4 1109393408 LEF4 $379 line 969 ;968: // this is a pain grunt, so don't play it if dead ;969: if ( pm->ps->stats[STAT_HEALTH] > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 184 ADDP4 INDIRI4 CNSTI4 0 LEI4 $380 line 970 ;970: PM_AddEvent( EV_FALL_MEDIUM ); CNSTI4 11 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 971 ;971: } line 972 ;972: } else if ( delta > 7 ) { ADDRGP4 $380 JUMPV LABELV $379 ADDRLP4 0 INDIRF4 CNSTF4 1088421888 LEF4 $383 line 973 ;973: PM_AddEvent( EV_FALL_SHORT ); CNSTI4 10 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 974 ;974: } else { ADDRGP4 $384 JUMPV LABELV $383 line 975 ;975: PM_AddEvent( PM_FootstepForSurface() ); ADDRLP4 48 ADDRGP4 PM_FootstepForSurface CALLI4 ASGNI4 ADDRLP4 48 INDIRI4 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 976 ;976: } LABELV $384 LABELV $380 LABELV $378 line 977 ;977: } LABELV $373 line 980 ;978: ;979: // start footstep cycle over ;980: pm->ps->bobCycle = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 8 ADDP4 CNSTI4 0 ASGNI4 line 981 ;981:} LABELV $354 endproc PM_CrashLand 52 4 proc PM_CorrectAllSolid 36 28 line 1004 ;982: ;983:/* ;984:============= ;985:PM_CheckStuck ;986:============= ;987:*/ ;988:/* ;989:void PM_CheckStuck(void) { ;990: trace_t trace; ;991: ;992: pm->trace (&trace, pm->ps->origin, pm->mins, pm->maxs, pm->ps->origin, pm->ps->clientNum, pm->tracemask); ;993: if (trace.allsolid) { ;994: //int shit = qtrue; ;995: } ;996:} ;997:*/ ;998: ;999:/* ;1000:============= ;1001:PM_CorrectAllSolid ;1002:============= ;1003:*/ ;1004:static int PM_CorrectAllSolid( trace_t *trace ) { line 1008 ;1005: int i, j, k; ;1006: vec3_t point; ;1007: ;1008: if ( pm->debugLevel ) { ADDRGP4 pm INDIRP4 CNSTI4 32 ADDP4 INDIRI4 CNSTI4 0 EQI4 $386 line 1009 ;1009: Com_Printf("%i:allsolid\n", c_pmove); ADDRGP4 $388 ARGP4 ADDRGP4 c_pmove INDIRI4 ARGI4 ADDRGP4 Com_Printf CALLV pop line 1010 ;1010: } LABELV $386 line 1013 ;1011: ;1012: // jitter around ;1013: for (i = -1; i <= 1; i++) { ADDRLP4 20 CNSTI4 -1 ASGNI4 LABELV $389 line 1014 ;1014: for (j = -1; j <= 1; j++) { ADDRLP4 16 CNSTI4 -1 ASGNI4 LABELV $393 line 1015 ;1015: for (k = -1; k <= 1; k++) { ADDRLP4 12 CNSTI4 -1 ASGNI4 LABELV $397 line 1016 ;1016: VectorCopy(pm->ps->origin, point); ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRB ASGNB 12 line 1017 ;1017: point[0] += (float) i; ADDRLP4 0 ADDRLP4 0 INDIRF4 ADDRLP4 20 INDIRI4 CVIF4 4 ADDF4 ASGNF4 line 1018 ;1018: point[1] += (float) j; ADDRLP4 0+4 ADDRLP4 0+4 INDIRF4 ADDRLP4 16 INDIRI4 CVIF4 4 ADDF4 ASGNF4 line 1019 ;1019: point[2] += (float) k; ADDRLP4 0+8 ADDRLP4 0+8 INDIRF4 ADDRLP4 12 INDIRI4 CVIF4 4 ADDF4 ASGNF4 line 1020 ;1020: pm->trace (trace, point, pm->mins, pm->maxs, point, pm->ps->clientNum, pm->tracemask); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 0 ARGP4 ADDRLP4 24 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 24 INDIRP4 CNSTI4 180 ADDP4 ARGP4 ADDRLP4 24 INDIRP4 CNSTI4 192 ADDP4 ARGP4 ADDRLP4 0 ARGP4 ADDRLP4 24 INDIRP4 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 24 INDIRP4 CNSTI4 28 ADDP4 INDIRI4 ARGI4 ADDRLP4 24 INDIRP4 CNSTI4 224 ADDP4 INDIRP4 CALLV pop line 1021 ;1021: if ( !trace->allsolid ) { ADDRFP4 0 INDIRP4 INDIRI4 CNSTI4 0 NEI4 $403 line 1022 ;1022: point[0] = pm->ps->origin[0]; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRF4 ASGNF4 line 1023 ;1023: point[1] = pm->ps->origin[1]; ADDRLP4 0+4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 ASGNF4 line 1024 ;1024: point[2] = pm->ps->origin[2] - 0.25; ADDRLP4 0+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 1048576000 SUBF4 ASGNF4 line 1026 ;1025: ;1026: pm->trace (trace, pm->ps->origin, pm->mins, pm->maxs, point, pm->ps->clientNum, pm->tracemask); ADDRFP4 0 INDIRP4 ARGP4 ADDRLP4 28 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 32 ADDRLP4 28 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 32 INDIRP4 CNSTI4 20 ADDP4 ARGP4 ADDRLP4 28 INDIRP4 CNSTI4 180 ADDP4 ARGP4 ADDRLP4 28 INDIRP4 CNSTI4 192 ADDP4 ARGP4 ADDRLP4 0 ARGP4 ADDRLP4 32 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 28 INDIRP4 CNSTI4 28 ADDP4 INDIRI4 ARGI4 ADDRLP4 28 INDIRP4 CNSTI4 224 ADDP4 INDIRP4 CALLV pop line 1027 ;1027: pml.groundTrace = *trace; ADDRGP4 pml+52 ADDRFP4 0 INDIRP4 INDIRB ASGNB 56 line 1028 ;1028: return qtrue; CNSTI4 1 RETI4 ADDRGP4 $385 JUMPV LABELV $403 line 1030 ;1029: } ;1030: } LABELV $398 line 1015 ADDRLP4 12 ADDRLP4 12 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 12 INDIRI4 CNSTI4 1 LEI4 $397 line 1031 ;1031: } LABELV $394 line 1014 ADDRLP4 16 ADDRLP4 16 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 16 INDIRI4 CNSTI4 1 LEI4 $393 line 1032 ;1032: } LABELV $390 line 1013 ADDRLP4 20 ADDRLP4 20 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 20 INDIRI4 CNSTI4 1 LEI4 $389 line 1034 ;1033: ;1034: pm->ps->groundEntityNum = ENTITYNUM_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 CNSTI4 1023 ASGNI4 line 1035 ;1035: pml.groundPlane = qfalse; ADDRGP4 pml+48 CNSTI4 0 ASGNI4 line 1036 ;1036: pml.walking = qfalse; ADDRGP4 pml+44 CNSTI4 0 ASGNI4 line 1038 ;1037: ;1038: return qfalse; CNSTI4 0 RETI4 LABELV $385 endproc PM_CorrectAllSolid 36 28 proc PM_GroundTraceMissed 80 28 line 1049 ;1039:} ;1040: ;1041: ;1042:/* ;1043:============= ;1044:PM_GroundTraceMissed ;1045: ;1046:The ground trace didn't hit a surface, so we are in freefall ;1047:============= ;1048:*/ ;1049:static void PM_GroundTraceMissed( void ) { line 1053 ;1050: trace_t trace; ;1051: vec3_t point; ;1052: ;1053: if ( pm->ps->groundEntityNum != ENTITYNUM_NONE ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 INDIRI4 CNSTI4 1023 EQI4 $411 line 1055 ;1054: // we just transitioned into freefall ;1055: if ( pm->debugLevel ) { ADDRGP4 pm INDIRP4 CNSTI4 32 ADDP4 INDIRI4 CNSTI4 0 EQI4 $413 line 1056 ;1056: Com_Printf("%i:lift\n", c_pmove); ADDRGP4 $415 ARGP4 ADDRGP4 c_pmove INDIRI4 ARGI4 ADDRGP4 Com_Printf CALLV pop line 1057 ;1057: } LABELV $413 line 1061 ;1058: ;1059: // if they aren't in a jumping animation and the ground is a ways away, force into it ;1060: // if we didn't do the trace, the player would be backflipping down staircases ;1061: VectorCopy( pm->ps->origin, point ); ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRB ASGNB 12 line 1062 ;1062: point[2] -= 64; ADDRLP4 0+8 ADDRLP4 0+8 INDIRF4 CNSTF4 1115684864 SUBF4 ASGNF4 line 1064 ;1063: ;1064: pm->trace (&trace, pm->ps->origin, pm->mins, pm->maxs, point, pm->ps->clientNum, pm->tracemask); ADDRLP4 12 ARGP4 ADDRLP4 68 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 72 ADDRLP4 68 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 CNSTI4 20 ADDP4 ARGP4 ADDRLP4 68 INDIRP4 CNSTI4 180 ADDP4 ARGP4 ADDRLP4 68 INDIRP4 CNSTI4 192 ADDP4 ARGP4 ADDRLP4 0 ARGP4 ADDRLP4 72 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 68 INDIRP4 CNSTI4 28 ADDP4 INDIRI4 ARGI4 ADDRLP4 68 INDIRP4 CNSTI4 224 ADDP4 INDIRP4 CALLV pop line 1065 ;1065: if ( trace.fraction == 1.0 ) { ADDRLP4 12+8 INDIRF4 CNSTF4 1065353216 NEF4 $417 line 1066 ;1066: if ( pm->cmd.forwardmove >= 0 ) { ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LTI4 $420 line 1067 ;1067: PM_ForceLegsAnim( LEGS_JUMP ); CNSTI4 18 ARGI4 ADDRGP4 PM_ForceLegsAnim CALLV pop line 1068 ;1068: pm->ps->pm_flags &= ~PMF_BACKWARDS_JUMP; ADDRLP4 76 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 76 INDIRP4 ADDRLP4 76 INDIRP4 INDIRI4 CNSTI4 -9 BANDI4 ASGNI4 line 1069 ;1069: } else { ADDRGP4 $421 JUMPV LABELV $420 line 1070 ;1070: PM_ForceLegsAnim( LEGS_JUMPB ); CNSTI4 20 ARGI4 ADDRGP4 PM_ForceLegsAnim CALLV pop line 1071 ;1071: pm->ps->pm_flags |= PMF_BACKWARDS_JUMP; ADDRLP4 76 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 76 INDIRP4 ADDRLP4 76 INDIRP4 INDIRI4 CNSTI4 8 BORI4 ASGNI4 line 1072 ;1072: } LABELV $421 line 1073 ;1073: } LABELV $417 line 1074 ;1074: } LABELV $411 line 1076 ;1075: ;1076: pm->ps->groundEntityNum = ENTITYNUM_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 CNSTI4 1023 ASGNI4 line 1077 ;1077: pml.groundPlane = qfalse; ADDRGP4 pml+48 CNSTI4 0 ASGNI4 line 1078 ;1078: pml.walking = qfalse; ADDRGP4 pml+44 CNSTI4 0 ASGNI4 line 1079 ;1079:} LABELV $410 endproc PM_GroundTraceMissed 80 28 proc PM_GroundTrace 88 28 line 1087 ;1080: ;1081: ;1082:/* ;1083:============= ;1084:PM_GroundTrace ;1085:============= ;1086:*/ ;1087:static void PM_GroundTrace( void ) { line 1091 ;1088: vec3_t point; ;1089: trace_t trace; ;1090: ;1091: point[0] = pm->ps->origin[0]; ADDRLP4 56 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRF4 ASGNF4 line 1092 ;1092: point[1] = pm->ps->origin[1]; ADDRLP4 56+4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 ASGNF4 line 1093 ;1093: point[2] = pm->ps->origin[2] - 0.25; ADDRLP4 56+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 1048576000 SUBF4 ASGNF4 line 1095 ;1094: ;1095: pm->trace (&trace, pm->ps->origin, pm->mins, pm->maxs, point, pm->ps->clientNum, pm->tracemask); ADDRLP4 0 ARGP4 ADDRLP4 68 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 72 ADDRLP4 68 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 72 INDIRP4 CNSTI4 20 ADDP4 ARGP4 ADDRLP4 68 INDIRP4 CNSTI4 180 ADDP4 ARGP4 ADDRLP4 68 INDIRP4 CNSTI4 192 ADDP4 ARGP4 ADDRLP4 56 ARGP4 ADDRLP4 72 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 68 INDIRP4 CNSTI4 28 ADDP4 INDIRI4 ARGI4 ADDRLP4 68 INDIRP4 CNSTI4 224 ADDP4 INDIRP4 CALLV pop line 1096 ;1096: pml.groundTrace = trace; ADDRGP4 pml+52 ADDRLP4 0 INDIRB ASGNB 56 line 1099 ;1097: ;1098: // do something corrective if the trace starts in a solid... ;1099: if ( trace.allsolid ) { ADDRLP4 0 INDIRI4 CNSTI4 0 EQI4 $428 line 1100 ;1100: if ( !PM_CorrectAllSolid(&trace) ) ADDRLP4 0 ARGP4 ADDRLP4 76 ADDRGP4 PM_CorrectAllSolid CALLI4 ASGNI4 ADDRLP4 76 INDIRI4 CNSTI4 0 NEI4 $430 line 1101 ;1101: return; ADDRGP4 $424 JUMPV LABELV $430 line 1102 ;1102: } LABELV $428 line 1105 ;1103: ;1104: // if the trace didn't hit anything, we are in free fall ;1105: if ( trace.fraction == 1.0 ) { ADDRLP4 0+8 INDIRF4 CNSTF4 1065353216 NEF4 $432 line 1106 ;1106: PM_GroundTraceMissed(); ADDRGP4 PM_GroundTraceMissed CALLV pop line 1107 ;1107: pml.groundPlane = qfalse; ADDRGP4 pml+48 CNSTI4 0 ASGNI4 line 1108 ;1108: pml.walking = qfalse; ADDRGP4 pml+44 CNSTI4 0 ASGNI4 line 1109 ;1109: return; ADDRGP4 $424 JUMPV LABELV $432 line 1113 ;1110: } ;1111: ;1112: // check if getting thrown off the ground ;1113: if ( pm->ps->velocity[2] > 0 && DotProduct( pm->ps->velocity, trace.plane.normal ) > 10 ) { ADDRLP4 76 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 80 ADDRLP4 76 INDIRP4 CNSTI4 40 ADDP4 INDIRF4 ASGNF4 ADDRLP4 80 INDIRF4 CNSTF4 0 LEF4 $437 ADDRLP4 76 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 ADDRLP4 0+24 INDIRF4 MULF4 ADDRLP4 76 INDIRP4 CNSTI4 36 ADDP4 INDIRF4 ADDRLP4 0+24+4 INDIRF4 MULF4 ADDF4 ADDRLP4 80 INDIRF4 ADDRLP4 0+24+8 INDIRF4 MULF4 ADDF4 CNSTF4 1092616192 LEF4 $437 line 1114 ;1114: if ( pm->debugLevel ) { ADDRGP4 pm INDIRP4 CNSTI4 32 ADDP4 INDIRI4 CNSTI4 0 EQI4 $444 line 1115 ;1115: Com_Printf("%i:kickoff\n", c_pmove); ADDRGP4 $446 ARGP4 ADDRGP4 c_pmove INDIRI4 ARGI4 ADDRGP4 Com_Printf CALLV pop line 1116 ;1116: } LABELV $444 line 1118 ;1117: // go into jump animation ;1118: if ( pm->cmd.forwardmove >= 0 ) { ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 LTI4 $447 line 1119 ;1119: PM_ForceLegsAnim( LEGS_JUMP ); CNSTI4 18 ARGI4 ADDRGP4 PM_ForceLegsAnim CALLV pop line 1120 ;1120: pm->ps->pm_flags &= ~PMF_BACKWARDS_JUMP; ADDRLP4 84 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 84 INDIRP4 ADDRLP4 84 INDIRP4 INDIRI4 CNSTI4 -9 BANDI4 ASGNI4 line 1121 ;1121: } else { ADDRGP4 $448 JUMPV LABELV $447 line 1122 ;1122: PM_ForceLegsAnim( LEGS_JUMPB ); CNSTI4 20 ARGI4 ADDRGP4 PM_ForceLegsAnim CALLV pop line 1123 ;1123: pm->ps->pm_flags |= PMF_BACKWARDS_JUMP; ADDRLP4 84 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 84 INDIRP4 ADDRLP4 84 INDIRP4 INDIRI4 CNSTI4 8 BORI4 ASGNI4 line 1124 ;1124: } LABELV $448 line 1126 ;1125: ;1126: pm->ps->groundEntityNum = ENTITYNUM_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 CNSTI4 1023 ASGNI4 line 1127 ;1127: pml.groundPlane = qfalse; ADDRGP4 pml+48 CNSTI4 0 ASGNI4 line 1128 ;1128: pml.walking = qfalse; ADDRGP4 pml+44 CNSTI4 0 ASGNI4 line 1129 ;1129: return; ADDRGP4 $424 JUMPV LABELV $437 line 1133 ;1130: } ;1131: ;1132: // slopes that are too steep will not be considered onground ;1133: if ( trace.plane.normal[2] < MIN_WALK_NORMAL ) { ADDRLP4 0+24+8 INDIRF4 CNSTF4 1060320051 GEF4 $451 line 1134 ;1134: if ( pm->debugLevel ) { ADDRGP4 pm INDIRP4 CNSTI4 32 ADDP4 INDIRI4 CNSTI4 0 EQI4 $455 line 1135 ;1135: Com_Printf("%i:steep\n", c_pmove); ADDRGP4 $457 ARGP4 ADDRGP4 c_pmove INDIRI4 ARGI4 ADDRGP4 Com_Printf CALLV pop line 1136 ;1136: } LABELV $455 line 1139 ;1137: // FIXME: if they can't slide down the slope, let them ;1138: // walk (sharp crevices) ;1139: pm->ps->groundEntityNum = ENTITYNUM_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 CNSTI4 1023 ASGNI4 line 1140 ;1140: pml.groundPlane = qtrue; ADDRGP4 pml+48 CNSTI4 1 ASGNI4 line 1141 ;1141: pml.walking = qfalse; ADDRGP4 pml+44 CNSTI4 0 ASGNI4 line 1142 ;1142: return; ADDRGP4 $424 JUMPV LABELV $451 line 1145 ;1143: } ;1144: ;1145: pml.groundPlane = qtrue; ADDRGP4 pml+48 CNSTI4 1 ASGNI4 line 1146 ;1146: pml.walking = qtrue; ADDRGP4 pml+44 CNSTI4 1 ASGNI4 line 1149 ;1147: ;1148: // hitting solid ground will end a waterjump ;1149: if (pm->ps->pm_flags & PMF_TIME_WATERJUMP) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 256 BANDI4 CNSTI4 0 EQI4 $462 line 1150 ;1150: { line 1151 ;1151: pm->ps->pm_flags &= ~(PMF_TIME_WATERJUMP | PMF_TIME_LAND); ADDRLP4 84 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 84 INDIRP4 ADDRLP4 84 INDIRP4 INDIRI4 CNSTI4 -289 BANDI4 ASGNI4 line 1152 ;1152: pm->ps->pm_time = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 CNSTI4 0 ASGNI4 line 1153 ;1153: } LABELV $462 line 1155 ;1154: ;1155: if ( pm->ps->groundEntityNum == ENTITYNUM_NONE ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 INDIRI4 CNSTI4 1023 NEI4 $464 line 1157 ;1156: // just hit the ground ;1157: if ( pm->debugLevel ) { ADDRGP4 pm INDIRP4 CNSTI4 32 ADDP4 INDIRI4 CNSTI4 0 EQI4 $466 line 1158 ;1158: Com_Printf("%i:Land\n", c_pmove); ADDRGP4 $468 ARGP4 ADDRGP4 c_pmove INDIRI4 ARGI4 ADDRGP4 Com_Printf CALLV pop line 1159 ;1159: } LABELV $466 line 1161 ;1160: ;1161: PM_CrashLand(); ADDRGP4 PM_CrashLand CALLV pop line 1164 ;1162: ;1163: // don't do landing time if we were just going down a slope ;1164: if ( pml.previous_velocity[2] < -200 ) { ADDRGP4 pml+124+8 INDIRF4 CNSTF4 3276275712 GEF4 $469 line 1166 ;1165: // don't allow another jump for a little while ;1166: pm->ps->pm_flags |= PMF_TIME_LAND; ADDRLP4 84 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 84 INDIRP4 ADDRLP4 84 INDIRP4 INDIRI4 CNSTI4 32 BORI4 ASGNI4 line 1167 ;1167: pm->ps->pm_time = 250; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 CNSTI4 250 ASGNI4 line 1168 ;1168: } LABELV $469 line 1169 ;1169: } LABELV $464 line 1171 ;1170: ;1171: pm->ps->groundEntityNum = trace.entityNum; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 ADDRLP4 0+52 INDIRI4 ASGNI4 line 1176 ;1172: ;1173: // don't reset the z velocity for slopes ;1174:// pm->ps->velocity[2] = 0; ;1175: ;1176: PM_AddTouchEnt( trace.entityNum ); ADDRLP4 0+52 INDIRI4 ARGI4 ADDRGP4 PM_AddTouchEnt CALLV pop line 1177 ;1177:} LABELV $424 endproc PM_GroundTrace 88 28 proc PM_SetWaterLevel 48 8 line 1185 ;1178: ;1179: ;1180:/* ;1181:============= ;1182:PM_SetWaterLevel FIXME: avoid this twice? certainly if not moving ;1183:============= ;1184:*/ ;1185:static void PM_SetWaterLevel( void ) { line 1194 ;1186: vec3_t point; ;1187: int cont; ;1188: int sample1; ;1189: int sample2; ;1190: ;1191: // ;1192: // get waterlevel, accounting for ducking ;1193: // ;1194: pm->waterlevel = 0; ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 CNSTI4 0 ASGNI4 line 1195 ;1195: pm->watertype = 0; ADDRGP4 pm INDIRP4 CNSTI4 204 ADDP4 CNSTI4 0 ASGNI4 line 1197 ;1196: ;1197: point[0] = pm->ps->origin[0]; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRF4 ASGNF4 line 1198 ;1198: point[1] = pm->ps->origin[1]; ADDRLP4 0+4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 24 ADDP4 INDIRF4 ASGNF4 line 1199 ;1199: point[2] = pm->ps->origin[2] + MINS_Z + 1; ADDRLP4 0+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 3250585600 ADDF4 CNSTF4 1065353216 ADDF4 ASGNF4 line 1200 ;1200: cont = pm->pointcontents( point, pm->ps->clientNum ); ADDRLP4 0 ARGP4 ADDRLP4 24 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 24 INDIRP4 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 28 ADDRLP4 24 INDIRP4 CNSTI4 228 ADDP4 INDIRP4 CALLI4 ASGNI4 ADDRLP4 12 ADDRLP4 28 INDIRI4 ASGNI4 line 1202 ;1201: ;1202: if ( cont & MASK_WATER ) { ADDRLP4 12 INDIRI4 CNSTI4 56 BANDI4 CNSTI4 0 EQI4 $478 line 1203 ;1203: sample2 = pm->ps->viewheight - MINS_Z; ADDRLP4 16 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 164 ADDP4 INDIRI4 CNSTI4 -24 SUBI4 ASGNI4 line 1204 ;1204: sample1 = sample2 / 2; ADDRLP4 20 ADDRLP4 16 INDIRI4 CNSTI4 2 DIVI4 ASGNI4 line 1206 ;1205: ;1206: pm->watertype = cont; ADDRGP4 pm INDIRP4 CNSTI4 204 ADDP4 ADDRLP4 12 INDIRI4 ASGNI4 line 1207 ;1207: pm->waterlevel = 1; ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 CNSTI4 1 ASGNI4 line 1208 ;1208: point[2] = pm->ps->origin[2] + MINS_Z + sample1; ADDRLP4 0+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 3250585600 ADDF4 ADDRLP4 20 INDIRI4 CVIF4 4 ADDF4 ASGNF4 line 1209 ;1209: cont = pm->pointcontents (point, pm->ps->clientNum ); ADDRLP4 0 ARGP4 ADDRLP4 32 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 32 INDIRP4 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 36 ADDRLP4 32 INDIRP4 CNSTI4 228 ADDP4 INDIRP4 CALLI4 ASGNI4 ADDRLP4 12 ADDRLP4 36 INDIRI4 ASGNI4 line 1210 ;1210: if ( cont & MASK_WATER ) { ADDRLP4 12 INDIRI4 CNSTI4 56 BANDI4 CNSTI4 0 EQI4 $481 line 1211 ;1211: pm->waterlevel = 2; ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 CNSTI4 2 ASGNI4 line 1212 ;1212: point[2] = pm->ps->origin[2] + MINS_Z + sample2; ADDRLP4 0+8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 28 ADDP4 INDIRF4 CNSTF4 3250585600 ADDF4 ADDRLP4 16 INDIRI4 CVIF4 4 ADDF4 ASGNF4 line 1213 ;1213: cont = pm->pointcontents (point, pm->ps->clientNum ); ADDRLP4 0 ARGP4 ADDRLP4 40 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 40 INDIRP4 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 44 ADDRLP4 40 INDIRP4 CNSTI4 228 ADDP4 INDIRP4 CALLI4 ASGNI4 ADDRLP4 12 ADDRLP4 44 INDIRI4 ASGNI4 line 1214 ;1214: if ( cont & MASK_WATER ){ ADDRLP4 12 INDIRI4 CNSTI4 56 BANDI4 CNSTI4 0 EQI4 $484 line 1215 ;1215: pm->waterlevel = 3; ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 CNSTI4 3 ASGNI4 line 1216 ;1216: } LABELV $484 line 1217 ;1217: } LABELV $481 line 1218 ;1218: } LABELV $478 line 1220 ;1219: ;1220:} LABELV $475 endproc PM_SetWaterLevel 48 8 proc PM_CheckDuck 76 28 line 1230 ;1221: ;1222:/* ;1223:============== ;1224:PM_CheckDuck ;1225: ;1226:Sets mins, maxs, and pm->ps->viewheight ;1227:============== ;1228:*/ ;1229:static void PM_CheckDuck (void) ;1230:{ line 1233 ;1231: trace_t trace; ;1232: ;1233: if ( pm->ps->powerups[PW_INVULNERABILITY] ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 368 ADDP4 INDIRI4 CNSTI4 0 EQI4 $487 line 1234 ;1234: if ( pm->ps->pm_flags & PMF_INVULEXPAND ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 16384 BANDI4 CNSTI4 0 EQI4 $489 line 1236 ;1235: // invulnerability sphere has a 42 units radius ;1236: VectorSet( pm->mins, -42, -42, -42 ); ADDRGP4 pm INDIRP4 CNSTI4 180 ADDP4 CNSTF4 3257401344 ASGNF4 ADDRGP4 pm INDIRP4 CNSTI4 184 ADDP4 CNSTF4 3257401344 ASGNF4 ADDRGP4 pm INDIRP4 CNSTI4 188 ADDP4 CNSTF4 3257401344 ASGNF4 line 1237 ;1237: VectorSet( pm->maxs, 42, 42, 42 ); ADDRGP4 pm INDIRP4 CNSTI4 192 ADDP4 CNSTF4 1109917696 ASGNF4 ADDRGP4 pm INDIRP4 CNSTI4 196 ADDP4 CNSTF4 1109917696 ASGNF4 ADDRGP4 pm INDIRP4 CNSTI4 200 ADDP4 CNSTF4 1109917696 ASGNF4 line 1238 ;1238: } ADDRGP4 $490 JUMPV LABELV $489 line 1239 ;1239: else { line 1240 ;1240: VectorSet( pm->mins, -15, -15, MINS_Z ); ADDRGP4 pm INDIRP4 CNSTI4 180 ADDP4 CNSTF4 3245342720 ASGNF4 ADDRGP4 pm INDIRP4 CNSTI4 184 ADDP4 CNSTF4 3245342720 ASGNF4 ADDRGP4 pm INDIRP4 CNSTI4 188 ADDP4 CNSTF4 3250585600 ASGNF4 line 1241 ;1241: VectorSet( pm->maxs, 15, 15, 16 ); ADDRGP4 pm INDIRP4 CNSTI4 192 ADDP4 CNSTF4 1097859072 ASGNF4 ADDRGP4 pm INDIRP4 CNSTI4 196 ADDP4 CNSTF4 1097859072 ASGNF4 ADDRGP4 pm INDIRP4 CNSTI4 200 ADDP4 CNSTF4 1098907648 ASGNF4 line 1242 ;1242: } LABELV $490 line 1243 ;1243: pm->ps->pm_flags |= PMF_DUCKED; ADDRLP4 56 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 56 INDIRP4 ADDRLP4 56 INDIRP4 INDIRI4 CNSTI4 1 BORI4 ASGNI4 line 1244 ;1244: pm->ps->viewheight = CROUCH_VIEWHEIGHT; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 164 ADDP4 CNSTI4 12 ASGNI4 line 1245 ;1245: return; ADDRGP4 $486 JUMPV LABELV $487 line 1247 ;1246: } ;1247: pm->ps->pm_flags &= ~PMF_INVULEXPAND; ADDRLP4 56 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 56 INDIRP4 ADDRLP4 56 INDIRP4 INDIRI4 CNSTI4 -16385 BANDI4 ASGNI4 line 1249 ;1248: ;1249: pm->mins[0] = -15; ADDRGP4 pm INDIRP4 CNSTI4 180 ADDP4 CNSTF4 3245342720 ASGNF4 line 1250 ;1250: pm->mins[1] = -15; ADDRGP4 pm INDIRP4 CNSTI4 184 ADDP4 CNSTF4 3245342720 ASGNF4 line 1252 ;1251: ;1252: pm->maxs[0] = 15; ADDRGP4 pm INDIRP4 CNSTI4 192 ADDP4 CNSTF4 1097859072 ASGNF4 line 1253 ;1253: pm->maxs[1] = 15; ADDRGP4 pm INDIRP4 CNSTI4 196 ADDP4 CNSTF4 1097859072 ASGNF4 line 1255 ;1254: ;1255: pm->mins[2] = MINS_Z; ADDRGP4 pm INDIRP4 CNSTI4 188 ADDP4 CNSTF4 3250585600 ASGNF4 line 1257 ;1256: ;1257: if (pm->ps->pm_type == PM_DEAD) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 3 NEI4 $491 line 1258 ;1258: { line 1259 ;1259: pm->maxs[2] = -8; ADDRGP4 pm INDIRP4 CNSTI4 200 ADDP4 CNSTF4 3238002688 ASGNF4 line 1260 ;1260: pm->ps->viewheight = DEAD_VIEWHEIGHT; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 164 ADDP4 CNSTI4 -16 ASGNI4 line 1261 ;1261: return; ADDRGP4 $486 JUMPV LABELV $491 line 1264 ;1262: } ;1263: ;1264: if (pm->cmd.upmove < 0) ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $493 line 1265 ;1265: { // duck line 1266 ;1266: pm->ps->pm_flags |= PMF_DUCKED; ADDRLP4 60 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 60 INDIRP4 ADDRLP4 60 INDIRP4 INDIRI4 CNSTI4 1 BORI4 ASGNI4 line 1267 ;1267: } ADDRGP4 $494 JUMPV LABELV $493 line 1269 ;1268: else ;1269: { // stand up if possible line 1270 ;1270: if (pm->ps->pm_flags & PMF_DUCKED) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 EQI4 $495 line 1271 ;1271: { line 1273 ;1272: // try to stand up ;1273: pm->maxs[2] = 32; ADDRGP4 pm INDIRP4 CNSTI4 200 ADDP4 CNSTF4 1107296256 ASGNF4 line 1274 ;1274: pm->trace (&trace, pm->ps->origin, pm->mins, pm->maxs, pm->ps->origin, pm->ps->clientNum, pm->tracemask ); ADDRLP4 0 ARGP4 ADDRLP4 60 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 64 ADDRLP4 60 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 68 ADDRLP4 64 INDIRP4 CNSTI4 20 ADDP4 ASGNP4 ADDRLP4 68 INDIRP4 ARGP4 ADDRLP4 60 INDIRP4 CNSTI4 180 ADDP4 ARGP4 ADDRLP4 60 INDIRP4 CNSTI4 192 ADDP4 ARGP4 ADDRLP4 68 INDIRP4 ARGP4 ADDRLP4 64 INDIRP4 CNSTI4 140 ADDP4 INDIRI4 ARGI4 ADDRLP4 60 INDIRP4 CNSTI4 28 ADDP4 INDIRI4 ARGI4 ADDRLP4 60 INDIRP4 CNSTI4 224 ADDP4 INDIRP4 CALLV pop line 1275 ;1275: if (!trace.allsolid) ADDRLP4 0 INDIRI4 CNSTI4 0 NEI4 $497 line 1276 ;1276: pm->ps->pm_flags &= ~PMF_DUCKED; ADDRLP4 72 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 72 INDIRP4 ADDRLP4 72 INDIRP4 INDIRI4 CNSTI4 -2 BANDI4 ASGNI4 LABELV $497 line 1277 ;1277: } LABELV $495 line 1278 ;1278: } LABELV $494 line 1280 ;1279: ;1280: if (pm->ps->pm_flags & PMF_DUCKED) ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 EQI4 $499 line 1281 ;1281: { line 1282 ;1282: pm->maxs[2] = 16; ADDRGP4 pm INDIRP4 CNSTI4 200 ADDP4 CNSTF4 1098907648 ASGNF4 line 1283 ;1283: pm->ps->viewheight = CROUCH_VIEWHEIGHT; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 164 ADDP4 CNSTI4 12 ASGNI4 line 1284 ;1284: } ADDRGP4 $500 JUMPV LABELV $499 line 1286 ;1285: else ;1286: { line 1287 ;1287: pm->maxs[2] = 32; ADDRGP4 pm INDIRP4 CNSTI4 200 ADDP4 CNSTF4 1107296256 ASGNF4 line 1288 ;1288: pm->ps->viewheight = DEFAULT_VIEWHEIGHT; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 164 ADDP4 CNSTI4 26 ASGNI4 line 1289 ;1289: } LABELV $500 line 1290 ;1290:} LABELV $486 endproc PM_CheckDuck 76 28 proc PM_Footsteps 52 4 line 1302 ;1291: ;1292: ;1293: ;1294://=================================================================== ;1295: ;1296: ;1297:/* ;1298:=============== ;1299:PM_Footsteps ;1300:=============== ;1301:*/ ;1302:static void PM_Footsteps( void ) { line 1311 ;1303: float bobmove; ;1304: int old; ;1305: qboolean footstep; ;1306: ;1307: // ;1308: // calculate speed and cycle to be used for ;1309: // all cyclic walking effects ;1310: // ;1311: pm->xyspeed = sqrt( pm->ps->velocity[0] * pm->ps->velocity[0] ADDRLP4 12 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 16 ADDRLP4 12 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 20 ADDRLP4 16 INDIRP4 CNSTI4 32 ADDP4 INDIRF4 ASGNF4 ADDRLP4 24 ADDRLP4 16 INDIRP4 CNSTI4 36 ADDP4 INDIRF4 ASGNF4 ADDRLP4 20 INDIRF4 ADDRLP4 20 INDIRF4 MULF4 ADDRLP4 24 INDIRF4 ADDRLP4 24 INDIRF4 MULF4 ADDF4 ARGF4 ADDRLP4 28 ADDRGP4 sqrt CALLF4 ASGNF4 ADDRLP4 12 INDIRP4 CNSTI4 212 ADDP4 ADDRLP4 28 INDIRF4 ASGNF4 line 1314 ;1312: + pm->ps->velocity[1] * pm->ps->velocity[1] ); ;1313: ;1314: if ( pm->ps->groundEntityNum == ENTITYNUM_NONE ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 68 ADDP4 INDIRI4 CNSTI4 1023 NEI4 $502 line 1316 ;1315: ;1316: if ( pm->ps->powerups[PW_INVULNERABILITY] ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 368 ADDP4 INDIRI4 CNSTI4 0 EQI4 $504 line 1317 ;1317: PM_ContinueLegsAnim( LEGS_IDLECR ); CNSTI4 23 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1318 ;1318: } LABELV $504 line 1320 ;1319: // airborne leaves position in cycle intact, but doesn't advance ;1320: if ( pm->waterlevel > 1 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 1 LEI4 $501 line 1321 ;1321: PM_ContinueLegsAnim( LEGS_SWIM ); CNSTI4 17 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1322 ;1322: } line 1323 ;1323: return; ADDRGP4 $501 JUMPV LABELV $502 line 1327 ;1324: } ;1325: ;1326: // if not trying to move ;1327: if ( !pm->cmd.forwardmove && !pm->cmd.rightmove ) { ADDRLP4 32 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 36 CNSTI4 0 ASGNI4 ADDRLP4 32 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ADDRLP4 36 INDIRI4 NEI4 $508 ADDRLP4 32 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 36 INDIRI4 NEI4 $508 line 1328 ;1328: if ( pm->xyspeed < 5 ) { ADDRGP4 pm INDIRP4 CNSTI4 212 ADDP4 INDIRF4 CNSTF4 1084227584 GEF4 $501 line 1329 ;1329: pm->ps->bobCycle = 0; // start at beginning of cycle again ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 8 ADDP4 CNSTI4 0 ASGNI4 line 1330 ;1330: if ( pm->ps->pm_flags & PMF_DUCKED ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 EQI4 $512 line 1331 ;1331: PM_ContinueLegsAnim( LEGS_IDLECR ); CNSTI4 23 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1332 ;1332: } else { ADDRGP4 $501 JUMPV LABELV $512 line 1333 ;1333: PM_ContinueLegsAnim( LEGS_IDLE ); CNSTI4 22 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1334 ;1334: } line 1335 ;1335: } line 1336 ;1336: return; ADDRGP4 $501 JUMPV LABELV $508 line 1340 ;1337: } ;1338: ;1339: ;1340: footstep = qfalse; ADDRLP4 8 CNSTI4 0 ASGNI4 line 1342 ;1341: ;1342: if ( pm->ps->pm_flags & PMF_DUCKED ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 EQI4 $514 line 1343 ;1343: bobmove = 0.5; // ducked characters bob much faster ADDRLP4 4 CNSTF4 1056964608 ASGNF4 line 1344 ;1344: if ( pm->ps->pm_flags & PMF_BACKWARDS_RUN ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 16 BANDI4 CNSTI4 0 EQI4 $516 line 1345 ;1345: PM_ContinueLegsAnim( LEGS_BACKCR ); CNSTI4 32 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1346 ;1346: } ADDRGP4 $515 JUMPV LABELV $516 line 1347 ;1347: else { line 1348 ;1348: PM_ContinueLegsAnim( LEGS_WALKCR ); CNSTI4 13 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1349 ;1349: } line 1361 ;1350: // ducked characters never play footsteps ;1351: /* ;1352: } else if ( pm->ps->pm_flags & PMF_BACKWARDS_RUN ) { ;1353: if ( !( pm->cmd.buttons & BUTTON_WALKING ) ) { ;1354: bobmove = 0.4; // faster speeds bob faster ;1355: footstep = qtrue; ;1356: } else { ;1357: bobmove = 0.3; ;1358: } ;1359: PM_ContinueLegsAnim( LEGS_BACK ); ;1360: */ ;1361: } else { ADDRGP4 $515 JUMPV LABELV $514 line 1362 ;1362: if ( !( pm->cmd.buttons & BUTTON_WALKING ) ) { ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 16 BANDI4 CNSTI4 0 NEI4 $518 line 1363 ;1363: bobmove = 0.4f; // faster speeds bob faster ADDRLP4 4 CNSTF4 1053609165 ASGNF4 line 1364 ;1364: if ( pm->ps->pm_flags & PMF_BACKWARDS_RUN ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 16 BANDI4 CNSTI4 0 EQI4 $520 line 1365 ;1365: PM_ContinueLegsAnim( LEGS_BACK ); CNSTI4 16 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1366 ;1366: } ADDRGP4 $521 JUMPV LABELV $520 line 1367 ;1367: else { line 1368 ;1368: PM_ContinueLegsAnim( LEGS_RUN ); CNSTI4 15 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1369 ;1369: } LABELV $521 line 1370 ;1370: footstep = qtrue; ADDRLP4 8 CNSTI4 1 ASGNI4 line 1371 ;1371: } else { ADDRGP4 $519 JUMPV LABELV $518 line 1372 ;1372: bobmove = 0.3f; // walking bobs slow ADDRLP4 4 CNSTF4 1050253722 ASGNF4 line 1373 ;1373: if ( pm->ps->pm_flags & PMF_BACKWARDS_RUN ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 16 BANDI4 CNSTI4 0 EQI4 $522 line 1374 ;1374: PM_ContinueLegsAnim( LEGS_BACKWALK ); CNSTI4 33 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1375 ;1375: } ADDRGP4 $523 JUMPV LABELV $522 line 1376 ;1376: else { line 1377 ;1377: PM_ContinueLegsAnim( LEGS_WALK ); CNSTI4 14 ARGI4 ADDRGP4 PM_ContinueLegsAnim CALLV pop line 1378 ;1378: } LABELV $523 line 1379 ;1379: } LABELV $519 line 1380 ;1380: } LABELV $515 line 1383 ;1381: ;1382: // check for footstep / splash sounds ;1383: old = pm->ps->bobCycle; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 ASGNI4 line 1384 ;1384: pm->ps->bobCycle = (int)( old + bobmove * pml.msec ) & 255; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 8 ADDP4 ADDRLP4 0 INDIRI4 CVIF4 4 ADDRLP4 4 INDIRF4 ADDRGP4 pml+40 INDIRI4 CVIF4 4 MULF4 ADDF4 CVFI4 4 CNSTI4 255 BANDI4 ASGNI4 line 1387 ;1385: ;1386: // if we just crossed a cycle boundary, play an apropriate footstep event ;1387: if ( ( ( old + 64 ) ^ ( pm->ps->bobCycle + 64 ) ) & 128 ) { ADDRLP4 40 CNSTI4 64 ASGNI4 ADDRLP4 0 INDIRI4 ADDRLP4 40 INDIRI4 ADDI4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 8 ADDP4 INDIRI4 ADDRLP4 40 INDIRI4 ADDI4 BXORI4 CNSTI4 128 BANDI4 CNSTI4 0 EQI4 $525 line 1388 ;1388: if ( pm->waterlevel == 0 ) { ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 0 NEI4 $527 line 1390 ;1389: // on ground will only play sounds if running ;1390: if ( footstep && !pm->noFootsteps ) { ADDRLP4 44 CNSTI4 0 ASGNI4 ADDRLP4 8 INDIRI4 ADDRLP4 44 INDIRI4 EQI4 $528 ADDRGP4 pm INDIRP4 CNSTI4 36 ADDP4 INDIRI4 ADDRLP4 44 INDIRI4 NEI4 $528 line 1391 ;1391: PM_AddEvent( PM_FootstepForSurface() ); ADDRLP4 48 ADDRGP4 PM_FootstepForSurface CALLI4 ASGNI4 ADDRLP4 48 INDIRI4 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1392 ;1392: } line 1393 ;1393: } else if ( pm->waterlevel == 1 ) { ADDRGP4 $528 JUMPV LABELV $527 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 1 NEI4 $531 line 1395 ;1394: // splashing ;1395: PM_AddEvent( EV_FOOTSPLASH ); CNSTI4 3 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1396 ;1396: } else if ( pm->waterlevel == 2 ) { ADDRGP4 $532 JUMPV LABELV $531 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 2 NEI4 $533 line 1398 ;1397: // wading / swimming at surface ;1398: PM_AddEvent( EV_SWIM ); CNSTI4 5 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1399 ;1399: } else if ( pm->waterlevel == 3 ) { ADDRGP4 $534 JUMPV LABELV $533 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 3 NEI4 $535 line 1402 ;1400: // no sound when completely underwater ;1401: ;1402: } LABELV $535 LABELV $534 LABELV $532 LABELV $528 line 1403 ;1403: } LABELV $525 line 1404 ;1404:} LABELV $501 endproc PM_Footsteps 52 4 proc PM_WaterEvents 16 4 line 1413 ;1405: ;1406:/* ;1407:============== ;1408:PM_WaterEvents ;1409: ;1410:Generate sound events for entering and leaving water ;1411:============== ;1412:*/ ;1413:static void PM_WaterEvents( void ) { // FIXME? line 1417 ;1414: // ;1415: // if just entered a water volume, play a sound ;1416: // ;1417: if (!pml.previous_waterlevel && pm->waterlevel) { ADDRLP4 0 CNSTI4 0 ASGNI4 ADDRGP4 pml+136 INDIRI4 ADDRLP4 0 INDIRI4 NEI4 $538 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 ADDRLP4 0 INDIRI4 EQI4 $538 line 1418 ;1418: PM_AddEvent( EV_WATER_TOUCH ); CNSTI4 15 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1419 ;1419: } LABELV $538 line 1424 ;1420: ;1421: // ;1422: // if just completely exited a water volume, play a sound ;1423: // ;1424: if (pml.previous_waterlevel && !pm->waterlevel) { ADDRLP4 4 CNSTI4 0 ASGNI4 ADDRGP4 pml+136 INDIRI4 ADDRLP4 4 INDIRI4 EQI4 $541 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 ADDRLP4 4 INDIRI4 NEI4 $541 line 1425 ;1425: PM_AddEvent( EV_WATER_LEAVE ); CNSTI4 16 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1426 ;1426: } LABELV $541 line 1431 ;1427: ;1428: // ;1429: // check for head just going under water ;1430: // ;1431: if (pml.previous_waterlevel != 3 && pm->waterlevel == 3) { ADDRLP4 8 CNSTI4 3 ASGNI4 ADDRGP4 pml+136 INDIRI4 ADDRLP4 8 INDIRI4 EQI4 $544 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 ADDRLP4 8 INDIRI4 NEI4 $544 line 1432 ;1432: PM_AddEvent( EV_WATER_UNDER ); CNSTI4 17 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1433 ;1433: } LABELV $544 line 1438 ;1434: ;1435: // ;1436: // check for head just coming out of water ;1437: // ;1438: if (pml.previous_waterlevel == 3 && pm->waterlevel != 3) { ADDRLP4 12 CNSTI4 3 ASGNI4 ADDRGP4 pml+136 INDIRI4 ADDRLP4 12 INDIRI4 NEI4 $547 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 ADDRLP4 12 INDIRI4 EQI4 $547 line 1439 ;1439: PM_AddEvent( EV_WATER_CLEAR ); CNSTI4 18 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1440 ;1440: } LABELV $547 line 1441 ;1441:} LABELV $537 endproc PM_WaterEvents 16 4 proc PM_BeginWeaponChange 8 4 line 1449 ;1442: ;1443: ;1444:/* ;1445:=============== ;1446:PM_BeginWeaponChange ;1447:=============== ;1448:*/ ;1449:static void PM_BeginWeaponChange( int weapon ) { line 1450 ;1450: if ( weapon <= WP_NONE || weapon >= WP_NUM_WEAPONS ) { ADDRLP4 0 ADDRFP4 0 INDIRI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 0 LEI4 $553 ADDRLP4 0 INDIRI4 CNSTI4 14 LTI4 $551 LABELV $553 line 1451 ;1451: return; ADDRGP4 $550 JUMPV LABELV $551 line 1454 ;1452: } ;1453: ;1454: if ( !( pm->ps->stats[STAT_WEAPONS] & ( 1 << weapon ) ) ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 196 ADDP4 INDIRI4 CNSTI4 1 ADDRFP4 0 INDIRI4 LSHI4 BANDI4 CNSTI4 0 NEI4 $554 line 1455 ;1455: return; ADDRGP4 $550 JUMPV LABELV $554 line 1458 ;1456: } ;1457: ;1458: if ( pm->ps->weaponstate == WEAPON_DROPPING ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 INDIRI4 CNSTI4 2 NEI4 $556 line 1459 ;1459: return; ADDRGP4 $550 JUMPV LABELV $556 line 1462 ;1460: } ;1461: ;1462: PM_AddEvent( EV_CHANGE_WEAPON ); CNSTI4 22 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1463 ;1463: pm->ps->weaponstate = WEAPON_DROPPING; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 CNSTI4 2 ASGNI4 line 1464 ;1464: pm->ps->weaponTime += 200; ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 4 INDIRP4 ADDRLP4 4 INDIRP4 INDIRI4 CNSTI4 200 ADDI4 ASGNI4 line 1465 ;1465: PM_StartTorsoAnim( TORSO_DROP ); CNSTI4 9 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1466 ;1466:} LABELV $550 endproc PM_BeginWeaponChange 8 4 proc PM_FinishWeaponChange 12 4 line 1474 ;1467: ;1468: ;1469:/* ;1470:=============== ;1471:PM_FinishWeaponChange ;1472:=============== ;1473:*/ ;1474:static void PM_FinishWeaponChange( void ) { line 1477 ;1475: int weapon; ;1476: ;1477: weapon = pm->cmd.weapon; ADDRLP4 0 ADDRGP4 pm INDIRP4 CNSTI4 24 ADDP4 INDIRU1 CVUI4 1 ASGNI4 line 1478 ;1478: if ( weapon < WP_NONE || weapon >= WP_NUM_WEAPONS ) { ADDRLP4 0 INDIRI4 CNSTI4 0 LTI4 $561 ADDRLP4 0 INDIRI4 CNSTI4 14 LTI4 $559 LABELV $561 line 1479 ;1479: weapon = WP_NONE; ADDRLP4 0 CNSTI4 0 ASGNI4 line 1480 ;1480: } LABELV $559 line 1482 ;1481: ;1482: if ( !( pm->ps->stats[STAT_WEAPONS] & ( 1 << weapon ) ) ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 196 ADDP4 INDIRI4 CNSTI4 1 ADDRLP4 0 INDIRI4 LSHI4 BANDI4 CNSTI4 0 NEI4 $562 line 1483 ;1483: weapon = WP_NONE; ADDRLP4 0 CNSTI4 0 ASGNI4 line 1484 ;1484: } LABELV $562 line 1486 ;1485: ;1486: pm->ps->weapon = weapon; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 144 ADDP4 ADDRLP4 0 INDIRI4 ASGNI4 line 1487 ;1487: pm->ps->weaponstate = WEAPON_RAISING; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 CNSTI4 1 ASGNI4 line 1488 ;1488: pm->ps->weaponTime += 250; ADDRLP4 8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRI4 CNSTI4 250 ADDI4 ASGNI4 line 1489 ;1489: PM_StartTorsoAnim( TORSO_RAISE ); CNSTI4 10 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1490 ;1490:} LABELV $558 endproc PM_FinishWeaponChange 12 4 proc PM_TorsoAnimation 0 4 line 1499 ;1491: ;1492: ;1493:/* ;1494:============== ;1495:PM_TorsoAnimation ;1496: ;1497:============== ;1498:*/ ;1499:static void PM_TorsoAnimation( void ) { line 1500 ;1500: if ( pm->ps->weaponstate == WEAPON_READY ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 INDIRI4 CNSTI4 0 NEI4 $565 line 1501 ;1501: if ( pm->ps->weapon == WP_GAUNTLET ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 CNSTI4 1 NEI4 $567 line 1502 ;1502: PM_ContinueTorsoAnim( TORSO_STAND2 ); CNSTI4 12 ARGI4 ADDRGP4 PM_ContinueTorsoAnim CALLV pop line 1503 ;1503: } else { ADDRGP4 $564 JUMPV LABELV $567 line 1504 ;1504: PM_ContinueTorsoAnim( TORSO_STAND ); CNSTI4 11 ARGI4 ADDRGP4 PM_ContinueTorsoAnim CALLV pop line 1505 ;1505: } line 1506 ;1506: return; LABELV $565 line 1508 ;1507: } ;1508:} LABELV $564 endproc PM_TorsoAnimation 0 4 proc PM_Weapon 28 4 line 1518 ;1509: ;1510: ;1511:/* ;1512:============== ;1513:PM_Weapon ;1514: ;1515:Generates weapon events and modifes the weapon counter ;1516:============== ;1517:*/ ;1518:static void PM_Weapon( void ) { line 1522 ;1519: int addTime; ;1520: ;1521: // don't allow attack until all buttons are up ;1522: if ( pm->ps->pm_flags & PMF_RESPAWNED ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 512 BANDI4 CNSTI4 0 EQI4 $570 line 1523 ;1523: return; ADDRGP4 $569 JUMPV LABELV $570 line 1527 ;1524: } ;1525: ;1526: // ignore if spectator ;1527: if ( pm->ps->persistant[PERS_TEAM] == TEAM_SPECTATOR ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 260 ADDP4 INDIRI4 CNSTI4 3 NEI4 $572 line 1528 ;1528: return; ADDRGP4 $569 JUMPV LABELV $572 line 1532 ;1529: } ;1530: ;1531: // check for dead player ;1532: if ( pm->ps->stats[STAT_HEALTH] <= 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 184 ADDP4 INDIRI4 CNSTI4 0 GTI4 $574 line 1533 ;1533: pm->ps->weapon = WP_NONE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 144 ADDP4 CNSTI4 0 ASGNI4 line 1534 ;1534: return; ADDRGP4 $569 JUMPV LABELV $574 line 1538 ;1535: } ;1536: ;1537: // check for item using ;1538: if ( pm->cmd.buttons & BUTTON_USE_HOLDABLE ) { ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 4 BANDI4 CNSTI4 0 EQI4 $576 line 1539 ;1539: if ( ! ( pm->ps->pm_flags & PMF_USE_ITEM_HELD ) ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 1024 BANDI4 CNSTI4 0 NEI4 $577 line 1540 ;1540: if ( bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_MEDKIT ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 CNSTI4 52 ADDRLP4 4 INDIRP4 CNSTI4 188 ADDP4 INDIRI4 MULI4 ADDRGP4 bg_itemlist+40 ADDP4 INDIRI4 CNSTI4 2 NEI4 $580 ADDRLP4 4 INDIRP4 CNSTI4 184 ADDP4 INDIRI4 ADDRLP4 4 INDIRP4 CNSTI4 212 ADDP4 INDIRI4 CNSTI4 25 ADDI4 LTI4 $580 line 1541 ;1541: && pm->ps->stats[STAT_HEALTH] >= (pm->ps->stats[STAT_MAX_HEALTH] + 25) ) { line 1543 ;1542: // don't use medkit if at max health ;1543: } else { ADDRGP4 $569 JUMPV LABELV $580 line 1544 ;1544: pm->ps->pm_flags |= PMF_USE_ITEM_HELD; ADDRLP4 8 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 8 INDIRP4 ADDRLP4 8 INDIRP4 INDIRI4 CNSTI4 1024 BORI4 ASGNI4 line 1545 ;1545: PM_AddEvent( EV_USE_ITEM0 + bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag ); CNSTI4 52 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 188 ADDP4 INDIRI4 MULI4 ADDRGP4 bg_itemlist+40 ADDP4 INDIRI4 CNSTI4 24 ADDI4 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1546 ;1546: pm->ps->stats[STAT_HOLDABLE_ITEM] = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 188 ADDP4 CNSTI4 0 ASGNI4 line 1547 ;1547: } line 1548 ;1548: return; ADDRGP4 $569 JUMPV line 1550 ;1549: } ;1550: } else { LABELV $576 line 1551 ;1551: pm->ps->pm_flags &= ~PMF_USE_ITEM_HELD; ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 4 INDIRP4 ADDRLP4 4 INDIRP4 INDIRI4 CNSTI4 -1025 BANDI4 ASGNI4 line 1552 ;1552: } LABELV $577 line 1556 ;1553: ;1554: ;1555: // make weapon function ;1556: if ( pm->ps->weaponTime > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 LEI4 $584 line 1557 ;1557: pm->ps->weaponTime -= pml.msec; ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 4 INDIRP4 ADDRLP4 4 INDIRP4 INDIRI4 ADDRGP4 pml+40 INDIRI4 SUBI4 ASGNI4 line 1558 ;1558: } LABELV $584 line 1563 ;1559: ;1560: // check for weapon change ;1561: // can't change if weapon is firing, but can change ;1562: // again if lowering or raising ;1563: if ( pm->ps->weaponTime <= 0 || pm->ps->weaponstate != WEAPON_FIRING ) { ADDRLP4 4 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 LEI4 $589 ADDRLP4 4 INDIRP4 CNSTI4 148 ADDP4 INDIRI4 CNSTI4 3 EQI4 $587 LABELV $589 line 1564 ;1564: if ( pm->ps->weapon != pm->cmd.weapon ) { ADDRLP4 8 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 8 INDIRP4 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 ADDRLP4 8 INDIRP4 CNSTI4 24 ADDP4 INDIRU1 CVUI4 1 EQI4 $590 line 1565 ;1565: PM_BeginWeaponChange( pm->cmd.weapon ); ADDRGP4 pm INDIRP4 CNSTI4 24 ADDP4 INDIRU1 CVUI4 1 ARGI4 ADDRGP4 PM_BeginWeaponChange CALLV pop line 1566 ;1566: } LABELV $590 line 1567 ;1567: } LABELV $587 line 1569 ;1568: ;1569: if ( pm->ps->weaponTime > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 INDIRI4 CNSTI4 0 LEI4 $592 line 1570 ;1570: return; ADDRGP4 $569 JUMPV LABELV $592 line 1574 ;1571: } ;1572: ;1573: // change weapon if time ;1574: if ( pm->ps->weaponstate == WEAPON_DROPPING ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 INDIRI4 CNSTI4 2 NEI4 $594 line 1575 ;1575: PM_FinishWeaponChange(); ADDRGP4 PM_FinishWeaponChange CALLV pop line 1576 ;1576: return; ADDRGP4 $569 JUMPV LABELV $594 line 1579 ;1577: } ;1578: ;1579: if ( pm->ps->weaponstate == WEAPON_RAISING ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 INDIRI4 CNSTI4 1 NEI4 $596 line 1580 ;1580: pm->ps->weaponstate = WEAPON_READY; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 CNSTI4 0 ASGNI4 line 1581 ;1581: if ( pm->ps->weapon == WP_GAUNTLET ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 CNSTI4 1 NEI4 $598 line 1582 ;1582: PM_StartTorsoAnim( TORSO_STAND2 ); CNSTI4 12 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1583 ;1583: } else { ADDRGP4 $569 JUMPV LABELV $598 line 1584 ;1584: PM_StartTorsoAnim( TORSO_STAND ); CNSTI4 11 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1585 ;1585: } line 1586 ;1586: return; ADDRGP4 $569 JUMPV LABELV $596 line 1590 ;1587: } ;1588: ;1589: // check for fire ;1590: if ( ! (pm->cmd.buttons & BUTTON_ATTACK) ) { ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 1 BANDI4 CNSTI4 0 NEI4 $600 line 1591 ;1591: pm->ps->weaponTime = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 CNSTI4 0 ASGNI4 line 1592 ;1592: pm->ps->weaponstate = WEAPON_READY; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 CNSTI4 0 ASGNI4 line 1593 ;1593: return; ADDRGP4 $569 JUMPV LABELV $600 line 1597 ;1594: } ;1595: ;1596: // start the animation even if out of ammo ;1597: if ( pm->ps->weapon == WP_GAUNTLET ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 CNSTI4 1 NEI4 $602 line 1599 ;1598: // the guantlet only "fires" when it actually hits something ;1599: if ( !pm->gauntletHit ) { ADDRGP4 pm INDIRP4 CNSTI4 40 ADDP4 INDIRI4 CNSTI4 0 NEI4 $604 line 1600 ;1600: pm->ps->weaponTime = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 CNSTI4 0 ASGNI4 line 1601 ;1601: pm->ps->weaponstate = WEAPON_READY; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 CNSTI4 0 ASGNI4 line 1602 ;1602: return; ADDRGP4 $569 JUMPV LABELV $604 line 1604 ;1603: } ;1604: PM_StartTorsoAnim( TORSO_ATTACK2 ); CNSTI4 8 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1605 ;1605: } else { ADDRGP4 $603 JUMPV LABELV $602 line 1606 ;1606: PM_StartTorsoAnim( TORSO_ATTACK ); CNSTI4 7 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1607 ;1607: } LABELV $603 line 1609 ;1608: ;1609: pm->ps->weaponstate = WEAPON_FIRING; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 148 ADDP4 CNSTI4 3 ASGNI4 line 1612 ;1610: ;1611: // check for out of ammo ;1612: if ( ! pm->ps->ammo[ pm->ps->weapon ] ) { ADDRLP4 8 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 8 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 8 INDIRP4 CNSTI4 376 ADDP4 ADDP4 INDIRI4 CNSTI4 0 NEI4 $606 line 1613 ;1613: PM_AddEvent( EV_NOAMMO ); CNSTI4 21 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1614 ;1614: pm->ps->weaponTime += 500; ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 12 INDIRP4 ADDRLP4 12 INDIRP4 INDIRI4 CNSTI4 500 ADDI4 ASGNI4 line 1615 ;1615: return; ADDRGP4 $569 JUMPV LABELV $606 line 1619 ;1616: } ;1617: ;1618: // take an ammo away if not infinite ;1619: if ( pm->ps->ammo[ pm->ps->weapon ] != -1 ) { ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 12 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 12 INDIRP4 CNSTI4 376 ADDP4 ADDP4 INDIRI4 CNSTI4 -1 EQI4 $608 line 1620 ;1620: pm->ps->ammo[ pm->ps->weapon ]--; ADDRLP4 16 ADDRGP4 pm INDIRP4 INDIRP4 ASGNP4 ADDRLP4 20 ADDRLP4 16 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 16 INDIRP4 CNSTI4 376 ADDP4 ADDP4 ASGNP4 ADDRLP4 20 INDIRP4 ADDRLP4 20 INDIRP4 INDIRI4 CNSTI4 1 SUBI4 ASGNI4 line 1621 ;1621: } LABELV $608 line 1624 ;1622: ;1623: // fire weapon ;1624: PM_AddEvent( EV_FIRE_WEAPON ); CNSTI4 23 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1626 ;1625: ;1626: switch( pm->ps->weapon ) { ADDRLP4 16 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 ASGNI4 ADDRLP4 16 INDIRI4 CNSTI4 1 LTI4 $610 ADDRLP4 16 INDIRI4 CNSTI4 13 GTI4 $610 ADDRLP4 16 INDIRI4 CNSTI4 2 LSHI4 ADDRGP4 $626-4 ADDP4 INDIRP4 JUMPV lit align 4 LABELV $626 address $613 address $616 address $615 address $617 address $618 address $614 address $620 address $619 address $621 address $622 address $623 address $624 address $625 code LABELV $610 LABELV $613 line 1629 ;1627: default: ;1628: case WP_GAUNTLET: ;1629: addTime = 400; ADDRLP4 0 CNSTI4 400 ASGNI4 line 1630 ;1630: break; ADDRGP4 $611 JUMPV LABELV $614 line 1632 ;1631: case WP_LIGHTNING: ;1632: addTime = 50; ADDRLP4 0 CNSTI4 50 ASGNI4 line 1633 ;1633: break; ADDRGP4 $611 JUMPV LABELV $615 line 1635 ;1634: case WP_SHOTGUN: ;1635: addTime = 1000; ADDRLP4 0 CNSTI4 1000 ASGNI4 line 1636 ;1636: break; ADDRGP4 $611 JUMPV LABELV $616 line 1638 ;1637: case WP_MACHINEGUN: ;1638: addTime = 100; ADDRLP4 0 CNSTI4 100 ASGNI4 line 1639 ;1639: break; ADDRGP4 $611 JUMPV LABELV $617 line 1641 ;1640: case WP_GRENADE_LAUNCHER: ;1641: addTime = 800; ADDRLP4 0 CNSTI4 800 ASGNI4 line 1642 ;1642: break; ADDRGP4 $611 JUMPV LABELV $618 line 1644 ;1643: case WP_ROCKET_LAUNCHER: ;1644: addTime = 800; ADDRLP4 0 CNSTI4 800 ASGNI4 line 1645 ;1645: break; ADDRGP4 $611 JUMPV LABELV $619 line 1647 ;1646: case WP_PLASMAGUN: ;1647: addTime = 100; ADDRLP4 0 CNSTI4 100 ASGNI4 line 1648 ;1648: break; ADDRGP4 $611 JUMPV LABELV $620 line 1650 ;1649: case WP_RAILGUN: ;1650: addTime = 1500; ADDRLP4 0 CNSTI4 1500 ASGNI4 line 1651 ;1651: break; ADDRGP4 $611 JUMPV LABELV $621 line 1653 ;1652: case WP_BFG: ;1653: addTime = 200; ADDRLP4 0 CNSTI4 200 ASGNI4 line 1654 ;1654: break; ADDRGP4 $611 JUMPV LABELV $622 line 1656 ;1655: case WP_GRAPPLING_HOOK: ;1656: addTime = 400; ADDRLP4 0 CNSTI4 400 ASGNI4 line 1657 ;1657: break; ADDRGP4 $611 JUMPV LABELV $623 line 1660 ;1658:#ifdef MISSIONPACK ;1659: case WP_NAILGUN: ;1660: addTime = 1000; ADDRLP4 0 CNSTI4 1000 ASGNI4 line 1661 ;1661: break; ADDRGP4 $611 JUMPV LABELV $624 line 1663 ;1662: case WP_PROX_LAUNCHER: ;1663: addTime = 800; ADDRLP4 0 CNSTI4 800 ASGNI4 line 1664 ;1664: break; ADDRGP4 $611 JUMPV LABELV $625 line 1666 ;1665: case WP_CHAINGUN: ;1666: addTime = 30; ADDRLP4 0 CNSTI4 30 ASGNI4 line 1667 ;1667: break; LABELV $611 line 1672 ;1668:#endif ;1669: } ;1670: ;1671:#ifdef MISSIONPACK ;1672: if( bg_itemlist[pm->ps->stats[STAT_PERSISTANT_POWERUP]].giTag == PW_SCOUT ) { CNSTI4 52 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 192 ADDP4 INDIRI4 MULI4 ADDRGP4 bg_itemlist+40 ADDP4 INDIRI4 CNSTI4 10 NEI4 $628 line 1673 ;1673: addTime /= 1.5; ADDRLP4 0 ADDRLP4 0 INDIRI4 CVIF4 4 CNSTF4 1069547520 DIVF4 CVFI4 4 ASGNI4 line 1674 ;1674: } ADDRGP4 $629 JUMPV LABELV $628 line 1676 ;1675: else ;1676: if( bg_itemlist[pm->ps->stats[STAT_PERSISTANT_POWERUP]].giTag == PW_AMMOREGEN ) { CNSTI4 52 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 192 ADDP4 INDIRI4 MULI4 ADDRGP4 bg_itemlist+40 ADDP4 INDIRI4 CNSTI4 13 NEI4 $631 line 1677 ;1677: addTime /= 1.3; ADDRLP4 0 ADDRLP4 0 INDIRI4 CVIF4 4 CNSTF4 1067869798 DIVF4 CVFI4 4 ASGNI4 line 1678 ;1678: } ADDRGP4 $632 JUMPV LABELV $631 line 1681 ;1679: else ;1680:#endif ;1681: if ( pm->ps->powerups[PW_HASTE] ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 324 ADDP4 INDIRI4 CNSTI4 0 EQI4 $634 line 1682 ;1682: addTime /= 1.3; ADDRLP4 0 ADDRLP4 0 INDIRI4 CVIF4 4 CNSTF4 1067869798 DIVF4 CVFI4 4 ASGNI4 line 1683 ;1683: } LABELV $634 LABELV $632 LABELV $629 line 1685 ;1684: ;1685: pm->ps->weaponTime += addTime; ADDRLP4 24 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 44 ADDP4 ASGNP4 ADDRLP4 24 INDIRP4 ADDRLP4 24 INDIRP4 INDIRI4 ADDRLP4 0 INDIRI4 ADDI4 ASGNI4 line 1686 ;1686:} LABELV $569 endproc PM_Weapon 28 4 proc PM_Animate 0 4 line 1694 ;1687: ;1688:/* ;1689:================ ;1690:PM_Animate ;1691:================ ;1692:*/ ;1693: ;1694:static void PM_Animate( void ) { line 1695 ;1695: if ( pm->cmd.buttons & BUTTON_GESTURE ) { ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 8 BANDI4 CNSTI4 0 EQI4 $637 line 1696 ;1696: if ( pm->ps->torsoTimer == 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 NEI4 $638 line 1697 ;1697: PM_StartTorsoAnim( TORSO_GESTURE ); CNSTI4 6 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1698 ;1698: pm->ps->torsoTimer = TIMER_GESTURE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 CNSTI4 2294 ASGNI4 line 1699 ;1699: PM_AddEvent( EV_TAUNT ); CNSTI4 76 ARGI4 ADDRGP4 PM_AddEvent CALLV pop line 1700 ;1700: } line 1702 ;1701:#ifdef MISSIONPACK ;1702: } else if ( pm->cmd.buttons & BUTTON_GETFLAG ) { ADDRGP4 $638 JUMPV LABELV $637 ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 128 BANDI4 CNSTI4 0 EQI4 $641 line 1703 ;1703: if ( pm->ps->torsoTimer == 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 NEI4 $642 line 1704 ;1704: PM_StartTorsoAnim( TORSO_GETFLAG ); CNSTI4 25 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1705 ;1705: pm->ps->torsoTimer = 600; //TIMER_GESTURE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 CNSTI4 600 ASGNI4 line 1706 ;1706: } line 1707 ;1707: } else if ( pm->cmd.buttons & BUTTON_GUARDBASE ) { ADDRGP4 $642 JUMPV LABELV $641 ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 256 BANDI4 CNSTI4 0 EQI4 $645 line 1708 ;1708: if ( pm->ps->torsoTimer == 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 NEI4 $646 line 1709 ;1709: PM_StartTorsoAnim( TORSO_GUARDBASE ); CNSTI4 26 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1710 ;1710: pm->ps->torsoTimer = 600; //TIMER_GESTURE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 CNSTI4 600 ASGNI4 line 1711 ;1711: } line 1712 ;1712: } else if ( pm->cmd.buttons & BUTTON_PATROL ) { ADDRGP4 $646 JUMPV LABELV $645 ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 512 BANDI4 CNSTI4 0 EQI4 $649 line 1713 ;1713: if ( pm->ps->torsoTimer == 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 NEI4 $650 line 1714 ;1714: PM_StartTorsoAnim( TORSO_PATROL ); CNSTI4 27 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1715 ;1715: pm->ps->torsoTimer = 600; //TIMER_GESTURE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 CNSTI4 600 ASGNI4 line 1716 ;1716: } line 1717 ;1717: } else if ( pm->cmd.buttons & BUTTON_FOLLOWME ) { ADDRGP4 $650 JUMPV LABELV $649 ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 1024 BANDI4 CNSTI4 0 EQI4 $653 line 1718 ;1718: if ( pm->ps->torsoTimer == 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 NEI4 $654 line 1719 ;1719: PM_StartTorsoAnim( TORSO_FOLLOWME ); CNSTI4 28 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1720 ;1720: pm->ps->torsoTimer = 600; //TIMER_GESTURE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 CNSTI4 600 ASGNI4 line 1721 ;1721: } line 1722 ;1722: } else if ( pm->cmd.buttons & BUTTON_AFFIRMATIVE ) { ADDRGP4 $654 JUMPV LABELV $653 ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 32 BANDI4 CNSTI4 0 EQI4 $657 line 1723 ;1723: if ( pm->ps->torsoTimer == 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 NEI4 $658 line 1724 ;1724: PM_StartTorsoAnim( TORSO_AFFIRMATIVE); CNSTI4 29 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1725 ;1725: pm->ps->torsoTimer = 600; //TIMER_GESTURE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 CNSTI4 600 ASGNI4 line 1726 ;1726: } line 1727 ;1727: } else if ( pm->cmd.buttons & BUTTON_NEGATIVE ) { ADDRGP4 $658 JUMPV LABELV $657 ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 64 BANDI4 CNSTI4 0 EQI4 $661 line 1728 ;1728: if ( pm->ps->torsoTimer == 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 NEI4 $663 line 1729 ;1729: PM_StartTorsoAnim( TORSO_NEGATIVE ); CNSTI4 30 ARGI4 ADDRGP4 PM_StartTorsoAnim CALLV pop line 1730 ;1730: pm->ps->torsoTimer = 600; //TIMER_GESTURE; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 CNSTI4 600 ASGNI4 line 1731 ;1731: } LABELV $663 line 1733 ;1732:#endif ;1733: } LABELV $661 LABELV $658 LABELV $654 LABELV $650 LABELV $646 LABELV $642 LABELV $638 line 1734 ;1734:} LABELV $636 endproc PM_Animate 0 4 proc PM_DropTimers 4 0 line 1742 ;1735: ;1736: ;1737:/* ;1738:================ ;1739:PM_DropTimers ;1740:================ ;1741:*/ ;1742:static void PM_DropTimers( void ) { line 1744 ;1743: // drop misc timing counter ;1744: if ( pm->ps->pm_time ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 INDIRI4 CNSTI4 0 EQI4 $666 line 1745 ;1745: if ( pml.msec >= pm->ps->pm_time ) { ADDRGP4 pml+40 INDIRI4 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 INDIRI4 LTI4 $668 line 1746 ;1746: pm->ps->pm_flags &= ~PMF_ALL_TIMES; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 CNSTI4 -353 BANDI4 ASGNI4 line 1747 ;1747: pm->ps->pm_time = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 CNSTI4 0 ASGNI4 line 1748 ;1748: } else { ADDRGP4 $669 JUMPV LABELV $668 line 1749 ;1749: pm->ps->pm_time -= pml.msec; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 16 ADDP4 ASGNP4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRGP4 pml+40 INDIRI4 SUBI4 ASGNI4 line 1750 ;1750: } LABELV $669 line 1751 ;1751: } LABELV $666 line 1754 ;1752: ;1753: // drop animation counter ;1754: if ( pm->ps->legsTimer > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 72 ADDP4 INDIRI4 CNSTI4 0 LEI4 $672 line 1755 ;1755: pm->ps->legsTimer -= pml.msec; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 72 ADDP4 ASGNP4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRGP4 pml+40 INDIRI4 SUBI4 ASGNI4 line 1756 ;1756: if ( pm->ps->legsTimer < 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 72 ADDP4 INDIRI4 CNSTI4 0 GEI4 $675 line 1757 ;1757: pm->ps->legsTimer = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 72 ADDP4 CNSTI4 0 ASGNI4 line 1758 ;1758: } LABELV $675 line 1759 ;1759: } LABELV $672 line 1761 ;1760: ;1761: if ( pm->ps->torsoTimer > 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 LEI4 $677 line 1762 ;1762: pm->ps->torsoTimer -= pml.msec; ADDRLP4 0 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 ASGNP4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 ADDRGP4 pml+40 INDIRI4 SUBI4 ASGNI4 line 1763 ;1763: if ( pm->ps->torsoTimer < 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 INDIRI4 CNSTI4 0 GEI4 $680 line 1764 ;1764: pm->ps->torsoTimer = 0; ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 80 ADDP4 CNSTI4 0 ASGNI4 line 1765 ;1765: } LABELV $680 line 1766 ;1766: } LABELV $677 line 1767 ;1767:} LABELV $665 endproc PM_DropTimers 4 0 export PM_UpdateViewAngles proc PM_UpdateViewAngles 24 0 line 1777 ;1768: ;1769:/* ;1770:================ ;1771:PM_UpdateViewAngles ;1772: ;1773:This can be used as another entry point when only the viewangles ;1774:are being updated isntead of a full move ;1775:================ ;1776:*/ ;1777:void PM_UpdateViewAngles( playerState_t *ps, const usercmd_t *cmd ) { line 1781 ;1778: short temp; ;1779: int i; ;1780: ;1781: if ( ps->pm_type == PM_INTERMISSION || ps->pm_type == PM_SPINTERMISSION) { ADDRLP4 8 ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ASGNI4 ADDRLP4 8 INDIRI4 CNSTI4 5 EQI4 $685 ADDRLP4 8 INDIRI4 CNSTI4 6 NEI4 $683 LABELV $685 line 1782 ;1782: return; // no view changes at all ADDRGP4 $682 JUMPV LABELV $683 line 1785 ;1783: } ;1784: ;1785: if ( ps->pm_type != PM_SPECTATOR && ps->stats[STAT_HEALTH] <= 0 ) { ADDRLP4 12 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 12 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 2 EQI4 $686 ADDRLP4 12 INDIRP4 CNSTI4 184 ADDP4 INDIRI4 CNSTI4 0 GTI4 $686 line 1786 ;1786: return; // no view changes at all ADDRGP4 $682 JUMPV LABELV $686 line 1790 ;1787: } ;1788: ;1789: // circularly clamp the angles with deltas ;1790: for (i=0 ; i<3 ; i++) { ADDRLP4 0 CNSTI4 0 ASGNI4 LABELV $688 line 1791 ;1791: temp = cmd->angles[i] + ps->delta_angles[i]; ADDRLP4 16 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 4 ADDRLP4 16 INDIRI4 ADDRFP4 4 INDIRP4 CNSTI4 4 ADDP4 ADDP4 INDIRI4 ADDRLP4 16 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 56 ADDP4 ADDP4 INDIRI4 ADDI4 CVII2 4 ASGNI2 line 1792 ;1792: if ( i == PITCH ) { ADDRLP4 0 INDIRI4 CNSTI4 0 NEI4 $692 line 1794 ;1793: // don't let the player look up or down more than 90 degrees ;1794: if ( temp > 16000 ) { ADDRLP4 4 INDIRI2 CVII4 2 CNSTI4 16000 LEI4 $694 line 1795 ;1795: ps->delta_angles[i] = 16000 - cmd->angles[i]; ADDRLP4 20 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 20 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 56 ADDP4 ADDP4 CNSTI4 16000 ADDRLP4 20 INDIRI4 ADDRFP4 4 INDIRP4 CNSTI4 4 ADDP4 ADDP4 INDIRI4 SUBI4 ASGNI4 line 1796 ;1796: temp = 16000; ADDRLP4 4 CNSTI2 16000 ASGNI2 line 1797 ;1797: } else if ( temp < -16000 ) { ADDRGP4 $695 JUMPV LABELV $694 ADDRLP4 4 INDIRI2 CVII4 2 CNSTI4 -16000 GEI4 $696 line 1798 ;1798: ps->delta_angles[i] = -16000 - cmd->angles[i]; ADDRLP4 20 ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ASGNI4 ADDRLP4 20 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 56 ADDP4 ADDP4 CNSTI4 -16000 ADDRLP4 20 INDIRI4 ADDRFP4 4 INDIRP4 CNSTI4 4 ADDP4 ADDP4 INDIRI4 SUBI4 ASGNI4 line 1799 ;1799: temp = -16000; ADDRLP4 4 CNSTI2 -16000 ASGNI2 line 1800 ;1800: } LABELV $696 LABELV $695 line 1801 ;1801: } LABELV $692 line 1802 ;1802: ps->viewangles[i] = SHORT2ANGLE(temp); ADDRLP4 0 INDIRI4 CNSTI4 2 LSHI4 ADDRFP4 0 INDIRP4 CNSTI4 152 ADDP4 ADDP4 CNSTF4 1001652224 ADDRLP4 4 INDIRI2 CVII4 2 CVIF4 4 MULF4 ASGNF4 line 1803 ;1803: } LABELV $689 line 1790 ADDRLP4 0 ADDRLP4 0 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 ADDRLP4 0 INDIRI4 CNSTI4 3 LTI4 $688 line 1805 ;1804: ;1805:} LABELV $682 endproc PM_UpdateViewAngles 24 0 export PmoveSingle proc PmoveSingle 56 16 line 1816 ;1806: ;1807: ;1808:/* ;1809:================ ;1810:PmoveSingle ;1811: ;1812:================ ;1813:*/ ;1814:void trap_SnapVector( float *v ); ;1815: ;1816:void PmoveSingle (pmove_t *pmove) { line 1817 ;1817: pm = pmove; ADDRGP4 pm ADDRFP4 0 INDIRP4 ASGNP4 line 1821 ;1818: ;1819: // this counter lets us debug movement problems with a journal ;1820: // by setting a conditional breakpoint fot the previous frame ;1821: c_pmove++; ADDRLP4 0 ADDRGP4 c_pmove ASGNP4 ADDRLP4 0 INDIRP4 ADDRLP4 0 INDIRP4 INDIRI4 CNSTI4 1 ADDI4 ASGNI4 line 1824 ;1822: ;1823: // clear results ;1824: pm->numtouch = 0; ADDRGP4 pm INDIRP4 CNSTI4 48 ADDP4 CNSTI4 0 ASGNI4 line 1825 ;1825: pm->watertype = 0; ADDRGP4 pm INDIRP4 CNSTI4 204 ADDP4 CNSTI4 0 ASGNI4 line 1826 ;1826: pm->waterlevel = 0; ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 CNSTI4 0 ASGNI4 line 1828 ;1827: ;1828: if ( pm->ps->stats[STAT_HEALTH] <= 0 ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 184 ADDP4 INDIRI4 CNSTI4 0 GTI4 $699 line 1829 ;1829: pm->tracemask &= ~CONTENTS_BODY; // corpses can fly through bodies ADDRLP4 4 ADDRGP4 pm INDIRP4 CNSTI4 28 ADDP4 ASGNP4 ADDRLP4 4 INDIRP4 ADDRLP4 4 INDIRP4 INDIRI4 CNSTI4 -33554433 BANDI4 ASGNI4 line 1830 ;1830: } LABELV $699 line 1834 ;1831: ;1832: // make sure walking button is clear if they are running, to avoid ;1833: // proxy no-footsteps cheats ;1834: if ( abs( pm->cmd.forwardmove ) > 64 || abs( pm->cmd.rightmove ) > 64 ) { ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ARGI4 ADDRLP4 4 ADDRGP4 abs CALLI4 ASGNI4 ADDRLP4 4 INDIRI4 CNSTI4 64 GTI4 $703 ADDRGP4 pm INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ARGI4 ADDRLP4 8 ADDRGP4 abs CALLI4 ASGNI4 ADDRLP4 8 INDIRI4 CNSTI4 64 LEI4 $701 LABELV $703 line 1835 ;1835: pm->cmd.buttons &= ~BUTTON_WALKING; ADDRLP4 12 ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 ASGNP4 ADDRLP4 12 INDIRP4 ADDRLP4 12 INDIRP4 INDIRI4 CNSTI4 -17 BANDI4 ASGNI4 line 1836 ;1836: } LABELV $701 line 1839 ;1837: ;1838: // set the talk balloon flag ;1839: if ( pm->cmd.buttons & BUTTON_TALK ) { ADDRGP4 pm INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 2 BANDI4 CNSTI4 0 EQI4 $704 line 1840 ;1840: pm->ps->eFlags |= EF_TALK; ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 104 ADDP4 ASGNP4 ADDRLP4 12 INDIRP4 ADDRLP4 12 INDIRP4 INDIRI4 CNSTI4 4096 BORI4 ASGNI4 line 1841 ;1841: } else { ADDRGP4 $705 JUMPV LABELV $704 line 1842 ;1842: pm->ps->eFlags &= ~EF_TALK; ADDRLP4 12 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 104 ADDP4 ASGNP4 ADDRLP4 12 INDIRP4 ADDRLP4 12 INDIRP4 INDIRI4 CNSTI4 -4097 BANDI4 ASGNI4 line 1843 ;1843: } LABELV $705 line 1846 ;1844: ;1845: // set the firing flag for continuous beam weapons ;1846: if ( !(pm->ps->pm_flags & PMF_RESPAWNED) && pm->ps->pm_type != PM_INTERMISSION ADDRLP4 12 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 16 ADDRLP4 12 INDIRP4 INDIRP4 ASGNP4 ADDRLP4 20 CNSTI4 0 ASGNI4 ADDRLP4 16 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 512 BANDI4 ADDRLP4 20 INDIRI4 NEI4 $706 ADDRLP4 16 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 5 EQI4 $706 ADDRLP4 12 INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 1 BANDI4 ADDRLP4 20 INDIRI4 EQI4 $706 ADDRLP4 16 INDIRP4 CNSTI4 144 ADDP4 INDIRI4 CNSTI4 2 LSHI4 ADDRLP4 16 INDIRP4 CNSTI4 376 ADDP4 ADDP4 INDIRI4 ADDRLP4 20 INDIRI4 EQI4 $706 line 1847 ;1847: && ( pm->cmd.buttons & BUTTON_ATTACK ) && pm->ps->ammo[ pm->ps->weapon ] ) { line 1848 ;1848: pm->ps->eFlags |= EF_FIRING; ADDRLP4 24 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 104 ADDP4 ASGNP4 ADDRLP4 24 INDIRP4 ADDRLP4 24 INDIRP4 INDIRI4 CNSTI4 256 BORI4 ASGNI4 line 1849 ;1849: } else { ADDRGP4 $707 JUMPV LABELV $706 line 1850 ;1850: pm->ps->eFlags &= ~EF_FIRING; ADDRLP4 24 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 104 ADDP4 ASGNP4 ADDRLP4 24 INDIRP4 ADDRLP4 24 INDIRP4 INDIRI4 CNSTI4 -257 BANDI4 ASGNI4 line 1851 ;1851: } LABELV $707 line 1854 ;1852: ;1853: // clear the respawned flag if attack and use are cleared ;1854: if ( pm->ps->stats[STAT_HEALTH] > 0 && ADDRLP4 24 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 28 CNSTI4 0 ASGNI4 ADDRLP4 24 INDIRP4 INDIRP4 CNSTI4 184 ADDP4 INDIRI4 ADDRLP4 28 INDIRI4 LEI4 $708 ADDRLP4 24 INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 5 BANDI4 ADDRLP4 28 INDIRI4 NEI4 $708 line 1855 ;1855: !( pm->cmd.buttons & (BUTTON_ATTACK | BUTTON_USE_HOLDABLE) ) ) { line 1856 ;1856: pm->ps->pm_flags &= ~PMF_RESPAWNED; ADDRLP4 32 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 32 INDIRP4 ADDRLP4 32 INDIRP4 INDIRI4 CNSTI4 -513 BANDI4 ASGNI4 line 1857 ;1857: } LABELV $708 line 1862 ;1858: ;1859: // if talk button is down, dissallow all other input ;1860: // this is to prevent any possible intercept proxy from ;1861: // adding fake talk balloons ;1862: if ( pmove->cmd.buttons & BUTTON_TALK ) { ADDRFP4 0 INDIRP4 CNSTI4 20 ADDP4 INDIRI4 CNSTI4 2 BANDI4 CNSTI4 0 EQI4 $710 line 1865 ;1863: // keep the talk button set tho for when the cmd.serverTime > 66 msec ;1864: // and the same cmd is used multiple times in Pmove ;1865: pmove->cmd.buttons = BUTTON_TALK; ADDRFP4 0 INDIRP4 CNSTI4 20 ADDP4 CNSTI4 2 ASGNI4 line 1866 ;1866: pmove->cmd.forwardmove = 0; ADDRFP4 0 INDIRP4 CNSTI4 25 ADDP4 CNSTI1 0 ASGNI1 line 1867 ;1867: pmove->cmd.rightmove = 0; ADDRFP4 0 INDIRP4 CNSTI4 26 ADDP4 CNSTI1 0 ASGNI1 line 1868 ;1868: pmove->cmd.upmove = 0; ADDRFP4 0 INDIRP4 CNSTI4 27 ADDP4 CNSTI1 0 ASGNI1 line 1869 ;1869: } LABELV $710 line 1872 ;1870: ;1871: // clear all pmove local vars ;1872: memset (&pml, 0, sizeof(pml)); ADDRGP4 pml ARGP4 CNSTI4 0 ARGI4 CNSTI4 140 ARGI4 ADDRGP4 memset CALLP4 pop line 1875 ;1873: ;1874: // determine the time ;1875: pml.msec = pmove->cmd.serverTime - pm->ps->commandTime; ADDRGP4 pml+40 ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ADDRGP4 pm INDIRP4 INDIRP4 INDIRI4 SUBI4 ASGNI4 line 1876 ;1876: if ( pml.msec < 1 ) { ADDRGP4 pml+40 INDIRI4 CNSTI4 1 GEI4 $713 line 1877 ;1877: pml.msec = 1; ADDRGP4 pml+40 CNSTI4 1 ASGNI4 line 1878 ;1878: } else if ( pml.msec > 200 ) { ADDRGP4 $714 JUMPV LABELV $713 ADDRGP4 pml+40 INDIRI4 CNSTI4 200 LEI4 $717 line 1879 ;1879: pml.msec = 200; ADDRGP4 pml+40 CNSTI4 200 ASGNI4 line 1880 ;1880: } LABELV $717 LABELV $714 line 1881 ;1881: pm->ps->commandTime = pmove->cmd.serverTime; ADDRGP4 pm INDIRP4 INDIRP4 ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ASGNI4 line 1884 ;1882: ;1883: // save old org in case we get stuck ;1884: VectorCopy (pm->ps->origin, pml.previous_origin); ADDRGP4 pml+112 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 20 ADDP4 INDIRB ASGNB 12 line 1887 ;1885: ;1886: // save old velocity for crashlanding ;1887: VectorCopy (pm->ps->velocity, pml.previous_velocity); ADDRGP4 pml+124 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 INDIRB ASGNB 12 line 1889 ;1888: ;1889: pml.frametime = pml.msec * 0.001; ADDRGP4 pml+36 CNSTF4 981668463 ADDRGP4 pml+40 INDIRI4 CVIF4 4 MULF4 ASGNF4 line 1892 ;1890: ;1891: // update the viewangles ;1892: PM_UpdateViewAngles( pm->ps, &pm->cmd ); ADDRLP4 32 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 32 INDIRP4 INDIRP4 ARGP4 ADDRLP4 32 INDIRP4 CNSTI4 4 ADDP4 ARGP4 ADDRGP4 PM_UpdateViewAngles CALLV pop line 1894 ;1893: ;1894: AngleVectors (pm->ps->viewangles, pml.forward, pml.right, pml.up); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 152 ADDP4 ARGP4 ADDRGP4 pml ARGP4 ADDRGP4 pml+12 ARGP4 ADDRGP4 pml+24 ARGP4 ADDRGP4 AngleVectors CALLV pop line 1896 ;1895: ;1896: if ( pm->cmd.upmove < 10 ) { ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 INDIRI1 CVII4 1 CNSTI4 10 GEI4 $727 line 1898 ;1897: // not holding jump ;1898: pm->ps->pm_flags &= ~PMF_JUMP_HELD; ADDRLP4 36 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 36 INDIRP4 ADDRLP4 36 INDIRP4 INDIRI4 CNSTI4 -3 BANDI4 ASGNI4 line 1899 ;1899: } LABELV $727 line 1902 ;1900: ;1901: // decide if backpedaling animations should be used ;1902: if ( pm->cmd.forwardmove < 0 ) { ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 CNSTI4 0 GEI4 $729 line 1903 ;1903: pm->ps->pm_flags |= PMF_BACKWARDS_RUN; ADDRLP4 36 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 36 INDIRP4 ADDRLP4 36 INDIRP4 INDIRI4 CNSTI4 16 BORI4 ASGNI4 line 1904 ;1904: } else if ( pm->cmd.forwardmove > 0 || ( pm->cmd.forwardmove == 0 && pm->cmd.rightmove ) ) { ADDRGP4 $730 JUMPV LABELV $729 ADDRLP4 36 ADDRGP4 pm INDIRP4 ASGNP4 ADDRLP4 40 ADDRLP4 36 INDIRP4 CNSTI4 25 ADDP4 INDIRI1 CVII4 1 ASGNI4 ADDRLP4 44 CNSTI4 0 ASGNI4 ADDRLP4 40 INDIRI4 ADDRLP4 44 INDIRI4 GTI4 $733 ADDRLP4 40 INDIRI4 ADDRLP4 44 INDIRI4 NEI4 $731 ADDRLP4 36 INDIRP4 CNSTI4 26 ADDP4 INDIRI1 CVII4 1 ADDRLP4 44 INDIRI4 EQI4 $731 LABELV $733 line 1905 ;1905: pm->ps->pm_flags &= ~PMF_BACKWARDS_RUN; ADDRLP4 48 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 ASGNP4 ADDRLP4 48 INDIRP4 ADDRLP4 48 INDIRP4 INDIRI4 CNSTI4 -17 BANDI4 ASGNI4 line 1906 ;1906: } LABELV $731 LABELV $730 line 1908 ;1907: ;1908: if ( pm->ps->pm_type >= PM_DEAD ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 3 LTI4 $734 line 1909 ;1909: pm->cmd.forwardmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 25 ADDP4 CNSTI1 0 ASGNI1 line 1910 ;1910: pm->cmd.rightmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 26 ADDP4 CNSTI1 0 ASGNI1 line 1911 ;1911: pm->cmd.upmove = 0; ADDRGP4 pm INDIRP4 CNSTI4 27 ADDP4 CNSTI1 0 ASGNI1 line 1912 ;1912: } LABELV $734 line 1914 ;1913: ;1914: if ( pm->ps->pm_type == PM_SPECTATOR ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 2 NEI4 $736 line 1915 ;1915: PM_CheckDuck (); ADDRGP4 PM_CheckDuck CALLV pop line 1916 ;1916: PM_FlyMove (); ADDRGP4 PM_FlyMove CALLV pop line 1917 ;1917: PM_DropTimers (); ADDRGP4 PM_DropTimers CALLV pop line 1918 ;1918: return; ADDRGP4 $698 JUMPV LABELV $736 line 1921 ;1919: } ;1920: ;1921: if ( pm->ps->pm_type == PM_NOCLIP ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 1 NEI4 $738 line 1922 ;1922: PM_NoclipMove (); ADDRGP4 PM_NoclipMove CALLV pop line 1923 ;1923: PM_DropTimers (); ADDRGP4 PM_DropTimers CALLV pop line 1924 ;1924: return; ADDRGP4 $698 JUMPV LABELV $738 line 1927 ;1925: } ;1926: ;1927: if (pm->ps->pm_type == PM_FREEZE) { ADDRLP4 48 CNSTI4 4 ASGNI4 ADDRGP4 pm INDIRP4 INDIRP4 ADDRLP4 48 INDIRI4 ADDP4 INDIRI4 ADDRLP4 48 INDIRI4 NEI4 $740 line 1928 ;1928: return; // no movement at all ADDRGP4 $698 JUMPV LABELV $740 line 1931 ;1929: } ;1930: ;1931: if ( pm->ps->pm_type == PM_INTERMISSION || pm->ps->pm_type == PM_SPINTERMISSION) { ADDRLP4 52 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ASGNI4 ADDRLP4 52 INDIRI4 CNSTI4 5 EQI4 $744 ADDRLP4 52 INDIRI4 CNSTI4 6 NEI4 $742 LABELV $744 line 1932 ;1932: return; // no movement at all ADDRGP4 $698 JUMPV LABELV $742 line 1936 ;1933: } ;1934: ;1935: // set watertype, and waterlevel ;1936: PM_SetWaterLevel(); ADDRGP4 PM_SetWaterLevel CALLV pop line 1937 ;1937: pml.previous_waterlevel = pmove->waterlevel; ADDRGP4 pml+136 ADDRFP4 0 INDIRP4 CNSTI4 208 ADDP4 INDIRI4 ASGNI4 line 1940 ;1938: ;1939: // set mins, maxs, and viewheight ;1940: PM_CheckDuck (); ADDRGP4 PM_CheckDuck CALLV pop line 1943 ;1941: ;1942: // set groundentity ;1943: PM_GroundTrace(); ADDRGP4 PM_GroundTrace CALLV pop line 1945 ;1944: ;1945: if ( pm->ps->pm_type == PM_DEAD ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 CNSTI4 3 NEI4 $746 line 1946 ;1946: PM_DeadMove (); ADDRGP4 PM_DeadMove CALLV pop line 1947 ;1947: } LABELV $746 line 1949 ;1948: ;1949: PM_DropTimers(); ADDRGP4 PM_DropTimers CALLV pop line 1952 ;1950: ;1951:#ifdef MISSIONPACK ;1952: if ( pm->ps->powerups[PW_INVULNERABILITY] ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 368 ADDP4 INDIRI4 CNSTI4 0 EQI4 $748 line 1953 ;1953: PM_InvulnerabilityMove(); ADDRGP4 PM_InvulnerabilityMove CALLV pop line 1954 ;1954: } else ADDRGP4 $749 JUMPV LABELV $748 line 1956 ;1955:#endif ;1956: if ( pm->ps->powerups[PW_FLIGHT] ) { ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 336 ADDP4 INDIRI4 CNSTI4 0 EQI4 $750 line 1958 ;1957: // flight powerup doesn't allow jump and has different friction ;1958: PM_FlyMove(); ADDRGP4 PM_FlyMove CALLV pop line 1959 ;1959: } else if (pm->ps->pm_flags & PMF_GRAPPLE_PULL) { ADDRGP4 $751 JUMPV LABELV $750 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 2048 BANDI4 CNSTI4 0 EQI4 $752 line 1960 ;1960: PM_GrappleMove(); ADDRGP4 PM_GrappleMove CALLV pop line 1962 ;1961: // We can wiggle a bit ;1962: PM_AirMove(); ADDRGP4 PM_AirMove CALLV pop line 1963 ;1963: } else if (pm->ps->pm_flags & PMF_TIME_WATERJUMP) { ADDRGP4 $753 JUMPV LABELV $752 ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 256 BANDI4 CNSTI4 0 EQI4 $754 line 1964 ;1964: PM_WaterJumpMove(); ADDRGP4 PM_WaterJumpMove CALLV pop line 1965 ;1965: } else if ( pm->waterlevel > 1 ) { ADDRGP4 $755 JUMPV LABELV $754 ADDRGP4 pm INDIRP4 CNSTI4 208 ADDP4 INDIRI4 CNSTI4 1 LEI4 $756 line 1967 ;1966: // swimming ;1967: PM_WaterMove(); ADDRGP4 PM_WaterMove CALLV pop line 1968 ;1968: } else if ( pml.walking ) { ADDRGP4 $757 JUMPV LABELV $756 ADDRGP4 pml+44 INDIRI4 CNSTI4 0 EQI4 $758 line 1970 ;1969: // walking on ground ;1970: PM_WalkMove(); ADDRGP4 PM_WalkMove CALLV pop line 1971 ;1971: } else { ADDRGP4 $759 JUMPV LABELV $758 line 1973 ;1972: // airborne ;1973: PM_AirMove(); ADDRGP4 PM_AirMove CALLV pop line 1974 ;1974: } LABELV $759 LABELV $757 LABELV $755 LABELV $753 LABELV $751 LABELV $749 line 1976 ;1975: ;1976: PM_Animate(); ADDRGP4 PM_Animate CALLV pop line 1979 ;1977: ;1978: // set groundentity, watertype, and waterlevel ;1979: PM_GroundTrace(); ADDRGP4 PM_GroundTrace CALLV pop line 1980 ;1980: PM_SetWaterLevel(); ADDRGP4 PM_SetWaterLevel CALLV pop line 1983 ;1981: ;1982: // weapons ;1983: PM_Weapon(); ADDRGP4 PM_Weapon CALLV pop line 1986 ;1984: ;1985: // torso animation ;1986: PM_TorsoAnimation(); ADDRGP4 PM_TorsoAnimation CALLV pop line 1989 ;1987: ;1988: // footstep events / legs animations ;1989: PM_Footsteps(); ADDRGP4 PM_Footsteps CALLV pop line 1992 ;1990: ;1991: // entering / leaving water splashes ;1992: PM_WaterEvents(); ADDRGP4 PM_WaterEvents CALLV pop line 1995 ;1993: ;1994: // snap some parts of playerstate to save network bandwidth ;1995: trap_SnapVector( pm->ps->velocity ); ADDRGP4 pm INDIRP4 INDIRP4 CNSTI4 32 ADDP4 ARGP4 ADDRGP4 trap_SnapVector CALLV pop line 1996 ;1996:} LABELV $698 endproc PmoveSingle 56 16 export Pmove proc Pmove 16 4 line 2006 ;1997: ;1998: ;1999:/* ;2000:================ ;2001:Pmove ;2002: ;2003:Can be called by either the server or the client ;2004:================ ;2005:*/ ;2006:void Pmove (pmove_t *pmove) { line 2009 ;2007: int finalTime; ;2008: ;2009: finalTime = pmove->cmd.serverTime; ADDRLP4 0 ADDRFP4 0 INDIRP4 CNSTI4 4 ADDP4 INDIRI4 ASGNI4 line 2011 ;2010: ;2011: if ( finalTime < pmove->ps->commandTime ) { ADDRLP4 0 INDIRI4 ADDRFP4 0 INDIRP4 INDIRP4 INDIRI4 GEI4 $762 line 2012 ;2012: return; // should not happen ADDRGP4 $761 JUMPV LABELV $762 line 2015 ;2013: } ;2014: ;2015: if ( finalTime > pmove->ps->commandTime + 1000 ) { ADDRLP4 0 INDIRI4 ADDRFP4 0 INDIRP4 INDIRP4 INDIRI4 CNSTI4 1000 ADDI4 LEI4 $764 line 2016 ;2016: pmove->ps->commandTime = finalTime - 1000; ADDRFP4 0 INDIRP4 INDIRP4 ADDRLP4 0 INDIRI4 CNSTI4 1000 SUBI4 ASGNI4 line 2017 ;2017: } LABELV $764 line 2019 ;2018: ;2019: pmove->ps->pmove_framecount = (pmove->ps->pmove_framecount+1) & ((1<ps->commandTime != finalTime ) { line 2026 ;2024: int msec; ;2025: ;2026: msec = finalTime - pmove->ps->commandTime; ADDRLP4 8 ADDRLP4 0 INDIRI4 ADDRFP4 0 INDIRP4 INDIRP4 INDIRI4 SUBI4 ASGNI4 line 2028 ;2027: ;2028: if ( pmove->pmove_fixed ) { ADDRFP4 0 INDIRP4 CNSTI4 216 ADDP4 INDIRI4 CNSTI4 0 EQI4 $769 line 2029 ;2029: if ( msec > pmove->pmove_msec ) { ADDRLP4 8 INDIRI4 ADDRFP4 0 INDIRP4 CNSTI4 220 ADDP4 INDIRI4 LEI4 $770 line 2030 ;2030: msec = pmove->pmove_msec; ADDRLP4 8 ADDRFP4 0 INDIRP4 CNSTI4 220 ADDP4 INDIRI4 ASGNI4 line 2031 ;2031: } line 2032 ;2032: } ADDRGP4 $770 JUMPV LABELV $769 line 2033 ;2033: else { line 2034 ;2034: if ( msec > 66 ) { ADDRLP4 8 INDIRI4 CNSTI4 66 LEI4 $773 line 2035 ;2035: msec = 66; ADDRLP4 8 CNSTI4 66 ASGNI4 line 2036 ;2036: } LABELV $773 line 2037 ;2037: } LABELV $770 line 2038 ;2038: pmove->cmd.serverTime = pmove->ps->commandTime + msec; ADDRLP4 12 ADDRFP4 0 INDIRP4 ASGNP4 ADDRLP4 12 INDIRP4 CNSTI4 4 ADDP4 ADDRLP4 12 INDIRP4 INDIRP4 INDIRI4 ADDRLP4 8 INDIRI4 ADDI4 ASGNI4 line 2039 ;2039: PmoveSingle( pmove ); ADDRFP4 0 INDIRP4 ARGP4 ADDRGP4 PmoveSingle CALLV pop line 2041 ;2040: ;2041: if ( pmove->ps->pm_flags & PMF_JUMP_HELD ) { ADDRFP4 0 INDIRP4 INDIRP4 CNSTI4 12 ADDP4 INDIRI4 CNSTI4 2 BANDI4 CNSTI4 0 EQI4 $775 line 2042 ;2042: pmove->cmd.upmove = 20; ADDRFP4 0 INDIRP4 CNSTI4 27 ADDP4 CNSTI1 20 ASGNI1 line 2043 ;2043: } LABELV $775 line 2044 ;2044: } LABELV $767 line 2023 ADDRFP4 0 INDIRP4 INDIRP4 INDIRI4 ADDRLP4 0 INDIRI4 NEI4 $766 line 2048 ;2045: ;2046: //PM_CheckStuck(); ;2047: ;2048:} LABELV $761 endproc Pmove 16 4 import trap_SnapVector import PM_StepSlideMove import PM_SlideMove bss export pml align 4 LABELV pml skip 140 export pm align 4 LABELV pm skip 4 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 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 $468 byte 1 37 byte 1 105 byte 1 58 byte 1 76 byte 1 97 byte 1 110 byte 1 100 byte 1 10 byte 1 0 align 1 LABELV $457 byte 1 37 byte 1 105 byte 1 58 byte 1 115 byte 1 116 byte 1 101 byte 1 101 byte 1 112 byte 1 10 byte 1 0 align 1 LABELV $446 byte 1 37 byte 1 105 byte 1 58 byte 1 107 byte 1 105 byte 1 99 byte 1 107 byte 1 111 byte 1 102 byte 1 102 byte 1 10 byte 1 0 align 1 LABELV $415 byte 1 37 byte 1 105 byte 1 58 byte 1 108 byte 1 105 byte 1 102 byte 1 116 byte 1 10 byte 1 0 align 1 LABELV $388 byte 1 37 byte 1 105 byte 1 58 byte 1 97 byte 1 108 byte 1 108 byte 1 115 byte 1 111 byte 1 108 byte 1 105 byte 1 100 byte 1 10 byte 1 0