# Conflicts:
#	src/CMakeLists.txt
This commit is contained in:
Christoph Oelckers 2016-02-06 05:28:53 +01:00
commit 34216ddd8e
12 changed files with 41 additions and 34 deletions

View file

@ -1244,11 +1244,14 @@ endif()
if( MSVC ) if( MSVC )
option( ZDOOM_GENERATE_MAPFILE "Generate .map file for debugging." OFF ) option( ZDOOM_GENERATE_MAPFILE "Generate .map file for debugging." OFF )
set( LINKERSTUFF "/MANIFEST:NO /DELAYLOAD:\"fmodex${X64}.dll\"" )
if( ZDOOM_GENERATE_MAPFILE ) if( ZDOOM_GENERATE_MAPFILE )
set_target_properties(zdoom PROPERTIES LINK_FLAGS "/MANIFEST:NO /DELAYLOAD:\"fmodex${X64}.dll\" /DELAYLOAD:\"libmpg123-0.dll\" /DELAYLOAD:\"libsndfile-1.dll\" /MAP") set( LINKERSTUFF ${LINKERSTUFF} "/MAP" )
else()
set_target_properties(zdoom PROPERTIES LINK_FLAGS "/MANIFEST:NO /DELAYLOAD:\"fmodex${X64}.dll\" /DELAYLOAD:\"libmpg123-0.dll\" /DELAYLOAD:\"libsndfile-1.dll\"")
endif() endif()
if( NOT NO_OPENAL )
set( LINKERSTUFF ${LINKERSTUFF} "/DELAYLOAD:\"libmpg123-0.dll\" /DELAYLOAD:\"libsndfile-1.dll\"" )
endif()
set_target_properties(zdoom PROPERTIES LINK_FLAGS ${LINKERSTUFF})
add_custom_command(TARGET zdoom POST_BUILD add_custom_command(TARGET zdoom POST_BUILD
COMMAND "mt.exe" -manifest \"${CMAKE_CURRENT_SOURCE_DIR}\\win32\\zdoom.exe.manifest\" -outputresource:\"$<TARGET_FILE:zdoom>\"\;\#1 COMMAND "mt.exe" -manifest \"${CMAKE_CURRENT_SOURCE_DIR}\\win32\\zdoom.exe.manifest\" -outputresource:\"$<TARGET_FILE:zdoom>\"\;\#1

View file

@ -225,7 +225,7 @@ public:
void SetSelection(int Selection) void SetSelection(int Selection)
{ {
float f = fabs(SELECTED_JOYSTICK->GetAxisScale(mAxis)); float f = fabsf(SELECTED_JOYSTICK->GetAxisScale(mAxis));
if (Selection) f*=-1; if (Selection) f*=-1;
SELECTED_JOYSTICK->SetAxisScale(mAxis, f); SELECTED_JOYSTICK->SetAxisScale(mAxis, f);
} }

View file

@ -2305,7 +2305,7 @@ void P_PlayerThink (player_t *player)
{ {
// A negative scale is used to prevent G_AddViewAngle/G_AddViewPitch // A negative scale is used to prevent G_AddViewAngle/G_AddViewPitch
// from scaling with the FOV scale. // from scaling with the FOV scale.
desired *= fabs(player->ReadyWeapon->FOVScale); desired *= fabsf(player->ReadyWeapon->FOVScale);
} }
if (player->FOV != desired) if (player->FOV != desired)
{ {

View file

@ -2311,9 +2311,9 @@ void FMODSoundRenderer::UpdateListener(SoundListener *listener)
pos.z = listener->position.Z; pos.z = listener->position.Z;
float angle = listener->angle; float angle = listener->angle;
forward.x = cos(angle); forward.x = cosf(angle);
forward.y = 0; forward.y = 0;
forward.z = sin(angle); forward.z = sinf(angle);
up.x = 0; up.x = 0;
up.y = 1; up.y = 1;

View file

@ -175,7 +175,7 @@ int WinMIDIDevice::GetTechnology() const
int WinMIDIDevice::SetTempo(int tempo) int WinMIDIDevice::SetTempo(int tempo)
{ {
MIDIPROPTEMPO data = { sizeof(MIDIPROPTEMPO), tempo }; MIDIPROPTEMPO data = { sizeof(MIDIPROPTEMPO), (DWORD)tempo };
return midiStreamProperty(MidiOut, (LPBYTE)&data, MIDIPROP_SET | MIDIPROP_TEMPO); return midiStreamProperty(MidiOut, (LPBYTE)&data, MIDIPROP_SET | MIDIPROP_TEMPO);
} }
@ -187,7 +187,7 @@ int WinMIDIDevice::SetTempo(int tempo)
int WinMIDIDevice::SetTimeDiv(int timediv) int WinMIDIDevice::SetTimeDiv(int timediv)
{ {
MIDIPROPTIMEDIV data = { sizeof(MIDIPROPTIMEDIV), timediv }; MIDIPROPTIMEDIV data = { sizeof(MIDIPROPTIMEDIV), (DWORD)timediv };
return midiStreamProperty(MidiOut, (LPBYTE)&data, MIDIPROP_SET | MIDIPROP_TIMEDIV); return midiStreamProperty(MidiOut, (LPBYTE)&data, MIDIPROP_SET | MIDIPROP_TIMEDIV);
} }

View file

@ -42,7 +42,7 @@
* T is the enum type of individual flags, * T is the enum type of individual flags,
* TT is the underlying integer type used (defaults to DWORD) * TT is the underlying integer type used (defaults to DWORD)
*/ */
template<typename T, typename TT = DWORD> template<typename T, typename TT = uint32>
class TFlags class TFlags
{ {
struct ZeroDummy {}; struct ZeroDummy {};

View file

@ -5553,7 +5553,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_DropItem)
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetSpeed) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetSpeed)
{ {
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
PARAM_INT(speed); PARAM_FIXED(speed);
PARAM_INT_OPT(ptr) { ptr = AAPTR_DEFAULT; } PARAM_INT_OPT(ptr) { ptr = AAPTR_DEFAULT; }
AActor *ref = COPY_AAPTR(self, ptr); AActor *ref = COPY_AAPTR(self, ptr);
@ -5573,7 +5573,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetSpeed)
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetFloatSpeed) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetFloatSpeed)
{ {
PARAM_ACTION_PROLOGUE; PARAM_ACTION_PROLOGUE;
PARAM_INT(speed); PARAM_FIXED(speed);
PARAM_INT_OPT(ptr) { ptr = AAPTR_DEFAULT; } PARAM_INT_OPT(ptr) { ptr = AAPTR_DEFAULT; }
AActor *ref = COPY_AAPTR(self, ptr); AActor *ref = COPY_AAPTR(self, ptr);

View file

@ -143,11 +143,13 @@ FxExpression *FxExpression::Resolve(FCompileContext &ctx)
FxExpression *FxExpression::ResolveAsBoolean(FCompileContext &ctx) FxExpression *FxExpression::ResolveAsBoolean(FCompileContext &ctx)
{ {
///FIXME: Use an actual boolean type
FxExpression *x = Resolve(ctx); FxExpression *x = Resolve(ctx);
if (x != NULL) if (x != NULL)
{ {
switch (x->ValueType.Type) switch (x->ValueType.Type)
{ {
case VAL_Int:
case VAL_Sound: case VAL_Sound:
case VAL_Color: case VAL_Color:
case VAL_Name: case VAL_Name:
@ -155,6 +157,9 @@ FxExpression *FxExpression::ResolveAsBoolean(FCompileContext &ctx)
break; break;
default: default:
ScriptPosition.Message(MSG_ERROR, "Not an integral type");
delete this;
return NULL;
break; break;
} }
} }
@ -2140,7 +2145,6 @@ FxExpression *FxRandomPick::Resolve(FCompileContext &ctx)
ExpEmit FxRandomPick::Emit(VMFunctionBuilder *build) ExpEmit FxRandomPick::Emit(VMFunctionBuilder *build)
{ {
#pragma message("FxRandomPick::Emit: Floating point part needs reviewing!")
unsigned i; unsigned i;
assert(choices.Size() > 0); assert(choices.Size() > 0);
@ -2166,6 +2170,14 @@ ExpEmit FxRandomPick::Emit(VMFunctionBuilder *build)
// automatically pick it as the destination register for each case. // automatically pick it as the destination register for each case.
resultreg.Free(build); resultreg.Free(build);
// For floating point results, we need to get a new register, since we can't
// reuse the integer one used to store the random result.
if (ValueType == VAL_Float)
{
resultreg = ExpEmit(build, REGT_FLOAT);
resultreg.Free(build);
}
// Allocate space for the jump table. // Allocate space for the jump table.
size_t jumptable = build->Emit(OP_JMP, 0); size_t jumptable = build->Emit(OP_JMP, 0);
for (i = 1; i < choices.Size(); ++i) for (i = 1; i < choices.Size(); ++i)
@ -2188,8 +2200,7 @@ ExpEmit FxRandomPick::Emit(VMFunctionBuilder *build)
else else
{ {
double val = static_cast<FxConstant *>(choices[i])->GetValue().GetFloat(); double val = static_cast<FxConstant *>(choices[i])->GetValue().GetFloat();
build->Emit(OP_PARAM, 0, REGT_FLOAT | REGT_KONST, build->GetConstantFloat(val)); build->Emit(OP_LKF, resultreg.RegNum, build->GetConstantFloat(val));
build->ParamChange(-1); // all params should use the same register here.
} }
} }
else else
@ -2200,14 +2211,7 @@ ExpEmit FxRandomPick::Emit(VMFunctionBuilder *build)
// was expected. Copy it to the one we wanted. // was expected. Copy it to the one we wanted.
resultreg.Reuse(build); // This is really just for the assert in Reuse() resultreg.Reuse(build); // This is really just for the assert in Reuse()
if (ValueType == VAL_Int) build->Emit(ValueType == VAL_Int ? OP_MOVE : OP_MOVEF, resultreg.RegNum, casereg.RegNum, 0);
{
build->Emit(OP_MOVE, resultreg.RegNum, casereg.RegNum, 0);
}
else
{
build->Emit(OP_MOVEF, resultreg.RegNum, casereg.RegNum, 0);
}
resultreg.Free(build); resultreg.Free(build);
} }
// Free this register so the remaining cases can use it. // Free this register so the remaining cases can use it.

View file

@ -190,7 +190,7 @@ void SF2Envelope::Release(Voice *v)
if (stage == SF2_ATTACK) if (stage == SF2_ATTACK)
{ {
// The attack stage does not use an attenuation in cB like all the rest. // The attack stage does not use an attenuation in cB like all the rest.
volume = log10(volume) * -200; volume = float(log10(volume) * -200);
} }
stage = SF2_RELEASE; stage = SF2_RELEASE;
bUpdating = true; bUpdating = true;

View file

@ -94,7 +94,7 @@ void Renderer::recompute_freq(int v)
if (ch->pitchfactor == 0) if (ch->pitchfactor == 0)
{ {
/* Damn. Somebody bent the pitch. */ /* Damn. Somebody bent the pitch. */
ch->pitchfactor = pow(2.f, ((abs(pb) * ch->pitchsens) / (8191.f * 1200.f))); ch->pitchfactor = float(pow(2.f, ((abs(pb) * ch->pitchsens) / (8191.f * 1200.f))));
} }
if (pb < 0) if (pb < 0)
{ {

View file

@ -1487,10 +1487,10 @@ void D3DFB::DoOffByOneCheck ()
float texbot = 1.f / float(FBHeight); float texbot = 1.f / float(FBHeight);
FBVERTEX verts[4] = FBVERTEX verts[4] =
{ {
{ -0.5f, -0.5f, 0.5f, 1.f, 0, ~0, 0.f, 0.f }, { -0.5f, -0.5f, 0.5f, 1.f, D3DCOLOR_RGBA(0,0,0,0), D3DCOLOR_RGBA(255,255,255,255), 0.f, 0.f },
{ 255.5f, -0.5f, 0.5f, 1.f, 0, ~0, texright, 0.f }, { 255.5f, -0.5f, 0.5f, 1.f, D3DCOLOR_RGBA(0,0,0,0), D3DCOLOR_RGBA(255,255,255,255), texright, 0.f },
{ 255.5f, 0.5f, 0.5f, 1.f, 0, ~0, texright, texbot }, { 255.5f, 0.5f, 0.5f, 1.f, D3DCOLOR_RGBA(0,0,0,0), D3DCOLOR_RGBA(255,255,255,255), texright, texbot },
{ -0.5f, 0.5f, 0.5f, 1.f, 0, ~0, 0.f, texbot } { -0.5f, 0.5f, 0.5f, 1.f, D3DCOLOR_RGBA(0,0,0,0), D3DCOLOR_RGBA(255,255,255,255), 0.f, texbot }
}; };
int i, c; int i, c;

View file

@ -1423,11 +1423,11 @@ static HCURSOR CreateBitmapCursor(int xhot, int yhot, HBITMAP and_mask, HBITMAP
{ {
ICONINFO iconinfo = ICONINFO iconinfo =
{ {
FALSE, // fIcon FALSE, // fIcon
xhot, // xHotspot (DWORD)xhot, // xHotspot
yhot, // yHotspot (DWORD)yhot, // yHotspot
and_mask, // hbmMask and_mask, // hbmMask
color_mask // hbmColor color_mask // hbmColor
}; };
HCURSOR cursor = CreateIconIndirect(&iconinfo); HCURSOR cursor = CreateIconIndirect(&iconinfo);