From da1a96f04ea8d312db558d69eaa2db39871fbe59 Mon Sep 17 00:00:00 2001 From: MajorPainTheCactus Date: Thu, 17 Mar 2022 21:26:30 +0000 Subject: [PATCH] Added 4K 300TVL support (8K still to do) Added Sony PVM 1910 simulation Added Virtua Fighter Arcade simulation (still a little early) Cleaned up parameters with uneeded/confusing instructions --- ...t-sony-megatron-sega-virtua-fighter.slangp | 25 +++++++++++++++++ hdr/crt-sony-megatron-sony-pvm-1910.slangp | 28 +++++++++++++++++++ hdr/shaders/crt-sony-megatron.slang | 24 ++++++++++------ hdr/shaders/include/parameters.h | 7 +---- 4 files changed, 70 insertions(+), 14 deletions(-) create mode 100644 hdr/crt-sony-megatron-sega-virtua-fighter.slangp create mode 100644 hdr/crt-sony-megatron-sony-pvm-1910.slangp diff --git a/hdr/crt-sony-megatron-sega-virtua-fighter.slangp b/hdr/crt-sony-megatron-sega-virtua-fighter.slangp new file mode 100644 index 00000000..135f9877 --- /dev/null +++ b/hdr/crt-sony-megatron-sega-virtua-fighter.slangp @@ -0,0 +1,25 @@ +#reference "crt-arcade-4k-hdr.slangp" + +hcrt_paper_white_nits = "200.000000" +hcrt_expand_gamut = "1.000000" +hcrt_red_vertical_convergence = "0.200000" +hcrt_green_vertical_convergence = "0.200000" +hcrt_blue_vertical_convergence = "-0.230000" +hcrt_red_horizontal_convergence = "0.460000" +hcrt_green_horizontal_convergence = "-0.340000" +hcrt_blue_horizontal_convergence = "-0.340000" +hcrt_red_scanline_min = "1.0000000" +hcrt_red_scanline_max = "2.000000" +hcrt_red_scanline_attack = "1.000000" +hcrt_green_scanline_min = "1.000000" +hcrt_green_scanline_max = "2.000000" +hcrt_green_scanline_attack = "1.000000" +hcrt_blue_scanline_min = "1.000000" +hcrt_blue_scanline_max = "2.000000" +hcrt_blue_scanline_attack = "1.000000" +hcrt_red_beam_sharpness = "0.500000" +hcrt_red_beam_attack = "0.2000000" +hcrt_green_beam_sharpness = "0.500000" +hcrt_green_beam_attack = "0.200000" +hcrt_blue_beam_sharpness = "0.500000" +hcrt_blue_beam_attack = "0.200000" \ No newline at end of file diff --git a/hdr/crt-sony-megatron-sony-pvm-1910.slangp b/hdr/crt-sony-megatron-sony-pvm-1910.slangp new file mode 100644 index 00000000..dd4a97e3 --- /dev/null +++ b/hdr/crt-sony-megatron-sony-pvm-1910.slangp @@ -0,0 +1,28 @@ +#reference "crt-sony-megatron-sony-pvm.slangp" + +hcrt_crt_resolution = "0.000000" +hcrt_colour_system = "0.000000" +hcrt_white_temperature = "2800.000000" +hcrt_expand_gamut = "1.000000" +hcrt_brightness = "0.150000" +hcrt_contrast = "0.000000" +hcrt_saturation = "0.100000" +hcrt_gamma = "0.250000" +hcrt_red_vertical_convergence = "0.000000" +hcrt_green_vertical_convergence = "-0.150000" +hcrt_blue_vertical_convergence = "0.000000" +hcrt_red_scanline_min = "0.400000" +hcrt_red_scanline_max = "0.750000" +hcrt_red_scanline_attack = "0.350000" +hcrt_green_scanline_min = "0.400000" +hcrt_green_scanline_max = "1.000000" +hcrt_green_scanline_attack = "0.350000" +hcrt_blue_scanline_min = "0.400000" +hcrt_blue_scanline_max = "0.750000" +hcrt_blue_scanline_attack = "0.350000" +hcrt_red_beam_sharpness = "1.400000" +hcrt_red_beam_attack = "0.7200000" +hcrt_green_beam_sharpness = "1.400000" +hcrt_green_beam_attack = "0.800000" +hcrt_blue_beam_sharpness = "1.400000" +hcrt_blue_beam_attack = "0.450000" diff --git a/hdr/shaders/crt-sony-megatron.slang b/hdr/shaders/crt-sony-megatron.slang index 7c9b19ed..ecb6d402 100644 --- a/hdr/shaders/crt-sony-megatron.slang +++ b/hdr/shaders/crt-sony-megatron.slang @@ -164,7 +164,7 @@ const vec3 kColourMask[3] = { kRedChannel, kGreenChannel, kBlueChannel }; #define kSlotMask 2 #define kBGRAxis 2 -#define kTVLAxis 3 +#define kTVLAxis 4 #define kResolutionAxis 2 // APERTURE GRILLE MASKS @@ -186,15 +186,17 @@ const vec3 kColourMask[3] = { kRedChannel, kGreenChannel, kBlueChannel }; #define kRRGGBBX { kRed, kRed, kGreen, kGreen, kBlue, kBlue, kBlack } #define kBBGGRRX { kBlue, kBlue, kGreen, kGreen, kRed, kRed, kBlack } -const uint kApertureGrilleMaskSize[kResolutionAxis][kTVLAxis] = { { 4, 3, 2 }, { 7, 5, 4 } }; //4K: 600 TVL, 800 TVL, 1000 TVL 8K: 600 TVL, 800 TVL, 1000 TVL +const uint kApertureGrilleMaskSize[kResolutionAxis][kTVLAxis] = { { 7, 4, 3, 2 }, { 7, 7, 5, 4 } }; //4K: 300 TVL, 600 TVL, 800 TVL, 1000 TVL 8K: 300 TVL, 600 TVL, 800 TVL, 1000 TVL const uint kApertureGrilleMasks[kResolutionAxis][kTVLAxis][kBGRAxis][kMaxApertureGrilleSize] = { { // 4K + { kRRGGBBX, kBBGGRRX }, // 300 TVL { kRGBX, kBGRX }, // 600 TVL { kBGR, kRGB }, // 800 TVL { kMG, kGM } // 1000 TVL }, { // 8K + { kRRGGBBX, kBBGGRRX }, // 300 TVL { kRRGGBBX, kBBGGRRX }, // 600 TVL { kRYCBX, kRYCBX }, // 800 TVL { kRGBX, kBGRX } // 1000 TVL @@ -244,16 +246,20 @@ const uint kApertureGrilleMasks[kResolutionAxis][kTVLAxis][kBGRAxis][kMaxApertur #define kGGRRRRBBBBGG_GGRRRRBBBBGG_GGRRRRBBBBGG_GGRRRRBBBBGG_BBBBGGGGRRRR_BBBBGGGGRRRR_BBBBGGGGRRRR_BBBBGGGGRRRR { kGGRRRRBBBBGG, kGGRRRRBBBBGG, kGGRRRRBBBBGG, kGGRRRRBBBBGG, kBBBBGGGGRRRR, kBBBBGGGGRRRR, kBBBBGGGGRRRR, kBBBBGGGGRRRR } #define kGGBBBBRRRRGG_GGBBBBRRRRGG_GGBBBBRRRRGG_GGBBBBRRRRGG_RRRRGGGGBBBB_RRRRGGGGBBBB_RRRRGGGGBBBB_RRRRGGGGBBBB { kGGBBBBRRRRGG, kGGBBBBRRRRGG, kGGBBBBRRRRGG, kGGBBBBRRRRGG, kRRRRGGGGBBBB, kRRRRGGGGBBBB, kRRRRGGGGBBBB, kRRRRGGGGBBBB } -const uint kShadowMaskSizeX[kResolutionAxis][kTVLAxis] = { { 6, 2, 2 }, { 12, 6, 6 } }; -const uint kShadowMaskSizeY[kResolutionAxis][kTVLAxis] = { { 4, 2, 2 }, { 8, 4, 4 } }; +const uint kShadowMaskSizeX[kResolutionAxis][kTVLAxis] = { { 12, 6, 2, 2 }, { 12, 12, 6, 6 } }; +const uint kShadowMaskSizeY[kResolutionAxis][kTVLAxis] = { { 8, 4, 2, 2 }, { 8, 8, 4, 4 } }; const uint kShadowMasks[kResolutionAxis][kTVLAxis][kBGRAxis][kMaxShadowMaskSizeY][kMaxShadowMaskSizeX] = { { // 4K + { kGGRRRRBBBBGG_GGRRRRBBBBGG_GGRRRRBBBBGG_GGRRRRBBBBGG_BBBBGGGGRRRR_BBBBGGGGRRRR_BBBBGGGGRRRR_BBBBGGGGRRRR, + kGGBBBBRRRRGG_GGBBBBRRRRGG_GGBBBBRRRRGG_GGBBBBRRRRGG_RRRRGGGGBBBB_RRRRGGGGBBBB_RRRRGGGGBBBB_RRRRGGGGBBBB }, // 300 TVL { kGRRBBG_GRRBBG_BBGGRR_BBGGRR, kGBBRRG_GBBRRG_RRGGBB_RRGGBB }, // 600 TVL { kMG_GM, kGM_MG }, // 800 TVL { kMG_GM, kGM_MG } // 1000 TVL }, { // 8K + { kGGRRRRBBBBGG_GGRRRRBBBBGG_GGRRRRBBBBGG_GGRRRRBBBBGG_BBBBGGGGRRRR_BBBBGGGGRRRR_BBBBGGGGRRRR_BBBBGGGGRRRR, + kGGBBBBRRRRGG_GGBBBBRRRRGG_GGBBBBRRRRGG_GGBBBBRRRRGG_RRRRGGGGBBBB_RRRRGGGGBBBB_RRRRGGGGBBBB_RRRRGGGGBBBB }, // 300 TVL { kGGRRRRBBBBGG_GGRRRRBBBBGG_GGRRRRBBBBGG_GGRRRRBBBBGG_BBBBGGGGRRRR_BBBBGGGGRRRR_BBBBGGGGRRRR_BBBBGGGGRRRR, kGGBBBBRRRRGG_GGBBBBRRRRGG_GGBBBBRRRRGG_GGBBBBRRRRGG_RRRRGGGGBBBB_RRRRGGGGBBBB_RRRRGGGGBBBB_RRRRGGGGBBBB }, // 600 TVL { kGRRBBG_GRRBBG_BBGGRR_BBGGRR, kGBBRRG_GBBRRG_RRGGBB_RRGGBB }, // 800 TVL @@ -311,15 +317,17 @@ const uint kShadowMasks[kResolutionAxis][kTVLAxis][kBGRAxis][kMaxShadowMaskSizeY #define kRRGGBBXRRGGBBX_RRGGBBXXXXX_RRGGBBXRRGGBBX_XXXXRRGGBBX { { kRRGGBBX, kRRGGBBX }, { kRRGGBBX, kXXXX }, { kRRGGBBX, kRRGGBBX }, { kXXXX, kRRGGBBX } } #define kBBGGRRXBBGGRRX_BBGGRRXXXXX_BBGGRRXBBGGRRX_XXXXBBGGRRX { { kBBGGRRX, kBBGGRRX }, { kBBGGRRX, kXXXX }, { kBBGGRRX, kBBGGRRX }, { kXXXX, kBBGGRRX } } -const uint kSlotMaskSize[kResolutionAxis][kTVLAxis] = { { 4, 3, 2 }, { 7, 5, 4 } }; //4K: 600 TVL, 800 TVL, 1000 TVL 8K: 600 TVL, 800 TVL, 1000 TVL +const uint kSlotMaskSize[kResolutionAxis][kTVLAxis] = { { 7, 4, 3, 2 }, { 7, 7, 5, 4 } }; //4K: 300 TVL, 600 TVL, 800 TVL, 1000 TVL 8K: 300 TVL, 600 TVL, 800 TVL, 1000 TVL const uint kSlotMasks[kResolutionAxis][kTVLAxis][kBGRAxis][kMaxSlotSizeY][kMaxSlotSizeX][kMaxSlotMaskSize] = { { // 4K - { kRGBXRGBX_RGBXXXXX_RGBXRGBX_XXXXRGBX, kBGRXBGRX_BGRXXXXX_BGRXBGRX_XXXXBGRX }, // 600 TVL - { kBGRBGR_BGRXXX_BGRBGR_XXXBGR, kRGBRGB_RGBXXX_RGBRGB_XXXRGB }, // 800 TVL - { kMGMG_MGXX_MGMG_XXMG, kGMGM_GMXX_GMGM_XXGM } // 1000 TVL + { kRRGGBBXRRGGBBX_RRGGBBXXXXX_RRGGBBXRRGGBBX_XXXXRRGGBBX, kBBGGRRXBBGGRRX_BBGGRRXXXXX_BBGGRRXBBGGRRX_XXXXBBGGRRX }, // 300 TVL + { kRGBXRGBX_RGBXXXXX_RGBXRGBX_XXXXRGBX, kBGRXBGRX_BGRXXXXX_BGRXBGRX_XXXXBGRX }, // 600 TVL + { kBGRBGR_BGRXXX_BGRBGR_XXXBGR, kRGBRGB_RGBXXX_RGBRGB_XXXRGB }, // 800 TVL + { kMGMG_MGXX_MGMG_XXMG, kGMGM_GMXX_GMGM_XXGM } // 1000 TVL }, { // 8K + { kRRGGBBXRRGGBBX_RRGGBBXXXXX_RRGGBBXRRGGBBX_XXXXRRGGBBX, kBBGGRRXBBGGRRX_BBGGRRXXXXX_BBGGRRXBBGGRRX_XXXXBBGGRRX }, // 300 TVL { kRRGGBBXRRGGBBX_RRGGBBXXXXX_RRGGBBXRRGGBBX_XXXXRRGGBBX, kBBGGRRXBBGGRRX_BBGGRRXXXXX_BBGGRRXBBGGRRX_XXXXBBGGRRX }, // 600 TVL { kRYCBXRYCBX_RYCBXXXXX_RYCBXRYCBX_XXXXRYCBX, kBCYRXBCYRX_BCYRXXXXX_BCYRXBCYRX_XXXXBCYRX }, // 800 TVL { kRGBXRGBX_RGBXXXXX_RGBXRGBX_XXXXRGBX, kBGRXBGRX_BGRXXXXX_BGRXBGRX_XXXXBGRX } // 1000 TVL diff --git a/hdr/shaders/include/parameters.h b/hdr/shaders/include/parameters.h index 3059e2cc..1661a9e3 100644 --- a/hdr/shaders/include/parameters.h +++ b/hdr/shaders/include/parameters.h @@ -7,11 +7,6 @@ #pragma parameter hcrt_support2 "MIN SPEC: DisplayHDR 600, 4K, RetroArch v1.10" 0.0 0.0 0.0001 0.0 #pragma parameter hcrt_support3 "REC SPEC: DisplayHDR 1000, 4K+, RetroArch v1.10" 0.0 0.0 0.0001 0.0 #pragma parameter hcrt_space1 " " 0.0 0.0 0.0001 0.0 -#pragma parameter hcrt_instructions0 "HDR: Enable HDR: On" 0.0 0.0 0.0001 0.0 -#pragma parameter hcrt_instructions1 "SCALING: Integer Scale: ON" 0.0 0.0 0.0001 0.0 -#pragma parameter hcrt_instructions2 "SCALING: Integer Overscale: ON" 0.0 0.0 0.0001 0.0 -#pragma parameter hcrt_instructions3 "SCALING: Apect Ratio: Core Provided" 0.0 0.0 0.0001 0.0 -#pragma parameter hcrt_space2 " " 0.0 0.0 0.0001 0.0 #pragma parameter hcrt_user_settings "USER SETTINGS:" 0.0 0.0 0.0001 0.0 #pragma parameter hcrt_hdr " HDR | SDR" 0.0 0.0 1.0 1.0 #pragma parameter hcrt_max_nits " HDR: Display's Peak Luminance" 700.0 0.0 10000.0 10.0 @@ -29,7 +24,7 @@ #pragma parameter hcrt_space3 " " 0.0 0.0 0.0001 0.0 #pragma parameter hcrt_developer_settings "DEVELOPER SETTINGS:" 0.0 0.0 0.0001 0.0 #pragma parameter hcrt_crt_screen_type " CRT Type: APERTURE GRILLE | SHADOW MASK | SLOT MASK" 0.0 0.0 2.0 1.0 -#pragma parameter hcrt_crt_resolution " CRT Resolution: 600TVL | 800TVL | 1000TVL" 0.0 0.0 2.0 1.0 +#pragma parameter hcrt_crt_resolution " CRT Resolution: 300TVL | 600TVL | 800TVL | 1000TVL" 1.0 0.0 3.0 1.0 #pragma parameter hcrt_colour_system " CRT Colour System: PAL | NTSC-U | NTSC-J" 1.0 0.0 2.0 1.0 #pragma parameter hcrt_white_temperature " White Point: (PAL:D65, NTSC-U:D65, NTSC-J:D93)" 0.0 -5000.0 12000.0 100.0 #pragma parameter hcrt_expand_gamut " HDR: Original/Vivid" 0.0 0.0 1.0 1.0