text: /**
   * VUEngine Platformer Demo
   *
   * © Jorge Eremiev <jorgech3@gmail.com> and Christian Radke <c.radke@posteo.de>
   *
   * For the full copyright and license information, please view the LICENSE file
   * that was distributed with this source code.
   */
  
  
  //---------------------------------------------------------------------------------------------------------
  //												INCLUDES
  //---------------------------------------------------------------------------------------------------------
  
  #include <Entity.h>
  #include <HbiasEffects.h>
  #include <macros.h>
  
  
  //---------------------------------------------------------------------------------------------------------
  //												DECLARATIONS
  //---------------------------------------------------------------------------------------------------------
  
  extern BYTE PlatformerDemoLogoLTiles[];
  extern BYTE PlatformerDemoLogoLMap[];
  extern BYTE PlatformerDemoLogoRTiles[];
  extern BYTE PlatformerDemoLogoRMap[];
  extern BYTE PlatformerDemoLogoOutlineLTiles[];
  extern BYTE PlatformerDemoLogoOutlineLMap[];
  extern BYTE PlatformerDemoLogoOutlineRTiles[];
  extern BYTE PlatformerDemoLogoOutlineRMap[];
  
  
  //---------------------------------------------------------------------------------------------------------
  //												DEFINITIONS
  //---------------------------------------------------------------------------------------------------------
  
  CharSetROMSpec LOGO_L_CH =
  {
  	// number of chars, depending on allocation type:
  	// __ANIMATED_SINGLE*, __ANIMATED_SHARED*: number of chars of a single animation frame (cols * rows)
  	// __ANIMATED_MULTI, __NOT_ANIMATED: sum of all chars
  	168,
  
  	// allocation type
  	// (__ANIMATED_SINGLE, __ANIMATED_SINGLE_OPTIMIZED, __ANIMATED_SHARED, __ANIMATED_SHARED_COORDINATED, __ANIMATED_MULTI or __NOT_ANIMATED)
  	__NOT_ANIMATED,
  
  	// char spec
  	PlatformerDemoLogoLTiles,
  };
  
  TextureROMSpec LOGO_L_TX =
  {
  	// charset spec
  	(CharSetSpec*)&LOGO_L_CH,
  
  	// bgmap spec
  	PlatformerDemoLogoLMap,
  
  	// cols (max 64)
  	36,
  
  	// rows (max 64)
  	7,
  
  	// padding for affine/hbias transformations (cols, rows)
  	{4, 0},
  
  	// number of frames, depending on charset's allocation type:
  	// __ANIMATED_SINGLE*, __ANIMATED_SHARED*, __NOT_ANIMATED: 1
  	// __ANIMATED_MULTI: total number of frames
  	1,
  
  	// palette number (0-3)
  	0,
  
  	// recyclable
  	false,
  
  	// vertical flip
  	false,
  
  	// horizontal flip
  	false,
  };
  
  CharSetROMSpec LOGO_R_CH =
  {
  	// number of chars, depending on allocation type:
  	// __ANIMATED_SINGLE*, __ANIMATED_SHARED*: number of chars of a single animation frame (cols * rows)
  	// __ANIMATED_MULTI, __NOT_ANIMATED: sum of all chars
  	165,
  
  	// allocation type
  	// (__ANIMATED_SINGLE, __ANIMATED_SINGLE_OPTIMIZED, __ANIMATED_SHARED, __ANIMATED_SHARED_COORDINATED, __ANIMATED_MULTI or __NOT_ANIMATED)
  	__NOT_ANIMATED,
  
  	// char spec
  	PlatformerDemoLogoRTiles,
  };
  
  TextureROMSpec LOGO_R_TX =
  {
  	// charset spec
  	(CharSetSpec*)&LOGO_R_CH,
  
  	// bgmap spec
  	PlatformerDemoLogoRMap,
  
  	// cols (max 64)
  	36,
  
  	// rows (max 64)
  	7,
  
  	// padding for affine/hbias transformations (cols, rows)
  	{4, 0},
  
  	// number of frames, depending on charset's allocation type:
  	// __ANIMATED_SINGLE*, __ANIMATED_SHARED*, __NOT_ANIMATED: 1
  	// __ANIMATED_MULTI: total number of frames
  	1,
  
  	// palette number (0-3)
  	0,
  
  	// recyclable
  	false,
  
  	// vertical flip
  	false,
  
  	// horizontal flip
  	false,
  };
  
  CharSetROMSpec LOGO_OUTLINE_L_CH =
  {
  	// number of chars, depending on allocation type:
  	// __ANIMATED_SINGLE*, __ANIMATED_SHARED*: number of chars of a single animation frame (cols * rows)
  	// __ANIMATED_MULTI, __NOT_ANIMATED: sum of all chars
  	90,
  
  	// allocation type
  	// (__ANIMATED_SINGLE, __ANIMATED_SINGLE_OPTIMIZED, __ANIMATED_SHARED, __ANIMATED_SHARED_COORDINATED, __ANIMATED_MULTI or __NOT_ANIMATED)
  	__NOT_ANIMATED,
  
  	// char spec
  	PlatformerDemoLogoOutlineLTiles,
  };
  
  TextureROMSpec LOGO_OUTLINE_L_TX =
  {
  	// charset spec
  	(CharSetSpec*)&LOGO_OUTLINE_L_CH,
  
  	// bgmap spec
  	PlatformerDemoLogoOutlineLMap,
  
  	// cols (max 64)
  	36,
  
  	// rows (max 64)
  	7,
  
  	// padding for affine/hbias transformations (cols, rows)
  	{0, 0},
  
  	// number of frames, depending on charset's allocation type:
  	// __ANIMATED_SINGLE*, __ANIMATED_SHARED*, __NOT_ANIMATED: 1
  	// __ANIMATED_MULTI: total number of frames
  	1,
  
  	// palette number (0-3)
  	1,
  
  	// recyclable
  	false,
  
  	// vertical flip
  	false,
  
  	// horizontal flip
  	false,
  };
  
  CharSetROMSpec LOGO_OUTLINE_R_CH =
  {
  	// number of chars, depending on allocation type:
  	// __ANIMATED_SINGLE*, __ANIMATED_SHARED*: number of chars of a single animation frame (cols * rows)
  	// __ANIMATED_MULTI, __NOT_ANIMATED: sum of all chars
  	91,
  
  	// allocation type
  	// (__ANIMATED_SINGLE, __ANIMATED_SINGLE_OPTIMIZED, __ANIMATED_SHARED, __ANIMATED_SHARED_COORDINATED, __ANIMATED_MULTI or __NOT_ANIMATED)
  	__NOT_ANIMATED,
  
  	// char spec
  	PlatformerDemoLogoOutlineRTiles,
  };
  
  TextureROMSpec LOGO_OUTLINE_R_TX =
  {
  	// charset spec
  	(CharSetSpec*)&LOGO_OUTLINE_R_CH,
  
  	// bgmap spec
  	PlatformerDemoLogoOutlineRMap,
  
  	// cols (max 64)
  	36,
  
  	// rows (max 64)
  	7,
  
  	// padding for affine/hbias transformations (cols, rows)
  	{0, 0},
  
  	// number of frames, depending on charset's allocation type:
  	// __ANIMATED_SINGLE*, __ANIMATED_SHARED*, __NOT_ANIMATED: 1
  	// __ANIMATED_MULTI: total number of frames
  	1,
  
  	// palette number (0-3)
  	1,
  
  	// recyclable
  	false,
  
  	// vertical flip
  	false,
  
  	// horizontal flip
  	false,
  };
  
  BgmapSpriteROMSpec LOGO_L_IM_SPRITE =
  {
  	{
  		// sprite's type
  		__TYPE(BgmapSprite),
  
  		// texture spec
  		(TextureSpec*)&LOGO_L_TX,
  
  		// transparent (__TRANSPARENCY_NONE, __TRANSPARENCY_EVEN or __TRANSPARENCY_ODD)
  		__TRANSPARENCY_NONE,
  
  		// displacement
  		{0, 0, 0, 0},
  	},
  
  	// bgmap mode (__WORLD_BGMAP, __WORLD_AFFINE, __WORLD_OBJECT or __WORLD_HBIAS)
  	// make sure to use the proper corresponding sprite type throughout the spec (BgmapSprite or ObjectSprite)
  	__WORLD_HBIAS,
  
  	// pointer to affine/hbias manipulation function
  	(ParamTableEffectMethod)HbiasEffects_wave,
  
  	// display mode (__WORLD_ON, __WORLD_LON or __WORLD_RON)
  	__WORLD_LON,
  };
  
  BgmapSpriteROMSpec LOGO_R_IM_SPRITE =
  {
  	{
  		// sprite's type
  		__TYPE(BgmapSprite),
  
  		// texture spec
  		(TextureSpec*)&LOGO_R_TX,
  
  		// transparent (__TRANSPARENCY_NONE, __TRANSPARENCY_EVEN or __TRANSPARENCY_ODD)
  		__TRANSPARENCY_NONE,
  
  		// displacement
  		{0, 0, 0, 0},
  	},
  
  	// bgmap mode (__WORLD_BGMAP, __WORLD_AFFINE, __WORLD_OBJECT or __WORLD_HBIAS)
  	// make sure to use the proper corresponding sprite type throughout the spec (BgmapSprite or ObjectSprite)
  	__WORLD_HBIAS,
  
  	// pointer to affine/hbias manipulation function
  	(ParamTableEffectMethod)HbiasEffects_wave,
  
  	// display mode (__WORLD_ON, __WORLD_LON or __WORLD_RON)
  	__WORLD_RON,
  };
  
  BgmapSpriteROMSpec LOGO_OUTLINE_L_IM_SPRITE =
  {
  	{
  		// sprite's type
  		__TYPE(BgmapSprite),
  
  		// texture spec
  		(TextureSpec*)&LOGO_OUTLINE_L_TX,
  
  		// transparent (__TRANSPARENCY_NONE, __TRANSPARENCY_EVEN or __TRANSPARENCY_ODD)
  		__TRANSPARENCY_NONE,
  
  		// displacement
  		{0, 0, 0, 0},
  	},
  
  	// bgmap mode (__WORLD_BGMAP, __WORLD_AFFINE, __WORLD_OBJECT or __WORLD_HBIAS)
  	// make sure to use the proper corresponding sprite type throughout the spec (BgmapSprite or ObjectSprite)
  	__WORLD_HBIAS,
  
  	// pointer to affine/hbias manipulation function
  	(ParamTableEffectMethod)HbiasEffects_wave,
  
  	// display mode (__WORLD_ON, __WORLD_LON or __WORLD_RON)
  	__WORLD_LON,
  };
  
  BgmapSpriteROMSpec LOGO_OUTLINE_R_IM_SPRITE =
  {
  	{
  		// sprite's type
  		__TYPE(BgmapSprite),
  
  		// texture spec
  		(TextureSpec*)&LOGO_OUTLINE_R_TX,
  
  		// transparent (__TRANSPARENCY_NONE, __TRANSPARENCY_EVEN or __TRANSPARENCY_ODD)
  		__TRANSPARENCY_NONE,
  
  		// displacement
  		{0, 0, 0, 0},
  	},
  
  	// bgmap mode (__WORLD_BGMAP, __WORLD_AFFINE, __WORLD_OBJECT or __WORLD_HBIAS)
  	// make sure to use the proper corresponding sprite type throughout the spec (BgmapSprite or ObjectSprite)
  	__WORLD_HBIAS,
  
  	// pointer to affine/hbias manipulation function
  	(ParamTableEffectMethod)HbiasEffects_wave,
  
  	// display mode (__WORLD_ON, __WORLD_LON or __WORLD_RON)
  	__WORLD_RON,
  };
  
  BgmapSpriteROMSpec* const LOGO_IM_SPRITES[] =
  {
  	&LOGO_OUTLINE_L_IM_SPRITE,
  	&LOGO_OUTLINE_R_IM_SPRITE,
  	&LOGO_L_IM_SPRITE,
  	&LOGO_R_IM_SPRITE,
  	NULL
  };
  
  EntityROMSpec LOGO_IM =
  {
  	// class allocator
  	__TYPE(Entity),
  
  	// children
  	NULL,
  
  	// behaviors
  	NULL,
  
  	// extra
  	NULL,
  
  	// sprites
  	(SpriteSpec**)LOGO_IM_SPRITES,
  
  	// use z displacement in projection
  	false,
  
  	// collision shapes
  	(ShapeSpec*)NULL,
  
  	// size
  	// if 0, width and height will be inferred from the first sprite's texture's size
  	{0, 0, 0},
  
  	// gameworld's character's type
  	kTypeNone,
  
  	// physical specification
  	(PhysicalSpecification*)NULL,
  };
  