mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-01 05:38:50 +00:00
BPMemory: Eliminate union type punning
This is undefined behavior in C++.
This commit is contained in:
parent
98311cd9f4
commit
1f596a23af
2 changed files with 26 additions and 22 deletions
|
@ -4,6 +4,30 @@
|
|||
|
||||
#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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue