(border) Add SGB, Gameboy-Player, and faux-SGBA border shaders
7
border/gameboy-player/README.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
These shader presets will allow you to apply a 608x448 Game Boy Player border around a 240x160 input image from a Game Boy Advance core, with the input being scaled 2x to fit the border.
|
||||
|
||||
Please note that RetroArch's integer scaling function will not automatically set a correct integer scale for the output image, as it will only take the Game Boy Advance core's reported resolution of 240x160 into account, and not the output image's 608x448 resolution. You will need to set a custom viewport size, either with the Custom Ratio menu option or defining custom_viewport_width and custom_viewport_height in the config file, setting Aspect Ratio Index to "Custom", and enabling Integer Scaling to center the image automatically.
|
||||
|
||||
An example border is included, you can swap it out with another 608x448 Game Boy Player border in png format with the center 240x160 transparent. The borders included with this shader were ripped from a Game Boy Player disc by a kind anonymous user and were edited to appear correct with a GBA image fully shown.
|
||||
|
||||
Using CRT-Royale with this border shader may result in flickering. This is due to it displaying the border shader as 480i, due to the output image being greater than 400px vertically. Disable interlacing detection in CRT Royale's user-settings.h if want 480p instead.
|
20
border/gameboy-player/gameboy-player-gba-color.slangp
Normal file
|
@ -0,0 +1,20 @@
|
|||
shaders = "2"
|
||||
shader0 = "../../handheld/shaders/color/gba-color.slang"
|
||||
shader1 = "../shaders/imgborder-gbp.slang"
|
||||
|
||||
scale_type0 = "source"
|
||||
scale0 = "1.0000"
|
||||
filter_linear0 = "false"
|
||||
|
||||
scale_type_x1 = "absolute"
|
||||
scale_x1 = "608"
|
||||
scale_type_y1 = "absolute"
|
||||
scale_y1 = "448"
|
||||
|
||||
parameters = "box_scale;in_res_x;in_res_y"
|
||||
box_scale = "2.000000"
|
||||
in_res_x = "240.000000"
|
||||
in_res_y = "160.000000"
|
||||
|
||||
textures = "BORDER"
|
||||
BORDER = "gameboy-player.png"
|
BIN
border/gameboy-player/gameboy-player.png
Normal file
After Width: | Height: | Size: 8 KiB |
15
border/gameboy-player/gameboy-player.slangp
Normal file
|
@ -0,0 +1,15 @@
|
|||
shaders = "1"
|
||||
shader0 = "../shaders/imgborder-gbp.slang"
|
||||
|
||||
scale_type_x0 = "absolute"
|
||||
scale_x0 = "608"
|
||||
scale_type_y0 = "absolute"
|
||||
scale_y0 = "448"
|
||||
|
||||
parameters = "box_scale;in_res_x;in_res_y"
|
||||
box_scale = "2.000000"
|
||||
in_res_x = "240.000000"
|
||||
in_res_y = "160.000000"
|
||||
|
||||
textures = "BORDER"
|
||||
BORDER = "gameboy-player.png"
|
BIN
border/gameboy-player/sample-borders/agb-pepper.png
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
border/gameboy-player/sample-borders/agb.png
Normal file
After Width: | Height: | Size: 8 KiB |
BIN
border/gameboy-player/sample-borders/exotic.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
border/gameboy-player/sample-borders/gbpblack.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
border/gameboy-player/sample-borders/gbpblocks.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
border/gameboy-player/sample-borders/gbpcamo.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
border/gameboy-player/sample-borders/gbpcube.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
border/gameboy-player/sample-borders/gbpcube2.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
border/gameboy-player/sample-borders/gbpknit.png
Normal file
After Width: | Height: | Size: 94 KiB |
BIN
border/gameboy-player/sample-borders/gbpmachine.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
border/gameboy-player/sample-borders/gbpplanets.png
Normal file
After Width: | Height: | Size: 121 KiB |
BIN
border/gameboy-player/sample-borders/gbppokemon.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
border/gameboy-player/sample-borders/gbpstone.png
Normal file
After Width: | Height: | Size: 274 KiB |
BIN
border/gameboy-player/sample-borders/gbpwood.png
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
border/gameboy-player/sample-borders/pkmnblue.png
Normal file
After Width: | Height: | Size: 28 KiB |
5
border/sgb/README.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
These shader presets will allow you to apply a 256x224 Super Game Boy border around a 160x144 input image from a Game Boy core.
|
||||
|
||||
Please note that RetroArch's integer scaling function will not automatically set a correct integer scale for the output image, as it will only take the Game Boy core's reported resolution of 160x144 into account, and not the output image's 256x224 resolution. You will need to set a custom viewport size, either with the Custom Ratio menu option or defining custom_viewport_width and custom_viewport_height in the config file, setting Aspect Ratio Index to "Custom", and enabling Integer Scaling to center the image automatically.
|
||||
|
||||
An example border is included, you can swap it out with another 256x224 Super Game Boy border in png format with the center 160x144 transparent. Borders derived from an emulator screenshot may be shifted up one pixel and off center, so you would need to shift it down one pixel to center it. The "Super Game Boy Color" borders were created by BLUEamnesiac.
|
BIN
border/sgb/sample-borders/Mega Man.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
border/sgb/sample-borders/Pokemon2.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
border/sgb/sample-borders/bomberman.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
border/sgb/sample-borders/castlevania.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
border/sgb/sample-borders/cinema.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
border/sgb/sample-borders/donkey-kong-country.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
border/sgb/sample-borders/donkey-kong.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
border/sgb/sample-borders/game-and-watch.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
border/sgb/sample-borders/gbc-berry.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/gbc-dandelion.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/gbc-grape.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/gbc-kiwi.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/gbc-red.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/gbc-teal.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/gblight.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/gbpocket.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/kirby-2.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
border/sgb/sample-borders/libretro-arcade.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
border/sgb/sample-borders/pokemon-blue.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/pokemon-crystal.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/pokemon-gold.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/pokemon-green.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
border/sgb/sample-borders/pokemon-red.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
border/sgb/sample-borders/pokemon-silver.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
border/sgb/sample-borders/pokemon-yellow.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
border/sgb/sample-borders/sgb-default.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
border/sgb/sample-borders/sgb2-circuitboard.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
BIN
border/sgb/sample-borders/sgb2-default.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
border/sgb/sample-borders/space-invaders.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
border/sgb/sample-borders/street-fighter-2.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
border/sgb/sample-borders/tetris.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
border/sgb/sample-borders/wario-land.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
border/sgb/sample-borders/zelda.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
border/sgb/sgb.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
16
border/sgb/sgb.slangp
Normal file
|
@ -0,0 +1,16 @@
|
|||
shaders = "1"
|
||||
shader0 = "../shaders/imgborder-sgb.slang"
|
||||
|
||||
scale_type_x0 = "absolute"
|
||||
scale_x0 = "256"
|
||||
scale_type_y0 = "absolute"
|
||||
scale_y0 = "224"
|
||||
|
||||
parameters = "box_scale;location;in_res_x;in_res_y"
|
||||
box_scale = "1.000000"
|
||||
location = "0.500000"
|
||||
in_res_x = "160.000000"
|
||||
in_res_y = "144.000000"
|
||||
|
||||
textures = "BORDER"
|
||||
BORDER = "sgb.png"
|
5
border/sgba/README.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
These shader presets will allow you to apply a 304x224 Super Game Boy Advance border around a 240x160 input image from a Game Boy Advance core.
|
||||
|
||||
Please note that RetroArch's integer scaling function will not automatically set a correct integer scale for the output image, as it will only take the Game Boy Advance core's reported resolution of 240x160 into account, and not the output image's 304x224 resolution. You will need to set a custom viewport size, either with the Custom Ratio menu option or defining custom_viewport_width and custom_viewport_height in the config file, setting Aspect Ratio Index to "Custom", and enabling Integer Scaling to center the image automatically.
|
||||
|
||||
An example border is included, you can swap it out with another 302x224 Super Game Boy Advance border in png format with the center 240x160 transparent. The borders included with this shader were created by BLUEamnesiac.
|
BIN
border/sgba/sample-borders/sgba-black.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
border/sgba/sample-borders/sgba-indigo.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
border/sgba/sample-borders/sgba-platinum.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
border/sgba/sample-borders/sgba-spice.png
Normal file
After Width: | Height: | Size: 19 KiB |
20
border/sgba/sgba-gba-color.slangp
Normal file
|
@ -0,0 +1,20 @@
|
|||
shaders = "2"
|
||||
shader0 = "../../handheld/shaders/color/gba-color.slang"
|
||||
shader1 = "../shaders/imgborder-sgba.slang"
|
||||
|
||||
scale_type0 = "source"
|
||||
scale0 = "1.0000"
|
||||
filter_linear0 = "false"
|
||||
|
||||
scale_type_x1 = "absolute"
|
||||
scale_x1 = "304"
|
||||
scale_type_y1 = "absolute"
|
||||
scale_y1 = "224"
|
||||
|
||||
parameters = "box_scale;in_res_x;in_res_y"
|
||||
box_scale = "1.000000"
|
||||
in_res_x = "240.000000"
|
||||
in_res_y = "160.000000"
|
||||
|
||||
textures = "BORDER"
|
||||
BORDER = "sgba.png"
|
BIN
border/sgba/sgba.png
Normal file
After Width: | Height: | Size: 19 KiB |
15
border/sgba/sgba.slangp
Normal file
|
@ -0,0 +1,15 @@
|
|||
shaders = "1"
|
||||
shader0 = "../shaders/imgborder-sgba.slang"
|
||||
|
||||
scale_type_x0 = "absolute"
|
||||
scale_x0 = "304"
|
||||
scale_type_y0 = "absolute"
|
||||
scale_y0 = "224"
|
||||
|
||||
parameters = "box_scale;in_res_x;in_res_y"
|
||||
box_scale = "1.000000"
|
||||
in_res_x = "240.000000"
|
||||
in_res_y = "160.000000"
|
||||
|
||||
textures = "BORDER"
|
||||
BORDER = "sgba.png"
|
12
border/shaders/imgborder-gbp.slang
Normal file
|
@ -0,0 +1,12 @@
|
|||
#version 450
|
||||
|
||||
#pragma parameter box_scale "Image Scale" 2.0 1.0 10.0 1.0
|
||||
#pragma parameter location_x "Viewport X Pos." 0.5 0.0 1.0 0.05
|
||||
#pragma parameter location_y "Viewport Y Pos." 0.5 0.0 1.0 0.05
|
||||
#pragma parameter in_res_x "Viewport Size X" 240.0 100.0 600.0 1.0
|
||||
#pragma parameter in_res_y "Viewport Size Y" 160.0 64.0 512.0 1.0
|
||||
#pragma parameter border_on_top "Show Viewport" 1.0 0.0 1.0 1.0
|
||||
#pragma parameter border_zoom_x "Border Zoom X" 1.0 0.0 4.0 0.01
|
||||
#pragma parameter border_zoom_y "Border Zoom Y" 1.0 0.0 4.0 0.01
|
||||
|
||||
#include "imgborder.inc"
|
12
border/shaders/imgborder-sgb.slang
Normal file
|
@ -0,0 +1,12 @@
|
|||
#version 450
|
||||
|
||||
#pragma parameter box_scale "Image Scale" 1.0 1.0 10.0 1.0
|
||||
#pragma parameter location_x "Viewport X Pos." 0.5 0.0 1.0 0.05
|
||||
#pragma parameter location_y "Viewport Y Pos." 0.5 0.0 1.0 0.05
|
||||
#pragma parameter in_res_x "Viewport Size X" 160.0 100.0 600.0 1.0
|
||||
#pragma parameter in_res_y "Viewport Size Y" 144.0 64.0 512.0 1.0
|
||||
#pragma parameter border_on_top "Show Viewport" 1.0 0.0 1.0 1.0
|
||||
#pragma parameter border_zoom_x "Border Zoom X" 1.0 0.0 4.0 0.01
|
||||
#pragma parameter border_zoom_y "Border Zoom Y" 1.0 0.0 4.0 0.01
|
||||
|
||||
#include "imgborder.inc"
|
12
border/shaders/imgborder-sgba.slang
Normal file
|
@ -0,0 +1,12 @@
|
|||
#version 450
|
||||
|
||||
#pragma parameter box_scale "Image Scale" 1.0 1.0 10.0 1.0
|
||||
#pragma parameter location_x "Viewport X Pos." 0.5 0.0 1.0 0.05
|
||||
#pragma parameter location_y "Viewport Y Pos." 0.5 0.0 1.0 0.05
|
||||
#pragma parameter in_res_x "Viewport Size X" 240.0 100.0 600.0 1.0
|
||||
#pragma parameter in_res_y "Viewport Size Y" 160.0 64.0 512.0 1.0
|
||||
#pragma parameter border_on_top "Show Viewport" 1.0 0.0 1.0 1.0
|
||||
#pragma parameter border_zoom_x "Border Zoom X" 1.0 0.0 4.0 0.01
|
||||
#pragma parameter border_zoom_y "Border Zoom Y" 1.0 0.0 4.0 0.01
|
||||
|
||||
#include "imgborder.inc"
|
59
border/shaders/imgborder.inc
Normal file
|
@ -0,0 +1,59 @@
|
|||
// Created by inigo quilez - iq/2014
|
||||
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
|
||||
// modified for slang border shader by hunterk
|
||||
|
||||
layout(push_constant) uniform Push
|
||||
{
|
||||
vec4 OutputSize;
|
||||
vec4 OriginalSize;
|
||||
vec4 SourceSize;
|
||||
uint FrameCount;
|
||||
float box_scale;
|
||||
float location_x;
|
||||
float location_y;
|
||||
float in_res_x;
|
||||
float in_res_y;
|
||||
float border_on_top;
|
||||
float border_zoom_x;
|
||||
float border_zoom_y;
|
||||
} params;
|
||||
|
||||
layout(std140, set = 0, binding = 0) uniform UBO
|
||||
{
|
||||
mat4 MVP;
|
||||
} global;
|
||||
|
||||
#pragma stage vertex
|
||||
layout(location = 0) in vec4 Position;
|
||||
layout(location = 1) in vec2 TexCoord;
|
||||
layout(location = 0) out vec2 vTexCoord;
|
||||
layout(location = 1) out vec2 screen_coord;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = global.MVP * Position;
|
||||
vec2 corrected_size = vec2(params.in_res_x, params.in_res_y);
|
||||
vec2 scale = (params.OutputSize.xy / corrected_size) / params.box_scale;
|
||||
vec2 middle = vec2(params.location_x, params.location_y);
|
||||
vec2 diff = TexCoord.xy - middle;
|
||||
screen_coord = middle + diff * scale;
|
||||
middle = vec2(0.4999, 0.4999);
|
||||
vTexCoord = middle + diff * vec2(params.border_zoom_x, params.border_zoom_y);
|
||||
}
|
||||
|
||||
#pragma stage fragment
|
||||
layout(location = 0) in vec2 vTexCoord;
|
||||
layout(location = 1) in vec2 screen_coord;
|
||||
layout(location = 0) out vec4 FragColor;
|
||||
layout(set = 0, binding = 2) uniform sampler2D Source;
|
||||
layout(set = 0, binding = 3) uniform sampler2D Original;
|
||||
layout(set = 0, binding = 4) uniform sampler2D BORDER;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 screen = texture(Source, screen_coord); //the main video screen
|
||||
vec4 background = vec4(texture(BORDER, vTexCoord)); //put your background function's output here
|
||||
if ( screen_coord.x < 0.9999 && screen_coord.x > 0.0001 && screen_coord.y < 0.9999 && screen_coord.y > 0.0001 && params.border_on_top > 0.5 )
|
||||
background.a *= 0.0;
|
||||
FragColor = vec4(mix(screen, background, background.a));
|
||||
}
|
12
border/shaders/imgborder.slang
Normal file
|
@ -0,0 +1,12 @@
|
|||
#version 450
|
||||
|
||||
#pragma parameter box_scale "Image Scale" 4.0 1.0 10.0 1.0
|
||||
#pragma parameter location_x "Viewport X Pos." 0.5 0.0 1.0 0.05
|
||||
#pragma parameter location_y "Viewport Y Pos." 0.5 0.0 1.0 0.05
|
||||
#pragma parameter in_res_x "Viewport Size X" 320.0 100.0 600.0 1.0
|
||||
#pragma parameter in_res_y "Viewport Size Y" 240.0 64.0 512.0 1.0
|
||||
#pragma parameter border_on_top "Show Viewport" 1.0 0.0 1.0 1.0
|
||||
#pragma parameter border_zoom_x "Border Zoom X" 1.0 0.0 4.0 0.01
|
||||
#pragma parameter border_zoom_y "Border Zoom Y" 1.0 0.0 4.0 0.01
|
||||
|
||||
#include "imgborder.inc"
|