dolphin/Source/Core/VideoCommon/BPMemory.cpp
Lioncash 1f596a23af BPMemory: Eliminate union type punning
This is undefined behavior in C++.
2017-01-23 16:05:32 -05:00

34 lines
813 B
C++

// Copyright 2009 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include "VideoCommon/BPMemory.h"
#include <cstring>
// BP state
// STATE_TO_SAVE
BPMemory bpmem;
float FogParam0::GetA() const
{
// scale mantissa from 11 to 23 bits
const u32 integral = (static_cast<u32>(sign) << 31) | (static_cast<u32>(exponent) << 23) |
(static_cast<u32>(mantissa) << 12);
float real;
std::memcpy(&real, &integral, sizeof(u32));
return real;
}
float FogParam3::GetC() const
{
// scale mantissa from 11 to 23 bits
const u32 integral = (static_cast<u32>(c_sign) << 31) | (static_cast<u32>(c_exp) << 23) |
(static_cast<u32>(c_mant) << 12);
float real;
std::memcpy(&real, &integral, sizeof(u32));
return real;
}