upload src/yoshiwoolyworld

This commit is contained in:
intra0 2024-12-13 22:00:29 -06:00 committed by GitHub
parent 42c114448b
commit b094dc6493
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 732 additions and 0 deletions

View File

@ -0,0 +1,153 @@
#version 450
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#define gl_VertexID gl_VertexIndex
#define gl_InstanceID gl_InstanceIndex
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define SET_POSITION(_v) gl_Position = _v
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader b5082db8c1a44514
//BGblur vert
const float dither = $dither;
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_uniformRegisterPS[256];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_uniformRegisterPS[256];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
float lineRand(vec2 co)
{
float a = 12.9898;
float b = 78.233;
float c = 43758.5453;
float dt = dot(co.xy, vec2(a, b));
float sn = mod(dt, 3.14);
return fract(sin(sn) * c);
}
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
bool activeMaskStack[1];
bool activeMaskStackC[2];
activeMaskStackC[0] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R0i.xy = floatBitsToInt(passParameterSem0.xy- (lineRand(gl_FragCoord.xy)*0.001*dither)).xy;
if( activeMaskStackC[1] == true ) {
R1i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).xyzw);
}
if( activeMaskStackC[1] == true ) {
// 0
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(uf_uniformRegisterPS[11].x)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(uf_uniformRegisterPS[11].x)));
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(uf_uniformRegisterPS[11].x)));
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(uf_uniformRegisterPS[11].x)));
R0i.w = 0x00000001;
PS0i = R0i.w;
// 1
R0i.z = uf_uniformRegisterPS[22].x + int(1);
}
while( activeMaskStackC[1] == true )
{
if( activeMaskStackC[1] == true ) {
// 0
R1i.x = (R0i.z > R0i.w)?int(0xFFFFFFFF):int(0x0);
// 1
predResult = (R1i.x != 0);
if( predResult == false ) break;
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R0i.w;
backupReg0i = R0i.w;
R0i.w = backupReg0i + int(1);
R3i.z = floatBitsToInt(float(backupReg0i));
PS0i = R3i.z;
// 1
tempResultf = intBitsToFloat(PS0i);
tempResultf = floor(tempResultf);
tempResultf = clamp(tempResultf, -256.0, 255.0);
ARi.x = int(tempResultf);
PV1i.x = floatBitsToInt(tempResultf);
// 2
R1i.xyz = floatBitsToInt(vec3(intBitsToFloat(R0i.x),intBitsToFloat(R0i.y),intBitsToFloat(R0i.x)) + vec3(intBitsToFloat(uf_uniformRegisterPS[ARi.x+0].x),intBitsToFloat(uf_uniformRegisterPS[ARi.x+0].y),-(intBitsToFloat(uf_uniformRegisterPS[ARi.x+0].x))));
R1i.w = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(uf_uniformRegisterPS[ARi.x+0].y)));
}
if( activeMaskStackC[1] == true ) {
R2i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.xy)).xyzw);
R1i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.zw)).xyzw);
}
if( activeMaskStackC[1] == true ) {
// 0
tempResultf = intBitsToFloat(R3i.z);
tempResultf = floor(tempResultf);
tempResultf = clamp(tempResultf, -256.0, 255.0);
ARi.x = int(tempResultf);
PV0i.x = floatBitsToInt(tempResultf);
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(R4i.z)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(R4i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(R4i.w)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(R4i.x)));
PV1i.w = R123i.w;
// 2
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(PV1i.w)));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(PV1i.y)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(PV1i.x)));
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.w),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(PV1i.z)));
}
}
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
}

View File

