| 173 | } |
| 174 | |
| 175 | int OnModuleStart() { |
| 176 | sceKernelDelayThread(100000); //added cuz game gets stuck on a loadscreen between islands otherwise, idk why |
| 177 | |
| 178 | int RenderLodLights = inireader.ReadInteger("PROJECT2DFX", "RenderLodLights", 1); |
| 179 | int CoronaLimit = inireader.ReadInteger("PROJECT2DFX", "CoronaLimit", 1000); |
| 180 | fCoronaRadiusMultiplier = inireader.ReadFloat("PROJECT2DFX", "CoronaRadiusMultiplier", 1.0f); |
| 181 | fCoronaFarClip = inireader.ReadFloat("PROJECT2DFX", "CoronaFarClip", 1000.0f); |
| 182 | |
| 183 | int SkyGfx = inireader.ReadInteger("PROJECT2DFX", "SkyGfx", 1); |
| 184 | |
| 185 | uintptr_t ptr_15700 = pattern.get(0, "00 29 05 00 21 30 05 00 C0 28 05 00 21 30 C5 00 80 28 05 00 21 28 C5 00 21 20 A4 00 AC 01 84 84 10 00 05 34", -12); |
| 186 | TheCamera = (uintptr_t)((uint32_t)(*(uint16_t*)(ptr_15700 + 0)) << 16 | (uint32_t)(*(uint16_t*)(ptr_15700 + 4))); |
| 187 | pCamPos = (CVector*)(TheCamera + 0xA70); //0xA70 at 0xEB598 |
| 188 | |
| 189 | uintptr_t ptr_8806D58 = pattern.get(0, "25 28 00 00 09 00 04 34 ? ? ? ? 02 00 05 34 0E 00 04 34", -4); |
| 190 | RslRenderStateSet = (void(*)(int, int))injector.GetBranchDestination(ptr_8806D58); |
| 191 | uintptr_t ptr_8836EC8 = pattern.get(0, "00 F0 84 44 ? ? ? ? 01 00 04 34", -4); |
| 192 | CSprite__FlushSpriteBuffer = (void(*)())injector.GetBranchDestination(ptr_8836EC8); |
| 193 | uintptr_t ptr_894DA78 = pattern.get(0, "02 00 06 3C ? ? ? ? 1A 00 A6 00", -8); |
| 194 | base__Random = (int(*)())ptr_894DA78; |
| 195 | uintptr_t ptr_8A25970 = pattern.get(0, "20 00 B4 E7 24 00 B6 E7 28 00 B0 AF 2C 00 B1 AF 30 00 B2 AF 34 00 B3 AF 38 00 B4 AF 3C 00 BF AF 25 80 E0 00", -4); |
| 196 | CSprite__CalcScreenCoors = (int(*)(CVector*, CVector*, float*, float*, uint8_t))ptr_8A25970; |
| 197 | uintptr_t ptr_8A27098 = pattern.get(0, "58 00 B0 AF FF 00 90 30 64 00 B3 AF 00 9C 07 00 00 3F 04 3C 54 00 B4 E7 5C 00 B1 AF 60 00 B2 AF 68 00 B4 AF 6C 00 B5 AF", -4); |
| 198 | CSprite__RenderBufferedOneXLUSprite = (void(*)())ptr_8A27098; |
| 199 | |
| 200 | if (CoronaLimit) |
| 201 | { |
| 202 | if (CoronaLimit > 1024) |
| 203 | CoronaLimit = 1024; |
| 204 | |
| 205 | const int corona_struct_size = 112; |
| 206 | uintptr_t aCoronas = AllocMemBlock(corona_struct_size * CoronaLimit); |
| 207 | |
| 208 | uintptr_t ptr_1F5ED0 = pattern.get(0, "24 00 B1 AF 2C 00 B3 AF 3C 60 0D 46", -4); |
| 209 | uintptr_t ptr_1F5EE4 = pattern.get(0, "3C 60 0D 46 21 28 A4 00", 8); |
| 210 | uintptr_t ptr_1F5F94 = pattern.get(0, "38 00 04 2A ? ? ? ? 70 00 52 26", 0); |
| 211 | uintptr_t ptr_1F6048 = pattern.get(0, "00 00 05 34 ? ? ? ? C0 31 05 00 00 39 05 00", -4); // count = 2 |
| 212 | uintptr_t ptr_1F6050 = pattern.get(0, "C0 31 05 00 00 39 05 00 23 30 C7 00 21 30 C4 00", -4); |
| 213 | uintptr_t ptr_1F6070 = pattern.get(0, "38 00 A6 28 ? ? ? ? 00 00 00 00", 0); |
| 214 | uintptr_t ptr_1F6150 = pattern.get(0, "00 00 07 34 01 00 08 34", -4); |
| 215 | uintptr_t ptr_1F6160 = pattern.get(1, "00 00 00 00 ? ? ? ? C0 41 07 00", -8); // count = 2 |
| 216 | uintptr_t ptr_1F6198 = pattern.get(0, "38 00 E8 28", 0); |
| 217 | uintptr_t ptr_1F619C = pattern.get(0, "38 00 04 34 ? ? ? ? 00 00 00 00 C0 21 07 00", 0); |
| 218 | uintptr_t ptr_1F71E0 = pattern.get(0, "64 00 B0 AF C0 40 04 3C", -8); |
| 219 | uintptr_t ptr_1F7208 = pattern.get(0, "06 00 17 34 68 00 A5 AF", -4); |
| 220 | uintptr_t ptr_1F78E0 = pattern.get(0, "38 00 C4 2B", 0); |
| 221 | uintptr_t ptr_1F7ADC = pattern.get(0, "38 00 04 2A ? ? ? ? 00 00 00 00", 0); |
| 222 | uintptr_t ptr_1F7B70 = pattern.get(1, "B4 00 B4 E7 B8 00 B6 E7 BC 00 B8 E7", -8); // count = 3 |
| 223 | uintptr_t ptr_1F7BB0 = pattern.get(0, "00 00 05 34 BF FF 04 24", -4); |
| 224 | uintptr_t ptr_1F7BE4 = pattern.get(0, "38 00 A6 28 ? ? ? ? C0 31 05 00", 0); |
| 225 | uintptr_t ptr_1F7FF4 = pattern.get(0, "38 00 24 2A", 0); |
| 226 | uintptr_t ptr_1F8A3C = pattern.get(0, "00 00 0F 34 01 00 19 34", -4); |
| 227 | uintptr_t ptr_1F8A48 = pattern.get(0, "38 00 18 34", 0); |
| 228 | uintptr_t ptr_1F8A4C = pattern.get(0, "C0 C9 0F 00 00 81 0F 00 23 C8 30 03", -8); // count = 2 |
| 229 | uintptr_t ptr_1F8A7C = pattern.get(0, "38 00 F9 29 ? ? ? ? 00 00 00 00", 0); |
| 230 | uintptr_t ptr_1F8AD0 = pattern.get(0, "38 00 F9 29 ? ? ? ? C0 C9 0F 00", 0); |
| 231 | |
| 232 | injector.WriteInstr(ptr_1F5ED0, lui(s2, HIWORD(aCoronas))); |
no test coverage detected