Flash Guard
Release Video
https://www.youtube.com/watch?v=7SElDRQAjfk
What is Flash Guard
This is a ReShade shader designed to prevent sudden screen flashing (photosensitive seizures prevention). It effectively suppresses or reduces intense flashes often found in 90s light gun shooters and other retro titles.
No cheat codes, patches, or texture replacements required.
Simply select the target color and sensitivity to suppress flashes.
Compatible with any hardware or software (NES, PS1, Saturn, PS2, PC, etc.).
It can also be applied to old movies and anime footage.
Limitations
- Requires Reshade
Downloads
Setup guide
Information taken from the included Flash Guard 1.0.3.1 Readme.txt
Install ReShade
Download and install ReShade from the official website. https://reshade.me
Using ReShade presets allows you to easily apply specific settings for each game.
Install Flash Guard
Copy FlashGuard.fx into the reshade-shaders/Shaders folder within your game's installation directory.
Example: XXXX/reshade-shaders/Shaders/FlashGuard.fx
Enable in Game
Open the ReShade overlay (Home key), type "FlashGuard" in the search bar or find it in the list,
and check the box to enable the shader.
Settings Descriptions
Detection Settings
Detection Mode:
- Target: Color A Only: Detects and suppresses only "Target Color A".
- Target: Color A & B: Detects and suppresses both A and B colors.
- Famicom/NES Mode: Specialized mode for NES light gun games.
- Target Color A / B: Specify the color of the flash you want to prevent.
- Picking the exact flash color using the color palette is the easiest way.
- If it doesn't respond well, try slightly adjusting the color (e.g., White to Light Gray) or lowering the sensitivity. Entering direct RGB values from a screen capture can improve accuracy.
- Sensitivity (Color A / B): Lower values trigger the guard more aggressively (wider range).
- Higher values require a more precise color match.
- Sampling Precision: Sets how many pixels are sampled for color detection. "65535" is recommended for general use.
Gaurd Action Settings
Sets the behavior when a flash is detected.
- Guard Method
- Freeze Previous Frame (Recommended): Displays the still image from immediately before the flash.
- Color Overlay Only: Covers the screen with a specific color.
- Guard Duration
Sets how many frames the guard is maintained after detection. If a flash lasts multiple frames, setting this to the same or higher value will completely remove it.
- Safety Guard Limit
A safety feature to prevent the screen from staying frozen indefinitely if a flash is constantly detected. The guard will force-release after this number of frames.
Color Overlay Settings (Advanced)
Configures the behavior when "Color Overlay Only" is selected as the Guard Method.
- Blend Mode
Options include Fill, Add, Subtract, and Multiply. Since this doesn't skip frames, no stuttering occurs.
- Animation Pattern
Allows the overlay color to "Fade Out" etc., during the guard.
- Post-Guard Persistence
Sets the duration of the overlay effect after the flash detection ends.
Border & Exclusion Settings (Optional)
Allows setting the size and color of a border (useful for Sinden Lightgun users).
Game Specific Settings (Developer)
Game Table
| System | Game | Emulator/Driver | Mode | Colour A(R.G.B) | Sensitivity(A) | Notes |
|---|---|---|---|---|---|---|
| FAMICON/NES | duck hunt | nestopia/D3D9 | FAMICON/NES | - | - | If 2 duck then 3 frame guard |
| FAMICON/NES | wild gunman | nestopia/D3D9 | FAMICON/NES | - | - | If 3 gunman then 4 frame guard |
| FAMICON/NES | Hogan's Alley | nestopia/D3D9 | FAMICON/NES | - | - | If 4 gang then 5 frame guard |
| PlayStation | gunbullet/POINT BLANK | duckstation/vulkan | A | White | 0.85 | - |
| PlayStation | gunbarl/POINT BLANK 2 | duckstation/vulkan | A | White | 0.85 | - |
| PlayStation | gunbalina/POINT BLANK 3 | duckstation/vulkan | A | 80.176.128 | 0.85 | It doesn't work well in white |
| PlayStation | Time Crisis | duckstation/vulkan | A | White | 0.85 | - |
| SegaSaturn | Virtua COP 1 | medonaffe/OpenGL | A | White | 0.85 | Example |
| SegaSaturn | Virtua COP 2 | medonaffe/OpenGL | A | White | 0.85 | Example |
| SegaSaturn | X-men vs Street fighter | medonaffe/OpenGL | A | White | 0.85 | Royal Flash is without Flash : ) |
| PlayStation2 | Time Crisis 2 | PCSX2/Vulkan | A | 125.125.125 | 0.85 | It doesn't work well in white |
| PC | Mad Bullets | Steam/OpenGL | A | White | - | longer flash. Not perfect guard |
| - | - | - | - | - | - | - |
Notes
- While checking the flashing color directly on the game screen, select the target color in the FlashGuard color palette and confirm that the flashing disappears.
- Capturing the flash moment and getting RGB will be more accurate.
- Flashing lasts for several frames, the guard frames should also match. Adding too many guard frames will cause the screen to stutter.
- Set a maximum number of frames for safety in scenes with pure white skies or snow to prevent the screen from freezing due to false detection.
FlashGuard – Setup Notes and Game Testing (tested by Bratwurstmensch)
Renderer Compatibility
Some users experienced issues with FlashGuard when using Direct3D 11.
Switching the renderer to Direct3D 12 resolved the problem and allowed FlashGuard to work correctly even with default settings.
Recommendation:
- If FlashGuard does not work correctly:
- Open emulator graphics settings.
- Change Renderer from Direct3D 11 / Vulkan / etc... → Direct3D 12.
- Restart the emulator if necessary.
Frame Suppression / Guard Duration
FlashGuard suppresses the screen flash by skipping a very small portion of a frame.
Default Adjustment
The guard duration can normally be adjusted in 0.1 ms increments.
Example:
0.3 ms0.4 ms
For some games (for example Time Crisis) the difference between these values can slightly affect gameplay smoothness.
Fine Adjustment (Advanced)
You can enable finer tuning (0.001 ms increments) by editing the shader file.
Steps:
- Open
FlashGuard.fxin a text editor (e.g., Notepad). - Find the line: ui_step = 0.1
- Change it to: ui_step = 0.001
- Save the file.
You can now adjust guard duration in 0.001 ms steps.
Example values tested:
0.4 ms– stable default0.356 ms– tested sweet spot for smoother gameplay
Note: Differences below ~0.05 ms are usually very difficult to notice.
Game Color Codes
FlashGuard works best by detecting specific flash colors used by games and reduce falce triggers by raising the Sensitvity at 1.000.
<<< Insert the following hex color codes into the bottom color field of the shader settings.
Game Specific Settings (values tested by Bratwurstmensch)
| System | Game | Mode | hex color code | Sensitivity(A) | Sensitivity(B) | Notes |
|---|---|---|---|---|---|---|
| PlayStation | Judge Dredd | A | #00646A | 1.000 | - | - |
| PlayStation | Area 51 | A | #00646A | 1.000 | - | - |
| PlayStation | Point Blank | A | #00646A | 1.000 | - | - |
| PlayStation | Point Blank 2 | A | #00646A | 1.000 | - | - |
| PlayStation | Time Crisis Project Titan | A | #00646A | 1.000 | - | - |
| PlayStation | Ghoul Panic | A | #50B080 | 1.000 | - | if the game is freezing during calibration, turn off Flash Guard and turn it back on after calibration is done |
| PlayStation | Point Blank 3 | A | #2E6337 | 1.000 | - | - |
| PlayStation | Project Horned Owl | A | #00007E | 1.000 | - | - |
| PlayStation | Rescue Shot | A | #0000A8 | 1.000 | - | - |
| PlayStation | Elemental Gearbolt | A & B | #0000FF | 0.509 | 0.509 | set the same hex color code to A & B |
| PlayStation | Extreme Ghostbusters | A & B | #0000FF | 0.509 | 0.509 | set the same hex color code to A & B
if the game is freezing during calibration, turn off Flash Guard and turn it back on after calibration is done |
| PlayStation | Resident Evil Survivor | A | #4C2925 | 1.000 | - |
Troubleshooting
Gameplay freezes
If the game freezes or stalls, the selected flash color is likely not a perfect match.
Possible fixes:
- Adjust the color value slightly.
- Increase or decrease Sensitivity.
- turn off Flash Guard for a moment (Gun calibration screens tend to freeze in some games, but it works afterwards)