mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-06 18:06:26 +00:00
Added support for linear and pixel art scaling for palettized textures
This commit is contained in:
@@ -1234,7 +1234,6 @@ extern SDL_DECLSPEC bool SDLCALL SDL_GetTextureBlendMode(SDL_Texture *texture, S
|
||||
* The default texture scale mode is SDL_SCALEMODE_LINEAR.
|
||||
*
|
||||
* If the scale mode is not supported, the closest supported mode is chosen.
|
||||
* Palettized textures will always use SDL_SCALEMODE_NEAREST.
|
||||
*
|
||||
* \param texture the texture to update.
|
||||
* \param scaleMode the SDL_ScaleMode to use for texture scaling.
|
||||
|
@@ -1525,11 +1525,7 @@ SDL_Texture *SDL_CreateTextureWithProperties(SDL_Renderer *renderer, SDL_Propert
|
||||
texture->color.b = 1.0f;
|
||||
texture->color.a = 1.0f;
|
||||
texture->blendMode = SDL_ISPIXELFORMAT_ALPHA(format) ? SDL_BLENDMODE_BLEND : SDL_BLENDMODE_NONE;
|
||||
if (SDL_ISPIXELFORMAT_INDEXED(format)) {
|
||||
texture->scaleMode = SDL_SCALEMODE_NEAREST;
|
||||
} else {
|
||||
texture->scaleMode = renderer->scale_mode;
|
||||
}
|
||||
texture->view.pixel_w = w;
|
||||
texture->view.pixel_h = h;
|
||||
texture->view.viewport.w = -1;
|
||||
@@ -2162,12 +2158,8 @@ bool SDL_SetTextureScaleMode(SDL_Texture *texture, SDL_ScaleMode scaleMode)
|
||||
|
||||
switch (scaleMode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART:
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
if (SDL_ISPIXELFORMAT_INDEXED(texture->format)) {
|
||||
scaleMode = SDL_SCALEMODE_NEAREST;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return SDL_InvalidParamError("scaleMode");
|
||||
|
@@ -6,83 +6,263 @@
|
||||
//
|
||||
// sampler2D image;
|
||||
// sampler1D palette;
|
||||
// float4 texel_size;
|
||||
// float texture_type;
|
||||
//
|
||||
//
|
||||
// Registers:
|
||||
//
|
||||
// Name Reg Size
|
||||
// ------------ ----- ----
|
||||
// texture_type c0 1
|
||||
// texel_size c1 1
|
||||
// image s0 1
|
||||
// palette s1 1
|
||||
//
|
||||
|
||||
ps_2_0
|
||||
def c0, 0.99609375, 0.001953125, 0, 0
|
||||
dcl t0.xy
|
||||
def c2, -1, 255, 0.5, 0.00390625
|
||||
def c3, -2, 0, 0, 0
|
||||
def c4, 1, 0, 0, 1
|
||||
dcl v0
|
||||
dcl t0.xy
|
||||
dcl_2d s0
|
||||
dcl_2d s1
|
||||
texld r0, t0, s0
|
||||
mad r0.xy, r0.x, c0.x, c0.y
|
||||
texld r0, r0, s1
|
||||
mov r0.xz, c2
|
||||
mad r1.x, t0.x, c1.z, r0.z
|
||||
mad r1.y, t0.y, c1.w, r0.z
|
||||
frc r0.yz, r1.zxyw
|
||||
add r1.xy, -r0.yzxw, r1
|
||||
add r1.zw, r1.wzyx, -c2.z
|
||||
add r1.xy, r1, c2.z
|
||||
mul r1.xy, r1, c1
|
||||
mul r2.xy, r1.wzyx, c1
|
||||
mov r3.x, r2.x
|
||||
mov r3.y, r1.y
|
||||
mov r4.y, r2.y
|
||||
mov r4.x, r1.x
|
||||
texld r3, r3, s0
|
||||
texld r2, r2, s0
|
||||
texld r1, r1, s0
|
||||
texld r4, r4, s0
|
||||
texld r5, t0, s0
|
||||
mad r0.w, r3.x, c2.y, c2.z
|
||||
mul r3.xy, r0.w, c2.w
|
||||
mad r0.w, r2.x, c2.y, c2.z
|
||||
mul r2.xy, r0.w, c2.w
|
||||
mad r0.w, r1.x, c2.y, c2.z
|
||||
mul r1.xy, r0.w, c2.w
|
||||
mad r0.w, r4.x, c2.y, c2.z
|
||||
mul r4.xy, r0.w, c2.w
|
||||
mad r0.w, r5.x, c2.y, c2.z
|
||||
mul r5.xy, r0.w, c2.w
|
||||
texld r3, r3, s1
|
||||
texld r2, r2, s1
|
||||
texld r1, r1, s1
|
||||
texld r4, r4, s1
|
||||
texld r5, r5, s1
|
||||
lrp r6, r0.z, r3, r2
|
||||
lrp r2, r0.z, r1, r4
|
||||
lrp r1, r0.y, r2, r6
|
||||
mov r2.x, c0.x
|
||||
add r0.y, r2.x, c3.x
|
||||
mul r0.y, r0.y, r0.y
|
||||
cmp r1, -r0.y, r1, c4
|
||||
add r0.x, r0.x, c0.x
|
||||
mul r0.x, r0.x, r0.x
|
||||
cmp r0, -r0.x, r5, r1
|
||||
mul r0, r0, v0
|
||||
mov oC0, r0
|
||||
|
||||
// approximately 5 instruction slots used (2 texture, 3 arithmetic)
|
||||
// approximately 45 instruction slots used (10 texture, 35 arithmetic)
|
||||
#endif
|
||||
|
||||
const BYTE g_ps20_main[] =
|
||||
{
|
||||
0, 2, 255, 255, 254, 255,
|
||||
42, 0, 67, 84, 65, 66,
|
||||
28, 0, 0, 0, 123, 0,
|
||||
67, 0, 67, 84, 65, 66,
|
||||
28, 0, 0, 0, 223, 0,
|
||||
0, 0, 0, 2, 255, 255,
|
||||
2, 0, 0, 0, 28, 0,
|
||||
4, 0, 0, 0, 28, 0,
|
||||
0, 0, 0, 1, 0, 0,
|
||||
116, 0, 0, 0, 68, 0,
|
||||
216, 0, 0, 0, 108, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 0, 76, 0,
|
||||
1, 0, 0, 0, 116, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
92, 0, 0, 0, 3, 0,
|
||||
132, 0, 0, 0, 3, 0,
|
||||
1, 0, 1, 0, 0, 0,
|
||||
100, 0, 0, 0, 0, 0,
|
||||
0, 0, 105, 109, 97, 103,
|
||||
101, 0, 171, 171, 4, 0,
|
||||
12, 0, 1, 0, 1, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 112, 97, 108, 101,
|
||||
116, 116, 101, 0, 4, 0,
|
||||
11, 0, 1, 0, 1, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 112, 115, 95, 50,
|
||||
95, 48, 0, 77, 105, 99,
|
||||
114, 111, 115, 111, 102, 116,
|
||||
32, 40, 82, 41, 32, 72,
|
||||
76, 83, 76, 32, 83, 104,
|
||||
97, 100, 101, 114, 32, 67,
|
||||
111, 109, 112, 105, 108, 101,
|
||||
114, 32, 49, 48, 46, 49,
|
||||
0, 171, 81, 0, 0, 5,
|
||||
0, 0, 15, 160, 0, 0,
|
||||
127, 63, 0, 0, 0, 59,
|
||||
140, 0, 0, 0, 0, 0,
|
||||
0, 0, 156, 0, 0, 0,
|
||||
2, 0, 1, 0, 1, 0,
|
||||
0, 0, 168, 0, 0, 0,
|
||||
0, 0, 0, 0, 184, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
1, 0, 0, 0, 200, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 31, 0, 0, 2,
|
||||
0, 0, 0, 128, 0, 0,
|
||||
3, 176, 31, 0, 0, 2,
|
||||
0, 0, 0, 128, 0, 0,
|
||||
15, 144, 31, 0, 0, 2,
|
||||
0, 0, 0, 144, 0, 8,
|
||||
15, 160, 31, 0, 0, 2,
|
||||
0, 0, 0, 144, 1, 8,
|
||||
15, 160, 66, 0, 0, 3,
|
||||
0, 0, 15, 128, 0, 0,
|
||||
228, 176, 0, 8, 228, 160,
|
||||
4, 0, 0, 4, 0, 0,
|
||||
3, 128, 0, 0, 0, 128,
|
||||
0, 0, 0, 160, 0, 0,
|
||||
85, 160, 66, 0, 0, 3,
|
||||
0, 0, 15, 128, 0, 0,
|
||||
105, 109, 97, 103, 101, 0,
|
||||
171, 171, 4, 0, 12, 0,
|
||||
1, 0, 1, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
112, 97, 108, 101, 116, 116,
|
||||
101, 0, 4, 0, 11, 0,
|
||||
1, 0, 1, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
116, 101, 120, 101, 108, 95,
|
||||
115, 105, 122, 101, 0, 171,
|
||||
1, 0, 3, 0, 1, 0,
|
||||
4, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 116, 101,
|
||||
120, 116, 117, 114, 101, 95,
|
||||
116, 121, 112, 101, 0, 171,
|
||||
171, 171, 0, 0, 3, 0,
|
||||
1, 0, 1, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
112, 115, 95, 50, 95, 48,
|
||||
0, 77, 105, 99, 114, 111,
|
||||
115, 111, 102, 116, 32, 40,
|
||||
82, 41, 32, 72, 76, 83,
|
||||
76, 32, 83, 104, 97, 100,
|
||||
101, 114, 32, 67, 111, 109,
|
||||
112, 105, 108, 101, 114, 32,
|
||||
49, 48, 46, 49, 0, 171,
|
||||
81, 0, 0, 5, 2, 0,
|
||||
15, 160, 0, 0, 128, 191,
|
||||
0, 0, 127, 67, 0, 0,
|
||||
0, 63, 0, 0, 128, 59,
|
||||
81, 0, 0, 5, 3, 0,
|
||||
15, 160, 0, 0, 0, 192,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
81, 0, 0, 5, 4, 0,
|
||||
15, 160, 0, 0, 128, 63,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 128, 63,
|
||||
31, 0, 0, 2, 0, 0,
|
||||
0, 128, 0, 0, 15, 144,
|
||||
31, 0, 0, 2, 0, 0,
|
||||
0, 128, 0, 0, 3, 176,
|
||||
31, 0, 0, 2, 0, 0,
|
||||
0, 144, 0, 8, 15, 160,
|
||||
31, 0, 0, 2, 0, 0,
|
||||
0, 144, 1, 8, 15, 160,
|
||||
1, 0, 0, 2, 0, 0,
|
||||
5, 128, 2, 0, 228, 160,
|
||||
4, 0, 0, 4, 1, 0,
|
||||
1, 128, 0, 0, 0, 176,
|
||||
1, 0, 170, 160, 0, 0,
|
||||
170, 128, 4, 0, 0, 4,
|
||||
1, 0, 2, 128, 0, 0,
|
||||
85, 176, 1, 0, 255, 160,
|
||||
0, 0, 170, 128, 19, 0,
|
||||
0, 2, 0, 0, 6, 128,
|
||||
1, 0, 210, 128, 2, 0,
|
||||
0, 3, 1, 0, 3, 128,
|
||||
0, 0, 201, 129, 1, 0,
|
||||
228, 128, 2, 0, 0, 3,
|
||||
1, 0, 12, 128, 1, 0,
|
||||
27, 128, 2, 0, 170, 161,
|
||||
2, 0, 0, 3, 1, 0,
|
||||
3, 128, 1, 0, 228, 128,
|
||||
2, 0, 170, 160, 5, 0,
|
||||
0, 3, 1, 0, 3, 128,
|
||||
1, 0, 228, 128, 1, 0,
|
||||
228, 160, 5, 0, 0, 3,
|
||||
2, 0, 3, 128, 1, 0,
|
||||
27, 128, 1, 0, 228, 160,
|
||||
1, 0, 0, 2, 3, 0,
|
||||
1, 128, 2, 0, 0, 128,
|
||||
1, 0, 0, 2, 3, 0,
|
||||
2, 128, 1, 0, 85, 128,
|
||||
1, 0, 0, 2, 4, 0,
|
||||
2, 128, 2, 0, 85, 128,
|
||||
1, 0, 0, 2, 4, 0,
|
||||
1, 128, 1, 0, 0, 128,
|
||||
66, 0, 0, 3, 3, 0,
|
||||
15, 128, 3, 0, 228, 128,
|
||||
0, 8, 228, 160, 66, 0,
|
||||
0, 3, 2, 0, 15, 128,
|
||||
2, 0, 228, 128, 0, 8,
|
||||
228, 160, 66, 0, 0, 3,
|
||||
1, 0, 15, 128, 1, 0,
|
||||
228, 128, 0, 8, 228, 160,
|
||||
66, 0, 0, 3, 4, 0,
|
||||
15, 128, 4, 0, 228, 128,
|
||||
0, 8, 228, 160, 66, 0,
|
||||
0, 3, 5, 0, 15, 128,
|
||||
0, 0, 228, 176, 0, 8,
|
||||
228, 160, 4, 0, 0, 4,
|
||||
0, 0, 8, 128, 3, 0,
|
||||
0, 128, 2, 0, 85, 160,
|
||||
2, 0, 170, 160, 5, 0,
|
||||
0, 3, 3, 0, 3, 128,
|
||||
0, 0, 255, 128, 2, 0,
|
||||
255, 160, 4, 0, 0, 4,
|
||||
0, 0, 8, 128, 2, 0,
|
||||
0, 128, 2, 0, 85, 160,
|
||||
2, 0, 170, 160, 5, 0,
|
||||
0, 3, 2, 0, 3, 128,
|
||||
0, 0, 255, 128, 2, 0,
|
||||
255, 160, 4, 0, 0, 4,
|
||||
0, 0, 8, 128, 1, 0,
|
||||
0, 128, 2, 0, 85, 160,
|
||||
2, 0, 170, 160, 5, 0,
|
||||
0, 3, 1, 0, 3, 128,
|
||||
0, 0, 255, 128, 2, 0,
|
||||
255, 160, 4, 0, 0, 4,
|
||||
0, 0, 8, 128, 4, 0,
|
||||
0, 128, 2, 0, 85, 160,
|
||||
2, 0, 170, 160, 5, 0,
|
||||
0, 3, 4, 0, 3, 128,
|
||||
0, 0, 255, 128, 2, 0,
|
||||
255, 160, 4, 0, 0, 4,
|
||||
0, 0, 8, 128, 5, 0,
|
||||
0, 128, 2, 0, 85, 160,
|
||||
2, 0, 170, 160, 5, 0,
|
||||
0, 3, 5, 0, 3, 128,
|
||||
0, 0, 255, 128, 2, 0,
|
||||
255, 160, 66, 0, 0, 3,
|
||||
3, 0, 15, 128, 3, 0,
|
||||
228, 128, 1, 8, 228, 160,
|
||||
66, 0, 0, 3, 2, 0,
|
||||
15, 128, 2, 0, 228, 128,
|
||||
1, 8, 228, 160, 66, 0,
|
||||
0, 3, 1, 0, 15, 128,
|
||||
1, 0, 228, 128, 1, 8,
|
||||
228, 160, 66, 0, 0, 3,
|
||||
4, 0, 15, 128, 4, 0,
|
||||
228, 128, 1, 8, 228, 160,
|
||||
66, 0, 0, 3, 5, 0,
|
||||
15, 128, 5, 0, 228, 128,
|
||||
1, 8, 228, 160, 18, 0,
|
||||
0, 4, 6, 0, 15, 128,
|
||||
0, 0, 170, 128, 3, 0,
|
||||
228, 128, 2, 0, 228, 128,
|
||||
18, 0, 0, 4, 2, 0,
|
||||
15, 128, 0, 0, 170, 128,
|
||||
1, 0, 228, 128, 4, 0,
|
||||
228, 128, 18, 0, 0, 4,
|
||||
1, 0, 15, 128, 0, 0,
|
||||
85, 128, 2, 0, 228, 128,
|
||||
6, 0, 228, 128, 1, 0,
|
||||
0, 2, 2, 0, 1, 128,
|
||||
0, 0, 0, 160, 2, 0,
|
||||
0, 3, 0, 0, 2, 128,
|
||||
2, 0, 0, 128, 3, 0,
|
||||
0, 160, 5, 0, 0, 3,
|
||||
0, 0, 2, 128, 0, 0,
|
||||
85, 128, 0, 0, 85, 128,
|
||||
88, 0, 0, 4, 1, 0,
|
||||
15, 128, 0, 0, 85, 129,
|
||||
1, 0, 228, 128, 4, 0,
|
||||
228, 160, 2, 0, 0, 3,
|
||||
0, 0, 1, 128, 0, 0,
|
||||
0, 128, 0, 0, 0, 160,
|
||||
5, 0, 0, 3, 0, 0,
|
||||
1, 128, 0, 0, 0, 128,
|
||||
0, 0, 0, 128, 88, 0,
|
||||
0, 4, 0, 0, 15, 128,
|
||||
0, 0, 0, 129, 5, 0,
|
||||
228, 128, 1, 0, 228, 128,
|
||||
5, 0, 0, 3, 0, 0,
|
||||
15, 128, 0, 0, 228, 128,
|
||||
0, 0, 228, 144, 1, 0,
|
||||
|
@@ -1,19 +0,0 @@
|
||||
|
||||
uniform sampler2D image;
|
||||
uniform sampler1D palette;
|
||||
|
||||
struct PixelShaderInput
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float2 tex : TEXCOORD0;
|
||||
float4 color : COLOR0;
|
||||
};
|
||||
|
||||
float4 main(PixelShaderInput input) : SV_TARGET
|
||||
{
|
||||
float4 Output;
|
||||
float index;
|
||||
index = tex2D(image, input.tex).r;
|
||||
Output = tex1D(palette, index * (255. / 256) + (0.5 / 256));
|
||||
return Output * input.color;
|
||||
}
|
49
src/render/direct3d/D3D9_PixelShader_Palette.hlsli
Normal file
49
src/render/direct3d/D3D9_PixelShader_Palette.hlsli
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
cbuffer Constants
|
||||
{
|
||||
float4 texel_size;
|
||||
};
|
||||
|
||||
uniform sampler2D image;
|
||||
uniform sampler1D palette;
|
||||
|
||||
struct PixelShaderInput
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float2 tex : TEXCOORD0;
|
||||
float4 color : COLOR0;
|
||||
};
|
||||
|
||||
static const float TEXTURETYPE_NONE = 0;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 1;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 2;
|
||||
|
||||
float4 SamplePaletteNearest(float2 uv)
|
||||
{
|
||||
float index = tex2D(image, uv).r * 255;
|
||||
return tex1D(palette, (index + 0.5) / 256);
|
||||
}
|
||||
|
||||
// Implementation with thanks from bgolus:
|
||||
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
|
||||
float4 SamplePaletteLinear(float2 uv)
|
||||
{
|
||||
// scale & offset uvs to integer values at texel centers
|
||||
float2 uv_texels = uv * texel_size.zw + 0.5;
|
||||
|
||||
// get uvs for the center of the 4 surrounding texels by flooring
|
||||
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
|
||||
|
||||
// blend factor
|
||||
float2 uv_frac = frac(uv_texels);
|
||||
|
||||
// sample all 4 texels
|
||||
float4 texelA = SamplePaletteNearest(uv_min_max.xy);
|
||||
float4 texelB = SamplePaletteNearest(uv_min_max.xw);
|
||||
float4 texelC = SamplePaletteNearest(uv_min_max.zy);
|
||||
float4 texelD = SamplePaletteNearest(uv_min_max.zw);
|
||||
|
||||
// bilinear interpolation
|
||||
return lerp(lerp(texelA, texelB, uv_frac.y), lerp(texelC, texelD, uv_frac.y), uv_frac.x);
|
||||
}
|
||||
|
209
src/render/direct3d/D3D9_PixelShader_Palette_Linear.h
Executable file
209
src/render/direct3d/D3D9_PixelShader_Palette_Linear.h
Executable file
@@ -0,0 +1,209 @@
|
||||
#if 0
|
||||
//
|
||||
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// sampler2D image;
|
||||
// sampler1D palette;
|
||||
// float4 texel_size;
|
||||
//
|
||||
//
|
||||
// Registers:
|
||||
//
|
||||
// Name Reg Size
|
||||
// ------------ ----- ----
|
||||
// texel_size c0 1
|
||||
// image s0 1
|
||||
// palette s1 1
|
||||
//
|
||||
|
||||
ps_2_0
|
||||
def c1, 0.5, -0.5, 255, 0.00390625
|
||||
dcl t0.xy
|
||||
dcl v0
|
||||
dcl_2d s0
|
||||
dcl_2d s1
|
||||
mov r0.w, c1.x
|
||||
mad r0.x, t0.x, c0.z, r0.w
|
||||
mad r0.y, t0.y, c0.w, r0.w
|
||||
frc r0.zw, r0.wzyx
|
||||
add r0.xy, -r0.wzyx, r0
|
||||
add r1.xy, r0, c1.y
|
||||
add r0.xy, r0, c1.x
|
||||
mul r0.xy, r0, c0
|
||||
mul r1.xy, r1, c0
|
||||
mov r2.x, r1.x
|
||||
mov r2.y, r0.y
|
||||
mov r3.y, r1.y
|
||||
mov r3.x, r0.x
|
||||
texld r2, r2, s0
|
||||
texld r1, r1, s0
|
||||
texld r4, r0, s0
|
||||
texld r3, r3, s0
|
||||
mad r0.x, r2.x, c1.z, c1.x
|
||||
mul r0.xy, r0.x, c1.w
|
||||
mad r1.x, r1.x, c1.z, c1.x
|
||||
mul r1.xy, r1.x, c1.w
|
||||
mad r1.z, r4.x, c1.z, c1.x
|
||||
mul r2.xy, r1.z, c1.w
|
||||
mad r1.z, r3.x, c1.z, c1.x
|
||||
mul r3.xy, r1.z, c1.w
|
||||
texld r4, r0, s1
|
||||
texld r1, r1, s1
|
||||
texld r2, r2, s1
|
||||
texld r3, r3, s1
|
||||
lrp r5, r0.z, r4, r1
|
||||
lrp r1, r0.z, r2, r3
|
||||
lrp r2, r0.w, r1, r5
|
||||
mul r0, r2, v0
|
||||
mov oC0, r0
|
||||
|
||||
// approximately 34 instruction slots used (8 texture, 26 arithmetic)
|
||||
#endif
|
||||
|
||||
const BYTE g_ps20_main[] =
|
||||
{
|
||||
0, 2, 255, 255, 254, 255,
|
||||
54, 0, 67, 84, 65, 66,
|
||||
28, 0, 0, 0, 171, 0,
|
||||
0, 0, 0, 2, 255, 255,
|
||||
3, 0, 0, 0, 28, 0,
|
||||
0, 0, 0, 1, 0, 0,
|
||||
164, 0, 0, 0, 88, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 0, 96, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
112, 0, 0, 0, 3, 0,
|
||||
1, 0, 1, 0, 0, 0,
|
||||
120, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 0, 0, 0,
|
||||
2, 0, 0, 0, 1, 0,
|
||||
0, 0, 148, 0, 0, 0,
|
||||
0, 0, 0, 0, 105, 109,
|
||||
97, 103, 101, 0, 171, 171,
|
||||
4, 0, 12, 0, 1, 0,
|
||||
1, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 112, 97,
|
||||
108, 101, 116, 116, 101, 0,
|
||||
4, 0, 11, 0, 1, 0,
|
||||
1, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 116, 101,
|
||||
120, 101, 108, 95, 115, 105,
|
||||
122, 101, 0, 171, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 112, 115, 95, 50,
|
||||
95, 48, 0, 77, 105, 99,
|
||||
114, 111, 115, 111, 102, 116,
|
||||
32, 40, 82, 41, 32, 72,
|
||||
76, 83, 76, 32, 83, 104,
|
||||
97, 100, 101, 114, 32, 67,
|
||||
111, 109, 112, 105, 108, 101,
|
||||
114, 32, 49, 48, 46, 49,
|
||||
0, 171, 81, 0, 0, 5,
|
||||
1, 0, 15, 160, 0, 0,
|
||||
0, 63, 0, 0, 0, 191,
|
||||
0, 0, 127, 67, 0, 0,
|
||||
128, 59, 31, 0, 0, 2,
|
||||
0, 0, 0, 128, 0, 0,
|
||||
3, 176, 31, 0, 0, 2,
|
||||
0, 0, 0, 128, 0, 0,
|
||||
15, 144, 31, 0, 0, 2,
|
||||
0, 0, 0, 144, 0, 8,
|
||||
15, 160, 31, 0, 0, 2,
|
||||
0, 0, 0, 144, 1, 8,
|
||||
15, 160, 1, 0, 0, 2,
|
||||
0, 0, 8, 128, 1, 0,
|
||||
0, 160, 4, 0, 0, 4,
|
||||
0, 0, 1, 128, 0, 0,
|
||||
0, 176, 0, 0, 170, 160,
|
||||
0, 0, 255, 128, 4, 0,
|
||||
0, 4, 0, 0, 2, 128,
|
||||
0, 0, 85, 176, 0, 0,
|
||||
255, 160, 0, 0, 255, 128,
|
||||
19, 0, 0, 2, 0, 0,
|
||||
12, 128, 0, 0, 27, 128,
|
||||
2, 0, 0, 3, 0, 0,
|
||||
3, 128, 0, 0, 27, 129,
|
||||
0, 0, 228, 128, 2, 0,
|
||||
0, 3, 1, 0, 3, 128,
|
||||
0, 0, 228, 128, 1, 0,
|
||||
85, 160, 2, 0, 0, 3,
|
||||
0, 0, 3, 128, 0, 0,
|
||||
228, 128, 1, 0, 0, 160,
|
||||
5, 0, 0, 3, 0, 0,
|
||||
3, 128, 0, 0, 228, 128,
|
||||
0, 0, 228, 160, 5, 0,
|
||||
0, 3, 1, 0, 3, 128,
|
||||
1, 0, 228, 128, 0, 0,
|
||||
228, 160, 1, 0, 0, 2,
|
||||
2, 0, 1, 128, 1, 0,
|
||||
0, 128, 1, 0, 0, 2,
|
||||
2, 0, 2, 128, 0, 0,
|
||||
85, 128, 1, 0, 0, 2,
|
||||
3, 0, 2, 128, 1, 0,
|
||||
85, 128, 1, 0, 0, 2,
|
||||
3, 0, 1, 128, 0, 0,
|
||||
0, 128, 66, 0, 0, 3,
|
||||
2, 0, 15, 128, 2, 0,
|
||||
228, 128, 0, 8, 228, 160,
|
||||
66, 0, 0, 3, 1, 0,
|
||||
15, 128, 1, 0, 228, 128,
|
||||
0, 8, 228, 160, 66, 0,
|
||||
0, 3, 4, 0, 15, 128,
|
||||
0, 0, 228, 128, 0, 8,
|
||||
228, 160, 66, 0, 0, 3,
|
||||
3, 0, 15, 128, 3, 0,
|
||||
228, 128, 0, 8, 228, 160,
|
||||
4, 0, 0, 4, 0, 0,
|
||||
1, 128, 2, 0, 0, 128,
|
||||
1, 0, 170, 160, 1, 0,
|
||||
0, 160, 5, 0, 0, 3,
|
||||
0, 0, 3, 128, 0, 0,
|
||||
0, 128, 1, 0, 255, 160,
|
||||
4, 0, 0, 4, 1, 0,
|
||||
1, 128, 1, 0, 0, 128,
|
||||
1, 0, 170, 160, 1, 0,
|
||||
0, 160, 5, 0, 0, 3,
|
||||
1, 0, 3, 128, 1, 0,
|
||||
0, 128, 1, 0, 255, 160,
|
||||
4, 0, 0, 4, 1, 0,
|
||||
4, 128, 4, 0, 0, 128,
|
||||
1, 0, 170, 160, 1, 0,
|
||||
0, 160, 5, 0, 0, 3,
|
||||
2, 0, 3, 128, 1, 0,
|
||||
170, 128, 1, 0, 255, 160,
|
||||
4, 0, 0, 4, 1, 0,
|
||||
4, 128, 3, 0, 0, 128,
|
||||
1, 0, 170, 160, 1, 0,
|
||||
0, 160, 5, 0, 0, 3,
|
||||
3, 0, 3, 128, 1, 0,
|
||||
170, 128, 1, 0, 255, 160,
|
||||
66, 0, 0, 3, 4, 0,
|
||||
15, 128, 0, 0, 228, 128,
|
||||
1, 8, 228, 160, 66, 0,
|
||||
0, 3, 1, 0, 15, 128,
|
||||
1, 0, 228, 128, 1, 8,
|
||||
228, 160, 66, 0, 0, 3,
|
||||
2, 0, 15, 128, 2, 0,
|
||||
228, 128, 1, 8, 228, 160,
|
||||
66, 0, 0, 3, 3, 0,
|
||||
15, 128, 3, 0, 228, 128,
|
||||
1, 8, 228, 160, 18, 0,
|
||||
0, 4, 5, 0, 15, 128,
|
||||
0, 0, 170, 128, 4, 0,
|
||||
228, 128, 1, 0, 228, 128,
|
||||
18, 0, 0, 4, 1, 0,
|
||||
15, 128, 0, 0, 170, 128,
|
||||
2, 0, 228, 128, 3, 0,
|
||||
228, 128, 18, 0, 0, 4,
|
||||
2, 0, 15, 128, 0, 0,
|
||||
255, 128, 1, 0, 228, 128,
|
||||
5, 0, 228, 128, 5, 0,
|
||||
0, 3, 0, 0, 15, 128,
|
||||
2, 0, 228, 128, 0, 0,
|
||||
228, 144, 1, 0, 0, 2,
|
||||
0, 8, 15, 128, 0, 0,
|
||||
228, 128, 255, 255, 0, 0
|
||||
};
|
7
src/render/direct3d/D3D9_PixelShader_Palette_Linear.hlsl
Normal file
7
src/render/direct3d/D3D9_PixelShader_Palette_Linear.hlsl
Normal file
@@ -0,0 +1,7 @@
|
||||
|
||||
#include "D3D9_PixelShader_Palette.hlsli"
|
||||
|
||||
float4 main(PixelShaderInput input) : SV_TARGET
|
||||
{
|
||||
return SamplePaletteLinear(input.tex) * input.color;
|
||||
}
|
95
src/render/direct3d/D3D9_PixelShader_Palette_Nearest.h
Executable file
95
src/render/direct3d/D3D9_PixelShader_Palette_Nearest.h
Executable file
@@ -0,0 +1,95 @@
|
||||
#if 0
|
||||
//
|
||||
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// sampler2D image;
|
||||
// sampler1D palette;
|
||||
//
|
||||
//
|
||||
// Registers:
|
||||
//
|
||||
// Name Reg Size
|
||||
// ------------ ----- ----
|
||||
// image s0 1
|
||||
// palette s1 1
|
||||
//
|
||||
|
||||
ps_2_0
|
||||
def c0, 255, 0.5, 0.00390625, 0
|
||||
dcl t0.xy
|
||||
dcl v0
|
||||
dcl_2d s0
|
||||
dcl_2d s1
|
||||
texld r0, t0, s0
|
||||
mad r0.x, r0.x, c0.x, c0.y
|
||||
mul r0.xy, r0.x, c0.z
|
||||
texld r0, r0, s1
|
||||
mul r0, r0, v0
|
||||
mov oC0, r0
|
||||
|
||||
// approximately 6 instruction slots used (2 texture, 4 arithmetic)
|
||||
#endif
|
||||
|
||||
const BYTE g_ps20_main[] =
|
||||
{
|
||||
0, 2, 255, 255, 254, 255,
|
||||
42, 0, 67, 84, 65, 66,
|
||||
28, 0, 0, 0, 123, 0,
|
||||
0, 0, 0, 2, 255, 255,
|
||||
2, 0, 0, 0, 28, 0,
|
||||
0, 0, 0, 1, 0, 0,
|
||||
116, 0, 0, 0, 68, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 0, 76, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
92, 0, 0, 0, 3, 0,
|
||||
1, 0, 1, 0, 0, 0,
|
||||
100, 0, 0, 0, 0, 0,
|
||||
0, 0, 105, 109, 97, 103,
|
||||
101, 0, 171, 171, 4, 0,
|
||||
12, 0, 1, 0, 1, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 112, 97, 108, 101,
|
||||
116, 116, 101, 0, 4, 0,
|
||||
11, 0, 1, 0, 1, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 112, 115, 95, 50,
|
||||
95, 48, 0, 77, 105, 99,
|
||||
114, 111, 115, 111, 102, 116,
|
||||
32, 40, 82, 41, 32, 72,
|
||||
76, 83, 76, 32, 83, 104,
|
||||
97, 100, 101, 114, 32, 67,
|
||||
111, 109, 112, 105, 108, 101,
|
||||
114, 32, 49, 48, 46, 49,
|
||||
0, 171, 81, 0, 0, 5,
|
||||
0, 0, 15, 160, 0, 0,
|
||||
127, 67, 0, 0, 0, 63,
|
||||
0, 0, 128, 59, 0, 0,
|
||||
0, 0, 31, 0, 0, 2,
|
||||
0, 0, 0, 128, 0, 0,
|
||||
3, 176, 31, 0, 0, 2,
|
||||
0, 0, 0, 128, 0, 0,
|
||||
15, 144, 31, 0, 0, 2,
|
||||
0, 0, 0, 144, 0, 8,
|
||||
15, 160, 31, 0, 0, 2,
|
||||
0, 0, 0, 144, 1, 8,
|
||||
15, 160, 66, 0, 0, 3,
|
||||
0, 0, 15, 128, 0, 0,
|
||||
228, 176, 0, 8, 228, 160,
|
||||
4, 0, 0, 4, 0, 0,
|
||||
1, 128, 0, 0, 0, 128,
|
||||
0, 0, 0, 160, 0, 0,
|
||||
85, 160, 5, 0, 0, 3,
|
||||
0, 0, 3, 128, 0, 0,
|
||||
0, 128, 0, 0, 170, 160,
|
||||
66, 0, 0, 3, 0, 0,
|
||||
15, 128, 0, 0, 228, 128,
|
||||
1, 8, 228, 160, 5, 0,
|
||||
0, 3, 0, 0, 15, 128,
|
||||
0, 0, 228, 128, 0, 0,
|
||||
228, 144, 1, 0, 0, 2,
|
||||
0, 8, 15, 128, 0, 0,
|
||||
228, 128, 255, 255, 0, 0
|
||||
};
|
@@ -0,0 +1,7 @@
|
||||
|
||||
#include "D3D9_PixelShader_Palette.hlsli"
|
||||
|
||||
float4 main(PixelShaderInput input) : SV_TARGET
|
||||
{
|
||||
return SamplePaletteNearest(input.tex) * input.color;
|
||||
}
|
@@ -86,9 +86,7 @@ typedef struct
|
||||
IDirect3DSurface9 *defaultRenderTarget;
|
||||
IDirect3DSurface9 *currentRenderTarget;
|
||||
void *d3dxDLL;
|
||||
#ifdef SDL_HAVE_YUV
|
||||
LPDIRECT3DPIXELSHADER9 shaders[NUM_SHADERS];
|
||||
#endif
|
||||
LPDIRECT3DVERTEXBUFFER9 vertexBuffers[8];
|
||||
size_t vertexBufferSize[8];
|
||||
int currentVertexBuffer;
|
||||
@@ -100,8 +98,9 @@ typedef struct
|
||||
typedef struct
|
||||
{
|
||||
D3D_TextureRep texture;
|
||||
D3D9_Shader shader;
|
||||
UINT shader_params_length;
|
||||
const float *shader_params;
|
||||
float palette_shader_params[4];
|
||||
|
||||
#ifdef SDL_HAVE_YUV
|
||||
// YV12 texture support
|
||||
@@ -657,7 +656,12 @@ static bool D3D_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_
|
||||
return false;
|
||||
}
|
||||
if (texture->format == SDL_PIXELFORMAT_INDEX8) {
|
||||
texturedata->shader = SHADER_PALETTE;
|
||||
texturedata->shader_params_length = 1; // The palette shader takes 1 float4 parameters
|
||||
texturedata->shader_params = texturedata->palette_shader_params;
|
||||
texturedata->palette_shader_params[0] = 1.0f / texture->w;
|
||||
texturedata->palette_shader_params[1] = 1.0f / texture->h;
|
||||
texturedata->palette_shader_params[2] = texture->w;
|
||||
texturedata->palette_shader_params[3] = texture->h;
|
||||
}
|
||||
#ifdef SDL_HAVE_YUV
|
||||
if (texture->format == SDL_PIXELFORMAT_YV12 ||
|
||||
@@ -672,7 +676,7 @@ static bool D3D_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_
|
||||
return false;
|
||||
}
|
||||
|
||||
texturedata->shader = SHADER_YUV;
|
||||
texturedata->shader_params_length = 4; // The YUV shader takes 4 float4 parameters
|
||||
texturedata->shader_params = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8);
|
||||
if (texturedata->shader_params == NULL) {
|
||||
return SDL_SetError("Unsupported YUV colorspace");
|
||||
@@ -1041,7 +1045,7 @@ static void UpdateTextureAddressMode(D3D_RenderData *data, SDL_TextureAddressMod
|
||||
}
|
||||
}
|
||||
|
||||
static bool SetupTextureState(D3D_RenderData *data, SDL_Texture *texture, D3D9_Shader *shader, const float **shader_params)
|
||||
static bool SetupTextureState(D3D_RenderData *data, SDL_Texture *texture, SDL_ScaleMode scale_mode, D3D9_Shader *shader, const float **shader_params)
|
||||
{
|
||||
D3D_TextureData *texturedata = (D3D_TextureData *)texture->internal;
|
||||
|
||||
@@ -1049,7 +1053,15 @@ static bool SetupTextureState(D3D_RenderData *data, SDL_Texture *texture, D3D9_S
|
||||
return SDL_SetError("Texture is not currently available");
|
||||
}
|
||||
|
||||
*shader = texturedata->shader;
|
||||
if (texture->format == SDL_PIXELFORMAT_INDEX8) {
|
||||
if (scale_mode == SDL_SCALEMODE_LINEAR) {
|
||||
*shader = SHADER_PALETTE_LINEAR;
|
||||
} else {
|
||||
*shader = SHADER_PALETTE_NEAREST;
|
||||
}
|
||||
} else if (texturedata->yuv) {
|
||||
*shader = SHADER_YUV;
|
||||
}
|
||||
*shader_params = texturedata->shader_params;
|
||||
|
||||
if (!BindTextureRep(data->device, &texturedata->texture, 0)) {
|
||||
@@ -1099,11 +1111,10 @@ static bool SetDrawState(D3D_RenderData *data, const SDL_RenderCommand *cmd)
|
||||
IDirect3DDevice9_SetTexture(data->device, 2, NULL);
|
||||
}
|
||||
#endif
|
||||
if (texture && !SetupTextureState(data, texture, &shader, &shader_params)) {
|
||||
if (texture && !SetupTextureState(data, texture, cmd->data.draw.texture_scale_mode, &shader, &shader_params)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef SDL_HAVE_YUV
|
||||
if (shader != data->drawstate.shader) {
|
||||
const HRESULT result = IDirect3DDevice9_SetPixelShader(data->device, data->shaders[shader]);
|
||||
if (FAILED(result)) {
|
||||
@@ -1122,7 +1133,6 @@ static bool SetDrawState(D3D_RenderData *data, const SDL_RenderCommand *cmd)
|
||||
}
|
||||
data->drawstate.shader_params = shader_params;
|
||||
}
|
||||
#endif // SDL_HAVE_YUV
|
||||
|
||||
data->drawstate.texture = texture;
|
||||
} else if (texture) {
|
||||
@@ -1877,7 +1887,9 @@ static bool D3D_CreateRenderer(SDL_Renderer *renderer, SDL_Window *window, SDL_P
|
||||
D3D_SetError("CreatePixelShader()", result);
|
||||
}
|
||||
}
|
||||
if (caps.MaxSimultaneousTextures >= 2 && data->shaders[SHADER_PALETTE]) {
|
||||
if (caps.MaxSimultaneousTextures >= 2 &&
|
||||
data->shaders[SHADER_PALETTE_NEAREST] &&
|
||||
data->shaders[SHADER_PALETTE_LINEAR]) {
|
||||
SDL_AddSupportedTextureFormat(renderer, SDL_PIXELFORMAT_INDEX8);
|
||||
}
|
||||
#ifdef SDL_HAVE_YUV
|
||||
|
@@ -30,8 +30,12 @@
|
||||
|
||||
// The shaders here were compiled with compile_shaders.bat
|
||||
|
||||
#define g_ps20_main D3D9_PixelShader_Palette
|
||||
#include "D3D9_PixelShader_Palette.h"
|
||||
#define g_ps20_main D3D9_PixelShader_Palette_Nearest
|
||||
#include "D3D9_PixelShader_Palette_Nearest.h"
|
||||
#undef g_ps20_main
|
||||
|
||||
#define g_ps20_main D3D9_PixelShader_Palette_Linear
|
||||
#include "D3D9_PixelShader_Palette_Linear.h"
|
||||
#undef g_ps20_main
|
||||
|
||||
#define g_ps20_main D3D9_PixelShader_YUV
|
||||
@@ -40,7 +44,8 @@
|
||||
|
||||
static const BYTE *D3D9_shaders[] = {
|
||||
NULL,
|
||||
D3D9_PixelShader_Palette,
|
||||
D3D9_PixelShader_Palette_Nearest,
|
||||
D3D9_PixelShader_Palette_Linear,
|
||||
D3D9_PixelShader_YUV
|
||||
};
|
||||
SDL_COMPILE_TIME_ASSERT(D3D9_shaders, SDL_arraysize(D3D9_shaders) == NUM_SHADERS);
|
||||
|
@@ -25,7 +25,8 @@
|
||||
typedef enum
|
||||
{
|
||||
SHADER_NONE,
|
||||
SHADER_PALETTE,
|
||||
SHADER_PALETTE_NEAREST,
|
||||
SHADER_PALETTE_LINEAR,
|
||||
SHADER_YUV,
|
||||
NUM_SHADERS
|
||||
} D3D9_Shader;
|
||||
|
@@ -1,2 +1,3 @@
|
||||
fxc /T ps_2_0 /Fh D3D9_PixelShader_Palette.h D3D9_PixelShader_Palette.hlsl
|
||||
fxc /T ps_2_0 /Fh D3D9_PixelShader_Palette_Nearest.h D3D9_PixelShader_Palette_Nearest.hlsl
|
||||
fxc /T ps_2_0 /Fh D3D9_PixelShader_Palette_Linear.h D3D9_PixelShader_Palette_Linear.hlsl
|
||||
fxc /T ps_2_0 /Fh D3D9_PixelShader_YUV.h D3D9_PixelShader_YUV.hlsl
|
||||
|
@@ -64,7 +64,7 @@ dcl_resource_texture2d (float,float,float,float) t2
|
||||
dcl_input_ps linear v1.xy
|
||||
dcl_input_ps linear v2.xyzw
|
||||
dcl_output o0.xyzw
|
||||
dcl_temps 7
|
||||
dcl_temps 8
|
||||
eq r0.xyzw, cb0[0].yzzz, l(0.000000, 3.000000, 2.000000, 1.000000)
|
||||
if_nz r0.x
|
||||
mov r1.xyzw, l(1.000000,1.000000,1.000000,1.000000)
|
||||
@@ -106,6 +106,90 @@ else
|
||||
sample_indexable(texture2d)(float,float,float,float) r1.xyzw, r2.xyxx, t1.xyzw, s1
|
||||
else
|
||||
eq r0.x, cb0[0].y, l(4.000000)
|
||||
if_nz r0.x
|
||||
mad r2.xy, v1.xyxx, cb0[1].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000)
|
||||
round_ni r3.xyzw, r2.xyxy
|
||||
add r3.xyzw, r3.xyzw, l(-0.500000, -0.500000, 0.500000, 0.500000)
|
||||
mul r3.xyzw, r3.xyzw, cb0[1].xyxy
|
||||
frc r2.xy, r2.xyxx
|
||||
sample_indexable(texture2d)(float,float,float,float) r0.x, r3.xyxx, t0.xyzw, s0
|
||||
mad r0.x, r0.x, l(255.000000), l(0.500000)
|
||||
mul r4.x, r0.x, l(0.003906)
|
||||
mov r4.yw, l(0,0.500000,0,0.500000)
|
||||
sample_indexable(texture2d)(float,float,float,float) r5.xyzw, r4.xyxx, t1.xyzw, s1
|
||||
sample_indexable(texture2d)(float,float,float,float) r0.x, r3.xwxx, t0.xyzw, s0
|
||||
mad r0.x, r0.x, l(255.000000), l(0.500000)
|
||||
mul r4.z, r0.x, l(0.003906)
|
||||
sample_indexable(texture2d)(float,float,float,float) r4.xyzw, r4.zwzz, t1.xyzw, s1
|
||||
sample_indexable(texture2d)(float,float,float,float) r0.x, r3.zyzz, t0.xyzw, s0
|
||||
mad r0.x, r0.x, l(255.000000), l(0.500000)
|
||||
mul r6.x, r0.x, l(0.003906)
|
||||
mov r6.yw, l(0,0.500000,0,0.500000)
|
||||
sample_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t1.xyzw, s1
|
||||
sample_indexable(texture2d)(float,float,float,float) r0.x, r3.zwzz, t0.xyzw, s0
|
||||
mad r0.x, r0.x, l(255.000000), l(0.500000)
|
||||
mul r6.z, r0.x, l(0.003906)
|
||||
sample_indexable(texture2d)(float,float,float,float) r3.xyzw, r6.zwzz, t1.xyzw, s1
|
||||
add r4.xyzw, -r5.xyzw, r4.xyzw
|
||||
mad r4.xyzw, r2.yyyy, r4.xyzw, r5.xyzw
|
||||
add r3.xyzw, -r7.xyzw, r3.xyzw
|
||||
mad r3.xyzw, r2.yyyy, r3.xyzw, r7.xyzw
|
||||
add r3.xyzw, -r4.xyzw, r3.xyzw
|
||||
mad r1.xyzw, r2.xxxx, r3.xyzw, r4.xyzw
|
||||
else
|
||||
eq r0.x, cb0[0].y, l(5.000000)
|
||||
if_nz r0.x
|
||||
deriv_rtx_coarse r2.xy, v1.xyxx
|
||||
deriv_rty_coarse r2.zw, v1.xxxy
|
||||
add r2.xy, |r2.zwzz|, |r2.xyxx|
|
||||
mul r2.xy, r2.xyxx, cb0[1].zwzz
|
||||
max r2.xy, r2.xyxx, l(0.000010, 0.000010, 0.000000, 0.000000)
|
||||
min r2.xy, r2.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
|
||||
mul r2.zw, r2.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000)
|
||||
mad r2.zw, v1.xxxy, cb0[1].zzzw, -r2.zzzw
|
||||
add r2.xy, -r2.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
|
||||
frc r3.xy, r2.zwzz
|
||||
add r3.zw, -r2.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
|
||||
add r2.xy, -r2.xyxx, r3.xyxx
|
||||
div r3.xy, l(1.000000, 1.000000, 1.000000, 1.000000), r3.zwzz
|
||||
mul_sat r2.xy, r2.xyxx, r3.xyxx
|
||||
mad r3.xy, r2.xyxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000)
|
||||
mul r2.xy, r2.xyxx, r2.xyxx
|
||||
round_ni r2.zw, r2.zzzw
|
||||
mad r2.xy, r3.xyxx, r2.xyxx, r2.zwzz
|
||||
add r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
|
||||
mul r2.xy, r2.xyxx, cb0[1].xyxx
|
||||
mad r2.xy, r2.xyxx, cb0[1].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000)
|
||||
round_ni r3.xyzw, r2.xyxy
|
||||
add r3.xyzw, r3.xyzw, l(-0.500000, -0.500000, 0.500000, 0.500000)
|
||||
mul r3.xyzw, r3.xyzw, cb0[1].xyxy
|
||||
frc r2.xy, r2.xyxx
|
||||
sample_indexable(texture2d)(float,float,float,float) r0.x, r3.xyxx, t0.xyzw, s0
|
||||
mad r0.x, r0.x, l(255.000000), l(0.500000)
|
||||
mul r4.x, r0.x, l(0.003906)
|
||||
mov r4.yw, l(0,0.500000,0,0.500000)
|
||||
sample_indexable(texture2d)(float,float,float,float) r5.xyzw, r4.xyxx, t1.xyzw, s1
|
||||
sample_indexable(texture2d)(float,float,float,float) r0.x, r3.xwxx, t0.xyzw, s0
|
||||
mad r0.x, r0.x, l(255.000000), l(0.500000)
|
||||
mul r4.z, r0.x, l(0.003906)
|
||||
sample_indexable(texture2d)(float,float,float,float) r4.xyzw, r4.zwzz, t1.xyzw, s1
|
||||
sample_indexable(texture2d)(float,float,float,float) r0.x, r3.zyzz, t0.xyzw, s0
|
||||
mad r0.x, r0.x, l(255.000000), l(0.500000)
|
||||
mul r6.x, r0.x, l(0.003906)
|
||||
mov r6.yw, l(0,0.500000,0,0.500000)
|
||||
sample_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t1.xyzw, s1
|
||||
sample_indexable(texture2d)(float,float,float,float) r0.x, r3.zwzz, t0.xyzw, s0
|
||||
mad r0.x, r0.x, l(255.000000), l(0.500000)
|
||||
mul r6.z, r0.x, l(0.003906)
|
||||
sample_indexable(texture2d)(float,float,float,float) r3.xyzw, r6.zwzz, t1.xyzw, s1
|
||||
add r4.xyzw, -r5.xyzw, r4.xyzw
|
||||
mad r4.xyzw, r2.yyyy, r4.xyzw, r5.xyzw
|
||||
add r3.xyzw, -r7.xyzw, r3.xyzw
|
||||
mad r3.xyzw, r2.yyyy, r3.xyzw, r7.xyzw
|
||||
add r3.xyzw, -r4.xyzw, r3.xyzw
|
||||
mad r1.xyzw, r2.xxxx, r3.xyzw, r4.xyzw
|
||||
else
|
||||
eq r0.x, cb0[0].y, l(6.000000)
|
||||
if_nz r0.x
|
||||
sample_indexable(texture2d)(float,float,float,float) r2.x, v1.xyxx, t0.xyzw, s0
|
||||
sample_indexable(texture2d)(float,float,float,float) r2.yz, v1.xyxx, t1.zxyw, s0
|
||||
@@ -114,7 +198,7 @@ else
|
||||
dp3 r1.y, r2.xyzx, cb0[5].xyzx
|
||||
dp3 r1.z, r2.xyzx, cb0[6].xyzx
|
||||
else
|
||||
eq r0.x, cb0[0].y, l(5.000000)
|
||||
eq r0.x, cb0[0].y, l(7.000000)
|
||||
if_nz r0.x
|
||||
sample_indexable(texture2d)(float,float,float,float) r2.x, v1.xyxx, t0.xyzw, s0
|
||||
sample_indexable(texture2d)(float,float,float,float) r2.yz, v1.xyxx, t1.zyxw, s0
|
||||
@@ -123,7 +207,7 @@ else
|
||||
dp3 r1.y, r2.xyzx, cb0[5].xyzx
|
||||
dp3 r1.z, r2.xyzx, cb0[6].xyzx
|
||||
else
|
||||
eq r0.x, cb0[0].y, l(6.000000)
|
||||
eq r0.x, cb0[0].y, l(8.000000)
|
||||
if_nz r0.x
|
||||
sample_indexable(texture2d)(float,float,float,float) r2.x, v1.xyxx, t0.xyzw, s0
|
||||
sample_indexable(texture2d)(float,float,float,float) r2.y, v1.xyxx, t1.yxzw, s0
|
||||
@@ -133,7 +217,7 @@ else
|
||||
dp3 r1.y, r2.xyzx, cb0[5].xyzx
|
||||
dp3 r1.z, r2.xyzx, cb0[6].xyzx
|
||||
else
|
||||
mov r1.xyz, l(1.000000,0,0,0)
|
||||
mov r1.xyz, l(1.000000,0,1.000000,0)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
@@ -142,6 +226,8 @@ else
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
log r2.xyz, |r1.xyzx|
|
||||
mul r2.xyz, r2.xyzx, l(0.012683, 0.012683, 0.012683, 0.000000)
|
||||
exp r2.xyz, r2.xyzx
|
||||
@@ -225,20 +311,20 @@ else
|
||||
endif
|
||||
mul o0.xyzw, r1.xyzw, v2.xyzw
|
||||
ret
|
||||
// Approximately 160 instruction slots used
|
||||
// Approximately 246 instruction slots used
|
||||
#endif
|
||||
|
||||
const BYTE g_main[] =
|
||||
{
|
||||
68, 88, 66, 67, 189, 249,
|
||||
3, 160, 168, 14, 177, 240,
|
||||
224, 229, 45, 241, 216, 176,
|
||||
187, 190, 1, 0, 0, 0,
|
||||
172, 24, 0, 0, 5, 0,
|
||||
68, 88, 66, 67, 218, 34,
|
||||
85, 97, 34, 23, 186, 108,
|
||||
107, 10, 84, 63, 204, 132,
|
||||
47, 109, 1, 0, 0, 0,
|
||||
236, 35, 0, 0, 5, 0,
|
||||
0, 0, 52, 0, 0, 0,
|
||||
168, 4, 0, 0, 28, 5,
|
||||
0, 0, 80, 5, 0, 0,
|
||||
16, 24, 0, 0, 82, 68,
|
||||
80, 35, 0, 0, 82, 68,
|
||||
69, 70, 108, 4, 0, 0,
|
||||
1, 0, 0, 0, 52, 1,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
@@ -457,8 +543,8 @@ const BYTE g_main[] =
|
||||
15, 0, 0, 0, 83, 86,
|
||||
95, 84, 65, 82, 71, 69,
|
||||
84, 0, 171, 171, 83, 72,
|
||||
69, 88, 184, 18, 0, 0,
|
||||
80, 0, 0, 0, 174, 4,
|
||||
69, 88, 248, 29, 0, 0,
|
||||
80, 0, 0, 0, 126, 7,
|
||||
0, 0, 106, 8, 0, 1,
|
||||
89, 0, 0, 4, 70, 142,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
@@ -481,7 +567,7 @@ const BYTE g_main[] =
|
||||
2, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
0, 0, 0, 0, 104, 0,
|
||||
0, 2, 7, 0, 0, 0,
|
||||
0, 2, 8, 0, 0, 0,
|
||||
24, 0, 0, 11, 242, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
150, 138, 32, 0, 0, 0,
|
||||
@@ -690,150 +776,630 @@ const BYTE g_main[] =
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 128, 64, 31, 0,
|
||||
4, 3, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 18, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 16, 16, 0, 1, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
0, 0, 0, 0, 0, 96,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
98, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 16, 16, 0,
|
||||
1, 0, 0, 0, 38, 125,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
0, 96, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 8,
|
||||
114, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 2, 16, 0,
|
||||
2, 0, 0, 0, 70, 130,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 16, 0,
|
||||
0, 8, 18, 0, 16, 0,
|
||||
1, 0, 0, 0, 70, 2,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 130, 32, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
16, 0, 0, 8, 34, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 2, 16, 0, 2, 0,
|
||||
0, 0, 70, 130, 32, 0,
|
||||
0, 0, 0, 0, 5, 0,
|
||||
0, 0, 16, 0, 0, 8,
|
||||
66, 0, 16, 0, 1, 0,
|
||||
0, 0, 70, 2, 16, 0,
|
||||
2, 0, 0, 0, 70, 130,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 18, 0,
|
||||
0, 1, 24, 0, 0, 8,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 26, 128, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 160, 64, 31, 0,
|
||||
4, 3, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 18, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 16, 16, 0, 1, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
0, 0, 0, 0, 0, 96,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
98, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 16, 16, 0,
|
||||
1, 0, 0, 0, 102, 124,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
0, 96, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 8,
|
||||
114, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 2, 16, 0,
|
||||
2, 0, 0, 0, 70, 130,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 16, 0,
|
||||
0, 8, 18, 0, 16, 0,
|
||||
1, 0, 0, 0, 70, 2,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 130, 32, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
16, 0, 0, 8, 34, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 2, 16, 0, 2, 0,
|
||||
0, 0, 70, 130, 32, 0,
|
||||
0, 0, 0, 0, 5, 0,
|
||||
0, 0, 16, 0, 0, 8,
|
||||
66, 0, 16, 0, 1, 0,
|
||||
0, 0, 70, 2, 16, 0,
|
||||
2, 0, 0, 0, 70, 130,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 18, 0,
|
||||
0, 1, 24, 0, 0, 8,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 26, 128, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 192, 64, 31, 0,
|
||||
4, 3, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 18, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 16, 16, 0, 1, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
0, 0, 0, 0, 0, 96,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
34, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 16, 16, 0,
|
||||
1, 0, 0, 0, 22, 126,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
0, 96, 16, 0, 0, 0,
|
||||
0, 0, 69, 0, 0, 139,
|
||||
194, 0, 0, 128, 67, 85,
|
||||
21, 0, 66, 0, 16, 0,
|
||||
0, 0, 0, 0, 50, 0,
|
||||
0, 13, 50, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 16,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
150, 124, 16, 0, 2, 0,
|
||||
0, 0, 0, 96, 16, 0,
|
||||
230, 138, 32, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
0, 63, 0, 0, 0, 63,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 8, 114, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 2,
|
||||
0, 0, 65, 0, 0, 5,
|
||||
242, 0, 16, 0, 3, 0,
|
||||
0, 0, 70, 4, 16, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 10, 242, 0, 16, 0,
|
||||
3, 0, 0, 0, 70, 14,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
0, 191, 0, 0, 0, 191,
|
||||
0, 0, 0, 63, 0, 0,
|
||||
0, 63, 56, 0, 0, 8,
|
||||
242, 0, 16, 0, 3, 0,
|
||||
0, 0, 70, 14, 16, 0,
|
||||
3, 0, 0, 0, 70, 132,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 26, 0,
|
||||
0, 5, 50, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 130, 32, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
16, 0, 0, 8, 18, 0,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 70, 0, 16, 0,
|
||||
3, 0, 0, 0, 70, 126,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 96, 16, 0, 0, 0,
|
||||
0, 0, 50, 0, 0, 9,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 127, 67,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
0, 63, 56, 0, 0, 7,
|
||||
18, 0, 16, 0, 4, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 128, 59,
|
||||
54, 0, 0, 8, 162, 0,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 63,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 63, 69, 0, 0, 139,
|
||||
194, 0, 0, 128, 67, 85,
|
||||
21, 0, 242, 0, 16, 0,
|
||||
5, 0, 0, 0, 70, 0,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
70, 126, 16, 0, 1, 0,
|
||||
0, 0, 0, 96, 16, 0,
|
||||
1, 0, 0, 0, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
198, 0, 16, 0, 3, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
0, 0, 0, 0, 0, 96,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
50, 0, 0, 9, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 127, 67, 1, 64,
|
||||
0, 0, 0, 0, 0, 63,
|
||||
56, 0, 0, 7, 66, 0,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 128, 59, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 242, 0,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
230, 10, 16, 0, 4, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
1, 0, 0, 0, 0, 96,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 102, 10, 16, 0,
|
||||
3, 0, 0, 0, 70, 126,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 96, 16, 0, 0, 0,
|
||||
0, 0, 50, 0, 0, 9,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 127, 67,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
0, 63, 56, 0, 0, 7,
|
||||
18, 0, 16, 0, 6, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 128, 59,
|
||||
54, 0, 0, 8, 162, 0,
|
||||
16, 0, 6, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 63,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 63, 69, 0, 0, 139,
|
||||
194, 0, 0, 128, 67, 85,
|
||||
21, 0, 242, 0, 16, 0,
|
||||
7, 0, 0, 0, 70, 0,
|
||||
16, 0, 6, 0, 0, 0,
|
||||
70, 126, 16, 0, 1, 0,
|
||||
0, 0, 0, 96, 16, 0,
|
||||
1, 0, 0, 0, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
230, 10, 16, 0, 3, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
0, 0, 0, 0, 0, 96,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
50, 0, 0, 9, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 127, 67, 1, 64,
|
||||
0, 0, 0, 0, 0, 63,
|
||||
56, 0, 0, 7, 66, 0,
|
||||
16, 0, 6, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 128, 59, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 242, 0,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
230, 10, 16, 0, 6, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
1, 0, 0, 0, 0, 96,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 8, 242, 0,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
70, 14, 16, 128, 65, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
70, 14, 16, 0, 4, 0,
|
||||
0, 0, 50, 0, 0, 9,
|
||||
242, 0, 16, 0, 4, 0,
|
||||
0, 0, 86, 5, 16, 0,
|
||||
2, 0, 0, 0, 70, 14,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
70, 14, 16, 0, 5, 0,
|
||||
0, 0, 0, 0, 0, 8,
|
||||
242, 0, 16, 0, 3, 0,
|
||||
0, 0, 70, 14, 16, 128,
|
||||
65, 0, 0, 0, 7, 0,
|
||||
0, 0, 70, 14, 16, 0,
|
||||
3, 0, 0, 0, 50, 0,
|
||||
0, 9, 242, 0, 16, 0,
|
||||
3, 0, 0, 0, 86, 5,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 14, 16, 0, 3, 0,
|
||||
0, 0, 70, 14, 16, 0,
|
||||
7, 0, 0, 0, 0, 0,
|
||||
0, 8, 242, 0, 16, 0,
|
||||
3, 0, 0, 0, 70, 14,
|
||||
16, 128, 65, 0, 0, 0,
|
||||
4, 0, 0, 0, 70, 14,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
50, 0, 0, 9, 242, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
6, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 14, 16, 0,
|
||||
3, 0, 0, 0, 70, 14,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
18, 0, 0, 1, 24, 0,
|
||||
0, 8, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 128,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 160, 64,
|
||||
31, 0, 4, 3, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
122, 0, 0, 5, 50, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 16, 16, 0, 1, 0,
|
||||
0, 0, 124, 0, 0, 5,
|
||||
194, 0, 16, 0, 2, 0,
|
||||
0, 0, 6, 20, 16, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 9, 50, 0, 16, 0,
|
||||
2, 0, 0, 0, 230, 10,
|
||||
16, 128, 129, 0, 0, 0,
|
||||
2, 0, 0, 0, 70, 0,
|
||||
16, 128, 129, 0, 0, 0,
|
||||
2, 0, 0, 0, 56, 0,
|
||||
0, 8, 50, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
230, 138, 32, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
52, 0, 0, 10, 50, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 0, 16, 0, 2, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
172, 197, 39, 55, 172, 197,
|
||||
39, 55, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 51, 0,
|
||||
0, 10, 50, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
128, 63, 0, 0, 128, 63,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 56, 0, 0, 10,
|
||||
194, 0, 16, 0, 2, 0,
|
||||
0, 0, 6, 4, 16, 0,
|
||||
2, 0, 0, 0, 2, 64,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 63, 0, 0, 0, 63,
|
||||
50, 0, 0, 11, 194, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
6, 20, 16, 0, 1, 0,
|
||||
0, 0, 166, 142, 32, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 166, 14, 16, 128,
|
||||
65, 0, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 11,
|
||||
50, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 0, 16, 128,
|
||||
65, 0, 0, 0, 2, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 0, 128, 63, 0, 0,
|
||||
128, 63, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 26, 0,
|
||||
0, 5, 50, 0, 16, 0,
|
||||
3, 0, 0, 0, 230, 10,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 11, 194, 0,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
6, 4, 16, 128, 65, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
2, 64, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 128, 63, 0, 0,
|
||||
128, 63, 0, 0, 0, 8,
|
||||
50, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 0, 16, 128,
|
||||
65, 0, 0, 0, 2, 0,
|
||||
0, 0, 70, 0, 16, 0,
|
||||
3, 0, 0, 0, 14, 0,
|
||||
0, 10, 50, 0, 16, 0,
|
||||
3, 0, 0, 0, 2, 64,
|
||||
0, 0, 0, 0, 128, 63,
|
||||
0, 0, 128, 63, 0, 0,
|
||||
128, 63, 0, 0, 128, 63,
|
||||
230, 10, 16, 0, 3, 0,
|
||||
0, 0, 56, 32, 0, 7,
|
||||
50, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 0,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
50, 0, 0, 15, 50, 0,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 0, 16, 0, 2, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 0, 0, 192, 0, 0,
|
||||
0, 192, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 64,
|
||||
0, 0, 0, 0, 64, 64,
|
||||
0, 0, 64, 64, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
56, 0, 0, 7, 50, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 0, 16, 0,
|
||||
2, 0, 0, 0, 65, 0,
|
||||
0, 5, 194, 0, 16, 0,
|
||||
2, 0, 0, 0, 166, 14,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
50, 0, 0, 9, 50, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 0, 16, 0, 3, 0,
|
||||
0, 0, 70, 0, 16, 0,
|
||||
2, 0, 0, 0, 230, 10,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 10, 50, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 0, 16, 0, 2, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 0, 0, 63, 0, 0,
|
||||
0, 63, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 56, 0,
|
||||
0, 8, 50, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 128, 32, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
50, 0, 0, 13, 50, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 0, 16, 0, 2, 0,
|
||||
0, 0, 230, 138, 32, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 0, 0, 63, 0, 0,
|
||||
0, 63, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 65, 0,
|
||||
0, 5, 242, 0, 16, 0,
|
||||
3, 0, 0, 0, 70, 4,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 10, 242, 0,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 14, 16, 0, 3, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 0, 0, 191, 0, 0,
|
||||
0, 191, 0, 0, 0, 63,
|
||||
0, 0, 0, 63, 56, 0,
|
||||
0, 8, 242, 0, 16, 0,
|
||||
3, 0, 0, 0, 70, 14,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 132, 32, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
26, 0, 0, 5, 50, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 0, 16, 0, 2, 0,
|
||||
0, 0, 69, 0, 0, 139,
|
||||
194, 0, 0, 128, 67, 85,
|
||||
21, 0, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 70, 0,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 126, 16, 0, 0, 0,
|
||||
0, 0, 0, 96, 16, 0,
|
||||
0, 0, 0, 0, 50, 0,
|
||||
0, 9, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
127, 67, 1, 64, 0, 0,
|
||||
0, 0, 0, 63, 56, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
4, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
128, 59, 54, 0, 0, 8,
|
||||
162, 0, 16, 0, 4, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 63, 0, 0, 0, 0,
|
||||
0, 0, 0, 63, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 242, 0,
|
||||
16, 0, 5, 0, 0, 0,
|
||||
70, 0, 16, 0, 4, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
1, 0, 0, 0, 0, 96,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 198, 0, 16, 0,
|
||||
3, 0, 0, 0, 70, 126,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 96, 16, 0, 0, 0,
|
||||
0, 0, 50, 0, 0, 9,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 127, 67,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
0, 63, 56, 0, 0, 7,
|
||||
66, 0, 16, 0, 4, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 128, 59,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
242, 0, 16, 0, 4, 0,
|
||||
0, 0, 230, 10, 16, 0,
|
||||
4, 0, 0, 0, 70, 126,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
0, 96, 16, 0, 1, 0,
|
||||
0, 0, 69, 0, 0, 139,
|
||||
194, 0, 0, 128, 67, 85,
|
||||
21, 0, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 102, 10,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 126, 16, 0, 0, 0,
|
||||
0, 0, 0, 96, 16, 0,
|
||||
0, 0, 0, 0, 50, 0,
|
||||
0, 9, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
127, 67, 1, 64, 0, 0,
|
||||
0, 0, 0, 63, 56, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
6, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
128, 59, 54, 0, 0, 8,
|
||||
162, 0, 16, 0, 6, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 63, 0, 0, 0, 0,
|
||||
0, 0, 0, 63, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 242, 0,
|
||||
16, 0, 7, 0, 0, 0,
|
||||
70, 0, 16, 0, 6, 0,
|
||||
0, 0, 70, 126, 16, 0,
|
||||
1, 0, 0, 0, 0, 96,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 230, 10, 16, 0,
|
||||
3, 0, 0, 0, 70, 126,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 96, 16, 0, 0, 0,
|
||||
0, 0, 50, 0, 0, 9,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 127, 67,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
0, 63, 56, 0, 0, 7,
|
||||
66, 0, 16, 0, 6, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 128, 59,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
242, 0, 16, 0, 3, 0,
|
||||
0, 0, 230, 10, 16, 0,
|
||||
6, 0, 0, 0, 70, 126,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
0, 96, 16, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 8,
|
||||
242, 0, 16, 0, 4, 0,
|
||||
0, 0, 70, 14, 16, 128,
|
||||
65, 0, 0, 0, 5, 0,
|
||||
0, 0, 70, 14, 16, 0,
|
||||
4, 0, 0, 0, 50, 0,
|
||||
0, 9, 242, 0, 16, 0,
|
||||
4, 0, 0, 0, 86, 5,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 14, 16, 0, 4, 0,
|
||||
0, 0, 70, 14, 16, 0,
|
||||
5, 0, 0, 0, 0, 0,
|
||||
0, 8, 242, 0, 16, 0,
|
||||
3, 0, 0, 0, 70, 14,
|
||||
16, 128, 65, 0, 0, 0,
|
||||
7, 0, 0, 0, 70, 14,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
50, 0, 0, 9, 242, 0,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
86, 5, 16, 0, 2, 0,
|
||||
0, 0, 70, 14, 16, 0,
|
||||
3, 0, 0, 0, 70, 14,
|
||||
16, 0, 7, 0, 0, 0,
|
||||
0, 0, 0, 8, 242, 0,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 14, 16, 128, 65, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
70, 14, 16, 0, 3, 0,
|
||||
0, 0, 50, 0, 0, 9,
|
||||
242, 0, 16, 0, 1, 0,
|
||||
0, 0, 6, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 14,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 14, 16, 0, 4, 0,
|
||||
0, 0, 18, 0, 0, 1,
|
||||
24, 0, 0, 8, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
26, 128, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
192, 64, 31, 0, 4, 3,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 69, 0, 0, 139,
|
||||
194, 0, 0, 128, 67, 85,
|
||||
21, 0, 18, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 16,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 126, 16, 0, 0, 0,
|
||||
0, 0, 0, 96, 16, 0,
|
||||
0, 0, 0, 0, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 98, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 16, 16, 0, 1, 0,
|
||||
0, 0, 38, 125, 16, 0,
|
||||
1, 0, 0, 0, 0, 96,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 8, 114, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 2, 16, 0, 2, 0,
|
||||
0, 0, 70, 130, 32, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 16, 0, 0, 8,
|
||||
34, 0, 16, 0, 1, 0,
|
||||
18, 0, 16, 0, 1, 0,
|
||||
0, 0, 70, 2, 16, 0,
|
||||
2, 0, 0, 0, 70, 130,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
5, 0, 0, 0, 16, 0,
|
||||
0, 8, 66, 0, 16, 0,
|
||||
4, 0, 0, 0, 16, 0,
|
||||
0, 8, 34, 0, 16, 0,
|
||||
1, 0, 0, 0, 70, 2,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 130, 32, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
18, 0, 0, 1, 54, 0,
|
||||
0, 8, 114, 0, 16, 0,
|
||||
1, 0, 0, 0, 2, 64,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
16, 0, 0, 8, 66, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 2, 16, 0, 2, 0,
|
||||
0, 0, 70, 130, 32, 0,
|
||||
0, 0, 0, 0, 6, 0,
|
||||
0, 0, 18, 0, 0, 1,
|
||||
24, 0, 0, 8, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
26, 128, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
224, 64, 31, 0, 4, 3,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 69, 0, 0, 139,
|
||||
194, 0, 0, 128, 67, 85,
|
||||
21, 0, 18, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 16,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 126, 16, 0, 0, 0,
|
||||
0, 0, 0, 96, 16, 0,
|
||||
0, 0, 0, 0, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 98, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 16, 16, 0, 1, 0,
|
||||
0, 0, 102, 124, 16, 0,
|
||||
1, 0, 0, 0, 0, 96,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 8, 114, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 2, 16, 0, 2, 0,
|
||||
0, 0, 70, 130, 32, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 16, 0, 0, 8,
|
||||
18, 0, 16, 0, 1, 0,
|
||||
0, 0, 70, 2, 16, 0,
|
||||
2, 0, 0, 0, 70, 130,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 16, 0,
|
||||
0, 8, 34, 0, 16, 0,
|
||||
1, 0, 0, 0, 70, 2,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 130, 32, 0, 0, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
16, 0, 0, 8, 66, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 2, 16, 0, 2, 0,
|
||||
0, 0, 70, 130, 32, 0,
|
||||
0, 0, 0, 0, 6, 0,
|
||||
0, 0, 18, 0, 0, 1,
|
||||
24, 0, 0, 8, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
26, 128, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
0, 65, 31, 0, 4, 3,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 69, 0, 0, 139,
|
||||
194, 0, 0, 128, 67, 85,
|
||||
21, 0, 18, 0, 16, 0,
|
||||
2, 0, 0, 0, 70, 16,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 126, 16, 0, 0, 0,
|
||||
0, 0, 0, 96, 16, 0,
|
||||
0, 0, 0, 0, 69, 0,
|
||||
0, 139, 194, 0, 0, 128,
|
||||
67, 85, 21, 0, 34, 0,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 16, 16, 0, 1, 0,
|
||||
0, 0, 22, 126, 16, 0,
|
||||
1, 0, 0, 0, 0, 96,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
69, 0, 0, 139, 194, 0,
|
||||
0, 128, 67, 85, 21, 0,
|
||||
66, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 16, 16, 0,
|
||||
1, 0, 0, 0, 150, 124,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
0, 96, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 8,
|
||||
114, 0, 16, 0, 2, 0,
|
||||
0, 0, 70, 2, 16, 0,
|
||||
2, 0, 0, 0, 70, 130,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 16, 0,
|
||||
0, 8, 18, 0, 16, 0,
|
||||
1, 0, 0, 0, 70, 2,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 130, 32, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
16, 0, 0, 8, 34, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 2, 16, 0, 2, 0,
|
||||
0, 0, 70, 130, 32, 0,
|
||||
0, 0, 0, 0, 5, 0,
|
||||
0, 0, 16, 0, 0, 8,
|
||||
66, 0, 16, 0, 1, 0,
|
||||
0, 0, 70, 2, 16, 0,
|
||||
2, 0, 0, 0, 70, 130,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 18, 0,
|
||||
0, 1, 54, 0, 0, 8,
|
||||
114, 0, 16, 0, 1, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 0, 128, 63, 0, 0,
|
||||
0, 0, 0, 0, 128, 63,
|
||||
0, 0, 0, 0, 21, 0,
|
||||
0, 1, 21, 0, 0, 1,
|
||||
21, 0, 0, 1, 54, 0,
|
||||
0, 5, 130, 0, 16, 0,
|
||||
1, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 128, 63,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 1, 21, 0,
|
||||
0, 1, 21, 0, 0, 1,
|
||||
54, 0, 0, 5, 130, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
128, 63, 21, 0, 0, 1,
|
||||
21, 0, 0, 1, 21, 0,
|
||||
0, 1, 21, 0, 0, 1,
|
||||
47, 0, 0, 6, 114, 0,
|
||||
@@ -1258,21 +1824,21 @@ const BYTE g_main[] =
|
||||
16, 0, 2, 0, 0, 0,
|
||||
62, 0, 0, 1, 83, 84,
|
||||
65, 84, 148, 0, 0, 0,
|
||||
160, 0, 0, 0, 7, 0,
|
||||
246, 0, 0, 0, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 95, 0,
|
||||
3, 0, 0, 0, 155, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 11, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
0, 0, 0, 0, 13, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 26, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 8, 0,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 4, 0,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
5, 0, 0, 0, 0, 0,
|
||||
11, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
|
@@ -20,10 +20,12 @@ static const float TONEMAP_CHROME = 2;
|
||||
static const float TEXTURETYPE_NONE = 0;
|
||||
static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_PALETTE = 3;
|
||||
static const float TEXTURETYPE_NV12 = 4;
|
||||
static const float TEXTURETYPE_NV21 = 5;
|
||||
static const float TEXTURETYPE_YUV = 6;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
|
||||
static const float TEXTURETYPE_NV12 = 6;
|
||||
static const float TEXTURETYPE_NV21 = 7;
|
||||
static const float TEXTURETYPE_YUV = 8;
|
||||
|
||||
static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -118,21 +120,48 @@ float3 ApplyTonemap(float3 v)
|
||||
return v;
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(PixelShaderInput input)
|
||||
float4 SamplePaletteNearest(float2 uv)
|
||||
{
|
||||
float index = texture0.Sample(sampler0, uv).r * 255;
|
||||
return texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
|
||||
}
|
||||
|
||||
// Implementation with thanks from bgolus:
|
||||
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
|
||||
float4 SamplePaletteLinear(float2 uv)
|
||||
{
|
||||
// scale & offset uvs to integer values at texel centers
|
||||
float2 uv_texels = uv * texel_size.zw + 0.5;
|
||||
|
||||
// get uvs for the center of the 4 surrounding texels by flooring
|
||||
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
|
||||
|
||||
// blend factor
|
||||
float2 uv_frac = frac(uv_texels);
|
||||
|
||||
// sample all 4 texels
|
||||
float4 texelA = SamplePaletteNearest(uv_min_max.xy);
|
||||
float4 texelB = SamplePaletteNearest(uv_min_max.xw);
|
||||
float4 texelC = SamplePaletteNearest(uv_min_max.zy);
|
||||
float4 texelD = SamplePaletteNearest(uv_min_max.zw);
|
||||
|
||||
// bilinear interpolation
|
||||
return lerp(lerp(texelA, texelB, uv_frac.y), lerp(texelC, texelD, uv_frac.y), uv_frac.x);
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(float2 uv)
|
||||
{
|
||||
// box filter size in texel units
|
||||
float2 boxSize = clamp(fwidth(input.tex) * texel_size.zw, 1e-5, 1);
|
||||
float2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1);
|
||||
|
||||
// scale uv by texture size to get texel coordinate
|
||||
float2 tx = input.tex * texel_size.zw - 0.5 * boxSize;
|
||||
float2 tx = uv * texel_size.zw - 0.5 * boxSize;
|
||||
|
||||
// compute offset for pixel-sized box filter
|
||||
float2 txOffset = smoothstep(1 - boxSize, 1, frac(tx));
|
||||
|
||||
// compute bilinear sample uv coordinates
|
||||
float2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy;
|
||||
|
||||
return uv;
|
||||
return (floor(tx) + 0.5 + txOffset) * texel_size.xy;
|
||||
}
|
||||
|
||||
float4 GetInputColor(PixelShaderInput input)
|
||||
@@ -144,11 +173,15 @@ float4 GetInputColor(PixelShaderInput input)
|
||||
} else if (texture_type == TEXTURETYPE_RGB) {
|
||||
rgba = texture0.Sample(sampler0, input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_RGB_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input);
|
||||
float2 uv = GetPixelArtUV(input.tex);
|
||||
rgba = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex));
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE) {
|
||||
float index = texture0.Sample(sampler0, input.tex).r * 255;
|
||||
rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_NEAREST) {
|
||||
rgba = SamplePaletteNearest(input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_LINEAR) {
|
||||
rgba = SamplePaletteLinear(input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input.tex);
|
||||
rgba = SamplePaletteLinear(uv);
|
||||
} else if (texture_type == TEXTURETYPE_NV12) {
|
||||
float3 yuv;
|
||||
yuv.x = texture0.Sample(sampler0, input.tex).r;
|
||||
@@ -184,7 +217,7 @@ float4 GetInputColor(PixelShaderInput input)
|
||||
// Error!
|
||||
rgba.r = 1.0;
|
||||
rgba.g = 0.0;
|
||||
rgba.b = 0.0;
|
||||
rgba.b = 1.0;
|
||||
rgba.a = 1.0;
|
||||
}
|
||||
return rgba;
|
||||
|
@@ -69,10 +69,12 @@ static const float TONEMAP_CHROME = 2;
|
||||
//static const float TEXTURETYPE_NONE = 0;
|
||||
static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_PALETTE = 3;
|
||||
static const float TEXTURETYPE_NV12 = 4;
|
||||
static const float TEXTURETYPE_NV21 = 5;
|
||||
static const float TEXTURETYPE_YUV = 6;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
|
||||
static const float TEXTURETYPE_NV12 = 6;
|
||||
static const float TEXTURETYPE_NV21 = 7;
|
||||
static const float TEXTURETYPE_YUV = 8;
|
||||
|
||||
static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -2189,8 +2191,20 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
|
||||
|
||||
switch (texture->format) {
|
||||
case SDL_PIXELFORMAT_INDEX8:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE;
|
||||
constants->input_type = INPUTTYPE_UNSPECIFIED;
|
||||
switch (cmd->data.draw.texture_scale_mode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_NEAREST;
|
||||
break;
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_LINEAR;
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
|
||||
break;
|
||||
default:
|
||||
SDL_assert(!"Unknown scale mode");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SDL_PIXELFORMAT_YV12:
|
||||
case SDL_PIXELFORMAT_IYUV:
|
||||
@@ -2212,10 +2226,6 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
|
||||
default:
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
constants->texture_type = TEXTURETYPE_RGB_PIXELART;
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
} else {
|
||||
constants->texture_type = TEXTURETYPE_RGB;
|
||||
}
|
||||
@@ -2230,6 +2240,15 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
|
||||
break;
|
||||
}
|
||||
|
||||
if (constants->texture_type == TEXTURETYPE_PALETTE_LINEAR ||
|
||||
constants->texture_type == TEXTURETYPE_PALETTE_PIXELART ||
|
||||
constants->texture_type == TEXTURETYPE_RGB_PIXELART) {
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
}
|
||||
|
||||
constants->sdr_white_point = texture->SDR_white_point;
|
||||
|
||||
if (renderer->target) {
|
||||
@@ -2429,7 +2448,7 @@ static bool D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *
|
||||
return true;
|
||||
}
|
||||
|
||||
static ID3D11SamplerState *D3D11_GetSamplerState(D3D11_RenderData *data, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
static ID3D11SamplerState *D3D11_GetSamplerState(D3D11_RenderData *data, SDL_PixelFormat format, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
{
|
||||
Uint32 key = RENDER_SAMPLER_HASHKEY(scale_mode, address_u, address_v);
|
||||
SDL_assert(key < SDL_arraysize(data->samplers));
|
||||
@@ -2448,7 +2467,12 @@ static ID3D11SamplerState *D3D11_GetSamplerState(D3D11_RenderData *data, SDL_Sca
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART: // Uses linear sampling
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
if (format == SDL_PIXELFORMAT_INDEX8) {
|
||||
// We'll do linear sampling in the shader
|
||||
samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;
|
||||
} else {
|
||||
samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
SDL_SetError("Unknown scale mode: %d", scale_mode);
|
||||
@@ -2506,7 +2530,7 @@ static bool D3D11_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *
|
||||
|
||||
shaderResources[numShaderResources++] = textureData->mainTextureResourceView;
|
||||
|
||||
shaderSamplers[numShaderSamplers] = D3D11_GetSamplerState(rendererData, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
shaderSamplers[numShaderSamplers] = D3D11_GetSamplerState(rendererData, texture->format, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
if (!shaderSamplers[numShaderSamplers]) {
|
||||
return false;
|
||||
}
|
||||
@@ -2517,7 +2541,7 @@ static bool D3D11_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *
|
||||
|
||||
shaderResources[numShaderResources++] = palette->resourceView;
|
||||
|
||||
shaderSamplers[numShaderSamplers] = D3D11_GetSamplerState(rendererData, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
shaderSamplers[numShaderSamplers] = D3D11_GetSamplerState(rendererData, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
if (!shaderSamplers[numShaderSamplers]) {
|
||||
return false;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -21,10 +21,12 @@ static const float TONEMAP_CHROME = 2;
|
||||
static const float TEXTURETYPE_NONE = 0;
|
||||
static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_PALETTE = 3;
|
||||
static const float TEXTURETYPE_NV12 = 4;
|
||||
static const float TEXTURETYPE_NV21 = 5;
|
||||
static const float TEXTURETYPE_YUV = 6;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
|
||||
static const float TEXTURETYPE_NV12 = 6;
|
||||
static const float TEXTURETYPE_NV21 = 7;
|
||||
static const float TEXTURETYPE_YUV = 8;
|
||||
|
||||
static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -119,21 +121,48 @@ float3 ApplyTonemap(float3 v)
|
||||
return v;
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(PixelShaderInput input)
|
||||
float4 SamplePaletteNearest(float2 uv)
|
||||
{
|
||||
float index = texture0.Sample(sampler0, uv).r * 255;
|
||||
return texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
|
||||
}
|
||||
|
||||
// Implementation with thanks from bgolus:
|
||||
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
|
||||
float4 SamplePaletteLinear(float2 uv)
|
||||
{
|
||||
// scale & offset uvs to integer values at texel centers
|
||||
float2 uv_texels = uv * texel_size.zw + 0.5;
|
||||
|
||||
// get uvs for the center of the 4 surrounding texels by flooring
|
||||
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
|
||||
|
||||
// blend factor
|
||||
float2 uv_frac = frac(uv_texels);
|
||||
|
||||
// sample all 4 texels
|
||||
float4 texelA = SamplePaletteNearest(uv_min_max.xy);
|
||||
float4 texelB = SamplePaletteNearest(uv_min_max.xw);
|
||||
float4 texelC = SamplePaletteNearest(uv_min_max.zy);
|
||||
float4 texelD = SamplePaletteNearest(uv_min_max.zw);
|
||||
|
||||
// bilinear interpolation
|
||||
return lerp(lerp(texelA, texelB, uv_frac.y), lerp(texelC, texelD, uv_frac.y), uv_frac.x);
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(float2 uv)
|
||||
{
|
||||
// box filter size in texel units
|
||||
float2 boxSize = clamp(fwidth(input.tex) * texel_size.zw, 1e-5, 1);
|
||||
float2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1);
|
||||
|
||||
// scale uv by texture size to get texel coordinate
|
||||
float2 tx = input.tex * texel_size.zw - 0.5 * boxSize;
|
||||
float2 tx = uv * texel_size.zw - 0.5 * boxSize;
|
||||
|
||||
// compute offset for pixel-sized box filter
|
||||
float2 txOffset = smoothstep(1 - boxSize, 1, frac(tx));
|
||||
|
||||
// compute bilinear sample uv coordinates
|
||||
float2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy;
|
||||
|
||||
return uv;
|
||||
return (floor(tx) + 0.5 + txOffset) * texel_size.xy;
|
||||
}
|
||||
|
||||
float4 GetInputColor(PixelShaderInput input)
|
||||
@@ -145,11 +174,15 @@ float4 GetInputColor(PixelShaderInput input)
|
||||
} else if (texture_type == TEXTURETYPE_RGB) {
|
||||
rgba = texture0.Sample(sampler0, input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_RGB_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input);
|
||||
float2 uv = GetPixelArtUV(input.tex);
|
||||
rgba = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex));
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE) {
|
||||
float index = texture0.Sample(sampler0, input.tex).r * 255;
|
||||
rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_NEAREST) {
|
||||
rgba = SamplePaletteNearest(input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_LINEAR) {
|
||||
rgba = SamplePaletteLinear(input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input.tex);
|
||||
rgba = SamplePaletteLinear(uv);
|
||||
} else if (texture_type == TEXTURETYPE_NV12) {
|
||||
float3 yuv;
|
||||
yuv.x = texture0.Sample(sampler0, input.tex).r;
|
||||
@@ -185,7 +218,7 @@ float4 GetInputColor(PixelShaderInput input)
|
||||
// Error!
|
||||
rgba.r = 1.0;
|
||||
rgba.g = 0.0;
|
||||
rgba.b = 0.0;
|
||||
rgba.b = 1.0;
|
||||
rgba.a = 1.0;
|
||||
}
|
||||
return rgba;
|
||||
|
@@ -70,10 +70,12 @@ static const float TONEMAP_CHROME = 2;
|
||||
//static const float TEXTURETYPE_NONE = 0;
|
||||
static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_PALETTE = 3;
|
||||
static const float TEXTURETYPE_NV12 = 4;
|
||||
static const float TEXTURETYPE_NV21 = 5;
|
||||
static const float TEXTURETYPE_YUV = 6;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
|
||||
static const float TEXTURETYPE_NV12 = 6;
|
||||
static const float TEXTURETYPE_NV21 = 7;
|
||||
static const float TEXTURETYPE_YUV = 8;
|
||||
|
||||
static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -2599,8 +2601,20 @@ static void D3D12_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
|
||||
|
||||
switch (texture->format) {
|
||||
case SDL_PIXELFORMAT_INDEX8:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE;
|
||||
constants->input_type = INPUTTYPE_UNSPECIFIED;
|
||||
switch (cmd->data.draw.texture_scale_mode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_NEAREST;
|
||||
break;
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_LINEAR;
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
|
||||
break;
|
||||
default:
|
||||
SDL_assert(!"Unknown scale mode");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SDL_PIXELFORMAT_YV12:
|
||||
case SDL_PIXELFORMAT_IYUV:
|
||||
@@ -2622,10 +2636,6 @@ static void D3D12_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
|
||||
default:
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
constants->texture_type = TEXTURETYPE_RGB_PIXELART;
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
} else {
|
||||
constants->texture_type = TEXTURETYPE_RGB;
|
||||
}
|
||||
@@ -2640,6 +2650,15 @@ static void D3D12_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC
|
||||
break;
|
||||
}
|
||||
|
||||
if (constants->texture_type == TEXTURETYPE_PALETTE_LINEAR ||
|
||||
constants->texture_type == TEXTURETYPE_PALETTE_PIXELART ||
|
||||
constants->texture_type == TEXTURETYPE_RGB_PIXELART) {
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
}
|
||||
|
||||
constants->sdr_white_point = texture->SDR_white_point;
|
||||
|
||||
if (renderer->target) {
|
||||
@@ -2848,7 +2867,7 @@ static bool D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *
|
||||
return true;
|
||||
}
|
||||
|
||||
static D3D12_CPU_DESCRIPTOR_HANDLE *D3D12_GetSamplerState(D3D12_RenderData *data, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
static D3D12_CPU_DESCRIPTOR_HANDLE *D3D12_GetSamplerState(D3D12_RenderData *data, SDL_PixelFormat format, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
{
|
||||
Uint32 key = RENDER_SAMPLER_HASHKEY(scale_mode, address_u, address_v);
|
||||
SDL_assert(key < SDL_arraysize(data->samplers));
|
||||
@@ -2867,7 +2886,12 @@ static D3D12_CPU_DESCRIPTOR_HANDLE *D3D12_GetSamplerState(D3D12_RenderData *data
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART: // Uses linear sampling
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
if (format == SDL_PIXELFORMAT_INDEX8) {
|
||||
// We'll do linear sampling in the shader
|
||||
samplerDesc.Filter = D3D12_FILTER_MIN_MAG_MIP_POINT;
|
||||
} else {
|
||||
samplerDesc.Filter = D3D12_FILTER_MIN_MAG_MIP_LINEAR;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
SDL_SetError("Unknown scale mode: %d", scale_mode);
|
||||
@@ -2923,7 +2947,7 @@ static bool D3D12_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *
|
||||
textureData->mainResourceState = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
|
||||
shaderResources[numShaderResources++] = textureData->mainTextureResourceView;
|
||||
|
||||
textureSampler = D3D12_GetSamplerState(rendererData, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
textureSampler = D3D12_GetSamplerState(rendererData, texture->format, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
if (!textureSampler) {
|
||||
return false;
|
||||
}
|
||||
@@ -2936,7 +2960,7 @@ static bool D3D12_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *
|
||||
palette->resourceState = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
|
||||
shaderResources[numShaderResources++] = palette->resourceView;
|
||||
|
||||
textureSampler = D3D12_GetSamplerState(rendererData, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
textureSampler = D3D12_GetSamplerState(rendererData, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
if (!textureSampler) {
|
||||
return false;
|
||||
}
|
||||
|
@@ -70,10 +70,12 @@ static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_RGBA = 3;
|
||||
static const float TEXTURETYPE_RGBA_PIXELART = 4;
|
||||
static const float TEXTURETYPE_PALETTE = 5;
|
||||
static const float TEXTURETYPE_NV12 = 6;
|
||||
static const float TEXTURETYPE_NV21 = 7;
|
||||
static const float TEXTURETYPE_YUV = 8;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 5;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 6;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 7;
|
||||
static const float TEXTURETYPE_NV12 = 8;
|
||||
static const float TEXTURETYPE_NV21 = 9;
|
||||
static const float TEXTURETYPE_YUV = 10;
|
||||
|
||||
static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -748,7 +750,7 @@ static void SetViewportAndScissor(GPU_RenderData *data)
|
||||
}
|
||||
}
|
||||
|
||||
static SDL_GPUSampler *GetSampler(GPU_RenderData *data, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
static SDL_GPUSampler *GetSampler(GPU_RenderData *data, SDL_PixelFormat format, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
{
|
||||
Uint32 key = RENDER_SAMPLER_HASHKEY(scale_mode, address_u, address_v);
|
||||
SDL_assert(key < SDL_arraysize(data->samplers));
|
||||
@@ -763,9 +765,16 @@ static SDL_GPUSampler *GetSampler(GPU_RenderData *data, SDL_ScaleMode scale_mode
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART: // Uses linear sampling
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
if (format == SDL_PIXELFORMAT_INDEX8) {
|
||||
// We'll do linear sampling in the shader
|
||||
sci.min_filter = SDL_GPU_FILTER_NEAREST;
|
||||
sci.mag_filter = SDL_GPU_FILTER_NEAREST;
|
||||
sci.mipmap_mode = SDL_GPU_SAMPLERMIPMAPMODE_NEAREST;
|
||||
} else {
|
||||
sci.min_filter = SDL_GPU_FILTER_LINEAR;
|
||||
sci.mag_filter = SDL_GPU_FILTER_LINEAR;
|
||||
sci.mipmap_mode = SDL_GPU_SAMPLERMIPMAPMODE_LINEAR;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
SDL_SetError("Unknown scale mode: %d", scale_mode);
|
||||
@@ -810,6 +819,22 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
|
||||
constants->color_scale = cmd->data.draw.color_scale;
|
||||
|
||||
switch (texture->format) {
|
||||
case SDL_PIXELFORMAT_INDEX8:
|
||||
switch (cmd->data.draw.texture_scale_mode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_NEAREST;
|
||||
break;
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_LINEAR;
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
|
||||
break;
|
||||
default:
|
||||
SDL_assert(!"Unknown scale mode");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SDL_PIXELFORMAT_YV12:
|
||||
case SDL_PIXELFORMAT_IYUV:
|
||||
constants->texture_type = TEXTURETYPE_YUV;
|
||||
@@ -829,9 +854,6 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
|
||||
break;
|
||||
default:
|
||||
switch (texture->format) {
|
||||
case SDL_PIXELFORMAT_INDEX8:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE;
|
||||
break;
|
||||
case SDL_PIXELFORMAT_BGRX32:
|
||||
case SDL_PIXELFORMAT_RGBX32:
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
@@ -840,23 +862,13 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
|
||||
constants->texture_type = TEXTURETYPE_RGB;
|
||||
}
|
||||
break;
|
||||
case SDL_PIXELFORMAT_BGRA32:
|
||||
case SDL_PIXELFORMAT_RGBA32:
|
||||
case SDL_PIXELFORMAT_ABGR2101010:
|
||||
case SDL_PIXELFORMAT_RGBA64_FLOAT:
|
||||
default:
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
constants->texture_type = TEXTURETYPE_RGBA_PIXELART;
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
} else {
|
||||
constants->texture_type = TEXTURETYPE_RGBA;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
SDL_assert(!"Unhandled pixel format");
|
||||
break;
|
||||
}
|
||||
if (texture->colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
|
||||
constants->input_type = INPUTTYPE_SCRGB;
|
||||
@@ -869,6 +881,16 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R
|
||||
break;
|
||||
}
|
||||
|
||||
if (constants->texture_type == TEXTURETYPE_PALETTE_LINEAR ||
|
||||
constants->texture_type == TEXTURETYPE_PALETTE_PIXELART ||
|
||||
constants->texture_type == TEXTURETYPE_RGB_PIXELART ||
|
||||
constants->texture_type == TEXTURETYPE_RGBA_PIXELART) {
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
}
|
||||
|
||||
constants->sdr_white_point = texture->SDR_white_point;
|
||||
|
||||
if (renderer->target) {
|
||||
@@ -968,7 +990,7 @@ static void Draw(
|
||||
GPU_TextureData *tdata = (GPU_TextureData *)texture->internal;
|
||||
SDL_GPUTextureSamplerBinding sampler_bind;
|
||||
SDL_zero(sampler_bind);
|
||||
sampler_bind.sampler = GetSampler(data, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
sampler_bind.sampler = GetSampler(data, texture->format, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
sampler_bind.texture = tdata->texture;
|
||||
SDL_BindGPUFragmentSamplers(pass, sampler_slot++, &sampler_bind, 1);
|
||||
|
||||
@@ -976,7 +998,7 @@ static void Draw(
|
||||
if (texture->palette) {
|
||||
GPU_PaletteData *palette = (GPU_PaletteData *)texture->palette->internal;
|
||||
|
||||
sampler_bind.sampler = GetSampler(data, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
sampler_bind.sampler = GetSampler(data, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
sampler_bind.texture = palette->texture;
|
||||
SDL_BindGPUFragmentSamplers(pass, sampler_slot++, &sampler_bind, 1);
|
||||
#ifdef SDL_HAVE_YUV
|
||||
|
886
src/render/gpu/shaders/texture_advanced.frag.dxil.h
generated
886
src/render/gpu/shaders/texture_advanced.frag.dxil.h
generated
@@ -1,7 +1,7 @@
|
||||
static const unsigned char texture_advanced_frag_dxil[] = {
|
||||
0x44, 0x58, 0x42, 0x43, 0x87, 0xd1, 0x2b, 0xae, 0x43, 0x0c, 0x5c, 0x59,
|
||||
0xbd, 0x26, 0xab, 0xe9, 0x83, 0xa8, 0xa0, 0x6c, 0x01, 0x00, 0x00, 0x00,
|
||||
0x20, 0x25, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
|
||||
0x44, 0x58, 0x42, 0x43, 0xd4, 0xfc, 0x30, 0x59, 0xc7, 0xf8, 0xb0, 0x68,
|
||||
0x13, 0xf8, 0xe2, 0x91, 0x10, 0x66, 0x8d, 0xcf, 0x01, 0x00, 0x00, 0x00,
|
||||
0xf0, 0x2a, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00,
|
||||
0x38, 0x02, 0x00, 0x00, 0x80, 0x0c, 0x00, 0x00, 0x9c, 0x0c, 0x00, 0x00,
|
||||
0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -122,8 +122,8 @@ static const unsigned char texture_advanced_frag_dxil[] = {
|
||||
0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24,
|
||||
0xca, 0xa0, 0xc0, 0x03, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4,
|
||||
0x34, 0x0a, 0xa8, 0x90, 0x0a, 0xaa, 0xb0, 0x0a, 0xac, 0x00, 0x03, 0x0a,
|
||||
0x34, 0xa0, 0x80, 0x03, 0xca, 0xa3, 0x7c, 0xca, 0x99, 0xa0, 0x90, 0x11,
|
||||
0xca, 0x82, 0x8a, 0x92, 0x18, 0x01, 0x28, 0x82, 0x42, 0x28, 0x10, 0xe2,
|
||||
0x34, 0xa0, 0x80, 0x03, 0xca, 0xa3, 0x84, 0x4a, 0xf3, 0xa0, 0x50, 0x19,
|
||||
0xca, 0x86, 0x8a, 0x92, 0x18, 0x01, 0x28, 0x82, 0x42, 0x28, 0x10, 0xe2,
|
||||
0x6a, 0x80, 0xc6, 0x19, 0x00, 0x22, 0x67, 0x00, 0xa8, 0x9c, 0x01, 0xa0,
|
||||
0x73, 0x06, 0x80, 0xd0, 0xb1, 0x10, 0x83, 0x08, 0x04, 0x02, 0x79, 0x1e,
|
||||
0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
|
||||
@@ -266,12 +266,12 @@ static const unsigned char texture_advanced_frag_dxil[] = {
|
||||
0x4d, 0x08, 0x10, 0x61, 0x7e, 0x71, 0xdb, 0x46, 0xf0, 0x0c, 0x97, 0xef,
|
||||
0x3c, 0x3e, 0xd5, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x04, 0x03,
|
||||
0x20, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48,
|
||||
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x41, 0x54, 0x3c,
|
||||
0x83, 0x93, 0xd5, 0x7c, 0x6b, 0x35, 0x4a, 0x0a, 0x1f, 0xeb, 0xd1, 0x6d,
|
||||
0x44, 0x58, 0x49, 0x4c, 0x7c, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
||||
0x1f, 0x06, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0x64, 0x18, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
|
||||
0x21, 0x0c, 0x00, 0x00, 0x16, 0x06, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
|
||||
0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x9d, 0xc5, 0xbc,
|
||||
0x54, 0xca, 0x8e, 0x09, 0xf3, 0x58, 0x6e, 0x8b, 0x04, 0x4d, 0xdb, 0xb2,
|
||||
0x44, 0x58, 0x49, 0x4c, 0x4c, 0x1e, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
||||
0x93, 0x07, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0x34, 0x1e, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde,
|
||||
0x21, 0x0c, 0x00, 0x00, 0x8a, 0x07, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91,
|
||||
0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c,
|
||||
0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02,
|
||||
@@ -422,374 +422,498 @@ static const unsigned char texture_advanced_frag_dxil[] = {
|
||||
0xf3, 0xf8, 0x13, 0x11, 0x4d, 0x08, 0x10, 0x61, 0x7e, 0x71, 0xdb, 0x46,
|
||||
0xf0, 0x0c, 0x97, 0xef, 0x3c, 0x3e, 0xd5, 0x00, 0x11, 0xe6, 0x17, 0xb7,
|
||||
0x6d, 0x00, 0x04, 0x03, 0x20, 0x0d, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00,
|
||||
0x51, 0x04, 0x00, 0x00, 0x13, 0x04, 0xa3, 0x10, 0x0b, 0x04, 0x00, 0x00,
|
||||
0x5c, 0x00, 0x00, 0x00, 0xc4, 0x8d, 0x00, 0x50, 0x51, 0x02, 0x65, 0x40,
|
||||
0x44, 0xf9, 0x95, 0x43, 0xb1, 0x94, 0x4d, 0xa1, 0x06, 0x94, 0x69, 0x40,
|
||||
0xc9, 0x95, 0x42, 0xb9, 0x15, 0x42, 0x21, 0x15, 0x5e, 0xa9, 0x94, 0x4b,
|
||||
0x19, 0x95, 0x5d, 0x71, 0xcd, 0x00, 0xd0, 0x30, 0x46, 0xe0, 0xf6, 0xb1,
|
||||
0x68, 0x7b, 0x63, 0x04, 0xef, 0x9e, 0x96, 0xf7, 0x37, 0x46, 0xa0, 0xb3,
|
||||
0xe6, 0x1c, 0x82, 0xc1, 0x18, 0x81, 0x98, 0x8b, 0x69, 0xff, 0x8d, 0x11,
|
||||
0x80, 0x25, 0xcf, 0xc6, 0xbf, 0x30, 0x46, 0x30, 0xa6, 0xab, 0x9a, 0xfb,
|
||||
0xc2, 0x18, 0xc1, 0x3f, 0x93, 0xfe, 0xef, 0x0b, 0x63, 0x04, 0x74, 0x0d,
|
||||
0x8a, 0xf9, 0x37, 0x46, 0xd0, 0xc2, 0x71, 0x0c, 0xfa, 0xc2, 0x18, 0xc1,
|
||||
0xdc, 0xb7, 0x69, 0xea, 0x0b, 0x63, 0x04, 0xad, 0x1b, 0xf2, 0xbc, 0x2f,
|
||||
0x8c, 0x11, 0xf0, 0x39, 0xeb, 0xe3, 0xdf, 0x18, 0x01, 0x08, 0x82, 0x20,
|
||||
0x0a, 0x06, 0x63, 0x04, 0x20, 0x08, 0x82, 0x2a, 0x18, 0x8c, 0x11, 0x80,
|
||||
0x20, 0xe8, 0xdf, 0xdf, 0x18, 0x01, 0x08, 0x82, 0x20, 0xdc, 0x8d, 0x11,
|
||||
0x80, 0x20, 0x08, 0xb2, 0x60, 0x30, 0x46, 0x00, 0x82, 0x20, 0xe8, 0x82,
|
||||
0xc1, 0x18, 0x01, 0x08, 0x82, 0x20, 0x0c, 0x06, 0x63, 0x04, 0x2c, 0x7b,
|
||||
0x86, 0xf2, 0x37, 0x46, 0x80, 0xfa, 0x65, 0xac, 0x7e, 0x63, 0x04, 0xf9,
|
||||
0xa9, 0x8b, 0xb3, 0x37, 0x46, 0xa0, 0xd7, 0xe0, 0x8e, 0x7b, 0x63, 0x04,
|
||||
0x2a, 0x9e, 0xdb, 0xf6, 0x37, 0x46, 0xf0, 0xf6, 0x29, 0x3d, 0x7a, 0x63,
|
||||
0x04, 0xeb, 0x1c, 0xb3, 0xa8, 0x37, 0x46, 0x90, 0x86, 0x30, 0xba, 0x7b,
|
||||
0x63, 0x04, 0x77, 0x1b, 0xab, 0xf6, 0x37, 0x46, 0x10, 0xf3, 0x60, 0x9f,
|
||||
0x7b, 0x63, 0x04, 0xe6, 0xbd, 0xae, 0xb2, 0x37, 0x46, 0x00, 0x82, 0x30,
|
||||
0x1e, 0x8e, 0xc1, 0x18, 0xc1, 0x3a, 0xe2, 0x31, 0x0b, 0x06, 0x63, 0x04,
|
||||
0x20, 0x48, 0xb7, 0x39, 0x18, 0x8c, 0x11, 0x80, 0x20, 0xb8, 0xe6, 0x60,
|
||||
0x30, 0x46, 0x00, 0x82, 0x20, 0x5b, 0xff, 0xc2, 0x18, 0x01, 0xdb, 0xce,
|
||||
0x3f, 0xe9, 0x8d, 0x11, 0x80, 0x20, 0x08, 0xe2, 0xbf, 0x30, 0x46, 0xc0,
|
||||
0xb6, 0xf1, 0x2b, 0x6f, 0x63, 0x04, 0x6e, 0x1f, 0x8b, 0xb6, 0x2f, 0x8c,
|
||||
0x11, 0xf4, 0xb1, 0xe8, 0xe2, 0xdf, 0x18, 0x41, 0xad, 0xd6, 0x6a, 0xfb,
|
||||
0x8d, 0x11, 0xc8, 0xa2, 0xdb, 0xd3, 0x60, 0x30, 0x46, 0xc0, 0xc3, 0xab,
|
||||
0x4e, 0x77, 0x63, 0x04, 0x20, 0x08, 0x82, 0x24, 0x18, 0x8c, 0x11, 0x80,
|
||||
0x20, 0x08, 0x82, 0x60, 0x30, 0x46, 0x00, 0x82, 0x20, 0x08, 0x7f, 0x23,
|
||||
0x00, 0x63, 0x04, 0x20, 0x08, 0x82, 0xf8, 0x37, 0x03, 0x00, 0x00, 0x00,
|
||||
0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xd0, 0xe1, 0x42, 0x1f, 0xb8, 0xc2,
|
||||
0x2c, 0xcc, 0x82, 0x29, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0x97,
|
||||
0x0b, 0x7e, 0xf0, 0x0a, 0xb8, 0x80, 0x0b, 0xa7, 0x30, 0x62, 0x90, 0x00,
|
||||
0x20, 0x08, 0x06, 0x9d, 0x2e, 0xfc, 0x01, 0x2c, 0xe0, 0x02, 0x2e, 0xa0,
|
||||
0xc2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x74, 0xbb, 0x00, 0x0a, 0xa7,
|
||||
0xa0, 0x0b, 0xba, 0x90, 0x0a, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xd0,
|
||||
0xf1, 0x42, 0x28, 0xa0, 0x82, 0x2e, 0xe8, 0x82, 0x2a, 0x8c, 0x18, 0x24,
|
||||
0x00, 0x08, 0x82, 0x41, 0xd7, 0x0b, 0xa2, 0x20, 0x0b, 0xbb, 0xb0, 0x0b,
|
||||
0xab, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc6, 0x39, 0x80, 0x42,
|
||||
0x2f, 0xf0, 0x02, 0x2d, 0xe0, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
|
||||
0x18, 0xe8, 0x10, 0x0a, 0xbe, 0xd0, 0x0b, 0xac, 0x90, 0x07, 0x23, 0x06,
|
||||
0x09, 0x00, 0x82, 0x60, 0x60, 0xa4, 0x83, 0x28, 0xf8, 0x82, 0x2f, 0xd8,
|
||||
0x82, 0x1e, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xa1, 0x0e, 0xa3,
|
||||
0xf0, 0x0b, 0xbf, 0xe0, 0x0a, 0x7b, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08,
|
||||
0x06, 0xc6, 0x3a, 0x90, 0x02, 0x38, 0x80, 0xc3, 0x2d, 0xf0, 0xc1, 0x88,
|
||||
0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0xec, 0x50, 0x0a, 0xe1, 0x10, 0x0e,
|
||||
0xaf, 0xd0, 0x07, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x80, 0x99, 0x03,
|
||||
0x28, 0x1c, 0xe2, 0x30, 0x9a, 0x10, 0x04, 0xc3, 0x11, 0x41, 0x14, 0x7c,
|
||||
0xb3, 0x0c, 0x51, 0x10, 0x0c, 0x47, 0x08, 0x55, 0xf0, 0xcd, 0x32, 0x08,
|
||||
0x43, 0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x3b, 0xa0, 0x82,
|
||||
0xc3, 0x28, 0x49, 0x14, 0x99, 0x83, 0x39, 0x88, 0x42, 0x34, 0x9a, 0x10,
|
||||
0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30,
|
||||
0x4b, 0x10, 0x0d, 0x47, 0x20, 0x7a, 0x10, 0x7c, 0xb3, 0x0c, 0x44, 0x11,
|
||||
0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0x43, 0x0f, 0xb4, 0x00, 0x8d,
|
||||
0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0x53, 0x0f, 0xb5, 0x00, 0x8d, 0x18,
|
||||
0x18, 0x00, 0x08, 0x82, 0xc1, 0x63, 0x0f, 0xec, 0x20, 0x8c, 0x18, 0x18,
|
||||
0x00, 0x08, 0x82, 0xc1, 0x73, 0x0f, 0xed, 0x20, 0x8c, 0x18, 0x18, 0x00,
|
||||
0x08, 0x82, 0xc1, 0x83, 0x0f, 0xb9, 0x40, 0x8d, 0x18, 0x18, 0x00, 0x08,
|
||||
0x82, 0xc1, 0x93, 0x0f, 0xba, 0x40, 0x8d, 0x18, 0x18, 0x00, 0x08, 0x82,
|
||||
0xc1, 0xa3, 0x0f, 0xf0, 0x20, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1,
|
||||
0xb3, 0x0f, 0xf1, 0x20, 0x98, 0x60, 0xc0, 0xc7, 0x04, 0x03, 0x3e, 0x23,
|
||||
0x06, 0x07, 0x00, 0x82, 0x60, 0x80, 0xe9, 0x03, 0x2d, 0x6c, 0xf7, 0x30,
|
||||
0x9a, 0x10, 0x08, 0xa3, 0x09, 0xc2, 0x60, 0x42, 0x21, 0x1f, 0x13, 0x0a,
|
||||
0xf9, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x24, 0x12, 0xba, 0x20,
|
||||
0xc4, 0xc1, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0x23, 0xb1, 0x0b,
|
||||
0x82, 0x1c, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x44, 0x12, 0xe0,
|
||||
0x20, 0xa4, 0xc1, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0x25, 0x11,
|
||||
0x0e, 0x82, 0x1a, 0x18, 0x32, 0x06, 0xf2, 0x31, 0x64, 0x0c, 0xe4, 0x63,
|
||||
0xc4, 0x1b, 0xc8, 0xc7, 0x08, 0x38, 0x90, 0x8f, 0x11, 0x42, 0x7c, 0x8c,
|
||||
0x10, 0xe2, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f, 0x4b, 0xbc,
|
||||
0x83, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f, 0x4b, 0xc0, 0x83,
|
||||
0x60, 0x42, 0x1d, 0xc0, 0xc7, 0x04, 0x3b, 0x80, 0xcf, 0x88, 0x81, 0x01,
|
||||
0x80, 0x20, 0x18, 0x3c, 0x31, 0x41, 0x0f, 0xc6, 0x88, 0x81, 0x01, 0x80,
|
||||
0x20, 0x18, 0x3c, 0x32, 0x51, 0x0f, 0x86, 0x39, 0xa2, 0x00, 0x1f, 0x0b,
|
||||
0x06, 0xf8, 0xd8, 0x43, 0x0a, 0xf0, 0xb1, 0x80, 0x80, 0x8f, 0x0d, 0x12,
|
||||
0x7d, 0x4c, 0x90, 0xe8, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f,
|
||||
0x4e, 0xf4, 0x83, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f, 0x4e,
|
||||
0xf8, 0x83, 0x60, 0x82, 0x28, 0xc8, 0xc7, 0x84, 0x51, 0x90, 0x8f, 0x95,
|
||||
0x82, 0x10, 0x1f, 0x33, 0x05, 0x21, 0x3e, 0x66, 0x18, 0xf2, 0xb1, 0x60,
|
||||
0x90, 0x8f, 0x1d, 0x87, 0x7c, 0x2c, 0x20, 0xe4, 0x63, 0xd4, 0x00, 0x1f,
|
||||
0xa3, 0x04, 0xf8, 0x8c, 0x26, 0x9c, 0x01, 0x30, 0x9a, 0x80, 0x06, 0x81,
|
||||
0x11, 0x82, 0x7c, 0x8c, 0x10, 0xe4, 0x33, 0x62, 0x50, 0x01, 0x20, 0x08,
|
||||
0x06, 0xd3, 0x59, 0xb8, 0x44, 0x2a, 0x9c, 0x82, 0x10, 0xb0, 0x02, 0x2b,
|
||||
0x84, 0x45, 0x58, 0xf4, 0x43, 0x1d, 0xd0, 0x01, 0x2b, 0xc4, 0x01, 0x1c,
|
||||
0xb0, 0x02, 0x2b, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26,
|
||||
0x0c, 0xc2, 0x68, 0x02, 0x31, 0xcc, 0x12, 0x44, 0xc3, 0x11, 0xa3, 0x20,
|
||||
0x0b, 0xc1, 0x37, 0xcb, 0x60, 0x1c, 0xc1, 0x88, 0xc1, 0x03, 0x80, 0x20,
|
||||
0x18, 0x34, 0x70, 0x91, 0x12, 0xaf, 0xd0, 0x0a, 0xab, 0xa0, 0x0a, 0xb2,
|
||||
0x20, 0x0b, 0x67, 0x71, 0x16, 0x23, 0x21, 0x0b, 0xa3, 0x09, 0x01, 0x30,
|
||||
0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x4b, 0x10, 0x0d, 0x47, 0xa0,
|
||||
0x82, 0x2e, 0x04, 0xdf, 0x2c, 0x03, 0x92, 0x04, 0x23, 0x06, 0x06, 0x00,
|
||||
0x82, 0x60, 0xf0, 0xd0, 0x05, 0x4d, 0xc0, 0xc2, 0x88, 0x81, 0x01, 0x80,
|
||||
0x20, 0x18, 0x3c, 0x75, 0x51, 0x13, 0xb0, 0x30, 0x62, 0x60, 0x00, 0x20,
|
||||
0x08, 0x06, 0x8f, 0x5d, 0xb0, 0x85, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08,
|
||||
0x06, 0xcf, 0x5d, 0xb4, 0x85, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06,
|
||||
0x0f, 0x5e, 0xe4, 0x04, 0x2d, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1,
|
||||
0x93, 0x17, 0x3a, 0x41, 0x0b, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0,
|
||||
0xe8, 0x05, 0x5c, 0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xec,
|
||||
0x45, 0x5c, 0x08, 0x26, 0x18, 0xf0, 0x31, 0xc1, 0x80, 0xcf, 0x88, 0xc1,
|
||||
0x01, 0x80, 0x20, 0x18, 0x60, 0x7a, 0x41, 0x13, 0xbb, 0x70, 0x17, 0xa3,
|
||||
0x09, 0x81, 0x30, 0x9a, 0x20, 0x0c, 0x26, 0x14, 0xf2, 0x31, 0xa1, 0x90,
|
||||
0xcf, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0xa2, 0xa1, 0x13, 0x42,
|
||||
0x3c, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x34, 0x1a, 0x3b, 0x21,
|
||||
0xc8, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0xa4, 0x01, 0x16,
|
||||
0x42, 0x3a, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x54, 0x1a, 0x61,
|
||||
0x21, 0xa8, 0x83, 0x21, 0xe3, 0x20, 0x1f, 0x43, 0xc6, 0x41, 0x3e, 0x46,
|
||||
0xbc, 0x83, 0x7c, 0x8c, 0x80, 0x07, 0xf9, 0x18, 0x21, 0xc4, 0xc7, 0x08,
|
||||
0x21, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xb4, 0xc6, 0x5b,
|
||||
0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xb8, 0x06, 0x5c, 0x08,
|
||||
0x26, 0xd4, 0x03, 0x7c, 0x4c, 0xb0, 0x07, 0xf8, 0x8c, 0x18, 0x18, 0x00,
|
||||
0x08, 0x82, 0xc1, 0x13, 0x1b, 0x74, 0x61, 0x8c, 0x18, 0x18, 0x00, 0x08,
|
||||
0x82, 0xc1, 0x23, 0x1b, 0x75, 0x61, 0x98, 0x23, 0x12, 0xf0, 0xb1, 0x60,
|
||||
0x80, 0x8f, 0x3d, 0x24, 0x01, 0x1f, 0x0b, 0x08, 0xf8, 0xd8, 0x20, 0xd1,
|
||||
0xc7, 0x04, 0x89, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xe4,
|
||||
0x46, 0x5f, 0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xe8, 0x86,
|
||||
0x5f, 0x08, 0x26, 0x88, 0x84, 0x7c, 0x4c, 0x18, 0x09, 0xf9, 0x58, 0x49,
|
||||
0x08, 0xf1, 0x31, 0x93, 0x10, 0xe2, 0x63, 0x86, 0x21, 0x1f, 0x0b, 0x06,
|
||||
0xf9, 0xd8, 0x71, 0xc8, 0xc7, 0x02, 0x42, 0x3e, 0x46, 0x0d, 0xf0, 0x31,
|
||||
0x4a, 0x80, 0xcf, 0x68, 0xc2, 0x19, 0x00, 0xa3, 0x09, 0x68, 0x10, 0x18,
|
||||
0x21, 0xc8, 0xc7, 0x08, 0x41, 0x3e, 0x23, 0x06, 0x15, 0x00, 0x82, 0x60,
|
||||
0x30, 0x9d, 0x87, 0x6b, 0xa4, 0xc4, 0x49, 0x08, 0x01, 0x4b, 0xb0, 0x44,
|
||||
0x78, 0x84, 0x47, 0x5f, 0xd4, 0x01, 0x1d, 0xb0, 0x44, 0x1c, 0xc0, 0x01,
|
||||
0x4b, 0xb0, 0xc4, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2,
|
||||
0x20, 0xcc, 0x12, 0x44, 0xc3, 0x11, 0x22, 0x31, 0x17, 0xc1, 0x37, 0xcb,
|
||||
0xa0, 0x2c, 0xc1, 0x88, 0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0xef, 0x81,
|
||||
0x1a, 0x2e, 0xc1, 0x12, 0x2a, 0x91, 0x12, 0x31, 0x11, 0x13, 0xe6, 0x61,
|
||||
0x1e, 0xa2, 0x11, 0x13, 0xa3, 0x09, 0x01, 0x60, 0x41, 0x5d, 0xc8, 0xc7,
|
||||
0x82, 0xba, 0x80, 0xcf, 0x88, 0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0xf3,
|
||||
0xc1, 0x1a, 0x33, 0x11, 0x13, 0x01, 0x4e, 0xd4, 0x44, 0x4d, 0xa8, 0x87,
|
||||
0x7a, 0x98, 0x46, 0x4d, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c,
|
||||
0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0xcc, 0x12, 0x44, 0xc3, 0x11, 0x2c,
|
||||
0xa1, 0x17, 0xc1, 0x37, 0xcb, 0xc0, 0x34, 0xc1, 0x88, 0xc1, 0x03, 0x80,
|
||||
0x20, 0x18, 0x34, 0xf9, 0x21, 0x1b, 0x38, 0x61, 0x13, 0x34, 0x31, 0x13,
|
||||
0x3b, 0xb1, 0x13, 0xf0, 0x01, 0x1f, 0xac, 0xb1, 0x13, 0xa3, 0x09, 0x01,
|
||||
0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x7e, 0xd0, 0xc6, 0x4e,
|
||||
0xe0, 0x84, 0x4d, 0xd4, 0x44, 0x4f, 0xf4, 0x84, 0x7c, 0xc8, 0x87, 0x6b,
|
||||
0xf4, 0xc4, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x88, 0xc1, 0x01,
|
||||
0x80, 0x20, 0x18, 0x60, 0xf9, 0x31, 0x1b, 0x3a, 0x11, 0x1f, 0xa3, 0x09,
|
||||
0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x60, 0x03, 0x02, 0x1f,
|
||||
0x1b, 0x0e, 0xf8, 0xd8, 0x70, 0xc0, 0x67, 0xc4, 0xe0, 0x00, 0x40, 0x10,
|
||||
0x0c, 0x30, 0x10, 0xd1, 0x8d, 0xb0, 0x00, 0x8f, 0xd1, 0x84, 0x00, 0x18,
|
||||
0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04,
|
||||
0x83, 0xaa, 0x44, 0xca, 0xe3, 0x30, 0x8a, 0x41, 0x08, 0x46, 0x0c, 0x0e,
|
||||
0x00, 0x04, 0xc1, 0x00, 0x2b, 0x91, 0xdf, 0x30, 0x8b, 0xf3, 0x18, 0x4d,
|
||||
0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d, 0x18, 0x84, 0x11, 0x83, 0x05,
|
||||
0x00, 0x41, 0x30, 0xa8, 0x54, 0x44, 0x3d, 0x98, 0x45, 0x19, 0x84, 0x60,
|
||||
0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0x30, 0x15, 0x21, 0x8f, 0xb5, 0x20,
|
||||
0x91, 0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18,
|
||||
0x31, 0x58, 0x00, 0x10, 0x04, 0x83, 0xea, 0x45, 0xde, 0x23, 0x82, 0x9e,
|
||||
0x41, 0x08, 0x66, 0x09, 0xa2, 0xe1, 0x08, 0xb4, 0xa8, 0x8d, 0xe0, 0x9b,
|
||||
0x65, 0x70, 0x9e, 0x60, 0xc4, 0xe0, 0x01, 0x40, 0x10, 0x0c, 0x9a, 0x1a,
|
||||
0x71, 0x0f, 0xba, 0x90, 0x0b, 0xb8, 0x78, 0x8b, 0xbb, 0xb8, 0x0b, 0x16,
|
||||
0x61, 0x11, 0xf4, 0xb8, 0x8b, 0xd1, 0x84, 0x00, 0x18, 0x31, 0x78, 0x00,
|
||||
0x10, 0x04, 0x83, 0xe6, 0x46, 0xe0, 0xe3, 0x2e, 0xe8, 0x42, 0x2e, 0xe2,
|
||||
0x22, 0x2f, 0xf2, 0xc2, 0x45, 0x5c, 0x44, 0x3d, 0xf2, 0x62, 0x34, 0x21,
|
||||
0x00, 0x46, 0x13, 0x84, 0x60, 0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0xb0,
|
||||
0x1a, 0x79, 0x0f, 0xbb, 0x68, 0x91, 0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10,
|
||||
0x82, 0xd1, 0x84, 0x41, 0xb0, 0x01, 0x81, 0x8f, 0x0d, 0x06, 0x7c, 0x6c,
|
||||
0x40, 0xe0, 0x33, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x18, 0x8f, 0xd8,
|
||||
0x47, 0x5f, 0xf0, 0xc7, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68,
|
||||
0xc2, 0x20, 0x8c, 0x18, 0x2c, 0x00, 0x08, 0x82, 0x41, 0x15, 0x26, 0x21,
|
||||
0x72, 0x18, 0xc5, 0x20, 0x04, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x80,
|
||||
0x85, 0xc9, 0x7e, 0x88, 0xc6, 0x88, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82,
|
||||
0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x88, 0xc1, 0x02, 0x80, 0x20, 0x18, 0x54,
|
||||
0x66, 0x62, 0x22, 0xcc, 0xa2, 0x0c, 0x42, 0x30, 0x62, 0x70, 0x00, 0x20,
|
||||
0x08, 0x06, 0x98, 0x99, 0x80, 0xc8, 0x69, 0x80, 0xc9, 0x68, 0x42, 0x00,
|
||||
0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x18, 0x2c, 0x00, 0x08,
|
||||
0x82, 0x41, 0xb5, 0x26, 0x2b, 0x12, 0x41, 0xcf, 0x20, 0x04, 0xb3, 0x04,
|
||||
0xd1, 0x70, 0x04, 0x69, 0xc0, 0x47, 0xf0, 0xcd, 0x32, 0x40, 0x51, 0x30,
|
||||
0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0x9c, 0xa8, 0x08, 0x6c, 0xb8,
|
||||
0x06, 0x6b, 0xac, 0xc6, 0x6c, 0xcc, 0x06, 0x9a, 0xa0, 0x09, 0x89, 0xcc,
|
||||
0xc6, 0x68, 0x42, 0x00, 0x8c, 0x18, 0x3c, 0x00, 0x08, 0x82, 0x41, 0x33,
|
||||
0x27, 0x2c, 0x32, 0x1b, 0xb0, 0xe1, 0x1a, 0xad, 0x51, 0x1b, 0xb5, 0xa1,
|
||||
0x26, 0x6a, 0x62, 0x22, 0xb5, 0x31, 0x9a, 0x10, 0x00, 0x23, 0x06, 0x0f,
|
||||
0x00, 0x82, 0x60, 0xd0, 0xd4, 0x89, 0x8b, 0xd8, 0x86, 0x6c, 0xc0, 0xc6,
|
||||
0x6b, 0xdc, 0xc6, 0x6d, 0xb0, 0x09, 0x9b, 0xa0, 0xc8, 0x6d, 0x8c, 0x26,
|
||||
0x04, 0xc0, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x60, 0x72, 0xc2, 0x22,
|
||||
0xb3, 0xa1, 0x26, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
|
||||
0x83, 0x60, 0x43, 0x02, 0x1f, 0x1b, 0x10, 0xf8, 0xd8, 0x70, 0xc0, 0x67,
|
||||
0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0xb0, 0x3c, 0x99, 0x11, 0xdd, 0xc8,
|
||||
0x91, 0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18,
|
||||
0x31, 0x58, 0x00, 0x10, 0x04, 0x83, 0xca, 0x4f, 0x7c, 0xe4, 0x30, 0x8a,
|
||||
0x41, 0x08, 0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0x00, 0xf3, 0x13, 0x1c,
|
||||
0xf9, 0x0d, 0x30, 0x19, 0x4d, 0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d,
|
||||
0x18, 0x84, 0x11, 0x83, 0x05, 0x00, 0x41, 0x30, 0xa8, 0x46, 0x65, 0x4c,
|
||||
0x98, 0x45, 0x19, 0x84, 0x60, 0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0xb0,
|
||||
0x51, 0xe9, 0x11, 0xf2, 0xe8, 0x93, 0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10,
|
||||
0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04, 0x83, 0x0a,
|
||||
0x55, 0xd0, 0x24, 0x82, 0x9e, 0x41, 0x08, 0x66, 0x09, 0xa2, 0x81, 0xaa,
|
||||
0x01, 0x7c, 0x00, 0xbd, 0x11, 0x48, 0x85, 0xc0, 0x13, 0x83, 0x34, 0x10,
|
||||
0xb9, 0x50, 0x50, 0x82, 0x81, 0x05, 0xc7, 0x82, 0xc0, 0xe7, 0x19, 0xa8,
|
||||
0x1a, 0xc4, 0x07, 0xd0, 0x1b, 0x81, 0x54, 0x08, 0x3c, 0x31, 0x48, 0x03,
|
||||
0x91, 0x0b, 0x05, 0x24, 0x18, 0x54, 0x70, 0x1c, 0x88, 0x7c, 0x9e, 0x81,
|
||||
0xaa, 0x81, 0x7c, 0x00, 0xbd, 0x11, 0x48, 0x85, 0xc0, 0x13, 0x83, 0x34,
|
||||
0x10, 0xb9, 0x50, 0xf0, 0x81, 0x01, 0x05, 0xc7, 0x80, 0xcc, 0xe7, 0x19,
|
||||
0xa8, 0x1a, 0xcc, 0x07, 0xd0, 0x1b, 0x81, 0x54, 0x08, 0xf3, 0x31, 0xcc,
|
||||
0x07, 0x91, 0x0b, 0xc5, 0x7c, 0x18, 0xf3, 0x71, 0xcc, 0x07, 0x32, 0x9f,
|
||||
0x67, 0x34, 0xc1, 0x3c, 0x84, 0xe1, 0x88, 0x20, 0x3f, 0x82, 0x6f, 0x96,
|
||||
0x41, 0x9a, 0x82, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x64, 0x05,
|
||||
0x55, 0x8c, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x66, 0x25, 0x55,
|
||||
0x8c, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x68, 0x45, 0x55, 0x8c,
|
||||
0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x6a, 0xa5, 0x4d, 0x86, 0x11,
|
||||
0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x6c, 0xc5, 0x4d, 0x86, 0x11, 0x03,
|
||||
0x03, 0x00, 0x41, 0x30, 0x78, 0x6e, 0xe5, 0x4d, 0x06, 0x1b, 0x50, 0x44,
|
||||
0x3e, 0x36, 0xa4, 0x88, 0x7c, 0x6c, 0x50, 0x11, 0xf9, 0x8c, 0x18, 0x18,
|
||||
0x00, 0x08, 0x82, 0xc1, 0xb3, 0x2b, 0x74, 0x32, 0x8c, 0x18, 0x18, 0x00,
|
||||
0x08, 0x82, 0xc1, 0xc3, 0x2b, 0x75, 0x32, 0x8c, 0x18, 0x18, 0x00, 0x08,
|
||||
0x82, 0xc1, 0xd3, 0x2b, 0x76, 0x32, 0xd8, 0xf0, 0x22, 0xf0, 0xb1, 0x01,
|
||||
0x46, 0xe0, 0x63, 0x43, 0x8c, 0xc0, 0x67, 0xc4, 0xe0, 0x00, 0x40, 0x10,
|
||||
0x0c, 0x22, 0x70, 0xc1, 0x93, 0xc1, 0x44, 0x46, 0x0c, 0x0e, 0x00, 0x04,
|
||||
0xc1, 0x20, 0x0a, 0x97, 0x3c, 0x19, 0x4e, 0x64, 0xc4, 0xe0, 0x00, 0x40,
|
||||
0x10, 0x0c, 0x22, 0x71, 0xd1, 0x93, 0x01, 0x45, 0x2c, 0xb1, 0x11, 0xf9,
|
||||
0x58, 0x72, 0x23, 0xf2, 0xb1, 0x04, 0x47, 0xe4, 0x63, 0x3a, 0x32, 0xc4,
|
||||
0xc7, 0x76, 0x64, 0x88, 0x8f, 0xf1, 0xc8, 0x10, 0x1f, 0x4b, 0x06, 0xfa,
|
||||
0x58, 0x32, 0xd0, 0xc7, 0x92, 0x81, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82,
|
||||
0x60, 0xf0, 0xb4, 0xcb, 0xb8, 0x0c, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60,
|
||||
0xf0, 0xb8, 0x0b, 0xb9, 0x0c, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0,
|
||||
0xbc, 0x4b, 0xb9, 0x0c, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xc0,
|
||||
0x0b, 0xaa, 0x0c, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xc4, 0x4b,
|
||||
0xaa, 0x0c, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xc8, 0x8b, 0xaa,
|
||||
0x0c, 0x36, 0x9c, 0x89, 0x7c, 0x6c, 0x40, 0x13, 0xf9, 0xd8, 0x90, 0x26,
|
||||
0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xc7, 0x5e, 0x5e, 0x65,
|
||||
0x18, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xe7, 0x5e, 0x60, 0x65, 0x18,
|
||||
0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x07, 0x5f, 0x62, 0x65, 0xb0, 0xc1,
|
||||
0x4d, 0xe4, 0x63, 0xc3, 0x9b, 0xc8, 0xc7, 0x06, 0x38, 0x91, 0xcf, 0x88,
|
||||
0xc1, 0x01, 0x80, 0x20, 0x18, 0x60, 0xf8, 0x22, 0x2b, 0x39, 0x12, 0x2f,
|
||||
0xa3, 0x09, 0xc1, 0x60, 0x45, 0x40, 0x1f, 0x2b, 0x04, 0xfa, 0x58, 0x31,
|
||||
0xd0, 0x67, 0x96, 0x60, 0x1a, 0xa8, 0x18, 0x0c, 0x49, 0x1d, 0xa2, 0x81,
|
||||
0x8a, 0xc1, 0x90, 0xd4, 0x21, 0x1a, 0xa8, 0x18, 0x0c, 0x49, 0x1d, 0xa2,
|
||||
0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xc0, 0x40, 0x46, 0x57, 0xc2, 0x24,
|
||||
0x5f, 0x46, 0x13, 0x02, 0x60, 0x38, 0x22, 0x58, 0x13, 0xe7, 0x9b, 0x65,
|
||||
0xa0, 0xba, 0x60, 0x38, 0x42, 0x58, 0x93, 0xe0, 0x9b, 0x65, 0xa8, 0xac,
|
||||
0x60, 0x34, 0x81, 0x08, 0x2c, 0x40, 0xe4, 0x63, 0x02, 0x22, 0x1f, 0x1b,
|
||||
0x10, 0xf9, 0xcc, 0x12, 0x74, 0xc3, 0x11, 0xc7, 0x9c, 0x04, 0xdf, 0x2c,
|
||||
0xc3, 0xd5, 0x05, 0xc3, 0x11, 0x7d, 0x40, 0x27, 0xc1, 0x37, 0xcb, 0x80,
|
||||
0x65, 0x81, 0x35, 0xae, 0x22, 0x9f, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30,
|
||||
0xd0, 0x54, 0x86, 0x5c, 0x5c, 0xa5, 0x09, 0x46, 0x0c, 0x10, 0x00, 0x04,
|
||||
0xc1, 0x40, 0x5b, 0x99, 0x72, 0x71, 0x95, 0x26, 0x30, 0xc8, 0x55, 0xe4,
|
||||
0x33, 0x62, 0x80, 0x00, 0x20, 0x08, 0x06, 0x5a, 0xcb, 0x9c, 0x8b, 0xab,
|
||||
0x40, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x68, 0x2e, 0x83, 0x2e,
|
||||
0xae, 0x02, 0x05, 0x36, 0xb9, 0x8a, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04,
|
||||
0xc1, 0x40, 0x83, 0x19, 0x75, 0x71, 0x95, 0x29, 0x18, 0x31, 0x40, 0x00,
|
||||
0x10, 0x04, 0x03, 0x2d, 0x66, 0xd6, 0xc5, 0x55, 0xa6, 0x60, 0x96, 0x20,
|
||||
0x1b, 0xa8, 0x18, 0x1c, 0x8c, 0x0d, 0xae, 0x81, 0x8a, 0x41, 0xc1, 0xd8,
|
||||
0xe0, 0x1a, 0xa8, 0x18, 0x0c, 0x8c, 0x0d, 0xae, 0x11, 0x83, 0x03, 0x00,
|
||||
0x41, 0x30, 0x88, 0x72, 0x26, 0x5e, 0x84, 0x60, 0xc4, 0xe0, 0x00, 0x40,
|
||||
0x10, 0x0c, 0x22, 0x9d, 0x91, 0x17, 0x22, 0x18, 0x8e, 0x08, 0x42, 0x45,
|
||||
0xf8, 0x66, 0x19, 0xb4, 0x2d, 0x18, 0x4d, 0xc8, 0x02, 0x1b, 0x02, 0xf9,
|
||||
0x58, 0x30, 0x2a, 0xf0, 0x19, 0x4d, 0xe0, 0x04, 0x33, 0x02, 0xf9, 0x58,
|
||||
0x60, 0x2a, 0xf0, 0x31, 0x22, 0xa0, 0x8f, 0x05, 0x8d, 0x7c, 0x4c, 0x68,
|
||||
0xe4, 0x63, 0x43, 0x23, 0x9f, 0x59, 0x82, 0x6d, 0xa0, 0x62, 0x30, 0x34,
|
||||
0x30, 0xc8, 0x06, 0x2a, 0x06, 0x43, 0x03, 0x83, 0x6c, 0xa0, 0x62, 0x30,
|
||||
0x34, 0x30, 0xc8, 0x66, 0x19, 0xb8, 0xae, 0xb3, 0x41, 0x5f, 0xe4, 0x33,
|
||||
0x62, 0x80, 0x00, 0x20, 0x08, 0x06, 0x9a, 0xd9, 0x80, 0x8c, 0xbe, 0x0c,
|
||||
0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x68, 0x67, 0x13, 0x32, 0xfa,
|
||||
0x32, 0x04, 0x66, 0xe8, 0x8b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1,
|
||||
0x40, 0x4b, 0x9b, 0x91, 0xd1, 0x17, 0x23, 0x18, 0x31, 0x40, 0x00, 0x10,
|
||||
0x04, 0x03, 0x4d, 0x6d, 0x48, 0x46, 0x5f, 0x8c, 0xc0, 0x12, 0x7d, 0x91,
|
||||
0xcf, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x68, 0x6c, 0x63, 0x32, 0xfa,
|
||||
0x92, 0x04, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0xa0, 0xb5, 0xcd, 0xc9,
|
||||
0xe8, 0x4b, 0x12, 0xcc, 0x12, 0x74, 0x03, 0x2d, 0x03, 0x39, 0x4c, 0xb4,
|
||||
0x50, 0x39, 0x1c, 0xb6, 0x91, 0x83, 0x35, 0xd0, 0x32, 0x90, 0xc3, 0x44,
|
||||
0x0b, 0x95, 0xc2, 0x61, 0x1b, 0x39, 0x58, 0x03, 0x2d, 0x03, 0x39, 0x4c,
|
||||
0xb4, 0x50, 0x19, 0x1c, 0xb6, 0x91, 0x83, 0x35, 0x1c, 0x61, 0x0e, 0xba,
|
||||
0x12, 0x7c, 0xb3, 0x0c, 0x5e, 0x1a, 0x04, 0xa3, 0x09, 0xad, 0x02, 0x0c,
|
||||
0x47, 0x04, 0xbd, 0xe2, 0x7c, 0xb3, 0x0c, 0x1f, 0x1a, 0x04, 0xc3, 0x11,
|
||||
0xc6, 0xbb, 0x28, 0xdf, 0x2c, 0x43, 0x18, 0x80, 0x41, 0x60, 0x47, 0xbc,
|
||||
0xc8, 0x67, 0x96, 0x40, 0x0c, 0x0c, 0x71, 0x19, 0xf8, 0x8c, 0x18, 0x18,
|
||||
0x00, 0x08, 0x82, 0xc1, 0xc3, 0x37, 0x72, 0x13, 0x58, 0xf0, 0x32, 0xf2,
|
||||
0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xc7, 0x6f, 0x6c, 0x26, 0xb0,
|
||||
0x00, 0x66, 0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x0f, 0xe8,
|
||||
0xe4, 0x4c, 0x30, 0x4b, 0x20, 0x06, 0x03, 0x15, 0x83, 0x03, 0x06, 0x42,
|
||||
0x18, 0x0c, 0x47, 0x38, 0xf8, 0xa2, 0x7c, 0xb3, 0x0c, 0x64, 0x30, 0x06,
|
||||
0x81, 0x3d, 0xfa, 0x22, 0x9f, 0x59, 0x82, 0x32, 0x30, 0xe8, 0x66, 0xe0,
|
||||
0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f, 0xe9, 0xec, 0x4d, 0x60,
|
||||
0x01, 0xce, 0xc8, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x9e, 0xd3,
|
||||
0xf9, 0x99, 0xc0, 0x82, 0x9c, 0x91, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20,
|
||||
0x18, 0x3c, 0xa9, 0x23, 0x36, 0xc1, 0x2c, 0x41, 0x19, 0x0c, 0x54, 0x0c,
|
||||
0xce, 0x18, 0x08, 0x64, 0x30, 0x1c, 0x61, 0x85, 0x8c, 0xf2, 0xcd, 0x32,
|
||||
0x9c, 0x81, 0x19, 0x04, 0x76, 0x8d, 0x8c, 0x7c, 0x66, 0x09, 0xd0, 0xc0,
|
||||
0x30, 0xb0, 0x81, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0xae,
|
||||
0x43, 0x3a, 0x81, 0x05, 0x61, 0x23, 0x9f, 0x11, 0x03, 0x03, 0x00, 0x41,
|
||||
0x30, 0x78, 0x60, 0x07, 0x6d, 0x02, 0x0b, 0xc4, 0x46, 0x3e, 0x23, 0x06,
|
||||
0x06, 0x00, 0x82, 0x60, 0xf0, 0xc8, 0xce, 0xda, 0x04, 0xb3, 0x04, 0x68,
|
||||
0x30, 0xd0, 0x31, 0x90, 0xc1, 0x19, 0x90, 0x81, 0x19, 0x80, 0x82, 0x37,
|
||||
0xd0, 0x31, 0x50, 0x67, 0x40, 0x99, 0x01, 0x28, 0x78, 0x03, 0x1d, 0x83,
|
||||
0x71, 0x06, 0x92, 0x19, 0x80, 0x82, 0x37, 0x9a, 0xc0, 0x2e, 0x83, 0x11,
|
||||
0x81, 0x7c, 0x8c, 0x10, 0xe4, 0x63, 0xc4, 0x20, 0x9f, 0x59, 0x02, 0x51,
|
||||
0x18, 0x8e, 0x50, 0x89, 0x90, 0x09, 0xbe, 0xd1, 0x84, 0x78, 0x19, 0x66,
|
||||
0x19, 0xd4, 0xa0, 0x0e, 0x04, 0x4b, 0x83, 0x40, 0x3e, 0x96, 0x06, 0x82,
|
||||
0x7c, 0x2c, 0x0d, 0x06, 0xf9, 0x8c, 0x26, 0xd4, 0x0b, 0x30, 0x1c, 0x11,
|
||||
0x94, 0x8c, 0xf3, 0xcd, 0x32, 0x88, 0xc2, 0x1a, 0x04, 0xc3, 0x11, 0x85,
|
||||
0xca, 0x28, 0xdf, 0x2c, 0x43, 0x1b, 0xb0, 0x41, 0x60, 0x06, 0xcb, 0xc8,
|
||||
0x67, 0x96, 0xc0, 0x0d, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x19,
|
||||
0x9f, 0xdc, 0x39, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x21, 0x1f,
|
||||
0xbe, 0x09, 0x2c, 0x80, 0x19, 0xf9, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82,
|
||||
0xc1, 0x63, 0x3e, 0x7f, 0x13, 0x58, 0x30, 0x33, 0xf2, 0xb1, 0xa0, 0x66,
|
||||
0xe0, 0x33, 0x4b, 0xe0, 0x06, 0x03, 0x15, 0x83, 0xc3, 0x06, 0x42, 0x1b,
|
||||
0x0c, 0x47, 0x34, 0x33, 0xa3, 0x7c, 0xb3, 0x0c, 0x70, 0xf0, 0x06, 0x81,
|
||||
0x39, 0x35, 0x23, 0x9f, 0x59, 0x82, 0x38, 0x18, 0x31, 0x30, 0x00, 0x10,
|
||||
0x04, 0x83, 0x87, 0x7d, 0xc4, 0xe7, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04,
|
||||
0x83, 0xa7, 0x7d, 0x4a, 0x27, 0xb0, 0x20, 0x67, 0xe4, 0x33, 0x62, 0x60,
|
||||
0x00, 0x20, 0x08, 0x06, 0xcf, 0xfb, 0xa0, 0x4e, 0x60, 0x01, 0xcf, 0xc8,
|
||||
0xc7, 0x02, 0x9f, 0x81, 0xcf, 0x2c, 0x41, 0x1c, 0x0c, 0x54, 0x0c, 0xce,
|
||||
0x1b, 0x08, 0x70, 0x30, 0x1c, 0x51, 0xf1, 0x8c, 0xf2, 0xcd, 0x32, 0xcc,
|
||||
0x81, 0x1c, 0x04, 0x66, 0xf9, 0x8c, 0x7c, 0x66, 0x09, 0xe8, 0x60, 0xc4,
|
||||
0xc0, 0x00, 0x40, 0x10, 0x0c, 0x9e, 0xfa, 0x59, 0x9f, 0x6b, 0xc4, 0xc0,
|
||||
0x00, 0x40, 0x10, 0x0c, 0x1e, 0xfb, 0x71, 0x9d, 0xc0, 0x02, 0xb1, 0x91,
|
||||
0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0xf8, 0x13, 0x3b, 0x81,
|
||||
0x05, 0x65, 0x23, 0x1f, 0x0b, 0xce, 0x06, 0x3e, 0xb3, 0x04, 0x74, 0x30,
|
||||
0x50, 0x31, 0x38, 0x72, 0x20, 0xcc, 0xc1, 0x88, 0xc1, 0x01, 0x80, 0x20,
|
||||
0x18, 0x44, 0xfb, 0x33, 0x3b, 0x53, 0xd8, 0x8c, 0x18, 0x1c, 0x00, 0x08,
|
||||
0x82, 0x41, 0xc4, 0x3f, 0xb4, 0xb3, 0x88, 0xcd, 0x88, 0xc1, 0x01, 0x80,
|
||||
0x20, 0x18, 0x44, 0xfd, 0x53, 0x3b, 0xc3, 0xd8, 0x8c, 0x18, 0x1c, 0x00,
|
||||
0x08, 0x82, 0x41, 0xe4, 0x3f, 0xba, 0x33, 0x8c, 0xcd, 0x88, 0xc1, 0x01,
|
||||
0x80, 0x20, 0x18, 0x44, 0xff, 0xb3, 0x3b, 0x03, 0xd9, 0x8c, 0x18, 0x1c,
|
||||
0x00, 0x08, 0x82, 0x41, 0x04, 0x42, 0xbc, 0x33, 0x94, 0xcd, 0x2c, 0x81,
|
||||
0x28, 0xcc, 0x32, 0xd8, 0x41, 0x28, 0xc4, 0x85, 0xbd, 0x82, 0xec, 0xc8,
|
||||
0x67, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x34, 0xff, 0xc1, 0x1d, 0xd9,
|
||||
0x79, 0x85, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0xb4, 0xff, 0xc9,
|
||||
0x1d, 0xd9, 0x79, 0x85, 0xc0, 0x64, 0x41, 0x76, 0xe4, 0x33, 0x62, 0x80,
|
||||
0x00, 0x20, 0x08, 0x06, 0x5a, 0x08, 0xed, 0x8e, 0xec, 0xc8, 0x42, 0x30,
|
||||
0x62, 0x80, 0x00, 0x20, 0x08, 0x06, 0x9a, 0x08, 0xf1, 0x8e, 0xec, 0xc8,
|
||||
0x42, 0x60, 0xb5, 0x20, 0x3b, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04,
|
||||
0x03, 0x8d, 0x84, 0x7c, 0x47, 0x76, 0x6a, 0x21, 0x18, 0x31, 0x40, 0x00,
|
||||
0x10, 0x04, 0x03, 0xad, 0x84, 0x7e, 0x47, 0x76, 0x6a, 0x21, 0xb0, 0x03,
|
||||
0x0e, 0xe4, 0x63, 0x45, 0x1c, 0xc8, 0xc7, 0x06, 0x39, 0x90, 0xcf, 0x68,
|
||||
0x02, 0xd9, 0x00, 0xc3, 0x11, 0x01, 0xdd, 0x38, 0xdf, 0x2c, 0x83, 0x28,
|
||||
0xdc, 0x41, 0x30, 0x1c, 0x51, 0xe4, 0x8d, 0xf2, 0xcd, 0x32, 0xe4, 0x01,
|
||||
0x1e, 0x04, 0x66, 0xec, 0x8d, 0x7c, 0x66, 0x09, 0xf4, 0x60, 0xc4, 0xc0,
|
||||
0x00, 0x40, 0x10, 0x0c, 0x1e, 0x19, 0x42, 0xa1, 0x63, 0xc4, 0xc0, 0x00,
|
||||
0x40, 0x10, 0x0c, 0x9e, 0x19, 0x5a, 0x9f, 0xc0, 0x82, 0xbf, 0x91, 0xcf,
|
||||
0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0x35, 0xe4, 0x3e, 0x81, 0x05,
|
||||
0xa2, 0x23, 0x1f, 0x0b, 0x48, 0x07, 0x3e, 0xb3, 0x04, 0x7a, 0x30, 0x50,
|
||||
0x31, 0x38, 0x78, 0x20, 0xe4, 0xc1, 0x70, 0x44, 0x23, 0x3a, 0xca, 0x37,
|
||||
0xcb, 0xc0, 0x07, 0x7b, 0x10, 0x98, 0x43, 0x3a, 0xf2, 0x99, 0x25, 0xe8,
|
||||
0x83, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x76, 0x28, 0x86, 0x9e,
|
||||
0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x78, 0x88, 0x7e, 0x02, 0x0b,
|
||||
0x50, 0x47, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf8, 0xd0,
|
||||
0xfd, 0x04, 0x16, 0xac, 0x8e, 0x7c, 0x2c, 0x68, 0x1d, 0xf8, 0xcc, 0x12,
|
||||
0xf4, 0xc1, 0x40, 0xc5, 0xe0, 0xec, 0x81, 0xc0, 0x07, 0xc3, 0x11, 0xd5,
|
||||
0xea, 0x28, 0xdf, 0x2c, 0xc3, 0x1f, 0xf8, 0x41, 0x60, 0x56, 0xeb, 0xc8,
|
||||
0x67, 0x96, 0x00, 0x14, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x21,
|
||||
0x23, 0x1d, 0xba, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x29, 0xa3,
|
||||
0xfe, 0x09, 0x2c, 0x88, 0x1d, 0xf9, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82,
|
||||
0xc1, 0x73, 0x46, 0x20, 0x14, 0x58, 0x40, 0x3b, 0xf2, 0xb1, 0xc0, 0x76,
|
||||
0xe0, 0x33, 0x4b, 0x00, 0x0a, 0x03, 0x15, 0x83, 0xe3, 0x07, 0xc2, 0x1f,
|
||||
0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0xa4, 0x46, 0x22, 0x34, 0xc1,
|
||||
0xce, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0x6b, 0x34, 0x42, 0x4b,
|
||||
0xec, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0xc4, 0x46, 0x24, 0x34,
|
||||
0xc8, 0xce, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0x6d, 0x94, 0x42,
|
||||
0x83, 0xec, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0xe4, 0x46, 0x2a,
|
||||
0x34, 0xcc, 0xce, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0x6f, 0xb4,
|
||||
0x42, 0x03, 0xed, 0xcc, 0x12, 0x88, 0x82, 0xf9, 0x83, 0x2d, 0xc8, 0xc7,
|
||||
0xfc, 0xe1, 0x16, 0xe4, 0x63, 0xfe, 0x80, 0x0b, 0xf2, 0x99, 0x25, 0x10,
|
||||
0x85, 0x81, 0x9a, 0x41, 0x2f, 0xd0, 0xc0, 0x08, 0x05, 0x75, 0xa0, 0x03,
|
||||
0xb8, 0x50, 0x03, 0x06, 0x14, 0x64, 0xc1, 0x0e, 0x06, 0x6a, 0x06, 0xbd,
|
||||
0x40, 0x03, 0x23, 0x14, 0xd4, 0x81, 0x0e, 0xe0, 0x42, 0x0d, 0x18, 0x50,
|
||||
0x90, 0x05, 0x3b, 0x18, 0xa8, 0x19, 0xf4, 0x02, 0x0d, 0x8c, 0x50, 0x50,
|
||||
0x07, 0x3a, 0x80, 0x0b, 0x35, 0x60, 0x40, 0x41, 0x16, 0xec, 0xc0, 0x86,
|
||||
0xd8, 0x91, 0x8f, 0x0d, 0xb1, 0x23, 0x1f, 0x1b, 0x62, 0x47, 0x3e, 0xb6,
|
||||
0x1e, 0xb1, 0x23, 0x9f, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0xfa,
|
||||
0x28, 0x87, 0xe6, 0x68, 0x8e, 0xd6, 0x88, 0x18, 0x31, 0x48, 0x00, 0x10,
|
||||
0x04, 0x03, 0xa4, 0x8f, 0x72, 0x68, 0x8e, 0xe6, 0x48, 0x8c, 0x86, 0x11,
|
||||
0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0xfa, 0x28, 0x87, 0xe6, 0x68, 0x8e,
|
||||
0xd4, 0x48, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0xa4, 0x8f, 0x72,
|
||||
0x68, 0x8e, 0xe6, 0x28, 0x8c, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
0xc5, 0x05, 0x00, 0x00, 0x13, 0x04, 0xa7, 0x10, 0x0b, 0x04, 0x00, 0x00,
|
||||
0x61, 0x00, 0x00, 0x00, 0xc4, 0x8d, 0x00, 0x50, 0x51, 0x02, 0x65, 0x40,
|
||||
0x44, 0xf9, 0x95, 0x43, 0xa1, 0x06, 0x94, 0x69, 0x40, 0xc9, 0x95, 0x42,
|
||||
0xb9, 0x15, 0x42, 0xb1, 0x94, 0x4d, 0x21, 0x95, 0x4a, 0xb9, 0x94, 0x51,
|
||||
0x71, 0x95, 0x5d, 0xe1, 0xcd, 0x00, 0xd0, 0x30, 0x46, 0x00, 0x82, 0x30,
|
||||
0x1e, 0x8e, 0xc1, 0x18, 0x81, 0x79, 0xaf, 0xab, 0xec, 0x8d, 0x11, 0xc4,
|
||||
0x3c, 0xd8, 0xe7, 0xde, 0x18, 0x81, 0xdb, 0xc7, 0xa2, 0xed, 0x8d, 0x11,
|
||||
0xbc, 0x7b, 0x5a, 0xde, 0xdf, 0x18, 0x81, 0xce, 0x9a, 0x73, 0x08, 0x06,
|
||||
0x63, 0x04, 0x62, 0x2e, 0xa6, 0xfd, 0x37, 0x46, 0x00, 0x96, 0x3c, 0x1b,
|
||||
0xff, 0xc2, 0x18, 0xc1, 0x98, 0xae, 0x6a, 0xee, 0x0b, 0x63, 0x04, 0xff,
|
||||
0x4c, 0xfa, 0xbf, 0x2f, 0x8c, 0x11, 0xd0, 0x35, 0x28, 0xe6, 0xdf, 0x18,
|
||||
0x41, 0x0b, 0xc7, 0x31, 0xe8, 0x0b, 0x63, 0x04, 0x73, 0xdf, 0xa6, 0xa9,
|
||||
0x2f, 0x8c, 0x11, 0xb4, 0x6e, 0xc8, 0xf3, 0xbe, 0x30, 0x46, 0xc0, 0xe7,
|
||||
0xac, 0x8f, 0x7f, 0x63, 0x04, 0x20, 0x08, 0x82, 0x28, 0x18, 0x8c, 0x11,
|
||||
0x80, 0x20, 0x08, 0xaa, 0x60, 0x30, 0x46, 0x00, 0x82, 0x20, 0xc8, 0x82,
|
||||
0xc1, 0x18, 0x01, 0x08, 0x82, 0xa0, 0x0b, 0x06, 0x63, 0x04, 0x20, 0x08,
|
||||
0x82, 0x30, 0x18, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc6, 0x60, 0x30, 0x46,
|
||||
0x00, 0x82, 0x20, 0x28, 0x83, 0xc1, 0x18, 0x01, 0xcb, 0x9e, 0xa1, 0xfc,
|
||||
0x8d, 0x11, 0xa0, 0x7e, 0x19, 0xab, 0xdf, 0x18, 0x41, 0x7e, 0xea, 0xe2,
|
||||
0xec, 0x8d, 0x11, 0xe8, 0x35, 0xb8, 0xe3, 0xde, 0x18, 0x81, 0x8a, 0xe7,
|
||||
0xb6, 0xfd, 0x8d, 0x11, 0xbc, 0x7d, 0x4a, 0x8f, 0xde, 0x18, 0xc1, 0x3a,
|
||||
0xc7, 0x2c, 0xea, 0x8d, 0x11, 0xa4, 0x21, 0x8c, 0xee, 0xde, 0x18, 0xc1,
|
||||
0xdd, 0xc6, 0xaa, 0xfd, 0x8d, 0x11, 0xac, 0x23, 0x1e, 0xb3, 0x60, 0x30,
|
||||
0x46, 0x00, 0x82, 0x74, 0x9b, 0x83, 0xc1, 0x18, 0x01, 0x08, 0x82, 0x6b,
|
||||
0x0e, 0x06, 0x63, 0x04, 0x20, 0x08, 0xb2, 0xf5, 0x2f, 0x8c, 0x11, 0xb0,
|
||||
0xed, 0xfc, 0x93, 0xde, 0x18, 0x01, 0x08, 0x82, 0x20, 0xfc, 0x0b, 0x63,
|
||||
0x04, 0x6e, 0x1f, 0x8b, 0xb6, 0x2f, 0x8c, 0x11, 0xf4, 0xb1, 0xe8, 0xe2,
|
||||
0xdf, 0x18, 0x41, 0xad, 0xd6, 0x6a, 0xfb, 0x8d, 0x11, 0xc8, 0xa2, 0xdb,
|
||||
0xd3, 0x60, 0x30, 0x46, 0xc0, 0xc3, 0xab, 0x4e, 0x77, 0x63, 0x04, 0x20,
|
||||
0x08, 0x82, 0xf8, 0x2f, 0x8c, 0x11, 0xb0, 0x6d, 0xfc, 0xca, 0xdb, 0x18,
|
||||
0x01, 0x08, 0x82, 0x20, 0x09, 0x06, 0x63, 0x04, 0x20, 0x08, 0x82, 0x70,
|
||||
0x37, 0x46, 0x00, 0x82, 0xa0, 0x7f, 0x7f, 0x63, 0x04, 0x20, 0x08, 0x82,
|
||||
0x20, 0x18, 0x8c, 0x00, 0x8c, 0x11, 0x80, 0x20, 0x08, 0xc2, 0xdf, 0x18,
|
||||
0x01, 0x08, 0x82, 0x20, 0xfe, 0xcd, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00,
|
||||
0x82, 0x60, 0xd0, 0xed, 0x82, 0x28, 0xc4, 0x82, 0x2d, 0xd8, 0x42, 0x2a,
|
||||
0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41, 0xc7, 0x0b, 0xa3, 0x20, 0x0b,
|
||||
0xbb, 0xb0, 0x0b, 0xaa, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x5d,
|
||||
0x2f, 0x90, 0xc2, 0x2c, 0xec, 0xc2, 0x2e, 0xac, 0xc2, 0x88, 0x41, 0x02,
|
||||
0x80, 0x20, 0x18, 0x74, 0xbe, 0x50, 0x0a, 0xaa, 0xd0, 0x0b, 0xbd, 0xc0,
|
||||
0x0a, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xd0, 0xfd, 0x82, 0x29, 0xac,
|
||||
0x42, 0x2f, 0xf4, 0x42, 0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x41,
|
||||
0x07, 0x0e, 0xa7, 0x50, 0x0b, 0xbe, 0xe0, 0x0b, 0xae, 0x30, 0x62, 0x90,
|
||||
0x00, 0x20, 0x08, 0x06, 0x86, 0x3a, 0x94, 0x02, 0x38, 0xfc, 0xc2, 0x2d,
|
||||
0xec, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0xeb, 0x60, 0x0a,
|
||||
0xe1, 0x00, 0x0e, 0xaf, 0xc0, 0x07, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
|
||||
0x60, 0xb0, 0xc3, 0x29, 0x84, 0x43, 0x38, 0xe4, 0x42, 0x1f, 0x8c, 0x18,
|
||||
0x24, 0x00, 0x08, 0x82, 0x81, 0xd1, 0x0e, 0xa8, 0x20, 0x0e, 0xe2, 0x10,
|
||||
0x0b, 0x7e, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x3b, 0xa4,
|
||||
0xc2, 0x38, 0x8c, 0x83, 0x2e, 0xfc, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20,
|
||||
0x18, 0x18, 0xef, 0xa0, 0x0a, 0xe4, 0x40, 0x0e, 0xb2, 0x00, 0x0a, 0x23,
|
||||
0x06, 0x07, 0x00, 0x82, 0x60, 0x80, 0xa5, 0xc3, 0x28, 0x1c, 0xe5, 0x30,
|
||||
0x9a, 0x10, 0x04, 0xc3, 0x11, 0x81, 0x14, 0x7c, 0xb3, 0x0c, 0x55, 0x10,
|
||||
0x0c, 0x47, 0x08, 0x57, 0xf0, 0xcd, 0x32, 0x08, 0x43, 0x30, 0x62, 0xf0,
|
||||
0x00, 0x20, 0x08, 0x06, 0x8d, 0x3c, 0x98, 0x82, 0xc3, 0x28, 0x49, 0x14,
|
||||
0xa5, 0x43, 0x3a, 0x94, 0x42, 0x34, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42,
|
||||
0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x4b, 0x50, 0x0d, 0x47,
|
||||
0x20, 0x7a, 0x10, 0x7c, 0xb3, 0x0c, 0x44, 0x11, 0x8c, 0x18, 0x18, 0x00,
|
||||
0x08, 0x82, 0xc1, 0x73, 0x0f, 0xb9, 0x00, 0x8d, 0x18, 0x18, 0x00, 0x08,
|
||||
0x82, 0xc1, 0x83, 0x0f, 0xba, 0x00, 0x8d, 0x18, 0x18, 0x00, 0x08, 0x82,
|
||||
0xc1, 0x93, 0x0f, 0xef, 0x20, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1,
|
||||
0xa3, 0x0f, 0xf0, 0x20, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xb3,
|
||||
0x0f, 0xbe, 0x40, 0x8d, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xc3, 0x0f,
|
||||
0xbf, 0x40, 0x8d, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xd3, 0x0f, 0xf3,
|
||||
0x20, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xe3, 0x0f, 0xf4, 0x20,
|
||||
0x98, 0x60, 0xc0, 0xc7, 0x04, 0x03, 0x3e, 0x23, 0x06, 0x07, 0x00, 0x82,
|
||||
0x60, 0x80, 0xf5, 0xc3, 0x2d, 0x6c, 0xfa, 0x30, 0x9a, 0x10, 0x08, 0xa3,
|
||||
0x09, 0xc2, 0x60, 0x42, 0x21, 0x1f, 0x13, 0x0a, 0xf9, 0x8c, 0x18, 0x1c,
|
||||
0x00, 0x08, 0x82, 0x41, 0x54, 0x12, 0xbe, 0x20, 0xb8, 0xc1, 0x88, 0xc1,
|
||||
0x01, 0x80, 0x20, 0x18, 0x44, 0x26, 0xf1, 0x0b, 0xc2, 0x1b, 0x8c, 0x18,
|
||||
0x1c, 0x00, 0x08, 0x82, 0x41, 0x74, 0x12, 0xe3, 0x20, 0xa4, 0xc1, 0x88,
|
||||
0xc1, 0x01, 0x80, 0x20, 0x18, 0x44, 0x28, 0x41, 0x0e, 0x82, 0x1a, 0x18,
|
||||
0x32, 0x06, 0xf2, 0x31, 0x64, 0x0c, 0xe4, 0x63, 0x84, 0x1b, 0xc8, 0xc7,
|
||||
0x88, 0x37, 0x90, 0x8f, 0x11, 0x42, 0x7c, 0x8c, 0x10, 0xe2, 0x33, 0x62,
|
||||
0x60, 0x00, 0x20, 0x08, 0x06, 0x0f, 0x4c, 0xb0, 0x83, 0x30, 0x62, 0x60,
|
||||
0x00, 0x20, 0x08, 0x06, 0x4f, 0x4c, 0xb4, 0x83, 0x60, 0x02, 0x1d, 0xc0,
|
||||
0xc7, 0x84, 0x3a, 0x80, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c,
|
||||
0x34, 0x11, 0x0f, 0xc6, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0x35,
|
||||
0x21, 0x0f, 0x86, 0x39, 0x7f, 0x00, 0x1f, 0x0b, 0x06, 0xf8, 0xd8, 0x13,
|
||||
0x0a, 0xf0, 0xb1, 0x80, 0x80, 0x8f, 0x0d, 0x12, 0x7d, 0x4c, 0x90, 0xe8,
|
||||
0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x0f, 0x4f, 0x80, 0x84, 0x30,
|
||||
0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f, 0x4f, 0x84, 0x84, 0x60, 0x82,
|
||||
0x28, 0xc8, 0xc7, 0x84, 0x51, 0x90, 0x8f, 0x9d, 0x82, 0x10, 0x1f, 0x43,
|
||||
0x05, 0x21, 0x3e, 0x66, 0x18, 0xf2, 0xb1, 0x60, 0x90, 0x8f, 0x1d, 0x87,
|
||||
0x7c, 0x2c, 0x20, 0xe4, 0x63, 0xd4, 0x00, 0x1f, 0xa3, 0x04, 0xf8, 0x8c,
|
||||
0x26, 0x9c, 0x01, 0x30, 0x9a, 0x80, 0x06, 0x81, 0x11, 0x82, 0x7c, 0x8c,
|
||||
0x10, 0xe4, 0x33, 0x62, 0x50, 0x01, 0x20, 0x08, 0x06, 0x93, 0x5a, 0xc4,
|
||||
0x44, 0x2a, 0x9c, 0x82, 0x10, 0xb0, 0x02, 0x2b, 0x90, 0x05, 0x59, 0x80,
|
||||
0x44, 0x1d, 0xd0, 0x01, 0x2b, 0xc4, 0x01, 0x1c, 0xb0, 0x02, 0x2b, 0x8c,
|
||||
0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02,
|
||||
0x31, 0xcc, 0x12, 0x54, 0xc3, 0x11, 0xa3, 0x20, 0x0b, 0xc1, 0x37, 0xcb,
|
||||
0x60, 0x1c, 0xc1, 0x88, 0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0x73, 0x71,
|
||||
0x12, 0xaf, 0xd0, 0x0a, 0xab, 0xa0, 0x0a, 0xb2, 0x20, 0x0b, 0x6a, 0xa1,
|
||||
0x16, 0x26, 0x21, 0x0b, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3,
|
||||
0x09, 0x83, 0x30, 0x4b, 0x50, 0x0d, 0x47, 0xa0, 0x82, 0x2e, 0x04, 0xdf,
|
||||
0x2c, 0x03, 0x92, 0x04, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xdc,
|
||||
0x45, 0x4e, 0xc0, 0xc2, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0x78,
|
||||
0xa1, 0x13, 0xb0, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f, 0x5e,
|
||||
0xbc, 0x85, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f, 0x5e, 0xc0,
|
||||
0x85, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x5e, 0xf8, 0x04,
|
||||
0x2d, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xc3, 0x17, 0x3f, 0x41,
|
||||
0x0b, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf4, 0xc5, 0x5c, 0x08,
|
||||
0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf8, 0x05, 0x5d, 0x08, 0x26,
|
||||
0x18, 0xf0, 0x31, 0xc1, 0x80, 0xcf, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18,
|
||||
0x60, 0x7d, 0x71, 0x13, 0xbb, 0xa0, 0x17, 0xa3, 0x09, 0x81, 0x30, 0x9a,
|
||||
0x20, 0x0c, 0x26, 0x14, 0xf2, 0x31, 0xa1, 0x90, 0xcf, 0x88, 0xc1, 0x01,
|
||||
0x80, 0x20, 0x18, 0x44, 0xa5, 0xe1, 0x13, 0x82, 0x3b, 0x8c, 0x18, 0x1c,
|
||||
0x00, 0x08, 0x82, 0x41, 0x64, 0x1a, 0x3f, 0x21, 0xbc, 0xc3, 0x88, 0xc1,
|
||||
0x01, 0x80, 0x20, 0x18, 0x44, 0xa7, 0x31, 0x16, 0x42, 0x3a, 0x8c, 0x18,
|
||||
0x1c, 0x00, 0x08, 0x82, 0x41, 0x84, 0x1a, 0x64, 0x21, 0xa8, 0x83, 0x21,
|
||||
0xe3, 0x20, 0x1f, 0x43, 0xc6, 0x41, 0x3e, 0x46, 0xb8, 0x83, 0x7c, 0x8c,
|
||||
0x78, 0x07, 0xf9, 0x18, 0x21, 0xc4, 0xc7, 0x08, 0x21, 0x3e, 0x23, 0x06,
|
||||
0x06, 0x00, 0x82, 0x60, 0xf0, 0xc0, 0x06, 0x5b, 0x08, 0x23, 0x06, 0x06,
|
||||
0x00, 0x82, 0x60, 0xf0, 0xc4, 0x46, 0x5b, 0x08, 0x26, 0xd0, 0x03, 0x7c,
|
||||
0x4c, 0xa8, 0x07, 0xf8, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0x43,
|
||||
0x1b, 0x71, 0x61, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0x53, 0x1b,
|
||||
0x72, 0x61, 0x98, 0xf3, 0x0f, 0xf0, 0xb1, 0x60, 0x80, 0x8f, 0x3d, 0x21,
|
||||
0x01, 0x1f, 0x0b, 0x08, 0xf8, 0xd8, 0x20, 0xd1, 0xc7, 0x04, 0x89, 0x3e,
|
||||
0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf0, 0x06, 0x68, 0x08, 0x23,
|
||||
0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf4, 0x46, 0x68, 0x08, 0x26, 0x88,
|
||||
0x84, 0x7c, 0x4c, 0x18, 0x09, 0xf9, 0xd8, 0x49, 0x08, 0xf1, 0x31, 0x94,
|
||||
0x10, 0xe2, 0x63, 0x86, 0x21, 0x1f, 0x0b, 0x06, 0xf9, 0xd8, 0x71, 0xc8,
|
||||
0xc7, 0x02, 0x42, 0x3e, 0x46, 0x0d, 0xf0, 0x31, 0x4a, 0x80, 0xcf, 0x68,
|
||||
0xc2, 0x19, 0x00, 0xa3, 0x09, 0x68, 0x10, 0x18, 0x21, 0xc8, 0xc7, 0x08,
|
||||
0x41, 0x3e, 0x23, 0x06, 0x15, 0x00, 0x82, 0x60, 0x30, 0xa9, 0x47, 0x6c,
|
||||
0xa4, 0xc4, 0x49, 0x08, 0x01, 0x4b, 0xb0, 0x04, 0x79, 0x90, 0x07, 0x68,
|
||||
0xd4, 0x01, 0x1d, 0xb0, 0x44, 0x1c, 0xc0, 0x01, 0x4b, 0xb0, 0xc4, 0x68,
|
||||
0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0xcc, 0x12, 0x54,
|
||||
0xc3, 0x11, 0x22, 0x31, 0x17, 0xc1, 0x37, 0xcb, 0xa0, 0x2c, 0xc1, 0x88,
|
||||
0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0xf2, 0x61, 0x1a, 0x2e, 0xc1, 0x12,
|
||||
0x2a, 0x91, 0x12, 0x31, 0x11, 0x13, 0xe9, 0x91, 0x1e, 0xa5, 0x11, 0x13,
|
||||
0xa3, 0x09, 0x01, 0x60, 0x01, 0x4e, 0xc8, 0xc7, 0x02, 0x9d, 0x80, 0xcf,
|
||||
0x88, 0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0xf6, 0xa1, 0x1a, 0x33, 0x11,
|
||||
0x13, 0xc1, 0x4d, 0xd4, 0x44, 0x4d, 0xb4, 0x47, 0x7b, 0xa4, 0x46, 0x4d,
|
||||
0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68,
|
||||
0x02, 0x31, 0xcc, 0x12, 0x54, 0xc3, 0x11, 0x2c, 0xc1, 0x17, 0xc1, 0x37,
|
||||
0xcb, 0xc0, 0x34, 0xc1, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x60, 0xf7,
|
||||
0x11, 0x1b, 0x35, 0x41, 0x1f, 0xa3, 0x09, 0x81, 0x30, 0x9a, 0x20, 0x0c,
|
||||
0x26, 0xdc, 0x84, 0x7c, 0x4c, 0xb8, 0x09, 0xf9, 0x98, 0x20, 0x16, 0xf0,
|
||||
0x31, 0x61, 0x2c, 0xe0, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f,
|
||||
0x88, 0xf8, 0x86, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x88,
|
||||
0xfc, 0x86, 0x60, 0xc2, 0x5c, 0xc0, 0xc7, 0x04, 0xba, 0x80, 0xcf, 0x68,
|
||||
0xc2, 0x02, 0x8c, 0x26, 0x30, 0x81, 0x11, 0x82, 0x7c, 0x8c, 0x10, 0xe4,
|
||||
0x63, 0x08, 0x5b, 0xc0, 0xc7, 0x90, 0xb6, 0x80, 0x8f, 0x09, 0x86, 0x7c,
|
||||
0x4c, 0x30, 0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f, 0x8b,
|
||||
0xac, 0x87, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x8b, 0xb0,
|
||||
0x87, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0x8c, 0x94, 0x47,
|
||||
0x5b, 0xac, 0x05, 0x31, 0xc0, 0x05, 0x5c, 0xa0, 0x08, 0x8a, 0x90, 0x07,
|
||||
0x5c, 0x8c, 0x26, 0x04, 0x80, 0x05, 0x77, 0x21, 0x1f, 0x0b, 0xf2, 0x02,
|
||||
0x3e, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0xd4, 0x48, 0x7a, 0xc8,
|
||||
0x05, 0x5c, 0x04, 0x76, 0x41, 0x17, 0x74, 0xc1, 0x22, 0x2c, 0x82, 0x1e,
|
||||
0x74, 0x31, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08,
|
||||
0xa3, 0x09, 0xc4, 0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x8e,
|
||||
0xb8, 0x87, 0x5d, 0xd0, 0x45, 0x03, 0xe5, 0x45, 0x5e, 0xc4, 0x48, 0x8c,
|
||||
0xb4, 0x47, 0x5e, 0x8c, 0x26, 0x04, 0x80, 0x05, 0xa0, 0x21, 0x1f, 0x0b,
|
||||
0x44, 0x03, 0x3e, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0xf8, 0x88,
|
||||
0x7c, 0xec, 0x45, 0x5e, 0x04, 0x7f, 0xd1, 0x17, 0x7d, 0x51, 0x23, 0x35,
|
||||
0x12, 0x1f, 0x7d, 0x31, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a,
|
||||
0x30, 0x08, 0xa3, 0x09, 0xc4, 0x60, 0x0d, 0x11, 0x1f, 0x6b, 0x88, 0xf8,
|
||||
0x58, 0x43, 0xc4, 0xc7, 0x1a, 0x22, 0x3e, 0x46, 0x5c, 0xf2, 0x31, 0x02,
|
||||
0x93, 0x8f, 0x11, 0x99, 0x7c, 0x8c, 0xd0, 0xe4, 0x63, 0x04, 0x03, 0x1f,
|
||||
0x23, 0x18, 0xf8, 0x18, 0xc1, 0xc0, 0xc7, 0x08, 0x06, 0x3e, 0x23, 0x06,
|
||||
0x0f, 0x00, 0x82, 0x60, 0xd0, 0xbc, 0xc9, 0x88, 0xac, 0x46, 0x6a, 0x98,
|
||||
0x41, 0x18, 0xb8, 0x86, 0x6b, 0x98, 0x89, 0x99, 0x88, 0x88, 0x6b, 0x8c,
|
||||
0x26, 0x04, 0x80, 0x05, 0xb5, 0x21, 0x1f, 0x0b, 0x6e, 0x03, 0x3e, 0x23,
|
||||
0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0xcc, 0xc9, 0x89, 0xc0, 0x86, 0x6b,
|
||||
0x04, 0xb4, 0x21, 0x1b, 0xb2, 0xa1, 0x26, 0x6a, 0x62, 0x22, 0xb2, 0x31,
|
||||
0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09,
|
||||
0xc4, 0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x0d, 0x9e, 0xb0, 0x08,
|
||||
0x6d, 0xc8, 0xc6, 0x1b, 0xb8, 0xc1, 0x6d, 0xdc, 0xc6, 0x9b, 0xbc, 0xc9,
|
||||
0x8a, 0xdc, 0xc6, 0x68, 0x42, 0x00, 0x58, 0xe0, 0x1b, 0xf2, 0xb1, 0x00,
|
||||
0x3c, 0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x0d, 0x9f, 0xc0,
|
||||
0x48, 0x6e, 0xdc, 0x46, 0xd0, 0x1b, 0xbb, 0xb1, 0x1b, 0x73, 0x32, 0x27,
|
||||
0x2f, 0xb2, 0x1b, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
|
||||
0x83, 0x30, 0x9a, 0x40, 0x0c, 0xd6, 0x10, 0xf1, 0xb1, 0x86, 0x88, 0x8f,
|
||||
0x35, 0x44, 0x7c, 0xac, 0x21, 0xe2, 0x63, 0x44, 0x1d, 0xc8, 0xc7, 0x08,
|
||||
0x3b, 0x90, 0x8f, 0x11, 0x77, 0x20, 0x1f, 0x23, 0xf0, 0x40, 0x3e, 0x46,
|
||||
0x30, 0xf0, 0x31, 0x82, 0x81, 0x8f, 0x11, 0x0c, 0x7c, 0x8c, 0x60, 0xe0,
|
||||
0x63, 0x62, 0x40, 0xc4, 0xc7, 0xc4, 0x80, 0x88, 0x8f, 0x89, 0x01, 0x11,
|
||||
0x1f, 0x13, 0x03, 0x22, 0x3e, 0x46, 0x88, 0x82, 0x7c, 0x8c, 0x18, 0x05,
|
||||
0xf9, 0x18, 0x41, 0x0a, 0xf2, 0x31, 0xa2, 0x14, 0xe4, 0x63, 0x04, 0x03,
|
||||
0x1f, 0x23, 0x18, 0xf8, 0x18, 0xc1, 0xc0, 0xc7, 0x08, 0x06, 0x3e, 0xb3,
|
||||
0x04, 0xd5, 0x70, 0x84, 0x7a, 0xe4, 0x48, 0xf0, 0xcd, 0x32, 0x38, 0x4f,
|
||||
0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x4f, 0xae, 0xec, 0x89, 0x7c,
|
||||
0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xa3, 0x2b, 0x7c, 0x22, 0x1f,
|
||||
0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xec, 0x4a, 0xac, 0x08, 0x23,
|
||||
0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xf0, 0x8a, 0xac, 0x08, 0x23, 0x06,
|
||||
0x06, 0x00, 0x82, 0x60, 0xf0, 0xf4, 0x0a, 0xa8, 0xd8, 0xc7, 0x88, 0x81,
|
||||
0x01, 0x80, 0x20, 0x18, 0x3c, 0xbe, 0x12, 0x2a, 0xf6, 0x31, 0x62, 0x60,
|
||||
0x00, 0x20, 0x08, 0x06, 0xcf, 0xaf, 0xd4, 0x8a, 0x30, 0x62, 0x60, 0x00,
|
||||
0x20, 0x08, 0x06, 0x0f, 0xb8, 0xd8, 0x8a, 0x60, 0x82, 0x01, 0x1f, 0x13,
|
||||
0x0c, 0xf8, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x01, 0xf6, 0x2b, 0x79,
|
||||
0xd2, 0x1f, 0xbc, 0x32, 0x9a, 0x10, 0x08, 0xa3, 0x09, 0xc2, 0x60, 0x42,
|
||||
0x21, 0x1f, 0x13, 0x0a, 0xf9, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41,
|
||||
0x74, 0x2e, 0xa0, 0x22, 0xc0, 0xc8, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18,
|
||||
0x44, 0xe8, 0x12, 0x2a, 0x42, 0x8c, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82,
|
||||
0x41, 0x94, 0x2e, 0xa5, 0x22, 0xac, 0xc8, 0x88, 0xc1, 0x01, 0x80, 0x20,
|
||||
0x18, 0x44, 0xea, 0x62, 0x2a, 0x02, 0x8b, 0x18, 0x52, 0x22, 0xf2, 0x31,
|
||||
0xa4, 0x44, 0xe4, 0x63, 0x04, 0x8c, 0xc8, 0xc7, 0x88, 0x18, 0x91, 0x8f,
|
||||
0x11, 0x42, 0x7c, 0x8c, 0x10, 0xe2, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08,
|
||||
0x06, 0x8f, 0xbc, 0xb8, 0x8a, 0x30, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06,
|
||||
0xcf, 0xbc, 0xbc, 0x8a, 0x60, 0x82, 0x8d, 0xc0, 0xc7, 0x84, 0x1b, 0x81,
|
||||
0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0xf6, 0x32, 0x2b, 0xc6,
|
||||
0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0xf7, 0x42, 0x2b, 0x86, 0x39,
|
||||
0x61, 0x02, 0x1f, 0x0b, 0x06, 0xf8, 0xd8, 0x33, 0x26, 0xf0, 0xb1, 0x80,
|
||||
0x80, 0x8f, 0x0d, 0x12, 0x7d, 0x4c, 0x90, 0xe8, 0x33, 0x62, 0x60, 0x00,
|
||||
0x20, 0x08, 0x06, 0x8f, 0xbf, 0x88, 0x8b, 0x30, 0x62, 0x60, 0x00, 0x20,
|
||||
0x08, 0x06, 0xcf, 0xbf, 0x8c, 0x8b, 0x60, 0x02, 0x99, 0xc8, 0xc7, 0x84,
|
||||
0x32, 0x91, 0x8f, 0xa5, 0x89, 0x10, 0x1f, 0x53, 0x13, 0x21, 0x3e, 0x66,
|
||||
0x18, 0xf2, 0xb1, 0x60, 0x90, 0x8f, 0x1d, 0x87, 0x7c, 0x2c, 0x20, 0xe4,
|
||||
0x63, 0xd4, 0x00, 0x1f, 0xa3, 0x04, 0xf8, 0x8c, 0x26, 0x9c, 0x01, 0x30,
|
||||
0x9a, 0x80, 0x06, 0x81, 0xa1, 0x81, 0x20, 0x1f, 0x0b, 0x0a, 0xf9, 0x58,
|
||||
0x1a, 0x0c, 0xf2, 0xb1, 0xc0, 0x90, 0x8f, 0x0d, 0x72, 0x02, 0x1f, 0x13,
|
||||
0xe6, 0x04, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xc8, 0x8c,
|
||||
0xbb, 0x08, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xcc, 0xcc, 0xbb,
|
||||
0x08, 0x26, 0x8c, 0x0a, 0x7c, 0x4c, 0x20, 0x15, 0xf8, 0x98, 0xc0, 0xc8,
|
||||
0xc7, 0x04, 0x46, 0x3e, 0x66, 0xe8, 0x09, 0x7c, 0xcc, 0xd8, 0x13, 0xf8,
|
||||
0x98, 0x00, 0xc9, 0xc7, 0x04, 0x48, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82,
|
||||
0x60, 0xf0, 0xf0, 0x4c, 0xbe, 0x30, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60,
|
||||
0xf0, 0xf4, 0x8c, 0xbe, 0x30, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0,
|
||||
0xfc, 0xcc, 0xbc, 0xec, 0x49, 0x9e, 0x10, 0x83, 0x9f, 0xf8, 0x89, 0xcd,
|
||||
0xd8, 0x8c, 0xbc, 0xf8, 0xc9, 0x68, 0x42, 0x00, 0x58, 0x50, 0x2a, 0xf2,
|
||||
0xb1, 0xe0, 0x54, 0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd,
|
||||
0xd8, 0xdc, 0x0b, 0xa8, 0xf8, 0x49, 0x40, 0x2a, 0xa2, 0x22, 0x2a, 0x3a,
|
||||
0xa3, 0x33, 0xf6, 0x22, 0x2a, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04,
|
||||
0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0x23, 0x06, 0x0f, 0x00, 0x82,
|
||||
0x60, 0xd0, 0xa0, 0x0d, 0xbf, 0x90, 0x8a, 0xa8, 0x34, 0xd0, 0xa9, 0x9c,
|
||||
0xca, 0xcf, 0xfc, 0xcc, 0xbe, 0x9c, 0xca, 0x68, 0x42, 0x00, 0x58, 0xe0,
|
||||
0x2a, 0xf2, 0xb1, 0x00, 0x56, 0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08,
|
||||
0x06, 0x0d, 0xdb, 0x80, 0x4c, 0xaa, 0x9c, 0x4a, 0xd0, 0x2a, 0xab, 0xb2,
|
||||
0x2a, 0x63, 0x33, 0x36, 0xff, 0xb2, 0x2a, 0xa3, 0x09, 0x01, 0x30, 0x9a,
|
||||
0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0xd6, 0x10, 0xf1,
|
||||
0xb1, 0x86, 0x88, 0x8f, 0x35, 0x44, 0x7c, 0xac, 0x21, 0xe2, 0x63, 0xc4,
|
||||
0x25, 0x1f, 0x23, 0x30, 0xf9, 0x18, 0x91, 0xc9, 0xc7, 0x08, 0x4d, 0x3e,
|
||||
0x46, 0x30, 0xf0, 0x31, 0x82, 0x81, 0x8f, 0x11, 0x0c, 0x7c, 0x8c, 0x60,
|
||||
0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0xdf, 0xc4, 0x4c,
|
||||
0xae, 0xdc, 0x8a, 0x19, 0x84, 0x01, 0xaf, 0xf0, 0x0a, 0xdd, 0xd0, 0x0d,
|
||||
0xcc, 0xf0, 0xca, 0x68, 0x42, 0x00, 0x58, 0x30, 0x2e, 0xf2, 0xb1, 0xa0,
|
||||
0x5c, 0xe0, 0x33, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0xe8, 0xd4,
|
||||
0x8c, 0xaf, 0xf0, 0x4a, 0x20, 0x2e, 0xe0, 0x02, 0x2e, 0x78, 0x83, 0x37,
|
||||
0x34, 0x03, 0x2e, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09,
|
||||
0x83, 0x30, 0x9a, 0x40, 0x0c, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0,
|
||||
0x98, 0x8e, 0xce, 0x88, 0x0b, 0xb8, 0xbc, 0x81, 0x1b, 0x94, 0x4b, 0xb9,
|
||||
0xf4, 0x4d, 0xdf, 0xe4, 0x4c, 0xb9, 0x8c, 0x26, 0x04, 0x80, 0x05, 0xec,
|
||||
0x22, 0x1f, 0x0b, 0xdc, 0x05, 0x3e, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60,
|
||||
0xd0, 0xa8, 0x8e, 0xcf, 0x9c, 0x4b, 0xb9, 0x04, 0xeb, 0x92, 0x2e, 0xe9,
|
||||
0x12, 0x3a, 0xa1, 0xd3, 0x33, 0xe9, 0x32, 0x9a, 0x10, 0x00, 0xa3, 0x09,
|
||||
0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x60, 0x0d, 0x11, 0x1f,
|
||||
0x6b, 0x88, 0xf8, 0x58, 0x43, 0xc4, 0xc7, 0x1a, 0x22, 0x3e, 0x46, 0xd4,
|
||||
0x81, 0x7c, 0x8c, 0xb0, 0x03, 0xf9, 0x18, 0x71, 0x07, 0xf2, 0x31, 0x02,
|
||||
0x0f, 0xe4, 0x63, 0x04, 0x03, 0x1f, 0x23, 0x18, 0xf8, 0x18, 0xc1, 0xc0,
|
||||
0xc7, 0x08, 0x06, 0x3e, 0x26, 0x06, 0x44, 0x7c, 0x4c, 0x0c, 0x88, 0xf8,
|
||||
0x98, 0x18, 0x10, 0xf1, 0x31, 0x31, 0x20, 0xe2, 0x63, 0x84, 0x28, 0xc8,
|
||||
0xc7, 0x88, 0x51, 0x90, 0x8f, 0x11, 0xa4, 0x20, 0x1f, 0x23, 0x4a, 0x41,
|
||||
0x3e, 0x46, 0x30, 0xf0, 0x31, 0x82, 0x81, 0x8f, 0x11, 0x0c, 0x7c, 0x8c,
|
||||
0x60, 0xe0, 0x33, 0x4b, 0x50, 0x0d, 0x47, 0xe0, 0x8b, 0xd9, 0x04, 0xdf,
|
||||
0x2c, 0x03, 0x14, 0x05, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0xa0,
|
||||
0x0f, 0xdf, 0x90, 0x8c, 0xc8, 0x80, 0xcc, 0xbf, 0x9c, 0xcc, 0xc9, 0xfc,
|
||||
0xce, 0xef, 0xec, 0xcd, 0xc9, 0x8c, 0x26, 0x04, 0xc0, 0x88, 0xc1, 0x03,
|
||||
0x80, 0x20, 0x18, 0x34, 0xea, 0xe3, 0x37, 0x27, 0x43, 0x32, 0x22, 0x13,
|
||||
0x32, 0x29, 0x93, 0x32, 0xe1, 0x13, 0x3e, 0x7d, 0x93, 0x32, 0xa3, 0x09,
|
||||
0x01, 0x30, 0x9a, 0x20, 0x04, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x80,
|
||||
0xa1, 0x8f, 0xe8, 0x98, 0x0c, 0xf8, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82,
|
||||
0x10, 0x8c, 0x26, 0x0c, 0x82, 0x0d, 0x08, 0x7c, 0x6c, 0x38, 0xe0, 0x63,
|
||||
0xc3, 0x01, 0x9f, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xc0, 0xde, 0x27,
|
||||
0x75, 0x5a, 0x26, 0x76, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08, 0x46,
|
||||
0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x2a, 0xfa, 0xb1,
|
||||
0x9d, 0xc3, 0x28, 0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x03,
|
||||
0x8c, 0x7e, 0x5c, 0x47, 0x66, 0x70, 0x67, 0x34, 0x21, 0x00, 0x46, 0x13,
|
||||
0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c, 0x16, 0x00, 0x04, 0xc1, 0xa0,
|
||||
0xca, 0x9f, 0xdd, 0x61, 0x16, 0x65, 0x10, 0x82, 0x11, 0x83, 0x03, 0x00,
|
||||
0x41, 0x30, 0xc0, 0xf2, 0x67, 0x76, 0x6e, 0x66, 0x7e, 0x46, 0x13, 0x02,
|
||||
0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40,
|
||||
0x10, 0x0c, 0x2a, 0xff, 0x01, 0x9f, 0x08, 0x7a, 0x06, 0x21, 0x98, 0x25,
|
||||
0xa8, 0x86, 0x23, 0x68, 0x26, 0x74, 0x82, 0x6f, 0x96, 0x41, 0x9a, 0x82,
|
||||
0x11, 0x83, 0x07, 0x00, 0x41, 0x30, 0x68, 0x48, 0x08, 0x77, 0xc0, 0xc6,
|
||||
0x67, 0x78, 0x66, 0x67, 0xc6, 0x66, 0x6c, 0xf6, 0x67, 0x7f, 0x6e, 0x67,
|
||||
0x6c, 0x46, 0x13, 0x02, 0x60, 0xc4, 0xe0, 0x01, 0x40, 0x10, 0x0c, 0x1a,
|
||||
0x13, 0xd2, 0x9d, 0xb1, 0x01, 0x1b, 0x9f, 0xe9, 0x99, 0xb2, 0x29, 0x9b,
|
||||
0xfe, 0xe9, 0x9f, 0xdc, 0x29, 0x9b, 0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10,
|
||||
0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xc0, 0x48, 0xc8, 0x77, 0xc4,
|
||||
0x86, 0x7f, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06,
|
||||
0xc1, 0x06, 0x04, 0x3e, 0x36, 0x18, 0xf0, 0xb1, 0x01, 0x81, 0xcf, 0x88,
|
||||
0xc1, 0x01, 0x80, 0x20, 0x18, 0x60, 0x2b, 0x54, 0x3e, 0x69, 0xd3, 0x3e,
|
||||
0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x62,
|
||||
0xb0, 0x00, 0x20, 0x08, 0x06, 0x15, 0x0c, 0xc9, 0xcf, 0x61, 0x14, 0x83,
|
||||
0x10, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x01, 0x06, 0x43, 0xea, 0xe3,
|
||||
0x36, 0xf4, 0x33, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30,
|
||||
0x08, 0x23, 0x06, 0x0b, 0x00, 0x82, 0x60, 0x50, 0xd5, 0xd0, 0xfd, 0x30,
|
||||
0x8b, 0x32, 0x08, 0xc1, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x60, 0x35,
|
||||
0xf4, 0x3e, 0x73, 0xf3, 0x42, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04,
|
||||
0xa3, 0x09, 0x83, 0x30, 0x62, 0xb0, 0x00, 0x20, 0x08, 0x06, 0x95, 0x0e,
|
||||
0xf1, 0x4f, 0x04, 0x3d, 0x83, 0x10, 0xcc, 0x12, 0x54, 0xc3, 0x11, 0x70,
|
||||
0xc3, 0x3b, 0xc1, 0x37, 0xcb, 0x40, 0x55, 0xc1, 0x88, 0xc1, 0x03, 0x80,
|
||||
0x20, 0x18, 0x34, 0x60, 0x44, 0x3f, 0x7c, 0xa3, 0x37, 0x78, 0x73, 0x37,
|
||||
0x7f, 0xf3, 0x37, 0x37, 0x74, 0x43, 0xf3, 0xf3, 0x37, 0xa3, 0x09, 0x01,
|
||||
0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x18, 0xd9, 0xcf, 0xdf,
|
||||
0xf0, 0x8d, 0xde, 0xe4, 0x4d, 0xe8, 0x84, 0x4e, 0x0e, 0xe5, 0x50, 0xfd,
|
||||
0x84, 0xce, 0x68, 0x42, 0x00, 0x8c, 0x18, 0x3c, 0x00, 0x08, 0x82, 0x41,
|
||||
0x43, 0x46, 0xf8, 0x23, 0x3a, 0x7e, 0xc3, 0x37, 0x7b, 0x33, 0x3a, 0xa3,
|
||||
0xb3, 0x43, 0x3b, 0x74, 0x3f, 0xa3, 0x33, 0x9a, 0x10, 0x00, 0x23, 0x06,
|
||||
0x07, 0x00, 0x82, 0x60, 0x80, 0x85, 0xd1, 0xfe, 0xfc, 0x4d, 0x0e, 0x8d,
|
||||
0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0x82, 0x0d, 0x09,
|
||||
0x7c, 0x6c, 0x40, 0xe0, 0x63, 0xc3, 0x01, 0x9f, 0x11, 0x83, 0x03, 0x00,
|
||||
0x41, 0x30, 0xc0, 0xd0, 0x48, 0x84, 0x4c, 0x47, 0x85, 0x46, 0x13, 0x02,
|
||||
0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40,
|
||||
0x10, 0x0c, 0xaa, 0x36, 0x7a, 0xa1, 0xc3, 0x28, 0x06, 0x21, 0x18, 0x31,
|
||||
0x38, 0x00, 0x10, 0x04, 0x03, 0xac, 0x8d, 0x4e, 0x68, 0x75, 0x62, 0x68,
|
||||
0x34, 0x21, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c,
|
||||
0x16, 0x00, 0x04, 0xc1, 0xa0, 0x92, 0x23, 0x1a, 0x62, 0x16, 0x65, 0x10,
|
||||
0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xc0, 0xe4, 0x88, 0x85, 0x60,
|
||||
0x87, 0x8d, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06,
|
||||
0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0xaa, 0x3b, 0xca, 0xa1, 0x08,
|
||||
0x7a, 0x06, 0x21, 0x98, 0x25, 0xa8, 0x06, 0xca, 0x06, 0xbc, 0x03, 0x64,
|
||||
0x4e, 0xe0, 0x31, 0x02, 0xc6, 0x0c, 0x9e, 0x42, 0x54, 0x4a, 0x71, 0x1d,
|
||||
0x46, 0x2e, 0x1c, 0x94, 0x80, 0x60, 0x41, 0xb2, 0x28, 0xbc, 0x9b, 0x06,
|
||||
0xca, 0x06, 0xbd, 0x03, 0x64, 0x4e, 0xe0, 0x31, 0x02, 0xc6, 0x0c, 0x9e,
|
||||
0x42, 0x54, 0x4a, 0x71, 0x1d, 0x46, 0x2e, 0x1c, 0x90, 0x80, 0x50, 0x41,
|
||||
0x72, 0x28, 0xbf, 0x9b, 0x06, 0xca, 0x06, 0xbe, 0x03, 0x64, 0x4e, 0xe0,
|
||||
0x31, 0x02, 0xc6, 0x0c, 0x9e, 0x42, 0x54, 0x4a, 0x71, 0x1d, 0x46, 0x2e,
|
||||
0x1c, 0x7c, 0x80, 0x40, 0x41, 0x32, 0x28, 0xbe, 0x9b, 0x06, 0xca, 0x06,
|
||||
0xbf, 0x03, 0x64, 0x4e, 0xe0, 0x31, 0xc2, 0xef, 0x0c, 0xbf, 0x43, 0x54,
|
||||
0x4a, 0x71, 0x1d, 0x46, 0x2e, 0x1c, 0xbf, 0x83, 0xfc, 0x4e, 0xf2, 0x3b,
|
||||
0xca, 0xef, 0xa6, 0xd1, 0x04, 0xd9, 0x11, 0x86, 0x23, 0x82, 0xf3, 0x09,
|
||||
0xbe, 0x59, 0x06, 0xeb, 0x0a, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0,
|
||||
0x09, 0xa5, 0x3b, 0x32, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x11,
|
||||
0x25, 0x3c, 0x32, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x19, 0xa5,
|
||||
0x3c, 0x32, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x21, 0xa5, 0x1e,
|
||||
0x1a, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x29, 0x25, 0x1f, 0x1a,
|
||||
0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0x31, 0xa5, 0x1f, 0x1a, 0x6c,
|
||||
0xb8, 0x1f, 0xf9, 0xd8, 0x80, 0x3f, 0xf2, 0xb1, 0x21, 0x7f, 0xe4, 0x33,
|
||||
0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x8f, 0x2a, 0x91, 0xd1, 0x30, 0x62,
|
||||
0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x2a, 0x95, 0xd1, 0x30, 0x62, 0x60,
|
||||
0x00, 0x20, 0x08, 0x06, 0x0f, 0x2b, 0x99, 0xd1, 0x60, 0x83, 0xff, 0xc0,
|
||||
0xc7, 0x86, 0xff, 0x81, 0x8f, 0x0d, 0x20, 0x04, 0x9f, 0x11, 0x83, 0x03,
|
||||
0x00, 0x41, 0x30, 0x88, 0x5e, 0x09, 0x8d, 0x86, 0xf9, 0x19, 0x31, 0x38,
|
||||
0x00, 0x10, 0x04, 0x83, 0x08, 0x96, 0xd2, 0x68, 0xa0, 0x9f, 0x11, 0x83,
|
||||
0x03, 0x00, 0x41, 0x30, 0x88, 0x62, 0x49, 0x8d, 0x86, 0xfa, 0xb1, 0xa4,
|
||||
0x84, 0xe4, 0x63, 0x89, 0x09, 0xc9, 0xc7, 0x92, 0x13, 0x92, 0x8f, 0xa5,
|
||||
0xd0, 0x10, 0x1f, 0x53, 0xa1, 0x21, 0x3e, 0xb6, 0x42, 0x43, 0x7c, 0x2c,
|
||||
0x19, 0xe8, 0x63, 0xc9, 0x40, 0x1f, 0x4b, 0x06, 0xfa, 0x8c, 0x18, 0x18,
|
||||
0x00, 0x08, 0x82, 0xc1, 0xc3, 0x4b, 0xb2, 0x34, 0x8c, 0x18, 0x18, 0x00,
|
||||
0x08, 0x82, 0xc1, 0xd3, 0x4b, 0xb3, 0x34, 0x8c, 0x18, 0x18, 0x00, 0x08,
|
||||
0x82, 0xc1, 0xe3, 0x4b, 0xb4, 0x34, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82,
|
||||
0xc1, 0xf3, 0x4b, 0x78, 0x34, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1,
|
||||
0x03, 0x4e, 0x79, 0x34, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0x13,
|
||||
0x4e, 0x7a, 0x34, 0xd8, 0x60, 0x43, 0xf2, 0xb1, 0xe1, 0x86, 0xe4, 0x63,
|
||||
0x03, 0x0e, 0xc9, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x9e, 0x72,
|
||||
0xfa, 0xa3, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x1e, 0x73, 0x02,
|
||||
0xa5, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x9e, 0x73, 0x0a, 0xa5,
|
||||
0xc1, 0x86, 0x3d, 0x92, 0x8f, 0x0d, 0x7c, 0x24, 0x1f, 0x1b, 0xfa, 0x48,
|
||||
0x3e, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x80, 0x9d, 0x53, 0x28, 0x95,
|
||||
0x10, 0x38, 0x8d, 0x26, 0x04, 0x83, 0x15, 0x01, 0x7d, 0xac, 0x10, 0xe8,
|
||||
0x63, 0xc5, 0x40, 0x9f, 0x59, 0x82, 0x6b, 0xa0, 0x62, 0x30, 0x2c, 0x75,
|
||||
0xa8, 0x06, 0x2a, 0x06, 0xc3, 0x52, 0x87, 0x6a, 0xa0, 0x62, 0x30, 0x2c,
|
||||
0x75, 0xa8, 0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0x00, 0x7b, 0xa7, 0x54,
|
||||
0x6a, 0x21, 0x74, 0x1a, 0x4d, 0x08, 0x80, 0xe1, 0x88, 0x00, 0x87, 0x9c,
|
||||
0x6f, 0x96, 0x01, 0x0b, 0x83, 0x60, 0x38, 0x42, 0xb8, 0xa1, 0xe0, 0x9b,
|
||||
0x65, 0xc8, 0xb4, 0x60, 0x34, 0x81, 0x08, 0x2c, 0x40, 0xe4, 0x63, 0x02,
|
||||
0x22, 0x1f, 0x1b, 0x10, 0xf9, 0xcc, 0x12, 0x84, 0xc1, 0x70, 0xc4, 0xf1,
|
||||
0x43, 0xc1, 0x37, 0xcb, 0xb0, 0x85, 0x41, 0x30, 0x1c, 0xd1, 0x07, 0x60,
|
||||
0x14, 0x7c, 0xb3, 0x0c, 0x5c, 0x17, 0x58, 0xa3, 0x47, 0xf2, 0x19, 0x31,
|
||||
0x40, 0x00, 0x10, 0x04, 0x03, 0x2d, 0x9f, 0x6a, 0x49, 0x8f, 0x9a, 0x60,
|
||||
0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x34, 0x7d, 0xb2, 0x25, 0x3d, 0x6a,
|
||||
0x02, 0x83, 0xf4, 0x48, 0x3e, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0xa0,
|
||||
0xf1, 0x13, 0x2e, 0xe9, 0x11, 0x14, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82,
|
||||
0x81, 0xd6, 0x4f, 0xb9, 0xa4, 0x47, 0x50, 0x60, 0x93, 0x1e, 0xc9, 0x67,
|
||||
0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0xb4, 0x7f, 0xda, 0x25, 0x3d, 0x9a,
|
||||
0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0xd0, 0x40, 0x8a, 0x97, 0xf4,
|
||||
0x68, 0x0a, 0x66, 0x09, 0xba, 0x81, 0x8a, 0xc1, 0xe1, 0xd8, 0x60, 0x1b,
|
||||
0xa8, 0x18, 0x14, 0x8e, 0x0d, 0xb6, 0x81, 0x8a, 0xc1, 0xe0, 0xd8, 0x60,
|
||||
0x1b, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0x08, 0xa5, 0xc2, 0x49, 0x08,
|
||||
0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0x20, 0x4a, 0x29, 0x71, 0x22, 0x82,
|
||||
0xe1, 0x88, 0xc0, 0x8d, 0x84, 0x6f, 0x96, 0xc1, 0xfb, 0x82, 0xd1, 0x84,
|
||||
0x2c, 0xb0, 0x21, 0x90, 0x8f, 0x05, 0x6f, 0x04, 0x9f, 0xd1, 0x04, 0x4e,
|
||||
0x30, 0x23, 0x90, 0x8f, 0x05, 0x72, 0x04, 0x1f, 0x23, 0x02, 0xfa, 0x58,
|
||||
0xd0, 0xc8, 0xc7, 0x84, 0x46, 0x3e, 0x36, 0x34, 0xf2, 0x99, 0x25, 0xf8,
|
||||
0x06, 0x2a, 0x06, 0xc3, 0x03, 0x83, 0x6e, 0xa0, 0x62, 0x30, 0x3c, 0x30,
|
||||
0xe8, 0x06, 0x2a, 0x06, 0xc3, 0x03, 0x83, 0x6e, 0x96, 0x01, 0x0c, 0xc2,
|
||||
0xa0, 0xb3, 0xc1, 0x9c, 0xe4, 0x33, 0x62, 0x80, 0x00, 0x20, 0x08, 0x06,
|
||||
0x5a, 0x4d, 0xc5, 0x93, 0x39, 0x0d, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20,
|
||||
0x18, 0x68, 0x36, 0x25, 0x4f, 0xe6, 0x34, 0x04, 0x66, 0x98, 0x93, 0x7c,
|
||||
0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0x40, 0xc3, 0x29, 0x7a, 0x32, 0x27,
|
||||
0x23, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x03, 0x2d, 0xa7, 0xea, 0xc9,
|
||||
0x9c, 0x8c, 0xc0, 0x12, 0x73, 0x92, 0xcf, 0x88, 0x01, 0x02, 0x80, 0x20,
|
||||
0x18, 0x68, 0x3b, 0x75, 0x4f, 0xe6, 0x94, 0x04, 0x23, 0x06, 0x08, 0x00,
|
||||
0x82, 0x60, 0xa0, 0xf1, 0x14, 0x3e, 0x99, 0x53, 0x12, 0xcc, 0x12, 0x84,
|
||||
0xc1, 0x40, 0xcb, 0x40, 0x0e, 0x17, 0x2d, 0x64, 0x0e, 0x18, 0x60, 0x1f,
|
||||
0x39, 0x68, 0x03, 0x2d, 0x03, 0x39, 0x5c, 0xb4, 0x90, 0x29, 0x60, 0x80,
|
||||
0x7d, 0xe4, 0xa0, 0x0d, 0xb4, 0x0c, 0xe4, 0x70, 0xd1, 0x42, 0x66, 0x80,
|
||||
0x01, 0xf6, 0x91, 0x83, 0x36, 0x1c, 0x61, 0x0e, 0xa6, 0x14, 0x7c, 0xb3,
|
||||
0x0c, 0x62, 0xd0, 0x06, 0xc1, 0x68, 0x42, 0x1e, 0x01, 0xc3, 0x11, 0x81,
|
||||
0x2a, 0x39, 0xdf, 0x2c, 0xc3, 0x18, 0xb0, 0x41, 0x30, 0x1c, 0x61, 0xe8,
|
||||
0x93, 0xf2, 0xcd, 0x32, 0x94, 0x01, 0x19, 0x04, 0x76, 0xe8, 0x93, 0x7c,
|
||||
0x66, 0x09, 0xcc, 0xc0, 0x10, 0x7d, 0x82, 0xcf, 0x88, 0x81, 0x01, 0x80,
|
||||
0x20, 0x18, 0x3c, 0x6b, 0x15, 0x56, 0x81, 0x05, 0xfb, 0x24, 0x9f, 0x11,
|
||||
0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0xda, 0xca, 0xa4, 0x02, 0x0b, 0xf8,
|
||||
0x49, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xbc, 0x55, 0x4a,
|
||||
0x05, 0xb3, 0x04, 0x66, 0x30, 0x50, 0x31, 0x38, 0x64, 0x20, 0x94, 0xc1,
|
||||
0x70, 0x84, 0x33, 0x52, 0xca, 0x37, 0xcb, 0x80, 0x06, 0x67, 0x10, 0xd8,
|
||||
0x33, 0x52, 0xf2, 0x99, 0x25, 0x48, 0x03, 0x83, 0x46, 0x0a, 0x3e, 0x23,
|
||||
0x06, 0x06, 0x00, 0x82, 0x60, 0xf0, 0xd0, 0x95, 0x5a, 0x05, 0x16, 0x90,
|
||||
0x94, 0x7c, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0xe0, 0xb1, 0xab, 0x97,
|
||||
0x0a, 0x2c, 0x28, 0x29, 0xf9, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1,
|
||||
0x83, 0x57, 0x32, 0x15, 0xcc, 0x12, 0xa4, 0xc1, 0x40, 0xc5, 0xe0, 0x9c,
|
||||
0x81, 0x80, 0x06, 0xc3, 0x11, 0x16, 0x4b, 0x29, 0xdf, 0x2c, 0xc3, 0x1a,
|
||||
0xa8, 0x41, 0x60, 0x17, 0x4b, 0xc9, 0x67, 0x96, 0x80, 0x0d, 0x0c, 0x63,
|
||||
0x29, 0xf8, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0xc1, 0xd3, 0x57, 0x73,
|
||||
0x15, 0x58, 0xd0, 0x52, 0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83,
|
||||
0xe7, 0xaf, 0x70, 0x2a, 0xb0, 0xc0, 0xa5, 0xe4, 0x33, 0x62, 0x60, 0x00,
|
||||
0x20, 0x08, 0x06, 0x4f, 0x68, 0xed, 0x54, 0x30, 0x4b, 0xc0, 0x06, 0x03,
|
||||
0x1d, 0x03, 0x19, 0xac, 0x01, 0x19, 0xa8, 0x01, 0x28, 0x88, 0xc1, 0x40,
|
||||
0xc7, 0x40, 0xad, 0x01, 0xa5, 0x06, 0xa0, 0x20, 0x06, 0x03, 0x1d, 0x83,
|
||||
0xb1, 0x06, 0x92, 0x1a, 0x80, 0x82, 0x18, 0x8c, 0x26, 0xe0, 0xd2, 0x60,
|
||||
0x44, 0x20, 0x1f, 0x23, 0x04, 0xf9, 0x18, 0x31, 0xc8, 0x67, 0x96, 0xc0,
|
||||
0x14, 0x86, 0x23, 0x54, 0xa2, 0x9d, 0x82, 0x6f, 0x34, 0xa1, 0x97, 0x86,
|
||||
0x59, 0x06, 0x37, 0xc8, 0x03, 0xc1, 0xd2, 0x20, 0x90, 0x8f, 0xa5, 0x81,
|
||||
0x20, 0x1f, 0x4b, 0x83, 0x41, 0x3e, 0xa3, 0x09, 0xe1, 0x04, 0x0c, 0x47,
|
||||
0x04, 0xf2, 0xe4, 0x7c, 0xb3, 0x0c, 0xa6, 0xf0, 0x06, 0xc1, 0x70, 0x44,
|
||||
0xa1, 0x4f, 0xca, 0x37, 0xcb, 0x10, 0x07, 0x70, 0x10, 0x98, 0xc1, 0x4f,
|
||||
0xf2, 0x99, 0x25, 0x90, 0x83, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78,
|
||||
0x64, 0x0b, 0xb5, 0x8e, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x66,
|
||||
0x8b, 0xad, 0x02, 0x0b, 0x40, 0x4a, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82,
|
||||
0x60, 0xf0, 0xd4, 0xd6, 0x5b, 0x05, 0x16, 0x8c, 0x94, 0x7c, 0x2c, 0x28,
|
||||
0x29, 0xf8, 0xcc, 0x12, 0xc8, 0xc1, 0x40, 0xc5, 0xe0, 0xc0, 0x81, 0x10,
|
||||
0x07, 0xc3, 0x11, 0xcd, 0x48, 0x29, 0xdf, 0x2c, 0x03, 0x1d, 0xcc, 0x41,
|
||||
0x60, 0x4e, 0x49, 0xc9, 0x67, 0x96, 0xa0, 0x0e, 0x46, 0x0c, 0x0c, 0x00,
|
||||
0x04, 0xc1, 0xe0, 0xd9, 0xad, 0xd8, 0x7a, 0x46, 0x0c, 0x0c, 0x00, 0x04,
|
||||
0xc1, 0xe0, 0xe1, 0xad, 0xba, 0x0a, 0x2c, 0x48, 0x29, 0xf9, 0x8c, 0x18,
|
||||
0x18, 0x00, 0x08, 0x82, 0xc1, 0xe3, 0x5b, 0x78, 0x15, 0x58, 0xc0, 0x52,
|
||||
0xf2, 0xb1, 0xc0, 0xa5, 0xe0, 0x33, 0x4b, 0x50, 0x07, 0x03, 0x15, 0x83,
|
||||
0x33, 0x07, 0x02, 0x1d, 0x0c, 0x47, 0x54, 0x2c, 0xa5, 0x7c, 0xb3, 0x0c,
|
||||
0x77, 0x60, 0x07, 0x81, 0x59, 0x2e, 0x25, 0x9f, 0x59, 0x02, 0x3c, 0x18,
|
||||
0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x87, 0xbc, 0x74, 0xeb, 0x1a, 0x31,
|
||||
0x30, 0x00, 0x10, 0x04, 0x83, 0xa7, 0xbc, 0xfc, 0x2a, 0xb0, 0x40, 0xa6,
|
||||
0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0xcf, 0x79, 0x85, 0x56,
|
||||
0x60, 0x41, 0x4d, 0xc9, 0xc7, 0x82, 0x9b, 0x82, 0xcf, 0x2c, 0x01, 0x1e,
|
||||
0x0c, 0x54, 0x0c, 0x8e, 0x1d, 0x08, 0x77, 0x30, 0x62, 0x70, 0x00, 0x20,
|
||||
0x08, 0x06, 0x91, 0x7a, 0x8d, 0xd6, 0xe4, 0x52, 0x23, 0x06, 0x07, 0x00,
|
||||
0x82, 0x60, 0x10, 0xad, 0x17, 0x69, 0x2d, 0x2f, 0x35, 0x62, 0x70, 0x00,
|
||||
0x20, 0x08, 0x06, 0x11, 0x7b, 0x95, 0xd6, 0x00, 0x53, 0x23, 0x06, 0x07,
|
||||
0x00, 0x82, 0x60, 0x10, 0xb5, 0x57, 0x6a, 0x0d, 0x2f, 0x35, 0x62, 0x70,
|
||||
0x00, 0x20, 0x08, 0x06, 0x91, 0x7b, 0xa9, 0xd6, 0x00, 0x53, 0x23, 0x06,
|
||||
0x07, 0x00, 0x82, 0x60, 0x10, 0xbd, 0xd7, 0x6a, 0x0d, 0x31, 0x35, 0x4b,
|
||||
0x60, 0x0a, 0xb3, 0x0c, 0x7a, 0x50, 0x0a, 0x71, 0x61, 0xaf, 0xe0, 0x57,
|
||||
0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x03, 0xad, 0xbd, 0x52, 0xcb,
|
||||
0xaf, 0x5e, 0x21, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x03, 0xcd, 0xbd,
|
||||
0x54, 0xcb, 0xaf, 0x5e, 0x21, 0x30, 0x59, 0xf0, 0x2b, 0xf9, 0x8c, 0x18,
|
||||
0x20, 0x00, 0x08, 0x82, 0x81, 0x06, 0x5f, 0xac, 0xe5, 0x57, 0xb2, 0x10,
|
||||
0x8c, 0x18, 0x20, 0x00, 0x08, 0x82, 0x81, 0x16, 0x5f, 0xad, 0xe5, 0x57,
|
||||
0xb2, 0x10, 0x58, 0x2d, 0xf8, 0x95, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04,
|
||||
0xc1, 0x40, 0x9b, 0xaf, 0xd7, 0xf2, 0xab, 0x5a, 0x08, 0x46, 0x0c, 0x10,
|
||||
0x00, 0x04, 0xc1, 0x40, 0xa3, 0x2f, 0xd8, 0xf2, 0xab, 0x5a, 0x08, 0xec,
|
||||
0x80, 0x03, 0xf9, 0x58, 0x11, 0x07, 0xf2, 0xb1, 0x41, 0x0e, 0xe4, 0x33,
|
||||
0x9a, 0x00, 0x53, 0xc0, 0x70, 0x44, 0x10, 0x56, 0xce, 0x37, 0xcb, 0x60,
|
||||
0x0a, 0x7b, 0x10, 0x0c, 0x47, 0x14, 0x69, 0xa5, 0x7c, 0xb3, 0x0c, 0x7d,
|
||||
0xc0, 0x07, 0x81, 0x19, 0x6b, 0x25, 0x9f, 0x59, 0x02, 0x3f, 0x18, 0x31,
|
||||
0x30, 0x00, 0x10, 0x04, 0x83, 0x27, 0xc4, 0xee, 0xeb, 0x18, 0x31, 0x30,
|
||||
0x00, 0x10, 0x04, 0x83, 0x47, 0xc4, 0x76, 0x2b, 0xb0, 0xe0, 0xad, 0xe4,
|
||||
0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x0f, 0x89, 0xf9, 0x56, 0x60,
|
||||
0x81, 0x5c, 0xc9, 0xc7, 0x02, 0xba, 0x82, 0xcf, 0x2c, 0x81, 0x1f, 0x0c,
|
||||
0x54, 0x0c, 0x0e, 0x1f, 0x08, 0x7d, 0x30, 0x1c, 0xd1, 0xc8, 0x95, 0xf2,
|
||||
0xcd, 0x32, 0x80, 0xc2, 0x1f, 0x04, 0xe6, 0xd0, 0x95, 0x7c, 0x66, 0x09,
|
||||
0x42, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x1e, 0x15, 0x03, 0xb1,
|
||||
0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x9e, 0x15, 0x23, 0xaf, 0xc0,
|
||||
0x02, 0xbc, 0x92, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x3c, 0x2d,
|
||||
0x76, 0x5e, 0x81, 0x05, 0x7b, 0x25, 0x1f, 0x0b, 0xfa, 0x0a, 0x3e, 0xb3,
|
||||
0x04, 0xa1, 0x30, 0x50, 0x31, 0x38, 0x7f, 0x20, 0x80, 0xc2, 0x70, 0x44,
|
||||
0xb5, 0x57, 0xca, 0x37, 0xcb, 0x30, 0x0a, 0xa2, 0x10, 0x98, 0xd5, 0x57,
|
||||
0xf2, 0x99, 0x25, 0x20, 0x85, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78,
|
||||
0x66, 0x2c, 0xc5, 0xae, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x78, 0x68,
|
||||
0xac, 0xbd, 0x02, 0x0b, 0x42, 0x4b, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82,
|
||||
0x60, 0xf0, 0xd8, 0x18, 0x7c, 0x05, 0x16, 0x90, 0x96, 0x7c, 0x2c, 0x30,
|
||||
0x2d, 0xf8, 0xcc, 0x12, 0x90, 0xc2, 0x40, 0xc5, 0xe0, 0x88, 0x82, 0x30,
|
||||
0x0a, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x10, 0xe5, 0x98, 0x7c, 0x4d,
|
||||
0x7d, 0x35, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x91, 0x8e, 0xcd, 0xd7,
|
||||
0xe2, 0x57, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x10, 0xed, 0x18, 0x7d,
|
||||
0x0d, 0x7f, 0x35, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x11, 0x8f, 0xe1,
|
||||
0xd7, 0xe0, 0x57, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x10, 0xf5, 0x58,
|
||||
0x7e, 0x0d, 0x7f, 0x35, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x91, 0x8f,
|
||||
0xe9, 0xd7, 0x00, 0x5a, 0xb3, 0x04, 0xa6, 0x60, 0xfe, 0x60, 0x0b, 0xf2,
|
||||
0x31, 0x7f, 0xb8, 0x05, 0xf9, 0x98, 0x3f, 0xe0, 0x82, 0x7c, 0x66, 0x09,
|
||||
0x4c, 0x61, 0xa0, 0x66, 0xd0, 0x0b, 0x36, 0x30, 0x4a, 0x41, 0x1d, 0xf0,
|
||||
0x00, 0x2e, 0xdc, 0x80, 0x21, 0x05, 0x59, 0xd0, 0x83, 0x81, 0x9a, 0x41,
|
||||
0x2f, 0xd8, 0xc0, 0x28, 0x05, 0x75, 0xc0, 0x03, 0xb8, 0x70, 0x03, 0x86,
|
||||
0x14, 0x64, 0x41, 0x0f, 0x06, 0x6a, 0x06, 0xbd, 0x60, 0x03, 0xa3, 0x14,
|
||||
0xd4, 0x01, 0x0f, 0xe0, 0xc2, 0x0d, 0x18, 0x52, 0x90, 0x05, 0x3d, 0xb0,
|
||||
0xa1, 0xaf, 0xe4, 0x63, 0x43, 0x5f, 0xc9, 0xc7, 0x86, 0xbe, 0x92, 0x8f,
|
||||
0xad, 0x47, 0x5f, 0xc9, 0x67, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10,
|
||||
0x36, 0x53, 0x31, 0x31, 0x13, 0x33, 0x1d, 0x23, 0x46, 0x0c, 0x12, 0x00,
|
||||
0x04, 0xc1, 0x00, 0x61, 0x33, 0x15, 0x13, 0x33, 0x31, 0x8b, 0xb1, 0x61,
|
||||
0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10, 0x36, 0x53, 0x31, 0x31, 0x13,
|
||||
0xb3, 0x1c, 0x13, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0x61, 0x33,
|
||||
0x15, 0x13, 0x33, 0x31, 0x83, 0xb1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
static const unsigned int texture_advanced_frag_dxil_len = 9504;
|
||||
static const unsigned int texture_advanced_frag_dxil_len = 10992;
|
||||
|
@@ -43,10 +43,12 @@ static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_RGBA = 3;
|
||||
static const float TEXTURETYPE_RGBA_PIXELART = 4;
|
||||
static const float TEXTURETYPE_PALETTE = 5;
|
||||
static const float TEXTURETYPE_NV12 = 6;
|
||||
static const float TEXTURETYPE_NV21 = 7;
|
||||
static const float TEXTURETYPE_YUV = 8;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 5;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 6;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 7;
|
||||
static const float TEXTURETYPE_NV12 = 8;
|
||||
static const float TEXTURETYPE_NV21 = 9;
|
||||
static const float TEXTURETYPE_YUV = 10;
|
||||
|
||||
static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -122,21 +124,48 @@ float3 ApplyTonemap(float3 v)
|
||||
return v;
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(PSInput input)
|
||||
float4 SamplePaletteNearest(float2 uv)
|
||||
{
|
||||
float index = texture0.Sample(sampler0, uv).r * 255;
|
||||
return texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
|
||||
}
|
||||
|
||||
// Implementation with thanks from bgolus:
|
||||
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
|
||||
float4 SamplePaletteLinear(float2 uv)
|
||||
{
|
||||
// scale & offset uvs to integer values at texel centers
|
||||
float2 uv_texels = uv * texel_size.zw + 0.5;
|
||||
|
||||
// get uvs for the center of the 4 surrounding texels by flooring
|
||||
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
|
||||
|
||||
// blend factor
|
||||
float2 uv_frac = frac(uv_texels);
|
||||
|
||||
// sample all 4 texels
|
||||
float4 texelA = SamplePaletteNearest(uv_min_max.xy);
|
||||
float4 texelB = SamplePaletteNearest(uv_min_max.xw);
|
||||
float4 texelC = SamplePaletteNearest(uv_min_max.zy);
|
||||
float4 texelD = SamplePaletteNearest(uv_min_max.zw);
|
||||
|
||||
// bilinear interpolation
|
||||
return lerp(lerp(texelA, texelB, uv_frac.y), lerp(texelC, texelD, uv_frac.y), uv_frac.x);
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(float2 uv)
|
||||
{
|
||||
// box filter size in texel units
|
||||
float2 boxSize = clamp(fwidth(input.v_uv) * texel_size.zw, 1e-5, 1);
|
||||
float2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1);
|
||||
|
||||
// scale uv by texture size to get texel coordinate
|
||||
float2 tx = input.v_uv * texel_size.zw - 0.5 * boxSize;
|
||||
float2 tx = uv * texel_size.zw - 0.5 * boxSize;
|
||||
|
||||
// compute offset for pixel-sized box filter
|
||||
float2 txOffset = smoothstep(1 - boxSize, 1, frac(tx));
|
||||
|
||||
// compute bilinear sample uv coordinates
|
||||
float2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy;
|
||||
|
||||
return uv;
|
||||
return (floor(tx) + 0.5 + txOffset) * texel_size.xy;
|
||||
}
|
||||
|
||||
float4 GetInputColor(PSInput input)
|
||||
@@ -148,16 +177,20 @@ float4 GetInputColor(PSInput input)
|
||||
} else if (texture_type == TEXTURETYPE_RGBA) {
|
||||
rgba = texture0.Sample(sampler0, input.v_uv);
|
||||
} else if (texture_type == TEXTURETYPE_RGBA_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input);
|
||||
float2 uv = GetPixelArtUV(input.v_uv);
|
||||
rgba = texture0.SampleGrad(sampler0, uv, ddx(input.v_uv), ddy(input.v_uv));
|
||||
} else if (texture_type == TEXTURETYPE_RGB) {
|
||||
rgba = float4(texture0.Sample(sampler0, input.v_uv).rgb, 1.0);
|
||||
} else if (texture_type == TEXTURETYPE_RGB_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input);
|
||||
float2 uv = GetPixelArtUV(input.v_uv);
|
||||
rgba = float4(texture0.SampleGrad(sampler0, uv, ddx(input.v_uv), ddy(input.v_uv)).rgb, 1.0);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE) {
|
||||
float index = texture0.Sample(sampler0, input.v_uv).r * 255;
|
||||
rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_NEAREST) {
|
||||
rgba = SamplePaletteNearest(input.v_uv);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_LINEAR) {
|
||||
rgba = SamplePaletteLinear(input.v_uv);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input.v_uv);
|
||||
rgba = SamplePaletteLinear(uv);
|
||||
} else if (texture_type == TEXTURETYPE_NV12) {
|
||||
float3 yuv;
|
||||
yuv.x = texture0.Sample(sampler0, input.v_uv).r;
|
||||
@@ -193,7 +226,7 @@ float4 GetInputColor(PSInput input)
|
||||
// Error!
|
||||
rgba.r = 1.0;
|
||||
rgba.g = 0.0;
|
||||
rgba.b = 0.0;
|
||||
rgba.b = 1.0;
|
||||
rgba.a = 1.0;
|
||||
}
|
||||
return rgba;
|
||||
|
1047
src/render/gpu/shaders/texture_advanced.frag.msl.h
generated
1047
src/render/gpu/shaders/texture_advanced.frag.msl.h
generated
File diff suppressed because it is too large
Load Diff
2158
src/render/gpu/shaders/texture_advanced.frag.spv.h
generated
2158
src/render/gpu/shaders/texture_advanced.frag.spv.h
generated
File diff suppressed because it is too large
Load Diff
@@ -1333,10 +1333,12 @@ static const float TONEMAP_CHROME = 2;
|
||||
//static const float TEXTURETYPE_NONE = 0;
|
||||
static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_PALETTE = 3;
|
||||
static const float TEXTURETYPE_NV12 = 4;
|
||||
static const float TEXTURETYPE_NV21 = 5;
|
||||
static const float TEXTURETYPE_YUV = 6;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
|
||||
static const float TEXTURETYPE_NV12 = 6;
|
||||
static const float TEXTURETYPE_NV21 = 7;
|
||||
static const float TEXTURETYPE_YUV = 8;
|
||||
|
||||
//static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -1393,7 +1395,20 @@ static void SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand
|
||||
if (texture) {
|
||||
switch (texture->format) {
|
||||
case SDL_PIXELFORMAT_INDEX8:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE;
|
||||
switch (cmd->data.draw.texture_scale_mode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_NEAREST;
|
||||
break;
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_LINEAR;
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
|
||||
break;
|
||||
default:
|
||||
SDL_assert(!"Unknown scale mode");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SDL_PIXELFORMAT_YV12:
|
||||
case SDL_PIXELFORMAT_IYUV:
|
||||
@@ -1411,10 +1426,6 @@ static void SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand
|
||||
default:
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
constants->texture_type = TEXTURETYPE_RGB_PIXELART;
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
} else {
|
||||
constants->texture_type = TEXTURETYPE_RGB;
|
||||
}
|
||||
@@ -1432,6 +1443,15 @@ static void SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand
|
||||
break;
|
||||
}
|
||||
|
||||
if (constants->texture_type == TEXTURETYPE_PALETTE_LINEAR ||
|
||||
constants->texture_type == TEXTURETYPE_PALETTE_PIXELART ||
|
||||
constants->texture_type == TEXTURETYPE_RGB_PIXELART) {
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
}
|
||||
|
||||
constants->sdr_white_point = texture->SDR_white_point;
|
||||
|
||||
if (renderer->target) {
|
||||
@@ -1539,7 +1559,7 @@ static bool SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, c
|
||||
return true;
|
||||
}
|
||||
|
||||
static id<MTLSamplerState> GetSampler(SDL3METAL_RenderData *data, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
static id<MTLSamplerState> GetSampler(SDL3METAL_RenderData *data, SDL_PixelFormat format, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
{
|
||||
NSNumber *key = [NSNumber numberWithInteger:RENDER_SAMPLER_HASHKEY(scale_mode, address_u, address_v)];
|
||||
id<MTLSamplerState> mtlsampler = data.mtlsamplers[key];
|
||||
@@ -1553,8 +1573,14 @@ static id<MTLSamplerState> GetSampler(SDL3METAL_RenderData *data, SDL_ScaleMode
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART: // Uses linear sampling
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
if (format == SDL_PIXELFORMAT_INDEX8) {
|
||||
// We'll do linear sampling in the shader
|
||||
samplerdesc.minFilter = MTLSamplerMinMagFilterNearest;
|
||||
samplerdesc.magFilter = MTLSamplerMinMagFilterNearest;
|
||||
} else {
|
||||
samplerdesc.minFilter = MTLSamplerMinMagFilterLinear;
|
||||
samplerdesc.magFilter = MTLSamplerMinMagFilterLinear;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
SDL_SetError("Unknown scale mode: %d", scale_mode);
|
||||
@@ -1624,7 +1650,7 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, c
|
||||
if (cmd->data.draw.texture_scale_mode != statecache->texture_scale_mode ||
|
||||
cmd->data.draw.texture_address_mode_u != statecache->texture_address_mode_u ||
|
||||
cmd->data.draw.texture_address_mode_v != statecache->texture_address_mode_v) {
|
||||
id<MTLSamplerState> mtlsampler = GetSampler(data, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
id<MTLSamplerState> mtlsampler = GetSampler(data, texture->format, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
if (mtlsampler == nil) {
|
||||
return false;
|
||||
}
|
||||
@@ -1636,7 +1662,7 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, c
|
||||
}
|
||||
if (texture->palette) {
|
||||
if (!statecache->texture_palette) {
|
||||
id<MTLSamplerState> mtlsampler = GetSampler(data, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
id<MTLSamplerState> mtlsampler = GetSampler(data, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
if (mtlsampler == nil) {
|
||||
return false;
|
||||
}
|
||||
|
@@ -13,10 +13,12 @@ using namespace metal;
|
||||
#define TEXTURETYPE_NONE 0
|
||||
#define TEXTURETYPE_RGB 1
|
||||
#define TEXTURETYPE_RGB_PIXELART 2
|
||||
#define TEXTURETYPE_PALETTE 3
|
||||
#define TEXTURETYPE_NV12 4
|
||||
#define TEXTURETYPE_NV21 5
|
||||
#define TEXTURETYPE_YUV 6
|
||||
#define TEXTURETYPE_PALETTE_NEAREST 3
|
||||
#define TEXTURETYPE_PALETTE_LINEAR 4
|
||||
#define TEXTURETYPE_PALETTE_PIXELART 5
|
||||
#define TEXTURETYPE_NV12 6
|
||||
#define TEXTURETYPE_NV21 7
|
||||
#define TEXTURETYPE_YUV 8
|
||||
|
||||
#define INPUTTYPE_UNSPECIFIED 0
|
||||
#define INPUTTYPE_SRGB 1
|
||||
@@ -111,13 +113,42 @@ float3 ApplyTonemap(float3 v, float input_type, float tonemap_method, float tone
|
||||
return v;
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(float2 texcoord, float4 texel_size)
|
||||
float4 SamplePaletteNearest(texture2d<float> tex0, texture2d<float> tex1, sampler s0, sampler s1, float2 uv)
|
||||
{
|
||||
float index = tex0.sample(s0, uv).r * 255;
|
||||
return tex1.sample(s1, float2((index + 0.5) / 256, 0.5));
|
||||
}
|
||||
|
||||
// Implementation with thanks from bgolus:
|
||||
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
|
||||
float4 SamplePaletteLinear(texture2d<float> tex0, texture2d<float> tex1, sampler s0, sampler s1, float2 uv, float4 texel_size)
|
||||
{
|
||||
// scale & offset uvs to integer values at texel centers
|
||||
float2 uv_texels = uv * texel_size.zw + 0.5;
|
||||
|
||||
// get uvs for the center of the 4 surrounding texels by flooring
|
||||
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
|
||||
|
||||
// blend factor
|
||||
float2 uv_frac = fract(uv_texels);
|
||||
|
||||
// sample all 4 texels
|
||||
float4 texelA = SamplePaletteNearest(tex0, tex1, s0, s1, uv_min_max.xy);
|
||||
float4 texelB = SamplePaletteNearest(tex0, tex1, s0, s1, uv_min_max.xw);
|
||||
float4 texelC = SamplePaletteNearest(tex0, tex1, s0, s1, uv_min_max.zy);
|
||||
float4 texelD = SamplePaletteNearest(tex0, tex1, s0, s1, uv_min_max.zw);
|
||||
|
||||
// bilinear interpolation
|
||||
return mix(mix(texelA, texelB, uv_frac.y), mix(texelC, texelD, uv_frac.y), uv_frac.x);
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(float2 uv, float4 texel_size)
|
||||
{
|
||||
// box filter size in texel units
|
||||
float2 boxSize = clamp(fwidth(texcoord) * texel_size.zw, 1e-5, 1);
|
||||
float2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1);
|
||||
|
||||
// scale uv by texture size to get texel coordinate
|
||||
float2 tx = texcoord * texel_size.zw - 0.5 * boxSize;
|
||||
float2 tx = uv * texel_size.zw - 0.5 * boxSize;
|
||||
|
||||
// compute offset for pixel-sized box filter
|
||||
float2 txOffset = smoothstep(1 - boxSize, 1, fract(tx));
|
||||
@@ -269,9 +300,13 @@ fragment float4 SDL_Palette_fragment(CopyVertexOutput vert [[stage_in]],
|
||||
{
|
||||
float4 rgba;
|
||||
|
||||
if (c.texture_type == TEXTURETYPE_PALETTE) {
|
||||
float index = tex0.sample(s0, vert.texcoord).r * 255;
|
||||
rgba = tex1.sample(s1, float2((index + 0.5) / 256, 0.5));
|
||||
if (c.texture_type == TEXTURETYPE_PALETTE_NEAREST) {
|
||||
rgba = SamplePaletteNearest(tex0, tex1, s0, s1, vert.texcoord);
|
||||
} else if (c.texture_type == TEXTURETYPE_PALETTE_LINEAR) {
|
||||
rgba = SamplePaletteLinear(tex0, tex1, s0, s1, vert.texcoord, c.texel_size);
|
||||
} else if (c.texture_type == TEXTURETYPE_PALETTE_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(vert.texcoord, c.texel_size);
|
||||
rgba = SamplePaletteLinear(tex0, tex1, s0, s1, uv, c.texel_size);
|
||||
} else {
|
||||
// Unexpected texture type, use magenta error color
|
||||
rgba = float4(1.0, 0.0, 1.0, 1.0);
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -448,7 +448,7 @@ static bool convert_format(Uint32 pixel_format, GLint *internalFormat, GLenum *f
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool SetTextureScaleMode(GL_RenderData *data, GLenum textype, SDL_ScaleMode scaleMode)
|
||||
static bool SetTextureScaleMode(GL_RenderData *data, GLenum textype, SDL_PixelFormat format, SDL_ScaleMode scaleMode)
|
||||
{
|
||||
switch (scaleMode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
@@ -457,8 +457,14 @@ static bool SetTextureScaleMode(GL_RenderData *data, GLenum textype, SDL_ScaleMo
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART: // Uses linear sampling
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
if (format == SDL_PIXELFORMAT_INDEX8) {
|
||||
// We'll do linear sampling in the shader
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
} else {
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return SDL_SetError("Unknown texture scale mode: %d", scaleMode);
|
||||
@@ -503,7 +509,7 @@ static bool GL_CreatePalette(SDL_Renderer *renderer, SDL_TexturePalette *palette
|
||||
if (!GL_CheckError("glTexImage2D()", renderer)) {
|
||||
return false;
|
||||
}
|
||||
SetTextureScaleMode(data, textype, SDL_SCALEMODE_NEAREST);
|
||||
SetTextureScaleMode(data, textype, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST);
|
||||
SetTextureAddressMode(data, textype, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
return true;
|
||||
}
|
||||
@@ -638,7 +644,7 @@ static bool GL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_P
|
||||
data->texture_address_mode_v = SDL_TEXTURE_ADDRESS_CLAMP;
|
||||
renderdata->glEnable(textype);
|
||||
renderdata->glBindTexture(textype, data->texture);
|
||||
SetTextureScaleMode(renderdata, textype, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, format, textype, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, textype, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
#ifdef SDL_PLATFORM_MACOS
|
||||
#ifndef GL_TEXTURE_STORAGE_HINT_APPLE
|
||||
@@ -674,7 +680,7 @@ static bool GL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_P
|
||||
if (!GL_CheckError("glTexImage2D()", renderer)) {
|
||||
return false;
|
||||
}
|
||||
SetTextureScaleMode(renderdata, textype, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, textype, texture->format, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, textype, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
|
||||
#ifdef SDL_HAVE_YUV
|
||||
@@ -698,14 +704,14 @@ static bool GL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_P
|
||||
renderdata->glBindTexture(textype, data->utexture);
|
||||
renderdata->glTexImage2D(textype, 0, internalFormat, (texture_w + 1) / 2,
|
||||
(texture_h + 1) / 2, 0, format, type, NULL);
|
||||
SetTextureScaleMode(renderdata, textype, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, textype, texture->format, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, textype, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
SDL_SetNumberProperty(props, SDL_PROP_TEXTURE_OPENGL_TEXTURE_U_NUMBER, data->utexture);
|
||||
|
||||
renderdata->glBindTexture(textype, data->vtexture);
|
||||
renderdata->glTexImage2D(textype, 0, internalFormat, (texture_w + 1) / 2,
|
||||
(texture_h + 1) / 2, 0, format, type, NULL);
|
||||
SetTextureScaleMode(renderdata, textype, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, textype, texture->format, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, textype, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
SDL_SetNumberProperty(props, SDL_PROP_TEXTURE_OPENGL_TEXTURE_V_NUMBER, data->vtexture);
|
||||
}
|
||||
@@ -723,24 +729,24 @@ static bool GL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL_P
|
||||
renderdata->glBindTexture(textype, data->utexture);
|
||||
renderdata->glTexImage2D(textype, 0, GL_LUMINANCE_ALPHA, (texture_w + 1) / 2,
|
||||
(texture_h + 1) / 2, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, NULL);
|
||||
SetTextureScaleMode(renderdata, textype, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, textype, texture->format, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, textype, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
SDL_SetNumberProperty(props, SDL_PROP_TEXTURE_OPENGL_TEXTURE_UV_NUMBER, data->utexture);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (texture->format == SDL_PIXELFORMAT_INDEX8) {
|
||||
data->shader = SHADER_PALETTE;
|
||||
data->shader = SHADER_PALETTE_NEAREST;
|
||||
} else if (texture->format == SDL_PIXELFORMAT_ABGR8888 || texture->format == SDL_PIXELFORMAT_ARGB8888) {
|
||||
data->shader = SHADER_RGBA;
|
||||
} else {
|
||||
data->shader = SHADER_RGB;
|
||||
}
|
||||
|
||||
data->texel_size[0] = 1.0f / texture->w;
|
||||
data->texel_size[1] = 1.0f / texture->h;
|
||||
data->texel_size[2] = texture->w;
|
||||
data->texel_size[3] = texture->h;
|
||||
data->texel_size[0] = 1.0f / data->texel_size[2];
|
||||
data->texel_size[1] = 1.0f / data->texel_size[3];
|
||||
|
||||
#ifdef SDL_HAVE_YUV
|
||||
if (data->yuv || data->nv12) {
|
||||
@@ -1199,20 +1205,31 @@ static bool SetCopyState(GL_RenderData *data, const SDL_RenderCommand *cmd)
|
||||
GL_Shader shader = texturedata->shader;
|
||||
const float *shader_params = texturedata->shader_params;
|
||||
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
switch (shader) {
|
||||
case SHADER_PALETTE_NEAREST:
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_LINEAR) {
|
||||
shader = SHADER_PALETTE_LINEAR;
|
||||
shader_params = texturedata->texel_size;
|
||||
} else if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
shader = SHADER_PALETTE_PIXELART;
|
||||
shader_params = texturedata->texel_size;
|
||||
}
|
||||
break;
|
||||
case SHADER_RGB:
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
shader = SHADER_RGB_PIXELART;
|
||||
shader_params = texturedata->texel_size;
|
||||
}
|
||||
break;
|
||||
case SHADER_RGBA:
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
shader = SHADER_RGBA_PIXELART;
|
||||
shader_params = texturedata->texel_size;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
SetDrawState(data, cmd, shader, shader_params);
|
||||
|
||||
if (texture != data->drawstate.texture) {
|
||||
@@ -1246,19 +1263,19 @@ static bool SetCopyState(GL_RenderData *data, const SDL_RenderCommand *cmd)
|
||||
#ifdef SDL_HAVE_YUV
|
||||
if (texturedata->yuv) {
|
||||
data->glActiveTextureARB(GL_TEXTURE2);
|
||||
if (!SetTextureScaleMode(data, textype, cmd->data.draw.texture_scale_mode)) {
|
||||
if (!SetTextureScaleMode(data, textype, texture->format, cmd->data.draw.texture_scale_mode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data->glActiveTextureARB(GL_TEXTURE1);
|
||||
if (!SetTextureScaleMode(data, textype, cmd->data.draw.texture_scale_mode)) {
|
||||
if (!SetTextureScaleMode(data, textype, texture->format, cmd->data.draw.texture_scale_mode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data->glActiveTextureARB(GL_TEXTURE0);
|
||||
} else if (texturedata->nv12) {
|
||||
data->glActiveTextureARB(GL_TEXTURE1);
|
||||
if (!SetTextureScaleMode(data, textype, cmd->data.draw.texture_scale_mode)) {
|
||||
if (!SetTextureScaleMode(data, textype, texture->format, cmd->data.draw.texture_scale_mode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1267,13 +1284,13 @@ static bool SetCopyState(GL_RenderData *data, const SDL_RenderCommand *cmd)
|
||||
#endif
|
||||
if (texture->palette) {
|
||||
data->glActiveTextureARB(GL_TEXTURE1);
|
||||
if (!SetTextureScaleMode(data, textype, SDL_SCALEMODE_NEAREST)) {
|
||||
if (!SetTextureScaleMode(data, textype, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data->glActiveTextureARB(GL_TEXTURE0);
|
||||
}
|
||||
if (!SetTextureScaleMode(data, textype, cmd->data.draw.texture_scale_mode)) {
|
||||
if (!SetTextureScaleMode(data, textype, texture->format, cmd->data.draw.texture_scale_mode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -84,6 +84,73 @@ struct GL_ShaderContext
|
||||
" v_texCoord = vec2(gl_MultiTexCoord0);\n" \
|
||||
"}" \
|
||||
|
||||
#define RGB_SHADER_PROLOGUE \
|
||||
"varying vec4 v_color;\n" \
|
||||
"varying vec2 v_texCoord;\n" \
|
||||
"uniform sampler2D tex0;\n" \
|
||||
"\n"
|
||||
|
||||
#define RGB_PIXELART_SHADER_PROLOGUE \
|
||||
"varying vec4 v_color;\n" \
|
||||
"varying vec2 v_texCoord;\n" \
|
||||
"uniform sampler2D tex0;\n" \
|
||||
"uniform vec4 texel_size; // texel size (xy: texel size, zw: texture dimensions)\n" \
|
||||
"\n"
|
||||
|
||||
#define PALETTE_SHADER_PROLOGUE \
|
||||
"varying vec4 v_color;\n" \
|
||||
"varying vec2 v_texCoord;\n" \
|
||||
"uniform sampler2D tex0;\n" \
|
||||
"uniform sampler2D tex1;\n" \
|
||||
"uniform vec4 texel_size; // texel size (xy: texel size, zw: texture dimensions)\n" \
|
||||
"\n"
|
||||
|
||||
// Implementation with thanks from bgolus:
|
||||
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
|
||||
#define PALETTE_SHADER_FUNCTIONS \
|
||||
"vec4 SamplePaletteNearest(vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" float index = texture2D(tex0, uv).r * 255.0;\n" \
|
||||
" return texture2D(tex1, vec2((index + 0.5) / 256.0, 0.5));\n" \
|
||||
"}\n" \
|
||||
"\n" \
|
||||
"vec4 SamplePaletteLinear(vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" // scale & offset uvs to integer values at texel centers\n" \
|
||||
" vec2 uv_texels = uv * texel_size.zw + 0.5;\n" \
|
||||
"\n" \
|
||||
" // get uvs for the center of the 4 surrounding texels by flooring\n" \
|
||||
" vec4 uv_min_max = vec4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);\n" \
|
||||
"\n" \
|
||||
" // blend factor\n" \
|
||||
" vec2 uv_frac = fract(uv_texels);\n" \
|
||||
"\n" \
|
||||
" // sample all 4 texels\n" \
|
||||
" vec4 texelA = SamplePaletteNearest(uv_min_max.xy);\n" \
|
||||
" vec4 texelB = SamplePaletteNearest(uv_min_max.xw);\n" \
|
||||
" vec4 texelC = SamplePaletteNearest(uv_min_max.zy);\n" \
|
||||
" vec4 texelD = SamplePaletteNearest(uv_min_max.zw);\n" \
|
||||
"\n" \
|
||||
" // bilinear interpolation\n" \
|
||||
" return mix(mix(texelA, texelB, uv_frac.y), mix(texelC, texelD, uv_frac.y), uv_frac.x);\n" \
|
||||
"}\n" \
|
||||
"\n"
|
||||
|
||||
#define PIXELART_SHADER_FUNCTIONS \
|
||||
"vec2 GetPixelArtUV(vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" vec2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1.0);\n" \
|
||||
" vec2 tx = uv * texel_size.zw - 0.5 * boxSize;\n" \
|
||||
" vec2 txOffset = smoothstep(vec2(1.0) - boxSize, vec2(1.0), fract(tx));\n" \
|
||||
" return (floor(tx) + 0.5 + txOffset) * texel_size.xy;\n" \
|
||||
"}\n" \
|
||||
"\n" \
|
||||
"vec4 GetPixelArtSample(vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" return textureGrad(tex0, GetPixelArtUV(uv), dFdx(v_texCoord), dFdy(v_texCoord));\n" \
|
||||
"}\n" \
|
||||
"\n" \
|
||||
|
||||
#define YUV_SHADER_PROLOGUE \
|
||||
"varying vec4 v_color;\n" \
|
||||
"varying vec2 v_texCoord;\n" \
|
||||
@@ -260,21 +327,50 @@ static struct {
|
||||
NULL
|
||||
},
|
||||
|
||||
// SHADER_PALETTE
|
||||
// SHADER_PALETTE_NEAREST
|
||||
{
|
||||
// vertex shader
|
||||
TEXTURE_VERTEX_SHADER,
|
||||
// fragment shader
|
||||
"varying vec4 v_color;\n"
|
||||
"varying vec2 v_texCoord;\n"
|
||||
"uniform sampler2D tex0;\n"
|
||||
"uniform sampler2D tex1;\n"
|
||||
PALETTE_SHADER_PROLOGUE
|
||||
PALETTE_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" float index = texture2D(tex0, v_texCoord).r * 255.0;\n"
|
||||
" gl_FragColor = texture2D(tex1, vec2((index + 0.5) / 256.0, 0.5));\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
" gl_FragColor = SamplePaletteNearest(v_texCoord) * v_color;\n"
|
||||
"}",
|
||||
// fragment version
|
||||
NULL
|
||||
},
|
||||
|
||||
// SHADER_PALETTE_LINEAR
|
||||
{
|
||||
// vertex shader
|
||||
TEXTURE_VERTEX_SHADER,
|
||||
// fragment shader
|
||||
PALETTE_SHADER_PROLOGUE
|
||||
PALETTE_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" gl_FragColor = SamplePaletteLinear(v_texCoord) * v_color;\n"
|
||||
"}",
|
||||
// fragment version
|
||||
NULL
|
||||
},
|
||||
|
||||
// SHADER_PALETTE_PIXELART
|
||||
{
|
||||
// vertex shader
|
||||
TEXTURE_VERTEX_SHADER,
|
||||
// fragment shader
|
||||
PALETTE_SHADER_PROLOGUE
|
||||
PALETTE_SHADER_FUNCTIONS
|
||||
PIXELART_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" gl_FragColor = SamplePaletteLinear(GetPixelArtUV(v_texCoord)) * v_color;\n"
|
||||
"}",
|
||||
// fragment version
|
||||
"#version 130\n"
|
||||
@@ -285,10 +381,7 @@ static struct {
|
||||
// vertex shader
|
||||
TEXTURE_VERTEX_SHADER,
|
||||
// fragment shader
|
||||
"varying vec4 v_color;\n"
|
||||
"varying vec2 v_texCoord;\n"
|
||||
"uniform sampler2D tex0;\n"
|
||||
"uniform vec4 texel_size; // texel size (xy: texel size, zw: texture dimensions)\n"
|
||||
RGB_SHADER_PROLOGUE
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
@@ -300,14 +393,30 @@ static struct {
|
||||
NULL
|
||||
},
|
||||
|
||||
// SHADER_RGB_PIXELART
|
||||
{
|
||||
// vertex shader
|
||||
TEXTURE_VERTEX_SHADER,
|
||||
// fragment shader
|
||||
RGB_PIXELART_SHADER_PROLOGUE
|
||||
PIXELART_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" gl_FragColor = GetPixelArtSample(v_texCoord);\n"
|
||||
" gl_FragColor.a = 1.0;\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}",
|
||||
// fragment version
|
||||
"#version 130\n"
|
||||
},
|
||||
|
||||
// SHADER_RGBA
|
||||
{
|
||||
// vertex shader
|
||||
TEXTURE_VERTEX_SHADER,
|
||||
// fragment shader
|
||||
"varying vec4 v_color;\n"
|
||||
"varying vec2 v_texCoord;\n"
|
||||
"uniform sampler2D tex0;\n"
|
||||
RGB_SHADER_PROLOGUE
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
@@ -317,47 +426,17 @@ static struct {
|
||||
NULL
|
||||
},
|
||||
|
||||
// SHADER_RGB_PIXELART
|
||||
{
|
||||
// vertex shader
|
||||
TEXTURE_VERTEX_SHADER,
|
||||
// fragment shader
|
||||
"varying vec4 v_color;\n"
|
||||
"varying vec2 v_texCoord;\n"
|
||||
"uniform sampler2D tex0;\n"
|
||||
"uniform vec4 texel_size;\n"
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" vec2 boxSize = clamp(fwidth(v_texCoord) * texel_size.zw, 1e-5, 1.0);\n"
|
||||
" vec2 tx = v_texCoord * texel_size.zw - 0.5 * boxSize;\n"
|
||||
" vec2 txOffset = smoothstep(vec2(1.0) - boxSize, vec2(1.0), fract(tx));\n"
|
||||
" vec2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy;\n"
|
||||
" gl_FragColor = textureGrad(tex0, uv, dFdx(v_texCoord), dFdy(v_texCoord));\n"
|
||||
" gl_FragColor.a = 1.0;\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}",
|
||||
// fragment version
|
||||
"#version 130\n"
|
||||
},
|
||||
|
||||
// SHADER_RGBA_PIXELART
|
||||
{
|
||||
// vertex shader
|
||||
TEXTURE_VERTEX_SHADER,
|
||||
// fragment shader
|
||||
"varying vec4 v_color;\n"
|
||||
"varying vec2 v_texCoord;\n"
|
||||
"uniform sampler2D tex0;\n"
|
||||
"uniform vec4 texel_size;\n"
|
||||
RGB_PIXELART_SHADER_PROLOGUE
|
||||
PIXELART_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" vec2 boxSize = clamp(fwidth(v_texCoord) * texel_size.zw, 1e-5, 1.0);\n"
|
||||
" vec2 tx = v_texCoord * texel_size.zw - 0.5 * boxSize;\n"
|
||||
" vec2 txOffset = smoothstep(vec2(1.0) - boxSize, vec2(1.0), fract(tx));\n"
|
||||
" vec2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy;\n"
|
||||
" gl_FragColor = textureGrad(tex0, uv, dFdx(v_texCoord), dFdy(v_texCoord));\n"
|
||||
" gl_FragColor = GetPixelArtSample(v_texCoord);\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}",
|
||||
// fragment version
|
||||
@@ -607,7 +686,9 @@ void GL_SelectShader(GL_ShaderContext *ctx, GL_Shader shader, const float *shade
|
||||
ctx->glUseProgramObjectARB(program);
|
||||
|
||||
if (shader_params && shader_params != ctx->shader_params[shader]) {
|
||||
if (shader == SHADER_RGB_PIXELART ||
|
||||
if (shader == SHADER_PALETTE_LINEAR ||
|
||||
shader == SHADER_PALETTE_PIXELART ||
|
||||
shader == SHADER_RGB_PIXELART ||
|
||||
shader == SHADER_RGBA_PIXELART) {
|
||||
location = ctx->glGetUniformLocationARB(program, "texel_size");
|
||||
if (location >= 0) {
|
||||
|
@@ -31,10 +31,12 @@ typedef enum
|
||||
SHADER_INVALID = -1,
|
||||
SHADER_NONE,
|
||||
SHADER_SOLID,
|
||||
SHADER_PALETTE,
|
||||
SHADER_PALETTE_NEAREST,
|
||||
SHADER_PALETTE_LINEAR,
|
||||
SHADER_PALETTE_PIXELART,
|
||||
SHADER_RGB,
|
||||
SHADER_RGBA,
|
||||
SHADER_RGB_PIXELART,
|
||||
SHADER_RGBA,
|
||||
SHADER_RGBA_PIXELART,
|
||||
#ifdef SDL_HAVE_YUV
|
||||
SHADER_YUV,
|
||||
|
@@ -521,7 +521,7 @@ static bool GLES2_CacheShader(GLES2_RenderData *data, GLES2_ShaderType type, GLe
|
||||
GLuint id = 0;
|
||||
GLint compileSuccessful = GL_FALSE;
|
||||
int attempt, num_src;
|
||||
const GLchar *shader_src_list[3];
|
||||
const GLchar *shader_src_list[4];
|
||||
const GLchar *shader_body = GLES2_GetShader(type);
|
||||
|
||||
if (!shader_body) {
|
||||
@@ -531,6 +531,9 @@ static bool GLES2_CacheShader(GLES2_RenderData *data, GLES2_ShaderType type, GLe
|
||||
for (attempt = 0; attempt < 2 && !compileSuccessful; ++attempt) {
|
||||
num_src = 0;
|
||||
|
||||
#ifdef OPENGLES_300
|
||||
shader_src_list[num_src++] = "#version 300 es\n";
|
||||
#endif
|
||||
shader_src_list[num_src++] = GLES2_GetShaderPrologue(type);
|
||||
|
||||
if (shader_type == GL_FRAGMENT_SHADER) {
|
||||
@@ -634,7 +637,22 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
|
||||
ftype = GLES2_SHADER_FRAGMENT_SOLID;
|
||||
break;
|
||||
case GLES2_IMAGESOURCE_TEXTURE_INDEX8:
|
||||
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE;
|
||||
switch (scale_mode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_NEAREST;
|
||||
break;
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_LINEAR;
|
||||
shader_params = tdata->texel_size;
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART:
|
||||
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_PIXELART;
|
||||
shader_params = tdata->texel_size;
|
||||
break;
|
||||
default:
|
||||
SDL_assert(!"Unknown scale mode");
|
||||
goto fault;
|
||||
}
|
||||
break;
|
||||
case GLES2_IMAGESOURCE_TEXTURE_ABGR:
|
||||
if (scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
@@ -706,6 +724,7 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
|
||||
ftype = GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES;
|
||||
break;
|
||||
default:
|
||||
SDL_assert(!"Unknown image source");
|
||||
goto fault;
|
||||
}
|
||||
|
||||
@@ -767,7 +786,7 @@ static bool GLES2_SelectProgram(GLES2_RenderData *data, SDL_Texture *texture, GL
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (ftype >= GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_PIXELART) {
|
||||
if (shader_params) {
|
||||
data->glUniform4f(program->uniform_locations[GLES2_UNIFORM_TEXEL_SIZE], shader_params[0], shader_params[1], shader_params[2], shader_params[3]);
|
||||
}
|
||||
program->shader_params = shader_params;
|
||||
@@ -1081,7 +1100,7 @@ static bool SetDrawState(GLES2_RenderData *data, const SDL_RenderCommand *cmd, c
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool SetTextureScaleMode(GLES2_RenderData *data, GLenum textype, SDL_ScaleMode scaleMode)
|
||||
static bool SetTextureScaleMode(GLES2_RenderData *data, GLenum textype, SDL_PixelFormat format, SDL_ScaleMode scaleMode)
|
||||
{
|
||||
switch (scaleMode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
@@ -1089,14 +1108,26 @@ static bool SetTextureScaleMode(GLES2_RenderData *data, GLenum textype, SDL_Scal
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
break;
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
if (format == SDL_PIXELFORMAT_INDEX8) {
|
||||
// We'll do linear sampling in the shader
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
} else {
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
}
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART:
|
||||
#ifdef OPENGLES_300 // Required for the pixel art shader
|
||||
#ifdef OPENGLES_300
|
||||
if (format == SDL_PIXELFORMAT_INDEX8) {
|
||||
// We'll do linear sampling in the shader
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
} else {
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
#else
|
||||
}
|
||||
#else // We don't have the functions we need, fall back to nearest sampling
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
data->glTexParameteri(textype, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
#endif
|
||||
@@ -1291,19 +1322,19 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
||||
#ifdef SDL_HAVE_YUV
|
||||
if (tdata->yuv) {
|
||||
data->glActiveTexture(GL_TEXTURE2);
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, cmd->data.draw.texture_scale_mode)) {
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, texture->format, cmd->data.draw.texture_scale_mode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data->glActiveTexture(GL_TEXTURE1);
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, cmd->data.draw.texture_scale_mode)) {
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, texture->format, cmd->data.draw.texture_scale_mode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data->glActiveTexture(GL_TEXTURE0);
|
||||
} else if (tdata->nv12) {
|
||||
data->glActiveTexture(GL_TEXTURE1);
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, cmd->data.draw.texture_scale_mode)) {
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, texture->format, cmd->data.draw.texture_scale_mode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1312,13 +1343,13 @@ static bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, v
|
||||
#endif
|
||||
if (texture->palette) {
|
||||
data->glActiveTexture(GL_TEXTURE1);
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, SDL_SCALEMODE_NEAREST)) {
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data->glActiveTexture(GL_TEXTURE0);
|
||||
}
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, cmd->data.draw.texture_scale_mode)) {
|
||||
if (!SetTextureScaleMode(data, tdata->texture_type, texture->format, cmd->data.draw.texture_scale_mode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1654,7 +1685,7 @@ static bool GLES2_CreatePalette(SDL_Renderer *renderer, SDL_TexturePalette *pale
|
||||
if (!GL_CheckError("glTexImage2D()", renderer)) {
|
||||
return false;
|
||||
}
|
||||
SetTextureScaleMode(data, GL_TEXTURE_2D, SDL_SCALEMODE_NEAREST);
|
||||
SetTextureScaleMode(data, GL_TEXTURE_2D, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST);
|
||||
SetTextureAddressMode(data, GL_TEXTURE_2D, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
return true;
|
||||
}
|
||||
@@ -1778,10 +1809,10 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
||||
// Allocate the texture
|
||||
GL_CheckError("", renderer);
|
||||
|
||||
data->texel_size[0] = 1.0f / texture->w;
|
||||
data->texel_size[1] = 1.0f / texture->h;
|
||||
data->texel_size[2] = texture->w;
|
||||
data->texel_size[3] = texture->h;
|
||||
data->texel_size[0] = 1.0f / data->texel_size[2];
|
||||
data->texel_size[1] = 1.0f / data->texel_size[3];
|
||||
|
||||
#ifdef SDL_HAVE_YUV
|
||||
if (data->yuv) {
|
||||
@@ -1804,7 +1835,7 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
||||
SDL_free(data);
|
||||
return false;
|
||||
}
|
||||
SetTextureScaleMode(renderdata, data->texture_type, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, data->texture_type, texture->format, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, data->texture_type, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
SDL_SetNumberProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_V_NUMBER, data->texture_v);
|
||||
|
||||
@@ -1827,7 +1858,7 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
||||
SDL_free(data);
|
||||
return false;
|
||||
}
|
||||
SetTextureScaleMode(renderdata, data->texture_type, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, data->texture_type, texture->format, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, data->texture_type, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
SDL_SetNumberProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_U_NUMBER, data->texture_u);
|
||||
|
||||
@@ -1856,7 +1887,7 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
||||
SDL_free(data);
|
||||
return false;
|
||||
}
|
||||
SetTextureScaleMode(renderdata, data->texture_type, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, data->texture_type, texture->format, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, data->texture_type, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
SDL_SetNumberProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_UV_NUMBER, data->texture_u);
|
||||
|
||||
@@ -1888,7 +1919,7 @@ static bool GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
|
||||
return false;
|
||||
}
|
||||
}
|
||||
SetTextureScaleMode(renderdata, data->texture_type, data->texture_scale_mode);
|
||||
SetTextureScaleMode(renderdata, data->texture_type, texture->format, data->texture_scale_mode);
|
||||
SetTextureAddressMode(renderdata, data->texture_type, data->texture_address_mode_u, data->texture_address_mode_v);
|
||||
SDL_SetNumberProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_NUMBER, data->texture);
|
||||
SDL_SetNumberProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER, data->texture_type);
|
||||
|
@@ -88,12 +88,6 @@ static const char GLES2_Fragment_Solid[] =
|
||||
"}\n"
|
||||
;
|
||||
|
||||
#define PALETTE_SHADER_PROLOGUE \
|
||||
"uniform sampler2D u_texture;\n" \
|
||||
"uniform sampler2D u_palette;\n" \
|
||||
"varying mediump vec4 v_color;\n" \
|
||||
"varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n" \
|
||||
|
||||
#define RGB_SHADER_PROLOGUE \
|
||||
"uniform sampler2D u_texture;\n" \
|
||||
"varying mediump vec4 v_color;\n" \
|
||||
@@ -105,52 +99,102 @@ static const char GLES2_Fragment_Solid[] =
|
||||
"varying mediump vec4 v_color;\n" \
|
||||
"varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n" \
|
||||
|
||||
#define PALETTE_SHADER_PROLOGUE \
|
||||
"uniform sampler2D u_texture;\n" \
|
||||
"uniform sampler2D u_palette;\n" \
|
||||
"uniform mediump vec4 u_texel_size;\n" \
|
||||
"varying mediump vec4 v_color;\n" \
|
||||
"varying SDL_TEXCOORD_PRECISION vec2 v_texCoord;\n" \
|
||||
|
||||
// Implementation with thanks from bgolus:
|
||||
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
|
||||
#define PALETTE_SHADER_FUNCTIONS \
|
||||
"mediump vec4 SamplePaletteNearest(SDL_TEXCOORD_PRECISION vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" mediump float index = texture2D(u_texture, uv).r * 255.0;\n" \
|
||||
" return texture2D(u_palette, vec2((index + 0.5) / 256.0, 0.5));\n" \
|
||||
"}\n" \
|
||||
"\n" \
|
||||
"mediump vec4 SamplePaletteLinear(SDL_TEXCOORD_PRECISION vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" // scale & offset uvs to integer values at texel centers\n" \
|
||||
" SDL_TEXCOORD_PRECISION vec2 uv_texels = uv * u_texel_size.zw + 0.5;\n" \
|
||||
"\n" \
|
||||
" // get uvs for the center of the 4 surrounding texels by flooring\n" \
|
||||
" SDL_TEXCOORD_PRECISION vec4 uv_min_max = vec4((floor(uv_texels) - 0.5) * u_texel_size.xy, (floor(uv_texels) + 0.5) * u_texel_size.xy);\n" \
|
||||
"\n" \
|
||||
" // blend factor\n" \
|
||||
" SDL_TEXCOORD_PRECISION vec2 uv_frac = fract(uv_texels);\n" \
|
||||
"\n" \
|
||||
" // sample all 4 texels\n" \
|
||||
" mediump vec4 texelA = SamplePaletteNearest(uv_min_max.xy);\n" \
|
||||
" mediump vec4 texelB = SamplePaletteNearest(uv_min_max.xw);\n" \
|
||||
" mediump vec4 texelC = SamplePaletteNearest(uv_min_max.zy);\n" \
|
||||
" mediump vec4 texelD = SamplePaletteNearest(uv_min_max.zw);\n" \
|
||||
"\n" \
|
||||
" // bilinear interpolation\n" \
|
||||
" return mix(mix(texelA, texelB, uv_frac.y), mix(texelC, texelD, uv_frac.y), uv_frac.x);\n" \
|
||||
"}\n" \
|
||||
"\n"
|
||||
|
||||
#ifdef OPENGLES_300 // This is required for fwidth() and textureGrad()
|
||||
#define RGB_PIXELART_GETCOLOR \
|
||||
" mediump vec2 boxSize = clamp(fwidth(v_texCoord) * u_texel_size.zw, 1e-5, 1.0);\n" \
|
||||
" mediump vec2 tx = v_texCoord * u_texel_size.zw - 0.5 * boxSize;\n" \
|
||||
" mediump vec2 txOffset = smoothstep(vec2(1.0) - boxSize, vec2(1.0), fract(tx));\n" \
|
||||
" mediump vec2 uv = (floor(tx) + 0.5 + txOffset) * u_texel_size.xy;\n" \
|
||||
" mediump vec4 color = textureGrad(u_texture, uv, dFdx(v_texCoord), dFdy(v_texCoord));\n"
|
||||
#define PIXELART_SHADER_FUNCTIONS \
|
||||
"SDL_TEXCOORD_PRECISION vec2 GetPixelArtUV(SDL_TEXCOORD_PRECISION vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" SDL_TEXCOORD_PRECISION vec2 boxSize = clamp(fwidth(uv) * u_texel_size.zw, 1e-5, 1.0);\n" \
|
||||
" SDL_TEXCOORD_PRECISION vec2 tx = uv * u_texel_size.zw - 0.5 * boxSize;\n" \
|
||||
" SDL_TEXCOORD_PRECISION vec2 txOffset = smoothstep(vec2(1.0) - boxSize, vec2(1.0), fract(tx));\n" \
|
||||
" return (floor(tx) + 0.5 + txOffset) * u_texel_size.xy;\n" \
|
||||
"}\n" \
|
||||
"\n" \
|
||||
"mediump vec4 GetPixelArtSample(vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" return textureGrad(u_texture, GetPixelArtUV(uv), dFdx(v_texCoord), dFdy(v_texCoord));\n" \
|
||||
"}\n" \
|
||||
"\n"
|
||||
#else
|
||||
#define RGB_PIXELART_GETCOLOR \
|
||||
" mediump vec4 color = texture2D(u_texture, v_texCoord);\n"
|
||||
#define PIXELART_SHADER_FUNCTIONS \
|
||||
"mediump vec4 GetPixelArtSample(vec2 uv)\n" \
|
||||
"{\n" \
|
||||
" return texture2D(u_texture, uv);\n" \
|
||||
"}\n" \
|
||||
"\n"
|
||||
#endif
|
||||
|
||||
static const char GLES2_Fragment_TexturePalette[] =
|
||||
static const char GLES2_Fragment_TexturePalette_Nearest[] =
|
||||
PALETTE_SHADER_PROLOGUE
|
||||
PALETTE_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" mediump float index = texture2D(u_texture, v_texCoord).r * 255.0;\n"
|
||||
" SDL_TEXCOORD_PRECISION vec2 paletteCoords = vec2((index + 0.5) / 256.0, 0.5);\n"
|
||||
" mediump vec4 color = texture2D(u_palette, paletteCoords);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor = SamplePaletteNearest(v_texCoord);\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}\n"
|
||||
;
|
||||
|
||||
static const char GLES2_Fragment_TextureABGR[] =
|
||||
RGB_SHADER_PROLOGUE
|
||||
static const char GLES2_Fragment_TexturePalette_Linear[] =
|
||||
PALETTE_SHADER_PROLOGUE
|
||||
PALETTE_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" mediump vec4 color = texture2D(u_texture, v_texCoord);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor = SamplePaletteLinear(v_texCoord);\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}\n"
|
||||
;
|
||||
|
||||
// ARGB to ABGR conversion
|
||||
static const char GLES2_Fragment_TextureARGB[] =
|
||||
RGB_SHADER_PROLOGUE
|
||||
static const char GLES2_Fragment_TexturePalette_PixelArt[] =
|
||||
PALETTE_SHADER_PROLOGUE
|
||||
PALETTE_SHADER_FUNCTIONS
|
||||
PIXELART_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" mediump vec4 color = texture2D(u_texture, v_texCoord);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor.r = color.b;\n"
|
||||
" gl_FragColor.b = color.r;\n"
|
||||
#ifdef OPENGLES_300
|
||||
" gl_FragColor = SamplePaletteLinear(GetPixelArtUV(v_texCoord));\n"
|
||||
#else
|
||||
" gl_FragColor = SamplePaletteNearest(v_texCoord);\n"
|
||||
#endif
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}\n"
|
||||
;
|
||||
@@ -170,6 +214,22 @@ static const char GLES2_Fragment_TextureRGB[] =
|
||||
"}\n"
|
||||
;
|
||||
|
||||
// RGB to ABGR conversion
|
||||
static const char GLES2_Fragment_TextureRGB_PixelArt[] =
|
||||
RGB_PIXELART_SHADER_PROLOGUE
|
||||
PIXELART_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" mediump vec4 color = GetPixelArtSample(v_texCoord);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor.r = color.b;\n"
|
||||
" gl_FragColor.b = color.r;\n"
|
||||
" gl_FragColor.a = 1.0;\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}\n"
|
||||
;
|
||||
|
||||
// BGR to ABGR conversion
|
||||
static const char GLES2_Fragment_TextureBGR[] =
|
||||
RGB_SHADER_PROLOGUE
|
||||
@@ -183,13 +243,30 @@ static const char GLES2_Fragment_TextureBGR[] =
|
||||
"}\n"
|
||||
;
|
||||
|
||||
static const char GLES2_Fragment_TextureABGR_PixelArt[] =
|
||||
// BGR to ABGR conversion
|
||||
static const char GLES2_Fragment_TextureBGR_PixelArt[] =
|
||||
RGB_PIXELART_SHADER_PROLOGUE
|
||||
PIXELART_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
RGB_PIXELART_GETCOLOR
|
||||
" mediump vec4 color = GetPixelArtSample(v_texCoord);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor.a = 1.0;\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}\n"
|
||||
;
|
||||
|
||||
// ARGB to ABGR conversion
|
||||
static const char GLES2_Fragment_TextureARGB[] =
|
||||
RGB_SHADER_PROLOGUE
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" mediump vec4 color = texture2D(u_texture, v_texCoord);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor.r = color.b;\n"
|
||||
" gl_FragColor.b = color.r;\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}\n"
|
||||
;
|
||||
@@ -197,10 +274,11 @@ static const char GLES2_Fragment_TextureABGR_PixelArt[] =
|
||||
// ARGB to ABGR conversion
|
||||
static const char GLES2_Fragment_TextureARGB_PixelArt[] =
|
||||
RGB_PIXELART_SHADER_PROLOGUE
|
||||
PIXELART_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
RGB_PIXELART_GETCOLOR
|
||||
" mediump vec4 color = GetPixelArtSample(v_texCoord);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor.r = color.b;\n"
|
||||
" gl_FragColor.b = color.r;\n"
|
||||
@@ -208,30 +286,25 @@ static const char GLES2_Fragment_TextureARGB_PixelArt[] =
|
||||
"}\n"
|
||||
;
|
||||
|
||||
// RGB to ABGR conversion
|
||||
static const char GLES2_Fragment_TextureRGB_PixelArt[] =
|
||||
RGB_PIXELART_SHADER_PROLOGUE
|
||||
static const char GLES2_Fragment_TextureABGR[] =
|
||||
RGB_SHADER_PROLOGUE
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
RGB_PIXELART_GETCOLOR
|
||||
" mediump vec4 color = texture2D(u_texture, v_texCoord);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor.r = color.b;\n"
|
||||
" gl_FragColor.b = color.r;\n"
|
||||
" gl_FragColor.a = 1.0;\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}\n"
|
||||
;
|
||||
|
||||
// BGR to ABGR conversion
|
||||
static const char GLES2_Fragment_TextureBGR_PixelArt[] =
|
||||
static const char GLES2_Fragment_TextureABGR_PixelArt[] =
|
||||
RGB_PIXELART_SHADER_PROLOGUE
|
||||
PIXELART_SHADER_FUNCTIONS
|
||||
"\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
RGB_PIXELART_GETCOLOR
|
||||
" mediump vec4 color = GetPixelArtSample(v_texCoord);\n"
|
||||
" gl_FragColor = color;\n"
|
||||
" gl_FragColor.a = 1.0;\n"
|
||||
" gl_FragColor *= v_color;\n"
|
||||
"}\n"
|
||||
;
|
||||
@@ -445,24 +518,28 @@ const char *GLES2_GetShader(GLES2_ShaderType type)
|
||||
return GLES2_Vertex_Default;
|
||||
case GLES2_SHADER_FRAGMENT_SOLID:
|
||||
return GLES2_Fragment_Solid;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE:
|
||||
return GLES2_Fragment_TexturePalette;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR:
|
||||
return GLES2_Fragment_TextureABGR;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB:
|
||||
return GLES2_Fragment_TextureARGB;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_NEAREST:
|
||||
return GLES2_Fragment_TexturePalette_Nearest;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_LINEAR:
|
||||
return GLES2_Fragment_TexturePalette_Linear;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_PIXELART:
|
||||
return GLES2_Fragment_TexturePalette_PixelArt;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_RGB:
|
||||
return GLES2_Fragment_TextureRGB;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_BGR:
|
||||
return GLES2_Fragment_TextureBGR;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_PIXELART:
|
||||
return GLES2_Fragment_TextureABGR_PixelArt;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_PIXELART:
|
||||
return GLES2_Fragment_TextureARGB_PixelArt;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_RGB_PIXELART:
|
||||
return GLES2_Fragment_TextureRGB_PixelArt;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_BGR:
|
||||
return GLES2_Fragment_TextureBGR;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_BGR_PIXELART:
|
||||
return GLES2_Fragment_TextureBGR_PixelArt;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB:
|
||||
return GLES2_Fragment_TextureARGB;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_PIXELART:
|
||||
return GLES2_Fragment_TextureARGB_PixelArt;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR:
|
||||
return GLES2_Fragment_TextureABGR;
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_PIXELART:
|
||||
return GLES2_Fragment_TextureABGR_PixelArt;
|
||||
#ifdef SDL_HAVE_YUV
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_YUV:
|
||||
return GLES2_Fragment_TextureYUV;
|
||||
|
@@ -39,15 +39,17 @@ typedef enum
|
||||
{
|
||||
GLES2_SHADER_VERTEX_DEFAULT = 0,
|
||||
GLES2_SHADER_FRAGMENT_SOLID,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_ABGR,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_ARGB,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_BGR,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_NEAREST,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_LINEAR,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_PALETTE_PIXELART,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_RGB,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_PIXELART,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_PIXELART,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_BGR_PIXELART,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_RGB_PIXELART,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_BGR,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_BGR_PIXELART,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_ARGB,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_PIXELART,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_ABGR,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_PIXELART,
|
||||
#ifdef SDL_HAVE_YUV
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_YUV,
|
||||
GLES2_SHADER_FRAGMENT_TEXTURE_NV12_RA,
|
||||
|
@@ -184,7 +184,9 @@ static const float TONEMAP_CHROME = 2;
|
||||
//static const float TEXTURETYPE_NONE = 0;
|
||||
static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_PALETTE = 3;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
|
||||
|
||||
static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -3423,17 +3425,35 @@ static void VULKAN_SetupShaderConstants(SDL_Renderer *renderer, const SDL_Render
|
||||
}
|
||||
|
||||
if (texture->format == SDL_PIXELFORMAT_INDEX8) {
|
||||
constants->texture_type = TEXTURETYPE_PALETTE;
|
||||
switch (cmd->data.draw.texture_scale_mode) {
|
||||
case SDL_SCALEMODE_NEAREST:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_NEAREST;
|
||||
break;
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_LINEAR;
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART:
|
||||
constants->texture_type = TEXTURETYPE_PALETTE_PIXELART;
|
||||
break;
|
||||
default:
|
||||
SDL_assert(!"Unknown scale mode");
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (cmd->data.draw.texture_scale_mode == SDL_SCALEMODE_PIXELART) {
|
||||
constants->texture_type = TEXTURETYPE_RGB_PIXELART;
|
||||
} else {
|
||||
constants->texture_type = TEXTURETYPE_RGB;
|
||||
}
|
||||
}
|
||||
|
||||
if (constants->texture_type == TEXTURETYPE_PALETTE_LINEAR ||
|
||||
constants->texture_type == TEXTURETYPE_PALETTE_PIXELART ||
|
||||
constants->texture_type == TEXTURETYPE_RGB_PIXELART) {
|
||||
constants->texture_width = texture->w;
|
||||
constants->texture_height = texture->h;
|
||||
constants->texel_width = 1.0f / constants->texture_width;
|
||||
constants->texel_height = 1.0f / constants->texture_height;
|
||||
} else {
|
||||
constants->texture_type = TEXTURETYPE_RGB;
|
||||
}
|
||||
}
|
||||
|
||||
constants->sdr_white_point = texture->SDR_white_point;
|
||||
@@ -3802,7 +3822,7 @@ static bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
static VkSampler VULKAN_GetSampler(VULKAN_RenderData *data, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
static VkSampler VULKAN_GetSampler(VULKAN_RenderData *data, SDL_PixelFormat format, SDL_ScaleMode scale_mode, SDL_TextureAddressMode address_u, SDL_TextureAddressMode address_v)
|
||||
{
|
||||
Uint32 key = RENDER_SAMPLER_HASHKEY(scale_mode, address_u, address_v);
|
||||
SDL_assert(key < SDL_arraysize(data->samplers));
|
||||
@@ -3823,8 +3843,14 @@ static VkSampler VULKAN_GetSampler(VULKAN_RenderData *data, SDL_ScaleMode scale_
|
||||
break;
|
||||
case SDL_SCALEMODE_PIXELART: // Uses linear sampling
|
||||
case SDL_SCALEMODE_LINEAR:
|
||||
if (format == SDL_PIXELFORMAT_INDEX8) {
|
||||
// We'll do linear sampling in the shader
|
||||
samplerCreateInfo.magFilter = VK_FILTER_NEAREST;
|
||||
samplerCreateInfo.minFilter = VK_FILTER_NEAREST;
|
||||
} else {
|
||||
samplerCreateInfo.magFilter = VK_FILTER_LINEAR;
|
||||
samplerCreateInfo.minFilter = VK_FILTER_LINEAR;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
SDL_SetError("Unknown scale mode: %d", scale_mode);
|
||||
@@ -3899,7 +3925,7 @@ static bool VULKAN_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand
|
||||
}
|
||||
imageViews[numImageViews++] = textureData->mainImage.imageView;
|
||||
|
||||
samplers[numSamplers] = VULKAN_GetSampler(rendererData, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
samplers[numSamplers] = VULKAN_GetSampler(rendererData, texture->format, cmd->data.draw.texture_scale_mode, cmd->data.draw.texture_address_mode_u, cmd->data.draw.texture_address_mode_v);
|
||||
if (samplers[numSamplers] == VK_NULL_HANDLE) {
|
||||
return false;
|
||||
}
|
||||
@@ -3930,7 +3956,7 @@ static bool VULKAN_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand
|
||||
}
|
||||
imageViews[numImageViews++] = palette->image.imageView;
|
||||
|
||||
samplers[numSamplers] = VULKAN_GetSampler(rendererData, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
samplers[numSamplers] = VULKAN_GetSampler(rendererData, SDL_PIXELFORMAT_UNKNOWN, SDL_SCALEMODE_NEAREST, SDL_TEXTURE_ADDRESS_CLAMP, SDL_TEXTURE_ADDRESS_CLAMP);
|
||||
if (samplers[numSamplers] == VK_NULL_HANDLE) {
|
||||
return false;
|
||||
}
|
||||
|
@@ -1,318 +1,437 @@
|
||||
// 1113.1.1
|
||||
#pragma once
|
||||
const uint32_t VULKAN_PixelShader_Advanced[] = {
|
||||
0x07230203,0x00010000,0x0008000b,0x00000510,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x07230203,0x00010000,0x0008000b,0x000006bb,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
|
||||
0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000221,0x00000224,0x00000228,
|
||||
0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000028b,0x0000028e,0x00000292,
|
||||
0x00030010,0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,
|
||||
0x6e69616d,0x00000000,0x00050005,0x00000079,0x736e6f43,0x746e6174,0x00000073,0x00070006,
|
||||
0x00000079,0x00000000,0x47526373,0x756f5f42,0x74757074,0x00000000,0x00070006,0x00000079,
|
||||
0x00000001,0x74786574,0x5f657275,0x65707974,0x00000000,0x00060006,0x00000079,0x00000002,
|
||||
0x75706e69,0x79745f74,0x00006570,0x00060006,0x00000079,0x00000003,0x6f6c6f63,0x63735f72,
|
||||
0x00656c61,0x00060006,0x00000079,0x00000004,0x65786574,0x69735f6c,0x0000657a,0x00070006,
|
||||
0x00000079,0x00000005,0x656e6f74,0x5f70616d,0x6874656d,0x0000646f,0x00070006,0x00000079,
|
||||
0x00000006,0x656e6f74,0x5f70616d,0x74636166,0x0031726f,0x00070006,0x00000079,0x00000007,
|
||||
0x656e6f74,0x5f70616d,0x74636166,0x0032726f,0x00070006,0x00000079,0x00000008,0x5f726473,
|
||||
0x74696877,0x6f705f65,0x00746e69,0x00030005,0x0000007b,0x00000000,0x00050005,0x0000011f,
|
||||
0x74786574,0x30657275,0x00000000,0x00050005,0x00000146,0x74786574,0x31657275,0x00000000,
|
||||
0x00050005,0x00000221,0x75706e69,0x65742e74,0x00000078,0x00050005,0x00000224,0x75706e69,
|
||||
0x6f632e74,0x00726f6c,0x00070005,0x00000228,0x746e6540,0x6f507972,0x4f746e69,0x75707475,
|
||||
0x00000074,0x00050048,0x00000079,0x00000000,0x00000023,0x00000000,0x00050048,0x00000079,
|
||||
0x00000001,0x00000023,0x00000004,0x00050048,0x00000079,0x00000002,0x00000023,0x00000008,
|
||||
0x00050048,0x00000079,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000079,0x00000004,
|
||||
0x00000023,0x00000010,0x00050048,0x00000079,0x00000005,0x00000023,0x00000020,0x00050048,
|
||||
0x00000079,0x00000006,0x00000023,0x00000024,0x00050048,0x00000079,0x00000007,0x00000023,
|
||||
0x00000028,0x00050048,0x00000079,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000079,
|
||||
0x00000002,0x00040047,0x0000007b,0x00000022,0x00000000,0x00040047,0x0000007b,0x00000021,
|
||||
0x00000000,0x00040047,0x0000011f,0x00000022,0x00000000,0x00040047,0x0000011f,0x00000021,
|
||||
0x00000001,0x00040047,0x00000146,0x00000022,0x00000000,0x00040047,0x00000146,0x00000021,
|
||||
0x00000002,0x00040047,0x00000221,0x0000001e,0x00000000,0x00040047,0x00000224,0x0000001e,
|
||||
0x00000001,0x00040047,0x00000228,0x0000001e,0x00000000,0x00020013,0x00000002,0x00030021,
|
||||
0x6e69616d,0x00000000,0x00050005,0x00000081,0x736e6f43,0x746e6174,0x00000073,0x00070006,
|
||||
0x00000081,0x00000000,0x47526373,0x756f5f42,0x74757074,0x00000000,0x00070006,0x00000081,
|
||||
0x00000001,0x74786574,0x5f657275,0x65707974,0x00000000,0x00060006,0x00000081,0x00000002,
|
||||
0x75706e69,0x79745f74,0x00006570,0x00060006,0x00000081,0x00000003,0x6f6c6f63,0x63735f72,
|
||||
0x00656c61,0x00060006,0x00000081,0x00000004,0x65786574,0x69735f6c,0x0000657a,0x00070006,
|
||||
0x00000081,0x00000005,0x656e6f74,0x5f70616d,0x6874656d,0x0000646f,0x00070006,0x00000081,
|
||||
0x00000006,0x656e6f74,0x5f70616d,0x74636166,0x0031726f,0x00070006,0x00000081,0x00000007,
|
||||
0x656e6f74,0x5f70616d,0x74636166,0x0032726f,0x00070006,0x00000081,0x00000008,0x5f726473,
|
||||
0x74696877,0x6f705f65,0x00746e69,0x00030005,0x00000083,0x00000000,0x00050005,0x000000f2,
|
||||
0x74786574,0x30657275,0x00000000,0x00050005,0x000000f9,0x74786574,0x31657275,0x00000000,
|
||||
0x00050005,0x0000028b,0x75706e69,0x65742e74,0x00000078,0x00050005,0x0000028e,0x75706e69,
|
||||
0x6f632e74,0x00726f6c,0x00070005,0x00000292,0x746e6540,0x6f507972,0x4f746e69,0x75707475,
|
||||
0x00000074,0x00050048,0x00000081,0x00000000,0x00000023,0x00000000,0x00050048,0x00000081,
|
||||
0x00000001,0x00000023,0x00000004,0x00050048,0x00000081,0x00000002,0x00000023,0x00000008,
|
||||
0x00050048,0x00000081,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000081,0x00000004,
|
||||
0x00000023,0x00000010,0x00050048,0x00000081,0x00000005,0x00000023,0x00000020,0x00050048,
|
||||
0x00000081,0x00000006,0x00000023,0x00000024,0x00050048,0x00000081,0x00000007,0x00000023,
|
||||
0x00000028,0x00050048,0x00000081,0x00000008,0x00000023,0x0000002c,0x00030047,0x00000081,
|
||||
0x00000002,0x00040047,0x00000083,0x00000022,0x00000000,0x00040047,0x00000083,0x00000021,
|
||||
0x00000000,0x00040047,0x000000f2,0x00000022,0x00000000,0x00040047,0x000000f2,0x00000021,
|
||||
0x00000001,0x00040047,0x000000f9,0x00000022,0x00000000,0x00040047,0x000000f9,0x00000021,
|
||||
0x00000002,0x00040047,0x0000028b,0x0000001e,0x00000000,0x00040047,0x0000028e,0x0000001e,
|
||||
0x00000001,0x00040047,0x00000292,0x0000001e,0x00000000,0x00020013,0x00000002,0x00030021,
|
||||
0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x0000000f,0x00000006,
|
||||
0x00000003,0x00040017,0x00000018,0x00000006,0x00000004,0x00040017,0x00000019,0x00000006,
|
||||
0x00000002,0x0004002b,0x00000006,0x00000036,0x3d25aee6,0x00020014,0x00000037,0x0004002b,
|
||||
0x00000006,0x0000003c,0x414eb852,0x0004002b,0x00000006,0x00000040,0x3d6147ae,0x0004002b,
|
||||
0x00000006,0x00000043,0x3f870a3d,0x0004002b,0x00000006,0x00000045,0x4019999a,0x0004002b,
|
||||
0x00000006,0x0000004b,0x3b4d2e1c,0x0004002b,0x00000006,0x00000054,0x3ed55555,0x0004002b,
|
||||
0x00000006,0x0000005e,0x3c4fcdac,0x0006002c,0x0000000f,0x0000005f,0x0000005e,0x0000005e,
|
||||
0x0000005e,0x0004002b,0x00000006,0x00000061,0x3f560000,0x0004002b,0x00000006,0x00000064,
|
||||
0x00000000,0x0006002c,0x0000000f,0x00000065,0x00000064,0x00000064,0x00000064,0x0004002b,
|
||||
0x00000006,0x00000068,0x4196d000,0x0004002b,0x00000006,0x00000069,0x41958000,0x0004002b,
|
||||
0x00000006,0x00000070,0x461c4000,0x0004002b,0x00000006,0x00000075,0x40c8e06b,0x0006002c,
|
||||
0x0000000f,0x00000076,0x00000075,0x00000075,0x00000075,0x000b001e,0x00000079,0x00000006,
|
||||
0x00000006,0x00000006,0x00000006,0x00000018,0x00000006,0x00000006,0x00000006,0x00000006,
|
||||
0x00040020,0x0000007a,0x00000002,0x00000079,0x0004003b,0x0000007a,0x0000007b,0x00000002,
|
||||
0x00040015,0x0000007c,0x00000020,0x00000001,0x0004002b,0x0000007c,0x0000007d,0x00000008,
|
||||
0x00040020,0x0000007e,0x00000002,0x00000006,0x0004002b,0x0000007c,0x00000085,0x00000005,
|
||||
0x0004002b,0x00000006,0x00000088,0x3f800000,0x0004002b,0x0000007c,0x0000008c,0x00000006,
|
||||
0x0004002b,0x00000006,0x00000094,0x40000000,0x0004002b,0x0000007c,0x00000098,0x00000002,
|
||||
0x00040018,0x0000009f,0x0000000f,0x00000003,0x0004002b,0x00000006,0x000000a0,0x3f209d8c,
|
||||
0x0004002b,0x00000006,0x000000a1,0x3ea897c8,0x0004002b,0x00000006,0x000000a2,0x3d3168f9,
|
||||
0x0006002c,0x0000000f,0x000000a3,0x000000a0,0x000000a1,0x000000a2,0x0004002b,0x00000006,
|
||||
0x000000a4,0x3d8d82ba,0x0004002b,0x00000006,0x000000a5,0x3f6b670a,0x0004002b,0x00000006,
|
||||
0x000000a6,0x3c3a27af,0x0006002c,0x0000000f,0x000000a7,0x000000a4,0x000000a5,0x000000a6,
|
||||
0x0004002b,0x00000006,0x000000a8,0x3c86466b,0x0004002b,0x00000006,0x000000a9,0x3db44029,
|
||||
0x0004002b,0x00000006,0x000000aa,0x3f6545b7,0x0006002c,0x0000000f,0x000000ab,0x000000a8,
|
||||
0x000000a9,0x000000aa,0x0006002c,0x0000009f,0x000000ac,0x000000a3,0x000000a7,0x000000ab,
|
||||
0x0004002b,0x0000007c,0x000000c5,0x00000007,0x0004002b,0x00000006,0x000000d5,0x3fd48b22,
|
||||
0x0004002b,0x00000006,0x000000d6,0xbf1670a0,0x0004002b,0x00000006,0x000000d7,0xbd952d23,
|
||||
0x0006002c,0x0000000f,0x000000d8,0x000000d5,0x000000d6,0x000000d7,0x0004002b,0x00000006,
|
||||
0x000000d9,0xbdff127f,0x0004002b,0x00000006,0x000000da,0x3f9102b4,0x0004002b,0x00000006,
|
||||
0x000000db,0xbc08c60d,0x0006002c,0x0000000f,0x000000dc,0x000000d9,0x000000da,0x000000db,
|
||||
0x0004002b,0x00000006,0x000000dd,0xbc94b7b3,0x0004002b,0x00000006,0x000000de,0xbdce05cd,
|
||||
0x0004002b,0x00000006,0x000000df,0x3f8f333c,0x0006002c,0x0000000f,0x000000e0,0x000000dd,
|
||||
0x000000de,0x000000df,0x0006002c,0x0000009f,0x000000e1,0x000000d8,0x000000dc,0x000000e0,
|
||||
0x0004002b,0x0000007c,0x000000e8,0x00000001,0x0004002b,0x0000007c,0x000000ec,0x00000004,
|
||||
0x00040020,0x000000ed,0x00000002,0x00000018,0x0004002b,0x00000006,0x000000f2,0x3727c5ac,
|
||||
0x0005002c,0x00000019,0x000000f3,0x000000f2,0x000000f2,0x0005002c,0x00000019,0x000000f4,
|
||||
0x00000088,0x00000088,0x0004002b,0x00000006,0x000000fd,0x3f000000,0x00090019,0x0000011c,
|
||||
0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,
|
||||
0x0000011d,0x0000011c,0x00040020,0x0000011e,0x00000000,0x0000011d,0x0004003b,0x0000011e,
|
||||
0x0000011f,0x00000000,0x0004002b,0x00000006,0x0000013a,0x40400000,0x0004002b,0x00000006,
|
||||
0x00000144,0x437f0000,0x0004003b,0x0000011e,0x00000146,0x00000000,0x0004002b,0x0000007c,
|
||||
0x0000015a,0x00000003,0x0004002b,0x0000007c,0x0000016a,0x00000000,0x00040020,0x0000021c,
|
||||
0x00000001,0x00000018,0x00040020,0x00000220,0x00000001,0x00000019,0x0004003b,0x00000220,
|
||||
0x00000221,0x00000001,0x0004003b,0x0000021c,0x00000224,0x00000001,0x00040020,0x00000227,
|
||||
0x00000003,0x00000018,0x0004003b,0x00000227,0x00000228,0x00000003,0x0004002b,0x00000006,
|
||||
0x000004c5,0x3b800000,0x0005002c,0x00000019,0x000004c7,0x000000fd,0x000000fd,0x0006002c,
|
||||
0x0000000f,0x000004c8,0x00000061,0x00000061,0x00000061,0x0006002c,0x0000000f,0x000004c9,
|
||||
0x00000068,0x00000068,0x00000068,0x0006002c,0x0000000f,0x000004ce,0x00000088,0x00000088,
|
||||
0x00000088,0x0004002b,0x00000006,0x000004d4,0x3f72a76f,0x0004002b,0x00000006,0x000004d5,
|
||||
0x3d9e8391,0x0007002c,0x00000018,0x000004d7,0x00000088,0x00000064,0x00000064,0x00000088,
|
||||
0x0004002b,0x00000006,0x000004d8,0xbd6147ae,0x00030001,0x00000018,0x0000050f,0x00050036,
|
||||
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x00000019,
|
||||
0x00000222,0x00000221,0x0004003d,0x00000018,0x00000225,0x00000224,0x00050041,0x0000007e,
|
||||
0x000002a5,0x0000007b,0x000000e8,0x0004003d,0x00000006,0x000002a6,0x000002a5,0x000500b4,
|
||||
0x00000037,0x000002a7,0x000002a6,0x00000088,0x000300f7,0x000002d5,0x00000000,0x000400fa,
|
||||
0x000002a7,0x000002a8,0x000002ad,0x000200f8,0x000002a8,0x0004003d,0x0000011d,0x000002a9,
|
||||
0x0000011f,0x00050057,0x00000018,0x000002ac,0x000002a9,0x00000222,0x000200f9,0x000002d5,
|
||||
0x000200f8,0x000002ad,0x00050041,0x0000007e,0x000002ae,0x0000007b,0x000000e8,0x0004003d,
|
||||
0x00000006,0x000002af,0x000002ae,0x000500b4,0x00000037,0x000002b0,0x000002af,0x00000094,
|
||||
0x000300f7,0x000002d4,0x00000000,0x000400fa,0x000002b0,0x000002b1,0x000002bd,0x000200f8,
|
||||
0x000002b1,0x000400d1,0x00000019,0x000002df,0x00000222,0x00050041,0x000000ed,0x000002e0,
|
||||
0x0000007b,0x000000ec,0x0004003d,0x00000018,0x000002e1,0x000002e0,0x0007004f,0x00000019,
|
||||
0x000002e2,0x000002e1,0x000002e1,0x00000002,0x00000003,0x00050085,0x00000019,0x000002e3,
|
||||
0x000002df,0x000002e2,0x0008000c,0x00000019,0x000002e4,0x00000001,0x0000002b,0x000002e3,
|
||||
0x000000f3,0x000000f4,0x00050041,0x000000ed,0x000002e7,0x0000007b,0x000000ec,0x0004003d,
|
||||
0x00000018,0x000002e8,0x000002e7,0x0007004f,0x00000019,0x000002e9,0x000002e8,0x000002e8,
|
||||
0x00000002,0x00000003,0x0005008e,0x00000019,0x000002ec,0x000002e4,0x000000fd,0x0004007f,
|
||||
0x00000019,0x000004c6,0x000002ec,0x0008000c,0x00000019,0x000002ed,0x00000001,0x00000032,
|
||||
0x00000222,0x000002e9,0x000004c6,0x00050083,0x00000019,0x000002f0,0x000000f4,0x000002e4,
|
||||
0x0006000c,0x00000019,0x000002f2,0x00000001,0x0000000a,0x000002ed,0x0008000c,0x00000019,
|
||||
0x000002f3,0x00000001,0x00000031,0x000002f0,0x000000f4,0x000002f2,0x0006000c,0x00000019,
|
||||
0x000002f5,0x00000001,0x00000008,0x000002ed,0x00050081,0x00000019,0x000002f7,0x000002f5,
|
||||
0x000004c7,0x00050081,0x00000019,0x000002f9,0x000002f7,0x000002f3,0x00050041,0x000000ed,
|
||||
0x000002fa,0x0000007b,0x000000ec,0x0004003d,0x00000018,0x000002fb,0x000002fa,0x0007004f,
|
||||
0x00000019,0x000002fc,0x000002fb,0x000002fb,0x00000000,0x00000001,0x00050085,0x00000019,
|
||||
0x000002fd,0x000002f9,0x000002fc,0x0004003d,0x0000011d,0x000002b4,0x0000011f,0x000400cf,
|
||||
0x00000019,0x000002b8,0x00000222,0x000400d0,0x00000019,0x000002bb,0x00000222,0x00080058,
|
||||
0x00000018,0x000002bc,0x000002b4,0x000002fd,0x00000004,0x000002b8,0x000002bb,0x000200f9,
|
||||
0x000002d4,0x000200f8,0x000002bd,0x00050041,0x0000007e,0x000002be,0x0000007b,0x000000e8,
|
||||
0x0004003d,0x00000006,0x000002bf,0x000002be,0x000500b4,0x00000037,0x000002c0,0x000002bf,
|
||||
0x0000013a,0x000300f7,0x000002d3,0x00000000,0x000400fa,0x000002c0,0x000002c1,0x000002ce,
|
||||
0x000200f8,0x000002c1,0x0004003d,0x0000011d,0x000002c2,0x0000011f,0x00050057,0x00000018,
|
||||
0x000002c5,0x000002c2,0x00000222,0x00050051,0x00000006,0x000002c6,0x000002c5,0x00000000,
|
||||
0x0004003d,0x0000011d,0x000002c8,0x00000146,0x0008000c,0x00000006,0x000002ca,0x00000001,
|
||||
0x00000032,0x000002c6,0x00000144,0x000000fd,0x00050085,0x00000006,0x000002cb,0x000002ca,
|
||||
0x000004c5,0x00050050,0x00000019,0x000002cc,0x000002cb,0x000000fd,0x00050057,0x00000018,
|
||||
0x000002cd,0x000002c8,0x000002cc,0x000200f9,0x000002d3,0x000200f8,0x000002ce,0x000200f9,
|
||||
0x000002d3,0x000200f8,0x000002d3,0x000700f5,0x00000018,0x000004db,0x000002cd,0x000002c1,
|
||||
0x000004d7,0x000002ce,0x000200f9,0x000002d4,0x000200f8,0x000002d4,0x000700f5,0x00000018,
|
||||
0x000004da,0x000002bc,0x000002b1,0x000004db,0x000002d3,0x000200f9,0x000002d5,0x000200f8,
|
||||
0x000002d5,0x000700f5,0x00000018,0x000004d9,0x000002ac,0x000002a8,0x000004da,0x000002d4,
|
||||
0x00050041,0x0000007e,0x0000023e,0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000023f,
|
||||
0x0000023e,0x000500b4,0x00000037,0x00000240,0x0000023f,0x0000013a,0x000300f7,0x0000024b,
|
||||
0x00000000,0x000400fa,0x00000240,0x00000241,0x0000024b,0x000200f8,0x00000241,0x0008004f,
|
||||
0x0000000f,0x00000243,0x000004d9,0x000004d9,0x00000000,0x00000001,0x00000002,0x0006000c,
|
||||
0x0000000f,0x00000304,0x00000001,0x00000004,0x00000243,0x0007000c,0x0000000f,0x00000305,
|
||||
0x00000001,0x0000001a,0x00000304,0x0000005f,0x00050083,0x0000000f,0x00000307,0x00000305,
|
||||
0x000004c8,0x0007000c,0x0000000f,0x00000308,0x00000001,0x00000028,0x00000307,0x00000065,
|
||||
0x0006000c,0x0000000f,0x0000030a,0x00000001,0x00000004,0x00000243,0x0007000c,0x0000000f,
|
||||
0x0000030b,0x00000001,0x0000001a,0x0000030a,0x0000005f,0x0005008e,0x0000000f,0x0000030c,
|
||||
0x0000030b,0x00000069,0x00050083,0x0000000f,0x0000030e,0x000004c9,0x0000030c,0x00050088,
|
||||
0x0000000f,0x00000311,0x00000308,0x0000030e,0x0006000c,0x0000000f,0x00000312,0x00000001,
|
||||
0x00000004,0x00000311,0x0007000c,0x0000000f,0x00000313,0x00000001,0x0000001a,0x00000312,
|
||||
0x00000076,0x0005008e,0x0000000f,0x00000314,0x00000313,0x00000070,0x00050041,0x0000007e,
|
||||
0x00000315,0x0000007b,0x0000007d,0x0004003d,0x00000006,0x00000316,0x00000315,0x00060050,
|
||||
0x0000000f,0x00000317,0x00000316,0x00000316,0x00000316,0x00050088,0x0000000f,0x00000318,
|
||||
0x00000314,0x00000317,0x00050051,0x00000006,0x00000246,0x00000318,0x00000000,0x00060052,
|
||||
0x00000018,0x00000471,0x00000246,0x000004d9,0x00000000,0x00050051,0x00000006,0x00000248,
|
||||
0x00000318,0x00000001,0x00060052,0x00000018,0x00000473,0x00000248,0x00000471,0x00000001,
|
||||
0x00050051,0x00000006,0x0000024a,0x00000318,0x00000002,0x00060052,0x00000018,0x00000475,
|
||||
0x0000024a,0x00000473,0x00000002,0x000200f9,0x0000024b,0x000200f8,0x0000024b,0x000700f5,
|
||||
0x00000018,0x000004dc,0x000004d9,0x000002d5,0x00000475,0x00000241,0x00050041,0x0000007e,
|
||||
0x0000024c,0x0000007b,0x00000085,0x0004003d,0x00000006,0x0000024d,0x0000024c,0x000500b7,
|
||||
0x00000037,0x0000024e,0x0000024d,0x00000064,0x000300f7,0x00000259,0x00000000,0x000400fa,
|
||||
0x0000024e,0x0000024f,0x00000259,0x000200f8,0x0000024f,0x0008004f,0x0000000f,0x00000251,
|
||||
0x000004dc,0x000004dc,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x0000031d,
|
||||
0x0000007b,0x00000085,0x0004003d,0x00000006,0x0000031e,0x0000031d,0x000500b4,0x00000037,
|
||||
0x0000031f,0x0000031e,0x00000088,0x000300f7,0x00000353,0x00000000,0x000400fa,0x0000031f,
|
||||
0x00000320,0x00000325,0x000200f8,0x00000320,0x00050041,0x0000007e,0x00000321,0x0000007b,
|
||||
0x0000008c,0x0004003d,0x00000006,0x00000322,0x00000321,0x0005008e,0x0000000f,0x00000324,
|
||||
0x00000251,0x00000322,0x000200f9,0x00000353,0x000200f8,0x00000325,0x00050041,0x0000007e,
|
||||
0x00000326,0x0000007b,0x00000085,0x0004003d,0x00000006,0x00000327,0x00000326,0x000500b4,
|
||||
0x00000037,0x00000328,0x00000327,0x00000094,0x000300f7,0x00000352,0x00000000,0x000400fa,
|
||||
0x00000328,0x00000329,0x00000352,0x000200f8,0x00000329,0x00050041,0x0000007e,0x0000032a,
|
||||
0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000032b,0x0000032a,0x000500b4,0x00000037,
|
||||
0x0000032c,0x0000032b,0x00000094,0x000300f7,0x00000330,0x00000000,0x000400fa,0x0000032c,
|
||||
0x0000032d,0x00000330,0x000200f8,0x0000032d,0x00050090,0x0000000f,0x0000032f,0x00000251,
|
||||
0x000000ac,0x000200f9,0x00000330,0x000200f8,0x00000330,0x000700f5,0x0000000f,0x000004dd,
|
||||
0x00000251,0x00000329,0x0000032f,0x0000032d,0x00050051,0x00000006,0x00000332,0x000004dd,
|
||||
0x00000000,0x00050051,0x00000006,0x00000334,0x000004dd,0x00000001,0x00050051,0x00000006,
|
||||
0x00000336,0x000004dd,0x00000002,0x0007000c,0x00000006,0x00000337,0x00000001,0x00000028,
|
||||
0x00000334,0x00000336,0x0007000c,0x00000006,0x00000338,0x00000001,0x00000028,0x00000332,
|
||||
0x00000337,0x000500ba,0x00000037,0x0000033a,0x00000338,0x00000064,0x000300f7,0x0000034a,
|
||||
0x00000000,0x000400fa,0x0000033a,0x0000033b,0x0000034a,0x000200f8,0x0000033b,0x00050041,
|
||||
0x0000007e,0x0000033c,0x0000007b,0x0000008c,0x0004003d,0x00000006,0x0000033d,0x0000033c,
|
||||
0x0008000c,0x00000006,0x00000340,0x00000001,0x00000032,0x0000033d,0x00000338,0x00000088,
|
||||
0x00050041,0x0000007e,0x00000341,0x0000007b,0x000000c5,0x0004003d,0x00000006,0x00000342,
|
||||
0x00000341,0x0008000c,0x00000006,0x00000345,0x00000001,0x00000032,0x00000342,0x00000338,
|
||||
0x00000088,0x00050088,0x00000006,0x00000346,0x00000340,0x00000345,0x0005008e,0x0000000f,
|
||||
0x00000349,0x000004dd,0x00000346,0x000200f9,0x0000034a,0x000200f8,0x0000034a,0x000700f5,
|
||||
0x0000000f,0x000004de,0x000004dd,0x00000330,0x00000349,0x0000033b,0x00050041,0x0000007e,
|
||||
0x0000034b,0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000034c,0x0000034b,0x000500b4,
|
||||
0x00000037,0x0000034d,0x0000034c,0x00000094,0x000300f7,0x00000351,0x00000000,0x000400fa,
|
||||
0x0000034d,0x0000034e,0x00000351,0x000200f8,0x0000034e,0x00050090,0x0000000f,0x00000350,
|
||||
0x000004de,0x000000e1,0x000200f9,0x00000351,0x000200f8,0x00000351,0x000700f5,0x0000000f,
|
||||
0x000004e1,0x000004de,0x0000034a,0x00000350,0x0000034e,0x000200f9,0x00000352,0x000200f8,
|
||||
0x00000352,0x000700f5,0x0000000f,0x000004e0,0x00000251,0x00000325,0x000004e1,0x00000351,
|
||||
0x000200f9,0x00000353,0x000200f8,0x00000353,0x000700f5,0x0000000f,0x000004df,0x00000324,
|
||||
0x00000320,0x000004e0,0x00000352,0x00050051,0x00000006,0x00000254,0x000004df,0x00000000,
|
||||
0x00060052,0x00000018,0x0000047a,0x00000254,0x000004dc,0x00000000,0x00050051,0x00000006,
|
||||
0x00000256,0x000004df,0x00000001,0x00060052,0x00000018,0x0000047c,0x00000256,0x0000047a,
|
||||
0x00000001,0x00050051,0x00000006,0x00000258,0x000004df,0x00000002,0x00060052,0x00000018,
|
||||
0x0000047e,0x00000258,0x0000047c,0x00000002,0x000200f9,0x00000259,0x000200f8,0x00000259,
|
||||
0x000700f5,0x00000018,0x000004e7,0x000004dc,0x0000024b,0x0000047e,0x00000353,0x00050041,
|
||||
0x0000007e,0x0000025a,0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000025b,0x0000025a,
|
||||
0x000500b4,0x00000037,0x0000025c,0x0000025b,0x00000088,0x000300f7,0x0000029a,0x00000000,
|
||||
0x000400fa,0x0000025c,0x0000025d,0x0000026a,0x000200f8,0x0000025d,0x0008004f,0x0000000f,
|
||||
0x0000025f,0x000004e7,0x000004e7,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,
|
||||
0x0000035b,0x0000007b,0x0000016a,0x0004003d,0x00000006,0x0000035c,0x0000035b,0x000500b7,
|
||||
0x00000037,0x0000035d,0x0000035c,0x00000064,0x000300f7,0x0000036b,0x00000000,0x000400fa,
|
||||
0x0000035d,0x0000035e,0x0000036b,0x000200f8,0x0000035e,0x00050051,0x00000006,0x00000360,
|
||||
0x000004e7,0x00000000,0x000500bc,0x00000037,0x00000374,0x00000360,0x00000036,0x000300f7,
|
||||
0x0000037e,0x00000000,0x000400fa,0x00000374,0x00000375,0x00000378,0x000200f8,0x00000375,
|
||||
0x00050085,0x00000006,0x00000377,0x00000360,0x000004d5,0x000200f9,0x0000037e,0x000200f8,
|
||||
0x00000378,0x00050081,0x00000006,0x0000037a,0x00000360,0x00000040,0x0006000c,0x00000006,
|
||||
0x0000037b,0x00000001,0x00000004,0x0000037a,0x00050085,0x00000006,0x0000037c,0x0000037b,
|
||||
0x000004d4,0x0007000c,0x00000006,0x0000037d,0x00000001,0x0000001a,0x0000037c,0x00000045,
|
||||
0x000200f9,0x0000037e,0x000200f8,0x0000037e,0x000700f5,0x00000006,0x000004fe,0x00000377,
|
||||
0x00000375,0x0000037d,0x00000378,0x00050051,0x00000006,0x00000364,0x000004e7,0x00000001,
|
||||
0x000500bc,0x00000037,0x00000383,0x00000364,0x00000036,0x000300f7,0x0000038d,0x00000000,
|
||||
0x000400fa,0x00000383,0x00000384,0x00000387,0x000200f8,0x00000384,0x00050085,0x00000006,
|
||||
0x00000386,0x00000364,0x000004d5,0x000200f9,0x0000038d,0x000200f8,0x00000387,0x00050081,
|
||||
0x00000006,0x00000389,0x00000364,0x00000040,0x0006000c,0x00000006,0x0000038a,0x00000001,
|
||||
0x00000004,0x00000389,0x00050085,0x00000006,0x0000038b,0x0000038a,0x000004d4,0x0007000c,
|
||||
0x00000006,0x0000038c,0x00000001,0x0000001a,0x0000038b,0x00000045,0x000200f9,0x0000038d,
|
||||
0x000200f8,0x0000038d,0x000700f5,0x00000006,0x00000500,0x00000386,0x00000384,0x0000038c,
|
||||
0x00000387,0x00050051,0x00000006,0x00000368,0x000004e7,0x00000002,0x000500bc,0x00000037,
|
||||
0x00000392,0x00000368,0x00000036,0x000300f7,0x0000039c,0x00000000,0x000400fa,0x00000392,
|
||||
0x00000393,0x00000396,0x000200f8,0x00000393,0x00050085,0x00000006,0x00000395,0x00000368,
|
||||
0x000004d5,0x000200f9,0x0000039c,0x000200f8,0x00000396,0x00050081,0x00000006,0x00000398,
|
||||
0x00000368,0x00000040,0x0006000c,0x00000006,0x00000399,0x00000001,0x00000004,0x00000398,
|
||||
0x00050085,0x00000006,0x0000039a,0x00000399,0x000004d4,0x0007000c,0x00000006,0x0000039b,
|
||||
0x00000001,0x0000001a,0x0000039a,0x00000045,0x000200f9,0x0000039c,0x000200f8,0x0000039c,
|
||||
0x000700f5,0x00000006,0x00000502,0x00000395,0x00000393,0x0000039b,0x00000396,0x00060050,
|
||||
0x0000000f,0x0000050e,0x000004fe,0x00000500,0x00000502,0x000200f9,0x0000036b,0x000200f8,
|
||||
0x0000036b,0x000700f5,0x0000000f,0x00000504,0x0000025f,0x0000025d,0x0000050e,0x0000039c,
|
||||
0x00050041,0x0000007e,0x0000036d,0x0000007b,0x0000015a,0x0004003d,0x00000006,0x0000036e,
|
||||
0x0000036d,0x0005008e,0x0000000f,0x0000036f,0x00000504,0x0000036e,0x00050051,0x00000006,
|
||||
0x00000262,0x0000036f,0x00000000,0x00050051,0x00000006,0x00000264,0x0000036f,0x00000001,
|
||||
0x00050051,0x00000006,0x00000266,0x0000036f,0x00000002,0x00050051,0x00000006,0x00000268,
|
||||
0x000004e7,0x00000003,0x00070050,0x00000018,0x000004d6,0x00000262,0x00000264,0x00000266,
|
||||
0x00000268,0x000200f9,0x0000029a,0x000200f8,0x0000026a,0x00050041,0x0000007e,0x0000026b,
|
||||
0x0000007b,0x00000098,0x0004003d,0x00000006,0x0000026c,0x0000026b,0x000500b4,0x00000037,
|
||||
0x0000026d,0x0000026c,0x00000094,0x000300f7,0x00000299,0x00000000,0x000400fa,0x0000026d,
|
||||
0x0000026e,0x0000027b,0x000200f8,0x0000026e,0x0008004f,0x0000000f,0x00000270,0x000004e7,
|
||||
0x000004e7,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x000003a5,0x0000007b,
|
||||
0x0000015a,0x0004003d,0x00000006,0x000003a6,0x000003a5,0x0005008e,0x0000000f,0x000003a7,
|
||||
0x00000270,0x000003a6,0x00050041,0x0000007e,0x000003a8,0x0000007b,0x0000016a,0x0004003d,
|
||||
0x00000006,0x000003a9,0x000003a8,0x000500b7,0x00000037,0x000003aa,0x000003a9,0x00000064,
|
||||
0x000400a8,0x00000037,0x000003ab,0x000003aa,0x000300f7,0x000003bd,0x00000000,0x000400fa,
|
||||
0x000003ab,0x000003ac,0x000003bd,0x000200f8,0x000003ac,0x00050051,0x00000006,0x000003ae,
|
||||
0x000003a7,0x00000000,0x000500bc,0x00000037,0x000003c2,0x000003ae,0x0000004b,0x000300f7,
|
||||
0x000003cc,0x00000000,0x000400fa,0x000003c2,0x000003c3,0x000003c6,0x000200f8,0x000003c3,
|
||||
0x00050085,0x00000006,0x000003c5,0x000003ae,0x0000003c,0x000200f9,0x000003cc,0x000200f8,
|
||||
0x000003c6,0x0006000c,0x00000006,0x000003c8,0x00000001,0x00000004,0x000003ae,0x0007000c,
|
||||
0x00000006,0x000003c9,0x00000001,0x0000001a,0x000003c8,0x00000054,0x0008000c,0x00000006,
|
||||
0x000003cb,0x00000001,0x00000032,0x000003c9,0x00000043,0x000004d8,0x000200f9,0x000003cc,
|
||||
0x000200f8,0x000003cc,0x000700f5,0x00000006,0x000004f3,0x000003c5,0x000003c3,0x000003cb,
|
||||
0x000003c6,0x00050051,0x00000006,0x000003b2,0x000003a7,0x00000001,0x000500bc,0x00000037,
|
||||
0x000003d1,0x000003b2,0x0000004b,0x000300f7,0x000003db,0x00000000,0x000400fa,0x000003d1,
|
||||
0x000003d2,0x000003d5,0x000200f8,0x000003d2,0x00050085,0x00000006,0x000003d4,0x000003b2,
|
||||
0x0000003c,0x000200f9,0x000003db,0x000200f8,0x000003d5,0x0006000c,0x00000006,0x000003d7,
|
||||
0x00000001,0x00000004,0x000003b2,0x0007000c,0x00000006,0x000003d8,0x00000001,0x0000001a,
|
||||
0x000003d7,0x00000054,0x0008000c,0x00000006,0x000003da,0x00000001,0x00000032,0x000003d8,
|
||||
0x00000043,0x000004d8,0x000200f9,0x000003db,0x000200f8,0x000003db,0x000700f5,0x00000006,
|
||||
0x000004f5,0x000003d4,0x000003d2,0x000003da,0x000003d5,0x00050051,0x00000006,0x000003b6,
|
||||
0x000003a7,0x00000002,0x000500bc,0x00000037,0x000003e0,0x000003b6,0x0000004b,0x000300f7,
|
||||
0x000003ea,0x00000000,0x000400fa,0x000003e0,0x000003e1,0x000003e4,0x000200f8,0x000003e1,
|
||||
0x00050085,0x00000006,0x000003e3,0x000003b6,0x0000003c,0x000200f9,0x000003ea,0x000200f8,
|
||||
0x000003e4,0x0006000c,0x00000006,0x000003e6,0x00000001,0x00000004,0x000003b6,0x0007000c,
|
||||
0x00000006,0x000003e7,0x00000001,0x0000001a,0x000003e6,0x00000054,0x0008000c,0x00000006,
|
||||
0x000003e9,0x00000001,0x00000032,0x000003e7,0x00000043,0x000004d8,0x000200f9,0x000003ea,
|
||||
0x000200f8,0x000003ea,0x000700f5,0x00000006,0x000004f7,0x000003e3,0x000003e1,0x000003e9,
|
||||
0x000003e4,0x00060050,0x0000000f,0x0000050d,0x000004f3,0x000004f5,0x000004f7,0x0008000c,
|
||||
0x0000000f,0x000003bc,0x00000001,0x0000002b,0x0000050d,0x00000065,0x000004ce,0x000200f9,
|
||||
0x000003bd,0x000200f8,0x000003bd,0x000700f5,0x0000000f,0x000004f9,0x000003a7,0x0000026e,
|
||||
0x000003bc,0x000003ea,0x00050051,0x00000006,0x00000273,0x000004f9,0x00000000,0x00050051,
|
||||
0x00000006,0x00000275,0x000004f9,0x00000001,0x00050051,0x00000006,0x00000277,0x000004f9,
|
||||
0x00000002,0x00050051,0x00000006,0x00000279,0x000004e7,0x00000003,0x00070050,0x00000018,
|
||||
0x000004d3,0x00000273,0x00000275,0x00000277,0x00000279,0x000200f9,0x00000299,0x000200f8,
|
||||
0x0000027b,0x00050041,0x0000007e,0x0000027c,0x0000007b,0x00000098,0x0004003d,0x00000006,
|
||||
0x0000027d,0x0000027c,0x000500b4,0x00000037,0x0000027e,0x0000027d,0x0000013a,0x000300f7,
|
||||
0x00000298,0x00000000,0x000400fa,0x0000027e,0x0000027f,0x00000295,0x000200f8,0x0000027f,
|
||||
0x0008004f,0x0000000f,0x00000281,0x000004e7,0x000004e7,0x00000000,0x00000001,0x00000002,
|
||||
0x00050090,0x0000000f,0x00000282,0x00000281,0x000000e1,0x00050051,0x00000006,0x00000284,
|
||||
0x00000282,0x00000000,0x00060052,0x00000018,0x000004a4,0x00000284,0x0000050f,0x00000000,
|
||||
0x00050051,0x00000006,0x00000286,0x00000282,0x00000001,0x00060052,0x00000018,0x000004a6,
|
||||
0x00000286,0x000004a4,0x00000001,0x00050051,0x00000006,0x00000288,0x00000282,0x00000002,
|
||||
0x00060052,0x00000018,0x000004a8,0x00000288,0x000004a6,0x00000002,0x0008004f,0x0000000f,
|
||||
0x0000028a,0x000004a8,0x000004a8,0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,
|
||||
0x000003f3,0x0000007b,0x0000015a,0x0004003d,0x00000006,0x000003f4,0x000003f3,0x0005008e,
|
||||
0x0000000f,0x000003f5,0x0000028a,0x000003f4,0x00050041,0x0000007e,0x000003f6,0x0000007b,
|
||||
0x0000016a,0x0004003d,0x00000006,0x000003f7,0x000003f6,0x000500b7,0x00000037,0x000003f8,
|
||||
0x000003f7,0x00000064,0x000400a8,0x00000037,0x000003f9,0x000003f8,0x000300f7,0x0000040b,
|
||||
0x00000000,0x000400fa,0x000003f9,0x000003fa,0x0000040b,0x000200f8,0x000003fa,0x00050051,
|
||||
0x00000006,0x000003fc,0x000003f5,0x00000000,0x000500bc,0x00000037,0x00000410,0x000003fc,
|
||||
0x0000004b,0x000300f7,0x0000041a,0x00000000,0x000400fa,0x00000410,0x00000411,0x00000414,
|
||||
0x000200f8,0x00000411,0x00050085,0x00000006,0x00000413,0x000003fc,0x0000003c,0x000200f9,
|
||||
0x0000041a,0x000200f8,0x00000414,0x0006000c,0x00000006,0x00000416,0x00000001,0x00000004,
|
||||
0x000003fc,0x0007000c,0x00000006,0x00000417,0x00000001,0x0000001a,0x00000416,0x00000054,
|
||||
0x0008000c,0x00000006,0x00000419,0x00000001,0x00000032,0x00000417,0x00000043,0x000004d8,
|
||||
0x000200f9,0x0000041a,0x000200f8,0x0000041a,0x000700f5,0x00000006,0x000004e8,0x00000413,
|
||||
0x00000411,0x00000419,0x00000414,0x00050051,0x00000006,0x00000400,0x000003f5,0x00000001,
|
||||
0x000500bc,0x00000037,0x0000041f,0x00000400,0x0000004b,0x000300f7,0x00000429,0x00000000,
|
||||
0x000400fa,0x0000041f,0x00000420,0x00000423,0x000200f8,0x00000420,0x00050085,0x00000006,
|
||||
0x00000422,0x00000400,0x0000003c,0x000200f9,0x00000429,0x000200f8,0x00000423,0x0006000c,
|
||||
0x00000006,0x00000425,0x00000001,0x00000004,0x00000400,0x0007000c,0x00000006,0x00000426,
|
||||
0x00000001,0x0000001a,0x00000425,0x00000054,0x0008000c,0x00000006,0x00000428,0x00000001,
|
||||
0x00000032,0x00000426,0x00000043,0x000004d8,0x000200f9,0x00000429,0x000200f8,0x00000429,
|
||||
0x000700f5,0x00000006,0x000004ea,0x00000422,0x00000420,0x00000428,0x00000423,0x00050051,
|
||||
0x00000006,0x00000404,0x000003f5,0x00000002,0x000500bc,0x00000037,0x0000042e,0x00000404,
|
||||
0x0000004b,0x000300f7,0x00000438,0x00000000,0x000400fa,0x0000042e,0x0000042f,0x00000432,
|
||||
0x000200f8,0x0000042f,0x00050085,0x00000006,0x00000431,0x00000404,0x0000003c,0x000200f9,
|
||||
0x00000438,0x000200f8,0x00000432,0x0006000c,0x00000006,0x00000434,0x00000001,0x00000004,
|
||||
0x00000404,0x0007000c,0x00000006,0x00000435,0x00000001,0x0000001a,0x00000434,0x00000054,
|
||||
0x0008000c,0x00000006,0x00000437,0x00000001,0x00000032,0x00000435,0x00000043,0x000004d8,
|
||||
0x000200f9,0x00000438,0x000200f8,0x00000438,0x000700f5,0x00000006,0x000004ec,0x00000431,
|
||||
0x0000042f,0x00000437,0x00000432,0x00060050,0x0000000f,0x0000050c,0x000004e8,0x000004ea,
|
||||
0x000004ec,0x0008000c,0x0000000f,0x0000040a,0x00000001,0x0000002b,0x0000050c,0x00000065,
|
||||
0x000004ce,0x000200f9,0x0000040b,0x000200f8,0x0000040b,0x000700f5,0x0000000f,0x000004ee,
|
||||
0x000003f5,0x0000027f,0x0000040a,0x00000438,0x00050051,0x00000006,0x0000028d,0x000004ee,
|
||||
0x00000000,0x00050051,0x00000006,0x0000028f,0x000004ee,0x00000001,0x00050051,0x00000006,
|
||||
0x00000291,0x000004ee,0x00000002,0x00050051,0x00000006,0x00000293,0x000004e7,0x00000003,
|
||||
0x00070050,0x00000018,0x000004cf,0x0000028d,0x0000028f,0x00000291,0x00000293,0x000200f9,
|
||||
0x00000298,0x000200f8,0x00000295,0x0008004f,0x0000000f,0x0000043e,0x000004e7,0x000004e7,
|
||||
0x00000000,0x00000001,0x00000002,0x00050041,0x0000007e,0x0000043f,0x0000007b,0x0000015a,
|
||||
0x0004003d,0x00000006,0x00000440,0x0000043f,0x0005008e,0x0000000f,0x00000441,0x0000043e,
|
||||
0x00000440,0x00050051,0x00000006,0x00000443,0x00000441,0x00000000,0x00050051,0x00000006,
|
||||
0x00000445,0x00000441,0x00000001,0x00050051,0x00000006,0x00000447,0x00000441,0x00000002,
|
||||
0x00050051,0x00000006,0x00000449,0x000004e7,0x00000003,0x00070050,0x00000018,0x000004ca,
|
||||
0x00000443,0x00000445,0x00000447,0x00000449,0x000200f9,0x00000298,0x000200f8,0x00000298,
|
||||
0x000700f5,0x00000018,0x0000050b,0x000004cf,0x0000040b,0x000004ca,0x00000295,0x000200f9,
|
||||
0x00000299,0x000200f8,0x00000299,0x000700f5,0x00000018,0x0000050a,0x000004d3,0x000003bd,
|
||||
0x0000050b,0x00000298,0x000200f9,0x0000029a,0x000200f8,0x0000029a,0x000700f5,0x00000018,
|
||||
0x00000509,0x000004d6,0x0000036b,0x0000050a,0x00000299,0x00050085,0x00000018,0x0000029e,
|
||||
0x00000509,0x00000225,0x0003003e,0x00000228,0x0000029e,0x000100fd,0x00010038
|
||||
0x00000003,0x00040017,0x00000018,0x00000006,0x00000002,0x00040017,0x0000001a,0x00000006,
|
||||
0x00000004,0x0004002b,0x00000006,0x0000003e,0x3d25aee6,0x00020014,0x0000003f,0x0004002b,
|
||||
0x00000006,0x00000044,0x414eb852,0x0004002b,0x00000006,0x00000048,0x3d6147ae,0x0004002b,
|
||||
0x00000006,0x0000004b,0x3f870a3d,0x0004002b,0x00000006,0x0000004d,0x4019999a,0x0004002b,
|
||||
0x00000006,0x00000053,0x3b4d2e1c,0x0004002b,0x00000006,0x0000005c,0x3ed55555,0x0004002b,
|
||||
0x00000006,0x00000066,0x3c4fcdac,0x0006002c,0x0000000f,0x00000067,0x00000066,0x00000066,
|
||||
0x00000066,0x0004002b,0x00000006,0x00000069,0x3f560000,0x0004002b,0x00000006,0x0000006c,
|
||||
0x00000000,0x0006002c,0x0000000f,0x0000006d,0x0000006c,0x0000006c,0x0000006c,0x0004002b,
|
||||
0x00000006,0x00000070,0x4196d000,0x0004002b,0x00000006,0x00000071,0x41958000,0x0004002b,
|
||||
0x00000006,0x00000078,0x461c4000,0x0004002b,0x00000006,0x0000007d,0x40c8e06b,0x0006002c,
|
||||
0x0000000f,0x0000007e,0x0000007d,0x0000007d,0x0000007d,0x000b001e,0x00000081,0x00000006,
|
||||
0x00000006,0x00000006,0x00000006,0x0000001a,0x00000006,0x00000006,0x00000006,0x00000006,
|
||||
0x00040020,0x00000082,0x00000002,0x00000081,0x0004003b,0x00000082,0x00000083,0x00000002,
|
||||
0x00040015,0x00000084,0x00000020,0x00000001,0x0004002b,0x00000084,0x00000085,0x00000008,
|
||||
0x00040020,0x00000086,0x00000002,0x00000006,0x0004002b,0x00000084,0x0000008d,0x00000005,
|
||||
0x0004002b,0x00000006,0x00000090,0x3f800000,0x0004002b,0x00000084,0x00000094,0x00000006,
|
||||
0x0004002b,0x00000006,0x0000009c,0x40000000,0x0004002b,0x00000084,0x000000a0,0x00000002,
|
||||
0x00040018,0x000000a7,0x0000000f,0x00000003,0x0004002b,0x00000006,0x000000a8,0x3f209d8c,
|
||||
0x0004002b,0x00000006,0x000000a9,0x3ea897c8,0x0004002b,0x00000006,0x000000aa,0x3d3168f9,
|
||||
0x0006002c,0x0000000f,0x000000ab,0x000000a8,0x000000a9,0x000000aa,0x0004002b,0x00000006,
|
||||
0x000000ac,0x3d8d82ba,0x0004002b,0x00000006,0x000000ad,0x3f6b670a,0x0004002b,0x00000006,
|
||||
0x000000ae,0x3c3a27af,0x0006002c,0x0000000f,0x000000af,0x000000ac,0x000000ad,0x000000ae,
|
||||
0x0004002b,0x00000006,0x000000b0,0x3c86466b,0x0004002b,0x00000006,0x000000b1,0x3db44029,
|
||||
0x0004002b,0x00000006,0x000000b2,0x3f6545b7,0x0006002c,0x0000000f,0x000000b3,0x000000b0,
|
||||
0x000000b1,0x000000b2,0x0006002c,0x000000a7,0x000000b4,0x000000ab,0x000000af,0x000000b3,
|
||||
0x0004002b,0x00000084,0x000000cd,0x00000007,0x0004002b,0x00000006,0x000000dd,0x3fd48b22,
|
||||
0x0004002b,0x00000006,0x000000de,0xbf1670a0,0x0004002b,0x00000006,0x000000df,0xbd952d23,
|
||||
0x0006002c,0x0000000f,0x000000e0,0x000000dd,0x000000de,0x000000df,0x0004002b,0x00000006,
|
||||
0x000000e1,0xbdff127f,0x0004002b,0x00000006,0x000000e2,0x3f9102b4,0x0004002b,0x00000006,
|
||||
0x000000e3,0xbc08c60d,0x0006002c,0x0000000f,0x000000e4,0x000000e1,0x000000e2,0x000000e3,
|
||||
0x0004002b,0x00000006,0x000000e5,0xbc94b7b3,0x0004002b,0x00000006,0x000000e6,0xbdce05cd,
|
||||
0x0004002b,0x00000006,0x000000e7,0x3f8f333c,0x0006002c,0x0000000f,0x000000e8,0x000000e5,
|
||||
0x000000e6,0x000000e7,0x0006002c,0x000000a7,0x000000e9,0x000000e0,0x000000e4,0x000000e8,
|
||||
0x00090019,0x000000ef,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,0x00000001,
|
||||
0x00000000,0x0003001b,0x000000f0,0x000000ef,0x00040020,0x000000f1,0x00000000,0x000000f0,
|
||||
0x0004003b,0x000000f1,0x000000f2,0x00000000,0x0004002b,0x00000006,0x000000f7,0x437f0000,
|
||||
0x0004003b,0x000000f1,0x000000f9,0x00000000,0x0004002b,0x00000006,0x000000fc,0x3f000000,
|
||||
0x0004002b,0x00000084,0x00000106,0x00000004,0x00040020,0x00000107,0x00000002,0x0000001a,
|
||||
0x0004002b,0x00000006,0x00000154,0x3727c5ac,0x0005002c,0x00000018,0x00000155,0x00000154,
|
||||
0x00000154,0x0005002c,0x00000018,0x00000156,0x00000090,0x00000090,0x0004002b,0x00000084,
|
||||
0x00000174,0x00000001,0x0004002b,0x00000006,0x00000196,0x40400000,0x0004002b,0x00000006,
|
||||
0x000001a1,0x40800000,0x0004002b,0x00000006,0x000001ac,0x40a00000,0x0004002b,0x00000084,
|
||||
0x000001c4,0x00000003,0x0004002b,0x00000084,0x000001d4,0x00000000,0x00040020,0x00000286,
|
||||
0x00000001,0x0000001a,0x00040020,0x0000028a,0x00000001,0x00000018,0x0004003b,0x0000028a,
|
||||
0x0000028b,0x00000001,0x0004003b,0x00000286,0x0000028e,0x00000001,0x00040020,0x00000291,
|
||||
0x00000003,0x0000001a,0x0004003b,0x00000291,0x00000292,0x00000003,0x0005002c,0x00000018,
|
||||
0x0000066e,0x000000fc,0x000000fc,0x0004002b,0x00000006,0x0000066f,0x3b800000,0x0006002c,
|
||||
0x0000000f,0x00000671,0x00000069,0x00000069,0x00000069,0x0006002c,0x0000000f,0x00000672,
|
||||
0x00000070,0x00000070,0x00000070,0x0006002c,0x0000000f,0x00000677,0x00000090,0x00000090,
|
||||
0x00000090,0x0004002b,0x00000006,0x0000067d,0x3f72a76f,0x0004002b,0x00000006,0x0000067e,
|
||||
0x3d9e8391,0x0007002c,0x0000001a,0x00000680,0x00000090,0x0000006c,0x00000090,0x00000090,
|
||||
0x0004002b,0x00000006,0x00000681,0xbd6147ae,0x00030001,0x0000001a,0x000006ba,0x00050036,
|
||||
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x00000018,
|
||||
0x0000028c,0x0000028b,0x0004003d,0x0000001a,0x0000028f,0x0000028e,0x00050041,0x00000086,
|
||||
0x00000313,0x00000083,0x00000174,0x0004003d,0x00000006,0x00000314,0x00000313,0x000500b4,
|
||||
0x0000003f,0x00000315,0x00000314,0x00000090,0x000300f7,0x0000034f,0x00000000,0x000400fa,
|
||||
0x00000315,0x00000316,0x0000031b,0x000200f8,0x00000316,0x0004003d,0x000000f0,0x00000317,
|
||||
0x000000f2,0x00050057,0x0000001a,0x0000031a,0x00000317,0x0000028c,0x000200f9,0x0000034f,
|
||||
0x000200f8,0x0000031b,0x00050041,0x00000086,0x0000031c,0x00000083,0x00000174,0x0004003d,
|
||||
0x00000006,0x0000031d,0x0000031c,0x000500b4,0x0000003f,0x0000031e,0x0000031d,0x0000009c,
|
||||
0x000300f7,0x0000034e,0x00000000,0x000400fa,0x0000031e,0x0000031f,0x0000032c,0x000200f8,
|
||||
0x0000031f,0x000400d1,0x00000018,0x00000357,0x0000028c,0x00050041,0x00000107,0x00000358,
|
||||
0x00000083,0x00000106,0x0004003d,0x0000001a,0x00000359,0x00000358,0x0007004f,0x00000018,
|
||||
0x0000035a,0x00000359,0x00000359,0x00000002,0x00000003,0x00050085,0x00000018,0x0000035b,
|
||||
0x00000357,0x0000035a,0x0008000c,0x00000018,0x0000035c,0x00000001,0x0000002b,0x0000035b,
|
||||
0x00000155,0x00000156,0x00050041,0x00000107,0x0000035e,0x00000083,0x00000106,0x0004003d,
|
||||
0x0000001a,0x0000035f,0x0000035e,0x0007004f,0x00000018,0x00000360,0x0000035f,0x0000035f,
|
||||
0x00000002,0x00000003,0x0005008e,0x00000018,0x00000363,0x0000035c,0x000000fc,0x0004007f,
|
||||
0x00000018,0x00000670,0x00000363,0x0008000c,0x00000018,0x00000364,0x00000001,0x00000032,
|
||||
0x0000028c,0x00000360,0x00000670,0x00050083,0x00000018,0x00000367,0x00000156,0x0000035c,
|
||||
0x0006000c,0x00000018,0x00000369,0x00000001,0x0000000a,0x00000364,0x0008000c,0x00000018,
|
||||
0x0000036a,0x00000001,0x00000031,0x00000367,0x00000156,0x00000369,0x0006000c,0x00000018,
|
||||
0x0000036c,0x00000001,0x00000008,0x00000364,0x00050081,0x00000018,0x0000036e,0x0000036c,
|
||||
0x0000066e,0x00050081,0x00000018,0x00000370,0x0000036e,0x0000036a,0x00050041,0x00000107,
|
||||
0x00000371,0x00000083,0x00000106,0x0004003d,0x0000001a,0x00000372,0x00000371,0x0007004f,
|
||||
0x00000018,0x00000373,0x00000372,0x00000372,0x00000000,0x00000001,0x00050085,0x00000018,
|
||||
0x00000374,0x00000370,0x00000373,0x0004003d,0x000000f0,0x00000323,0x000000f2,0x000400cf,
|
||||
0x00000018,0x00000327,0x0000028c,0x000400d0,0x00000018,0x0000032a,0x0000028c,0x00080058,
|
||||
0x0000001a,0x0000032b,0x00000323,0x00000374,0x00000004,0x00000327,0x0000032a,0x000200f9,
|
||||
0x0000034e,0x000200f8,0x0000032c,0x00050041,0x00000086,0x0000032d,0x00000083,0x00000174,
|
||||
0x0004003d,0x00000006,0x0000032e,0x0000032d,0x000500b4,0x0000003f,0x0000032f,0x0000032e,
|
||||
0x00000196,0x000300f7,0x0000034d,0x00000000,0x000400fa,0x0000032f,0x00000330,0x00000334,
|
||||
0x000200f8,0x00000330,0x0004003d,0x000000f0,0x00000378,0x000000f2,0x00050057,0x0000001a,
|
||||
0x0000037a,0x00000378,0x0000028c,0x00050051,0x00000006,0x0000037b,0x0000037a,0x00000000,
|
||||
0x0004003d,0x000000f0,0x0000037d,0x000000f9,0x0008000c,0x00000006,0x0000037f,0x00000001,
|
||||
0x00000032,0x0000037b,0x000000f7,0x000000fc,0x00050085,0x00000006,0x00000380,0x0000037f,
|
||||
0x0000066f,0x00050050,0x00000018,0x00000381,0x00000380,0x000000fc,0x00050057,0x0000001a,
|
||||
0x00000382,0x0000037d,0x00000381,0x000200f9,0x0000034d,0x000200f8,0x00000334,0x00050041,
|
||||
0x00000086,0x00000335,0x00000083,0x00000174,0x0004003d,0x00000006,0x00000336,0x00000335,
|
||||
0x000500b4,0x0000003f,0x00000337,0x00000336,0x000001a1,0x000300f7,0x0000034c,0x00000000,
|
||||
0x000400fa,0x00000337,0x00000338,0x0000033c,0x000200f8,0x00000338,0x00050041,0x00000107,
|
||||
0x00000391,0x00000083,0x00000106,0x0004003d,0x0000001a,0x00000392,0x00000391,0x0007004f,
|
||||
0x00000018,0x00000393,0x00000392,0x00000392,0x00000002,0x00000003,0x0008000c,0x00000018,
|
||||
0x00000396,0x00000001,0x00000032,0x0000028c,0x00000393,0x0000066e,0x0006000c,0x00000018,
|
||||
0x00000398,0x00000001,0x00000008,0x00000396,0x00050083,0x00000018,0x0000039a,0x00000398,
|
||||
0x0000066e,0x00050041,0x00000107,0x0000039b,0x00000083,0x00000106,0x0004003d,0x0000001a,
|
||||
0x0000039c,0x0000039b,0x0007004f,0x00000018,0x0000039d,0x0000039c,0x0000039c,0x00000000,
|
||||
0x00000001,0x00050085,0x00000018,0x0000039e,0x0000039a,0x0000039d,0x0006000c,0x00000018,
|
||||
0x000003a0,0x00000001,0x00000008,0x00000396,0x00050081,0x00000018,0x000003a2,0x000003a0,
|
||||
0x0000066e,0x00050041,0x00000107,0x000003a3,0x00000083,0x00000106,0x0004003d,0x0000001a,
|
||||
0x000003a4,0x000003a3,0x0007004f,0x00000018,0x000003a5,0x000003a4,0x000003a4,0x00000000,
|
||||
0x00000001,0x00050085,0x00000018,0x000003a6,0x000003a2,0x000003a5,0x00050051,0x00000006,
|
||||
0x000003a7,0x0000039e,0x00000000,0x00050051,0x00000006,0x000003a8,0x0000039e,0x00000001,
|
||||
0x00050051,0x00000006,0x000003a9,0x000003a6,0x00000000,0x00050051,0x00000006,0x000003aa,
|
||||
0x000003a6,0x00000001,0x00070050,0x0000001a,0x000003ab,0x000003a7,0x000003a8,0x000003a9,
|
||||
0x000003aa,0x0006000c,0x00000018,0x000003ad,0x00000001,0x0000000a,0x00000396,0x0007004f,
|
||||
0x00000018,0x000003af,0x000003ab,0x000003ab,0x00000000,0x00000001,0x0004003d,0x000000f0,
|
||||
0x000003cd,0x000000f2,0x00050057,0x0000001a,0x000003cf,0x000003cd,0x000003af,0x00050051,
|
||||
0x00000006,0x000003d0,0x000003cf,0x00000000,0x0004003d,0x000000f0,0x000003d2,0x000000f9,
|
||||
0x0008000c,0x00000006,0x000003d4,0x00000001,0x00000032,0x000003d0,0x000000f7,0x000000fc,
|
||||
0x00050085,0x00000006,0x000003d5,0x000003d4,0x0000066f,0x00050050,0x00000018,0x000003d6,
|
||||
0x000003d5,0x000000fc,0x00050057,0x0000001a,0x000003d7,0x000003d2,0x000003d6,0x0007004f,
|
||||
0x00000018,0x000003b2,0x000003ab,0x000003ab,0x00000000,0x00000003,0x0004003d,0x000000f0,
|
||||
0x000003db,0x000000f2,0x00050057,0x0000001a,0x000003dd,0x000003db,0x000003b2,0x00050051,
|
||||
0x00000006,0x000003de,0x000003dd,0x00000000,0x0004003d,0x000000f0,0x000003e0,0x000000f9,
|
||||
0x0008000c,0x00000006,0x000003e2,0x00000001,0x00000032,0x000003de,0x000000f7,0x000000fc,
|
||||
0x00050085,0x00000006,0x000003e3,0x000003e2,0x0000066f,0x00050050,0x00000018,0x000003e4,
|
||||
0x000003e3,0x000000fc,0x00050057,0x0000001a,0x000003e5,0x000003e0,0x000003e4,0x0007004f,
|
||||
0x00000018,0x000003b5,0x000003ab,0x000003ab,0x00000002,0x00000001,0x0004003d,0x000000f0,
|
||||
0x000003e9,0x000000f2,0x00050057,0x0000001a,0x000003eb,0x000003e9,0x000003b5,0x00050051,
|
||||
0x00000006,0x000003ec,0x000003eb,0x00000000,0x0004003d,0x000000f0,0x000003ee,0x000000f9,
|
||||
0x0008000c,0x00000006,0x000003f0,0x00000001,0x00000032,0x000003ec,0x000000f7,0x000000fc,
|
||||
0x00050085,0x00000006,0x000003f1,0x000003f0,0x0000066f,0x00050050,0x00000018,0x000003f2,
|
||||
0x000003f1,0x000000fc,0x00050057,0x0000001a,0x000003f3,0x000003ee,0x000003f2,0x0007004f,
|
||||
0x00000018,0x000003b8,0x000003ab,0x000003ab,0x00000002,0x00000003,0x0004003d,0x000000f0,
|
||||
0x000003f7,0x000000f2,0x00050057,0x0000001a,0x000003f9,0x000003f7,0x000003b8,0x00050051,
|
||||
0x00000006,0x000003fa,0x000003f9,0x00000000,0x0004003d,0x000000f0,0x000003fc,0x000000f9,
|
||||
0x0008000c,0x00000006,0x000003fe,0x00000001,0x00000032,0x000003fa,0x000000f7,0x000000fc,
|
||||
0x00050085,0x00000006,0x000003ff,0x000003fe,0x0000066f,0x00050050,0x00000018,0x00000400,
|
||||
0x000003ff,0x000000fc,0x00050057,0x0000001a,0x00000401,0x000003fc,0x00000400,0x00050051,
|
||||
0x00000006,0x000003bd,0x000003ad,0x00000001,0x00070050,0x0000001a,0x000003be,0x000003bd,
|
||||
0x000003bd,0x000003bd,0x000003bd,0x0008000c,0x0000001a,0x000003bf,0x00000001,0x0000002e,
|
||||
0x000003d7,0x000003e5,0x000003be,0x00050051,0x00000006,0x000003c3,0x000003ad,0x00000001,
|
||||
0x00070050,0x0000001a,0x000003c4,0x000003c3,0x000003c3,0x000003c3,0x000003c3,0x0008000c,
|
||||
0x0000001a,0x000003c5,0x00000001,0x0000002e,0x000003f3,0x00000401,0x000003c4,0x00050051,
|
||||
0x00000006,0x000003c7,0x000003ad,0x00000000,0x00070050,0x0000001a,0x000003c8,0x000003c7,
|
||||
0x000003c7,0x000003c7,0x000003c7,0x0008000c,0x0000001a,0x000003c9,0x00000001,0x0000002e,
|
||||
0x000003bf,0x000003c5,0x000003c8,0x000200f9,0x0000034c,0x000200f8,0x0000033c,0x00050041,
|
||||
0x00000086,0x0000033d,0x00000083,0x00000174,0x0004003d,0x00000006,0x0000033e,0x0000033d,
|
||||
0x000500b4,0x0000003f,0x0000033f,0x0000033e,0x000001ac,0x000300f7,0x0000034b,0x00000000,
|
||||
0x000400fa,0x0000033f,0x00000340,0x00000346,0x000200f8,0x00000340,0x000400d1,0x00000018,
|
||||
0x00000408,0x0000028c,0x00050041,0x00000107,0x00000409,0x00000083,0x00000106,0x0004003d,
|
||||
0x0000001a,0x0000040a,0x00000409,0x0007004f,0x00000018,0x0000040b,0x0000040a,0x0000040a,
|
||||
0x00000002,0x00000003,0x00050085,0x00000018,0x0000040c,0x00000408,0x0000040b,0x0008000c,
|
||||
0x00000018,0x0000040d,0x00000001,0x0000002b,0x0000040c,0x00000155,0x00000156,0x00050041,
|
||||
0x00000107,0x0000040f,0x00000083,0x00000106,0x0004003d,0x0000001a,0x00000410,0x0000040f,
|
||||
0x0007004f,0x00000018,0x00000411,0x00000410,0x00000410,0x00000002,0x00000003,0x0005008e,
|
||||
0x00000018,0x00000414,0x0000040d,0x000000fc,0x0004007f,0x00000018,0x0000066d,0x00000414,
|
||||
0x0008000c,0x00000018,0x00000415,0x00000001,0x00000032,0x0000028c,0x00000411,0x0000066d,
|
||||
0x00050083,0x00000018,0x00000418,0x00000156,0x0000040d,0x0006000c,0x00000018,0x0000041a,
|
||||
0x00000001,0x0000000a,0x00000415,0x0008000c,0x00000018,0x0000041b,0x00000001,0x00000031,
|
||||
0x00000418,0x00000156,0x0000041a,0x0006000c,0x00000018,0x0000041d,0x00000001,0x00000008,
|
||||
0x00000415,0x00050081,0x00000018,0x0000041f,0x0000041d,0x0000066e,0x00050081,0x00000018,
|
||||
0x00000421,0x0000041f,0x0000041b,0x00050041,0x00000107,0x00000422,0x00000083,0x00000106,
|
||||
0x0004003d,0x0000001a,0x00000423,0x00000422,0x0007004f,0x00000018,0x00000424,0x00000423,
|
||||
0x00000423,0x00000000,0x00000001,0x00050085,0x00000018,0x00000425,0x00000421,0x00000424,
|
||||
0x00050041,0x00000107,0x00000434,0x00000083,0x00000106,0x0004003d,0x0000001a,0x00000435,
|
||||
0x00000434,0x0007004f,0x00000018,0x00000436,0x00000435,0x00000435,0x00000002,0x00000003,
|
||||
0x0008000c,0x00000018,0x00000439,0x00000001,0x00000032,0x00000425,0x00000436,0x0000066e,
|
||||
0x0006000c,0x00000018,0x0000043b,0x00000001,0x00000008,0x00000439,0x00050083,0x00000018,
|
||||
0x0000043d,0x0000043b,0x0000066e,0x00050041,0x00000107,0x0000043e,0x00000083,0x00000106,
|
||||
0x0004003d,0x0000001a,0x0000043f,0x0000043e,0x0007004f,0x00000018,0x00000440,0x0000043f,
|
||||
0x0000043f,0x00000000,0x00000001,0x00050085,0x00000018,0x00000441,0x0000043d,0x00000440,
|
||||
0x0006000c,0x00000018,0x00000443,0x00000001,0x00000008,0x00000439,0x00050081,0x00000018,
|
||||
0x00000445,0x00000443,0x0000066e,0x00050041,0x00000107,0x00000446,0x00000083,0x00000106,
|
||||
0x0004003d,0x0000001a,0x00000447,0x00000446,0x0007004f,0x00000018,0x00000448,0x00000447,
|
||||
0x00000447,0x00000000,0x00000001,0x00050085,0x00000018,0x00000449,0x00000445,0x00000448,
|
||||
0x00050051,0x00000006,0x0000044a,0x00000441,0x00000000,0x00050051,0x00000006,0x0000044b,
|
||||
0x00000441,0x00000001,0x00050051,0x00000006,0x0000044c,0x00000449,0x00000000,0x00050051,
|
||||
0x00000006,0x0000044d,0x00000449,0x00000001,0x00070050,0x0000001a,0x0000044e,0x0000044a,
|
||||
0x0000044b,0x0000044c,0x0000044d,0x0006000c,0x00000018,0x00000450,0x00000001,0x0000000a,
|
||||
0x00000439,0x0007004f,0x00000018,0x00000452,0x0000044e,0x0000044e,0x00000000,0x00000001,
|
||||
0x0004003d,0x000000f0,0x00000470,0x000000f2,0x00050057,0x0000001a,0x00000472,0x00000470,
|
||||
0x00000452,0x00050051,0x00000006,0x00000473,0x00000472,0x00000000,0x0004003d,0x000000f0,
|
||||
0x00000475,0x000000f9,0x0008000c,0x00000006,0x00000477,0x00000001,0x00000032,0x00000473,
|
||||
0x000000f7,0x000000fc,0x00050085,0x00000006,0x00000478,0x00000477,0x0000066f,0x00050050,
|
||||
0x00000018,0x00000479,0x00000478,0x000000fc,0x00050057,0x0000001a,0x0000047a,0x00000475,
|
||||
0x00000479,0x0007004f,0x00000018,0x00000455,0x0000044e,0x0000044e,0x00000000,0x00000003,
|
||||
0x0004003d,0x000000f0,0x0000047e,0x000000f2,0x00050057,0x0000001a,0x00000480,0x0000047e,
|
||||
0x00000455,0x00050051,0x00000006,0x00000481,0x00000480,0x00000000,0x0004003d,0x000000f0,
|
||||
0x00000483,0x000000f9,0x0008000c,0x00000006,0x00000485,0x00000001,0x00000032,0x00000481,
|
||||
0x000000f7,0x000000fc,0x00050085,0x00000006,0x00000486,0x00000485,0x0000066f,0x00050050,
|
||||
0x00000018,0x00000487,0x00000486,0x000000fc,0x00050057,0x0000001a,0x00000488,0x00000483,
|
||||
0x00000487,0x0007004f,0x00000018,0x00000458,0x0000044e,0x0000044e,0x00000002,0x00000001,
|
||||
0x0004003d,0x000000f0,0x0000048c,0x000000f2,0x00050057,0x0000001a,0x0000048e,0x0000048c,
|
||||
0x00000458,0x00050051,0x00000006,0x0000048f,0x0000048e,0x00000000,0x0004003d,0x000000f0,
|
||||
0x00000491,0x000000f9,0x0008000c,0x00000006,0x00000493,0x00000001,0x00000032,0x0000048f,
|
||||
0x000000f7,0x000000fc,0x00050085,0x00000006,0x00000494,0x00000493,0x0000066f,0x00050050,
|
||||
0x00000018,0x00000495,0x00000494,0x000000fc,0x00050057,0x0000001a,0x00000496,0x00000491,
|
||||
0x00000495,0x0007004f,0x00000018,0x0000045b,0x0000044e,0x0000044e,0x00000002,0x00000003,
|
||||
0x0004003d,0x000000f0,0x0000049a,0x000000f2,0x00050057,0x0000001a,0x0000049c,0x0000049a,
|
||||
0x0000045b,0x00050051,0x00000006,0x0000049d,0x0000049c,0x00000000,0x0004003d,0x000000f0,
|
||||
0x0000049f,0x000000f9,0x0008000c,0x00000006,0x000004a1,0x00000001,0x00000032,0x0000049d,
|
||||
0x000000f7,0x000000fc,0x00050085,0x00000006,0x000004a2,0x000004a1,0x0000066f,0x00050050,
|
||||
0x00000018,0x000004a3,0x000004a2,0x000000fc,0x00050057,0x0000001a,0x000004a4,0x0000049f,
|
||||
0x000004a3,0x00050051,0x00000006,0x00000460,0x00000450,0x00000001,0x00070050,0x0000001a,
|
||||
0x00000461,0x00000460,0x00000460,0x00000460,0x00000460,0x0008000c,0x0000001a,0x00000462,
|
||||
0x00000001,0x0000002e,0x0000047a,0x00000488,0x00000461,0x00050051,0x00000006,0x00000466,
|
||||
0x00000450,0x00000001,0x00070050,0x0000001a,0x00000467,0x00000466,0x00000466,0x00000466,
|
||||
0x00000466,0x0008000c,0x0000001a,0x00000468,0x00000001,0x0000002e,0x00000496,0x000004a4,
|
||||
0x00000467,0x00050051,0x00000006,0x0000046a,0x00000450,0x00000000,0x00070050,0x0000001a,
|
||||
0x0000046b,0x0000046a,0x0000046a,0x0000046a,0x0000046a,0x0008000c,0x0000001a,0x0000046c,
|
||||
0x00000001,0x0000002e,0x00000462,0x00000468,0x0000046b,0x000200f9,0x0000034b,0x000200f8,
|
||||
0x00000346,0x000200f9,0x0000034b,0x000200f8,0x0000034b,0x000700f5,0x0000001a,0x00000686,
|
||||
0x0000046c,0x00000340,0x00000680,0x00000346,0x000200f9,0x0000034c,0x000200f8,0x0000034c,
|
||||
0x000700f5,0x0000001a,0x00000685,0x000003c9,0x00000338,0x00000686,0x0000034b,0x000200f9,
|
||||
0x0000034d,0x000200f8,0x0000034d,0x000700f5,0x0000001a,0x00000684,0x00000382,0x00000330,
|
||||
0x00000685,0x0000034c,0x000200f9,0x0000034e,0x000200f8,0x0000034e,0x000700f5,0x0000001a,
|
||||
0x00000683,0x0000032b,0x0000031f,0x00000684,0x0000034d,0x000200f9,0x0000034f,0x000200f8,
|
||||
0x0000034f,0x000700f5,0x0000001a,0x00000682,0x0000031a,0x00000316,0x00000683,0x0000034e,
|
||||
0x00050041,0x00000086,0x000002a8,0x00000083,0x000000a0,0x0004003d,0x00000006,0x000002a9,
|
||||
0x000002a8,0x000500b4,0x0000003f,0x000002aa,0x000002a9,0x00000196,0x000300f7,0x000002b5,
|
||||
0x00000000,0x000400fa,0x000002aa,0x000002ab,0x000002b5,0x000200f8,0x000002ab,0x0008004f,
|
||||
0x0000000f,0x000002ad,0x00000682,0x00000682,0x00000000,0x00000001,0x00000002,0x0006000c,
|
||||
0x0000000f,0x000004aa,0x00000001,0x00000004,0x000002ad,0x0007000c,0x0000000f,0x000004ab,
|
||||
0x00000001,0x0000001a,0x000004aa,0x00000067,0x00050083,0x0000000f,0x000004ad,0x000004ab,
|
||||
0x00000671,0x0007000c,0x0000000f,0x000004ae,0x00000001,0x00000028,0x000004ad,0x0000006d,
|
||||
0x0006000c,0x0000000f,0x000004b0,0x00000001,0x00000004,0x000002ad,0x0007000c,0x0000000f,
|
||||
0x000004b1,0x00000001,0x0000001a,0x000004b0,0x00000067,0x0005008e,0x0000000f,0x000004b2,
|
||||
0x000004b1,0x00000071,0x00050083,0x0000000f,0x000004b4,0x00000672,0x000004b2,0x00050088,
|
||||
0x0000000f,0x000004b7,0x000004ae,0x000004b4,0x0006000c,0x0000000f,0x000004b8,0x00000001,
|
||||
0x00000004,0x000004b7,0x0007000c,0x0000000f,0x000004b9,0x00000001,0x0000001a,0x000004b8,
|
||||
0x0000007e,0x0005008e,0x0000000f,0x000004ba,0x000004b9,0x00000078,0x00050041,0x00000086,
|
||||
0x000004bb,0x00000083,0x00000085,0x0004003d,0x00000006,0x000004bc,0x000004bb,0x00060050,
|
||||
0x0000000f,0x000004bd,0x000004bc,0x000004bc,0x000004bc,0x00050088,0x0000000f,0x000004be,
|
||||
0x000004ba,0x000004bd,0x00050051,0x00000006,0x000002b0,0x000004be,0x00000000,0x00060052,
|
||||
0x0000001a,0x00000619,0x000002b0,0x00000682,0x00000000,0x00050051,0x00000006,0x000002b2,
|
||||
0x000004be,0x00000001,0x00060052,0x0000001a,0x0000061b,0x000002b2,0x00000619,0x00000001,
|
||||
0x00050051,0x00000006,0x000002b4,0x000004be,0x00000002,0x00060052,0x0000001a,0x0000061d,
|
||||
0x000002b4,0x0000061b,0x00000002,0x000200f9,0x000002b5,0x000200f8,0x000002b5,0x000700f5,
|
||||
0x0000001a,0x00000687,0x00000682,0x0000034f,0x0000061d,0x000002ab,0x00050041,0x00000086,
|
||||
0x000002b6,0x00000083,0x0000008d,0x0004003d,0x00000006,0x000002b7,0x000002b6,0x000500b7,
|
||||
0x0000003f,0x000002b8,0x000002b7,0x0000006c,0x000300f7,0x000002c3,0x00000000,0x000400fa,
|
||||
0x000002b8,0x000002b9,0x000002c3,0x000200f8,0x000002b9,0x0008004f,0x0000000f,0x000002bb,
|
||||
0x00000687,0x00000687,0x00000000,0x00000001,0x00000002,0x00050041,0x00000086,0x000004c3,
|
||||
0x00000083,0x0000008d,0x0004003d,0x00000006,0x000004c4,0x000004c3,0x000500b4,0x0000003f,
|
||||
0x000004c5,0x000004c4,0x00000090,0x000300f7,0x000004f9,0x00000000,0x000400fa,0x000004c5,
|
||||
0x000004c6,0x000004cb,0x000200f8,0x000004c6,0x00050041,0x00000086,0x000004c7,0x00000083,
|
||||
0x00000094,0x0004003d,0x00000006,0x000004c8,0x000004c7,0x0005008e,0x0000000f,0x000004ca,
|
||||
0x000002bb,0x000004c8,0x000200f9,0x000004f9,0x000200f8,0x000004cb,0x00050041,0x00000086,
|
||||
0x000004cc,0x00000083,0x0000008d,0x0004003d,0x00000006,0x000004cd,0x000004cc,0x000500b4,
|
||||
0x0000003f,0x000004ce,0x000004cd,0x0000009c,0x000300f7,0x000004f8,0x00000000,0x000400fa,
|
||||
0x000004ce,0x000004cf,0x000004f8,0x000200f8,0x000004cf,0x00050041,0x00000086,0x000004d0,
|
||||
0x00000083,0x000000a0,0x0004003d,0x00000006,0x000004d1,0x000004d0,0x000500b4,0x0000003f,
|
||||
0x000004d2,0x000004d1,0x0000009c,0x000300f7,0x000004d6,0x00000000,0x000400fa,0x000004d2,
|
||||
0x000004d3,0x000004d6,0x000200f8,0x000004d3,0x00050090,0x0000000f,0x000004d5,0x000002bb,
|
||||
0x000000b4,0x000200f9,0x000004d6,0x000200f8,0x000004d6,0x000700f5,0x0000000f,0x00000688,
|
||||
0x000002bb,0x000004cf,0x000004d5,0x000004d3,0x00050051,0x00000006,0x000004d8,0x00000688,
|
||||
0x00000000,0x00050051,0x00000006,0x000004da,0x00000688,0x00000001,0x00050051,0x00000006,
|
||||
0x000004dc,0x00000688,0x00000002,0x0007000c,0x00000006,0x000004dd,0x00000001,0x00000028,
|
||||
0x000004da,0x000004dc,0x0007000c,0x00000006,0x000004de,0x00000001,0x00000028,0x000004d8,
|
||||
0x000004dd,0x000500ba,0x0000003f,0x000004e0,0x000004de,0x0000006c,0x000300f7,0x000004f0,
|
||||
0x00000000,0x000400fa,0x000004e0,0x000004e1,0x000004f0,0x000200f8,0x000004e1,0x00050041,
|
||||
0x00000086,0x000004e2,0x00000083,0x00000094,0x0004003d,0x00000006,0x000004e3,0x000004e2,
|
||||
0x0008000c,0x00000006,0x000004e6,0x00000001,0x00000032,0x000004e3,0x000004de,0x00000090,
|
||||
0x00050041,0x00000086,0x000004e7,0x00000083,0x000000cd,0x0004003d,0x00000006,0x000004e8,
|
||||
0x000004e7,0x0008000c,0x00000006,0x000004eb,0x00000001,0x00000032,0x000004e8,0x000004de,
|
||||
0x00000090,0x00050088,0x00000006,0x000004ec,0x000004e6,0x000004eb,0x0005008e,0x0000000f,
|
||||
0x000004ef,0x00000688,0x000004ec,0x000200f9,0x000004f0,0x000200f8,0x000004f0,0x000700f5,
|
||||
0x0000000f,0x00000689,0x00000688,0x000004d6,0x000004ef,0x000004e1,0x00050041,0x00000086,
|
||||
0x000004f1,0x00000083,0x000000a0,0x0004003d,0x00000006,0x000004f2,0x000004f1,0x000500b4,
|
||||
0x0000003f,0x000004f3,0x000004f2,0x0000009c,0x000300f7,0x000004f7,0x00000000,0x000400fa,
|
||||
0x000004f3,0x000004f4,0x000004f7,0x000200f8,0x000004f4,0x00050090,0x0000000f,0x000004f6,
|
||||
0x00000689,0x000000e9,0x000200f9,0x000004f7,0x000200f8,0x000004f7,0x000700f5,0x0000000f,
|
||||
0x0000068c,0x00000689,0x000004f0,0x000004f6,0x000004f4,0x000200f9,0x000004f8,0x000200f8,
|
||||
0x000004f8,0x000700f5,0x0000000f,0x0000068b,0x000002bb,0x000004cb,0x0000068c,0x000004f7,
|
||||
0x000200f9,0x000004f9,0x000200f8,0x000004f9,0x000700f5,0x0000000f,0x0000068a,0x000004ca,
|
||||
0x000004c6,0x0000068b,0x000004f8,0x00050051,0x00000006,0x000002be,0x0000068a,0x00000000,
|
||||
0x00060052,0x0000001a,0x00000622,0x000002be,0x00000687,0x00000000,0x00050051,0x00000006,
|
||||
0x000002c0,0x0000068a,0x00000001,0x00060052,0x0000001a,0x00000624,0x000002c0,0x00000622,
|
||||
0x00000001,0x00050051,0x00000006,0x000002c2,0x0000068a,0x00000002,0x00060052,0x0000001a,
|
||||
0x00000626,0x000002c2,0x00000624,0x00000002,0x000200f9,0x000002c3,0x000200f8,0x000002c3,
|
||||
0x000700f5,0x0000001a,0x00000692,0x00000687,0x000002b5,0x00000626,0x000004f9,0x00050041,
|
||||
0x00000086,0x000002c4,0x00000083,0x000000a0,0x0004003d,0x00000006,0x000002c5,0x000002c4,
|
||||
0x000500b4,0x0000003f,0x000002c6,0x000002c5,0x00000090,0x000300f7,0x00000304,0x00000000,
|
||||
0x000400fa,0x000002c6,0x000002c7,0x000002d4,0x000200f8,0x000002c7,0x0008004f,0x0000000f,
|
||||
0x000002c9,0x00000692,0x00000692,0x00000000,0x00000001,0x00000002,0x00050041,0x00000086,
|
||||
0x00000501,0x00000083,0x000001d4,0x0004003d,0x00000006,0x00000502,0x00000501,0x000500b7,
|
||||
0x0000003f,0x00000503,0x00000502,0x0000006c,0x000300f7,0x00000511,0x00000000,0x000400fa,
|
||||
0x00000503,0x00000504,0x00000511,0x000200f8,0x00000504,0x00050051,0x00000006,0x00000506,
|
||||
0x00000692,0x00000000,0x000500bc,0x0000003f,0x0000051a,0x00000506,0x0000003e,0x000300f7,
|
||||
0x00000524,0x00000000,0x000400fa,0x0000051a,0x0000051b,0x0000051e,0x000200f8,0x0000051b,
|
||||
0x00050085,0x00000006,0x0000051d,0x00000506,0x0000067e,0x000200f9,0x00000524,0x000200f8,
|
||||
0x0000051e,0x00050081,0x00000006,0x00000520,0x00000506,0x00000048,0x0006000c,0x00000006,
|
||||
0x00000521,0x00000001,0x00000004,0x00000520,0x00050085,0x00000006,0x00000522,0x00000521,
|
||||
0x0000067d,0x0007000c,0x00000006,0x00000523,0x00000001,0x0000001a,0x00000522,0x0000004d,
|
||||
0x000200f9,0x00000524,0x000200f8,0x00000524,0x000700f5,0x00000006,0x000006a9,0x0000051d,
|
||||
0x0000051b,0x00000523,0x0000051e,0x00050051,0x00000006,0x0000050a,0x00000692,0x00000001,
|
||||
0x000500bc,0x0000003f,0x00000529,0x0000050a,0x0000003e,0x000300f7,0x00000533,0x00000000,
|
||||
0x000400fa,0x00000529,0x0000052a,0x0000052d,0x000200f8,0x0000052a,0x00050085,0x00000006,
|
||||
0x0000052c,0x0000050a,0x0000067e,0x000200f9,0x00000533,0x000200f8,0x0000052d,0x00050081,
|
||||
0x00000006,0x0000052f,0x0000050a,0x00000048,0x0006000c,0x00000006,0x00000530,0x00000001,
|
||||
0x00000004,0x0000052f,0x00050085,0x00000006,0x00000531,0x00000530,0x0000067d,0x0007000c,
|
||||
0x00000006,0x00000532,0x00000001,0x0000001a,0x00000531,0x0000004d,0x000200f9,0x00000533,
|
||||
0x000200f8,0x00000533,0x000700f5,0x00000006,0x000006ab,0x0000052c,0x0000052a,0x00000532,
|
||||
0x0000052d,0x00050051,0x00000006,0x0000050e,0x00000692,0x00000002,0x000500bc,0x0000003f,
|
||||
0x00000538,0x0000050e,0x0000003e,0x000300f7,0x00000542,0x00000000,0x000400fa,0x00000538,
|
||||
0x00000539,0x0000053c,0x000200f8,0x00000539,0x00050085,0x00000006,0x0000053b,0x0000050e,
|
||||
0x0000067e,0x000200f9,0x00000542,0x000200f8,0x0000053c,0x00050081,0x00000006,0x0000053e,
|
||||
0x0000050e,0x00000048,0x0006000c,0x00000006,0x0000053f,0x00000001,0x00000004,0x0000053e,
|
||||
0x00050085,0x00000006,0x00000540,0x0000053f,0x0000067d,0x0007000c,0x00000006,0x00000541,
|
||||
0x00000001,0x0000001a,0x00000540,0x0000004d,0x000200f9,0x00000542,0x000200f8,0x00000542,
|
||||
0x000700f5,0x00000006,0x000006ad,0x0000053b,0x00000539,0x00000541,0x0000053c,0x00060050,
|
||||
0x0000000f,0x000006b9,0x000006a9,0x000006ab,0x000006ad,0x000200f9,0x00000511,0x000200f8,
|
||||
0x00000511,0x000700f5,0x0000000f,0x000006af,0x000002c9,0x000002c7,0x000006b9,0x00000542,
|
||||
0x00050041,0x00000086,0x00000513,0x00000083,0x000001c4,0x0004003d,0x00000006,0x00000514,
|
||||
0x00000513,0x0005008e,0x0000000f,0x00000515,0x000006af,0x00000514,0x00050051,0x00000006,
|
||||
0x000002cc,0x00000515,0x00000000,0x00050051,0x00000006,0x000002ce,0x00000515,0x00000001,
|
||||
0x00050051,0x00000006,0x000002d0,0x00000515,0x00000002,0x00050051,0x00000006,0x000002d2,
|
||||
0x00000692,0x00000003,0x00070050,0x0000001a,0x0000067f,0x000002cc,0x000002ce,0x000002d0,
|
||||
0x000002d2,0x000200f9,0x00000304,0x000200f8,0x000002d4,0x00050041,0x00000086,0x000002d5,
|
||||
0x00000083,0x000000a0,0x0004003d,0x00000006,0x000002d6,0x000002d5,0x000500b4,0x0000003f,
|
||||
0x000002d7,0x000002d6,0x0000009c,0x000300f7,0x00000303,0x00000000,0x000400fa,0x000002d7,
|
||||
0x000002d8,0x000002e5,0x000200f8,0x000002d8,0x0008004f,0x0000000f,0x000002da,0x00000692,
|
||||
0x00000692,0x00000000,0x00000001,0x00000002,0x00050041,0x00000086,0x0000054b,0x00000083,
|
||||
0x000001c4,0x0004003d,0x00000006,0x0000054c,0x0000054b,0x0005008e,0x0000000f,0x0000054d,
|
||||
0x000002da,0x0000054c,0x00050041,0x00000086,0x0000054e,0x00000083,0x000001d4,0x0004003d,
|
||||
0x00000006,0x0000054f,0x0000054e,0x000500b7,0x0000003f,0x00000550,0x0000054f,0x0000006c,
|
||||
0x000400a8,0x0000003f,0x00000551,0x00000550,0x000300f7,0x00000563,0x00000000,0x000400fa,
|
||||
0x00000551,0x00000552,0x00000563,0x000200f8,0x00000552,0x00050051,0x00000006,0x00000554,
|
||||
0x0000054d,0x00000000,0x000500bc,0x0000003f,0x00000568,0x00000554,0x00000053,0x000300f7,
|
||||
0x00000572,0x00000000,0x000400fa,0x00000568,0x00000569,0x0000056c,0x000200f8,0x00000569,
|
||||
0x00050085,0x00000006,0x0000056b,0x00000554,0x00000044,0x000200f9,0x00000572,0x000200f8,
|
||||
0x0000056c,0x0006000c,0x00000006,0x0000056e,0x00000001,0x00000004,0x00000554,0x0007000c,
|
||||
0x00000006,0x0000056f,0x00000001,0x0000001a,0x0000056e,0x0000005c,0x0008000c,0x00000006,
|
||||
0x00000571,0x00000001,0x00000032,0x0000056f,0x0000004b,0x00000681,0x000200f9,0x00000572,
|
||||
0x000200f8,0x00000572,0x000700f5,0x00000006,0x0000069e,0x0000056b,0x00000569,0x00000571,
|
||||
0x0000056c,0x00050051,0x00000006,0x00000558,0x0000054d,0x00000001,0x000500bc,0x0000003f,
|
||||
0x00000577,0x00000558,0x00000053,0x000300f7,0x00000581,0x00000000,0x000400fa,0x00000577,
|
||||
0x00000578,0x0000057b,0x000200f8,0x00000578,0x00050085,0x00000006,0x0000057a,0x00000558,
|
||||
0x00000044,0x000200f9,0x00000581,0x000200f8,0x0000057b,0x0006000c,0x00000006,0x0000057d,
|
||||
0x00000001,0x00000004,0x00000558,0x0007000c,0x00000006,0x0000057e,0x00000001,0x0000001a,
|
||||
0x0000057d,0x0000005c,0x0008000c,0x00000006,0x00000580,0x00000001,0x00000032,0x0000057e,
|
||||
0x0000004b,0x00000681,0x000200f9,0x00000581,0x000200f8,0x00000581,0x000700f5,0x00000006,
|
||||
0x000006a0,0x0000057a,0x00000578,0x00000580,0x0000057b,0x00050051,0x00000006,0x0000055c,
|
||||
0x0000054d,0x00000002,0x000500bc,0x0000003f,0x00000586,0x0000055c,0x00000053,0x000300f7,
|
||||
0x00000590,0x00000000,0x000400fa,0x00000586,0x00000587,0x0000058a,0x000200f8,0x00000587,
|
||||
0x00050085,0x00000006,0x00000589,0x0000055c,0x00000044,0x000200f9,0x00000590,0x000200f8,
|
||||
0x0000058a,0x0006000c,0x00000006,0x0000058c,0x00000001,0x00000004,0x0000055c,0x0007000c,
|
||||
0x00000006,0x0000058d,0x00000001,0x0000001a,0x0000058c,0x0000005c,0x0008000c,0x00000006,
|
||||
0x0000058f,0x00000001,0x00000032,0x0000058d,0x0000004b,0x00000681,0x000200f9,0x00000590,
|
||||
0x000200f8,0x00000590,0x000700f5,0x00000006,0x000006a2,0x00000589,0x00000587,0x0000058f,
|
||||
0x0000058a,0x00060050,0x0000000f,0x000006b8,0x0000069e,0x000006a0,0x000006a2,0x0008000c,
|
||||
0x0000000f,0x00000562,0x00000001,0x0000002b,0x000006b8,0x0000006d,0x00000677,0x000200f9,
|
||||
0x00000563,0x000200f8,0x00000563,0x000700f5,0x0000000f,0x000006a4,0x0000054d,0x000002d8,
|
||||
0x00000562,0x00000590,0x00050051,0x00000006,0x000002dd,0x000006a4,0x00000000,0x00050051,
|
||||
0x00000006,0x000002df,0x000006a4,0x00000001,0x00050051,0x00000006,0x000002e1,0x000006a4,
|
||||
0x00000002,0x00050051,0x00000006,0x000002e3,0x00000692,0x00000003,0x00070050,0x0000001a,
|
||||
0x0000067c,0x000002dd,0x000002df,0x000002e1,0x000002e3,0x000200f9,0x00000303,0x000200f8,
|
||||
0x000002e5,0x00050041,0x00000086,0x000002e6,0x00000083,0x000000a0,0x0004003d,0x00000006,
|
||||
0x000002e7,0x000002e6,0x000500b4,0x0000003f,0x000002e8,0x000002e7,0x00000196,0x000300f7,
|
||||
0x00000302,0x00000000,0x000400fa,0x000002e8,0x000002e9,0x000002ff,0x000200f8,0x000002e9,
|
||||
0x0008004f,0x0000000f,0x000002eb,0x00000692,0x00000692,0x00000000,0x00000001,0x00000002,
|
||||
0x00050090,0x0000000f,0x000002ec,0x000002eb,0x000000e9,0x00050051,0x00000006,0x000002ee,
|
||||
0x000002ec,0x00000000,0x00060052,0x0000001a,0x0000064c,0x000002ee,0x000006ba,0x00000000,
|
||||
0x00050051,0x00000006,0x000002f0,0x000002ec,0x00000001,0x00060052,0x0000001a,0x0000064e,
|
||||
0x000002f0,0x0000064c,0x00000001,0x00050051,0x00000006,0x000002f2,0x000002ec,0x00000002,
|
||||
0x00060052,0x0000001a,0x00000650,0x000002f2,0x0000064e,0x00000002,0x0008004f,0x0000000f,
|
||||
0x000002f4,0x00000650,0x00000650,0x00000000,0x00000001,0x00000002,0x00050041,0x00000086,
|
||||
0x00000599,0x00000083,0x000001c4,0x0004003d,0x00000006,0x0000059a,0x00000599,0x0005008e,
|
||||
0x0000000f,0x0000059b,0x000002f4,0x0000059a,0x00050041,0x00000086,0x0000059c,0x00000083,
|
||||
0x000001d4,0x0004003d,0x00000006,0x0000059d,0x0000059c,0x000500b7,0x0000003f,0x0000059e,
|
||||
0x0000059d,0x0000006c,0x000400a8,0x0000003f,0x0000059f,0x0000059e,0x000300f7,0x000005b1,
|
||||
0x00000000,0x000400fa,0x0000059f,0x000005a0,0x000005b1,0x000200f8,0x000005a0,0x00050051,
|
||||
0x00000006,0x000005a2,0x0000059b,0x00000000,0x000500bc,0x0000003f,0x000005b6,0x000005a2,
|
||||
0x00000053,0x000300f7,0x000005c0,0x00000000,0x000400fa,0x000005b6,0x000005b7,0x000005ba,
|
||||
0x000200f8,0x000005b7,0x00050085,0x00000006,0x000005b9,0x000005a2,0x00000044,0x000200f9,
|
||||
0x000005c0,0x000200f8,0x000005ba,0x0006000c,0x00000006,0x000005bc,0x00000001,0x00000004,
|
||||
0x000005a2,0x0007000c,0x00000006,0x000005bd,0x00000001,0x0000001a,0x000005bc,0x0000005c,
|
||||
0x0008000c,0x00000006,0x000005bf,0x00000001,0x00000032,0x000005bd,0x0000004b,0x00000681,
|
||||
0x000200f9,0x000005c0,0x000200f8,0x000005c0,0x000700f5,0x00000006,0x00000693,0x000005b9,
|
||||
0x000005b7,0x000005bf,0x000005ba,0x00050051,0x00000006,0x000005a6,0x0000059b,0x00000001,
|
||||
0x000500bc,0x0000003f,0x000005c5,0x000005a6,0x00000053,0x000300f7,0x000005cf,0x00000000,
|
||||
0x000400fa,0x000005c5,0x000005c6,0x000005c9,0x000200f8,0x000005c6,0x00050085,0x00000006,
|
||||
0x000005c8,0x000005a6,0x00000044,0x000200f9,0x000005cf,0x000200f8,0x000005c9,0x0006000c,
|
||||
0x00000006,0x000005cb,0x00000001,0x00000004,0x000005a6,0x0007000c,0x00000006,0x000005cc,
|
||||
0x00000001,0x0000001a,0x000005cb,0x0000005c,0x0008000c,0x00000006,0x000005ce,0x00000001,
|
||||
0x00000032,0x000005cc,0x0000004b,0x00000681,0x000200f9,0x000005cf,0x000200f8,0x000005cf,
|
||||
0x000700f5,0x00000006,0x00000695,0x000005c8,0x000005c6,0x000005ce,0x000005c9,0x00050051,
|
||||
0x00000006,0x000005aa,0x0000059b,0x00000002,0x000500bc,0x0000003f,0x000005d4,0x000005aa,
|
||||
0x00000053,0x000300f7,0x000005de,0x00000000,0x000400fa,0x000005d4,0x000005d5,0x000005d8,
|
||||
0x000200f8,0x000005d5,0x00050085,0x00000006,0x000005d7,0x000005aa,0x00000044,0x000200f9,
|
||||
0x000005de,0x000200f8,0x000005d8,0x0006000c,0x00000006,0x000005da,0x00000001,0x00000004,
|
||||
0x000005aa,0x0007000c,0x00000006,0x000005db,0x00000001,0x0000001a,0x000005da,0x0000005c,
|
||||
0x0008000c,0x00000006,0x000005dd,0x00000001,0x00000032,0x000005db,0x0000004b,0x00000681,
|
||||
0x000200f9,0x000005de,0x000200f8,0x000005de,0x000700f5,0x00000006,0x00000697,0x000005d7,
|
||||
0x000005d5,0x000005dd,0x000005d8,0x00060050,0x0000000f,0x000006b7,0x00000693,0x00000695,
|
||||
0x00000697,0x0008000c,0x0000000f,0x000005b0,0x00000001,0x0000002b,0x000006b7,0x0000006d,
|
||||
0x00000677,0x000200f9,0x000005b1,0x000200f8,0x000005b1,0x000700f5,0x0000000f,0x00000699,
|
||||
0x0000059b,0x000002e9,0x000005b0,0x000005de,0x00050051,0x00000006,0x000002f7,0x00000699,
|
||||
0x00000000,0x00050051,0x00000006,0x000002f9,0x00000699,0x00000001,0x00050051,0x00000006,
|
||||
0x000002fb,0x00000699,0x00000002,0x00050051,0x00000006,0x000002fd,0x00000692,0x00000003,
|
||||
0x00070050,0x0000001a,0x00000678,0x000002f7,0x000002f9,0x000002fb,0x000002fd,0x000200f9,
|
||||
0x00000302,0x000200f8,0x000002ff,0x0008004f,0x0000000f,0x000005e4,0x00000692,0x00000692,
|
||||
0x00000000,0x00000001,0x00000002,0x00050041,0x00000086,0x000005e5,0x00000083,0x000001c4,
|
||||
0x0004003d,0x00000006,0x000005e6,0x000005e5,0x0005008e,0x0000000f,0x000005e7,0x000005e4,
|
||||
0x000005e6,0x00050051,0x00000006,0x000005e9,0x000005e7,0x00000000,0x00050051,0x00000006,
|
||||
0x000005eb,0x000005e7,0x00000001,0x00050051,0x00000006,0x000005ed,0x000005e7,0x00000002,
|
||||
0x00050051,0x00000006,0x000005ef,0x00000692,0x00000003,0x00070050,0x0000001a,0x00000673,
|
||||
0x000005e9,0x000005eb,0x000005ed,0x000005ef,0x000200f9,0x00000302,0x000200f8,0x00000302,
|
||||
0x000700f5,0x0000001a,0x000006b6,0x00000678,0x000005b1,0x00000673,0x000002ff,0x000200f9,
|
||||
0x00000303,0x000200f8,0x00000303,0x000700f5,0x0000001a,0x000006b5,0x0000067c,0x00000563,
|
||||
0x000006b6,0x00000302,0x000200f9,0x00000304,0x000200f8,0x00000304,0x000700f5,0x0000001a,
|
||||
0x000006b4,0x0000067f,0x00000511,0x000006b5,0x00000303,0x00050085,0x0000001a,0x00000308,
|
||||
0x000006b4,0x0000028f,0x0003003e,0x00000292,0x00000308,0x000100fd,0x00010038
|
||||
};
|
||||
|
@@ -1,7 +1,7 @@
|
||||
// 1113.1.1
|
||||
#pragma once
|
||||
const uint32_t VULKAN_PixelShader_Colors[] = {
|
||||
0x07230203,0x00010000,0x0008000b,0x000000a3,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x07230203,0x00010000,0x0008000b,0x000000a5,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
|
||||
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000049,0x0000004d,0x00030010,
|
||||
0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,0x6e69616d,
|
||||
@@ -31,13 +31,13 @@ const uint32_t VULKAN_PixelShader_Colors[] = {
|
||||
0x0004002b,0x0000001b,0x0000001c,0x00000003,0x00040020,0x0000001d,0x00000002,0x00000006,
|
||||
0x0004002b,0x00000006,0x00000033,0x3f800000,0x00040020,0x0000003f,0x00000001,0x00000007,
|
||||
0x0004003b,0x0000003f,0x00000049,0x00000001,0x00040020,0x0000004c,0x00000003,0x00000007,
|
||||
0x0004003b,0x0000004c,0x0000004d,0x00000003,0x0006002c,0x00000015,0x000000a1,0x00000033,
|
||||
0x0004003b,0x0000004c,0x0000004d,0x00000003,0x0006002c,0x00000015,0x000000a3,0x00000033,
|
||||
0x00000033,0x00000033,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
|
||||
0x00000005,0x0004003d,0x00000007,0x0000004a,0x00000049,0x00050041,0x0000001d,0x00000080,
|
||||
0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000081,0x00000080,0x0005008e,0x00000015,
|
||||
0x00000082,0x000000a1,0x00000081,0x00050051,0x00000006,0x00000084,0x00000082,0x00000000,
|
||||
0x00050051,0x00000006,0x00000086,0x00000082,0x00000001,0x00050051,0x00000006,0x00000088,
|
||||
0x00000082,0x00000002,0x00070050,0x00000007,0x000000a2,0x00000084,0x00000086,0x00000088,
|
||||
0x00000033,0x00050085,0x00000007,0x0000007a,0x000000a2,0x0000004a,0x0003003e,0x0000004d,
|
||||
0x0000007a,0x000100fd,0x00010038
|
||||
0x00000005,0x0004003d,0x00000007,0x0000004a,0x00000049,0x00050041,0x0000001d,0x00000082,
|
||||
0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000083,0x00000082,0x0005008e,0x00000015,
|
||||
0x00000084,0x000000a3,0x00000083,0x00050051,0x00000006,0x00000086,0x00000084,0x00000000,
|
||||
0x00050051,0x00000006,0x00000088,0x00000084,0x00000001,0x00050051,0x00000006,0x0000008a,
|
||||
0x00000084,0x00000002,0x00070050,0x00000007,0x000000a4,0x00000086,0x00000088,0x0000008a,
|
||||
0x00000033,0x00050085,0x00000007,0x0000007c,0x000000a4,0x0000004a,0x0003003e,0x0000004d,
|
||||
0x0000007c,0x000100fd,0x00010038
|
||||
};
|
||||
|
@@ -19,7 +19,9 @@ static const float TONEMAP_CHROME = 2;
|
||||
static const float TEXTURETYPE_NONE = 0;
|
||||
static const float TEXTURETYPE_RGB = 1;
|
||||
static const float TEXTURETYPE_RGB_PIXELART = 2;
|
||||
static const float TEXTURETYPE_PALETTE = 3;
|
||||
static const float TEXTURETYPE_PALETTE_NEAREST = 3;
|
||||
static const float TEXTURETYPE_PALETTE_LINEAR = 4;
|
||||
static const float TEXTURETYPE_PALETTE_PIXELART = 5;
|
||||
|
||||
static const float INPUTTYPE_UNSPECIFIED = 0;
|
||||
static const float INPUTTYPE_SRGB = 1;
|
||||
@@ -109,21 +111,48 @@ float3 ApplyTonemap(float3 v)
|
||||
return v;
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(PixelShaderInput input)
|
||||
float4 SamplePaletteNearest(float2 uv)
|
||||
{
|
||||
float index = texture0.Sample(sampler0, uv).r * 255;
|
||||
return texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
|
||||
}
|
||||
|
||||
// Implementation with thanks from bgolus:
|
||||
// https://discussions.unity.com/t/how-to-make-data-shader-support-bilinear-trilinear/598639/8
|
||||
float4 SamplePaletteLinear(float2 uv)
|
||||
{
|
||||
// scale & offset uvs to integer values at texel centers
|
||||
float2 uv_texels = uv * texel_size.zw + 0.5;
|
||||
|
||||
// get uvs for the center of the 4 surrounding texels by flooring
|
||||
float4 uv_min_max = float4((floor(uv_texels) - 0.5) * texel_size.xy, (floor(uv_texels) + 0.5) * texel_size.xy);
|
||||
|
||||
// blend factor
|
||||
float2 uv_frac = frac(uv_texels);
|
||||
|
||||
// sample all 4 texels
|
||||
float4 texelA = SamplePaletteNearest(uv_min_max.xy);
|
||||
float4 texelB = SamplePaletteNearest(uv_min_max.xw);
|
||||
float4 texelC = SamplePaletteNearest(uv_min_max.zy);
|
||||
float4 texelD = SamplePaletteNearest(uv_min_max.zw);
|
||||
|
||||
// bilinear interpolation
|
||||
return lerp(lerp(texelA, texelB, uv_frac.y), lerp(texelC, texelD, uv_frac.y), uv_frac.x);
|
||||
}
|
||||
|
||||
float2 GetPixelArtUV(float2 uv)
|
||||
{
|
||||
// box filter size in texel units
|
||||
float2 boxSize = clamp(fwidth(input.tex) * texel_size.zw, 1e-5, 1);
|
||||
float2 boxSize = clamp(fwidth(uv) * texel_size.zw, 1e-5, 1);
|
||||
|
||||
// scale uv by texture size to get texel coordinate
|
||||
float2 tx = input.tex * texel_size.zw - 0.5 * boxSize;
|
||||
float2 tx = uv * texel_size.zw - 0.5 * boxSize;
|
||||
|
||||
// compute offset for pixel-sized box filter
|
||||
float2 txOffset = smoothstep(1 - boxSize, 1, frac(tx));
|
||||
|
||||
// compute bilinear sample uv coordinates
|
||||
float2 uv = (floor(tx) + 0.5 + txOffset) * texel_size.xy;
|
||||
|
||||
return uv;
|
||||
return (floor(tx) + 0.5 + txOffset) * texel_size.xy;
|
||||
}
|
||||
|
||||
float4 GetInputColor(PixelShaderInput input)
|
||||
@@ -133,16 +162,20 @@ float4 GetInputColor(PixelShaderInput input)
|
||||
if (texture_type == TEXTURETYPE_RGB) {
|
||||
rgba = texture0.Sample(sampler0, input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_RGB_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input);
|
||||
float2 uv = GetPixelArtUV(input.tex);
|
||||
rgba = texture0.SampleGrad(sampler0, uv, ddx(input.tex), ddy(input.tex));
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE) {
|
||||
float index = texture0.Sample(sampler0, input.tex).r * 255;
|
||||
rgba = texture1.Sample(sampler1, float2((index + 0.5) / 256, 0.5));
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_NEAREST) {
|
||||
rgba = SamplePaletteNearest(input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_LINEAR) {
|
||||
rgba = SamplePaletteLinear(input.tex);
|
||||
} else if (texture_type == TEXTURETYPE_PALETTE_PIXELART) {
|
||||
float2 uv = GetPixelArtUV(input.tex);
|
||||
rgba = SamplePaletteLinear(uv);
|
||||
} else {
|
||||
// Error!
|
||||
rgba.r = 1.0;
|
||||
rgba.g = 0.0;
|
||||
rgba.b = 0.0;
|
||||
rgba.b = 1.0;
|
||||
rgba.a = 1.0;
|
||||
}
|
||||
return rgba;
|
||||
|
@@ -1,7 +1,7 @@
|
||||
// 1113.1.1
|
||||
#pragma once
|
||||
const uint32_t VULKAN_PixelShader_Textures[] = {
|
||||
0x07230203,0x00010000,0x0008000b,0x000000aa,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x07230203,0x00010000,0x0008000b,0x000000ac,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
|
||||
0x0008000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000004c,0x0000004f,0x00000053,
|
||||
0x00030010,0x00000004,0x00000007,0x00030003,0x00000005,0x000001f4,0x00040005,0x00000004,
|
||||
@@ -40,13 +40,13 @@ const uint32_t VULKAN_PixelShader_Textures[] = {
|
||||
0x00000052,0x00000003,0x00000007,0x0004003b,0x00000052,0x00000053,0x00000003,0x00050036,
|
||||
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,0x0000000d,
|
||||
0x0000004d,0x0000004c,0x0004003d,0x00000007,0x00000050,0x0000004f,0x0004003d,0x00000034,
|
||||
0x0000007a,0x00000036,0x00050057,0x00000007,0x0000007d,0x0000007a,0x0000004d,0x0008004f,
|
||||
0x00000015,0x00000086,0x0000007d,0x0000007d,0x00000000,0x00000001,0x00000002,0x00050041,
|
||||
0x0000001d,0x00000087,0x0000001a,0x0000001c,0x0004003d,0x00000006,0x00000088,0x00000087,
|
||||
0x0005008e,0x00000015,0x00000089,0x00000086,0x00000088,0x00050051,0x00000006,0x0000008b,
|
||||
0x00000089,0x00000000,0x00050051,0x00000006,0x0000008d,0x00000089,0x00000001,0x00050051,
|
||||
0x00000006,0x0000008f,0x00000089,0x00000002,0x00050051,0x00000006,0x00000091,0x0000007d,
|
||||
0x00000003,0x00070050,0x00000007,0x000000a9,0x0000008b,0x0000008d,0x0000008f,0x00000091,
|
||||
0x00050085,0x00000007,0x00000081,0x000000a9,0x00000050,0x0003003e,0x00000053,0x00000081,
|
||||
0x0000007c,0x00000036,0x00050057,0x00000007,0x0000007f,0x0000007c,0x0000004d,0x0008004f,
|
||||
0x00000015,0x00000088,0x0000007f,0x0000007f,0x00000000,0x00000001,0x00000002,0x00050041,
|
||||
0x0000001d,0x00000089,0x0000001a,0x0000001c,0x0004003d,0x00000006,0x0000008a,0x00000089,
|
||||
0x0005008e,0x00000015,0x0000008b,0x00000088,0x0000008a,0x00050051,0x00000006,0x0000008d,
|
||||
0x0000008b,0x00000000,0x00050051,0x00000006,0x0000008f,0x0000008b,0x00000001,0x00050051,
|
||||
0x00000006,0x00000091,0x0000008b,0x00000002,0x00050051,0x00000006,0x00000093,0x0000007f,
|
||||
0x00000003,0x00070050,0x00000007,0x000000ab,0x0000008d,0x0000008f,0x00000091,0x00000093,
|
||||
0x00050085,0x00000007,0x00000083,0x000000ab,0x00000050,0x0003003e,0x00000053,0x00000083,
|
||||
0x000100fd,0x00010038
|
||||
};
|
||||
|
@@ -104,6 +104,7 @@ int main(int argc, char *argv[])
|
||||
int i;
|
||||
int frames;
|
||||
Uint64 then, now;
|
||||
SDL_ScaleMode scale_mode = SDL_SCALEMODE_PIXELART;
|
||||
|
||||
/* Initialize test framework */
|
||||
state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
|
||||
@@ -112,9 +113,35 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* Parse commandline */
|
||||
if (!SDLTest_CommonDefaultArgs(state, argc, argv)) {
|
||||
for (i = 1; i < argc;) {
|
||||
int consumed;
|
||||
|
||||
consumed = SDLTest_CommonArg(state, i);
|
||||
if (consumed == 0) {
|
||||
consumed = -1;
|
||||
if (SDL_strcasecmp(argv[i], "--nearest") == 0) {
|
||||
scale_mode = SDL_SCALEMODE_NEAREST;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcasecmp(argv[i], "--linear") == 0) {
|
||||
scale_mode = SDL_SCALEMODE_LINEAR;
|
||||
consumed = 1;
|
||||
} else if (SDL_strcasecmp(argv[i], "--pixelart") == 0) {
|
||||
scale_mode = SDL_SCALEMODE_PIXELART;
|
||||
consumed = 1;
|
||||
}
|
||||
}
|
||||
if (consumed < 0) {
|
||||
static const char *options[] = {
|
||||
"[--nearest]",
|
||||
"[--linear]",
|
||||
"[--pixelart]",
|
||||
NULL
|
||||
};
|
||||
SDLTest_CommonLogUsage(state, argv[0], options);
|
||||
return 1;
|
||||
}
|
||||
i += consumed;
|
||||
}
|
||||
|
||||
if (!SDLTest_CommonInit(state)) {
|
||||
quit(1);
|
||||
@@ -132,7 +159,8 @@ int main(int argc, char *argv[])
|
||||
quit(2);
|
||||
}
|
||||
SDL_GetTextureSize(drawstate->sprite, &drawstate->sprite_rect.w, &drawstate->sprite_rect.h);
|
||||
SDL_SetTextureScaleMode(drawstate->sprite, SDL_SCALEMODE_PIXELART);
|
||||
SDL_SetTextureScaleMode(drawstate->background, scale_mode);
|
||||
SDL_SetTextureScaleMode(drawstate->sprite, scale_mode);
|
||||
drawstate->scale_direction = 1;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user