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: Most of them aside from Android v1.04 appear to crash, fix the assets possible.
|
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. 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