If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Fruit Ninja: Puss In Boots
| Fruit Ninja: Puss In Boots |
|---|
|
Developer:
Halfbrick Studios
|
Fruit Ninja: Puss In Boots is a spinoff of Fruit Ninja starring Puss in Boots from the Shrek animated movie franchise, made to promote his 2011 spin-off film.
Compiled Windows executables
To do:
|
The assets.zip archive containing the data in the iOS version has four compiled Windows executables of the game, being for the iPhone Lite/Free, iPad/HD Lite/Free and full versions of the two for both devices, all are debug enabled. They all have a Fruit Ninja icon, instead of this game. Despite being built for iOS devices, Android assets can also be used.
| Download Fruit Ninja: Puss In Boots (iPhone) Windows executables
File: FNPIB_iPhoneBuild_WindowsEXEs.zip (6727 KB) (info)
|
| Download Fruit Ninja: Puss In Boots (iPad) Windows executables
File: FNPIB_iPadBuild_WindowsEXEs.zip (5693 KB) (info)
|
Collision Display
Pressing 'C' on the keyboard draws collision boxes over fruit. This only works on iPad builds as iPhone builds don't have a call for the ShowCollision string. You can change the input by altering Input/Input.txt.
Debug Menu
Pressing 'D' on the keyboard pauses game logic and shows a debug menu with the following options. Unfortunately the debug folder with the textures is missing, making no textures visible, you can find it along with readable textures in the Final Android version. You can change the input by altering Input/Input.txt. Every option aside from QUIT plays a click sound.
| Option | In-game effect | ||||||
|---|---|---|---|---|---|---|---|
| FRAME STEP | Advances one frame. | ||||||
| CHALLENGE SELECT | Shows a menu with the following options:
| ||||||
| PARTICLE EDITOR | Unknown? Doesn't appear to work on iPhone. | ||||||
| FORCE_RESULT | Instant result toggle. Can be set to NO FORCE RESULT, being using standard game logic to determine a win or a loss. FORCE PASS forcing a success or FORCE FAIL forcing a failure, In Classic, forces a Game Over. | ||||||
| UNLOCK STASH | Stash unlock toggle. Can be set to STASH NORMAL which follows original requirements while STASH UNLOCKED unlocks everything available temporarily. | ||||||
| UI EDIT MODE | Unknown? | ||||||
| CHANGE LANGUAGE | Changes the language of the game. | ||||||
| DRAW COLLISION | See #Collision Display. A button call rather than a keypress. Doesn't appear to work on iPhone. | ||||||
| LITE UPSELL MODE | Can be set to UPSELL NORMAL, FN UPSELL or JETPACK UPSELL. | ||||||
| GIVE HEART | Adds a heart to your life meter. | ||||||
| GIVE BEAN | Adds a Magic Bean to the playfield. | ||||||
| GIVE PINATA | Adds a Pinata to the playfield. | ||||||
| INFINITE PINATA TIME | Grants infinite time to break the Pinata. | ||||||
| QUIT | Closes the Debug Menu. |
Direct3D shaders
The shaders directory has three shaders for the game on Windows, likely related to the leftover Windows builds of the game.
basicmodel.fx:
Texture2D DiffuseMap : register(t0);
SamplerState linearSampler : register(s0);
cbuffer simpleConstantBuffer : register( b0 )
{
matrix worldmatrix;
matrix viewmatrix;
matrix projectionmatrix;
matrix texturematrix;
float4 displayColour;
};
struct VertexShaderInput
{
float2 IN_uv : TEXCOORD0;
uint4 IN_vertexcolour : COLOR0;
float3 IN_normal : NORMAL0;
float3 IN_position : POSITION0;
};
struct PixelShaderInput
{
float4 position : SV_POSITION;
float2 uv : TEXCOORD0;
float4 colour: COLOR0;
};
//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
PixelShaderInput VS( VertexShaderInput Input )
{
PixelShaderInput result;
float4 pos;
pos.xyz=Input.IN_position;
pos.w=1.0;
// Transform the vertex position into projection space.
pos = mul(pos, worldmatrix);
pos = mul(pos, viewmatrix);
pos = mul(pos, projectionmatrix);
result.uv = Input.IN_uv;
result.colour = Input.IN_vertexcolour / 255.0f;
result.position = pos;
return result;
}
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 PS( PixelShaderInput input ) : SV_Target
{
float4 textureSample = DiffuseMap.Sample(linearSampler, input.uv) * input.colour ;
return textureSample;
/// return float4( 1.0f, 1.0f, 0.0f, 1.0f ); // Yellow, with Alpha = 1
}
gles1_vertex_unlit.fx:
Texture2D DiffuseMap : register(t0);
SamplerState linearSampler : register(s0);
cbuffer simpleConstantBuffer : register( b0 )
{
matrix worldmatrix;
matrix viewmatrix;
matrix projectionmatrix;
matrix texturematrix;
float4 displayColour;
};
struct VertexShaderInput
{
float3 IN_position : POSITION0;
float3 IN_normal : NORMAL0;
float3 IN_tangent : NORMAL1;
float3 IN_bitangent : NORMAL2;
float4 IN_vertexcolour : COLOR0;
float2 IN_uv : TEXCOORD0;
};
struct PixelShaderInput
{
float4 position : SV_POSITION;
float2 uv : TEXCOORD0;
float4 colour: COLOR0;
};
//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
PixelShaderInput VS( VertexShaderInput Input )
{
PixelShaderInput result;
float4 pos;
pos.xyz=Input.IN_position;
pos.w=1.0;
// Transform the vertex position into projection space.
pos = mul(pos, worldmatrix);
pos = mul(pos, viewmatrix);
pos = mul(pos, projectionmatrix);
result.uv = Input.IN_uv;
result.colour = (Input.IN_vertexcolour / 255.0f) * (displayColour / 255.0f);
result.position = pos;
return result;
}
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 PS( PixelShaderInput input ) : SV_Target
{
float4 textureSample = DiffuseMap.Sample(linearSampler, input.uv) * input.colour ;
return textureSample;
/// return float4( 1.0f, 1.0f, 0.0f, 1.0f ); // Yellow, with Alpha = 1
}
gles1_vertex_unlit_notexture:
Texture2D DiffuseMap : register(t0);
SamplerState linearSampler : register(s0);
cbuffer simpleConstantBuffer : register( b0 )
{
matrix worldmatrix;
matrix viewmatrix;
matrix projectionmatrix;
matrix texturematrix;
float4 displayColour;
};
struct VertexShaderInput
{
float3 IN_position : POSITION0;
float3 IN_normal : NORMAL0;
float3 IN_tangent : NORMAL1;
float3 IN_bitangent : NORMAL2;
float4 IN_vertexcolour : COLOR0;
float2 IN_uv : TEXCOORD0;
};
struct PixelShaderInput
{
float4 position : SV_POSITION;
float2 uv : TEXCOORD0;
float4 colour: COLOR0;
};
//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
PixelShaderInput VS( VertexShaderInput Input )
{
PixelShaderInput result;
float4 pos;
pos.xyz=Input.IN_position;
pos.w=1.0;
// Transform the vertex position into projection space.
pos = mul(pos, worldmatrix);
pos = mul(pos, viewmatrix);
pos = mul(pos, projectionmatrix);
result.uv = Input.IN_uv;
result.colour = (Input.IN_vertexcolour / 255.0f) * (displayColour / 255.0f);
result.position = pos;
return result;
}
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 PS( PixelShaderInput input ) : SV_Target
{
//float4 textureSample = DiffuseMap.Sample(linearSampler, input.uv) * input.colour ;
float4 textureSample = input.colour ;
return textureSample;
/// return float4( 1.0f, 1.0f, 0.0f, 1.0f ); // Yellow, with Alpha = 1
}
gles1_vertex_unlit_notexture:
Texture2D DiffuseMap : register(t0);
SamplerState linearSampler : register(s0);
cbuffer simpleConstantBuffer : register( b0 )
{
matrix worldmatrix;
matrix viewmatrix;
matrix projectionmatrix;
matrix texturematrix;
float4 displayColour;
};
struct VertexShaderInput
{
float3 IN_position : POSITION0;
float3 IN_normal : NORMAL0;
float3 IN_tangent : NORMAL1;
float3 IN_bitangent : NORMAL2;
float4 IN_vertexcolour : COLOR0;
float2 IN_uv : TEXCOORD0;
};
struct PixelShaderInput
{
float4 position : SV_POSITION;
float2 uv : TEXCOORD0;
float4 colour: COLOR0;
};
//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
PixelShaderInput VS( VertexShaderInput Input )
{
PixelShaderInput result;
float4 pos;
pos.xyz=Input.IN_position;
pos.w=1.0;
// Transform the vertex position into projection space.
pos = mul(pos, worldmatrix);
pos = mul(pos, viewmatrix);
pos = mul(pos, projectionmatrix);
result.uv = Input.IN_uv;
result.colour = (Input.IN_vertexcolour / 255.0f) * (displayColour / 255.0f);
result.position = pos;
return result;
}
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 PS( PixelShaderInput input ) : SV_Target
{
//float4 textureSample = DiffuseMap.Sample(linearSampler, input.uv) * input.colour ;
float4 textureSample = input.colour ;
return textureSample;
/// return float4( 1.0f, 1.0f, 0.0f, 1.0f ); // Yellow, with Alpha = 1
}
Cleanup > To do
Games > Games by content > Games with debugging functions
Games > Games by content > Games with hidden developer messages
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Halfbrick Studios
Games > Games by platform > Android games
Games > Games by platform > IOS games
Games > Games by publisher > Games published by Halfbrick Studios
Games > Games by release date > Games released in 2011