├── .gitattributes ├── .github └── workflows │ └── main.yml ├── .gitignore ├── Android.mk ├── Application.mk ├── LICENSE ├── README.md ├── colorcycle_interpolation.cpp ├── data ├── colorcycle_24h.dat └── timecyc_24h.dat ├── main.cpp ├── timecyc.cpp └── timecyc.h /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: AML Mod Compiler 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | 14 | - name: Checkout repository... 15 | uses: actions/checkout@v3 16 | 17 | - name: Setup SSH keys... 18 | uses: webfactory/ssh-agent@v0.8.0 19 | with: 20 | ssh-private-key: | 21 | ${{ secrets.SSH }} 22 | 23 | - name: Download AndroidModLoader`s mod template... 24 | uses: wei/wget@v1 25 | with: 26 | args: -O ./AML_src.zip https://github.com/RusJJ/AndroidModLoader/archive/refs/heads/main.zip 27 | 28 | - name: Install AndroidModLoader`s mod template... 29 | run: | 30 | unzip ./AML_src.zip 31 | mv ./AndroidModLoader-main/mod ./mod 32 | 33 | - name: Get GTA:SA structures file (private)... 34 | run: | 35 | git clone ssh://git@github.com/RusJJ/GTASAAndroid_Structs.git ./structs 36 | mv ./structs/* ./ 37 | 38 | - name: Install Android NDK (r24)... 39 | uses: nttld/setup-ndk@v1.2.0 40 | with: 41 | ndk-version: r24 42 | local-cache: true 43 | 44 | - name: Build the code... 45 | run: ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk 46 | 47 | - name: Upload the mod! 48 | uses: actions/upload-artifact@v3 49 | with: 50 | name: compiled-mod.zip 51 | path: ./libs 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Ll]og/ 33 | [Ll]ogs/ 34 | 35 | # Visual Studio 2015/2017 cache/options directory 36 | .vs/ 37 | # Uncomment if you have tasks that create the project's static files in wwwroot 38 | #wwwroot/ 39 | 40 | # Visual Studio 2017 auto generated files 41 | Generated\ Files/ 42 | 43 | # MSTest test Results 44 | [Tt]est[Rr]esult*/ 45 | [Bb]uild[Ll]og.* 46 | 47 | # NUnit 48 | *.VisualState.xml 49 | TestResult.xml 50 | nunit-*.xml 51 | 52 | # Build Results of an ATL Project 53 | [Dd]ebugPS/ 54 | [Rr]eleasePS/ 55 | dlldata.c 56 | 57 | # Benchmark Results 58 | BenchmarkDotNet.Artifacts/ 59 | 60 | # .NET Core 61 | project.lock.json 62 | project.fragment.lock.json 63 | artifacts/ 64 | 65 | # ASP.NET Scaffolding 66 | ScaffoldingReadMe.txt 67 | 68 | # StyleCop 69 | StyleCopReport.xml 70 | 71 | # Files built by Visual Studio 72 | *_i.c 73 | *_p.c 74 | *_h.h 75 | *.ilk 76 | *.meta 77 | *.obj 78 | *.iobj 79 | *.pch 80 | *.pdb 81 | *.ipdb 82 | *.pgc 83 | *.pgd 84 | *.rsp 85 | *.sbr 86 | *.tlb 87 | *.tli 88 | *.tlh 89 | *.tmp 90 | *.tmp_proj 91 | *_wpftmp.csproj 92 | *.log 93 | *.tlog 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 298 | *.vbp 299 | 300 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 301 | *.dsw 302 | *.dsp 303 | 304 | # Visual Studio 6 technical files 305 | *.ncb 306 | *.aps 307 | 308 | # Visual Studio LightSwitch build output 309 | **/*.HTMLClient/GeneratedArtifacts 310 | **/*.DesktopClient/GeneratedArtifacts 311 | **/*.DesktopClient/ModelManifest.xml 312 | **/*.Server/GeneratedArtifacts 313 | **/*.Server/ModelManifest.xml 314 | _Pvt_Extensions 315 | 316 | # Paket dependency manager 317 | .paket/paket.exe 318 | paket-files/ 319 | 320 | # FAKE - F# Make 321 | .fake/ 322 | 323 | # CodeRush personal settings 324 | .cr/personal 325 | 326 | # Python Tools for Visual Studio (PTVS) 327 | __pycache__/ 328 | *.pyc 329 | 330 | # Cake - Uncomment if you are using it 331 | # tools/** 332 | # !tools/packages.config 333 | 334 | # Tabs Studio 335 | *.tss 336 | 337 | # Telerik's JustMock configuration file 338 | *.jmconfig 339 | 340 | # BizTalk build output 341 | *.btp.cs 342 | *.btm.cs 343 | *.odx.cs 344 | *.xsd.cs 345 | 346 | # OpenCover UI analysis results 347 | OpenCover/ 348 | 349 | # Azure Stream Analytics local run output 350 | ASALocalRun/ 351 | 352 | # MSBuild Binary and Structured Log 353 | *.binlog 354 | 355 | # NVidia Nsight GPU debugger configuration file 356 | *.nvuser 357 | 358 | # MFractors (Xamarin productivity tool) working folder 359 | .mfractor/ 360 | 361 | # Local History for Visual Studio 362 | .localhistory/ 363 | 364 | # Visual Studio History (VSHistory) files 365 | .vshistory/ 366 | 367 | # BeatPulse healthcheck temp database 368 | healthchecksdb 369 | 370 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 371 | MigrationBackup/ 372 | 373 | # Ionide (cross platform F# VS Code tools) working folder 374 | .ionide/ 375 | 376 | # Fody - auto-generated XML schema 377 | FodyWeavers.xsd 378 | 379 | # VS Code files for those working on multiple tools 380 | .vscode/* 381 | !.vscode/settings.json 382 | !.vscode/tasks.json 383 | !.vscode/launch.json 384 | !.vscode/extensions.json 385 | *.code-workspace 386 | 387 | # Local History for Visual Studio Code 388 | .history/ 389 | 390 | # Windows Installer files from build outputs 391 | *.cab 392 | *.msi 393 | *.msix 394 | *.msm 395 | *.msp 396 | 397 | # JetBrains Rider 398 | *.sln.iml 399 | 400 | # Own 401 | mod/ 402 | libs/ 403 | *.bak 404 | build.ps1 405 | ndkpath.txt 406 | GTASA_ENUMS.h 407 | GTASA_STRUCTS.h 408 | RW_STRUCTS.h 409 | GTASA_DECLS.h 410 | GTASA_STRUCTS_210.h 411 | RW_STRUCTS_210.h 412 | GTAVC_STRUCTS.h 413 | GTA_SHARED.h 414 | GTASADE_STRUCTS.h 415 | GTAVC_ENUMS.h 416 | -------------------------------------------------------------------------------- /Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | 3 | include $(CLEAR_VARS) 4 | LOCAL_CPP_EXTENSION := .cpp .cc 5 | ifeq ($(TARGET_ARCH_ABI), armeabi-v7a) 6 | LOCAL_MODULE := Timecyc24 7 | else 8 | LOCAL_MODULE := Timecyc24_64 9 | endif 10 | LOCAL_SRC_FILES := main.cpp timecyc.cpp mod/logger.cpp 11 | LOCAL_CFLAGS += -O2 -mfloat-abi=softfp -DNDEBUG -std=c++17 -mfpu=neon 12 | LOCAL_C_INCLUDES += ./include 13 | LOCAL_LDLIBS += -llog 14 | include $(BUILD_SHARED_LIBRARY) -------------------------------------------------------------------------------- /Application.mk: -------------------------------------------------------------------------------- 1 | APP_STL := c++_static 2 | APP_ABI := armeabi-v7a arm64-v8a 3 | APP_OPTIM := release 4 | APP_PLATFORM := android-17 5 | NDK_TOOLCHAIN_VERSION := clang 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 AndroidModLoader 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | A port of this mod: https://github.com/GTAmodding/timecycle24 -------------------------------------------------------------------------------- /colorcycle_interpolation.cpp: -------------------------------------------------------------------------------- 1 | // This file was used to interpolate value-by-value for colorcycle_24h.dat file. 2 | // Use it in any CPP-online site or simply do your own magic *** 3 | // I was kinda sleepy and had a headache so i did it like that. 4 | 5 | #include 6 | #include 7 | 8 | struct RQVector 9 | { 10 | void Print() { printf("%.3f %.3f %.3f %.3f ", r,g,b,a); }; 11 | float r,g,b,a; 12 | }; 13 | 14 | #define NUMWEATHER 23 15 | #define NUMHOURS 24 16 | 17 | void PrintHourComment(int hour) 18 | { 19 | if(hour == 0) std::cout << " // 12 AM\n"; 20 | else if(hour == 12) std::cout << " // 12 PM\n"; 21 | else 22 | { 23 | if(hour >= 12) 24 | { 25 | hour -= 12; 26 | std::cout << " // " << hour << " PM\n"; 27 | } 28 | else 29 | { 30 | std::cout << " // " << hour << " AM\n"; 31 | } 32 | } 33 | } 34 | 35 | // Yeah, i know. 36 | const char* psz[8] = { 37 | "2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007", 38 | "1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001", 39 | "1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022", 40 | "1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001", 41 | "2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035", 42 | "2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053", 43 | "1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079", 44 | "2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029", 45 | }; 46 | 47 | #define INTERP_IT(__rqvec, __idx) __rqvec[i].__idx = __rqvec[pszPos * 3].__idx - (i % 3) * (__rqvec[pszPos * 3].__idx - __rqvec[nextPos * 3].__idx) / 3.0f; 48 | #define INTERP(__rqvec) INTERP_IT(__rqvec, r); INTERP_IT(__rqvec, g); INTERP_IT(__rqvec, b); INTERP_IT(__rqvec, a); 49 | 50 | RQVector Red[NUMHOURS]; 51 | RQVector Green[NUMHOURS]; 52 | RQVector Blue[NUMHOURS]; 53 | 54 | int main() 55 | { 56 | for(int i = 0; i < 8; ++i) 57 | { 58 | sscanf(psz[i], "%f %f %f %f %f %f %f %f %f %f %f %f", 59 | &Red[i * 3].r, &Red[i * 3].g, &Red[i * 3].b, &Red[i * 3].a, 60 | &Green[i * 3].r, &Green[i * 3].g, &Green[i * 3].b, &Green[i * 3].a, 61 | &Blue[i * 3].r, &Blue[i * 3].g, &Blue[i * 3].b, &Blue[i * 3].a); 62 | } 63 | for(int i = 0; i < 24; ++i) 64 | { 65 | if(i % 3 == 0) 66 | { 67 | std::cout << psz[i / 3]; 68 | PrintHourComment(i); 69 | } 70 | else 71 | { 72 | int pszPos = i / 3; 73 | int nextPos = pszPos + 1; 74 | if(nextPos == 8) nextPos = 0; 75 | 76 | //Red[i].r = Red[pszPos].r - (i % 3) * (Red[pszPos].r - Red[nextPos].r) / 3.0f; 77 | INTERP(Red); 78 | INTERP(Green); 79 | INTERP(Blue); 80 | 81 | Red[i].Print(); 82 | Green[i].Print(); 83 | Blue[i].Print(); 84 | PrintHourComment(i); 85 | } 86 | } 87 | } -------------------------------------------------------------------------------- /data/colorcycle_24h.dat: -------------------------------------------------------------------------------- 1 | // Red Grade (RR RG RB RA) Green Grade (GR GG GB GA) Blue Grade (BR BG BB BA) 2 | // RR RG RB RA GG GG GB GA BR BG BB BA 3 | 4 | // WEATHER_EXTRASUNNY_LA 5 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 6 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 7 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 8 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 9 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 10 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 11 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 12 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 13 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 14 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 15 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 16 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 17 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 18 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 19 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 20 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 21 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 22 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 23 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 24 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 25 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 26 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 27 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 28 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 29 | 30 | // WEATHER_SUNNY_LA 31 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 32 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 33 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 34 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 35 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 36 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 37 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 38 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 39 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 40 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 41 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 42 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 43 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 44 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 45 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 46 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 47 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 48 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 49 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 50 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 51 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 52 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 53 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 54 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 55 | 56 | // WEATHER_EXTRASUNNY_SMOG_LA 57 | 1.667 0.032 0.030 0.060 0.032 1.667 0.030 0.060 0.033 0.033 1.654 0.070 // 12 AM 58 | 1.626 0.032 0.030 0.062 0.032 1.628 0.030 0.062 0.033 0.033 1.615 0.072 // 1 AM 59 | 1.584 0.032 0.030 0.065 0.032 1.589 0.030 0.063 0.033 0.033 1.576 0.074 // 2 AM 60 | 1.543 0.032 0.030 0.067 0.032 1.550 0.030 0.065 0.033 0.033 1.537 0.076 // 3 AM 61 | 1.446 0.032 0.030 0.073 0.032 1.459 0.030 0.070 0.033 0.033 1.446 0.080 // 4 AM 62 | 1.350 0.032 0.030 0.080 0.032 1.368 0.030 0.074 0.033 0.033 1.355 0.085 // 5 AM 63 | 1.253 0.032 0.030 0.086 0.032 1.277 0.030 0.079 0.033 0.033 1.264 0.089 // 6 AM 64 | 1.339 0.032 0.030 0.082 0.032 1.355 0.030 0.075 0.033 0.033 1.354 0.084 // 7 AM 65 | 1.425 0.032 0.030 0.079 0.032 1.432 0.030 0.072 0.033 0.033 1.443 0.079 // 8 AM 66 | 1.511 0.032 0.030 0.075 0.032 1.510 0.030 0.068 0.033 0.033 1.533 0.074 // 9 AM 67 | 1.640 0.032 0.030 0.069 0.032 1.626 0.030 0.062 0.033 0.033 1.667 0.066 // 10 AM 68 | 1.769 0.032 0.030 0.064 0.032 1.743 0.030 0.057 0.033 0.033 1.802 0.059 // 11 AM 69 | 1.898 0.032 0.030 0.058 0.032 1.859 0.030 0.051 0.033 0.033 1.936 0.051 // 12 PM 70 | 1.845 0.032 0.030 0.055 0.032 1.782 0.030 0.051 0.033 0.033 1.858 0.047 // 1 PM 71 | 1.793 0.033 0.030 0.051 0.032 1.706 0.030 0.052 0.033 0.033 1.781 0.043 // 2 PM 72 | 1.740 0.033 0.030 0.048 0.032 1.629 0.030 0.052 0.033 0.033 1.703 0.039 // 3 PM 73 | 1.661 0.033 0.030 0.043 0.032 1.514 0.030 0.053 0.033 0.033 1.587 0.033 // 4 PM 74 | 1.581 0.033 0.031 0.037 0.031 1.399 0.031 0.053 0.033 0.033 1.470 0.028 // 5 PM 75 | 1.502 0.033 0.031 0.032 0.031 1.284 0.031 0.054 0.033 0.033 1.354 0.022 // 6 PM 76 | 1.540 0.033 0.031 0.038 0.031 1.373 0.031 0.055 0.033 0.033 1.424 0.033 // 7 PM 77 | 1.579 0.032 0.030 0.045 0.032 1.463 0.030 0.057 0.033 0.033 1.494 0.044 // 8 PM 78 | 1.617 0.032 0.030 0.051 0.032 1.552 0.030 0.058 0.033 0.033 1.564 0.055 // 9 PM 79 | 1.634 0.032 0.030 0.054 0.032 1.590 0.030 0.059 0.033 0.033 1.594 0.060 // 10 PM 80 | 1.650 0.032 0.030 0.057 0.032 1.629 0.030 0.059 0.033 0.033 1.624 0.065 // 11 PM 81 | 82 | // WEATHER_SUNNY_SMOG_LA 83 | 1.514 0.043 0.040 0.082 0.043 1.514 0.040 0.082 0.043 0.043 1.497 0.095 // 12 AM 84 | 1.480 0.043 0.040 0.084 0.043 1.482 0.040 0.084 0.043 0.043 1.465 0.097 // 1 AM 85 | 1.445 0.043 0.040 0.086 0.043 1.449 0.040 0.085 0.043 0.043 1.432 0.098 // 2 AM 86 | 1.411 0.043 0.040 0.088 0.043 1.417 0.040 0.087 0.043 0.043 1.400 0.100 // 3 AM 87 | 1.331 0.043 0.040 0.093 0.043 1.341 0.040 0.091 0.043 0.043 1.324 0.104 // 4 AM 88 | 1.250 0.043 0.040 0.099 0.043 1.266 0.040 0.094 0.043 0.043 1.248 0.108 // 5 AM 89 | 1.170 0.043 0.040 0.104 0.043 1.190 0.040 0.098 0.043 0.043 1.172 0.112 // 6 AM 90 | 1.242 0.043 0.040 0.101 0.043 1.255 0.040 0.095 0.043 0.043 1.247 0.108 // 7 AM 91 | 1.313 0.043 0.040 0.097 0.043 1.319 0.040 0.092 0.043 0.043 1.321 0.103 // 8 AM 92 | 1.385 0.043 0.040 0.094 0.043 1.384 0.040 0.089 0.043 0.043 1.396 0.099 // 9 AM 93 | 1.492 0.043 0.040 0.089 0.043 1.481 0.040 0.084 0.043 0.043 1.508 0.093 // 10 AM 94 | 1.600 0.043 0.040 0.085 0.043 1.577 0.040 0.080 0.043 0.043 1.620 0.086 // 11 AM 95 | 1.707 0.043 0.040 0.080 0.043 1.674 0.040 0.075 0.043 0.043 1.732 0.080 // 12 PM 96 | 1.663 0.043 0.040 0.077 0.043 1.610 0.040 0.075 0.043 0.043 1.667 0.077 // 1 PM 97 | 1.619 0.043 0.040 0.075 0.043 1.547 0.040 0.076 0.043 0.043 1.603 0.073 // 2 PM 98 | 1.575 0.043 0.040 0.072 0.043 1.483 0.040 0.076 0.043 0.043 1.538 0.070 // 3 PM 99 | 1.509 0.043 0.040 0.068 0.043 1.387 0.040 0.076 0.043 0.043 1.441 0.065 // 4 PM 100 | 1.443 0.044 0.041 0.063 0.042 1.291 0.041 0.077 0.043 0.043 1.344 0.060 // 5 PM 101 | 1.377 0.044 0.041 0.059 0.042 1.195 0.041 0.077 0.043 0.043 1.247 0.055 // 6 PM 102 | 1.409 0.044 0.041 0.064 0.042 1.270 0.041 0.078 0.043 0.043 1.305 0.064 // 7 PM 103 | 1.441 0.043 0.040 0.070 0.043 1.344 0.040 0.079 0.043 0.043 1.364 0.074 // 8 PM 104 | 1.473 0.043 0.040 0.075 0.043 1.419 0.040 0.080 0.043 0.043 1.422 0.083 // 9 PM 105 | 1.487 0.043 0.040 0.077 0.043 1.451 0.040 0.081 0.043 0.043 1.447 0.087 // 10 PM 106 | 1.500 0.043 0.040 0.080 0.043 1.482 0.040 0.081 0.043 0.043 1.472 0.091 // 11 PM 107 | 108 | // WEATHER_CLOUDY_LA 109 | 1.526 0.059 0.059 0.036 0.060 1.525 0.059 0.037 0.060 0.059 1.525 0.037 // 12 AM 110 | 1.495 0.059 0.059 0.038 0.060 1.496 0.059 0.038 0.060 0.059 1.496 0.038 // 1 AM 111 | 1.464 0.059 0.059 0.040 0.060 1.466 0.059 0.040 0.060 0.059 1.466 0.040 // 2 AM 112 | 1.433 0.059 0.059 0.042 0.060 1.437 0.059 0.041 0.060 0.059 1.437 0.041 // 3 AM 113 | 1.361 0.059 0.059 0.047 0.060 1.369 0.059 0.044 0.060 0.059 1.369 0.044 // 4 AM 114 | 1.288 0.059 0.059 0.051 0.060 1.301 0.059 0.048 0.060 0.059 1.301 0.048 // 5 AM 115 | 1.216 0.059 0.059 0.056 0.060 1.233 0.059 0.051 0.060 0.059 1.233 0.051 // 6 AM 116 | 1.280 0.059 0.059 0.053 0.060 1.291 0.059 0.048 0.060 0.059 1.300 0.047 // 7 AM 117 | 1.345 0.059 0.059 0.051 0.060 1.349 0.059 0.046 0.060 0.059 1.367 0.044 // 8 AM 118 | 1.409 0.059 0.059 0.048 0.060 1.407 0.059 0.043 0.060 0.059 1.434 0.040 // 9 AM 119 | 1.506 0.059 0.059 0.044 0.060 1.494 0.059 0.039 0.060 0.059 1.535 0.034 // 10 AM 120 | 1.602 0.059 0.059 0.039 0.060 1.582 0.059 0.034 0.060 0.059 1.636 0.029 // 11 AM 121 | 1.699 0.059 0.059 0.035 0.060 1.669 0.059 0.030 0.060 0.059 1.737 0.023 // 12 PM 122 | 1.660 0.059 0.059 0.032 0.060 1.612 0.059 0.030 0.060 0.059 1.679 0.020 // 1 PM 123 | 1.620 0.059 0.059 0.030 0.059 1.554 0.059 0.031 0.060 0.059 1.620 0.017 // 2 PM 124 | 1.581 0.059 0.059 0.027 0.059 1.497 0.059 0.031 0.060 0.059 1.562 0.014 // 3 PM 125 | 1.522 0.059 0.059 0.023 0.059 1.411 0.059 0.031 0.060 0.059 1.475 0.010 // 4 PM 126 | 1.462 0.060 0.060 0.020 0.059 1.324 0.060 0.032 0.060 0.059 1.387 0.005 // 5 PM 127 | 1.403 0.060 0.060 0.016 0.059 1.238 0.060 0.032 0.060 0.059 1.300 0.001 // 6 PM 128 | 1.432 0.060 0.060 0.021 0.059 1.305 0.060 0.033 0.060 0.059 1.352 0.009 // 7 PM 129 | 1.460 0.059 0.059 0.025 0.060 1.372 0.059 0.034 0.060 0.059 1.405 0.018 // 8 PM 130 | 1.489 0.059 0.059 0.030 0.060 1.439 0.059 0.035 0.060 0.059 1.457 0.026 // 9 PM 131 | 1.501 0.059 0.059 0.032 0.060 1.468 0.059 0.036 0.060 0.059 1.480 0.030 // 10 PM 132 | 1.514 0.059 0.059 0.034 0.060 1.496 0.059 0.036 0.060 0.059 1.502 0.033 // 11 PM 133 | 134 | // WEATHER_SUNNY_SF 135 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 136 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 137 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 138 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 139 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 140 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 141 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 142 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 143 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 144 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 145 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 146 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 147 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 148 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 149 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 150 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 151 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 152 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 153 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 154 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 155 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 156 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 157 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 158 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 159 | 160 | // WEATHER_EXTRASUNNY_SF 161 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 162 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 163 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 164 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 165 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 166 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 167 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 168 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 169 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 170 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 171 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 172 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 173 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 174 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 175 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 176 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 177 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 178 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 179 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 180 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 181 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 182 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 183 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 184 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 185 | 186 | // WEATHER_CLOUDY_SF 187 | 1.526 0.059 0.059 0.036 0.060 1.525 0.059 0.037 0.060 0.059 1.525 0.037 // 12 AM 188 | 1.495 0.059 0.059 0.038 0.060 1.496 0.059 0.038 0.060 0.059 1.496 0.038 // 1 AM 189 | 1.464 0.059 0.059 0.040 0.060 1.466 0.059 0.040 0.060 0.059 1.466 0.040 // 2 AM 190 | 1.433 0.059 0.059 0.042 0.060 1.437 0.059 0.041 0.060 0.059 1.437 0.041 // 3 AM 191 | 1.361 0.059 0.059 0.047 0.060 1.369 0.059 0.044 0.060 0.059 1.369 0.044 // 4 AM 192 | 1.288 0.059 0.059 0.051 0.060 1.301 0.059 0.048 0.060 0.059 1.301 0.048 // 5 AM 193 | 1.216 0.059 0.059 0.056 0.060 1.233 0.059 0.051 0.060 0.059 1.233 0.051 // 6 AM 194 | 1.280 0.059 0.059 0.053 0.060 1.291 0.059 0.048 0.060 0.059 1.300 0.047 // 7 AM 195 | 1.345 0.059 0.059 0.051 0.060 1.349 0.059 0.046 0.060 0.059 1.367 0.044 // 8 AM 196 | 1.409 0.059 0.059 0.048 0.060 1.407 0.059 0.043 0.060 0.059 1.434 0.040 // 9 AM 197 | 1.506 0.059 0.059 0.044 0.060 1.494 0.059 0.039 0.060 0.059 1.535 0.034 // 10 AM 198 | 1.602 0.059 0.059 0.039 0.060 1.582 0.059 0.034 0.060 0.059 1.636 0.029 // 11 AM 199 | 1.699 0.059 0.059 0.035 0.060 1.669 0.059 0.030 0.060 0.059 1.737 0.023 // 12 PM 200 | 1.660 0.059 0.059 0.032 0.060 1.612 0.059 0.030 0.060 0.059 1.679 0.020 // 1 PM 201 | 1.620 0.059 0.059 0.030 0.059 1.554 0.059 0.031 0.060 0.059 1.620 0.017 // 2 PM 202 | 1.581 0.059 0.059 0.027 0.059 1.497 0.059 0.031 0.060 0.059 1.562 0.014 // 3 PM 203 | 1.522 0.059 0.059 0.023 0.059 1.411 0.059 0.031 0.060 0.059 1.475 0.010 // 4 PM 204 | 1.462 0.060 0.060 0.020 0.059 1.324 0.060 0.032 0.060 0.059 1.387 0.005 // 5 PM 205 | 1.403 0.060 0.060 0.016 0.059 1.238 0.060 0.032 0.060 0.059 1.300 0.001 // 6 PM 206 | 1.432 0.060 0.060 0.021 0.059 1.305 0.060 0.033 0.060 0.059 1.352 0.009 // 7 PM 207 | 1.460 0.059 0.059 0.025 0.060 1.372 0.059 0.034 0.060 0.059 1.405 0.018 // 8 PM 208 | 1.489 0.059 0.059 0.030 0.060 1.439 0.059 0.035 0.060 0.059 1.457 0.026 // 9 PM 209 | 1.501 0.059 0.059 0.032 0.060 1.468 0.059 0.036 0.060 0.059 1.480 0.030 // 10 PM 210 | 1.514 0.059 0.059 0.034 0.060 1.496 0.059 0.036 0.060 0.059 1.502 0.033 // 11 PM 211 | 212 | // WEATHER_RAINY_SF 213 | 1.508 -0.042 -0.042 0.046 -0.042 1.508 -0.042 0.046 -0.042 -0.042 1.508 0.046 // 12 AM 214 | 1.477 -0.042 -0.042 0.048 -0.042 1.479 -0.042 0.048 -0.042 -0.042 1.479 0.048 // 1 AM 215 | 1.446 -0.042 -0.042 0.050 -0.042 1.449 -0.042 0.049 -0.042 -0.042 1.449 0.049 // 2 AM 216 | 1.415 -0.042 -0.042 0.052 -0.042 1.420 -0.042 0.051 -0.042 -0.042 1.420 0.051 // 3 AM 217 | 1.343 -0.042 -0.042 0.057 -0.042 1.352 -0.042 0.054 -0.042 -0.042 1.352 0.054 // 4 AM 218 | 1.270 -0.042 -0.042 0.061 -0.042 1.284 -0.042 0.058 -0.042 -0.042 1.284 0.058 // 5 AM 219 | 1.198 -0.042 -0.042 0.066 -0.042 1.216 -0.042 0.061 -0.042 -0.042 1.216 0.061 // 6 AM 220 | 1.262 -0.042 -0.042 0.063 -0.042 1.274 -0.042 0.058 -0.042 -0.042 1.283 0.057 // 7 AM 221 | 1.327 -0.042 -0.042 0.060 -0.042 1.332 -0.042 0.056 -0.042 -0.042 1.350 0.053 // 8 AM 222 | 1.391 -0.042 -0.042 0.057 -0.042 1.390 -0.042 0.053 -0.042 -0.042 1.417 0.049 // 9 AM 223 | 1.488 -0.042 -0.042 0.053 -0.042 1.477 -0.042 0.049 -0.042 -0.042 1.518 0.043 // 10 AM 224 | 1.585 -0.042 -0.042 0.049 -0.042 1.565 -0.042 0.044 -0.042 -0.042 1.619 0.038 // 11 AM 225 | 1.682 -0.042 -0.042 0.045 -0.042 1.652 -0.042 0.040 -0.042 -0.042 1.720 0.032 // 12 PM 226 | 1.642 -0.042 -0.042 0.042 -0.042 1.595 -0.042 0.040 -0.042 -0.042 1.662 0.029 // 1 PM 227 | 1.603 -0.041 -0.041 0.040 -0.042 1.537 -0.041 0.041 -0.042 -0.042 1.603 0.027 // 2 PM 228 | 1.563 -0.041 -0.041 0.037 -0.042 1.480 -0.041 0.041 -0.042 -0.042 1.545 0.024 // 3 PM 229 | 1.504 -0.041 -0.041 0.033 -0.042 1.394 -0.041 0.041 -0.042 -0.042 1.458 0.019 // 4 PM 230 | 1.444 -0.041 -0.041 0.030 -0.042 1.307 -0.041 0.042 -0.042 -0.042 1.370 0.015 // 5 PM 231 | 1.385 -0.041 -0.041 0.026 -0.042 1.221 -0.041 0.042 -0.042 -0.042 1.283 0.010 // 6 PM 232 | 1.414 -0.041 -0.041 0.031 -0.042 1.288 -0.041 0.043 -0.042 -0.042 1.336 0.018 // 7 PM 233 | 1.442 -0.041 -0.041 0.035 -0.042 1.355 -0.042 0.044 -0.042 -0.042 1.388 0.027 // 8 PM 234 | 1.471 -0.041 -0.041 0.040 -0.042 1.422 -0.042 0.045 -0.042 -0.042 1.441 0.035 // 9 PM 235 | 1.483 -0.041 -0.041 0.042 -0.042 1.451 -0.042 0.045 -0.042 -0.042 1.463 0.039 // 10 PM 236 | 1.496 -0.042 -0.042 0.044 -0.042 1.479 -0.042 0.046 -0.042 -0.042 1.486 0.042 // 11 PM 237 | 238 | // WEATHER_FOGGY_SF 239 | 1.438 0.048 0.045 0.093 0.048 1.438 0.045 0.093 0.049 0.049 1.419 0.108 // 12 AM 240 | 1.407 0.048 0.045 0.095 0.048 1.409 0.045 0.094 0.049 0.049 1.390 0.110 // 1 AM 241 | 1.376 0.048 0.045 0.097 0.048 1.379 0.045 0.096 0.049 0.049 1.360 0.111 // 2 AM 242 | 1.345 0.048 0.045 0.099 0.048 1.350 0.045 0.097 0.049 0.049 1.331 0.113 // 3 AM 243 | 1.273 0.048 0.045 0.104 0.048 1.282 0.045 0.101 0.049 0.049 1.263 0.116 // 4 AM 244 | 1.200 0.048 0.045 0.108 0.048 1.214 0.045 0.104 0.049 0.049 1.194 0.120 // 5 AM 245 | 1.128 0.048 0.045 0.113 0.048 1.146 0.045 0.108 0.049 0.049 1.126 0.123 // 6 AM 246 | 1.193 0.048 0.045 0.110 0.048 1.204 0.045 0.105 0.049 0.049 1.193 0.119 // 7 AM 247 | 1.257 0.048 0.045 0.107 0.048 1.262 0.045 0.102 0.049 0.049 1.261 0.115 // 8 AM 248 | 1.322 0.048 0.045 0.104 0.048 1.320 0.045 0.099 0.049 0.049 1.328 0.111 // 9 AM 249 | 1.419 0.048 0.045 0.100 0.048 1.407 0.045 0.095 0.049 0.049 1.429 0.105 // 10 AM 250 | 1.515 0.048 0.045 0.096 0.048 1.495 0.045 0.091 0.049 0.049 1.529 0.100 // 11 AM 251 | 1.612 0.048 0.045 0.092 0.048 1.582 0.045 0.087 0.049 0.049 1.630 0.094 // 12 PM 252 | 1.572 0.048 0.045 0.089 0.048 1.525 0.045 0.087 0.049 0.049 1.572 0.091 // 1 PM 253 | 1.533 0.048 0.045 0.087 0.048 1.467 0.045 0.088 0.049 0.049 1.514 0.089 // 2 PM 254 | 1.493 0.048 0.045 0.084 0.048 1.410 0.045 0.088 0.049 0.049 1.456 0.086 // 3 PM 255 | 1.434 0.048 0.045 0.080 0.048 1.324 0.045 0.088 0.049 0.049 1.369 0.081 // 4 PM 256 | 1.374 0.049 0.046 0.076 0.048 1.237 0.045 0.089 0.049 0.049 1.281 0.077 // 5 PM 257 | 1.315 0.049 0.046 0.072 0.048 1.151 0.045 0.089 0.049 0.049 1.194 0.072 // 6 PM 258 | 1.344 0.049 0.046 0.077 0.048 1.218 0.045 0.090 0.049 0.049 1.246 0.080 // 7 PM 259 | 1.372 0.048 0.045 0.082 0.048 1.285 0.045 0.091 0.049 0.049 1.299 0.089 // 8 PM 260 | 1.401 0.048 0.045 0.087 0.048 1.352 0.045 0.092 0.049 0.049 1.351 0.097 // 9 PM 261 | 1.413 0.048 0.045 0.089 0.048 1.381 0.045 0.092 0.049 0.049 1.374 0.101 // 10 PM 262 | 1.426 0.048 0.045 0.091 0.048 1.409 0.045 0.093 0.049 0.049 1.396 0.104 // 11 PM 263 | 264 | // WEATHER_SUNNY_VEGAS 265 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 266 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 267 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 268 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 269 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 270 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 271 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 272 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 273 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 274 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 275 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 276 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 277 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 278 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 279 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 280 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 281 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 282 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 283 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 284 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 285 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 286 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 287 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 288 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 289 | 290 | // WEATHER_EXTRASUNNY_VEGAS 291 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 292 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 293 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 294 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 295 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 296 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 297 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 298 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 299 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 300 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 301 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 302 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 303 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 304 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 305 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 306 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 307 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 308 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 309 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 310 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 311 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 312 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 313 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 314 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 315 | 316 | // WEATHER_CLOUDY_VEGAS 317 | 1.592 0.053 0.053 0.032 0.053 1.591 0.053 0.032 0.053 0.053 1.591 0.032 // 12 AM 318 | 1.558 0.053 0.053 0.034 0.053 1.559 0.053 0.034 0.053 0.053 1.559 0.034 // 1 AM 319 | 1.523 0.053 0.053 0.036 0.053 1.526 0.053 0.035 0.053 0.053 1.526 0.035 // 2 AM 320 | 1.489 0.053 0.053 0.038 0.053 1.494 0.053 0.037 0.053 0.053 1.494 0.037 // 3 AM 321 | 1.409 0.053 0.053 0.043 0.053 1.418 0.053 0.041 0.053 0.053 1.418 0.041 // 4 AM 322 | 1.328 0.053 0.053 0.048 0.053 1.343 0.053 0.044 0.053 0.053 1.343 0.044 // 5 AM 323 | 1.248 0.053 0.053 0.053 0.053 1.267 0.053 0.048 0.053 0.053 1.267 0.048 // 6 AM 324 | 1.320 0.053 0.053 0.050 0.053 1.332 0.053 0.045 0.053 0.053 1.342 0.044 // 7 AM 325 | 1.391 0.053 0.053 0.047 0.053 1.396 0.053 0.042 0.053 0.053 1.416 0.039 // 8 AM 326 | 1.463 0.053 0.053 0.044 0.053 1.461 0.053 0.039 0.053 0.053 1.491 0.035 // 9 AM 327 | 1.570 0.053 0.053 0.039 0.053 1.558 0.053 0.034 0.053 0.053 1.603 0.029 // 10 AM 328 | 1.678 0.053 0.053 0.035 0.053 1.655 0.053 0.030 0.053 0.053 1.715 0.022 // 11 AM 329 | 1.785 0.053 0.053 0.030 0.053 1.752 0.053 0.025 0.053 0.053 1.827 0.016 // 12 PM 330 | 1.741 0.053 0.053 0.027 0.053 1.688 0.053 0.025 0.053 0.053 1.762 0.013 // 1 PM 331 | 1.697 0.053 0.053 0.025 0.053 1.624 0.053 0.026 0.053 0.053 1.698 0.010 // 2 PM 332 | 1.653 0.053 0.053 0.022 0.053 1.560 0.053 0.026 0.053 0.053 1.633 0.007 // 3 PM 333 | 1.587 0.053 0.053 0.018 0.053 1.464 0.053 0.026 0.053 0.053 1.536 0.002 // 4 PM 334 | 1.522 0.053 0.053 0.013 0.052 1.369 0.053 0.027 0.053 0.053 1.439 -0.003 // 5 PM 335 | 1.456 0.053 0.053 0.009 0.052 1.273 0.053 0.027 0.053 0.053 1.342 -0.008 // 6 PM 336 | 1.488 0.053 0.053 0.014 0.052 1.347 0.053 0.028 0.053 0.053 1.400 0.001 // 7 PM 337 | 1.519 0.053 0.053 0.020 0.053 1.422 0.053 0.029 0.053 0.053 1.459 0.011 // 8 PM 338 | 1.551 0.053 0.053 0.025 0.053 1.496 0.053 0.030 0.053 0.053 1.517 0.020 // 9 PM 339 | 1.565 0.053 0.053 0.027 0.053 1.528 0.053 0.031 0.053 0.053 1.542 0.024 // 10 PM 340 | 1.578 0.053 0.053 0.030 0.053 1.559 0.053 0.031 0.053 0.053 1.566 0.028 // 11 PM 341 | 342 | // WEATHER_EXTRASUNNY_COUNTRYSIDE 343 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 344 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 345 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 346 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 347 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 348 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 349 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 350 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 351 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 352 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 353 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 354 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 355 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 356 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 357 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 358 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 359 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 360 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 361 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 362 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 363 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 364 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 365 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 366 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 367 | 368 | // WEATHER_SUNNY_COUNTRYSIDE 369 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 370 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 371 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 372 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 373 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 374 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 375 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 376 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 377 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 378 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 379 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 380 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 381 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 382 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 383 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 384 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 385 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 386 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 387 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 388 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 389 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 390 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 391 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 392 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 393 | 394 | // WEATHER_CLOUDY_COUNTRYSIDE 395 | 1.611 0.051 0.051 0.030 0.051 1.610 0.051 0.030 0.051 0.051 1.610 0.030 // 12 AM 396 | 1.576 0.051 0.051 0.032 0.051 1.577 0.051 0.032 0.051 0.051 1.577 0.032 // 1 AM 397 | 1.540 0.051 0.051 0.035 0.051 1.543 0.051 0.033 0.051 0.051 1.543 0.033 // 2 AM 398 | 1.505 0.051 0.051 0.037 0.051 1.510 0.051 0.035 0.051 0.051 1.510 0.035 // 3 AM 399 | 1.422 0.051 0.051 0.042 0.051 1.432 0.051 0.039 0.051 0.051 1.432 0.039 // 4 AM 400 | 1.340 0.051 0.051 0.048 0.051 1.354 0.051 0.043 0.051 0.051 1.354 0.043 // 5 AM 401 | 1.257 0.051 0.051 0.053 0.051 1.276 0.051 0.047 0.051 0.051 1.276 0.047 // 6 AM 402 | 1.331 0.051 0.051 0.050 0.051 1.343 0.051 0.044 0.051 0.051 1.353 0.043 // 7 AM 403 | 1.404 0.051 0.051 0.046 0.051 1.409 0.051 0.041 0.051 0.051 1.430 0.038 // 8 AM 404 | 1.478 0.051 0.051 0.043 0.051 1.476 0.051 0.038 0.051 0.051 1.507 0.034 // 9 AM 405 | 1.589 0.051 0.051 0.038 0.051 1.576 0.051 0.033 0.051 0.051 1.622 0.028 // 10 AM 406 | 1.699 0.051 0.051 0.034 0.051 1.675 0.051 0.028 0.051 0.051 1.737 0.021 // 11 AM 407 | 1.810 0.051 0.051 0.029 0.051 1.775 0.051 0.023 0.051 0.051 1.852 0.015 // 12 PM 408 | 1.765 0.051 0.051 0.026 0.051 1.709 0.051 0.023 0.051 0.051 1.786 0.011 // 1 PM 409 | 1.719 0.051 0.051 0.023 0.051 1.644 0.051 0.024 0.051 0.051 1.719 0.008 // 2 PM 410 | 1.674 0.051 0.051 0.020 0.051 1.578 0.051 0.024 0.051 0.051 1.653 0.004 // 3 PM 411 | 1.606 0.051 0.051 0.016 0.051 1.480 0.051 0.024 0.051 0.051 1.553 -0.001 // 4 PM 412 | 1.539 0.052 0.052 0.011 0.051 1.381 0.051 0.025 0.051 0.051 1.454 -0.006 // 5 PM 413 | 1.471 0.052 0.052 0.007 0.051 1.283 0.051 0.025 0.051 0.051 1.354 -0.011 // 6 PM 414 | 1.504 0.052 0.052 0.012 0.051 1.359 0.051 0.026 0.051 0.051 1.414 -0.001 // 7 PM 415 | 1.536 0.051 0.051 0.018 0.051 1.436 0.051 0.028 0.051 0.051 1.473 0.008 // 8 PM 416 | 1.569 0.051 0.051 0.023 0.051 1.512 0.051 0.029 0.051 0.051 1.533 0.018 // 9 PM 417 | 1.583 0.051 0.051 0.025 0.051 1.545 0.051 0.029 0.051 0.051 1.559 0.022 // 10 PM 418 | 1.597 0.051 0.051 0.028 0.051 1.577 0.051 0.030 0.051 0.051 1.584 0.026 // 11 PM 419 | 420 | // WEATHER_RAINY_COUNTRYSIDE 421 | 1.540 -0.039 -0.039 0.043 -0.039 1.540 -0.039 0.043 -0.039 -0.039 1.540 0.043 // 12 AM 422 | 1.508 -0.039 -0.039 0.045 -0.039 1.509 -0.039 0.045 -0.039 -0.039 1.509 0.045 // 1 AM 423 | 1.475 -0.039 -0.039 0.048 -0.039 1.479 -0.039 0.046 -0.039 -0.039 1.479 0.046 // 2 AM 424 | 1.443 -0.039 -0.039 0.050 -0.039 1.448 -0.039 0.048 -0.039 -0.039 1.448 0.048 // 3 AM 425 | 1.367 -0.039 -0.039 0.055 -0.039 1.376 -0.039 0.052 -0.039 -0.039 1.376 0.052 // 4 AM 426 | 1.290 -0.039 -0.039 0.059 -0.039 1.305 -0.039 0.055 -0.039 -0.039 1.305 0.055 // 5 AM 427 | 1.214 -0.039 -0.039 0.064 -0.039 1.233 -0.039 0.059 -0.039 -0.039 1.233 0.059 // 6 AM 428 | 1.282 -0.039 -0.039 0.061 -0.039 1.294 -0.039 0.056 -0.039 -0.039 1.304 0.055 // 7 AM 429 | 1.350 -0.039 -0.039 0.058 -0.039 1.356 -0.039 0.053 -0.039 -0.039 1.374 0.051 // 8 AM 430 | 1.418 -0.039 -0.039 0.055 -0.039 1.417 -0.039 0.050 -0.039 -0.039 1.445 0.047 // 9 AM 431 | 1.520 -0.039 -0.039 0.051 -0.039 1.509 -0.039 0.046 -0.039 -0.039 1.551 0.041 // 10 AM 432 | 1.621 -0.039 -0.039 0.046 -0.039 1.600 -0.039 0.041 -0.039 -0.039 1.657 0.035 // 11 AM 433 | 1.723 -0.039 -0.039 0.042 -0.039 1.692 -0.039 0.037 -0.039 -0.039 1.763 0.029 // 12 PM 434 | 1.681 -0.039 -0.039 0.039 -0.039 1.632 -0.039 0.037 -0.039 -0.039 1.702 0.026 // 1 PM 435 | 1.640 -0.039 -0.039 0.037 -0.040 1.571 -0.039 0.038 -0.039 -0.039 1.641 0.022 // 2 PM 436 | 1.598 -0.039 -0.039 0.034 -0.040 1.511 -0.039 0.038 -0.039 -0.039 1.580 0.019 // 3 PM 437 | 1.536 -0.039 -0.039 0.030 -0.040 1.420 -0.039 0.038 -0.039 -0.039 1.488 0.015 // 4 PM 438 | 1.473 -0.039 -0.039 0.026 -0.040 1.329 -0.039 0.039 -0.039 -0.039 1.396 0.010 // 5 PM 439 | 1.411 -0.039 -0.039 0.022 -0.040 1.238 -0.039 0.039 -0.039 -0.039 1.304 0.006 // 6 PM 440 | 1.441 -0.039 -0.039 0.027 -0.040 1.309 -0.039 0.040 -0.039 -0.039 1.359 0.015 // 7 PM 441 | 1.472 -0.039 -0.039 0.032 -0.040 1.379 -0.039 0.041 -0.039 -0.039 1.415 0.023 // 8 PM 442 | 1.502 -0.039 -0.039 0.037 -0.040 1.450 -0.039 0.042 -0.039 -0.039 1.470 0.032 // 9 PM 443 | 1.515 -0.039 -0.039 0.039 -0.040 1.480 -0.039 0.042 -0.039 -0.039 1.493 0.036 // 10 PM 444 | 1.527 -0.039 -0.039 0.041 -0.039 1.510 -0.039 0.043 -0.039 -0.039 1.517 0.039 // 11 PM 445 | 446 | // WEATHER_EXTRASUNNY_DESERT 447 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 448 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 449 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 450 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 451 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 452 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 453 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 454 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 455 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 456 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 457 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 458 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 459 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 460 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 461 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 462 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 463 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 464 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 465 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 466 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 467 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 468 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 469 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 470 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 471 | 472 | // WEATHER_SUNNY_DESERT 473 | 2.124 0.000 0.000 -0.007 0.000 2.124 0.000 -0.007 0.000 0.000 2.124 -0.007 // 12 AM 474 | 2.062 0.000 0.000 -0.003 0.000 2.065 0.000 -0.004 0.000 0.000 2.065 -0.004 // 1 AM 475 | 2.000 0.000 0.000 0.000 0.000 2.007 0.000 -0.002 0.000 0.000 2.007 -0.002 // 2 AM 476 | 1.938 0.000 0.000 0.004 0.000 1.948 0.000 0.001 0.000 0.000 1.948 0.001 // 3 AM 477 | 1.793 0.000 0.000 0.013 0.000 1.812 0.000 0.008 0.000 0.000 1.812 0.008 // 4 AM 478 | 1.649 0.000 0.000 0.023 0.000 1.675 0.000 0.015 0.000 0.000 1.675 0.015 // 5 AM 479 | 1.504 0.000 0.000 0.032 0.000 1.539 0.000 0.022 0.000 0.000 1.539 0.022 // 6 AM 480 | 1.633 0.000 0.000 0.026 0.000 1.655 0.000 0.016 0.000 0.000 1.673 0.014 // 7 AM 481 | 1.761 0.000 0.000 0.021 0.000 1.772 0.000 0.011 0.000 0.000 1.808 0.007 // 8 AM 482 | 1.890 0.000 0.000 0.015 0.000 1.888 0.000 0.005 0.000 0.000 1.942 -0.001 // 9 AM 483 | 2.084 0.000 0.000 0.007 0.000 2.063 0.000 -0.003 0.000 0.000 2.144 -0.012 // 10 AM 484 | 2.277 0.000 0.000 -0.002 0.000 2.237 0.000 -0.012 0.000 0.000 2.345 -0.024 // 11 AM 485 | 2.471 0.000 0.000 -0.010 0.000 2.412 0.000 -0.020 0.000 0.000 2.547 -0.035 // 12 PM 486 | 2.392 0.000 0.000 -0.015 0.000 2.297 0.000 -0.019 0.000 0.000 2.431 -0.041 // 1 PM 487 | 2.312 0.001 0.001 -0.020 0.000 2.182 0.000 -0.019 0.000 0.000 2.314 -0.047 // 2 PM 488 | 2.233 0.001 0.001 -0.025 -0.000 2.067 0.000 -0.018 0.000 0.000 2.198 -0.053 // 3 PM 489 | 2.114 0.001 0.001 -0.033 -0.000 1.895 0.000 -0.017 0.000 0.000 2.023 -0.062 // 4 PM 490 | 1.996 0.002 0.002 -0.041 -0.001 1.722 0.001 -0.017 0.000 0.000 1.849 -0.070 // 5 PM 491 | 1.877 0.002 0.002 -0.049 -0.001 1.550 0.001 -0.016 0.000 0.000 1.674 -0.079 // 6 PM 492 | 1.935 0.001 0.001 -0.039 -0.001 1.684 0.001 -0.014 0.000 0.000 1.779 -0.062 // 7 PM 493 | 1.992 0.001 0.001 -0.030 -0.000 1.817 0.000 -0.012 0.000 0.000 1.884 -0.046 // 8 PM 494 | 2.050 0.000 0.000 -0.020 -0.000 1.951 0.000 -0.010 0.000 0.000 1.989 -0.029 // 9 PM 495 | 2.075 0.000 0.000 -0.016 0.000 2.009 0.000 -0.009 0.000 0.000 2.034 -0.022 // 10 PM 496 | 2.099 0.000 0.000 -0.011 0.000 2.066 0.000 -0.008 0.000 0.000 2.079 -0.014 // 11 PM 497 | 498 | // WEATHER_SANDSTORM_DESERT 499 | 1.318 -0.000 -0.000 0.082 -0.000 1.339 -0.000 0.070 -0.000 -0.000 1.339 0.059 // 12 AM 500 | 1.293 -0.000 -0.000 0.083 -0.000 1.316 -0.000 0.071 -0.000 -0.000 1.316 0.060 // 1 AM 501 | 1.268 -0.000 -0.000 0.085 -0.000 1.292 -0.000 0.072 -0.000 -0.000 1.292 0.062 // 2 AM 502 | 1.243 -0.000 -0.000 0.086 -0.000 1.269 -0.000 0.073 -0.000 -0.000 1.269 0.063 // 3 AM 503 | 1.185 -0.000 -0.000 0.090 -0.000 1.214 -0.000 0.076 -0.000 -0.000 1.214 0.066 // 4 AM 504 | 1.128 -0.000 -0.000 0.093 -0.000 1.160 -0.000 0.078 -0.000 -0.000 1.160 0.068 // 5 AM 505 | 1.070 -0.000 -0.000 0.097 -0.000 1.105 -0.000 0.081 -0.000 -0.000 1.105 0.071 // 6 AM 506 | 1.121 -0.000 -0.000 0.095 -0.000 1.152 -0.000 0.079 -0.000 -0.000 1.159 0.068 // 7 AM 507 | 1.173 -0.000 -0.000 0.093 -0.000 1.198 -0.000 0.077 -0.000 -0.000 1.212 0.065 // 8 AM 508 | 1.224 -0.000 -0.000 0.091 -0.000 1.245 -0.000 0.075 -0.000 -0.000 1.266 0.062 // 9 AM 509 | 1.301 -0.000 -0.000 0.088 -0.000 1.315 -0.000 0.072 -0.000 -0.000 1.347 0.057 // 10 AM 510 | 1.379 -0.000 -0.000 0.084 -0.000 1.384 -0.000 0.068 -0.000 -0.000 1.427 0.053 // 11 AM 511 | 1.456 -0.000 -0.000 0.081 -0.000 1.454 -0.000 0.065 -0.000 -0.000 1.508 0.048 // 12 PM 512 | 1.424 0.000 0.000 0.079 -0.000 1.408 0.000 0.065 -0.000 -0.000 1.462 0.046 // 1 PM 513 | 1.393 0.000 0.000 0.077 -0.000 1.362 0.000 0.065 -0.000 -0.000 1.415 0.043 // 2 PM 514 | 1.361 0.000 0.000 0.075 -0.000 1.316 0.000 0.065 -0.000 -0.000 1.369 0.041 // 3 PM 515 | 1.314 0.000 0.000 0.072 -0.000 1.247 0.000 0.065 -0.000 -0.000 1.299 0.038 // 4 PM 516 | 1.266 0.001 0.001 0.068 -0.000 1.179 0.000 0.066 -0.000 -0.000 1.229 0.034 // 5 PM 517 | 1.219 0.001 0.001 0.065 -0.000 1.110 0.000 0.066 -0.000 -0.000 1.159 0.031 // 6 PM 518 | 1.242 0.001 0.001 0.069 -0.000 1.163 0.000 0.067 -0.000 -0.000 1.201 0.038 // 7 PM 519 | 1.265 0.000 0.000 0.073 -0.000 1.217 0.000 0.068 -0.000 -0.000 1.243 0.044 // 8 PM 520 | 1.288 0.000 0.000 0.077 -0.000 1.270 0.000 0.069 -0.000 -0.000 1.285 0.051 // 9 PM 521 | 1.298 0.000 0.000 0.079 -0.000 1.293 0.000 0.069 -0.000 -0.000 1.303 0.054 // 10 PM 522 | 1.308 0.000 0.000 0.080 -0.000 1.316 0.000 0.070 -0.000 -0.000 1.321 0.056 // 11 PM 523 | 524 | // WEATHER_UNDERWATER 525 | 1.548 0.000 0.000 -0.020 0.000 1.617 0.000 0.018 0.000 0.000 1.604 0.012 // 12 AM 526 | 1.527 0.000 0.000 -0.019 0.000 1.598 0.000 0.019 0.000 0.000 1.585 0.013 // 1 AM 527 | 1.507 0.000 0.000 -0.017 0.000 1.578 0.000 0.020 0.000 0.000 1.565 0.014 // 2 AM 528 | 1.486 0.000 0.000 -0.016 0.000 1.559 0.000 0.021 0.000 0.000 1.546 0.015 // 3 AM 529 | 1.438 0.000 0.000 -0.013 0.000 1.513 0.000 0.023 0.000 0.000 1.500 0.017 // 4 AM 530 | 1.389 0.000 0.000 -0.010 0.000 1.468 0.000 0.026 0.000 0.000 1.455 0.020 // 5 AM 531 | 1.341 0.000 0.000 -0.007 0.000 1.422 0.000 0.028 0.000 0.000 1.409 0.022 // 6 AM 532 | 1.384 0.000 0.000 -0.009 0.000 1.461 0.000 0.026 0.000 0.000 1.454 0.019 // 7 AM 533 | 1.427 0.000 0.000 -0.011 0.000 1.500 0.000 0.024 0.000 0.000 1.499 0.017 // 8 AM 534 | 1.470 0.000 0.000 -0.013 0.000 1.539 0.000 0.022 0.000 0.000 1.544 0.014 // 9 AM 535 | 1.534 0.000 0.000 -0.016 0.000 1.597 0.000 0.019 0.000 0.000 1.611 0.010 // 10 AM 536 | 1.599 0.000 0.000 -0.018 0.000 1.655 0.000 0.017 0.000 0.000 1.678 0.007 // 11 AM 537 | 1.663 0.000 0.000 -0.021 0.000 1.713 0.000 0.014 0.000 0.000 1.745 0.003 // 12 PM 538 | 1.637 0.000 0.000 -0.023 0.000 1.675 0.000 0.014 0.000 0.000 1.706 0.001 // 1 PM 539 | 1.610 0.000 0.000 -0.024 0.000 1.636 0.000 0.014 0.000 0.000 1.668 -0.001 // 2 PM 540 | 1.584 0.000 0.000 -0.026 -0.000 1.598 0.000 0.014 0.000 0.000 1.629 -0.003 // 3 PM 541 | 1.545 0.000 0.000 -0.029 -0.000 1.541 0.000 0.014 0.000 0.000 1.571 -0.006 // 4 PM 542 | 1.505 0.001 0.001 -0.031 -0.000 1.483 0.000 0.015 0.000 0.000 1.512 -0.009 // 5 PM 543 | 1.466 0.001 0.001 -0.034 -0.000 1.426 0.000 0.015 0.000 0.000 1.454 -0.012 // 6 PM 544 | 1.485 0.001 0.001 -0.031 -0.000 1.471 0.000 0.016 0.000 0.000 1.489 -0.006 // 7 PM 545 | 1.504 0.000 0.000 -0.027 -0.000 1.515 0.000 0.016 0.000 0.000 1.524 -0.001 // 8 PM 546 | 1.523 0.000 0.000 -0.024 -0.000 1.560 0.000 0.017 0.000 0.000 1.559 0.005 // 9 PM 547 | 1.531 0.000 0.000 -0.023 0.000 1.579 0.000 0.017 0.000 0.000 1.574 0.007 // 10 PM 548 | 1.540 0.000 0.000 -0.021 0.000 1.598 0.000 0.018 0.000 0.000 1.589 0.010 // 11 PM 549 | 550 | // WEATHER_EXTRACOLOURS_1 551 | 1.801 0.000 0.000 0.009 0.000 1.801 0.000 0.009 0.000 0.000 1.919 -0.017 // 12 AM 552 | 1.785 0.000 0.000 0.010 0.000 1.786 0.000 0.010 0.000 0.000 1.904 -0.016 // 1 AM 553 | 1.770 0.000 0.000 0.011 0.000 1.772 0.000 0.010 0.000 0.000 1.890 -0.016 // 2 AM 554 | 1.754 0.000 0.000 0.012 0.000 1.757 0.000 0.011 0.000 0.000 1.875 -0.015 // 3 AM 555 | 1.718 0.000 0.000 0.014 0.000 1.723 0.000 0.013 0.000 0.000 1.841 -0.013 // 4 AM 556 | 1.682 0.000 0.000 0.017 0.000 1.689 0.000 0.014 0.000 0.000 1.807 -0.011 // 5 AM 557 | 1.646 0.000 0.000 0.019 0.000 1.655 0.000 0.016 0.000 0.000 1.773 -0.009 // 6 AM 558 | 1.678 0.000 0.000 0.017 0.000 1.684 0.000 0.015 0.000 0.000 1.807 -0.011 // 7 AM 559 | 1.711 0.000 0.000 0.016 0.000 1.713 0.000 0.013 0.000 0.000 1.840 -0.013 // 8 AM 560 | 1.743 0.000 0.000 0.014 0.000 1.742 0.000 0.012 0.000 0.000 1.874 -0.015 // 9 AM 561 | 1.791 0.000 0.000 0.012 0.000 1.786 0.000 0.010 0.000 0.000 1.924 -0.018 // 10 AM 562 | 1.840 0.000 0.000 0.010 0.000 1.829 0.000 0.008 0.000 0.000 1.975 -0.021 // 11 AM 563 | 1.888 0.000 0.000 0.008 0.000 1.873 0.000 0.006 0.000 0.000 2.025 -0.024 // 12 PM 564 | 1.868 0.000 0.000 0.007 0.000 1.844 0.000 0.006 0.000 0.000 1.996 -0.025 // 1 PM 565 | 1.848 0.000 0.000 0.005 0.000 1.816 0.000 0.006 0.000 0.000 1.967 -0.027 // 2 PM 566 | 1.828 0.000 0.000 0.004 -0.000 1.787 0.000 0.006 0.000 0.000 1.938 -0.028 // 3 PM 567 | 1.798 0.000 0.000 0.002 -0.000 1.744 0.000 0.006 0.000 0.000 1.894 -0.030 // 4 PM 568 | 1.769 0.000 0.000 0.000 -0.000 1.700 0.000 0.007 0.000 0.000 1.851 -0.033 // 5 PM 569 | 1.739 0.000 0.000 -0.002 -0.000 1.657 0.000 0.007 0.000 0.000 1.807 -0.035 // 6 PM 570 | 1.753 0.000 0.000 0.001 -0.000 1.691 0.000 0.007 0.000 0.000 1.833 -0.031 // 7 PM 571 | 1.768 0.000 0.000 0.003 -0.000 1.724 0.000 0.008 0.000 0.000 1.859 -0.026 // 8 PM 572 | 1.782 0.000 0.000 0.006 -0.000 1.758 0.000 0.008 0.000 0.000 1.885 -0.022 // 9 PM 573 | 1.788 0.000 0.000 0.007 0.000 1.772 0.000 0.008 0.000 0.000 1.896 -0.020 // 10 PM 574 | 1.795 0.000 0.000 0.008 0.000 1.787 0.000 0.009 0.000 0.000 1.908 -0.019 // 11 PM 575 | 576 | // WEATHER_EXTRACOLOURS_2 577 | 1.801 0.000 0.000 0.009 0.000 1.801 0.000 0.009 0.000 0.000 1.919 -0.017 // 12 AM 578 | 1.785 0.000 0.000 0.010 0.000 1.786 0.000 0.010 0.000 0.000 1.904 -0.016 // 1 AM 579 | 1.770 0.000 0.000 0.011 0.000 1.772 0.000 0.010 0.000 0.000 1.890 -0.016 // 2 AM 580 | 1.754 0.000 0.000 0.012 0.000 1.757 0.000 0.011 0.000 0.000 1.875 -0.015 // 3 AM 581 | 1.718 0.000 0.000 0.014 0.000 1.723 0.000 0.013 0.000 0.000 1.841 -0.013 // 4 AM 582 | 1.682 0.000 0.000 0.017 0.000 1.689 0.000 0.014 0.000 0.000 1.807 -0.011 // 5 AM 583 | 1.646 0.000 0.000 0.019 0.000 1.655 0.000 0.016 0.000 0.000 1.773 -0.009 // 6 AM 584 | 1.678 0.000 0.000 0.017 0.000 1.684 0.000 0.015 0.000 0.000 1.807 -0.011 // 7 AM 585 | 1.711 0.000 0.000 0.016 0.000 1.713 0.000 0.013 0.000 0.000 1.840 -0.013 // 8 AM 586 | 1.743 0.000 0.000 0.014 0.000 1.742 0.000 0.012 0.000 0.000 1.874 -0.015 // 9 AM 587 | 1.791 0.000 0.000 0.012 0.000 1.786 0.000 0.010 0.000 0.000 1.924 -0.018 // 10 AM 588 | 1.840 0.000 0.000 0.010 0.000 1.829 0.000 0.008 0.000 0.000 1.975 -0.021 // 11 AM 589 | 1.888 0.000 0.000 0.008 0.000 1.873 0.000 0.006 0.000 0.000 2.025 -0.024 // 12 PM 590 | 1.868 0.000 0.000 0.007 0.000 1.844 0.000 0.006 0.000 0.000 1.996 -0.025 // 1 PM 591 | 1.848 0.000 0.000 0.005 0.000 1.816 0.000 0.006 0.000 0.000 1.967 -0.027 // 2 PM 592 | 1.828 0.000 0.000 0.004 -0.000 1.787 0.000 0.006 0.000 0.000 1.938 -0.028 // 3 PM 593 | 1.798 0.000 0.000 0.002 -0.000 1.744 0.000 0.006 0.000 0.000 1.894 -0.030 // 4 PM 594 | 1.769 0.000 0.000 0.000 -0.000 1.700 0.000 0.007 0.000 0.000 1.851 -0.033 // 5 PM 595 | 1.739 0.000 0.000 -0.002 -0.000 1.657 0.000 0.007 0.000 0.000 1.807 -0.035 // 6 PM 596 | 1.753 0.000 0.000 0.001 -0.000 1.691 0.000 0.007 0.000 0.000 1.833 -0.031 // 7 PM 597 | 1.768 0.000 0.000 0.003 -0.000 1.724 0.000 0.008 0.000 0.000 1.859 -0.026 // 8 PM 598 | 1.782 0.000 0.000 0.006 -0.000 1.758 0.000 0.008 0.000 0.000 1.885 -0.022 // 9 PM 599 | 1.788 0.000 0.000 0.007 0.000 1.772 0.000 0.008 0.000 0.000 1.896 -0.020 // 10 PM 600 | 1.795 0.000 0.000 0.008 0.000 1.787 0.000 0.009 0.000 0.000 1.908 -0.019 // 11 PM -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "timecyc.h" 5 | 6 | MYMOD(net.rusjj.timecyc24, GTASA Timecyc24, 1.2, GTAmodding & RusJJ) 7 | NEEDGAME(com.rockstargames.gtasa) 8 | BEGIN_DEPLIST() 9 | ADD_DEPENDENCY_VER(net.rusjj.aml, 1.2.2) 10 | END_DEPLIST() 11 | 12 | ///////////////////////////////////////////////////////////////////////////// 13 | /////////////////////////////// Saves /////////////////////////////// 14 | ///////////////////////////////////////////////////////////////////////////// 15 | uintptr_t pGTASA; 16 | void* hGTASA; 17 | 18 | uint8_t aTimecycleHours[NUMHOURS+1] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 }; 19 | uint8_t aTimecycleHorizon[NUMHOURS] = { 30, 30, 30, 30, 30, 30, 30, 50, 52, 54, 56, 58, 60, 60, 60, 60, 60, 60, 60, 60, 50, 42, 35, 32 }; 20 | 21 | ///////////////////////////////////////////////////////////////////////////// 22 | /////////////////////////////// Vars /////////////////////////////// 23 | ///////////////////////////////////////////////////////////////////////////// 24 | float *m_ExtraColourInter; 25 | int32_t *m_ExtraColourWeatherType, *m_ExtraColour, *m_bExtraColourOn; 26 | 27 | ///////////////////////////////////////////////////////////////////////////// 28 | /////////////////////////////// Funcs /////////////////////////////// 29 | ///////////////////////////////////////////////////////////////////////////// 30 | uintptr_t (*CFileMgr__OpenFile)(const char *path, const char *mode); 31 | char* (*CFileLoader__LoadLine)(uintptr_t fd); 32 | 33 | ///////////////////////////////////////////////////////////////////////////// 34 | ////////////////////////////// Patches ////////////////////////////// 35 | ///////////////////////////////////////////////////////////////////////////// 36 | uintptr_t TimecycInit1_BackTo, TimecycInit2_BackTo, TimecycInit3_BackTo; 37 | extern "C" uintptr_t TimecycInit1_Patch(void) { return CFileMgr__OpenFile("TIMECYC_24H.DAT", "rb"); } 38 | extern "C" uintptr_t TimecycInit2_Patch(void) { return CFileMgr__OpenFile("DATA/COLORCYCLE_24H.DAT", "rb"); } 39 | extern "C" char* TimecycInit3_Patch(uintptr_t fd) 40 | { 41 | char* line = NULL; 42 | while(line = CFileLoader__LoadLine(fd), line) if(line[0] != '/' && line[0] != '\0') break; 43 | return line; 44 | } 45 | #ifdef AML32 46 | __attribute__((optnone)) __attribute__((naked)) void TimecycInit1_Inject(void) 47 | { 48 | asm volatile( 49 | "BL TimecycInit1_Patch\n" 50 | "PUSH {R0}\n"); 51 | asm volatile( 52 | "MOV R12, %0\n" 53 | "POP {R0}\n" 54 | "BX R12\n" 55 | :: "r" (TimecycInit1_BackTo)); 56 | } 57 | __attribute__((optnone)) __attribute__((naked)) void TimecycInit2_Inject(void) 58 | { 59 | asm volatile( 60 | "BL TimecycInit2_Patch\n" 61 | "PUSH {R0}\n"); 62 | asm volatile( 63 | "MOV R12, %0\n" 64 | "POP {R0}\n" 65 | "BX R12\n" 66 | :: "r" (TimecycInit2_BackTo)); 67 | } 68 | __attribute__((optnone)) __attribute__((naked)) void TimecycInit3_Inject(void) 69 | { 70 | asm volatile( 71 | "MOV R0, R11\n" 72 | "ADD.W R5, R1, R8\n" 73 | "ADD.W R4, R5, #0xC\n" 74 | "PUSH {R1-R11}\n" 75 | "BL TimecycInit3_Patch\n" 76 | "POP {R1-R11}\n" 77 | "PUSH {R0}\n"); 78 | asm volatile( 79 | "MOV R12, %0\n" 80 | "POP {R0}\n" 81 | "BX R12\n" 82 | :: "r" (TimecycInit3_BackTo)); 83 | } 84 | #else 85 | __attribute__((optnone)) __attribute__((naked)) void TimecycInit1_Inject(void) 86 | { 87 | asm("BL TimecycInit1_Patch\n"); 88 | asm volatile("MOV X16, %0" :: "r"(TimecycInit1_BackTo)); 89 | asm("BR X16"); 90 | } 91 | __attribute__((optnone)) __attribute__((naked)) void TimecycInit2_Inject(void) 92 | { 93 | asm("BL TimecycInit2_Patch\nMOV X18, #0x2280"); 94 | asm volatile("MOV X16, %0" :: "r"(TimecycInit2_BackTo)); 95 | asm("BR X16"); 96 | } 97 | __attribute__((optnone)) __attribute__((naked)) void TimecycInit3_Inject(void) 98 | { 99 | asm("BL TimecycInit3_Patch\n"); 100 | asm("ADD X21, X25, X28\nADD X22, X27, X28\nADD X24, X26, X28"); 101 | asm volatile("MOV X16, %0" :: "r"(TimecycInit3_BackTo)); 102 | asm("BR X16"); 103 | } 104 | #endif 105 | 106 | 107 | uintptr_t HorizontAngles_BackTo, Hours_BackTo; 108 | #ifdef AML32 109 | __attribute__((optnone)) __attribute__((naked)) void HorizontAngles_Inject(void) 110 | { 111 | asm volatile( 112 | "ADD.W R12, R11, #0x18\n"); 113 | asm volatile( 114 | "MOV R0, %0\n" 115 | :: "r" (&aTimecycleHorizon)); 116 | asm volatile( 117 | "LDRB R1, [R0, R1]\n" 118 | "ADD R0, R10\n" 119 | "LDRB R0, [R0, #-1]\n" 120 | "VMOV S0, R1\n" 121 | "PUSH {R0}\n"); 122 | asm volatile( 123 | "MOV R1, %0\n" 124 | "POP {R0}\n" 125 | "BX R1\n" 126 | :: "r" (HorizontAngles_BackTo)); 127 | } 128 | __attribute__((optnone)) __attribute__((naked)) void Hours_Inject(void) 129 | { 130 | asm volatile( 131 | "VCVT.F32.U32 S4, S4\n" 132 | "VADD.F32 S0, S0, S4\n"); 133 | asm volatile( 134 | "MOV R0, %0\n" 135 | :: "r" (&aTimecycleHours)); 136 | asm volatile( 137 | "PUSH {R0}\n"); 138 | asm volatile( 139 | "MOV R1, %0\n" 140 | "POP {R0}\n" 141 | "BX R1\n" 142 | :: "r" (Hours_BackTo)); 143 | } 144 | #else 145 | __attribute__((optnone)) __attribute__((naked)) void HorizontAngles_Inject(void) 146 | { 147 | asm volatile("MOV X16, %0" :: "r"(HorizontAngles_BackTo)); 148 | asm volatile("MOV X9, %0" :: "r"(&aTimecycleHorizon)); 149 | asm("LDR B2, [X8, W20, SXTW]"); 150 | asm volatile("MOV X20, %0" :: "r"(m_CurrentColours)); 151 | asm("LDR S1, [X22]\nBR X16"); 152 | } 153 | __attribute__((optnone)) __attribute__((naked)) void Hours_Inject(void) 154 | { 155 | asm volatile("MOV X16, %0" :: "r"(Hours_BackTo)); 156 | asm volatile("MOV X8, %0" :: "r"(&aTimecycleHours)); 157 | asm("FADD S0, S1, S0\nMOV X9, #0xFFFFFFFF00000000\nBR X16"); 158 | } 159 | #endif 160 | 161 | uintptr_t ModuloPatch1_BackTo, ModuloPatch2_BackTo; 162 | extern "C" int ModuloPatch_Patch(int unmoduledVal) { return (unmoduledVal % NUMHOURS); } 163 | extern "C" int ModuloPatchPlus1_Patch(int unmoduledVal) { return 1 + (unmoduledVal % NUMHOURS); } 164 | #ifdef AML32 165 | __attribute__((optnone)) __attribute__((naked)) void ModuloPatch1_Inject(void) 166 | { 167 | asm volatile( 168 | "SUBS R0, R1, R0\n" 169 | "VMOV S4, R0\n" 170 | "VCVT.F32.U32 S2, S2\n" 171 | "MOV R0, R10\n" 172 | ); 173 | asm volatile( 174 | "PUSH {R2-R11}\n" 175 | "BL ModuloPatch_Patch\n" 176 | "MOV R1, R0\n" 177 | "PUSH {R0}\n"); 178 | asm volatile( 179 | "MOV R12, %0\n" 180 | "POP {R0}\n" 181 | "POP {R2-R11}\n" 182 | "BX R12\n" 183 | :: "r" (ModuloPatch1_BackTo)); 184 | } 185 | __attribute__((optnone)) __attribute__((naked)) void ModuloPatch2_Inject(void) 186 | { 187 | asm volatile( 188 | "PUSH {R2}\n" 189 | "BL ModuloPatch_Patch\n" 190 | "POP {R2}\n" 191 | "PUSH {R0}\n"); 192 | asm volatile( 193 | "MOV R12, %0\n" 194 | "POP {R0}\n" 195 | "BX R12\n" 196 | :: "r" (ModuloPatch2_BackTo)); 197 | } 198 | #else 199 | __attribute__((optnone)) __attribute__((naked)) void ModuloPatch1_Inject(void) 200 | { 201 | asm("FSUB S0, S0, S1\nSCVTF S1, W8"); 202 | asm("MOV W0, W21"); 203 | asm("BL ModuloPatchPlus1_Patch"); 204 | asm volatile("MOV X16, %0" :: "r"(ModuloPatch1_BackTo)); 205 | asm("MOV W20, W0\nBR X16"); 206 | } 207 | __attribute__((optnone)) __attribute__((naked)) void ModuloPatch2_Inject(void) 208 | { 209 | asm("MOV W0, W8"); 210 | asm("BL ModuloPatch_Patch"); 211 | asm volatile("MOV X16, %0" :: "r"(ModuloPatch2_BackTo)); 212 | asm("MOV W8, W0\nBR X16"); 213 | } 214 | #endif 215 | ///////////////////////////////////////////////////////////////////////////// 216 | /////////////////////////////// Hooks /////////////////////////////// 217 | ///////////////////////////////////////////////////////////////////////////// 218 | DECL_HOOKv(StartExtraColour, int extracolor, bool keepInter) 219 | { 220 | *m_ExtraColourWeatherType = (float)(extracolor) / (float)(NUMHOURS) + WEATHER_EXTRA_START; 221 | *m_ExtraColour = extracolor % (NUMHOURS); 222 | *m_bExtraColourOn = 1; 223 | *m_ExtraColourInter = (keepInter) ? 0.0f : 1.0f; 224 | } 225 | 226 | ///////////////////////////////////////////////////////////////////////////// 227 | /////////////////////////////// Funcs /////////////////////////////// 228 | ///////////////////////////////////////////////////////////////////////////// 229 | extern "C" void OnModPreLoad() 230 | { 231 | logger->SetTag("Timecyc24"); 232 | 233 | pGTASA = aml->GetLib("libGTASA.so"); 234 | hGTASA = aml->GetLibHandle("libGTASA.so"); 235 | 236 | // GTA Funcs 237 | SET_TO(CFileMgr__OpenFile, aml->GetSym(hGTASA, "_ZN8CFileMgr8OpenFileEPKcS1_")); 238 | SET_TO(CFileLoader__LoadLine, aml->GetSym(hGTASA, BYBIT("_ZN11CFileLoader8LoadLineEj", "_ZN11CFileLoader8LoadLineEy"))); 239 | 240 | // GTA Variables 241 | SET_TO(m_ExtraColourInter, aml->GetSym(hGTASA, "_ZN10CTimeCycle18m_ExtraColourInterE")); 242 | SET_TO(m_ExtraColourWeatherType, aml->GetSym(hGTASA, "_ZN10CTimeCycle24m_ExtraColourWeatherTypeE")); 243 | SET_TO(m_ExtraColour, aml->GetSym(hGTASA, "_ZN10CTimeCycle13m_ExtraColourE")); 244 | SET_TO(m_bExtraColourOn, aml->GetSym(hGTASA, "_ZN10CTimeCycle16m_bExtraColourOnE")); 245 | SET_TO(m_CurrentColours, aml->GetSym(hGTASA, "_ZN10CTimeCycle16m_CurrentColoursE")); 246 | 247 | // GTA Patches 248 | // - Redirect all values to our mod 249 | PatchTheValues(); 250 | 251 | // - CTimeCycle::Initialise 252 | aml->Write(pGTASA + BYBIT(0x471438 + 0x2, 0x55D770 + 0x1), BYBIT("\x18", "\x62"), 1); 253 | aml->Write(pGTASA + BYBIT(0x47159C, 0x55DCC4), BYBIT("\xB8\xF5\x0A\x5F", "\x9F\x03\x12\xEB"), 4); 254 | TimecycInit1_BackTo = pGTASA + BYBIT(0x470E62 + 0x1, 0x55D4F8); 255 | TimecycInit2_BackTo = pGTASA + BYBIT(0x47145C + 0x1, 0x55DB4C); 256 | TimecycInit3_BackTo = pGTASA + BYBIT(0x4714BE + 0x1, 0x55DBC4); 257 | aml->Redirect(pGTASA + BYBIT(0x470E56 + 0x1, 0x55D4E4), (uintptr_t)TimecycInit1_Inject); 258 | aml->Redirect(pGTASA + BYBIT(0x471454 + 0x1, 0x55DB38), (uintptr_t)TimecycInit2_Inject); 259 | aml->Redirect(pGTASA + BYBIT(0x4714B0 + 0x1, 0x55DBB4), (uintptr_t)TimecycInit3_Inject); 260 | 261 | // - CTimeCycle::CalcColoursForPoint 262 | HorizontAngles_BackTo = pGTASA + BYBIT(0x41FFCC + 0x1, 0x503AE4); 263 | Hours_BackTo = pGTASA + BYBIT(0x41F082 + 0x1, 0x502C90); 264 | aml->Redirect(pGTASA + BYBIT(0x41FFB8 + 0x1, 0x503ACC), (uintptr_t)HorizontAngles_Inject); 265 | aml->Redirect(pGTASA + BYBIT(0x41F076 + 0x1, 0x502C80), (uintptr_t)Hours_Inject); 266 | 267 | ModuloPatch1_BackTo = pGTASA + BYBIT(0x41F0D2 + 0x1, 0x502CFC); 268 | ModuloPatch2_BackTo = pGTASA + BYBIT(0x41F122 + 0x1, 0x502D38); 269 | aml->Redirect(pGTASA + BYBIT(0x41F0C0 + 0x1, 0x502CEC), (uintptr_t)ModuloPatch1_Inject); 270 | aml->Redirect(pGTASA + BYBIT(0x41F112 + 0x1, 0x502D20), (uintptr_t)ModuloPatch2_Inject); 271 | 272 | aml->Write(pGTASA + BYBIT(0x41F104 + 0x2, 0x502D14 + 0x1), BYBIT("\x18", "\x61"), 1); 273 | //aml->Write(pGTASA + 0x41FD4A, (uintptr_t)"\x00", sizeof(char)); 274 | //aml->Write(pGTASA + 0x41FD4C, (uintptr_t)"\x15", sizeof(char)); 275 | 276 | #ifdef AML32 277 | aml->PlaceNOP(pGTASA + 0x41F0D6, 2); 278 | aml->PlaceNOP(pGTASA + 0x41F0E4, 2); 279 | aml->PlaceNOP(pGTASA + 0x41F108, 2); 280 | #else 281 | aml->PlaceNOP(pGTASA + 0x502D18, 1); 282 | #endif 283 | 284 | // - CTimeCycle::StartExtraColour 285 | HOOKPLT(StartExtraColour, pGTASA + BYBIT(0x671F24, 0x843670)); 286 | } -------------------------------------------------------------------------------- /timecyc.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | uint8_t CTimeCycle__m_nDirectionalMult[NUMHOURS][NUMWEATHERS]; 6 | uint8_t CTimeCycle__m_nWaterFogAlpha[NUMHOURS][NUMWEATHERS]; 7 | uint8_t CTimeCycle__m_nHighLightMinIntensity[NUMHOURS][NUMWEATHERS]; 8 | uint8_t CTimeCycle__m_fCloudAlpha[NUMHOURS][NUMWEATHERS]; 9 | uint8_t CTimeCycle__m_fPostFx2Alpha[NUMHOURS][NUMWEATHERS]; 10 | uint8_t CTimeCycle__m_fPostFx2Blue[NUMHOURS][NUMWEATHERS]; 11 | uint8_t CTimeCycle__m_fPostFx2Green[NUMHOURS][NUMWEATHERS]; 12 | uint8_t CTimeCycle__m_fPostFx2Red[NUMHOURS][NUMWEATHERS]; 13 | uint8_t CTimeCycle__m_fPostFx1Alpha[NUMHOURS][NUMWEATHERS]; 14 | uint8_t CTimeCycle__m_fPostFx1Blue[NUMHOURS][NUMWEATHERS]; 15 | uint8_t CTimeCycle__m_fPostFx1Green[NUMHOURS][NUMWEATHERS]; 16 | uint8_t CTimeCycle__m_fPostFx1Red[NUMHOURS][NUMWEATHERS]; 17 | uint8_t CTimeCycle__m_fWaterAlpha[NUMHOURS][NUMWEATHERS]; 18 | uint8_t CTimeCycle__m_fWaterBlue[NUMHOURS][NUMWEATHERS]; 19 | uint8_t CTimeCycle__m_fWaterGreen[NUMHOURS][NUMWEATHERS]; 20 | uint8_t CTimeCycle__m_fWaterRed[NUMHOURS][NUMWEATHERS]; 21 | uint8_t CTimeCycle__m_nFluffyCloudsBottomRed[NUMHOURS][NUMWEATHERS]; 22 | uint8_t CTimeCycle__m_nFluffyCloudsBottomGreen[NUMHOURS][NUMWEATHERS]; 23 | uint8_t CTimeCycle__m_nFluffyCloudsBottomBlue[NUMHOURS][NUMWEATHERS]; 24 | uint8_t CTimeCycle__m_nLowCloudsBlue[NUMHOURS][NUMWEATHERS]; 25 | uint8_t CTimeCycle__m_nLowCloudsGreen[NUMHOURS][NUMWEATHERS]; 26 | uint8_t CTimeCycle__m_nLowCloudsRed[NUMHOURS][NUMWEATHERS]; 27 | uint8_t CTimeCycle__m_fLightsOnGroundBrightness[NUMHOURS][NUMWEATHERS]; 28 | uint16_t CTimeCycle__m_fFogStart[NUMHOURS][NUMWEATHERS]; 29 | uint16_t CTimeCycle__m_fFarClip[NUMHOURS][NUMWEATHERS]; 30 | uint8_t CTimeCycle__m_nPoleShadowStrength[NUMHOURS][NUMWEATHERS]; 31 | uint8_t CTimeCycle__m_nLightShadowStrength[NUMHOURS][NUMWEATHERS]; 32 | uint8_t CTimeCycle__m_nShadowStrength[NUMHOURS][NUMWEATHERS]; 33 | uint8_t CTimeCycle__m_fSpriteBrightness[NUMHOURS][NUMWEATHERS]; 34 | uint8_t CTimeCycle__m_fSpriteSize[NUMHOURS][NUMWEATHERS]; 35 | uint8_t CTimeCycle__m_fSunSize[NUMHOURS][NUMWEATHERS]; 36 | uint8_t CTimeCycle__m_nSunCoronaBlue[NUMHOURS][NUMWEATHERS]; 37 | uint8_t CTimeCycle__m_nSunCoronaGreen[NUMHOURS][NUMWEATHERS]; 38 | uint8_t CTimeCycle__m_nSunCoronaRed[NUMHOURS][NUMWEATHERS]; 39 | uint8_t CTimeCycle__m_nSunCoreBlue[NUMHOURS][NUMWEATHERS]; 40 | uint8_t CTimeCycle__m_nSunCoreGreen[NUMHOURS][NUMWEATHERS]; 41 | uint8_t CTimeCycle__m_nSunCoreRed[NUMHOURS][NUMWEATHERS]; 42 | uint8_t CTimeCycle__m_nSkyBottomBlue[NUMHOURS][NUMWEATHERS]; 43 | uint8_t CTimeCycle__m_nSkyBottomGreen[NUMHOURS][NUMWEATHERS]; 44 | uint8_t CTimeCycle__m_nSkyBottomRed[NUMHOURS][NUMWEATHERS]; 45 | uint8_t CTimeCycle__m_nSkyTopBlue[NUMHOURS][NUMWEATHERS]; 46 | uint8_t CTimeCycle__m_nSkyTopGreen[NUMHOURS][NUMWEATHERS]; 47 | uint8_t CTimeCycle__m_nSkyTopRed[NUMHOURS][NUMWEATHERS]; 48 | uint8_t CTimeCycle__m_nAmbientBlue_Obj[NUMHOURS][NUMWEATHERS]; 49 | uint8_t CTimeCycle__m_nAmbientGreen_Obj[NUMHOURS][NUMWEATHERS]; 50 | uint8_t CTimeCycle__m_nAmbientRed_Obj[NUMHOURS][NUMWEATHERS]; 51 | uint8_t CTimeCycle__m_nAmbientBlue[NUMHOURS][NUMWEATHERS]; 52 | uint8_t CTimeCycle__m_nAmbientGreen[NUMHOURS][NUMWEATHERS]; 53 | uint8_t CTimeCycle__m_nAmbientRed[NUMHOURS][NUMWEATHERS]; 54 | // Mobile thingies 55 | RQVector CTimeCycle__m_vRedGrade[NUMHOURS][NUMWEATHERS]; 56 | RQVector CTimeCycle__m_vGreenGrade[NUMHOURS][NUMWEATHERS]; 57 | RQVector CTimeCycle__m_vBlueGrade[NUMHOURS][NUMWEATHERS]; 58 | 59 | CColourSet* m_CurrentColours; 60 | extern uintptr_t pGTASA; 61 | 62 | inline void WritePtr(uintptr_t addr, uintptr_t* ptrAddr, size_t len) 63 | { 64 | uintptr_t* ptr = ptrAddr; 65 | aml->Write(addr, (uintptr_t)&ptr, len); 66 | } 67 | void PatchTheValues() 68 | { 69 | WritePtr(pGTASA + BYBIT(0x678CE4, 0x84F9F0), (uintptr_t*)&CTimeCycle__m_nDirectionalMult, sizeof(void*)); 70 | WritePtr(pGTASA + BYBIT(0x678F74, 0x84FF10), (uintptr_t*)&CTimeCycle__m_nWaterFogAlpha, sizeof(void*)); 71 | WritePtr(pGTASA + BYBIT(0x67619C, 0x84A398), (uintptr_t*)&CTimeCycle__m_nHighLightMinIntensity, sizeof(void*)); 72 | WritePtr(pGTASA + BYBIT(0x676CF8, 0x84BA38), (uintptr_t*)&CTimeCycle__m_fCloudAlpha, sizeof(void*)); 73 | WritePtr(pGTASA + BYBIT(0x679BE8, 0x8517E8), (uintptr_t*)&CTimeCycle__m_fPostFx2Alpha, sizeof(void*)); 74 | WritePtr(pGTASA + BYBIT(0x67988C, 0x851130), (uintptr_t*)&CTimeCycle__m_fPostFx2Blue, sizeof(void*)); 75 | WritePtr(pGTASA + BYBIT(0x6769D4, 0x84B3F0), (uintptr_t*)&CTimeCycle__m_fPostFx2Green, sizeof(void*)); 76 | WritePtr(pGTASA + BYBIT(0x678D80, 0x84FB28), (uintptr_t*)&CTimeCycle__m_fPostFx2Red, sizeof(void*)); 77 | WritePtr(pGTASA + BYBIT(0x6763E4, 0x84A820), (uintptr_t*)&CTimeCycle__m_fPostFx1Alpha, sizeof(void*)); 78 | WritePtr(pGTASA + BYBIT(0x679420, 0x850858), (uintptr_t*)&CTimeCycle__m_fPostFx1Blue, sizeof(void*)); 79 | WritePtr(pGTASA + BYBIT(0x676744, 0x84AEE0), (uintptr_t*)&CTimeCycle__m_fPostFx1Green, sizeof(void*)); 80 | WritePtr(pGTASA + BYBIT(0x676574, 0x84AB40), (uintptr_t*)&CTimeCycle__m_fPostFx1Red, sizeof(void*)); 81 | WritePtr(pGTASA + BYBIT(0x6766C0, 0x84ADD8), (uintptr_t*)&CTimeCycle__m_fWaterAlpha, sizeof(void*)); 82 | WritePtr(pGTASA + BYBIT(0x676A98, 0x84B578), (uintptr_t*)&CTimeCycle__m_fWaterBlue, sizeof(void*)); 83 | WritePtr(pGTASA + BYBIT(0x6788FC, 0x84F218), (uintptr_t*)&CTimeCycle__m_fWaterGreen, sizeof(void*)); 84 | WritePtr(pGTASA + BYBIT(0x679314, 0x850640), (uintptr_t*)&CTimeCycle__m_fWaterRed, sizeof(void*)); 85 | WritePtr(pGTASA + BYBIT(0x678294, 0x84E540), (uintptr_t*)&CTimeCycle__m_nFluffyCloudsBottomBlue, sizeof(void*)); 86 | WritePtr(pGTASA + BYBIT(0x678BD4, 0x84F7D0), (uintptr_t*)&CTimeCycle__m_nFluffyCloudsBottomGreen, sizeof(void*)); 87 | WritePtr(pGTASA + BYBIT(0x679E50, 0x851CB0), (uintptr_t*)&CTimeCycle__m_nFluffyCloudsBottomRed, sizeof(void*)); 88 | WritePtr(pGTASA + BYBIT(0x6784B8, 0x84E988), (uintptr_t*)&CTimeCycle__m_nLowCloudsBlue, sizeof(void*)); 89 | WritePtr(pGTASA + BYBIT(0x678A7C, 0x84F520), (uintptr_t*)&CTimeCycle__m_nLowCloudsGreen, sizeof(void*)); 90 | WritePtr(pGTASA + BYBIT(0x6796B8, 0x850D80), (uintptr_t*)&CTimeCycle__m_nLowCloudsRed, sizeof(void*)); 91 | WritePtr(pGTASA + BYBIT(0x67979C, 0x850F40), (uintptr_t*)&CTimeCycle__m_fLightsOnGroundBrightness, sizeof(void*)); 92 | WritePtr(pGTASA + BYBIT(0x679AD8, 0x8515D0), (uintptr_t*)&CTimeCycle__m_fFogStart, sizeof(void*)); 93 | WritePtr(pGTASA + BYBIT(0x6761A4, 0x84A3A8), (uintptr_t*)&CTimeCycle__m_fFarClip, sizeof(void*)); 94 | WritePtr(pGTASA + BYBIT(0x6760FC, 0x84A258), (uintptr_t*)&CTimeCycle__m_nPoleShadowStrength, sizeof(void*)); 95 | WritePtr(pGTASA + BYBIT(0x678298, 0x84E548), (uintptr_t*)&CTimeCycle__m_nLightShadowStrength, sizeof(void*)); 96 | WritePtr(pGTASA + BYBIT(0x676434, 0x84A8C0), (uintptr_t*)&CTimeCycle__m_nShadowStrength, sizeof(void*)); 97 | WritePtr(pGTASA + BYBIT(0x679280, 0x850518), (uintptr_t*)&CTimeCycle__m_fSpriteBrightness, sizeof(void*)); 98 | WritePtr(pGTASA + BYBIT(0x676F50, 0x84BEE0), (uintptr_t*)&CTimeCycle__m_fSpriteSize, sizeof(void*)); 99 | WritePtr(pGTASA + BYBIT(0x679744, 0x850E90), (uintptr_t*)&CTimeCycle__m_fSunSize, sizeof(void*)); 100 | WritePtr(pGTASA + BYBIT(0x678518, 0x84EA48), (uintptr_t*)&CTimeCycle__m_nSunCoronaBlue, sizeof(void*)); 101 | WritePtr(pGTASA + BYBIT(0x6785F4, 0x84EC00), (uintptr_t*)&CTimeCycle__m_nSunCoronaGreen, sizeof(void*)); 102 | WritePtr(pGTASA + BYBIT(0x677734, 0x84CE90), (uintptr_t*)&CTimeCycle__m_nSunCoronaRed, sizeof(void*)); 103 | WritePtr(pGTASA + BYBIT(0x67621C, 0x84A498), (uintptr_t*)&CTimeCycle__m_nSunCoreBlue, sizeof(void*)); 104 | WritePtr(pGTASA + BYBIT(0x679014, 0x850050), (uintptr_t*)&CTimeCycle__m_nSunCoreGreen, sizeof(void*)); 105 | WritePtr(pGTASA + BYBIT(0x67858C, 0x84EB30), (uintptr_t*)&CTimeCycle__m_nSunCoreRed, sizeof(void*)); 106 | WritePtr(pGTASA + BYBIT(0x6799A8, 0x851368), (uintptr_t*)&CTimeCycle__m_nSkyBottomBlue, sizeof(void*)); 107 | WritePtr(pGTASA + BYBIT(0x678F70, 0x84FF08), (uintptr_t*)&CTimeCycle__m_nSkyBottomGreen, sizeof(void*)); 108 | WritePtr(pGTASA + BYBIT(0x677D28, 0x84DA70), (uintptr_t*)&CTimeCycle__m_nSkyBottomRed, sizeof(void*)); 109 | WritePtr(pGTASA + BYBIT(0x677D48, 0x84DAB0), (uintptr_t*)&CTimeCycle__m_nSkyTopBlue, sizeof(void*)); 110 | WritePtr(pGTASA + BYBIT(0x679E38, 0x851C80), (uintptr_t*)&CTimeCycle__m_nSkyTopGreen, sizeof(void*)); 111 | WritePtr(pGTASA + BYBIT(0x679E90, 0x851D30), (uintptr_t*)&CTimeCycle__m_nSkyTopRed, sizeof(void*)); 112 | WritePtr(pGTASA + BYBIT(0x67696C, 0x84B328), (uintptr_t*)&CTimeCycle__m_nAmbientBlue_Obj, sizeof(void*)); 113 | WritePtr(pGTASA + BYBIT(0x675FF4, 0x84A058), (uintptr_t*)&CTimeCycle__m_nAmbientGreen_Obj, sizeof(void*)); 114 | WritePtr(pGTASA + BYBIT(0x6791AC, 0x850378), (uintptr_t*)&CTimeCycle__m_nAmbientRed_Obj, sizeof(void*)); 115 | WritePtr(pGTASA + BYBIT(0x676AFC, 0x84B640), (uintptr_t*)&CTimeCycle__m_nAmbientBlue, sizeof(void*)); 116 | WritePtr(pGTASA + BYBIT(0x678E80, 0x84FD28), (uintptr_t*)&CTimeCycle__m_nAmbientGreen, sizeof(void*)); 117 | WritePtr(pGTASA + BYBIT(0x677EDC, 0x84DDD8), (uintptr_t*)&CTimeCycle__m_nAmbientRed, sizeof(void*)); 118 | // Mobile thingies 119 | WritePtr(pGTASA + BYBIT(0x678630, 0x84EC88), (uintptr_t*)&CTimeCycle__m_vRedGrade, sizeof(void*)); 120 | WritePtr(pGTASA + BYBIT(0x679B58, 0x8516D0), (uintptr_t*)&CTimeCycle__m_vGreenGrade, sizeof(void*)); 121 | WritePtr(pGTASA + BYBIT(0x677E70, 0x84DD00), (uintptr_t*)&CTimeCycle__m_vBlueGrade, sizeof(void*)); 122 | } -------------------------------------------------------------------------------- /timecyc.h: -------------------------------------------------------------------------------- 1 | #ifdef AML32 2 | #include "GTASA_STRUCTS.h" 3 | #else 4 | #include "GTASA_STRUCTS_210.h" 5 | #endif 6 | #define sizeofA(__aVar) ((int)(sizeof(__aVar)/sizeof(__aVar[0]))) 7 | 8 | #define NUMWEATHERS 23 9 | #define NUMHOURS 24 10 | 11 | extern uint8_t CTimeCycle__m_nDirectionalMult[NUMHOURS][NUMWEATHERS]; 12 | extern uint8_t CTimeCycle__m_nWaterFogAlpha[NUMHOURS][NUMWEATHERS]; 13 | extern uint8_t CTimeCycle__m_nHighLightMinIntensity[NUMHOURS][NUMWEATHERS]; 14 | extern uint8_t CTimeCycle__m_fCloudAlpha[NUMHOURS][NUMWEATHERS]; 15 | extern uint8_t CTimeCycle__m_fPostFx2Alpha[NUMHOURS][NUMWEATHERS]; 16 | extern uint8_t CTimeCycle__m_fPostFx2Blue[NUMHOURS][NUMWEATHERS]; 17 | extern uint8_t CTimeCycle__m_fPostFx2Green[NUMHOURS][NUMWEATHERS]; 18 | extern uint8_t CTimeCycle__m_fPostFx2Red[NUMHOURS][NUMWEATHERS]; 19 | extern uint8_t CTimeCycle__m_fPostFx1Alpha[NUMHOURS][NUMWEATHERS]; 20 | extern uint8_t CTimeCycle__m_fPostFx1Blue[NUMHOURS][NUMWEATHERS]; 21 | extern uint8_t CTimeCycle__m_fPostFx1Green[NUMHOURS][NUMWEATHERS]; 22 | extern uint8_t CTimeCycle__m_fPostFx1Red[NUMHOURS][NUMWEATHERS]; 23 | extern uint8_t CTimeCycle__m_fWaterAlpha[NUMHOURS][NUMWEATHERS]; 24 | extern uint8_t CTimeCycle__m_fWaterBlue[NUMHOURS][NUMWEATHERS]; 25 | extern uint8_t CTimeCycle__m_fWaterGreen[NUMHOURS][NUMWEATHERS]; 26 | extern uint8_t CTimeCycle__m_fWaterRed[NUMHOURS][NUMWEATHERS]; 27 | extern uint8_t CTimeCycle__m_nFluffyCloudsBottomRed[NUMHOURS][NUMWEATHERS]; 28 | extern uint8_t CTimeCycle__m_nFluffyCloudsBottomGreen[NUMHOURS][NUMWEATHERS]; 29 | extern uint8_t CTimeCycle__m_nFluffyCloudsBottomBlue[NUMHOURS][NUMWEATHERS]; 30 | extern uint8_t CTimeCycle__m_nLowCloudsBlue[NUMHOURS][NUMWEATHERS]; 31 | extern uint8_t CTimeCycle__m_nLowCloudsGreen[NUMHOURS][NUMWEATHERS]; 32 | extern uint8_t CTimeCycle__m_nLowCloudsRed[NUMHOURS][NUMWEATHERS]; 33 | extern uint8_t CTimeCycle__m_fLightsOnGroundBrightness[NUMHOURS][NUMWEATHERS]; 34 | extern uint16_t CTimeCycle__m_fFogStart[NUMHOURS][NUMWEATHERS]; 35 | extern uint16_t CTimeCycle__m_fFarClip[NUMHOURS][NUMWEATHERS]; 36 | extern uint8_t CTimeCycle__m_nPoleShadowStrength[NUMHOURS][NUMWEATHERS]; 37 | extern uint8_t CTimeCycle__m_nLightShadowStrength[NUMHOURS][NUMWEATHERS]; 38 | extern uint8_t CTimeCycle__m_nShadowStrength[NUMHOURS][NUMWEATHERS]; 39 | extern uint8_t CTimeCycle__m_fSpriteBrightness[NUMHOURS][NUMWEATHERS]; 40 | extern uint8_t CTimeCycle__m_fSpriteSize[NUMHOURS][NUMWEATHERS]; 41 | extern uint8_t CTimeCycle__m_fSunSize[NUMHOURS][NUMWEATHERS]; 42 | extern uint8_t CTimeCycle__m_nSunCoronaBlue[NUMHOURS][NUMWEATHERS]; 43 | extern uint8_t CTimeCycle__m_nSunCoronaGreen[NUMHOURS][NUMWEATHERS]; 44 | extern uint8_t CTimeCycle__m_nSunCoronaRed[NUMHOURS][NUMWEATHERS]; 45 | extern uint8_t CTimeCycle__m_nSunCoreBlue[NUMHOURS][NUMWEATHERS]; 46 | extern uint8_t CTimeCycle__m_nSunCoreGreen[NUMHOURS][NUMWEATHERS]; 47 | extern uint8_t CTimeCycle__m_nSunCoreRed[NUMHOURS][NUMWEATHERS]; 48 | extern uint8_t CTimeCycle__m_nSkyBottomBlue[NUMHOURS][NUMWEATHERS]; 49 | extern uint8_t CTimeCycle__m_nSkyBottomGreen[NUMHOURS][NUMWEATHERS]; 50 | extern uint8_t CTimeCycle__m_nSkyBottomRed[NUMHOURS][NUMWEATHERS]; 51 | extern uint8_t CTimeCycle__m_nSkyTopBlue[NUMHOURS][NUMWEATHERS]; 52 | extern uint8_t CTimeCycle__m_nSkyTopGreen[NUMHOURS][NUMWEATHERS]; 53 | extern uint8_t CTimeCycle__m_nSkyTopRed[NUMHOURS][NUMWEATHERS]; 54 | extern uint8_t CTimeCycle__m_nAmbientBlue_Obj[NUMHOURS][NUMWEATHERS]; 55 | extern uint8_t CTimeCycle__m_nAmbientGreen_Obj[NUMHOURS][NUMWEATHERS]; 56 | extern uint8_t CTimeCycle__m_nAmbientRed_Obj[NUMHOURS][NUMWEATHERS]; 57 | extern uint8_t CTimeCycle__m_nAmbientBlue[NUMHOURS][NUMWEATHERS]; 58 | extern uint8_t CTimeCycle__m_nAmbientGreen[NUMHOURS][NUMWEATHERS]; 59 | extern uint8_t CTimeCycle__m_nAmbientRed[NUMHOURS][NUMWEATHERS]; 60 | // Mobile thingies 61 | extern RQVector CTimeCycle__m_vRedGrade[NUMHOURS][NUMWEATHERS]; 62 | extern RQVector CTimeCycle__m_vGreenGrade[NUMHOURS][NUMWEATHERS]; 63 | extern RQVector CTimeCycle__m_vBlueGrade[NUMHOURS][NUMWEATHERS]; 64 | 65 | extern CColourSet* m_CurrentColours; 66 | 67 | void PatchTheValues(); --------------------------------------------------------------------------------