If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Fruit Ninja: Puss In Boots

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Fruit Ninja: Puss In Boots

Developer: Halfbrick Studios
Publisher: Halfbrick Studios
Platforms: iOS, Android
Released internationally: October 20, 2011


SourceIcon.png This game has uncompiled source code.
DevMessageIcon.png This game has a hidden developer message.
DevTextIcon.png This game has hidden development-related text.
DebugIcon.png This game has debugging material.


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

Hmmm...
To do:
  • Most of them aside from Android v1.04 appear to crash, fix the assets possible.
    • Free HD works with adjustments but there's no sound.

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.png Download Fruit Ninja: Puss In Boots (iPhone) Windows executables
File: FNPIB_iPhoneBuild_WindowsEXEs.zip (6727 KB) (info)


Download.png Download Fruit Ninja: Puss In Boots (iPad) Windows executables
File: FNPIB_iPadBuild_WindowsEXEs.zip (5693 KB) (info)


Collision Display

Hmmm...
To do:
This isn't hardcoded, probably possible to get working on the iPhone build.

Pressing 'C' on the keyboard draws collision boxes over fruit. 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:
Option In-game effect
DISABLE CHALLENGE OVERRIDE Disables the challenge override from below.
%s Event to override the one selected next time, only present in Bandito mode.
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
}