MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / get

Method get

Source/Utils/pseudorand.hpp:96–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

94 }
95
96 int16 get() {
97 int16 Data0 = mRandom_0;
98 int16 Data2 = mRandom_1;
99 int16 Data4 = mRandom_2;
100 int16 Data6 = mRandom_3;
101
102 uint32 Dat4 = Data4 | (Data6 << 16);
103 uint8 CF = Data4 & 1;
104 uint32 Data8 = Data0 | (Data2 << 16);
105
106 uint8 CF2 = Data8 & 1;
107 Data8 >>= 1;
108
109 if (CF)
110 Data8 |= 0x80000000;
111
112 Dat4 += CF2;
113 Data4 = Dat4 & 0xFFFF;
114 Data6 = Dat4 >> 16;
115
116 for (uint16 cx = 0x0C; cx > 0; --cx) {
117 CF = 0;
118
119 if (Data0 & 0x8000)
120 CF = 1;
121 Data0 <<= 1;
122 Data2 <<= 1;
123 if (CF)
124 Data2 |= 1;
125 }
126
127 int16 DataA = Data8 >> 16;
128
129 Data0 ^= Data8 & 0xFFFF;
130 Data2 ^= DataA;
131 Data8 = Data0;
132 DataA = Data2;
133
134 int16 ax = Data8;
135 int16 bx = DataA;
136 Data8 = bx;
137 DataA = ax;
138
139 Data8 >>= 4;
140 Data0 ^= Data8;
141
142 mRandom_0 = Data0;
143 mRandom_1 = Data2;
144 mRandom_2 = Data4;
145 mRandom_3 = Data6;
146 return Data0;
147 }
148};

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected