├── LICENSE ├── README.md ├── opengl ├── Add_to_DynRPG.ini.txt ├── DynPlugins │ ├── miranda_nbp.ttf │ ├── miranda_nbp_readme.txt │ ├── system_opengl.dll │ └── system_opengl_translation.ini ├── Settings.ini ├── Shaders │ ├── CB_Achromatomaly.frag │ ├── CB_Achromatopsia.frag │ ├── CB_Deuteranomaly.frag │ ├── CB_Deuteranopia.frag │ ├── CB_Protanomaly.frag │ ├── CB_Protanopia.frag │ ├── CB_Tritanomaly.frag │ ├── CB_Tritanopia.frag │ ├── CRT.frag │ ├── Game_Boy.frag │ ├── Game_Boy_Pocket.frag │ ├── Invert.frag │ ├── Noir.frag │ ├── Old_PC.frag │ ├── Scale2x.frag │ ├── Sepia.frag │ └── Virtual_Boy.frag ├── libgcc_s_sjlj-1.dll ├── libstdc++-6.dll ├── openal32.dll ├── sfml-audio-2.dll ├── sfml-graphics-2.dll ├── sfml-network-2.dll ├── sfml-system-2.dll └── sfml-window-2.dll ├── rm-opengl.png └── src ├── OptionsMenu.cpp ├── OptionsMenu.h ├── SFML-2.5.0-TDM-GCC-32.7z ├── main.cpp ├── main.h ├── system_opengl.cbp ├── system_opengl.depend └── system_opengl.layout /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Andrew King 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 | # system_opengl 2 | ##### v1.1 3 | A DynRPG plugin to enable OpenGL rendering in older RPG Maker 2003 games 4 | 5 | ![screenshot](https://rpgmaker.net/media/content/users/40/locker/rmopengl.png) 6 | 7 | Features: 8 | * Fast Fullscreen/Windowed mode switching 9 | * **Large window sizes** (up to the desktop resolution's height... 4k etc.) 10 | * Fullscreen mode set to the desktop resolution with pixel scaling options (or a "classic" 640x480 fullscreen mode) 11 | * Interpolation 12 | * **Shader support** (The possibilities are endless) 13 | * **Video Options** menu similar to the Retail/Steam version of RM2003 (but drawn in OpenGL) 14 | * **TRANSLATIONS** for the Video Options menu mentioned above 15 | * An actual screenshot key that will capture a perfect 320x240 screenshot (without shaders) to a png file. 16 | * **[SFML](https://www.sfml-dev.org/documentation/2.5.0/)** (See advanced section at the bottom of the page) 17 | 18 | Note: If your game uses the "Play Movie" command, this plugin doesn't handle it well from a fullscreen context (since OpenGL's fullscreen mode is exclusive), so it has to switch back to a window. This is obviously not great, but it's the best I could do. If playing in a window, the video should play fine. Personally, I would suggest not using "Play Movie" at all since it's garbage to begin with (calling it twice in a row for example will show a black screen the second time). If that doesn't apply to you, then onward! 19 | 20 | ## Usage 21 | 22 | **F4 key** - now toggles between numerous window sizes supported by your monitor (1x, 2x, 3x, 4x etc) 23 | 24 | **F5 key** - Launches into the "Video Options" menu, navigated with arrow keys. F5 again, or Escape will exit the menu. 25 | 26 | ## Changelog 27 | 28 | 1.1 - Updated SFML to v2.5.0 (update all *.dll files from this repo into your game) 29 | 1.0 - Initial release 30 | 31 | 32 | ## Plugin Conflicts 33 | 34 | **[game_settings](https://github.com/rewrking/game_settings)** - This plugin must be removed before installing this one. Take out any files related to "another fullscreen mode" as they won't be needed. 35 | 36 | 37 | ## Installation 38 | 39 | To install the plugin, make sure that you have patched your project with Cherry's DynRPG patch which can be found here: 40 | http://share.cherrytree.at/showfile-30511/dynrpg_0_32_02_25_2017.rar (v0.32 Unofficial) 41 | 42 | Additional Information: 43 | http://cherrytree.at/dynrpg 44 | http://www.rewking.com/dynrpg/ 45 | 46 | 1. Remove the **game_settings.dll** plugin (if applicable), including any settings for it 47 | 48 | 2. Copy the contents of the "opengl" folder into a DynRPG project folder. You should now have: 49 | * A "Shaders" folder 50 | * A "Settings.ini" file 51 | * SFML .dll files: 52 | * libgcc_s_sjlj-1.dll 53 | * libstdc++-6.dll 54 | * openal32.dll 55 | * sfml-audio-2.dll 56 | * sfml-graphics-2.dll 57 | * sfml-network-2.dll 58 | * sfml-system-2.dll 59 | * sfml-window-2.dll 60 | * An "Add_to_DynRPG.ini.txt" file 61 | * DynPlugins\miranda_nbp.ttf - The font used for the Video Options menu 62 | * DynPlugin\system_opengl.dll 63 | * DynPlugin\system_opengl_translation.ini (Contact me about adding translations) 64 | 65 | 3. Copy the contents of "Add_to_DynRPG.ini.txt" into your DynRPG.ini file. Review it below: 66 | 67 | [system_opengl] 68 | ; Game ini filename 69 | ; Default: Settings.ini 70 | GameIniFilename=Settings.ini 71 | ; Shader Syntax: 72 | ; Shader#=filenameNoExt 73 | ; (filenames should be formatted as Shader_Name (title case with underscores) for menus 74 | ; Shader#frag=true --defined as a .frag (pixel shader) 75 | ; Shader#frag=true --defined as a .vert (vertex shader) 76 | ; (both can use combined if using both .frag & .vert) 77 | ; Shader2useTexDims=true --shader requires the use of the texture dimensions of the screen (320x240). 78 | ; This value is hard-coded and looks for a uniform vec2 called "texture_dimensions" 79 | ; If you need input/output size, just use texture_dimensions.xy for input and texture_dimensions.xy*# for output. 80 | ; Shader2numFloatParams=# 81 | ; Shader#paramFloat#name=paramvarname 82 | ; (The parameter's value is set via comment command (by its name) 83 | ; Default: 2 84 | NumShaders=5 85 | DisableVideoMenu=false 86 | ; 87 | Shader1=Scale2x 88 | Shader1frag=true 89 | Shader1useTexDims=true 90 | ; 91 | Shader2=CRT 92 | Shader2frag=true 93 | Shader2useTexDims=true 94 | Shader2numFloatParams=2 95 | Shader2paramFloat1name=distortion 96 | Shader2paramFloat2name=zoom 97 | ; 98 | Shader3=Game_Boy 99 | Shader3frag=true 100 | ; 101 | Shader4=Game_Boy_Pocket 102 | Shader4frag=true 103 | ; 104 | Shader5=Virtual_Boy 105 | Shader5frag=true 106 | ; 107 | Shader6=Old_PC 108 | Shader6frag=true 109 | ; 110 | Shader7=Noir 111 | Shader7frag=true 112 | ; 113 | Shader8=Sepia 114 | Shader8frag=true 115 | ; 116 | Shader9=Invert 117 | Shader9frag=true 118 | ; 119 | Shader10=CB_Protanopia 120 | Shader10frag=true 121 | ; 122 | Shader11=CB_Deuteranopia 123 | Shader11frag=true 124 | ; 125 | Shader12=CB_Tritanopia 126 | Shader12frag=true 127 | ; 128 | Shader13=CB_Achromatopsia 129 | Shader13frag=true 130 | ; 131 | Shader14=CB_Protanomaly 132 | Shader14frag=true 133 | ; 134 | Shader15=CB_Deuteranomaly 135 | Shader15frag=true 136 | ; 137 | Shader16=CB_Tritanomaly 138 | Shader16frag=true 139 | ; 140 | Shader17=CB_Achromatomaly 141 | Shader17frag=true 142 | 143 | Review the Shader syntax. It supports simple float parameters that be passed to the shader via comment command, as well as a predefined "texture_dimensions" parameter. You'll need to recompile the plugin from the source code if you want to do more with the shader capabilities. 144 | 145 | Set NumShaders=17 to see all of the included ones, otherwise it defaults to the first 5. Feel free to re-arrange & re-number the shaders once you understand the syntax above. 146 | 147 | By default, this plugin contains a new "Video Options" menu that appears after hitting F5 or being called via comment command. Set DisableVideoMenu to true to to disable it (if you plan on building one yourself) 148 | 149 | 4. Review the contents of the new Settings.ini: 150 | 151 | 152 | [Settings] 153 | ;=======General======= 154 | ScreenshotPath=C:\ 155 | Translation=en 156 | ; 157 | ;=======Video======= 158 | ; 0=No, 1=Yes 159 | Fullscreen=0 160 | StartFullscreen=0 161 | ; DirectDraw 162 | ; Set UseDirectDraw to "1" to disable OpenGL (for older PC's) 163 | UseDirectDraw=0 164 | ; OpenGL 165 | ; Window Scale is constrained by the desktop resolution, so if you have a 1080p monitor, the max will be "4" 166 | ; 1 = 320x240, 2 = 640x480, 3 = 960x720, 4 = 1280x960, 5 = 1600x1200, 8 = 2560x1920, 9 = 2880x2160 167 | WindowScale=4 168 | EnableVSync=1 169 | UseDesktopResolution=1 170 | ; Ensures pixels are not stretched out more than a 1:1 ratio in fullscreen mode 171 | ; 0=Scale to display's edges (retaining aspect ratio), 1=Use it 172 | AllowUnevenPixelSizes=0 173 | IgnoreAspectRatio=0 174 | UseInterpolation=0 175 | UseShaders=0 176 | ShaderId=0 177 | ; 178 | ;=======Gamepad======= 179 | ; If using the Xbox 360 Controller, turns the rumble On or Off 180 | RumbleOn=0 181 | 182 | Set "ScreenshotPath" to the path of your choice. When you use the "Print Screen" key, a perfect screenshot (without shaders) will get placed in this folder. 183 | 184 | Set "Translation" to the translation header in system_opengl_translation.ini - See the section below 185 | 186 | Set "StartFullscreen" to 1 if you want to always start in fullscreen mode regardless of the last state the game was in, otherwise if it's "0", the plugin will look to the "Fullscreen" parameter. "Fullscreen" is enforced by the plugin, wereas "StartFullscreen" is not. Set both to 0 to start in windowed mode. 187 | 188 | If for some reason you or someone playing your game can't use OpenGL, set "UseDirectDraw" to 0 to disable it entirely. 189 | 190 | The "Gamepad" section is actually used by the [xbx_controller](https://github.com/rewrking/xbx_controller), plugin, but I'm including it here for completion's sake. If you know of any other plugins that use the Settings.ini, you'll want to account for that before copying the above one in. 191 | 192 | 193 | ## Notes about Translations 194 | 195 | 196 | Supported "Video Options" menu translations: 197 | * **en** (English) 198 | * **sp** (Spanish) 199 | * **fr** (French) 200 | * **de** (German) 201 | * **it** (Italian) 202 | 203 | As of 1.0, the non-english translations are literally from google translate, so if they're not accurate, please let me know! Also, if you would like to add additional translations, let me know as well. They are very easy. 204 | 205 | **system_opengl_translation.ini** format: 206 | 207 | [en] 208 | VideoOptions=Video Options 209 | RenderMode=Render Mode 210 | DirectDraw=DirectDraw 211 | OpenGL=OpenGL 212 | DisplayMode=Display Mode 213 | Fullscreen=Fullscreen 214 | Windowed=Windowed 215 | WindowResolution=Window Resolution 216 | UseDesktopResolution=Use Desktop Resolution 217 | Yes=Yes 218 | No=No 219 | AllowUnevenPixels=Allow Uneven Pixels 220 | IgnoreAspectRatio=Ignore Aspect Ratio 221 | Interpolation=Interpolation 222 | Shader=Shader 223 | None=None 224 | 225 | The key (first value) will always be in english TitleCase, whereas the actual translation will be the value to the right. The header (en) in this case define what language this is. It can be anything, but I decided to go with 2 character abbreviations 226 | 227 | 228 | ## DynRPG Comment Commands 229 | 230 | ### **==Misc==** 231 | 232 | **@load_video_options** 233 | * Call the video options menu from anywhere 234 | 235 | **@quit_game** 236 | * A simple Quit game command (that hooks into the OpenGL plugin to safely exit). If you use the **BetterAEP** patch, use this command instead of its quit method (although there is experimental support for that coded in this plugin) 237 | 238 | **@set_shader_param** 239 | * Sets a shader's float parameter (experimental) 240 | 1. **text** - The shader's parameter 241 | 2. **text** - A textual representation of a float value (ex: "0.975") 242 | 243 | 244 | ### **==Menu building functions==** 245 | Use in custom menus. These work the same way as they do in the Video Options menu 246 | 247 | **@bind_variable** 248 | * For building your own menu in 2k3. This will bind Settings.ini updates to a 2k3 Variable so they are always synced (less work in 2k3) 249 | 1. **text** - The Settings.ini key 250 | 2. **number** - The variable ID 251 | 252 | **@toggle_shaders** 253 | * Loop through available shaders 254 | 1. **number** - reverse direction (1), normal direction (0) 255 | 256 | **@set_interpolation** 257 | * Set interpolation on or off 258 | 1. **number** - on (1), off (0) 259 | 260 | **@set_use_max_resolution** 261 | * Use desktop resolution & refresh fullscreen 262 | 1. **number** - on (1), off (0) 263 | 264 | **@set_ignore_aspect_ratio** 265 | * Ignore aspect ratio 266 | 1. **number** - on (1), off (0) 267 | 268 | **@set_allow_uneven_pixels** 269 | * Allow uneven pixels 270 | 1. **number** - on (1), off (0) 271 | 272 | **@set_fullscreen** 273 | * Set fullscreen/windowed 274 | 1. **number** - on (1), off (0) 275 | 276 | **@toggle_window_scale** 277 | * Toggle window scale 278 | 1. **number** - reverse direction (1), normal direction (0) 279 | 280 | **@set_window_scale** 281 | * Set window scale 282 | 1. **number** - The new scale (if out of range, will set to min/max) 283 | 284 | **@set_direct_draw** 285 | * Set DirectDraw mode. 286 | 1. **number** - DirectDraw (1), OpenGL (0) 287 | 288 | **@set_window_resolution_to_hero_name** 289 | * Treats a hero name as a string and sets it to the window resolution (in "width x height" format) 290 | 1. **number** - The ID of the hero 291 | 292 | **@set_shader_name_to_hero_name** 293 | * Treats a hero name as a string and set one to the name of the current shader (or "None") 294 | 1. **number** - The ID of the hero 295 | 296 | **@set_desktop_res_to_hero_name** 297 | * Treats a hero name as a string and set one to the desktop resolution (in "Yes (width x height)" format) 298 | 1. **number** - The ID of the hero 299 | 300 | **@get_direct_draw_large_window** 301 | * In DirectDraw mode, sets a switch to whether it's in large window mode or not 302 | 1. **number** - the ID of the switch 303 | 304 | **@get_direct_draw_is_fullscreen** 305 | * In DirectDraw mode, sets a switch to whether it's in fullscreen mode or not 306 | 1. **number** - the ID of the switch 307 | 308 | 309 | ## Advanced (Recompiling from source & adding stuff) 310 | 311 | Since this effectively turns your project into one that supports OpenGL, you can expand on your project in some new (but limited) ways. 312 | 313 | First limitation is to keep in mind this does NOT allow you to place OpenGL objects inside of your game. It's simply a new renderer. However, if you want to dip your toes into SFML and maybe make some menus or something that can be layered on top of the existing engine, read further. 314 | 315 | Recompiling this plugin has a big requirement. Not just ANY version of SFML, but only the included version that I've compiled for TDM GCC 4.8.1 (The compiler that DynRPG requires) 316 | 317 | 1. Extract the **src\\SFML-2.5.0-TDM-GCC-32.7z** file with 7-zip to **C:\\SFML-2.5.0-TDM-GCC-32\\** 318 | 319 | 2. Copy the rest of the included **src** folder somewhere and open the **system_opengl.cbp** project file. 320 | 321 | 3. The linker and search directories for SFML should be setup already. Make sure DynRPG is in your compiler's include folder (C:\\TDM-GCC-32\\ in my case). 322 | 323 | 4. Build it. It should compile. 324 | -------------------------------------------------------------------------------- /opengl/Add_to_DynRPG.ini.txt: -------------------------------------------------------------------------------- 1 | [system_opengl] 2 | ; Game ini filename 3 | ; Default: Settings.ini 4 | GameIniFilename=Settings.ini 5 | ; Shader Syntax: 6 | ; Shader#=filenameNoExt 7 | ; (filenames should be formatted as Shader_Name (title case with underscores) for menus 8 | ; Shader#frag=true --defined as a .frag (pixel shader) 9 | ; Shader#frag=true --defined as a .vert (vertex shader) 10 | ; (both can use combined if using both .frag & .vert) 11 | ; Shader2useTexDims=true --shader requires the use of the texture dimensions of the screen (320x240). 12 | ; This value is hard-coded and looks for a uniform vec2 called "texture_dimensions" 13 | ; If you need input/output size, just use texture_dimensions.xy for input and texture_dimensions.xy*# for output. 14 | ; Shader2numFloatParams=# 15 | ; Shader#paramFloat#name=paramvarname 16 | ; (The parameter's value is set via comment command (by its name) 17 | ; Default: 2 18 | NumShaders=5 19 | DisableVideoMenu=false 20 | ; 21 | Shader1=Scale2x 22 | Shader1frag=true 23 | Shader1useTexDims=true 24 | ; 25 | Shader2=CRT 26 | Shader2frag=true 27 | Shader2useTexDims=true 28 | Shader2numFloatParams=2 29 | Shader2paramFloat1name=distortion 30 | Shader2paramFloat2name=zoom 31 | ; 32 | Shader3=Game_Boy 33 | Shader3frag=true 34 | ; 35 | Shader4=Game_Boy_Pocket 36 | Shader4frag=true 37 | ; 38 | Shader5=Virtual_Boy 39 | Shader5frag=true 40 | ; 41 | Shader6=Old_PC 42 | Shader6frag=true 43 | ; 44 | Shader7=Noir 45 | Shader7frag=true 46 | ; 47 | Shader8=Sepia 48 | Shader8frag=true 49 | ; 50 | Shader9=Invert 51 | Shader9frag=true 52 | ; 53 | Shader10=CB_Protanopia 54 | Shader10frag=true 55 | ; 56 | Shader11=CB_Deuteranopia 57 | Shader11frag=true 58 | ; 59 | Shader12=CB_Tritanopia 60 | Shader12frag=true 61 | ; 62 | Shader13=CB_Achromatopsia 63 | Shader13frag=true 64 | ; 65 | Shader14=CB_Protanomaly 66 | Shader14frag=true 67 | ; 68 | Shader15=CB_Deuteranomaly 69 | Shader15frag=true 70 | ; 71 | Shader16=CB_Tritanomaly 72 | Shader16frag=true 73 | ; 74 | Shader17=CB_Achromatomaly 75 | Shader17frag=true 76 | -------------------------------------------------------------------------------- /opengl/DynPlugins/miranda_nbp.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/DynPlugins/miranda_nbp.ttf -------------------------------------------------------------------------------- /opengl/DynPlugins/miranda_nbp_readme.txt: -------------------------------------------------------------------------------- 1 | MIRANDA NBP 2 | made by Nate Halley 3 | using FontStruct 4 | Version 1.0 5 | Date: 8 March 2013 6 | 7 | DESCRIPTION 8 | =========== 9 | Another pixel font named after a character by Shakespeare, Miranda was designed for legibility and style on small screens. 10 | 11 | LICENSE 12 | ======= 13 | Miranda is Creative Commons (by-sa) Attribution Share Alike. That means it's free to download and use. You can also upload it to another website but only as long as you give me credit for making it. You can even make changes to it as long as you give me credit for making the first version and license your new version as CC-BY-SA too. 14 | For more information, go to: 15 | http://creativecommons.org/licenses/by-sa/3.0/ 16 | 17 | A REQUEST FROM NATE547 18 | ====================== 19 | Once you install this font, find 2 ways to make the world, the country, your home state/province/county, or your hometown better than it is. Even if it's just recycling your newspaper instead of tossing it on the rubbish. 20 | Of course, you're not obligated by law to do this.... it's just a request from a Sensible Human who wants our world to change. 21 | 22 | Duty now for the future. 23 | 24 | Nate547 (Total FontGeek) -------------------------------------------------------------------------------- /opengl/DynPlugins/system_opengl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/DynPlugins/system_opengl.dll -------------------------------------------------------------------------------- /opengl/DynPlugins/system_opengl_translation.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/DynPlugins/system_opengl_translation.ini -------------------------------------------------------------------------------- /opengl/Settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | ;=======General======= 3 | ScreenshotPath=C:\ 4 | Translation=en 5 | ; 6 | ;=======Video======= 7 | ; 0=No, 1=Yes 8 | Fullscreen=0 9 | StartFullscreen=0 10 | ; DirectDraw 11 | ; Set UseDirectDraw to "1" to disable OpenGL (for older PC's) 12 | UseDirectDraw=0 13 | ; OpenGL 14 | ; Window Scale is constrained by the desktop resolution, so if you have a 1080p monitor, the max will be "4" 15 | ; 1 = 320x240, 2 = 640x480, 3 = 960x720, 4 = 1280x960, 5 = 1600x1200, 8 = 2560x1920, 9 = 2880x2160 16 | WindowScale=4 17 | EnableVSync=1 18 | UseDesktopResolution=1 19 | ; Ensures pixels are not stretched out more than a 1:1 ratio in fullscreen mode 20 | ; 0=Scale to display's edges (retaining aspect ratio), 1=Use it 21 | AllowUnevenPixelSizes=0 22 | IgnoreAspectRatio=0 23 | UseInterpolation=0 24 | UseShaders=0 25 | ShaderId=0 26 | ; 27 | ;=======Gamepad======= 28 | ; If using the Xbox 360 Controller, turns the rumble On or Off 29 | RumbleOn=0 30 | -------------------------------------------------------------------------------- /opengl/Shaders/CB_Achromatomaly.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | const mat4 mAchromatomaly = mat4(0.618, 0.320, 0.062, 0.0, 4 | 0.163, 0.775, 0.062, 0.0, 5 | 0.163, 0.320, 0.516, 0.0, 6 | 0.0 , 0.0 , 0.0 , 1.0 ); 7 | 8 | void main() 9 | { 10 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 11 | 12 | gl_FragColor = pixel*mAchromatomaly; 13 | } 14 | -------------------------------------------------------------------------------- /opengl/Shaders/CB_Achromatopsia.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | const mat4 mAchromatopsia = mat4(0.299, 0.587 , 0.114, 0.0 , 4 | 0.299, 0.587 , 0.114, 0.0 , 5 | 0.299, 0.587 , 0.114, 0.0 , 6 | 0.0 , 0.0 , 0.0 , 1.0 ); 7 | 8 | void main() 9 | { 10 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 11 | 12 | gl_FragColor = pixel*mAchromatopsia; 13 | } 14 | -------------------------------------------------------------------------------- /opengl/Shaders/CB_Deuteranomaly.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | const mat4 mDeuteranomaly = mat4( 0.8 , 0.2 , 0.0 , 0.0, 4 | 0.258, 0.742, 0.0 , 0.0, 5 | 0.0 , 0.142, 0.858, 0.0, 6 | 0.0 , 0.0 , 0.0 , 1.0 ); 7 | 8 | void main() 9 | { 10 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 11 | 12 | gl_FragColor = pixel*mDeuteranomaly; 13 | } 14 | -------------------------------------------------------------------------------- /opengl/Shaders/CB_Deuteranopia.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | const mat4 mDeuteranopia = mat4( 0.43 , 0.72 , -0.15 , 0.0 , 4 | 0.34 , 0.57 , 0.09 , 0.0 , 5 | -0.02 , 0.03 , 1.00 , 0.0 , 6 | 0.0 , 0.0 , 0.0 , 1.0 ); 7 | 8 | void main() 9 | { 10 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 11 | 12 | gl_FragColor = pixel*mDeuteranopia; 13 | } 14 | -------------------------------------------------------------------------------- /opengl/Shaders/CB_Protanomaly.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | const mat4 mProtanomaly = mat4( 0.817, 0.183 , 0.0 , 0.0, 4 | 0.333, 0.667 , 0.0 , 0.0, 5 | 0.0 , 0.125 , 0.875, 0.0, 6 | 0.0 , 0.0 , 0.0 , 1.0 ); 7 | 8 | void main() 9 | { 10 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 11 | 12 | gl_FragColor = pixel*mProtanomaly; 13 | } 14 | -------------------------------------------------------------------------------- /opengl/Shaders/CB_Protanopia.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | const mat4 mProtanopia = mat4( 0.20 , 0.99 , -0.19 , 0.0 , 4 | 0.16 , 0.79 , 0.04 , 0.0 , 5 | 0.01 , -0.01 , 1.00 , 0.0 , 6 | 0.0 , 0.0 , 0.0 , 1.0 ); 7 | 8 | void main() 9 | { 10 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 11 | 12 | gl_FragColor = pixel*mProtanopia; 13 | } 14 | -------------------------------------------------------------------------------- /opengl/Shaders/CB_Tritanomaly.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | const mat4 mTritanomaly = mat4( 0.967, 0.033, 0.0 , 0.0, 4 | 0.0 , 0.733, 0.267, 0.0, 5 | 0.0 , 0.183, 0.817, 0.0, 6 | 0.0 , 0.0 , 0.0 , 1.0 ); 7 | 8 | void main() 9 | { 10 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 11 | 12 | gl_FragColor = pixel*mTritanomaly; 13 | } 14 | -------------------------------------------------------------------------------- /opengl/Shaders/CB_Tritanopia.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | const mat4 mTritanopia = mat4( 0.97 , 0.11 , -0.08 , 0.0 , 4 | 0.02 , 0.82 , 0.16 , 0.0 , 5 | -0.06 , 0.88 , 0.18 , 0.0 , 6 | 0.0 , 0.0 , 0.0 , 1.0 ); 7 | 8 | void main() 9 | { 10 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 11 | 12 | gl_FragColor = pixel*mTritanopia; 13 | } 14 | -------------------------------------------------------------------------------- /opengl/Shaders/CRT.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | uniform vec2 texture_dimensions; 3 | 4 | vec2 input_size = texture_dimensions.xy; 5 | vec2 output_size = texture_dimensions.xy*2; 6 | 7 | // Controls the intensity of the barrel distortion used to emulate the 8 | // curvature of a CRT. 0.0 is perfectly flat, 1.0 is annoyingly 9 | // distorted, higher values are increasingly ridiculous. 10 | uniform float distortion; 11 | uniform float zoom; 12 | 13 | // Abbreviations 14 | //#define TEX2D(c) texture2D(texture, (c)) 15 | #define TEX2D(c) pow(texture2D(texture, (c)), vec4(inputGamma)) 16 | #define FIX(c) max(abs(c), 1e-6); 17 | #define PI 3.141592653589 18 | 19 | // Adjusts the vertical position of scanlines. Useful if the output 20 | // pixel size is large compared to the scanline width (so, scale 21 | // factors less than 4x or so). Ranges from 0.0 to 1.0. 22 | #define phase 0.0 23 | 24 | // Assume NTSC 2.2 Gamma for linear blending 25 | #define inputGamma 3.2 26 | 27 | // Simulate a CRT gamma of 2.5 28 | #define outputGamma 3 29 | 30 | // Apply radial distortion to the given coordinate. 31 | vec2 radialDistortion(vec2 coord) { 32 | coord *= texture_dimensions / input_size; 33 | vec2 cc = coord - 0.5; 34 | float dist = dot(cc, cc) * distortion; 35 | return (coord + cc * (-zoom + dist) * dist) * input_size / texture_dimensions; 36 | } 37 | 38 | // Calculate the influence of a scanline on the current pixel. 39 | // 40 | // 'distance' is the distance in texture coordinates from the current 41 | // pixel to the scanline in question. 42 | // 'color' is the colour of the scanline at the horizontal location of 43 | // the current pixel. 44 | vec4 scanlineWeights(float distance, vec4 color) 45 | { 46 | // The "width" of the scanline beam is set as 2*(1 + x^4) for 47 | // each RGB channel. 48 | vec4 wid = 2.0 + 2.0 * pow(color, vec4(4.0)); 49 | 50 | // The "weights" lines basically specify the formula that gives 51 | // you the profile of the beam, i.e. the intensity as 52 | // a function of distance from the vertical center of the 53 | // scanline. In this case, it is gaussian if width=2, and 54 | // becomes nongaussian for larger widths. Ideally this should 55 | // be normalized so that the integral across the beam is 56 | // independent of its width. That is, for a narrower beam 57 | // "weights" should have a higher peak at the center of the 58 | // scanline than for a wider beam. 59 | vec4 weights = vec4(distance * 3.333333); 60 | return 0.51 * exp(-pow(weights * sqrt(2.0 / wid), wid)) / (0.18 + 0.06 * wid); 61 | } 62 | 63 | void main() 64 | { 65 | // Here's a helpful diagram to keep in mind while trying to 66 | // understand the code: 67 | // 68 | // | | | | | 69 | // ------------------------------- 70 | // | | | | | 71 | // | 01 | 11 | 21 | 31 | <-- current scanline 72 | // | | @ | | | 73 | // ------------------------------- 74 | // | | | | | 75 | // | 02 | 12 | 22 | 32 | <-- next scanline 76 | // | | | | | 77 | // ------------------------------- 78 | // | | | | | 79 | // 80 | // Each character-cell represents a pixel on the output 81 | // surface, "@" represents the current pixel (always somewhere 82 | // in the bottom half of the current scan-line, or the top-half 83 | // of the next scanline). The grid of lines represents the 84 | // edges of the texels of the underlying texture. 85 | 86 | // The size of one texel, in texture-coordinates. 87 | vec2 one = 1.0 / texture_dimensions; 88 | 89 | // Texture coordinates of the texel containing the active pixel 90 | vec2 xy = radialDistortion(gl_TexCoord[0].xy); 91 | 92 | // Of all the pixels that are mapped onto the texel we are 93 | // currently rendering, which pixel are we currently rendering? 94 | vec2 uv_ratio = fract(xy * texture_dimensions) - vec2(0.5); 95 | 96 | // Snap to the center of the underlying texel. 97 | xy = (floor(xy * texture_dimensions) + vec2(0.5)) / texture_dimensions; 98 | 99 | // Calculate Lanczos scaling coefficients describing the effect 100 | // of various neighbour texels in a scanline on the current 101 | // pixel. 102 | vec4 coeffs = PI * vec4(1.0 + uv_ratio.x, uv_ratio.x, 1.0 - uv_ratio.x, 2.0 - uv_ratio.x); 103 | 104 | // Prevent division by zero 105 | coeffs = FIX(coeffs); 106 | coeffs = 2.0 * sin(coeffs) * sin(coeffs / 2.0) / (coeffs * coeffs); 107 | 108 | // Normalize 109 | coeffs /= dot(coeffs, vec4(1.0)); 110 | 111 | // Calculate the effective colour of the current and next 112 | // scanlines at the horizontal location of the current pixel, 113 | // using the Lanczos coefficients above. 114 | vec4 col = clamp(coeffs.x * TEX2D(xy + vec2(-one.x, 0.0)) + coeffs.y * TEX2D(xy) + coeffs.z * TEX2D(xy + vec2(one.x, 0.0)) + coeffs.w * TEX2D(xy + vec2(2.0 * one.x, 0.0)), 0.0, 1.0); 115 | vec4 col2 = clamp(coeffs.x * TEX2D(xy + vec2(-one.x, one.y)) + coeffs.y * TEX2D(xy + vec2(0.0, one.y)) + coeffs.z * TEX2D(xy + one) + coeffs.w * TEX2D(xy + vec2(2.0 * one.x, one.y)), 0.0, 1.0); 116 | 117 | // col = pow(col, vec4(inputGamma)); 118 | // col2 = pow(col2, vec4(inputGamma)); 119 | 120 | // Calculate the influence of the current and next scanlines on 121 | // the current pixel. 122 | vec4 weights = scanlineWeights(abs(uv_ratio.y) , col); 123 | vec4 weights2 = scanlineWeights(1.0 - uv_ratio.y, col2); 124 | vec3 mul_res = (col * weights + col2 * weights2).xyz; 125 | 126 | // mod_factor is the x-coordinate of the current output pixel. 127 | float mod_factor = gl_TexCoord[0].x * output_size.x * texture_dimensions.x / input_size.x; 128 | 129 | // dot-mask emulation: 130 | // Output pixels are alternately tinted green and magenta. 131 | vec3 dotMaskWeights = mix( 132 | vec3(1.05, 0.75, 1.05), 133 | vec3(0.75, 1.05, 0.75), 134 | floor(mod(mod_factor, 2.0)) 135 | ); 136 | 137 | mul_res *= dotMaskWeights; 138 | 139 | // Convert the image gamma for display on our output device. 140 | mul_res = pow(mul_res, vec3(1.0 / (2.0 * inputGamma - outputGamma))); 141 | 142 | gl_FragColor = vec4(mul_res, 1.0); 143 | } -------------------------------------------------------------------------------- /opengl/Shaders/Game_Boy.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | #define color_depth 255.0 4 | #define gamma 75.0 5 | #define brightness 1.2 6 | 7 | void main() 8 | { 9 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 10 | vec4 out_pixel = pixel * vec4(0.15f, 0.3f, 0.4f, 1.0f); 11 | float f = (round(((out_pixel.r + out_pixel.g + out_pixel.b)/gamma)*color_depth)*(gamma*brightness))/color_depth; 12 | 13 | if (f < 0.25) { 14 | out_pixel = vec4(0.059, 0.22, 0.055, pixel.a); 15 | } else if (f < 0.50) { 16 | out_pixel = vec4(0.208, 0.384, 0.216, pixel.a); 17 | } else if (f < 0.75) { 18 | out_pixel = vec4(0.451, 0.627, 0.404, pixel.a); 19 | } else { 20 | out_pixel = vec4(0.608, 0.733, 0.055, pixel.a); 21 | } 22 | 23 | gl_FragColor = out_pixel * gl_Color; 24 | } 25 | -------------------------------------------------------------------------------- /opengl/Shaders/Game_Boy_Pocket.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | #define color_depth 255.0 4 | #define gamma 75.0 5 | #define brightness 1.2 6 | 7 | void main() 8 | { 9 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 10 | vec4 out_pixel = pixel * vec4(0.15f, 0.3f, 0.4f, 1.0f); 11 | float f = (round(((out_pixel.r + out_pixel.g + out_pixel.b)/gamma)*color_depth)*(gamma*brightness))/color_depth; 12 | 13 | if (f < 0.25) { 14 | out_pixel = vec4(0.031, 0.094, 0.125, pixel.a); 15 | } else if (f < 0.50) { 16 | out_pixel = vec4(0.188, 0.408, 0.314, pixel.a); 17 | } else if (f < 0.75) { 18 | out_pixel = vec4(0.533, 0.753, 0.439, pixel.a); 19 | } else { 20 | out_pixel = vec4(0.878, 0.973, 0.816, pixel.a); 21 | } 22 | 23 | gl_FragColor = out_pixel * gl_Color; 24 | } 25 | -------------------------------------------------------------------------------- /opengl/Shaders/Invert.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | void main() { 4 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 5 | 6 | gl_FragColor = vec4(1 - pixel.r, 1 - pixel.g, 1 - pixel.b, pixel.a) * gl_Color; 7 | } -------------------------------------------------------------------------------- /opengl/Shaders/Noir.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | //#define gamma 1.05 4 | 5 | void main() { 6 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 7 | //float gray = (pixel.r + pixel.g + pixel.b) / 3; 8 | float gray = dot(pixel.rgb, vec3(0.299, 0.587, 0.114)); 9 | //gray = gray*gamma; 10 | 11 | gl_FragColor = vec4(gray, gray, gray, pixel.a) * gl_Color; 12 | } -------------------------------------------------------------------------------- /opengl/Shaders/Old_PC.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | #define color_depth 224.0 4 | #define gamma 60.0 5 | #define brightness 1.3 6 | 7 | void main() 8 | { 9 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 10 | //float gray = (pixel.r + pixel.g + pixel.b) / 3; 11 | 12 | //vec4 f4 = pixel * vec4(0.299f, 0.587f, 0.114f, 1.0f); 13 | vec4 f = (floor(((pixel)/gamma)*color_depth)*(gamma*brightness))/color_depth; 14 | 15 | float red=f.r; 16 | float green=f.g; 17 | float blue=f.b; 18 | 19 | gl_FragColor = vec4(red, green, blue, pixel.a) * gl_Color; 20 | } 21 | -------------------------------------------------------------------------------- /opengl/Shaders/Scale2x.frag: -------------------------------------------------------------------------------- 1 | /* Scale2x (aka AdvMame2x) 2 | * Algorithm found at http://scale2x.sourceforge.net/algorithm.html 3 | * Adapted for use by shaders 4 | */ 5 | 6 | uniform sampler2D texture; 7 | uniform vec2 texture_dimensions; 8 | 9 | void main() { 10 | // o = offset, the width of a pixel 11 | vec2 o = 1.0 / texture_dimensions; 12 | vec2 coord = gl_TexCoord[0].xy; 13 | // texel arrangement 14 | // A B C 15 | // D E F 16 | // G H I 17 | vec4 A = texture2D(texture, coord + vec2( -o.x, o.y)); 18 | vec4 B = texture2D(texture, coord + vec2( 0, o.y)); 19 | vec4 C = texture2D(texture, coord + vec2( o.x, o.y)); 20 | vec4 D = texture2D(texture, coord + vec2( -o.x, 0)); 21 | vec4 E = texture2D(texture, coord + vec2( 0, 0)); 22 | vec4 F = texture2D(texture, coord + vec2( o.x, 0)); 23 | vec4 G = texture2D(texture, coord + vec2( -o.x, -o.y)); 24 | vec4 H = texture2D(texture, coord + vec2( 0, -o.y)); 25 | vec4 I = texture2D(texture, coord + vec2( o.x, -o.y)); 26 | vec2 p = coord * texture_dimensions; 27 | // p = the position within a pixel [0...1] 28 | p = p - floor(p); 29 | if (p.x > .5) { 30 | if (p.y > .5) { 31 | // Top Right 32 | gl_FragColor = B == F && B != D && F != H ? F : E; 33 | } else { 34 | // Bottom Right 35 | gl_FragColor = H == F && D != H && B != F ? F : E; 36 | } 37 | } else { 38 | if (p.y > .5) { 39 | // Top Left 40 | gl_FragColor = D == B && B != F && D != H ? D : E; 41 | } else { 42 | // Bottom Left 43 | gl_FragColor = D == H && D != B && H != F ? D : E; 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /opengl/Shaders/Sepia.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | void main() 4 | { 5 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 6 | //float gray = (pixel.r + pixel.g + pixel.b) / 3; 7 | float gray = dot(pixel.rgb, vec3(0.299, 0.587, 0.114)); 8 | 9 | float red=gray; 10 | float green=gray*.75; 11 | float blue=gray*.5; 12 | 13 | gl_FragColor = vec4(red, green, blue, pixel.a) * gl_Color; 14 | } 15 | -------------------------------------------------------------------------------- /opengl/Shaders/Virtual_Boy.frag: -------------------------------------------------------------------------------- 1 | uniform sampler2D texture; 2 | 3 | #define color_depth 255.0 4 | #define gamma 75.0 5 | #define brightness 1.2 6 | 7 | void main() 8 | { 9 | vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); 10 | vec4 out_pixel = pixel * vec4(0.15f, 0.3f, 0.4f, 1.0f); 11 | float f = (round(((out_pixel.r + out_pixel.g + out_pixel.b)/gamma)*color_depth)*(gamma*brightness))/color_depth; 12 | 13 | if (f < 0.25) { 14 | out_pixel = vec4(0.0, 0.0, 0.0, pixel.a); 15 | } else if (f < 0.50) { 16 | out_pixel = vec4(0.333, 0.0, 0.0, pixel.a); 17 | } else if (f < 0.75) { 18 | out_pixel = vec4(0.667, 0.0, 0.0, pixel.a); 19 | } else { 20 | out_pixel = vec4(1.0, 0.0, 0.0, pixel.a); 21 | } 22 | 23 | gl_FragColor = out_pixel * gl_Color; 24 | } 25 | -------------------------------------------------------------------------------- /opengl/libgcc_s_sjlj-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/libgcc_s_sjlj-1.dll -------------------------------------------------------------------------------- /opengl/libstdc++-6.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/libstdc++-6.dll -------------------------------------------------------------------------------- /opengl/openal32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/openal32.dll -------------------------------------------------------------------------------- /opengl/sfml-audio-2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/sfml-audio-2.dll -------------------------------------------------------------------------------- /opengl/sfml-graphics-2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/sfml-graphics-2.dll -------------------------------------------------------------------------------- /opengl/sfml-network-2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/sfml-network-2.dll -------------------------------------------------------------------------------- /opengl/sfml-system-2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/sfml-system-2.dll -------------------------------------------------------------------------------- /opengl/sfml-window-2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/opengl/sfml-window-2.dll -------------------------------------------------------------------------------- /rm-opengl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/rm-opengl.png -------------------------------------------------------------------------------- /src/OptionsMenu.cpp: -------------------------------------------------------------------------------- 1 | #include "OptionsMenu.h" 2 | 3 | // The OptionsMenu class controls the F5 menu (Video Options) 4 | // From this point on, you're looking at almost purely SFML code as opposed to DynRPG 5 | OptionsMenu::OptionsMenu() { 6 | visible = false; 7 | exitScene = false; 8 | _visibleTimer = 0; 9 | _alpha = 0; 10 | 11 | // The menu lives as long as the plugin lives, so most of these static values can be set via the constructor 12 | 13 | // The render texture is an image buffer where all drawing of the menu happens 14 | rendTex.create(RM_WIDTH, RM_HEIGHT); 15 | spr.setTexture(rendTex.getTexture()); 16 | // Clear & display to initialize 17 | rendTex.clear(sf::Color::Transparent); 18 | rendTex.display(); 19 | 20 | _font.loadFromFile("DynPlugins\\miranda_nbp.ttf"); 21 | _fontSize = 8; 22 | 23 | int lineHeight = _fontSize*2; 24 | 25 | 26 | 27 | _rect.setSize(sf::Vector2f(240, 4+(lineHeight*(NUM_TEXT_LAYERS-1)))); 28 | _rect.setPosition((rendTex.getSize().x/2) - (_rect.getSize().x/2), (rendTex.getSize().y/2) - (_rect.getSize().y/2)); 29 | _rect.setOutlineColor(sf::Color(0,0,0,255)); 30 | _rect.setOutlineThickness(1.0); 31 | _rect.setFillColor(sf::Color(25,25,25,225)); 32 | 33 | _selector.setSize(sf::Vector2f(_rect.getSize().x, lineHeight)); 34 | _selector.setPosition(_rect.getPosition()); 35 | _selector.setFillColor(sf::Color(50, 75, 100, 255)); 36 | 37 | _textLayers = NUM_TEXT_LAYERS; 38 | for (int i=0; i<_textLayers; i++) { 39 | _options[i].label.setFont(_font); 40 | _options[i].label.setCharacterSize(_fontSize*2); 41 | _options[i].pick.setFont(_font); 42 | _options[i].pick.setCharacterSize(_fontSize*2); 43 | } 44 | _options[0].label.setPosition(_rect.getPosition().x + 4, _rect.getPosition().y - 2); 45 | _options[0].label.setFillColor(sf::Color(150, 175, 200, 255)); 46 | 47 | for (int i=1; i<_textLayers; i++) { 48 | _options[i].label.setPosition(_options[0].label.getPosition().x, _options[0].label.getPosition().y + (lineHeight*i)); 49 | _options[i].pick.setPosition(_options[0].label.getPosition().x + 4 + static_cast(_rect.getSize().x*0.62), _options[0].label.getPosition().y + (lineHeight*i)); 50 | } 51 | 52 | _options[OMEN_USE_DIRECT_DRAW].disabled = true; 53 | 54 | 55 | config = OCFG_WINDOWED; 56 | 57 | _menus[OCFG_WINDOWED] = { 58 | OMEN_USE_DIRECT_DRAW, 59 | OMEN_DISPLAY_MODE, 60 | OMEN_WIN_RES, 61 | OMEN_USE_INTERPOLATION, 62 | OMEN_USE_SHADERS 63 | }; 64 | 65 | _menus[OCFG_FULL_MIN] = { 66 | OMEN_USE_DIRECT_DRAW, 67 | OMEN_DISPLAY_MODE, 68 | OMEN_USE_DESKTOP_RES, 69 | OMEN_USE_INTERPOLATION, 70 | OMEN_USE_SHADERS 71 | }; 72 | 73 | _menus[OCFG_FULL_MAX] = { 74 | OMEN_USE_DIRECT_DRAW, 75 | OMEN_DISPLAY_MODE, 76 | OMEN_USE_DESKTOP_RES, 77 | OMEN_ALLOW_UNEVEN_PIX, 78 | OMEN_IGNORE_ASPECT, 79 | OMEN_USE_INTERPOLATION, 80 | OMEN_USE_SHADERS 81 | }; 82 | 83 | _numOptions = _menus[config].size()-1; 84 | } 85 | 86 | void OptionsMenu::init() 87 | { 88 | // Initialize the main variables 89 | visible = true; 90 | exitScene = false; 91 | action = 0; 92 | _visibleTimer = 0; 93 | _alpha = 0; 94 | 95 | // Update the action if one of the options is disabled 96 | while (_options[action+1].disabled) { 97 | action++; 98 | } 99 | 100 | // Prevent any undesired keychecking to occur 101 | keyDown = true; 102 | 103 | //_minFullscreenText = isWindowsVistaOrHigher() ? "640 x 480" : "320 x 240"; 104 | _minFullscreenText = "640 x 480"; 105 | updateMenu(); 106 | } 107 | 108 | void OptionsMenu::update(bool withInput) 109 | { 110 | resetSprite(); 111 | 112 | // Fade in 113 | if (_visibleTimer < 17) { 114 | _visibleTimer++; 115 | _alpha = (15*_visibleTimer); 116 | spr.setColor(sf::Color(255, 255, 255, _alpha)); 117 | } 118 | 119 | // If the fade cycle has completed 120 | if (_alpha == 255) { 121 | 122 | _numOptions = _menus[config].size()-1; 123 | 124 | // Update Input 125 | // The only non-SFML piece in this. GetKeyState has to be used instead of SFML's event handling unfortunately... 126 | if (withInput) { 127 | if (KEY_DOWN(VK_ESCAPE) || KEY_DOWN(VK_F5)) { 128 | if (!keyDown) { 129 | //visible = false; 130 | exitScene = true; 131 | keyDown = true; 132 | } 133 | } else if (KEY_DOWN(VK_LEFT)) { 134 | if (!keyDown) { 135 | reverseDir = true; 136 | _getAction(); 137 | keyDown = true; 138 | } 139 | } else if (KEY_DOWN(VK_RIGHT)) { 140 | if (!keyDown) { 141 | reverseDir = false; 142 | _getAction(); 143 | keyDown = true; 144 | } 145 | } else if (KEY_DOWN(VK_UP)) { 146 | if (!keyDown) { 147 | while (_options[action+1].disabled || !keyDown) { 148 | if (action > 0) action--; 149 | else action = _numOptions; 150 | keyDown = true; 151 | } 152 | } 153 | } else if (KEY_DOWN(VK_DOWN)) { 154 | if (!keyDown) { 155 | while (_options[action+1].disabled || !keyDown) { 156 | if (action < _numOptions) action++; 157 | else action = 0; 158 | keyDown = true; 159 | } 160 | } 161 | } else if (keyDown) keyDown = false; 162 | } 163 | 164 | // Update the menus if a key has been pressed 165 | if (keyDown) { 166 | if (action > _numOptions) action = _numOptions; 167 | updateMenu(); 168 | } 169 | 170 | } 171 | } 172 | 173 | void OptionsMenu::draw() 174 | { 175 | rendTex.clear(sf::Color::Transparent); 176 | rendTex.draw(_rect); 177 | 178 | if (_alpha == 255) { 179 | _selector.setPosition(_rect.getPosition().x, (_rect.getPosition().y + ((action+1)*_selector.getSize().y) + 2)); 180 | rendTex.draw(_selector); 181 | for (int i=0; i<_numOptions+2; i++) { 182 | _drawShadowed(_options[i].label); 183 | _drawShadowed(_options[i].pick); 184 | } 185 | } 186 | 187 | rendTex.display(); 188 | 189 | m_win->draw(spr); 190 | } 191 | 192 | void OptionsMenu::resetSprite() { 193 | spr.setScale(m_winsprite->getScale()); 194 | spr.setOrigin(m_winsprite->getOrigin()); 195 | spr.setPosition(m_winsprite->getPosition()); 196 | } 197 | 198 | void OptionsMenu::updateMenu() 199 | { 200 | if (confFullscreen) { 201 | if (confUseDesktopResolution) { 202 | config = OCFG_FULL_MAX; 203 | } else { 204 | config = OCFG_FULL_MIN; 205 | } 206 | } else { 207 | config = OCFG_WINDOWED; 208 | } 209 | 210 | // Update the main label 211 | _options[0].label.setString(translationMap["VideoOptions"]); 212 | 213 | _textItr = 1; 214 | for (auto it : _menus[config]) { 215 | _buildMenuOption(it); 216 | } 217 | } 218 | 219 | void OptionsMenu::_buildMenuOption(OptionsMenuActions_T &option) { 220 | switch (option) { 221 | case OMEN_USE_DIRECT_DRAW: { 222 | _options[_textItr].label.setString(translationMap["RenderMode"] + ":"); 223 | _options[_textItr].pick.setString(confUseDirectDraw ? translationMap["DirectDraw"] : translationMap["OpenGL"]); 224 | } break; 225 | 226 | case OMEN_DISPLAY_MODE: { 227 | _options[_textItr].label.setString(translationMap["DisplayMode"] + ":"); 228 | _options[_textItr].pick.setString(confFullscreen ? translationMap["Fullscreen"] : translationMap["Windowed"]); 229 | } break; 230 | 231 | case OMEN_WIN_RES: { 232 | _options[_textItr].label.setString(translationMap["WindowResolution"] + ":"); 233 | _optionsString.str(std::string()); 234 | _optionsString << 320*confWindowScale << " x " << 240*confWindowScale; 235 | _options[_textItr].pick.setString(_optionsString.str()); 236 | } break; 237 | 238 | case OMEN_USE_DESKTOP_RES: { 239 | _options[_textItr].label.setString(translationMap["UseDesktopResolution"] + ":"); 240 | _optionsString.str(std::string()); 241 | if (confUseDesktopResolution) { 242 | _optionsString << translationMap["Yes"] << " (" << sf::VideoMode::getDesktopMode().width << " x " << sf::VideoMode::getDesktopMode().height << ")"; 243 | } else { 244 | _optionsString << translationMap["No"] << " (" << _minFullscreenText << ")"; 245 | } 246 | _options[_textItr].pick.setString(_optionsString.str()); 247 | } break; 248 | 249 | case OMEN_ALLOW_UNEVEN_PIX: { 250 | _options[_textItr].label.setString(translationMap["AllowUnevenPixels"] + ":"); 251 | _options[_textItr].pick.setString(confAllowUnevenPixelSizes ? translationMap["Yes"] : translationMap["No"]); 252 | 253 | } break; 254 | 255 | case OMEN_IGNORE_ASPECT: { 256 | _options[_textItr].label.setString(translationMap["IgnoreAspectRatio"] + ":"); 257 | _options[_textItr].pick.setString(confIgnoreAspectRatio ? translationMap["Yes"] : translationMap["No"]); 258 | } break; 259 | 260 | case OMEN_USE_INTERPOLATION: { 261 | _options[_textItr].label.setString(translationMap["Interpolation"] + ":"); 262 | _options[_textItr].pick.setString(confUseInterpolation ? translationMap["Yes"] : translationMap["No"]); 263 | } break; 264 | 265 | case OMEN_USE_SHADERS: { 266 | std::string shaderNameAdjusted = shaderName; 267 | if (shaderName.size() >= 17) { 268 | shaderNameAdjusted = shaderNameAdjusted.substr(0, 17) + "..."; 269 | } 270 | _options[_textItr].label.setString(translationMap["Shader"] + ":"); 271 | _options[_textItr].pick.setString(confUseShaders ? shaderNameAdjusted : translationMap["None"]); 272 | } break; 273 | 274 | default: {} break; 275 | } 276 | 277 | if (_options[_textItr].disabled) { 278 | _options[_textItr].label.setFillColor(sf::Color(100,100,100,255)); 279 | _options[_textItr].pick.setFillColor(sf::Color(100,100,100,255)); 280 | } else if (option == _menus[config][action]) { 281 | _options[_textItr].label.setFillColor(sf::Color::White); 282 | _options[_textItr].pick.setFillColor(sf::Color::White); 283 | } else { 284 | _options[_textItr].label.setFillColor(sf::Color(200,200,200,255)); 285 | _options[_textItr].pick.setFillColor(sf::Color(200,200,200,255)); 286 | } 287 | 288 | _textItr++; 289 | } 290 | 291 | 292 | void OptionsMenu::_getAction() 293 | { 294 | switch(_menus[config][action]) { 295 | case OMEN_USE_DIRECT_DRAW: { 296 | 297 | } break; 298 | case OMEN_DISPLAY_MODE: { 299 | setFullscreen(!confFullscreen); 300 | } break; 301 | case OMEN_WIN_RES: { 302 | toggleWindowScale(); 303 | } break; 304 | case OMEN_USE_DESKTOP_RES: { 305 | setUseDesktopResolution(!confUseDesktopResolution); 306 | } break; 307 | case OMEN_USE_INTERPOLATION: { 308 | setInterpolation(!confUseInterpolation); 309 | } break; 310 | case OMEN_IGNORE_ASPECT: { 311 | setIgnoreAspectRatio(!confIgnoreAspectRatio); 312 | } break; 313 | case OMEN_ALLOW_UNEVEN_PIX: { 314 | setAllowUnevenPixels(!confAllowUnevenPixelSizes); 315 | } break; 316 | case OMEN_USE_SHADERS: { 317 | toggleShaders(); 318 | } break; 319 | default: {} break; 320 | } 321 | } 322 | 323 | void OptionsMenu::_drawShadowed(sf::Text &text) { 324 | float offsetX = 1.0; 325 | float offsetY = 1.0; 326 | 327 | _color = text.getFillColor(); 328 | _shadow = sf::Color::Black; 329 | 330 | text.setFillColor(_shadow); 331 | text.move(offsetX,offsetY); 332 | rendTex.draw(text); 333 | 334 | text.move(-offsetX,-offsetY); 335 | text.setFillColor(_color); 336 | rendTex.draw(text); 337 | } 338 | -------------------------------------------------------------------------------- /src/OptionsMenu.h: -------------------------------------------------------------------------------- 1 | #ifndef OPTIONS_MENU_H 2 | #define OPTIONS_MENU_H 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | #define KEY_DOWN(vkey) (GetKeyState(vkey) & 0x8000) 10 | 11 | #define RM_WIDTH 320 12 | #define RM_HEIGHT 240 13 | 14 | 15 | // Grab a bunch of shit from main.h 16 | extern std::map translationMap; 17 | extern int confWindowScale; 18 | extern bool confUseDirectDraw; 19 | extern bool confFullscreen; 20 | extern bool confEnableVSync; 21 | extern bool confUseDesktopResolution; 22 | extern bool confAllowUnevenPixelSizes; 23 | extern bool confUseInterpolation; 24 | extern bool confIgnoreAspectRatio; 25 | extern bool confUseShaders; 26 | extern int confShaderId; 27 | 28 | extern bool reverseDir; 29 | 30 | extern sf::RenderWindow *m_win; 31 | extern sf::Texture *m_wintexture; 32 | extern sf::Sprite *m_winsprite; 33 | 34 | extern std::string systemGraphic; 35 | extern std::string shaderName; 36 | 37 | //extern bool isWindowsVistaOrHigher(); 38 | 39 | extern void setDirectDraw(bool useDirectDraw); 40 | extern void setFullscreen(bool fullscreen); 41 | extern void toggleWindowScale(); 42 | //extern void setWindowScale(int scale); 43 | 44 | extern void setUseDesktopResolution(bool useDesktop); 45 | extern void setIgnoreAspectRatio(bool ignoreAspect); 46 | extern void setAllowUnevenPixels(bool allowUneven); 47 | extern void setInterpolation(bool interp); 48 | extern void toggleShaders(); 49 | 50 | class OptionsMenu { 51 | struct Option { 52 | sf::Text label; 53 | sf::Text pick; 54 | bool disabled; 55 | 56 | Option() { 57 | disabled = false; 58 | } 59 | }; 60 | 61 | enum OptionsMenuConfigs { 62 | OCFG_WINDOWED, 63 | OCFG_FULL_MIN, 64 | OCFG_FULL_MAX, 65 | NUM_CONFIGS 66 | }; 67 | 68 | typedef unsigned char OptionsMenuConfigs_T; 69 | 70 | enum OptionsMenuActions { 71 | OMEN_TITLE, 72 | OMEN_USE_DIRECT_DRAW, 73 | OMEN_DISPLAY_MODE, 74 | OMEN_WIN_RES, 75 | OMEN_USE_DESKTOP_RES, 76 | OMEN_ALLOW_UNEVEN_PIX, 77 | OMEN_IGNORE_ASPECT, 78 | OMEN_USE_INTERPOLATION, 79 | OMEN_USE_SHADERS, 80 | NUM_TEXT_LAYERS 81 | }; 82 | typedef unsigned char OptionsMenuActions_T; 83 | 84 | 85 | public: 86 | OptionsMenu(); 87 | 88 | sf::RenderTexture rendTex; 89 | sf::Sprite spr; 90 | 91 | int action; 92 | 93 | OptionsMenuConfigs_T config; 94 | 95 | bool visible; 96 | bool exitScene; 97 | bool keyDown; 98 | 99 | void init(); 100 | void update(bool withInput = true); 101 | void draw(); 102 | void resetSprite(); 103 | void updateMenu(); 104 | 105 | private: 106 | sf::RectangleShape _rect; 107 | sf::RectangleShape _selector; 108 | sf::Image _systemGraphicImage; 109 | sf::Font _font; 110 | sf::Color _color; 111 | sf::Color _shadow; 112 | 113 | Option _options[NUM_TEXT_LAYERS]; 114 | 115 | std::vector _menus[NUM_CONFIGS]; 116 | 117 | std::string _minFullscreenText; 118 | std::stringstream _optionsString; 119 | 120 | int _textLayers; 121 | int _visibleTimer; 122 | int _numOptions; 123 | int _fontSize; 124 | int _textItr; 125 | unsigned char _alpha; 126 | 127 | void _buildMenuOption(OptionsMenuActions_T &option); 128 | void _getAction(); 129 | void _drawShadowed(sf::Text &text); 130 | }; 131 | 132 | #endif // OPTIONS_MENU_H 133 | -------------------------------------------------------------------------------- /src/SFML-2.5.0-TDM-GCC-32.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rewrking/DynRPG-system-opengl/4b40569c53b8ad9a243c1ea652beb420df8b9b0c/src/SFML-2.5.0-TDM-GCC-32.7z -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | // OpenGL Renderer 2 | #include "main.h" 3 | 4 | 5 | /** \brief 640x480 is the minimum fullscreen resolution on Vista or higher, 6 | as opposed to using 320x240 on older machines 7 | \return true if Vista+ 8 | */ 9 | /*bool isWindowsVistaOrHigher() 10 | { 11 | OSVERSIONINFO osvi; 12 | ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); 13 | osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 14 | GetVersionEx(&osvi); 15 | return osvi.dwMajorVersion >= 6; 16 | }*/ 17 | 18 | 19 | /** \brief A simple find & replace function for strings. 20 | \param source The source string 21 | \param find The string of text to find 22 | \param replace The string of text to replace the found text with 23 | */ 24 | void findAndReplace(std::string& source, std::string const& find, std::string const& replace) 25 | { 26 | for(std::string::size_type i = 0; (i = source.find(find, i)) != std::string::npos;) { 27 | source.replace(i, find.length(), replace); 28 | i += replace.length(); 29 | } 30 | } 31 | 32 | 33 | /** \brief Sets a new key value to Settings.ini 34 | \param keyName The key to set 35 | \param value The new value 36 | */ 37 | void saveToIni(const char *keyName, const char *value, bool noSet) 38 | { 39 | // Sync both the ini to an RPG Maker variable from the keyMap 40 | int varId = configMap[keyName]; 41 | if (varId >= 0) RPG::variables[varId] = atoi(value); 42 | 43 | // Set the new ini value 44 | if (!noSet) { 45 | filePath.str(std::string()); 46 | filePath << gamePath << "\\" << gameIniFilename; 47 | WritePrivateProfileString(headerName, keyName, value, filePath.str().c_str()); 48 | } 49 | } 50 | 51 | 52 | /** \brief Gets the value from a key in Settings.ini 53 | \param keyName The key to get 54 | */ 55 | int getFromIni(const char *keyName) 56 | { 57 | // get the ini value 58 | filePath.str(std::string()); 59 | filePath << gamePath << "\\" << gameIniFilename; 60 | return GetPrivateProfileInt(headerName, keyName, 0, filePath.str().c_str()); 61 | } 62 | 63 | void getDesktopWidth() 64 | { 65 | desktopWidth = sf::VideoMode::getDesktopMode().width; 66 | desktopHeight = sf::VideoMode::getDesktopMode().height; 67 | } 68 | 69 | 70 | /** \brief This is where the proverbial magic happens. It takes the 16-bit RM2k3 canvas at 71 | the current frame, converts it to 24bit and copies the pixel values to a Uint8 72 | array that SFML can then read and update it's texture with 73 | \param texture An SFML texture object to copy the RM2k3 pixels to 74 | */ 75 | bool SFMLLoadScreenAsImage(sf::Texture *&texture) 76 | { 77 | // Store the canvas data of the current frame to a buffer 78 | // The buffer is a pointer to RPG::screen->canvas->getScanline(239) that is initialized when the game boots 79 | 80 | // This is a pointer to each rgba value in the new 24-bit buffer 81 | int lpPixPointer = 0; 82 | for(int y=0; ycanvas->convert16To24Bit(buffer[x + RM_WIDTH * (239 - y)]); 86 | sfmlImageBuffer[lpPixPointer] = hexValue; // red 87 | sfmlImageBuffer[lpPixPointer+1] = hexValue >> 8; // green 88 | sfmlImageBuffer[lpPixPointer+2] = hexValue >> 16; // blue 89 | sfmlImageBuffer[lpPixPointer+3] = 255; // alpha 90 | lpPixPointer+=4; 91 | } 92 | } 93 | 94 | // Update the SFML texture 95 | // This new texture is still 320x240, and will get scaled up later using SFML functions 96 | texture->update(sfmlImageBuffer); 97 | return true; 98 | } 99 | 100 | 101 | /** \brief Toggles RM2k3's original DirectDraw mode (experimental) 102 | \param useDirectDraw true will turn DirectDraw back on, false will switch to OpenGL 103 | */ 104 | void setDirectDraw(bool useDirectDraw) 105 | { 106 | if (useDirectDraw) { 107 | // Close out the OpenGL renderer 108 | if (useOpenGl) { 109 | if (m_win->isOpen()) { 110 | m_win->close(); 111 | ShowWindow(GetParent(RPG::screen->getCanvasHWND()),SW_SHOW); 112 | SetActiveWindow(GetParent(GetParent(RPG::screen->getCanvasHWND()))); 113 | } 114 | confUseDirectDraw = true; 115 | } 116 | // Reset the window size closest to the OpenGL one 117 | originalSetLargeWindow(confWindowScale >= 2); 118 | } else { 119 | // Force windowed mode & initialize OpenGL 120 | originalSetFullscreen(false); 121 | confUseDirectDraw = false; 122 | //_setWindowed(confWindowScale); 123 | } 124 | 125 | useOpenGl = !confUseDirectDraw; 126 | openGlStartup = false; 127 | 128 | saveToIni("UseDirectDraw", confUseDirectDraw ? "1" : "0"); 129 | } 130 | 131 | 132 | /** \brief This is how the new renderer goes into fullscreen mode 133 | */ 134 | void _setFullscreen() 135 | { 136 | // Max resolution is more crisp, but adheres to scaling rules (uneven pixels at some resolutions, etc) 137 | if (confUseDesktopResolution) { 138 | 139 | // Recreate the window object based on the fullscreen resolution 140 | m_win->create(sf::VideoMode(desktopWidth, desktopHeight), gameTitle, sf::Style::Fullscreen); 141 | } else { 142 | 143 | //bool large = isWindowsVistaOrHigher(); 144 | bool large = true; 145 | int scale = large ? 2 : 1; 146 | 147 | int width = m_wintexture->getSize().x*scale; // 320 or 640 148 | int height = m_wintexture->getSize().y*scale; // 240 or 480 149 | 150 | // Recreate the window based on the minimum fullscreen resolution 151 | m_win->create(sf::VideoMode(width, height), gameTitle, sf::Style::Fullscreen); 152 | } 153 | 154 | ShowWindow(GetParent(GetParent(RPG::screen->getCanvasHWND())),SW_HIDE); 155 | 156 | // Hide the mouse cursor & turn on V-Sync 157 | m_win->setMouseCursorVisible(false); 158 | m_win->setVerticalSyncEnabled(confEnableVSync); 159 | 160 | // Save Settings.ini 161 | confFullscreen = true; 162 | saveToIni("Fullscreen", "1"); 163 | 164 | // Reset the shader if necessary 165 | setCurrentShader(); 166 | } 167 | 168 | 169 | /** \brief This is how the new renderer goes into windowed mode 170 | \param scale The window's "scale" is determined by toggleWindowScale function 171 | */ 172 | void _setWindowed(int scale) 173 | { 174 | // Set the size of the window based on the scale. It'll always be based on square pixels (1x, 2x, 3x, etc) 175 | m_win->setSize(sf::Vector2u(m_wintexture->getSize().x*scale, m_wintexture->getSize().y*scale)); 176 | 177 | // Creates the new SFML/OpenGL window inside of the old 2k3 one 178 | m_win->create(GetParent(GetParent(RPG::screen->getCanvasHWND()))); 179 | 180 | // Make the mouse visible in windowed mode 181 | m_win->setMouseCursorVisible(true); 182 | m_win->setVerticalSyncEnabled(confEnableVSync); 183 | // Sets the game title 184 | m_win->setTitle(gameTitle); 185 | 186 | // This centers the window onto the screen (based on the updated size) 187 | // GetSystemMetrics() gets the width of the window border features (titlebar, etc) 188 | int posX = (desktopWidth/2)-((m_win->getSize().x + GetSystemMetrics(SM_CXBORDER)*2)/2); 189 | int posY = (desktopHeight/2)-((m_win->getSize().y + GetSystemMetrics(SM_CYBORDER)*4 + GetSystemMetrics(SM_CYCAPTION))/2); 190 | m_win->setPosition(sf::Vector2i(posX, posY)); 191 | 192 | if (openGlStartup) { 193 | confFullscreen = false; 194 | saveToIni("Fullscreen", "0", confStartFullscreen); 195 | } 196 | } 197 | 198 | 199 | /** \brief Toggles between fullscreen & windowed mode 200 | \param fullscreen The new mode. true if fullscreen, false if windowed 201 | */ 202 | void setFullscreen(bool fullscreen) 203 | { 204 | if (useOpenGl) { 205 | // OpenGL version 206 | confFullscreen = fullscreen; 207 | if (confFullscreen) { 208 | _setFullscreen(); 209 | } else { 210 | _setWindowed(confWindowScale); 211 | } 212 | 213 | // Update the video options menu immediately after 214 | if (videoOptions->visible) { 215 | videoOptions->update(false); 216 | } 217 | 218 | } else { 219 | // DirectDraw version (could be called from a comment command 220 | directDrawIsFullscreen = fullscreen; 221 | originalSetFullscreen(directDrawIsFullscreen); 222 | 223 | int varId = configMap["Fullscreen"]; 224 | if (varId >= 0) RPG::variables[varId] = directDrawIsFullscreen; 225 | } 226 | } 227 | 228 | 229 | /** \brief This is how the new renderer goes into windowed mode. The window's "scale" is determined 230 | by the maximum resolution the display can support, so if you have a 1920x1080 monitor, 231 | the max pixel-perfect scale is 4x (1280x1024), wheras 1920x1200 is 5x (1600x1200), 232 | 4K (untested) is 9x (2880x2160), etc. 233 | */ 234 | void toggleWindowScale() 235 | { 236 | if (useOpenGl) { 237 | // Fullscreen mode uses different config options as windowed mode, so act accordingly 238 | if (confFullscreen) { 239 | if (confUseDesktopResolution) { 240 | // Toggle between pixel-perfect scale (1x, 2x, 3x, etc.), scale with correct aspect ratio (ex: 4.5x in 1080p screens), 241 | // and "ignore aspect ratio" aka fill the entire resolution with no black bars (which is just plain evil) 242 | if (!confAllowUnevenPixelSizes) { 243 | confAllowUnevenPixelSizes = true; 244 | confIgnoreAspectRatio = false; 245 | } else { 246 | if (!confIgnoreAspectRatio) confIgnoreAspectRatio = true; 247 | else { 248 | confIgnoreAspectRatio = false; 249 | confAllowUnevenPixelSizes = false; 250 | } 251 | } 252 | 253 | // Save the "allow uneven pixel sizes" boolean to Settings.ini 254 | saveToIni("AllowUnevenPixelSizes", confAllowUnevenPixelSizes ? "1" : "0"); 255 | 256 | // Save the "ignore aspect ratio" boolean to Settings.ini 257 | saveToIni("IgnoreAspectRatio", confIgnoreAspectRatio ? "1" : "0"); 258 | } 259 | 260 | } else { 261 | // Get the maximum allowed pixel-perfect scale from the desktop resolution 262 | // Having this here and not on startup ensures it's always up-to-date based on the current desktop resolution 263 | int maxScale = 1; 264 | if (desktopWidth >= desktopHeight) { 265 | maxScale = desktopHeight/m_wintexture->getSize().y; 266 | } else { 267 | // If the monitor is sideways (ex: 1080x1920) like some kind of monster, base the maxScale on the width 268 | maxScale = desktopWidth/m_wintexture->getSize().y; 269 | } 270 | 271 | // Cycle between scales accordingly based on the maxScale 272 | if (reverseDir) { 273 | if (confWindowScale > 1) confWindowScale--; 274 | else confWindowScale = maxScale; 275 | } else { 276 | if (confWindowScale < maxScale) confWindowScale++; 277 | else confWindowScale = 1; 278 | } 279 | _setWindowed(confWindowScale); 280 | 281 | // Save the last used zoom mode to the Settings.ini 282 | std::stringstream temp; 283 | temp << confWindowScale; 284 | saveToIni("WindowScale", temp.str().c_str()); 285 | } 286 | 287 | } else { 288 | // DirectDraw mode detected, so use the original functions 289 | if (directDrawIsLargeWindow) originalSetLargeWindow(false); 290 | else originalSetLargeWindow(true); 291 | } 292 | } 293 | 294 | 295 | /** \brief Sets the window to a particular scale. 296 | \param scale The new scale 297 | */ 298 | void setWindowScale(int scale) 299 | { 300 | if (useOpenGl) { 301 | if (!confFullscreen) { 302 | int maxScale = sf::VideoMode::getDesktopMode().height/RM_HEIGHT; 303 | 304 | if (scale > 0 && scale <= maxScale) { 305 | confWindowScale = scale; 306 | _setWindowed(confWindowScale); 307 | } 308 | 309 | // Save the last used zoom mode to the Settings.ini 310 | std::stringstream temp; 311 | temp << confWindowScale; 312 | saveToIni("WindowScale", temp.str().c_str()); 313 | } 314 | } 315 | } 316 | 317 | 318 | /** \brief Sets the "use desktop resolution" config to a new value 319 | \param useDesktop The new "use desktop resolution" setting 320 | */ 321 | void setUseDesktopResolution(bool useDesktop) 322 | { 323 | if (useOpenGl) { 324 | confUseDesktopResolution = useDesktop; 325 | 326 | // Refresh the fullscreen mode 327 | _setFullscreen(); 328 | 329 | // Save the max resolution setting to the Settings.ini 330 | saveToIni("UseDesktopResolution", confUseDesktopResolution ? "1" : "0"); 331 | } 332 | } 333 | 334 | 335 | /** \brief Sets the "ignore aspect ratio" config to a new value 336 | \param ignoreAspect The new "ignore aspect ratio" setting 337 | */ 338 | void setIgnoreAspectRatio(bool ignoreAspect) 339 | { 340 | if (useOpenGl) { 341 | confIgnoreAspectRatio = ignoreAspect; 342 | 343 | // If the new ignore aspect value is true, set uneven pixels to true as well 344 | if (confFullscreen && confIgnoreAspectRatio) { 345 | confAllowUnevenPixelSizes = true; 346 | } 347 | 348 | // Save both updated settings to the Settings.ini 349 | saveToIni("IgnoreAspectRatio", confIgnoreAspectRatio ? "1" : "0"); 350 | saveToIni("AllowUnevenPixelSizes", confAllowUnevenPixelSizes ? "1" : "0"); 351 | } 352 | } 353 | 354 | 355 | /** \brief Sets the "allow uneven pixels" config to a new value 356 | \param allowUneven The new "allow uneven pixels" setting 357 | */ 358 | void setAllowUnevenPixels(bool allowUneven) 359 | { 360 | if (useOpenGl) { 361 | confAllowUnevenPixelSizes = allowUneven; 362 | 363 | // If the new uneven pixels value is false, set ignore aspect to false as well 364 | if (confFullscreen && !confAllowUnevenPixelSizes) { 365 | confIgnoreAspectRatio = false; 366 | } 367 | 368 | // Save both updated settings to the Settings.ini 369 | saveToIni("IgnoreAspectRatio", confIgnoreAspectRatio ? "1" : "0"); 370 | saveToIni("AllowUnevenPixelSizes", confAllowUnevenPixelSizes ? "1" : "0"); 371 | } 372 | } 373 | 374 | 375 | /** \brief Sets interpolation to a new value 376 | \param interp The new interpolation setting 377 | */ 378 | void setInterpolation(bool interp) 379 | { 380 | if (useOpenGl) { 381 | confUseInterpolation = interp; 382 | 383 | // Done via SFML's setSmooth 384 | m_wintexture->setSmooth(confUseInterpolation); 385 | 386 | // Save the last used interpolation mode to the Settings.ini 387 | saveToIni("UseInterpolation", confUseInterpolation ? "1" : "0"); 388 | } 389 | } 390 | 391 | 392 | /** \brief Toggles between the shaders defined in the DynRPG.ini file 393 | */ 394 | void toggleShaders() 395 | { 396 | if (useOpenGl) { 397 | if (confNumShaders > 0) { 398 | // reverse direction 399 | if (reverseDir) { 400 | if (confShaderId <= 0) { 401 | confUseShaders = true; 402 | confShaderId = confNumShaders; 403 | } else { 404 | confShaderId--; 405 | if (confShaderId == 0) confUseShaders = false; 406 | } 407 | // normal direction 408 | } else { 409 | if (confShaderId >= confNumShaders) { 410 | confUseShaders = false; 411 | confShaderId = 0; 412 | } else { 413 | confShaderId++; 414 | if (confShaderId == 1) confUseShaders = true; 415 | } 416 | } 417 | // Set the new shader here 418 | setCurrentShader(); 419 | } else { 420 | confUseShaders = false; 421 | } 422 | 423 | // Saves whether shaders should be turned on or off 424 | std::stringstream temp1; 425 | temp1 << confUseShaders; 426 | saveToIni("UseShaders", temp1.str().c_str()); 427 | 428 | // Saves the shader's ID 429 | std::stringstream temp2; 430 | temp2 << confShaderId; 431 | saveToIni("ShaderId", temp2.str().c_str()); 432 | } 433 | } 434 | 435 | 436 | /** \brief Sets the current shader that has been selected & stores the name (without underscores) 437 | */ 438 | void setCurrentShader() 439 | { 440 | if (confUseShaders) { 441 | // Create a temporary string to load things from the Settings.ini 442 | std::stringstream shaderString; 443 | shaderString << "Shader" << confShaderId; 444 | 445 | // Initialization of the current shader 446 | // Store the name (with underscores at this point 447 | shaderName = configuration[shaderString.str()]; 448 | 449 | // Find out if a fragment & vertex shader has been defined 450 | bool shaderFrag = configuration[shaderString.str() + "frag"] == "true"; 451 | bool shaderVert = configuration[shaderString.str() + "vert"] == "true"; 452 | 453 | // This is the SFML way of loading each shader type 454 | // Both fragment & vertex 455 | if (shaderFrag && shaderVert) { 456 | m_winshader->loadFromFile("Shaders\\" + shaderName + ".vert", "Shaders\\" + shaderName + ".frag"); 457 | // Fragment 458 | } else if (shaderFrag) { 459 | m_winshader->loadFromFile("Shaders\\" + shaderName + ".frag", sf::Shader::Fragment); 460 | // Vertex 461 | } else if (shaderVert) { 462 | m_winshader->loadFromFile("Shaders\\" + shaderName + ".vert", sf::Shader::Vertex); 463 | } 464 | 465 | // A "texture_dimensions" uniform is required for pixel shaders, so it will almost always be needed 466 | bool shaderUseTexDims = configuration[shaderString.str() + "useTexDims"] == "true"; 467 | if (shaderUseTexDims) { 468 | m_winshader->setUniform("texture_dimensions", sf::Glsl::Vec2(m_wintexture->getSize().x, m_wintexture->getSize().y)); 469 | } 470 | 471 | // Get the rest of the uniforms that are set in the Settings.ini (lots of room for improvement here since shaders are their own animal) 472 | int shaderNumFloatParams = atoi(configuration["numFloatParams"].c_str()); 473 | for (int i=1; i <= shaderNumFloatParams; i++) { 474 | std::stringstream temp2name; 475 | temp2name << shaderString.str() << "paramFloat" << i << "name"; 476 | m_winshader->setUniform(configuration[temp2name.str()], shaderParams[configuration[temp2name.str()]]); 477 | } 478 | 479 | // Replace the underscores with spaces in the shader name so it can be referenced by menus 480 | findAndReplace(shaderName, "_", " "); 481 | } 482 | } 483 | 484 | 485 | /** \brief Creates a screenshot 486 | \param texture The SFML texture to be set as the screenshot 487 | */ 488 | void printScreen(sf::Texture *&texture) 489 | { 490 | if (useOpenGl) { 491 | 492 | // Supports 10000 screenshots (0000 to 9999), but won't actually loop this many times unless you have that many 493 | for (int i=0; i<10000; i++) { 494 | std::stringstream screenFilename; 495 | screenFilename << confScreenshotPath; 496 | // Add a backslash to the filepath if it's not present 497 | if (confScreenshotPath[confScreenshotPath.length()-1] != '\\') screenFilename << "\\"; 498 | screenFilename << "Screenshot"; 499 | if (i < 1000) screenFilename << "0"; 500 | if (i < 100) screenFilename << "0"; 501 | if (i < 10) screenFilename << "0"; 502 | screenFilename << i << ".png"; 503 | // FindFirstFile function load 504 | WIN32_FIND_DATA lpFindFileData; 505 | HANDLE hFind; 506 | // Find the file defined in char "saveGlobalPath" 507 | hFind = FindFirstFile(screenFilename.str().c_str(), &lpFindFileData); 508 | if(hFind != INVALID_HANDLE_VALUE) { 509 | FindClose(hFind); 510 | } else { 511 | // Use SFML's copyToImage & saveToFile functions to do the hard stuff 512 | texture->copyToImage().saveToFile(screenFilename.str()); 513 | break; 514 | } 515 | } 516 | } 517 | } 518 | 519 | 520 | /** \brief Calls the OpenGL Video Options menu, but excludes certain scenes 521 | */ 522 | void openGlMenuCall() 523 | { 524 | // Exclude the GameJolt menu (DynRPG plugin) since it causes some game-breaking bugs from scene switching 525 | if (RPG::system->scene != RPG::SCENE_GAMEJOLT) { 526 | // Also exclude the battle scene in certain phases for the similar reasons 527 | if (RPG::system->scene == RPG::SCENE_BATTLE) { 528 | if ((!RPG::battleData->isVictory) && RPG::battleData->battlePhase == RPG::BPHASE_BATTLE) 529 | startOpenGlMenu(); 530 | } else startOpenGlMenu(); 531 | } 532 | } 533 | 534 | 535 | /** \brief Initializes the OpenGL Video Options menu 536 | */ 537 | void startOpenGlMenu() 538 | { 539 | if (useOpenGl) { 540 | // Copies a freeze frame of the current scene before switching to the new scene 541 | memcpy(sceneBuffer, RPG::screen->canvas->getScanline(239), RM_WIDTH * RM_HEIGHT * 2); 542 | videoOptions->init(); 543 | 544 | // Store the old scene & switch to the new one 545 | lastScene = RPG::system->scene; 546 | RPG::system->scene = sceneOpenGl; 547 | } 548 | } 549 | 550 | 551 | /** \brief Function used to halt OpenGL stuff before quitting 552 | */ 553 | void exitOpenGl() 554 | { 555 | if (useOpenGl) { 556 | // Switch to a window 557 | if (confFullscreen) _setWindowed(confWindowScale); 558 | // Prevent updating 559 | isQuitting = true; 560 | // Close 561 | if (m_win->isOpen()) m_win->close(); 562 | useOpenGl = false; 563 | } 564 | } 565 | 566 | 567 | /** \brief Original setFullscreen function 568 | \param fullscreen 569 | */ 570 | void originalSetFullscreen(bool fullscreen) { 571 | asm volatile( 572 | "call 1f; \ 573 | jmp 2f; \ 574 | 1:; \ 575 | push %%ebx; \ 576 | push %%esi; \ 577 | addl $-8, %%esp; \ 578 | movl %%edx, %%ebx; \ 579 | movl %%eax, %%esi; \ 580 | cmpb 0x3C(%%esi), %%bl; \ 581 | jmp *%%edi; \ 582 | 2:" 583 | : "=a" (RPG::_eax), "=d" (RPG::_edx) 584 | : "D" (0x46B2A8), "a" (RPG::screen), "d" (fullscreen) 585 | : "ecx", "cc", "memory" 586 | ); 587 | RPG::screen->fullScreen = fullscreen; 588 | directDrawIsFullscreen = fullscreen; 589 | }; 590 | 591 | 592 | /** \brief Hooked setFullscreen function 593 | \param fullscreen 594 | */ 595 | void __stdcall hookedSetFullscreen(bool fullscreen) { 596 | // Only use the original function if in DirectDrawMode 597 | if (confUseDirectDraw) originalSetFullscreen(fullscreen); 598 | }; 599 | 600 | 601 | /** \brief Original setLargeWindow function 602 | \param largeWindow 603 | */ 604 | void originalSetLargeWindow(bool largeWindow) { 605 | asm volatile( 606 | "call 1f; \ 607 | jmp 2f; \ 608 | 1:; \ 609 | push %%esi; \ 610 | push %%edi; \ 611 | addl $-16, %%esp; \ 612 | movl %%eax, %%esi; \ 613 | cmpb 0x3D(%%esi), %%bl; \ 614 | jmp *%%ebx; \ 615 | 2:" 616 | : "=a" (RPG::_eax), "=d" (RPG::_edx) 617 | : "b" (0x46B40A), "a" (RPG::screen), "d" (largeWindow) 618 | : "ecx", "cc", "memory" 619 | ); 620 | RPG::screen->largeWindow = largeWindow; 621 | directDrawIsLargeWindow = largeWindow; 622 | }; 623 | 624 | 625 | /** \brief Hooked setLargeWindow function 626 | \param largeWindow 627 | */ 628 | void __stdcall hookedSetLargeWindow(bool largeWindow) { 629 | // Only use the original function if in DirectDrawMode 630 | if (confUseDirectDraw) originalSetLargeWindow(largeWindow); 631 | }; 632 | 633 | 634 | /** =================================================================================================== 635 | RM2003/DynRPG Callbacks 636 | */ 637 | bool onStartup(char *pluginName) 638 | { 639 | // Get configuration settings for key variables 640 | configuration = RPG::loadConfiguration(pluginName); 641 | GetCurrentDirectory(MAX_PATH, gamePath); 642 | gameIniFilename = configuration["GameIniFilename"]; 643 | confNumShaders = atoi(configuration["NumShaders"].c_str()); 644 | confDisableVideoMenu = configuration["DisableVideoMenu"] == "true"; 645 | 646 | // Settings.ini 647 | configGame = RPG::loadConfiguration(headerName, &gameIniFilename[0]); 648 | confUseDirectDraw = atoi(configGame["UseDirectDraw"].c_str()); 649 | confFullscreen = atoi(configGame["Fullscreen"].c_str()); 650 | confStartFullscreen = atoi(configGame["StartFullscreen"].c_str()); 651 | confEnableVSync = atoi(configGame["EnableVSync"].c_str()); 652 | confUseDesktopResolution = atoi(configGame["UseDesktopResolution"].c_str()); 653 | confAllowUnevenPixelSizes = atoi(configGame["AllowUnevenPixelSizes"].c_str()); 654 | confUseInterpolation = atoi(configGame["UseInterpolation"].c_str()); 655 | confIgnoreAspectRatio = atoi(configGame["IgnoreAspectRatio"].c_str()); 656 | confWindowScale = atoi(configGame["WindowScale"].c_str()); 657 | confScreenshotPath = configGame["ScreenshotPath"]; 658 | confUseShaders = atoi(configGame["UseShaders"].c_str()) == 1; 659 | confShaderId = atoi(configGame["ShaderId"].c_str()); 660 | confTranslation = configGame["Translation"].c_str(); 661 | 662 | // Handle translations 663 | std::stringstream translationFile; 664 | translationFile << "DynPlugins\\" << pluginName << "_translation.ini"; 665 | translationMap = RPG::loadConfiguration(&confTranslation[0], &translationFile.str()[0]);; 666 | 667 | // These basically serve the same purpose, but useOpenGl is less confusing to read eveywhere 668 | useOpenGl = !confUseDirectDraw; 669 | 670 | if (confUseShaders) { 671 | // Make sure the current shader ID is no larger than the maximum 672 | if (confShaderId > confNumShaders) 673 | confShaderId = confNumShaders; 674 | } 675 | 676 | // Get the desktop width/height before anything else has loaded 677 | getDesktopWidth(); 678 | 679 | // Make sure the scale is no greater than the max scale 680 | int maxScale = desktopHeight/RM_HEIGHT; 681 | if (confWindowScale > 0) { 682 | if (confWindowScale > maxScale) confWindowScale = maxScale; 683 | } 684 | 685 | // HERE BE DRAGONS!!! 686 | //******************************************************************** 687 | // the following cast forces RPG_RT.exe to start in a window 688 | // (which is later fullscreened based on the ini settings 689 | *reinterpret_cast(0x48FA57) = 0x9090; 690 | //******************************************************************** 691 | // This hides the gray border 692 | *reinterpret_cast(0x46A91C) = 0x00; 693 | *reinterpret_cast(0x46B8CA) = 0x00; 694 | *reinterpret_cast(0x46B38B) = 0x00; 695 | *reinterpret_cast(0x46B3A5) = 0x00; 696 | //******************************************************************** 697 | 698 | // --Debugging console-- 699 | /*AllocConsole(); 700 | AttachConsole(GetCurrentProcessId()); 701 | freopen("CON", "w", stdout); 702 | printf("%s\n",pluginName);*/ 703 | 704 | return true; 705 | } 706 | 707 | void onInitFinished() { 708 | // HERE BE MORE DRAGONS!!! 709 | //******************************************************************** 710 | // Hiding the window parents are generally for presentation purposes, but this one in particular speeds up the initial fullscreen 711 | if (useOpenGl) ShowWindow(GetParent(RPG::screen->getCanvasHWND()),SW_HIDE); 712 | 713 | buffer = static_cast(malloc(RM_WIDTH * RM_HEIGHT * 2)); 714 | sceneBuffer = static_cast(malloc(RM_WIDTH * RM_HEIGHT * 2)); 715 | 716 | // Prevent the old F4 + F5 behavior (Thanks Cherry) 717 | // Install toggleFullscreen hook 718 | *reinterpret_cast(0x46B29C) = 0xB8515259; 719 | *reinterpret_cast(0x46B2A0) = (void*)&hookedSetFullscreen; 720 | *reinterpret_cast(0x46B2A4) = 0xE0FF; 721 | 722 | // Install toggleLargeWindow hook 723 | *reinterpret_cast(0x46B400) = 0xB8515259; 724 | *reinterpret_cast(0x46B404) = (void*)&hookedSetLargeWindow; 725 | *reinterpret_cast(0x46B408) = 0xE0FF; 726 | //******************************************************************** 727 | 728 | // Get the game title from the map tree to use for the window's title bar 729 | gameTitle = RPG::mapTree->properties[0]->name.s_str(); 730 | 731 | // Create SFML pointers 732 | m_win = new sf::RenderWindow(); 733 | m_winevent = new sf::Event(); 734 | m_wintexture = new sf::Texture(); 735 | m_winsprite = new sf::Sprite(); 736 | m_winshader = new sf::Shader(); 737 | 738 | // Custom Video Options menu 739 | videoOptions = new OptionsMenu(); 740 | 741 | m_wintexture->create(RM_WIDTH, RM_HEIGHT); 742 | m_winsprite->setTexture(*m_wintexture); 743 | m_winsprite->setOrigin(m_wintexture->getSize().x/2,m_wintexture->getSize().y/2); 744 | 745 | int pixelArraySize = (RPG::screen->canvas->width()*RPG::screen->canvas->height())*4; 746 | sfmlImageBuffer = new sf::Uint8[pixelArraySize]; 747 | 748 | systemGraphic = RPG::system->systemGraphicFilename.s_str(); 749 | } 750 | 751 | // I don't remember why this was here, but it's been commented out for a long time, so it's probably not needed 752 | /*void onInitTitleScreen() { 753 | //uint8_t &rmWindowActive = (**reinterpret_cast(0x4CDE78))[157]; 754 | //rmWindowActive = 1; 755 | }*/ 756 | 757 | void onDrawScreen() { 758 | // This startup section is shared between OpenGL & the old DirectDraw renderer 759 | // In DD mode, it will go to fullscreen if Fullscreen=1 in Settings.ini 760 | if (!openGlStartup) { 761 | // Initialize the main buffer pointer. We use this to capture the screen later on 762 | buffer = RPG::screen->canvas->getScanline(239); 763 | 764 | if (useOpenGl) { 765 | ShowWindow(GetParent(RPG::screen->getCanvasHWND()),SW_HIDE); 766 | // Calling this twice is a hacky way to force the window frame to fit to the game's edge 767 | // This is one of the mysteries of this plugin 768 | _setWindowed(1); 769 | _setWindowed(confWindowScale); 770 | 771 | // Set the shader if it's enabled 772 | setCurrentShader(); 773 | setInterpolation(confUseInterpolation); 774 | } 775 | if (confFullscreen) { 776 | if (useOpenGl) { 777 | _setFullscreen(); 778 | } else { 779 | originalSetFullscreen(true); 780 | } 781 | } 782 | openGlStartup = true; 783 | } 784 | 785 | 786 | // Main Draw section 787 | //******************************************************************** 788 | if (m_win->isOpen() && useOpenGl) { 789 | 790 | // If in the Video Options scene, copy the main buffer to the sceneBuffer 791 | if (RPG::system->scene == sceneOpenGl) { 792 | memcpy(buffer, sceneBuffer, RM_WIDTH * RM_HEIGHT * 2); 793 | } 794 | 795 | // For Alt+F4 event 796 | if (m_win->pollEvent(*m_winevent)) { 797 | if (m_winevent->type == sf::Event::Closed) { 798 | RPG::quitGame(); 799 | } 800 | } 801 | 802 | if (!isQuitting) { 803 | 804 | // Copy the RPG Maker frame to a SFML texture 805 | if(!SFMLLoadScreenAsImage(m_wintexture)) { 806 | printf("Error loading the image from Rm2k3!\n"); 807 | } 808 | 809 | //setCurrentShader(); 810 | 811 | // Key inputs 812 | // I'd rather use sf::Event for these, but 2k3's main process overrides them 813 | altDown = KEY_DOWN(VK_LMENU) || KEY_DOWN(VK_RMENU); 814 | // F4 key, or Alt+Enter 815 | if ((KEY_DOWN(VK_F4) && !altDown) || (altDown && KEY_DOWN(VK_RETURN))) { 816 | if (!keyDown) { 817 | setFullscreen(!confFullscreen); 818 | if (videoOptions->visible) videoOptions->updateMenu(); 819 | keyDown = true; 820 | } 821 | // F5 key 822 | } else if (KEY_DOWN(VK_F5)) { 823 | if (!keyDown) { 824 | if (!confDisableVideoMenu && !videoOptions->visible && !playingMovie) openGlMenuCall(); 825 | keyDown = true; 826 | } 827 | // Perfect screenshot capturing (set to "Print Screen" key 828 | } else if (KEY_DOWN(VK_SNAPSHOT) && !KEY_DOWN(VK_LMENU)) { 829 | if (!keyDown) { 830 | printScreen(m_wintexture); 831 | keyDown = true; 832 | } 833 | } else if (keyDown) keyDown = false; 834 | 835 | // Clear the new renderer screen every frame 836 | m_win->clear(sf::Color::Black); 837 | 838 | // Set the scaling & sprite position of the main window sprite 839 | if (confFullscreen && confUseDesktopResolution) { 840 | m_winsprite->setPosition(desktopWidth*0.5, desktopHeight*0.5); 841 | if (!confAllowUnevenPixelSizes) { 842 | // pixel perfect scaling 843 | int perfectScale = desktopHeight/m_wintexture->getSize().y; 844 | m_winsprite->setScale(perfectScale,perfectScale); 845 | } else { 846 | // pleb scaling 847 | float plebScale = desktopHeight/(static_cast(m_wintexture->getSize().y)); 848 | float plebARignore = desktopWidth/(static_cast(m_wintexture->getSize().x)); 849 | if (confIgnoreAspectRatio) { 850 | m_winsprite->setScale(plebARignore,plebScale); 851 | } else { 852 | m_winsprite->setScale(plebScale,plebScale); 853 | } 854 | } 855 | } else { 856 | // Windowed mode or Fullscreen mode @ 640x480 857 | m_winsprite->setPosition(m_win->getSize().x/2, m_win->getSize().y/2); 858 | if (!confFullscreen) m_winsprite->setScale(confWindowScale,confWindowScale); 859 | else m_winsprite->setScale(m_win->getSize().x/RM_WIDTH, m_win->getSize().y/RM_HEIGHT); 860 | } 861 | 862 | // Draw the sprite (aka what RM2k3 is being drawn onto) 863 | // With shader 864 | if (confUseShaders) m_win->draw(*m_winsprite, *&m_winshader); 865 | // Without shader 866 | else m_win->draw(*m_winsprite); 867 | 868 | 869 | if (playingMovie) { 870 | m_win->clear(sf::Color::Black); 871 | 872 | if (!RPG::screen->movieIsPlaying) { 873 | playingMovie = false; 874 | 875 | HWND winContext = GetParent(RPG::screen->getCanvasHWND()); 876 | if (confFullscreen) { 877 | m_win->setVisible(true); 878 | SetWindowPos(winContext, HWND_TOP, 0, 0, RM_WIDTH*confWindowScale, RM_HEIGHT*confWindowScale, SWP_FRAMECHANGED); 879 | ShowWindow(GetParent(winContext), SW_HIDE); 880 | } else { 881 | ShowWindow(winContext, SW_HIDE); 882 | } 883 | } 884 | } 885 | 886 | // Update & draw Video Options menu 887 | if (videoOptions->visible) { 888 | // 2k3 sadly doesn't differentiate between update/draw very well, so both are called here 889 | videoOptions->update(); 890 | videoOptions->draw(); 891 | 892 | if (videoOptions->exitScene && !videoOptions->keyDown) { 893 | videoOptions->visible = false; 894 | if (lastScene < 30) { 895 | RPG::system->scene = lastScene; 896 | } 897 | } 898 | } 899 | 900 | // end the current frame & display the render window 901 | m_win->display(); 902 | } 903 | } 904 | } 905 | 906 | bool onEventCommand(RPG::EventScriptLine *scriptLine, RPG::EventScriptData *scriptData, 907 | int eventId, int pageId, int lineId, int *nextLineId) 908 | { 909 | // HERE BE A TINY DRAGON!! 910 | //******************************************************************** 911 | // If someone accidentally left a Better AEP patch, this prevents it from running (Thanks Cherry) 912 | if (scriptLine->command == RPG::EVCMD_CHANGE_VARIABLE) { 913 | if(*reinterpret_cast(0x4C9DA0) == 0x0024588B) { // if BAEP installed 914 | int betterAepVariableId = *reinterpret_cast(0x4C9DA4); // get variable ID (usually 3350) 915 | if (scriptLine->parameter(1) == betterAepVariableId 916 | && scriptLine->parameter(5) == 2 917 | && scriptData->line(lineId+1)->command == RPG::EVCMD_STOP_EVENT) { 918 | if (useOpenGl) { 919 | if (confFullscreen) _setWindowed(confWindowScale); 920 | isQuitting = true; 921 | m_win->close(); 922 | } 923 | // return false would prevent betterAEP's code from running 924 | return false; 925 | } 926 | } 927 | } 928 | //******************************************************************** 929 | 930 | if (scriptLine->command == RPG::EVCMD_PLAY_MOVIE && useOpenGl) { 931 | // Hide the 2k3 canvas since it will appear when 932 | scriptLine->parameters[1] = 0 + scriptLine->parameters[1]; 933 | // Amazingly, the 0.1 is enough offset to place the movie outside of the canvas's context window 934 | // If it's inside, it won't display at all if parameters 3 & 4 are bigger than 640x480 935 | scriptLine->parameters[2] = 0.1 + scriptLine->parameters[2]; 936 | scriptLine->parameters[3] = scriptLine->parameters[3]*confWindowScale; 937 | scriptLine->parameters[4] = scriptLine->parameters[4]*confWindowScale; 938 | 939 | HWND winContext = GetParent(RPG::screen->getCanvasHWND()); 940 | if (confFullscreen) { 941 | m_win->setVisible(false); 942 | ShowWindow(GetParent(winContext),SW_SHOW); 943 | SetWindowPos(winContext, HWND_TOP, 0, 0, 640, 480, SWP_SHOWWINDOW); 944 | } else { 945 | SetWindowPos(winContext, HWND_TOP, 0, 0, 640, 480, SWP_SHOWWINDOW); 946 | } 947 | 948 | // Hide the 2k3 canvas since it will appear when 949 | RPG::screen->canvasRect.top = 0; 950 | RPG::screen->canvasRect.left = 0; 951 | RPG::screen->canvasRect.right = 0; 952 | RPG::screen->canvasRect.bottom = 0; 953 | 954 | playingMovie = true; 955 | 956 | return true; 957 | } 958 | 959 | return true; 960 | } 961 | 962 | bool onComment(const char *text, const RPG::ParsedCommentData *parsedData, RPG::EventScriptLine *nextScriptLine, 963 | RPG::EventScriptData *scriptData, int eventId, int pageId, int lineId, int *nextLineId) 964 | { 965 | std::string cmd = parsedData->command; 966 | 967 | /** \brief For building your own menu in 2k3. This will bind Settings.ini updates to a 2k3 Variable so they are always synced (less work in 2k3) 968 | \param (text) The Settings.ini key 969 | \param (number) The variable ID 970 | */ 971 | if (cmd == "bind_variable" && parsedData->parametersCount == 2) { 972 | // Limit to these ini values: 973 | std::string textParam = parsedData->parameters[0].text; 974 | if (textParam == "UseDirectDraw" || textParam == "EnableVSync" || textParam == "Fullscreen" || textParam == "UseShaders" || 975 | textParam == "ShaderId" || textParam == "AllowUnevenPixelSizes" || textParam == "UseDesktopResolution" || textParam == "IgnoreAspectRatio" || 976 | textParam == "UseInterpolation" || textParam == "WindowScale") { 977 | 978 | // Load only 979 | int varId = parsedData->parameters[1].number; 980 | int value = getFromIni(textParam.c_str()); 981 | RPG::variables[varId] = value; 982 | configMap[textParam] = varId; 983 | } 984 | return false; 985 | } 986 | 987 | /** \brief A simple Quit game command 988 | */ 989 | if (cmd == "quit_game") { 990 | exitOpenGl(); 991 | RPG::quitGame(); 992 | return false; 993 | } 994 | 995 | /** \brief Loop through available shaders 996 | \param (number) reverse direction (1), normal direction (0) 997 | */ 998 | if (cmd == "toggle_shaders") { 999 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1000 | reverseDir = parsedData->parameters[0].number; 1001 | toggleShaders(); 1002 | } 1003 | return false; 1004 | } 1005 | 1006 | /** \brief Set interpolation 1007 | \param (number) on (1), off (0) 1008 | */ 1009 | if (cmd == "set_interpolation") { 1010 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1011 | setInterpolation(parsedData->parameters[0].number == 1); 1012 | } 1013 | return false; 1014 | } 1015 | 1016 | /** \brief Use desktop resolution & refresh fullscreen 1017 | \param (number) on (1), off (0) 1018 | */ 1019 | if (cmd == "set_use_max_resolution") { 1020 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1021 | setUseDesktopResolution(parsedData->parameters[0].number == 1); 1022 | } 1023 | return false; 1024 | } 1025 | 1026 | /** \brief Ignore aspect ratio 1027 | \param (number) on (1), off (0) 1028 | */ 1029 | if (cmd == "set_ignore_aspect_ratio") { 1030 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1031 | setIgnoreAspectRatio(parsedData->parameters[0].number == 1); 1032 | } 1033 | return false; 1034 | } 1035 | 1036 | /** \brief Allow uneven pixels 1037 | \param (number) on (1), off (0) 1038 | */ 1039 | if (cmd == "set_allow_uneven_pixels") { 1040 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1041 | setAllowUnevenPixels(parsedData->parameters[0].number == 1); 1042 | } 1043 | return false; 1044 | } 1045 | 1046 | /** \brief Set fullscreen/windowed 1047 | \param (number) fullscreen (1), windowed (0) 1048 | */ 1049 | if (cmd == "set_fullscreen") { 1050 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1051 | setFullscreen(parsedData->parameters[0].number == 1); 1052 | } 1053 | return false; 1054 | } 1055 | 1056 | /** \brief Toggle window scale 1057 | \param (number) reverse direction (1), normal direction (0) 1058 | */ 1059 | if (cmd == "toggle_window_scale") { 1060 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1061 | reverseDir = parsedData->parameters[0].number == 1; 1062 | toggleWindowScale(); 1063 | } 1064 | return false; 1065 | } 1066 | 1067 | /** \brief Set window scale 1068 | \param (number) The new scale (if out of range, will set to min/max) 1069 | */ 1070 | if (cmd == "set_window_scale") { 1071 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1072 | // the new scale is evaluated in the function 1073 | setWindowScale(parsedData->parameters[0].number); 1074 | } 1075 | return false; 1076 | } 1077 | 1078 | /** \brief Set DirectDraw mode 1079 | \param (number) DirectDraw (1), OpenGL (0) 1080 | */ 1081 | if (cmd == "set_direct_draw") { 1082 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1083 | setDirectDraw(parsedData->parameters[0].number == 1); 1084 | } 1085 | return false; 1086 | } 1087 | 1088 | /** \brief Treats a hero name as a string and set one to the window resolution (in "width x height" format) 1089 | \param (number) The ID of the hero 1090 | */ 1091 | if (cmd == "set_window_resolution_to_hero_name") { 1092 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1093 | int heroId = parsedData->parameters[0].number; 1094 | std::stringstream temp; 1095 | if (confUseDirectDraw) { 1096 | if (RPG::screen->largeWindow) temp << "640 x 480"; 1097 | else temp << "320 x 240"; 1098 | } else { 1099 | temp << m_wintexture->getSize().x*confWindowScale << " x " << m_wintexture->getSize().y*confWindowScale; 1100 | } 1101 | if (RPG::dbActors[heroId]) RPG::dbActors[heroId]->name = temp.str(); 1102 | } 1103 | return false; 1104 | } 1105 | 1106 | /** \brief Treats a hero name as a string and set one to the name of the current shader (or "None") 1107 | \param (number) The ID of the hero 1108 | */ 1109 | if (cmd == "set_shader_name_to_hero_name") { 1110 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1111 | int heroId = parsedData->parameters[0].number; 1112 | std::stringstream shaderString; 1113 | shaderString << "Shader" << confShaderId; 1114 | shaderName = configuration[shaderString.str()]; 1115 | findAndReplace(shaderName, "_", " "); 1116 | std::stringstream temp; 1117 | if (confUseShaders) { 1118 | temp << shaderName; 1119 | } else { 1120 | temp << translationMap["None"]; 1121 | } 1122 | if (RPG::dbActors[heroId]) RPG::dbActors[heroId]->name = temp.str(); 1123 | } 1124 | return false; 1125 | } 1126 | 1127 | /** \brief Treats a hero name as a string and set one to the desktop resolution (in "Yes (width x height)" format) 1128 | \param (number) The ID of the hero 1129 | */ 1130 | if (cmd == "set_desktop_res_to_hero_name") { 1131 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1132 | int heroId = parsedData->parameters[0].number; 1133 | std::stringstream temp; 1134 | temp << translationMap["Yes"] << " (" << desktopWidth << " x " << desktopHeight << ")"; 1135 | if (RPG::dbActors[heroId]) RPG::dbActors[heroId]->name = temp.str(); 1136 | } 1137 | return false; 1138 | } 1139 | 1140 | /** \brief Sets a shader's float parameter (experimental) 1141 | \param (text) The shader's parameter 1142 | \param (text) A textual representation of a float value (ex: "0.975") 1143 | */ 1144 | if (cmd == "set_shader_param" && parsedData->parametersCount == 2) { 1145 | if (parsedData->parameters[0].type == RPG::PARAM_STRING && parsedData->parameters[1].type == RPG::PARAM_STRING) { 1146 | shaderParams[parsedData->parameters[0].text] = atof(parsedData->parameters[1].text); 1147 | } 1148 | return false; 1149 | } 1150 | 1151 | /** \brief In DirectDraw mode, sets a switch to whether it's in large window mode or not 1152 | \param (number) the ID of the switch 1153 | */ 1154 | if (cmd == "get_direct_draw_large_window") { 1155 | if (confUseDirectDraw) { 1156 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1157 | RPG::switches[parsedData->parameters[0].number] = directDrawIsLargeWindow; 1158 | } 1159 | } 1160 | return false; 1161 | } 1162 | 1163 | /** \brief In DirectDraw mode, sets a switch to whether it's in fullscreen mode or not 1164 | \param (number) the ID of the switch 1165 | */ 1166 | if (cmd == "get_direct_draw_is_fullscreen") { 1167 | if (confUseDirectDraw) { 1168 | if (parsedData->parametersCount == 1 && parsedData->parameters[0].type == RPG::PARAM_NUMBER) { 1169 | RPG::switches[parsedData->parameters[0].number] = directDrawIsFullscreen; 1170 | } 1171 | } 1172 | return false; 1173 | } 1174 | 1175 | /** \brief Call the video options menu from anywhere 1176 | */ 1177 | if (cmd == "load_video_options") { 1178 | openGlMenuCall(); 1179 | return false; 1180 | } 1181 | 1182 | 1183 | return true; 1184 | } 1185 | 1186 | 1187 | void onExit() { 1188 | exitOpenGl(); 1189 | 1190 | // Delete SFML pointers 1191 | delete videoOptions; 1192 | 1193 | delete[] sfmlImageBuffer; 1194 | delete m_win; 1195 | delete m_winevent; 1196 | delete m_wintexture; 1197 | delete m_winsprite; 1198 | delete m_winshader; 1199 | } 1200 | -------------------------------------------------------------------------------- /src/main.h: -------------------------------------------------------------------------------- 1 | #ifndef MAIN_H 2 | #define MAIN_H 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | #include 10 | #include 11 | 12 | #include "OptionsMenu.h" 13 | 14 | #define KEY_DOWN(vkey) (GetKeyState(vkey) & 0x8000) 15 | 16 | 17 | std::map configuration; 18 | std::map configGame; 19 | char headerName[] = "Settings"; 20 | TCHAR gamePath[MAX_PATH]; 21 | std::string gameIniFilename; 22 | std::stringstream filePath; 23 | 24 | std::map translationMap; 25 | std::map shaderParams; 26 | std::map configMap; 27 | 28 | std::string confScreenshotPath; 29 | std::string confTranslation; 30 | std::string gameTitle; 31 | std::string shaderName; 32 | 33 | int desktopWidth; 34 | int desktopHeight; 35 | 36 | int confWindowScale = 1; 37 | int confShaderId = 0; 38 | int confNumShaders = 4; 39 | bool confDisableVideoMenu = false; 40 | bool confUseDirectDraw = false; 41 | bool confFullscreen = false; 42 | bool confStartFullscreen = true; 43 | bool confEnableVSync = true; 44 | bool confUseDesktopResolution = true; 45 | bool confAllowUnevenPixelSizes = true; 46 | bool confUseInterpolation = false; 47 | bool confIgnoreAspectRatio = false; 48 | bool confUseShaders = false; 49 | 50 | bool useOpenGl = false; 51 | bool openGlStartup = false; 52 | bool keyDown = false; 53 | bool altDown = false; 54 | bool isQuitting = false; 55 | bool reverseDir = false; 56 | bool directDrawIsLargeWindow = false; 57 | bool directDrawIsFullscreen = false; 58 | 59 | // Movie stuff 60 | bool playingMovie = false; 61 | 62 | // SFML objects 63 | sf::RenderWindow *m_win; 64 | sf::Event *m_winevent; 65 | sf::Texture *m_wintexture; 66 | sf::Sprite *m_winsprite; 67 | sf::Shader *m_winshader; 68 | sf::Uint8 *sfmlImageBuffer; 69 | 70 | OptionsMenu *videoOptions; 71 | std::string systemGraphic; 72 | 73 | RPG::Scene_T lastScene; 74 | const RPG::Scene_T sceneOpenGl = static_cast(77); 75 | 76 | uint16_t *buffer; 77 | uint16_t *sceneBuffer; 78 | 79 | #define RM_WIDTH 320 80 | #define RM_HEIGHT 240 81 | 82 | //bool isWindowsVistaOrHigher(); 83 | void findAndReplace(std::string& source, std::string const& find, std::string const& replace); 84 | void saveToIni(const char *keyName, const char *value, bool noSet = false); 85 | int getFromIni(const char *keyName); 86 | bool SFMLLoadScreenAsImage(sf::Texture *&texture); 87 | 88 | void setDirectDraw(bool useDirectDraw); 89 | void _setFullscreen(); 90 | void _setWindowed(int scale); 91 | void setFullscreen(bool fullscreen); 92 | void toggleWindowScale(); 93 | void setWindowScale(int scale); 94 | 95 | void setUseDesktopResolution(bool useDesktop); 96 | void setIgnoreAspectRatio(bool ignoreAspect); 97 | void setAllowUnevenPixels(bool allowUneven); 98 | void setInterpolation(bool interp); 99 | void toggleShaders(); 100 | void setCurrentShader(); 101 | 102 | void printScreen(sf::Texture *&texture); 103 | void openGlMenuCall(); 104 | void startOpenGlMenu(); 105 | void exitOpenGl(); 106 | 107 | void originalSetFullscreen(bool fullscreen); 108 | void __stdcall hookedSetFullscreen(bool fullscreen); 109 | void originalSetLargeWindow(bool largeWindow); 110 | void __stdcall hookedSetLargeWindow(bool largeWindow); 111 | 112 | #endif // MAIN_H 113 | -------------------------------------------------------------------------------- /src/system_opengl.cbp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 48 | 49 | -------------------------------------------------------------------------------- /src/system_opengl.depend: -------------------------------------------------------------------------------- 1 | # depslib dependency file v1.0 2 | 1520821296 source:c:\users\rew\documents\dynplugins\system_opengl\main.cpp 3 | "main.h" 4 | 5 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics.hpp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 1429802054 c:\sfml-2.3.2\include\sfml\window.hpp 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 1429802054 c:\sfml-2.3.2\include\sfml\system.hpp 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 1441998492 c:\sfml-2.3.2\include\sfml\config.hpp 69 | "TargetConditionals.h" 70 | 71 | 1429802054 c:\sfml-2.3.2\include\sfml\system\clock.hpp 72 | 73 | 74 | 75 | 1429802054 c:\sfml-2.3.2\include\sfml\system\export.hpp 76 | 77 | 78 | 1429802054 c:\sfml-2.3.2\include\sfml\system\time.hpp 79 | 80 | 81 | 1429802054 c:\sfml-2.3.2\include\sfml\system\err.hpp 82 | 83 | 84 | 85 | 1436055626 c:\sfml-2.3.2\include\sfml\system\fileinputstream.hpp 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 1429802054 c:\sfml-2.3.2\include\sfml\system\inputstream.hpp 94 | 95 | 96 | 97 | 1429802054 c:\sfml-2.3.2\include\sfml\system\noncopyable.hpp 98 | 99 | 100 | 1429802054 c:\sfml-2.3.2\include\sfml\system\lock.hpp 101 | 102 | 103 | 104 | 1429802054 c:\sfml-2.3.2\include\sfml\system\memoryinputstream.hpp 105 | 106 | 107 | 108 | 109 | 110 | 1429802054 c:\sfml-2.3.2\include\sfml\system\mutex.hpp 111 | 112 | 113 | 114 | 1429802054 c:\sfml-2.3.2\include\sfml\system\sleep.hpp 115 | 116 | 117 | 118 | 1429802054 c:\sfml-2.3.2\include\sfml\system\string.hpp 119 | 120 | 121 | 122 | 123 | 124 | 125 | 1429802054 c:\sfml-2.3.2\include\sfml\system\utf.hpp 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 1429802054 c:\sfml-2.3.2\include\sfml\system\utf.inl 134 | 135 | 1429802054 c:\sfml-2.3.2\include\sfml\system\string.inl 136 | 137 | 1429802054 c:\sfml-2.3.2\include\sfml\system\thread.hpp 138 | 139 | 140 | 141 | 142 | 143 | 1429802054 c:\sfml-2.3.2\include\sfml\system\thread.inl 144 | 145 | 1429802054 c:\sfml-2.3.2\include\sfml\system\threadlocal.hpp 146 | 147 | 148 | 149 | 150 | 1429802054 c:\sfml-2.3.2\include\sfml\system\threadlocalptr.hpp 151 | 152 | 153 | 154 | 1429802054 c:\sfml-2.3.2\include\sfml\system\threadlocalptr.inl 155 | 156 | 1429802054 c:\sfml-2.3.2\include\sfml\system\vector2.hpp 157 | 158 | 159 | 1429802054 c:\sfml-2.3.2\include\sfml\system\vector2.inl 160 | 161 | 1429802054 c:\sfml-2.3.2\include\sfml\system\vector3.hpp 162 | 163 | 164 | 1429802054 c:\sfml-2.3.2\include\sfml\system\vector3.inl 165 | 166 | 1429802054 c:\sfml-2.3.2\include\sfml\window\context.hpp 167 | 168 | 169 | 170 | 171 | 172 | 1429802054 c:\sfml-2.3.2\include\sfml\window\export.hpp 173 | 174 | 175 | 1429802054 c:\sfml-2.3.2\include\sfml\window\glresource.hpp 176 | 177 | 178 | 1429802054 c:\sfml-2.3.2\include\sfml\window\contextsettings.hpp 179 | 180 | 1429802054 c:\sfml-2.3.2\include\sfml\window\event.hpp 181 | 182 | 183 | 184 | 185 | 186 | 187 | 1436055626 c:\sfml-2.3.2\include\sfml\window\joystick.hpp 188 | 189 | 190 | 191 | 1429802054 c:\sfml-2.3.2\include\sfml\window\keyboard.hpp 192 | 193 | 194 | 1429802054 c:\sfml-2.3.2\include\sfml\window\mouse.hpp 195 | 196 | 197 | 198 | 1431009546 c:\sfml-2.3.2\include\sfml\window\sensor.hpp 199 | 200 | 201 | 202 | 203 | 1429802054 c:\sfml-2.3.2\include\sfml\window\touch.hpp 204 | 205 | 206 | 207 | 1429802054 c:\sfml-2.3.2\include\sfml\window\videomode.hpp 208 | 209 | 210 | 211 | 1429802054 c:\sfml-2.3.2\include\sfml\window\window.hpp 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 1429802054 c:\sfml-2.3.2\include\sfml\window\windowhandle.hpp 224 | 225 | 226 | 1429802054 c:\sfml-2.3.2\include\sfml\window\windowstyle.hpp 227 | 228 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\blendmode.hpp 229 | 230 | 231 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\export.hpp 232 | 233 | 234 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\circleshape.hpp 235 | 236 | 237 | 238 | 1431009546 c:\sfml-2.3.2\include\sfml\graphics\shape.hpp 239 | 240 | 241 | 242 | 243 | 244 | 245 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\drawable.hpp 246 | 247 | 248 | 249 | 1436055626 c:\sfml-2.3.2\include\sfml\graphics\renderstates.hpp 250 | 251 | 252 | 253 | 254 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\transform.hpp 255 | 256 | 257 | 258 | 259 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\rect.hpp 260 | 261 | 262 | 263 | 264 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\rect.inl 265 | 266 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\transformable.hpp 267 | 268 | 269 | 270 | 1431009546 c:\sfml-2.3.2\include\sfml\graphics\vertexarray.hpp 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\vertex.hpp 279 | 280 | 281 | 282 | 283 | 1431009546 c:\sfml-2.3.2\include\sfml\graphics\color.hpp 284 | 285 | 286 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\primitivetype.hpp 287 | 288 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\convexshape.hpp 289 | 290 | 291 | 292 | 293 | 1441998492 c:\sfml-2.3.2\include\sfml\graphics\font.hpp 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\glyph.hpp 305 | 306 | 307 | 308 | 1441998492 c:\sfml-2.3.2\include\sfml\graphics\texture.hpp 309 | 310 | 311 | 312 | 313 | 1431009546 c:\sfml-2.3.2\include\sfml\graphics\image.hpp 314 | 315 | 316 | 317 | 318 | 319 | 320 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\rectangleshape.hpp 321 | 322 | 323 | 324 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\rendertarget.hpp 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\view.hpp 337 | 338 | 339 | 340 | 341 | 342 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\rendertexture.hpp 343 | 344 | 345 | 346 | 347 | 1429802054 c:\sfml-2.3.2\include\sfml\graphics\renderwindow.hpp 348 | 349 | 350 | 351 | 352 | 353 | 354 | 1436055626 c:\sfml-2.3.2\include\sfml\graphics\shader.hpp 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 1431009546 c:\sfml-2.3.2\include\sfml\graphics\sprite.hpp 366 | 367 | 368 | 369 | 370 | 371 | 372 | 1431009546 c:\sfml-2.3.2\include\sfml\graphics\text.hpp 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 1473805600 c:\sfml-2.3.2\include\sfemovie\movie.hpp 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 1473805600 c:\sfml-2.3.2\include\sfemovie\visibility.hpp 393 | 394 | 395 | 1473805600 c:\sfml-2.3.2\include\sfemovie\streamselection.hpp 396 | 397 | 398 | 399 | 400 | 1343542946 c:\sfemovie-1.0-windows-mingw\include\sfemovie\movie.hpp 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 1472292644 c:\sfml-2.3.2\include\sfemovie\movieimpl.hpp 411 | 412 | 413 | 414 | 415 | 416 | "VideoStream.hpp" 417 | "SubtitleStream.hpp" 418 | "DebugTools/LayoutDebugger.hpp" 419 | 420 | 1472292644 c:\sfml-2.3.2\include\sfemovie\videostream.hpp 421 | "Macros.hpp" 422 | "Stream.hpp" 423 | 424 | 425 | 426 | 1472292644 c:\sfml-2.3.2\include\sfemovie\macros.hpp 427 | 428 | 429 | 430 | 431 | 432 | 433 | 1472292644 c:\sfml-2.3.2\include\libavutil\error.h 434 | 435 | 436 | 437 | 1472292644 c:\sfml-2.3.2\include\sfemovie\stream.hpp 438 | "Macros.hpp" 439 | "Timer.hpp" 440 | 441 | 442 | 443 | 444 | 445 | 446 | 1472292644 c:\sfml-2.3.2\include\sfemovie\timer.hpp 447 | 448 | 449 | 450 | 451 | 1472292644 c:\sfml-2.3.2\include\libavformat\avformat.h 452 | 453 | 454 | "libavcodec/avcodec.h" 455 | "libavutil/dict.h" 456 | "libavutil/log.h" 457 | "avio.h" 458 | "libavformat/version.h" 459 | 460 | 1472292644 c:\sfml-2.3.2\include\libavcodec\avcodec.h 461 | 462 | "libavutil/samplefmt.h" 463 | "libavutil/attributes.h" 464 | "libavutil/avutil.h" 465 | "libavutil/buffer.h" 466 | "libavutil/cpu.h" 467 | "libavutil/channel_layout.h" 468 | "libavutil/dict.h" 469 | "libavutil/frame.h" 470 | "libavutil/log.h" 471 | "libavutil/pixfmt.h" 472 | "libavutil/rational.h" 473 | "version.h" 474 | "old_codec_ids.h" 475 | 476 | 1472292644 c:\sfml-2.3.2\include\libavutil\samplefmt.h 477 | 478 | "avutil.h" 479 | "attributes.h" 480 | 481 | 1472292644 c:\sfml-2.3.2\include\libavutil\avutil.h 482 | "common.h" 483 | "error.h" 484 | "rational.h" 485 | "version.h" 486 | "macros.h" 487 | "mathematics.h" 488 | "log.h" 489 | "pixfmt.h" 490 | 491 | 1472292644 c:\sfml-2.3.2\include\libavutil\common.h 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | "attributes.h" 501 | "version.h" 502 | "libavutil/avconfig.h" 503 | "config.h" 504 | "intmath.h" 505 | "common.h" 506 | "mem.h" 507 | "internal.h" 508 | 509 | 1472292644 c:\sfml-2.3.2\include\libavutil\attributes.h 510 | 511 | 1472292644 c:\sfml-2.3.2\include\libavutil\version.h 512 | "macros.h" 513 | 514 | 1472292644 c:\sfml-2.3.2\include\libavutil\macros.h 515 | 516 | 1472292644 c:\sfml-2.3.2\include\libavutil\avconfig.h 517 | 518 | 1472292644 c:\sfml-2.3.2\include\libavutil\mem.h 519 | 520 | 521 | "attributes.h" 522 | "error.h" 523 | "avutil.h" 524 | 525 | 1472292644 c:\sfml-2.3.2\include\libavutil\rational.h 526 | 527 | 528 | "attributes.h" 529 | 530 | 1472292644 c:\sfml-2.3.2\include\libavutil\mathematics.h 531 | 532 | 533 | "attributes.h" 534 | "rational.h" 535 | "intfloat.h" 536 | 537 | 1472292644 c:\sfml-2.3.2\include\libavutil\intfloat.h 538 | 539 | "attributes.h" 540 | 541 | 1472292644 c:\sfml-2.3.2\include\libavutil\log.h 542 | 543 | "avutil.h" 544 | "attributes.h" 545 | "version.h" 546 | 547 | 1472292644 c:\sfml-2.3.2\include\libavutil\pixfmt.h 548 | "libavutil/avconfig.h" 549 | "version.h" 550 | "old_pix_fmts.h" 551 | 552 | 1472292644 c:\sfml-2.3.2\include\libavutil\old_pix_fmts.h 553 | 554 | 1472292644 c:\sfml-2.3.2\include\libavutil\buffer.h 555 | 556 | 557 | 1472292644 c:\sfml-2.3.2\include\libavutil\cpu.h 558 | "attributes.h" 559 | 560 | 1472292644 c:\sfml-2.3.2\include\libavutil\channel_layout.h 561 | 562 | 563 | 1472292644 c:\sfml-2.3.2\include\libavutil\dict.h 564 | 565 | "version.h" 566 | 567 | 1472292644 c:\sfml-2.3.2\include\libavutil\frame.h 568 | 569 | "avutil.h" 570 | "buffer.h" 571 | "dict.h" 572 | "rational.h" 573 | "samplefmt.h" 574 | "pixfmt.h" 575 | "version.h" 576 | 577 | 1472292644 c:\sfml-2.3.2\include\libavcodec\version.h 578 | "libavutil/version.h" 579 | 580 | 1472292644 c:\sfml-2.3.2\include\libavcodec\old_codec_ids.h 581 | 582 | 1472292644 c:\sfml-2.3.2\include\libavformat\avio.h 583 | 584 | "libavutil/common.h" 585 | "libavutil/dict.h" 586 | "libavutil/log.h" 587 | "libavformat/version.h" 588 | 589 | 1472292644 c:\sfml-2.3.2\include\libavformat\version.h 590 | "libavutil/version.h" 591 | 592 | 1472292644 c:\sfml-2.3.2\include\sfemovie\subtitlestream.hpp 593 | "Macros.hpp" 594 | "Stream.hpp" 595 | 596 | 597 | 598 | 599 | 600 | 1472292644 c:\sfml-2.3.2\include\sfemovie\debugtools\layoutdebugger.hpp 601 | 602 | 603 | 604 | 605 | 606 | 1488426023 c:\sftheora-1.4\include\sftheora\video.h 607 | 608 | 609 | "theoraplayer/TheoraPlayer.h" 610 | "theoraplayer/TheoraDataSource.h" 611 | "AudioInterface.h" 612 | "sfTheora/Error.h" 613 | "sfTheora/MemoryLoader.h" 614 | 615 | 1364339558 c:\sftheora-1.4\include\theoraplayer\theoraplayer.h 616 | "TheoraVideoManager.h" 617 | "TheoraVideoClip.h" 618 | "TheoraVideoFrame.h" 619 | 620 | 1364339558 c:\sftheora-1.4\include\theoraplayer\theoravideomanager.h 621 | 622 | 623 | "TheoraExport.h" 624 | "TheoraVideoClip.h" 625 | 626 | 1364339558 c:\sftheora-1.4\include\theoraplayer\theoraexport.h 627 | 628 | 1364339558 c:\sftheora-1.4\include\theoraplayer\theoravideoclip.h 629 | 630 | "TheoraExport.h" 631 | 632 | 1364339558 c:\sftheora-1.4\include\theoraplayer\theoravideoframe.h 633 | "TheoraExport.h" 634 | 635 | 1364339558 c:\sftheora-1.4\include\theoraplayer\theoradatasource.h 636 | 637 | 638 | "TheoraExport.h" 639 | 640 | 1364339558 c:\sftheora-1.4\include\sftheora\audiointerface.h 641 | 642 | 643 | 644 | "theoraplayer/TheoraAudioInterface.h" 645 | "theoraplayer/TheoraVideoClip.h" 646 | "theoraplayer/TheoraTimer.h" 647 | 648 | 1429802054 c:\sfml-2.3.2\include\sfml\audio.hpp 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\inputsoundfile.hpp 665 | 666 | 667 | 668 | 669 | 670 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\export.hpp 671 | 672 | 673 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\listener.hpp 674 | 675 | 676 | 677 | 1436055626 c:\sfml-2.3.2\include\sfml\audio\music.hpp 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\soundstream.hpp 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\soundsource.hpp 695 | 696 | 697 | 698 | 699 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\alresource.hpp 700 | 701 | 702 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\outputsoundfile.hpp 703 | 704 | 705 | 706 | 707 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\sound.hpp 708 | 709 | 710 | 711 | 712 | 713 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\soundbuffer.hpp 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\soundbufferrecorder.hpp 722 | 723 | 724 | 725 | 726 | 727 | 1436055626 c:\sfml-2.3.2\include\sfml\audio\soundrecorder.hpp 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\soundfilefactory.hpp 736 | 737 | 738 | 739 | 740 | 741 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\soundfilefactory.inl 742 | 743 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\soundfilereader.hpp 744 | 745 | 746 | 747 | 1429802054 c:\sfml-2.3.2\include\sfml\audio\soundfilewriter.hpp 748 | 749 | 750 | 751 | 1364339558 c:\sftheora-1.4\include\theoraplayer\theoraaudiointerface.h 752 | "TheoraExport.h" 753 | 754 | 1364339558 c:\sftheora-1.4\include\theoraplayer\theoratimer.h 755 | "TheoraExport.h" 756 | 757 | 1364339558 c:\sftheora-1.4\include\sftheora\error.h 758 | 759 | 760 | 1364339558 c:\sftheora-1.4\include\sftheora\memoryloader.h 761 | 762 | "theoraplayer/TheoraDataSource.h" 763 | 764 | 1472327256 c:\sfemovie-release-2.0.0-win32\include\sfemovie\movie.hpp 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 1472327256 c:\sfemovie-release-2.0.0-win32\include\sfemovie\visibility.hpp 774 | 775 | 776 | 1472327256 c:\sfemovie-release-2.0.0-win32\include\sfemovie\streamselection.hpp 777 | 778 | 779 | 780 | 781 | 1473805600 c:\sfemovie-master\include\sfemovie\movie.hpp 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 1473805600 c:\sfemovie-master\include\sfemovie\visibility.hpp 791 | 792 | 793 | 1473805600 c:\sfemovie-master\include\sfemovie\streamselection.hpp 794 | 795 | 796 | 797 | 798 | 1473838099 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\movie.hpp 799 | 800 | 801 | "Visibility.hpp" 802 | "StreamSelection.hpp" 803 | 804 | 805 | 806 | 807 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\visibility.hpp 808 | 809 | 810 | 1473838110 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\streamselection.hpp 811 | "Visibility.hpp" 812 | 813 | 814 | 815 | 1473838269 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\audiostream.cpp 816 | "libavformat/avformat.h" 817 | "libavcodec/avcodec.h" 818 | "libavutil/samplefmt.h" 819 | "libavutil/opt.h" 820 | "libavutil/channel_layout.h" 821 | "libswresample/swresample.h" 822 | 823 | 824 | "AudioStream.hpp" 825 | "Log.hpp" 826 | "Movie.hpp" 827 | 828 | 1467337380 c:\ffmpeg-clib\include\libavformat\avformat.h 829 | 830 | 831 | "libavcodec/avcodec.h" 832 | "libavutil/dict.h" 833 | "libavutil/log.h" 834 | "avio.h" 835 | "libavformat/version.h" 836 | 837 | 1487435364 c:\ffmpeg-clib\include\libavcodec\avcodec.h 838 | 839 | "libavutil/samplefmt.h" 840 | "libavutil/attributes.h" 841 | "libavutil/avutil.h" 842 | "libavutil/buffer.h" 843 | "libavutil/cpu.h" 844 | "libavutil/channel_layout.h" 845 | "libavutil/dict.h" 846 | "libavutil/frame.h" 847 | "libavutil/log.h" 848 | "libavutil/pixfmt.h" 849 | "libavutil/rational.h" 850 | "version.h" 851 | 852 | 1467337380 c:\ffmpeg-clib\include\libavutil\samplefmt.h 853 | 854 | "avutil.h" 855 | "attributes.h" 856 | 857 | 1467337380 c:\ffmpeg-clib\include\libavutil\avutil.h 858 | "common.h" 859 | "error.h" 860 | "rational.h" 861 | "version.h" 862 | "macros.h" 863 | "mathematics.h" 864 | "log.h" 865 | "pixfmt.h" 866 | 867 | 1487386311 c:\ffmpeg-clib\include\libavutil\common.h 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | "attributes.h" 877 | "macros.h" 878 | "version.h" 879 | "libavutil/avconfig.h" 880 | "config.h" 881 | "intmath.h" 882 | "common.h" 883 | "mem.h" 884 | "internal.h" 885 | 886 | 1467337380 c:\ffmpeg-clib\include\libavutil\attributes.h 887 | 888 | 1467337380 c:\ffmpeg-clib\include\libavutil\version.h 889 | "macros.h" 890 | 891 | 1467337380 c:\ffmpeg-clib\include\libavutil\macros.h 892 | 893 | 1487386500 c:\ffmpeg-clib\include\libavutil\avconfig.h 894 | 895 | 1467337380 c:\ffmpeg-clib\include\libavutil\mem.h 896 | 897 | 898 | "attributes.h" 899 | "error.h" 900 | "avutil.h" 901 | 902 | 1467337380 c:\ffmpeg-clib\include\libavutil\error.h 903 | 904 | 905 | 906 | 1467337380 c:\ffmpeg-clib\include\libavutil\rational.h 907 | 908 | 909 | "attributes.h" 910 | 911 | 1467337380 c:\ffmpeg-clib\include\libavutil\mathematics.h 912 | 913 | 914 | "attributes.h" 915 | "rational.h" 916 | "intfloat.h" 917 | 918 | 1467337380 c:\ffmpeg-clib\include\libavutil\intfloat.h 919 | 920 | "attributes.h" 921 | 922 | 1467337380 c:\ffmpeg-clib\include\libavutil\log.h 923 | 924 | "avutil.h" 925 | "attributes.h" 926 | "version.h" 927 | 928 | 1487386307 c:\ffmpeg-clib\include\libavutil\pixfmt.h 929 | "libavutil/avconfig.h" 930 | "version.h" 931 | 932 | 1473805600 c:\ffmpeg-clib\include\libavutil\old_pix_fmts.h 933 | 934 | 1467337380 c:\ffmpeg-clib\include\libavutil\buffer.h 935 | 936 | 937 | 1467337380 c:\ffmpeg-clib\include\libavutil\cpu.h 938 | "attributes.h" 939 | 940 | 1467337380 c:\ffmpeg-clib\include\libavutil\channel_layout.h 941 | 942 | 943 | 1467337380 c:\ffmpeg-clib\include\libavutil\dict.h 944 | 945 | "version.h" 946 | 947 | 1467337380 c:\ffmpeg-clib\include\libavutil\frame.h 948 | 949 | "avutil.h" 950 | "buffer.h" 951 | "dict.h" 952 | "rational.h" 953 | "samplefmt.h" 954 | "pixfmt.h" 955 | "version.h" 956 | 957 | 1467337380 c:\ffmpeg-clib\include\libavcodec\version.h 958 | "libavutil/version.h" 959 | 960 | 1473805600 c:\ffmpeg-clib\include\libavcodec\old_codec_ids.h 961 | 962 | 1467337380 c:\ffmpeg-clib\include\libavformat\avio.h 963 | 964 | "libavutil/common.h" 965 | "libavutil/dict.h" 966 | "libavutil/log.h" 967 | "libavformat/version.h" 968 | 969 | 1467337380 c:\ffmpeg-clib\include\libavformat\version.h 970 | "libavutil/version.h" 971 | 972 | 1473805600 c:\ffmpeg-clib\include\libavutil\opt.h 973 | "rational.h" 974 | "avutil.h" 975 | "dict.h" 976 | "log.h" 977 | "pixfmt.h" 978 | "samplefmt.h" 979 | "version.h" 980 | 981 | 1473805600 c:\ffmpeg-clib\include\libswresample\swresample.h 982 | 983 | "libavutil/frame.h" 984 | "libavutil/samplefmt.h" 985 | "libswresample/version.h" 986 | 987 | 1473805600 c:\ffmpeg-clib\include\libswresample\version.h 988 | "libavutil/avutil.h" 989 | 990 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\audiostream.hpp 991 | 992 | "Stream.hpp" 993 | 994 | 995 | 1473838421 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\stream.hpp 996 | "Macros.hpp" 997 | "Timer.hpp" 998 | 999 | 1000 | 1001 | "Movie.hpp" 1002 | "libavformat/avformat.h" 1003 | 1004 | 1473838417 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\macros.hpp 1005 | 1006 | 1007 | 1008 | 1009 | "libavutil/error.h" 1010 | 1011 | 1473838117 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\timer.hpp 1012 | 1013 | 1014 | "Movie.hpp" 1015 | 1016 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\log.hpp 1017 | 1018 | 1019 | 1020 | 1473838433 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\demuxer.cpp 1021 | "libavformat/avformat.h" 1022 | "libavcodec/avcodec.h" 1023 | "libswscale/swscale.h" 1024 | 1025 | "Demuxer.hpp" 1026 | "VideoStream.hpp" 1027 | "AudioStream.hpp" 1028 | "Log.hpp" 1029 | "Utilities.hpp" 1030 | "TimerPriorities.hpp" 1031 | 1032 | 1033 | 1034 | 1467337380 c:\ffmpeg-clib\include\libswscale\swscale.h 1035 | 1036 | "libavutil/avutil.h" 1037 | "libavutil/log.h" 1038 | "libavutil/pixfmt.h" 1039 | "version.h" 1040 | 1041 | 1467337380 c:\ffmpeg-clib\include\libswscale\version.h 1042 | "libavutil/version.h" 1043 | 1044 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\demuxer.hpp 1045 | 1046 | "Stream.hpp" 1047 | "AudioStream.hpp" 1048 | "VideoStream.hpp" 1049 | "SubtitleStream.hpp" 1050 | "Timer.hpp" 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\videostream.hpp 1059 | "Macros.hpp" 1060 | "Stream.hpp" 1061 | 1062 | 1063 | 1064 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\subtitlestream.hpp 1065 | "Macros.hpp" 1066 | "Stream.hpp" 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\utilities.hpp 1073 | "Stream.hpp" 1074 | "Log.hpp" 1075 | 1076 | 1077 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\timerpriorities.hpp 1078 | 1079 | 1473838458 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\log.cpp 1080 | "Log.hpp" 1081 | "Macros.hpp" 1082 | 1083 | 1084 | "libavutil/avutil.h" 1085 | 1086 | 1473805600 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\macros.cpp 1087 | "Macros.hpp" 1088 | 1089 | 1473838140 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\movie.cpp 1090 | "Movie.hpp" 1091 | "MovieImpl.hpp" 1092 | 1093 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\movieimpl.hpp 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | "VideoStream.hpp" 1100 | "SubtitleStream.hpp" 1101 | "DebugTools/LayoutDebugger.hpp" 1102 | 1103 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\debugtools\layoutdebugger.hpp 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1473805600 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\movieimpl.cpp 1110 | "MovieImpl.hpp" 1111 | "Demuxer.hpp" 1112 | "Timer.hpp" 1113 | "Log.hpp" 1114 | "Utilities.hpp" 1115 | 1116 | 1117 | 1118 | 1473838474 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\stream.cpp 1119 | "libavcodec/avcodec.h" 1120 | "libswscale/swscale.h" 1121 | "Stream.hpp" 1122 | "Utilities.hpp" 1123 | "TimerPriorities.hpp" 1124 | 1125 | 1126 | 1127 | 1128 | 1473838148 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\streamselection.cpp 1129 | "StreamSelection.hpp" 1130 | 1131 | 1473838483 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\subtitlestream.cpp 1132 | "libavformat/avformat.h" 1133 | "libavcodec/avcodec.h" 1134 | "Movie.hpp" 1135 | "SubtitleStream.hpp" 1136 | "Log.hpp" 1137 | 1138 | 1139 | 1140 | 1141 | 1473805600 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\timer.cpp 1142 | "Timer.hpp" 1143 | "Macros.hpp" 1144 | "Log.hpp" 1145 | 1146 | 1473805600 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\timerpriorities.cpp 1147 | "TimerPriorities.hpp" 1148 | 1149 | 1473805600 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\utilities.cpp 1150 | "Utilities.hpp" 1151 | "Demuxer.hpp" 1152 | 1153 | 1154 | 1155 | 1156 | 1473805600 source:c:\users\rew\documents\dynplugins\system_opengl\sfemovie\videostream.cpp 1157 | 1158 | 1159 | 1160 | 1161 | "VideoStream.hpp" 1162 | "Utilities.hpp" 1163 | "Log.hpp" 1164 | 1165 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\error.h 1166 | 1167 | 1168 | 1169 | 1473838400 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavformat\avformat.h 1170 | 1171 | 1172 | "../libavcodec/avcodec.h" 1173 | "../libavutil/dict.h" 1174 | "../libavutil/log.h" 1175 | "avio.h" 1176 | "../libavformat/version.h" 1177 | 1178 | 1473838378 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavcodec\avcodec.h 1179 | 1180 | "../libavutil/samplefmt.h" 1181 | "../libavutil/attributes.h" 1182 | "../libavutil/avutil.h" 1183 | "../libavutil/buffer.h" 1184 | "../libavutil/cpu.h" 1185 | "../libavutil/channel_layout.h" 1186 | "../libavutil/dict.h" 1187 | "../libavutil/frame.h" 1188 | "../libavutil/log.h" 1189 | "../libavutil/pixfmt.h" 1190 | "../libavutil/rational.h" 1191 | "version.h" 1192 | "old_codec_ids.h" 1193 | 1194 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\samplefmt.h 1195 | 1196 | "avutil.h" 1197 | "attributes.h" 1198 | 1199 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\avutil.h 1200 | "common.h" 1201 | "error.h" 1202 | "rational.h" 1203 | "version.h" 1204 | "macros.h" 1205 | "mathematics.h" 1206 | "log.h" 1207 | "pixfmt.h" 1208 | 1209 | 1473838361 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\common.h 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | "attributes.h" 1219 | "version.h" 1220 | "../libavutil/avconfig.h" 1221 | "config.h" 1222 | "intmath.h" 1223 | "common.h" 1224 | "mem.h" 1225 | "internal.h" 1226 | 1227 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\attributes.h 1228 | 1229 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\version.h 1230 | "macros.h" 1231 | 1232 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\macros.h 1233 | 1234 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\avconfig.h 1235 | 1236 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\mem.h 1237 | 1238 | 1239 | "attributes.h" 1240 | "error.h" 1241 | "avutil.h" 1242 | 1243 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\rational.h 1244 | 1245 | 1246 | "attributes.h" 1247 | 1248 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\mathematics.h 1249 | 1250 | 1251 | "attributes.h" 1252 | "rational.h" 1253 | "intfloat.h" 1254 | 1255 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\intfloat.h 1256 | 1257 | "attributes.h" 1258 | 1259 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\log.h 1260 | 1261 | "avutil.h" 1262 | "attributes.h" 1263 | "version.h" 1264 | 1265 | 1473838364 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\pixfmt.h 1266 | "../libavutil/avconfig.h" 1267 | "version.h" 1268 | "old_pix_fmts.h" 1269 | 1270 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\old_pix_fmts.h 1271 | 1272 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\buffer.h 1273 | 1274 | 1275 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\cpu.h 1276 | "attributes.h" 1277 | 1278 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\channel_layout.h 1279 | 1280 | 1281 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\dict.h 1282 | 1283 | "version.h" 1284 | 1285 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\frame.h 1286 | 1287 | "avutil.h" 1288 | "buffer.h" 1289 | "dict.h" 1290 | "rational.h" 1291 | "samplefmt.h" 1292 | "pixfmt.h" 1293 | "version.h" 1294 | 1295 | 1473838381 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavcodec\version.h 1296 | "../libavutil/version.h" 1297 | 1298 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavcodec\old_codec_ids.h 1299 | 1300 | 1473838393 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavformat\avio.h 1301 | 1302 | "../libavutil/common.h" 1303 | "../libavutil/dict.h" 1304 | "../libavutil/log.h" 1305 | "../libavformat/version.h" 1306 | 1307 | 1473838396 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavformat\version.h 1308 | "../libavutil/version.h" 1309 | 1310 | 1473805600 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libavutil\opt.h 1311 | "rational.h" 1312 | "avutil.h" 1313 | "dict.h" 1314 | "log.h" 1315 | "pixfmt.h" 1316 | "samplefmt.h" 1317 | "version.h" 1318 | 1319 | 1473838404 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libswresample\swresample.h 1320 | 1321 | "../libavutil/frame.h" 1322 | "../libavutil/samplefmt.h" 1323 | "../libswresample/version.h" 1324 | 1325 | 1473838408 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libswresample\version.h 1326 | "../libavutil/avutil.h" 1327 | 1328 | 1473838441 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libswscale\swscale.h 1329 | 1330 | "../libavutil/avutil.h" 1331 | "../libavutil/log.h" 1332 | "../libavutil/pixfmt.h" 1333 | "version.h" 1334 | 1335 | 1473838444 c:\users\rew\documents\dynplugins\system_opengl\sfemovie\libswscale\version.h 1336 | "../libavutil/version.h" 1337 | 1338 | 1487386008 c:\users\rew\documents\dynplugins\system_opengl\video.h 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1467337380 c:\ffmpeg-clib\include\libavutil\intmath.h 1347 | 1348 | "config.h" 1349 | "attributes.h" 1350 | "arm/intmath.h" 1351 | "x86/intmath.h" 1352 | 1353 | 1467337380 c:\ffmpeg-clib\include\libavutil\arm\intmath.h 1354 | 1355 | "config.h" 1356 | "libavutil/attributes.h" 1357 | 1358 | 1467337380 c:\ffmpeg-clib\include\libavutil\x86\intmath.h 1359 | 1360 | 1361 | 1362 | 1363 | "config.h" 1364 | 1365 | 1467337380 c:\ffmpeg-clib\include\libavutil\internal.h 1366 | 1367 | 1368 | 1369 | 1370 | "config.h" 1371 | "attributes.h" 1372 | "timer.h" 1373 | "cpu.h" 1374 | "dict.h" 1375 | "macros.h" 1376 | "pixfmt.h" 1377 | "version.h" 1378 | "x86/emms.h" 1379 | "libm.h" 1380 | 1381 | 1382 | 1467337380 c:\ffmpeg-clib\include\libavutil\timer.h 1383 | 1384 | 1385 | 1386 | "config.h" 1387 | 1388 | "log.h" 1389 | "aarch64/timer.h" 1390 | "arm/timer.h" 1391 | "ppc/timer.h" 1392 | "x86/timer.h" 1393 | 1394 | 1467337380 c:\ffmpeg-clib\include\libavutil\aarch64\timer.h 1395 | 1396 | "config.h" 1397 | 1398 | 1467337380 c:\ffmpeg-clib\include\libavutil\arm\timer.h 1399 | 1400 | "config.h" 1401 | 1402 | 1467337380 c:\ffmpeg-clib\include\libavutil\ppc\timer.h 1403 | 1404 | "config.h" 1405 | 1406 | 1467337380 c:\ffmpeg-clib\include\libavutil\x86\timer.h 1407 | 1408 | 1409 | 1410 | 1467337380 c:\ffmpeg-clib\include\libavutil\x86\emms.h 1411 | "config.h" 1412 | "libavutil/attributes.h" 1413 | "libavutil/cpu.h" 1414 | 1415 | 1416 | 1467337380 c:\ffmpeg-clib\include\libavutil\libm.h 1417 | 1418 | "config.h" 1419 | "attributes.h" 1420 | "intfloat.h" 1421 | "mathematics.h" 1422 | "libavutil/mips/libm_mips.h" 1423 | 1424 | 1467337380 c:\ffmpeg-clib\include\libavutil\mips\libm_mips.h 1425 | 1426 | 1487386018 source:c:\users\rew\documents\dynplugins\system_opengl\video.cpp 1427 | "video.h" 1428 | 1429 | 1364339558 c:\sftheora-1.4\include\sftheora.h 1430 | "sfTheora/Video.h" 1431 | 1432 | 1520815510 c:\users\rew\documents\dynplugins\system_opengl\main.h 1433 | 1434 | 1435 | 1436 | 1437 | 1438 | "OptionsMenu.h" 1439 | 1440 | 1486768800 c:\sfml-2.4.2\include\sfml\window.hpp 1441 | 1442 | 1443 | 1444 | 1445 | 1446 | 1447 | 1448 | 1449 | 1450 | 1451 | 1452 | 1453 | 1454 | 1455 | 1486768800 c:\sfml-2.4.2\include\sfml\system.hpp 1456 | 1457 | 1458 | 1459 | 1460 | 1461 | 1462 | 1463 | 1464 | 1465 | 1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1472 | 1473 | 1474 | 1475 | 1486768798 c:\sfml-2.4.2\include\sfml\config.hpp 1476 | "TargetConditionals.h" 1477 | 1478 | 1486768800 c:\sfml-2.4.2\include\sfml\system\clock.hpp 1479 | 1480 | 1481 | 1482 | 1486768800 c:\sfml-2.4.2\include\sfml\system\export.hpp 1483 | 1484 | 1485 | 1486768800 c:\sfml-2.4.2\include\sfml\system\time.hpp 1486 | 1487 | 1488 | 1486768800 c:\sfml-2.4.2\include\sfml\system\err.hpp 1489 | 1490 | 1491 | 1492 | 1486768800 c:\sfml-2.4.2\include\sfml\system\fileinputstream.hpp 1493 | 1494 | 1495 | 1496 | 1497 | 1498 | 1499 | 1500 | 1486768800 c:\sfml-2.4.2\include\sfml\system\inputstream.hpp 1501 | 1502 | 1503 | 1504 | 1486768856 c:\sfml-2.4.2\include\sfml\system\noncopyable.hpp 1505 | 1506 | 1507 | 1486768800 c:\sfml-2.4.2\include\sfml\system\lock.hpp 1508 | 1509 | 1510 | 1511 | 1486768800 c:\sfml-2.4.2\include\sfml\system\memoryinputstream.hpp 1512 | 1513 | 1514 | 1515 | 1516 | 1517 | 1486768800 c:\sfml-2.4.2\include\sfml\system\mutex.hpp 1518 | 1519 | 1520 | 1521 | 1486768800 c:\sfml-2.4.2\include\sfml\system\sleep.hpp 1522 | 1523 | 1524 | 1525 | 1486768800 c:\sfml-2.4.2\include\sfml\system\string.hpp 1526 | 1527 | 1528 | 1529 | 1530 | 1531 | 1532 | 1533 | 1486768800 c:\sfml-2.4.2\include\sfml\system\utf.hpp 1534 | 1535 | 1536 | 1537 | 1538 | 1539 | 1540 | 1541 | 1486768800 c:\sfml-2.4.2\include\sfml\system\utf.inl 1542 | 1543 | 1486768800 c:\sfml-2.4.2\include\sfml\system\string.inl 1544 | 1545 | 1486768800 c:\sfml-2.4.2\include\sfml\system\thread.hpp 1546 | 1547 | 1548 | 1549 | 1550 | 1551 | 1486768800 c:\sfml-2.4.2\include\sfml\system\thread.inl 1552 | 1553 | 1486768800 c:\sfml-2.4.2\include\sfml\system\threadlocal.hpp 1554 | 1555 | 1556 | 1557 | 1558 | 1486768800 c:\sfml-2.4.2\include\sfml\system\threadlocalptr.hpp 1559 | 1560 | 1561 | 1562 | 1486768800 c:\sfml-2.4.2\include\sfml\system\threadlocalptr.inl 1563 | 1564 | 1486768800 c:\sfml-2.4.2\include\sfml\system\vector2.hpp 1565 | 1566 | 1567 | 1486768800 c:\sfml-2.4.2\include\sfml\system\vector2.inl 1568 | 1569 | 1486768800 c:\sfml-2.4.2\include\sfml\system\vector3.hpp 1570 | 1571 | 1572 | 1486768800 c:\sfml-2.4.2\include\sfml\system\vector3.inl 1573 | 1574 | 1486768800 c:\sfml-2.4.2\include\sfml\window\context.hpp 1575 | 1576 | 1577 | 1578 | 1579 | 1580 | 1486768800 c:\sfml-2.4.2\include\sfml\window\export.hpp 1581 | 1582 | 1583 | 1486768856 c:\sfml-2.4.2\include\sfml\window\glresource.hpp 1584 | 1585 | 1586 | 1587 | 1486768800 c:\sfml-2.4.2\include\sfml\window\contextsettings.hpp 1588 | 1589 | 1486768800 c:\sfml-2.4.2\include\sfml\window\event.hpp 1590 | 1591 | 1592 | 1593 | 1594 | 1595 | 1596 | 1486768800 c:\sfml-2.4.2\include\sfml\window\joystick.hpp 1597 | 1598 | 1599 | 1600 | 1486768800 c:\sfml-2.4.2\include\sfml\window\keyboard.hpp 1601 | 1602 | 1603 | 1486768800 c:\sfml-2.4.2\include\sfml\window\mouse.hpp 1604 | 1605 | 1606 | 1607 | 1486768800 c:\sfml-2.4.2\include\sfml\window\sensor.hpp 1608 | 1609 | 1610 | 1611 | 1612 | 1486768800 c:\sfml-2.4.2\include\sfml\window\touch.hpp 1613 | 1614 | 1615 | 1616 | 1486768800 c:\sfml-2.4.2\include\sfml\window\videomode.hpp 1617 | 1618 | 1619 | 1620 | 1486768800 c:\sfml-2.4.2\include\sfml\window\window.hpp 1621 | 1622 | 1623 | 1624 | 1625 | 1626 | 1627 | 1628 | 1629 | 1630 | 1631 | 1632 | 1486768800 c:\sfml-2.4.2\include\sfml\window\windowhandle.hpp 1633 | 1634 | 1635 | 1486768800 c:\sfml-2.4.2\include\sfml\window\windowstyle.hpp 1636 | 1637 | 1486768798 c:\sfml-2.4.2\include\sfml\graphics.hpp 1638 | 1639 | 1640 | 1641 | 1642 | 1643 | 1644 | 1645 | 1646 | 1647 | 1648 | 1649 | 1650 | 1651 | 1652 | 1653 | 1654 | 1655 | 1656 | 1657 | 1658 | 1659 | 1660 | 1661 | 1662 | 1663 | 1664 | 1665 | 1486768798 c:\sfml-2.4.2\include\sfml\graphics\blendmode.hpp 1666 | 1667 | 1668 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\export.hpp 1669 | 1670 | 1671 | 1486768798 c:\sfml-2.4.2\include\sfml\graphics\circleshape.hpp 1672 | 1673 | 1674 | 1675 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\shape.hpp 1676 | 1677 | 1678 | 1679 | 1680 | 1681 | 1682 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\drawable.hpp 1683 | 1684 | 1685 | 1686 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\renderstates.hpp 1687 | 1688 | 1689 | 1690 | 1691 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\transform.hpp 1692 | 1693 | 1694 | 1695 | 1696 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\rect.hpp 1697 | 1698 | 1699 | 1700 | 1701 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\rect.inl 1702 | 1703 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\transformable.hpp 1704 | 1705 | 1706 | 1707 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\vertexarray.hpp 1708 | 1709 | 1710 | 1711 | 1712 | 1713 | 1714 | 1715 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\vertex.hpp 1716 | 1717 | 1718 | 1719 | 1720 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\color.hpp 1721 | 1722 | 1723 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\primitivetype.hpp 1724 | 1725 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\convexshape.hpp 1726 | 1727 | 1728 | 1729 | 1730 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\font.hpp 1731 | 1732 | 1733 | 1734 | 1735 | 1736 | 1737 | 1738 | 1739 | 1740 | 1741 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\glyph.hpp 1742 | 1743 | 1744 | 1745 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\texture.hpp 1746 | 1747 | 1748 | 1749 | 1750 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\image.hpp 1751 | 1752 | 1753 | 1754 | 1755 | 1756 | 1757 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\rectangleshape.hpp 1758 | 1759 | 1760 | 1761 | 1486768856 c:\sfml-2.4.2\include\sfml\graphics\rendertarget.hpp 1762 | 1763 | 1764 | 1765 | 1766 | 1767 | 1768 | 1769 | 1770 | 1771 | 1772 | 1773 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\view.hpp 1774 | 1775 | 1776 | 1777 | 1778 | 1779 | 1486768856 c:\sfml-2.4.2\include\sfml\graphics\rendertexture.hpp 1780 | 1781 | 1782 | 1783 | 1784 | 1486768856 c:\sfml-2.4.2\include\sfml\graphics\renderwindow.hpp 1785 | 1786 | 1787 | 1788 | 1789 | 1790 | 1791 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\shader.hpp 1792 | 1793 | 1794 | 1795 | 1796 | 1797 | 1798 | 1799 | 1800 | 1801 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\glsl.hpp 1802 | 1803 | 1804 | 1805 | 1806 | 1807 | 1808 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\glsl.inl 1809 | 1810 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\sprite.hpp 1811 | 1812 | 1813 | 1814 | 1815 | 1816 | 1817 | 1486768800 c:\sfml-2.4.2\include\sfml\graphics\text.hpp 1818 | 1819 | 1820 | 1821 | 1822 | 1823 | 1824 | 1825 | 1826 | 1827 | 1828 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window.hpp 1829 | 1830 | 1831 | 1832 | 1833 | 1834 | 1835 | 1836 | 1837 | 1838 | 1839 | 1840 | 1841 | 1842 | 1843 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system.hpp 1844 | 1845 | 1846 | 1847 | 1848 | 1849 | 1850 | 1851 | 1852 | 1853 | 1854 | 1855 | 1856 | 1857 | 1858 | 1859 | 1860 | 1861 | 1862 | 1863 | 1486772398 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\config.hpp 1864 | "TargetConditionals.h" 1865 | 1866 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\clock.hpp 1867 | 1868 | 1869 | 1870 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\export.hpp 1871 | 1872 | 1873 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\time.hpp 1874 | 1875 | 1876 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\err.hpp 1877 | 1878 | 1879 | 1880 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\fileinputstream.hpp 1881 | 1882 | 1883 | 1884 | 1885 | 1886 | 1887 | 1888 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\inputstream.hpp 1889 | 1890 | 1891 | 1892 | 1486772456 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\noncopyable.hpp 1893 | 1894 | 1895 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\lock.hpp 1896 | 1897 | 1898 | 1899 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\memoryinputstream.hpp 1900 | 1901 | 1902 | 1903 | 1904 | 1905 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\mutex.hpp 1906 | 1907 | 1908 | 1909 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\sleep.hpp 1910 | 1911 | 1912 | 1913 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\string.hpp 1914 | 1915 | 1916 | 1917 | 1918 | 1919 | 1920 | 1921 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\utf.hpp 1922 | 1923 | 1924 | 1925 | 1926 | 1927 | 1928 | 1929 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\utf.inl 1930 | 1931 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\string.inl 1932 | 1933 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\thread.hpp 1934 | 1935 | 1936 | 1937 | 1938 | 1939 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\thread.inl 1940 | 1941 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\threadlocal.hpp 1942 | 1943 | 1944 | 1945 | 1946 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\threadlocalptr.hpp 1947 | 1948 | 1949 | 1950 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\threadlocalptr.inl 1951 | 1952 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\vector2.hpp 1953 | 1954 | 1955 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\vector2.inl 1956 | 1957 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\vector3.hpp 1958 | 1959 | 1960 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\system\vector3.inl 1961 | 1962 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\context.hpp 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\export.hpp 1969 | 1970 | 1971 | 1486772456 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\glresource.hpp 1972 | 1973 | 1974 | 1975 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\contextsettings.hpp 1976 | 1977 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\event.hpp 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\joystick.hpp 1985 | 1986 | 1987 | 1988 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\keyboard.hpp 1989 | 1990 | 1991 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\mouse.hpp 1992 | 1993 | 1994 | 1995 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\sensor.hpp 1996 | 1997 | 1998 | 1999 | 2000 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\touch.hpp 2001 | 2002 | 2003 | 2004 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\videomode.hpp 2005 | 2006 | 2007 | 2008 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\window.hpp 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\windowhandle.hpp 2021 | 2022 | 2023 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\window\windowstyle.hpp 2024 | 2025 | 1486772398 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics.hpp 2026 | 2027 | 2028 | 2029 | 2030 | 2031 | 2032 | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 2039 | 2040 | 2041 | 2042 | 2043 | 2044 | 2045 | 2046 | 2047 | 2048 | 2049 | 2050 | 2051 | 2052 | 2053 | 1486772398 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\blendmode.hpp 2054 | 2055 | 2056 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\export.hpp 2057 | 2058 | 2059 | 1486772398 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\circleshape.hpp 2060 | 2061 | 2062 | 2063 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\shape.hpp 2064 | 2065 | 2066 | 2067 | 2068 | 2069 | 2070 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\drawable.hpp 2071 | 2072 | 2073 | 2074 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\renderstates.hpp 2075 | 2076 | 2077 | 2078 | 2079 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\transform.hpp 2080 | 2081 | 2082 | 2083 | 2084 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\rect.hpp 2085 | 2086 | 2087 | 2088 | 2089 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\rect.inl 2090 | 2091 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\transformable.hpp 2092 | 2093 | 2094 | 2095 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\vertexarray.hpp 2096 | 2097 | 2098 | 2099 | 2100 | 2101 | 2102 | 2103 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\vertex.hpp 2104 | 2105 | 2106 | 2107 | 2108 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\color.hpp 2109 | 2110 | 2111 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\primitivetype.hpp 2112 | 2113 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\convexshape.hpp 2114 | 2115 | 2116 | 2117 | 2118 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\font.hpp 2119 | 2120 | 2121 | 2122 | 2123 | 2124 | 2125 | 2126 | 2127 | 2128 | 2129 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\glyph.hpp 2130 | 2131 | 2132 | 2133 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\texture.hpp 2134 | 2135 | 2136 | 2137 | 2138 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\image.hpp 2139 | 2140 | 2141 | 2142 | 2143 | 2144 | 2145 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\rectangleshape.hpp 2146 | 2147 | 2148 | 2149 | 1486772456 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\rendertarget.hpp 2150 | 2151 | 2152 | 2153 | 2154 | 2155 | 2156 | 2157 | 2158 | 2159 | 2160 | 2161 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\view.hpp 2162 | 2163 | 2164 | 2165 | 2166 | 2167 | 1486772456 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\rendertexture.hpp 2168 | 2169 | 2170 | 2171 | 2172 | 1486772456 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\renderwindow.hpp 2173 | 2174 | 2175 | 2176 | 2177 | 2178 | 2179 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\shader.hpp 2180 | 2181 | 2182 | 2183 | 2184 | 2185 | 2186 | 2187 | 2188 | 2189 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\glsl.hpp 2190 | 2191 | 2192 | 2193 | 2194 | 2195 | 2196 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\glsl.inl 2197 | 2198 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\sprite.hpp 2199 | 2200 | 2201 | 2202 | 2203 | 2204 | 2205 | 1486772400 c:\sfml-2.4.2-tdm-gcc-32\include\sfml\graphics\text.hpp 2206 | 2207 | 2208 | 2209 | 2210 | 2211 | 2212 | 2213 | 2214 | 2215 | 2216 | 1513437912 c:\sfemovie-tdm-gcc-32\include\sfemovie\movie.hpp 2217 | 2218 | 2219 | 2220 | 2221 | 2222 | 2223 | 2224 | 2225 | 1513437912 c:\sfemovie-tdm-gcc-32\include\sfemovie\visibility.hpp 2226 | 2227 | 2228 | 1513437912 c:\sfemovie-tdm-gcc-32\include\sfemovie\streamselection.hpp 2229 | 2230 | 2231 | 2232 | 2233 | 1520821305 c:\users\rew\documents\dynplugins\system_opengl\optionsmenu.h 2234 | 2235 | 2236 | 2237 | 2238 | 1520821315 source:c:\users\rew\documents\dynplugins\system_opengl\optionsmenu.cpp 2239 | "OptionsMenu.h" 2240 | 2241 | 1513437912 c:\sfemovie-mingw-w64\include\sfemovie\movie.hpp 2242 | 2243 | 2244 | 2245 | 2246 | 2247 | 2248 | 2249 | 2250 | 1513437912 c:\sfemovie-mingw-w64\include\sfemovie\visibility.hpp 2251 | 2252 | 2253 | 1513437912 c:\sfemovie-mingw-w64\include\sfemovie\streamselection.hpp 2254 | 2255 | 2256 | 2257 | 2258 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window.hpp 2259 | 2260 | 2261 | 2262 | 2263 | 2264 | 2265 | 2266 | 2267 | 2268 | 2269 | 2270 | 2271 | 2272 | 2273 | 2274 | 2275 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system.hpp 2276 | 2277 | 2278 | 2279 | 2280 | 2281 | 2282 | 2283 | 2284 | 2285 | 2286 | 2287 | 2288 | 2289 | 2290 | 2291 | 2292 | 2293 | 2294 | 2295 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\config.hpp 2296 | "TargetConditionals.h" 2297 | 2298 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\clock.hpp 2299 | 2300 | 2301 | 2302 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\export.hpp 2303 | 2304 | 2305 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\time.hpp 2306 | 2307 | 2308 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\err.hpp 2309 | 2310 | 2311 | 2312 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\fileinputstream.hpp 2313 | 2314 | 2315 | 2316 | 2317 | 2318 | 2319 | 2320 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\inputstream.hpp 2321 | 2322 | 2323 | 2324 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\noncopyable.hpp 2325 | 2326 | 2327 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\lock.hpp 2328 | 2329 | 2330 | 2331 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\memoryinputstream.hpp 2332 | 2333 | 2334 | 2335 | 2336 | 2337 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\mutex.hpp 2338 | 2339 | 2340 | 2341 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\sleep.hpp 2342 | 2343 | 2344 | 2345 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\string.hpp 2346 | 2347 | 2348 | 2349 | 2350 | 2351 | 2352 | 2353 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\utf.hpp 2354 | 2355 | 2356 | 2357 | 2358 | 2359 | 2360 | 2361 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\utf.inl 2362 | 2363 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\string.inl 2364 | 2365 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\thread.hpp 2366 | 2367 | 2368 | 2369 | 2370 | 2371 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\thread.inl 2372 | 2373 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\threadlocal.hpp 2374 | 2375 | 2376 | 2377 | 2378 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\threadlocalptr.hpp 2379 | 2380 | 2381 | 2382 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\threadlocalptr.inl 2383 | 2384 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\vector2.hpp 2385 | 2386 | 2387 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\vector2.inl 2388 | 2389 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\vector3.hpp 2390 | 2391 | 2392 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\system\vector3.inl 2393 | 2394 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\clipboard.hpp 2395 | 2396 | 2397 | 2398 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\export.hpp 2399 | 2400 | 2401 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\context.hpp 2402 | 2403 | 2404 | 2405 | 2406 | 2407 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\glresource.hpp 2408 | 2409 | 2410 | 2411 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\contextsettings.hpp 2412 | 2413 | 2414 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\cursor.hpp 2415 | 2416 | 2417 | 2418 | 2419 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\event.hpp 2420 | 2421 | 2422 | 2423 | 2424 | 2425 | 2426 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\joystick.hpp 2427 | 2428 | 2429 | 2430 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\keyboard.hpp 2431 | 2432 | 2433 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\mouse.hpp 2434 | 2435 | 2436 | 2437 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\sensor.hpp 2438 | 2439 | 2440 | 2441 | 2442 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\touch.hpp 2443 | 2444 | 2445 | 2446 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\videomode.hpp 2447 | 2448 | 2449 | 2450 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\window.hpp 2451 | 2452 | 2453 | 2454 | 2455 | 2456 | 2457 | 2458 | 2459 | 2460 | 2461 | 2462 | 2463 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\windowhandle.hpp 2464 | 2465 | 2466 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\window\windowstyle.hpp 2467 | 2468 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics.hpp 2469 | 2470 | 2471 | 2472 | 2473 | 2474 | 2475 | 2476 | 2477 | 2478 | 2479 | 2480 | 2481 | 2482 | 2483 | 2484 | 2485 | 2486 | 2487 | 2488 | 2489 | 2490 | 2491 | 2492 | 2493 | 2494 | 2495 | 2496 | 2497 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\blendmode.hpp 2498 | 2499 | 2500 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\export.hpp 2501 | 2502 | 2503 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\circleshape.hpp 2504 | 2505 | 2506 | 2507 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\shape.hpp 2508 | 2509 | 2510 | 2511 | 2512 | 2513 | 2514 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\drawable.hpp 2515 | 2516 | 2517 | 2518 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\renderstates.hpp 2519 | 2520 | 2521 | 2522 | 2523 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\transform.hpp 2524 | 2525 | 2526 | 2527 | 2528 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\rect.hpp 2529 | 2530 | 2531 | 2532 | 2533 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\rect.inl 2534 | 2535 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\transformable.hpp 2536 | 2537 | 2538 | 2539 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\vertexarray.hpp 2540 | 2541 | 2542 | 2543 | 2544 | 2545 | 2546 | 2547 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\vertex.hpp 2548 | 2549 | 2550 | 2551 | 2552 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\color.hpp 2553 | 2554 | 2555 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\primitivetype.hpp 2556 | 2557 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\convexshape.hpp 2558 | 2559 | 2560 | 2561 | 2562 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\font.hpp 2563 | 2564 | 2565 | 2566 | 2567 | 2568 | 2569 | 2570 | 2571 | 2572 | 2573 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\glyph.hpp 2574 | 2575 | 2576 | 2577 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\texture.hpp 2578 | 2579 | 2580 | 2581 | 2582 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\image.hpp 2583 | 2584 | 2585 | 2586 | 2587 | 2588 | 2589 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\rectangleshape.hpp 2590 | 2591 | 2592 | 2593 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\rendertarget.hpp 2594 | 2595 | 2596 | 2597 | 2598 | 2599 | 2600 | 2601 | 2602 | 2603 | 2604 | 2605 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\view.hpp 2606 | 2607 | 2608 | 2609 | 2610 | 2611 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\rendertexture.hpp 2612 | 2613 | 2614 | 2615 | 2616 | 2617 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\renderwindow.hpp 2618 | 2619 | 2620 | 2621 | 2622 | 2623 | 2624 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\shader.hpp 2625 | 2626 | 2627 | 2628 | 2629 | 2630 | 2631 | 2632 | 2633 | 2634 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\glsl.hpp 2635 | 2636 | 2637 | 2638 | 2639 | 2640 | 2641 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\glsl.inl 2642 | 2643 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\sprite.hpp 2644 | 2645 | 2646 | 2647 | 2648 | 2649 | 2650 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\text.hpp 2651 | 2652 | 2653 | 2654 | 2655 | 2656 | 2657 | 2658 | 2659 | 2660 | 2661 | 1525848020 c:\sfml-2.5.0-tdm-gcc-32\include\sfml\graphics\vertexbuffer.hpp 2662 | 2663 | 2664 | 2665 | 2666 | 2667 | -------------------------------------------------------------------------------- /src/system_opengl.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | --------------------------------------------------------------------------------