@ -0,0 +1,155 @@
#version 450
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#define gl_VertexID gl_VertexIndex
#define gl_InstanceID gl_InstanceIndex
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define SET_POSITION(_v) gl_Position = _v
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader f1f99f18ae69719b
//Bg horizontal
const float dither = $dither;
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_uniformRegisterPS[256];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_uniformRegisterPS[256];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
float lineRand(vec2 co)
{
float a = 12.9898;
float b = 78.233;
float c = 43758.5453;
float dt = dot(co.xy, vec2(a, b));
float sn = mod(dt, 3.14);
return fract(sin(sn) * c);
}
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
bool activeMaskStack[1];
bool activeMaskStackC[2];
activeMaskStackC[0] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R0i.xy = floatBitsToInt(passParameterSem0.xy- (lineRand(gl_FragCoord.xy)*0.001*dither)).xy;
//R0f.xy = R0f.xy - (lineRand(gl_FragCoord.xy)*0.015);
if( activeMaskStackC[1] == true ) {
R1i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).xyzw);
}
if( activeMaskStackC[1] == true ) {
// 0
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(uf_uniformRegisterPS[11].x)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(uf_uniformRegisterPS[11].x)));
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(uf_uniformRegisterPS[11].x)));
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(uf_uniformRegisterPS[11].x)));
R0i.w = 0x00000001;
PS0i = R0i.w;
// 1
R0i.z = uf_uniformRegisterPS[22].x + int(1);
}
while( activeMaskStackC[1] == true )
{
if( activeMaskStackC[1] == true ) {
// 0
R1i.x = (R0i.z > R0i.w)?int(0xFFFFFFFF):int(0x0);
// 1
predResult = (R1i.x != 0);
if( predResult == false ) break;
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R0i.w;
backupReg0i = R0i.w;
R0i.w = backupReg0i + int(1);
R3i.z = floatBitsToInt(float(backupReg0i));
PS0i = R3i.z;
// 1
tempResultf = intBitsToFloat(PS0i);
tempResultf = floor(tempResultf);
tempResultf = clamp(tempResultf, -256.0, 255.0);
ARi.x = int(tempResultf);
PV1i.x = floatBitsToInt(tempResultf);
// 2
R1i.xyz = floatBitsToInt(vec3(intBitsToFloat(R0i.x),intBitsToFloat(R0i.y),intBitsToFloat(R0i.x)) + vec3(intBitsToFloat(uf_uniformRegisterPS[ARi.x+0].x),intBitsToFloat(uf_uniformRegisterPS[ARi.x+0].y),-(intBitsToFloat(uf_uniformRegisterPS[ARi.x+0].x))));
R1i.w = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(uf_uniformRegisterPS[ARi.x+0].y)));
}
if( activeMaskStackC[1] == true ) {
R2i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.xy)).xyzw);
R1i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.zw)).xyzw);
}
if( activeMaskStackC[1] == true ) {
// 0
tempResultf = intBitsToFloat(R3i.z);
tempResultf = floor(tempResultf);
tempResultf = clamp(tempResultf, -256.0, 255.0);
ARi.x = int(tempResultf);
PV0i.x = floatBitsToInt(tempResultf);
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(R4i.z)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(R4i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(R4i.w)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(R4i.x)));
PV1i.w = R123i.w;
// 2
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(PV1i.w)));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(PV1i.y)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(PV1i.x)));
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.w),intBitsToFloat(uf_uniformRegisterPS[ARi.x+11].x)) + intBitsToFloat(PV1i.z)));
}
}
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
}

View File

@ -0,0 +1,23 @@
[YoshiWoolyWorld_Resolution_v110]
moduleMatches = 0x6AEF65E7 ; v1.1.0(EU/NA/JP)
; rodata constants
0x10001A44 = .float $width/$height
0x10101398 = .float $width/$height
0x10247D7C = .float $width/$height
0x1024E7E4 = .float $width/$height
0x102740B0 = .float $width/$height
0x102740D8 = .float $width/$height
0x102A4A70 = .float $width/$height
0x1025EB2C = .float ($gameWidth/$gameHeight)/($width/$height)
[YoshiWoolyWorld_Resolution_v100]
moduleMatches = 0x363CA665 ; v1.0.0(EU/NA/JP)
; rodata constants
0x10001A44 = .float $width/$height
0x10101398 = .float $width/$height
0x10247D7C = .float $width/$height
0x1024E7E4 = .float $width/$height
0x10274058 = .float $width/$height
0x10274080 = .float $width/$height
0x102A4970 = .float $width/$height
0x1025EAD4 = .float ($gameWidth/$gameHeight)/($width/$height)

View File

@ -0,0 +1,385 @@
[Definition]
titleIds = 0005000010131F00,0005000010184E00,0005000010184D00
name = Graphics Settings
path = "Yoshi's Woolly World/Graphics"
description = Changes the resolution of the game, quality of the shadows and the amount of dithering for the background blur.|Using a higher amount of dithering removes the banding (stripes) that the background blur has.|Made by M&&M and getdls.
#Credits: M&&M, getdls
version = 6
[Default]
$width = 1280
$height = 720
$gameWidth = 1280
$gameHeight = 720
$shadowRes = 1
$ditherRecommended = 1
$dither = 0.1
# Resolution
[Preset]
category = Resolution
name = 640x360
$width = 640
$height = 360
$ditherRecommended = 1
[Preset]
category = Resolution
name = 960x540
$width = 960
$height = 540
$ditherRecommended = 1
[Preset]
category = Resolution
name = 1280x720 (Default)
default = 1
$ditherRecommended = 1
[Preset]
category = Resolution
name = 1600x900
$width = 1600
$height = 900
$ditherRecommended = 1
[Preset]
category = Resolution
name = 1920x1080
$width = 1920
$height = 1080
$ditherRecommended = 2
[Preset]
category = Resolution
name = 2560x1440
$width = 2560
$height = 1440
$ditherRecommended = 3
[Preset]
category = Resolution
name = 3200x1800
$width = 3200
$height = 1800
$ditherRecommended = 3
[Preset]
category = Resolution
name = 3840x2160
$width = 3840
$height = 2160
$ditherRecommended = 4
[Preset]
category = Resolution
name = 5120x2880
$width = 5120
$height = 2880
$ditherRecommended = 5
[Preset]
category = Resolution
name = 7680x4320
$width = 7680
$height = 4320
$ditherRecommended = 5
[Preset]
category = Resolution
name = 1680x1050 (16:10)
$width = 1680
$height = 1050
$ditherRecommended = 1
[Preset]
category = Resolution
name = 1920x1200 (16:10)
$width = 1920
$height = 1200
$ditherRecommended = 2
[Preset]
category = Resolution
name = 2560x1080 (21:9)
$width = 2560
$height = 1080
$ditherRecommended = 2
[Preset]
category = Resolution
name = 3440x1440 (21:9)
$width = 3440
$height = 1440
$ditherRecommended = 3
[Preset]
category = Resolution
name = 5120x2160 (21:9)
$width = 5120
$height = 2160
$ditherRecommended = 4
[Preset]
category = Resolution
name = 3840x1080 (32:9)
$width = 3840
$height = 1080
$ditherRecommended = 5
[Preset]
category = Resolution
name = 5120×1440 (32:9)
$width = 5120
$height = 1440
$ditherRecommended = 5
[Preset]
category = Resolution
name = 7680x2160 (32:9)
$width = 7680
$height = 2160
$ditherRecommended = 5
# Shadow Quality
[Preset]
category = Shadow Quality
name = Low (50%)
$shadowRes = 0.5
[Preset]
category = Shadow Quality
name = Medium (100%, Default)
default = 1
[Preset]
category = Shadow Quality
name = High (200%)
$shadowRes = 2
[Preset]
category = Shadow Quality
name = Ultra (300%)
$shadowRes = 3
[Preset]
category = Shadow Quality
name = Extreme (400%, Unstable)
$shadowRes = 4
# Blur Dithering
[Preset]
category = Blur Dithering
name = Low (Recommended)
condition = $ditherRecommended == 1
default = 1
$dither = 0.1
[Preset]
category = Blur Dithering
name = Low (for 900p and lower)
condition = $ditherRecommended != 1
$dither = 0.1
[Preset]
category = Blur Dithering
name = Medium (Recommended)
condition = $ditherRecommended == 2
default = 1
$dither = 0.25
[Preset]
category = Blur Dithering
name = Medium (for 1080p and higher)
condition = $ditherRecommended != 2
$dither = 0.5
[Preset]
category = Blur Dithering
name = High (Recommended)
condition = $ditherRecommended == 3
default = 1
$dither = 0.75
[Preset]
category = Blur Dithering
name = High (for 1440p and higher)
condition = $ditherRecommended != 3
$dither = 0.75
[Preset]
category = Blur Dithering
name = Ultra (Recommended)
condition = $ditherRecommended == 4
default = 1
$dither = 0.85
[Preset]
category = Blur Dithering
name = Ultra (for 2160p and higher)
condition = $ditherRecommended != 4
$dither = 0.85
[Preset]
category = Blur Dithering
name = Extreme (for 2880p and higher)
condition = $ditherRecommended != 5
$dither = 0.95
[Preset]
category = Blur Dithering
name = Extreme (Recommended)
condition = $ditherRecommended == 5
default = 1
$dither = 0.95
# Texture Redefines
[TextureRedefine] # TV Resolution
width = 1280
height = 720
#formats = 0x033,0x007,0x01a
formatsExcluded = 0x033
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine] # Shadows
width = 1024
height = 1024
formats = 0x005
overwriteWidth = $shadowRes * 1024
overwriteHeight = $shadowRes * 1024
[TextureRedefine] # Curtains, Shadows
width = 864
height = 480
#formats = 0x034
overwriteWidth = ($width/$gameWidth) * 864
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] # Curtains, Shadows
width = 854
height = 480
#formats = 0x034
overwriteWidth = ($width/$gameWidth) * 854
overwriteHeight = ($height/$gameHeight) * 480
# 1/2 res
[TextureRedefine]
width = 640
height = 368
#formats = 0x816,0x820,0x816,0x80e,0x019,0x001,0x01a
tileModesExcluded = 0x001
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 368
[TextureRedefine]
width = 640
height = 360
#formats = 0x816,0x820,0x816,0x80e,0x019,0x001,0x01a
tileModesExcluded = 0x001
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 360
# 1/4 res
[TextureRedefine]
width = 320
height = 192
#formats = 0x816,0x019,0x01a,0x001
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 192
[TextureRedefine]
width = 320
height = 180
#formats = 0x816,0x019,0x01a,0x001
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180
# 1/8 res
[TextureRedefine]
width = 160
height = 96
#formats = 0x806,0x007,0x01a
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 96
[TextureRedefine]
width = 160
height = 90
#formats = 0x806,0x007,0x01a
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 90
# 1/16 res
[TextureRedefine]
width = 96
height = 48
#formats = 0x806,0x01a
overwriteWidth = ($width/$gameWidth) * 96
overwriteHeight = ($height/$gameHeight) * 48
[TextureRedefine]
width = 80
height = 45
#formats = 0x806,0x01a
overwriteWidth = ($width/$gameWidth) * 80
overwriteHeight = ($height/$gameHeight) * 45
# 1/32 res
[TextureRedefine]
width = 64
height = 32
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 64
overwriteHeight = ($height/$gameHeight) * 32
[TextureRedefine]
width = 40
height = 22
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 40
overwriteHeight = ($height/$gameHeight) * 22
# These cause unwanted textures to be upscaled and cause issues.
#[TextureRedefine] #skybox?
#width = 256
#height = 256
#depth = 1
#formats = 0x008
#overwriteWidth = ($width/$gameWidth) * 256
#overwriteHeight = ($height/$gameHeight) * 256
#
#[TextureRedefine] # haze?
#width = 160
#height = 208
##formats = 0x806,0x007,0x01a
#overwriteWidth = ($width/$gameWidth) * 160
#overwriteHeight = ($height/$gameHeight) * 208
#
#[TextureRedefine] # haze?
#width = 150
#height = 200
##formats = 0x806,0x007,0x01a
#overwriteWidth = ($width/$gameWidth) * 150
#overwriteHeight = ($height/$gameHeight) * 200

View File

@ -0,0 +1,9 @@
[YoshiWoolyWorld_FPSWorldMap_v110]
moduleMatches = 0x6AEF65E7 ; v1.1.0(EU/NA/JP)
;prevent going to 30 fps mode
0x02B38D7C = b .+0x20
[YoshiWoolyWorld_FPSWorldMap_v100]
moduleMatches = 0x363CA665 ; v1.0.0(EU/NA/JP)
;prevent going to 30 fps mode
0x02B38940 = b .+0x20

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010131F00,0005000010184E00,0005000010184D00
name = 60 FPS World Map
path = "Yoshi's Woolly World/Mods/60FPS World Map"
description = Prevents 30 fps mode in the world map.
#Credits: Xalphenos
version = 6