#include "COMMON.H"
#include "KAZU.H"
#include "SPMGR.H"
#include "TASKMGR.H"
#include "MAZE.H"
#include "SPCONT.H"
#include "SOUND.H"
#define MAZE_GAME_TIM_POS 0+4
#define MAZE_GAME_TIM_NUM 13
#define TIM_POS_MAZE_GAME_BG
#define TIM_POS_MAZE_GAME_BG
#define TIM_POS_MAZE_GAME_BG
#define TIM_POS_MAZE_GAME_BG
#define TIM_POS_MAZE_GAME_DON
#define TIM_POS_MAZE_GAME_DON
#define TIM_POS_MAZE_GAME_DON
#define TIM_POS_MAZE_GAME_GUN
#define TIM_POS_MAZE_GAME_PARTS_
#define TIM_POS_MAZE_GAME_PARTS_
#define TIM_POS_MAZE_GAME_GUN
#define TIM_POS_MAZE_GAME_GUN
#define TIM_POS_MAZE_GAME_GUN
#define MAZE_EVENT_TIM_POS 0+4
#define MAZE_EVENT_TIM_NUM 12
#define TIM_POS_MAZE_EVENT_FONT 0
#define TIM_POS_MAZE_EVENT_YORNO 1
#define TIM_POS_MAZE_EVENT_BAKU
#define TIM_POS_MAZE_EVENT_BAKU
#define TIM_POS_MAZE_EVENT_BG
#define TIM_POS_MAZE_EVENT_BG
#define TIM_POS_MAZE_EVENT_BG
#define TIM_POS_MAZE_EVENT_BG
#define TIM_POS_MAZE_EVENT_DON
#define TIM_POS_MAZE_EVENT_DON
#define TIM_POS_MAZE_EVENT_GUN
#define TIM_POS_MAZE_EVENT_GUN
#define TIM_POS_MAZE_EVENT_GUN
#define TIM_POS_MAZE_EVENT_DON
enum{
MAZE_CHAR_GAME_BG_00,
MAZE_CHAR_GAME_BG_01,
MAZE_CHAR_GAME_SELECT_LEVEL_BG_00,
MAZE_CHAR_GAME_SELECT_LEVEL_BG_01,
MAZE_CHAR_GAME_KUMA_ENTRY_00,
MAZE_CHAR_GAME_KUMA_ENTRY_MOUSE,
MAZE_CHAR_GAME_DANTYOU_00,
MAZE_CHAR_GAME_DANTYOU_01,
MAZE_CHAR_GAME_DANIN_FUUSEN_BLUE_00,
MAZE_CHAR_GAME_DANIN_FUUSEN_ORANGE_00,
MAZE_CHAR_GAME_DANIN_FUUSEN_BLUE_01,
MAZE_CHAR_GAME_DANIN_FUUSEN_ORANGE_01,
MAZE_CHAR_GAME_DANIN_HATA_00,
MAZE_CHAR_GAME_DANIN_HATA_01,
MAZE_CHAR_GAME_DANIN_HATA_02,
MAZE_CHAR_GAME_DANIN_HATA_03,
MAZE_CHAR_GAME_SELECT_LEVEL_CURSOR,
MAZE_CHAR_GAME_SELECT_LEVEL_PLATE_LIGHT,
MAZE_CHAR_GAME_SELECT_LEVEL_PLATE_DARK,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_1,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_2,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_3,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_4,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_5,
MAZE_CHAR_GAME_KUMA_ENTRY_02,
MAZE_CHAR_GAME_KUMA_00,
MAZE_CHAR_GAME_KUMA_01,
MAZE_CHAR_GAME_KUMA_02,
MAZE_CHAR_GAME_KUMA_03,
MAZE_CHAR_GAME_KUMA_04,
MAZE_CHAR_GAME_KUMA_05,
MAZE_CHAR_GAME_KUMA_06,
MAZE_CHAR_GAME_KUMA_07,
MAZE_CHAR_GAME_KUMA_08,
MAZE_CHAR_GAME_KUMA_09,
MAZE_CHAR_GAME_KUMA_10,
MAZE_CHAR_GAME_KUMA_11,
MAZE_CHAR_GAME_KUMA_12,
MAZE_CHAR_GAME_KUMA_13,
MAZE_CHAR_GAME_KUMA_14,
MAZE_CHAR_GAME_KUMA_15,
MAZE_CHAR_GAME_KUMA_16,
MAZE_CHAR_GAME_KUMA_17,
MAZE_CHAR_GAME_KUMA_18,
MAZE_CHAR_GAME_KUMA_19,
MAZE_CHAR_GAME_KUMA_20,
MAZE_CHAR_GAME_KUMA_21,
MAZE_CHAR_GAME_KUMA_22,
MAZE_CHAR_GAME_KUMA_23,
MAZE_CHAR_GAME_KUMA_24,
MAZE_CHAR_GAME_KUMA_25,
MAZE_CHAR_GAME_KUMA_26,
MAZE_CHAR_GAME_KUMA_ENTRY_01,
MAZE_CHAR_GAME_GUNGUN_00,
MAZE_CHAR_GAME_GUNGUN_01,
MAZE_CHAR_GAME_GUNGUN_02,
MAZE_CHAR_GAME_GUNGUN_03,
MAZE_CHAR_GAME_GUNGUN_04,
MAZE_CHAR_GAME_GUNGUN_05,
MAZE_CHAR_GAME_GUNGUN_06,
MAZE_CHAR_GAME_GUNGUN_07,
MAZE_CHAR_GAME_GUNGUN_08,
MAZE_CHAR_GAME_GUNGUN_09,
MAZE_CHAR_GAME_GUNGUN_10,
MAZE_CHAR_GAME_GUNGUN_11,
MAZE_CHAR_GAME_GUNGUN_12,
MAZE_CHAR_GAME_GUNGUN_13,
MAZE_CHAR_GAME_GUNGUN_14,
MAZE_CHAR_GAME_GUNGUN_15,
MAZE_CHAR_GAME_GUNGUN_CATCH_00,
MAZE_CHAR_GAME_GUNGUN_CATCH_01,
MAZE_CHAR_GAME_GUNGUN_CATCH_02,
MAZE_CHAR_GAME_GUNGUN_CATCH_03,
MAZE_CHAR_GAME_GUNGUN_ENTRY_00,
MAZE_CHAR_GAME_GUNGUN_ENTRY_01,
MAZE_CHAR_GAME_GUNGUN_ENTRY_02,
MAZE_CHAR_GAME_QUESTION_NUM_00,
MAZE_CHAR_GAME_QUESTION_NUM_01,
MAZE_CHAR_GAME_QUESTION_NUM_02,
MAZE_CHAR_GAME_QUESTION_NUM_03,
MAZE_CHAR_GAME_QUESTION_NUM_04,
MAZE_CHAR_GAME_QUESTION_NUM_05,
MAZE_CHAR_GAME_QUESTION_NUM_06,
MAZE_CHAR_GAME_QUESTION_NUM_07,
MAZE_CHAR_GAME_QUESTION_NUM_08,
MAZE_CHAR_GAME_QUESTION_NUM_09,
MAZE_CHAR_GAME_QUESTION_NUM_10,
MAZE_CHAR_GAME_QUESTION_MARK_H,
MAZE_CHAR_GAME_QUESTION_STR_TO,
MAZE_CHAR_GAME_QUESTION_STR_HA,
MAZE_CHAR_GAME_ANSWER_NUM_00,
MAZE_CHAR_GAME_ANSWER_NUM_01,
MAZE_CHAR_GAME_ANSWER_NUM_02,
MAZE_CHAR_GAME_ANSWER_NUM_03,
MAZE_CHAR_GAME_ANSWER_NUM_04,
MAZE_CHAR_GAME_ANSWER_NUM_05,
MAZE_CHAR_GAME_ANSWER_NUM_06,
MAZE_CHAR_GAME_ANSWER_NUM_07,
MAZE_CHAR_GAME_ANSWER_NUM_08,
MAZE_CHAR_GAME_ANSWER_NUM_09,
MAZE_CHAR_GAME_ANSWER_NUM_10,
MAZE_CHAR_GAME_HAI_ARROW_LEFT,
MAZE_CHAR_GAME_HAI_ARROW_UP,
MAZE_CHAR_GAME_HAI_ARROW_RIGHT,
MAZE_CHAR_GAME_HAI_ARROW_DOWN,
MAZE_CHAR_GAME_RED_ARROW_LEFT,
MAZE_CHAR_GAME_RED_ARROW_UP,
MAZE_CHAR_GAME_RED_ARROW_RIGHT,
MAZE_CHAR_GAME_RED_ARROW_DOWN,
MAZE_CHAR_GAME_SMOKE_00,
MAZE_CHAR_GAME_SMOKE_01,
MAZE_CHAR_GAME_SAKU_00,
MAZE_CHAR_GAME_SAKU_01,
MAZE_CHAR_GAME_SMALL_STAR,
MAZE_CHAR_GAME_BEE_LEFT,
MAZE_CHAR_GAME_BEE_RIGHT,
MAZE_CHAR_GAME_BIG_STAR,
MAZE_CHAR_GAME_BIG_ARROW_LEFT,
MAZE_CHAR_GAME_BIG_ARROW_RIGHT,
MAZE_CHAR_GAME_GUNGUN_FACE_00,
MAZE_CHAR_GAME_GUNGUN_FACE_01,
MAZE_CHAR_GAME_GUNGUN_FACE_02,
MAZE_CHAR_GAME_GUNGUN_FACE_03,
MAZE_CHAR_GAME_GUNGUN_MARK,
MAZE_CHAR_GAME_IWA_00,
MAZE_CHAR_GAME_IWA_01,
MAZE_CHAR_GAME_GUNGUN_BOROBORO_01,
MAZE_CHAR_GAME_GUNGUN_BODY,
MAZE_CHAR_GAME_GUNGUN_FACE_00_DMY,
MAZE_CHAR_GAME_GUNGUN_FACE_01_DMY,
MAZE_CHAR_GAME_GUNGUN_KATATE_UE,
MAZE_CHAR_GAME_GUNGUN_KATATE_YOKO,
MAZE_CHAR_GAME_GUNGUN_MOUTH_00,
MAZE_CHAR_GAME_GUNGUN_MOUTH_01,
MAZE_CHAR_GAME_GUNGUN_MOUTH_02,
MAZE_CHAR_GAME_GUNGUN_MOUTH_03,
MAZE_CHAR_GAME_GUNGUN_BANZAI_BODY,
MAZE_CHAR_GAME_GUNGUN_BANZAI_ARM_UE_LEFT,
MAZE_CHAR_GAME_GUNGUN_BANZAI_ARM_UE_RIGHT,
MAZE_CHAR_GAME_GUNGUN_BANZAI_ARM_YOKO_LEFT,
MAZE_CHAR_GAME_GUNGUN_BANZAI_ARM_YOKO_RIGHT,
MAZE_CHAR_GAME_GUNGUN_BANZAI_MOUTH,
MAZE_CHAR_GAME_GUNGUN_JUMP,
MAZE_CHAR_GAME_GUNGUN_JUMP_MOUTH_00,
MAZE_CHAR_GAME_GUNGUN_JUMP_MOUTH_01,
MAZE_CHAR_GAME_SHADOW_BIG,
MAZE_CHAR_GAME_SHADOW_SMALL,
MAZE_CHAR_GAME_KUMA_BODY,
MAZE_CHAR_GAME_KUMA_HEAD_00,
MAZE_CHAR_GAME_KUMA_HEAD_01,
MAZE_CHAR_GAME_KUMA_GUTS_00_ARM_LEFT,
MAZE_CHAR_GAME_KUMA_GUTS_00_ARM_RIGHT,
MAZE_CHAR_GAME_KUMA_ENTRY_ARM_LEFT,
MAZE_CHAR_GAME_KUMA_ENTRY_ARM_RIGHT,
MAZE_CHAR_GAME_KUMA_SEE_ARM_LEFT,
MAZE_CHAR_GAME_KUMA_SEE_ARM_RIGHT,
MAZE_CHAR_GAME_KUMA_BASIC_ARM_LEFT,
MAZE_CHAR_GAME_KUMA_BASIC_ARM_RIGHT,
MAZE_CHAR_GAME_KUMA_GUTS_01_ARM_LEFT,
MAZE_CHAR_GAME_KUMA_GUTS_01_ARM_RIGHT,
MAZE_CHAR_GAME_KUMA_AKANBE_ARM_LEFT,
MAZE_CHAR_GAME_KUMA_AKANBE_ARM_RIGHT,
};
enum{
MAZE_CHAR_EVENT_BAKU_BIG_00,
MAZE_CHAR_EVENT_BAKU_BIG_01,
MAZE_CHAR_EVENT_BAKU_MIDDLE,
MAZE_CHAR_EVENT_BAKU_SMALL,
MAZE_CHAR_EVENT_BG_00,
MAZE_CHAR_EVENT_BG_01,
MAZE_CHAR_EVENT_BG_02,
MAZE_CHAR_EVENT_BG_03,
MAZE_CHAR_EVENT_KUMA_BODY,
MAZE_CHAR_EVENT_KUMA_HEAD_00,
MAZE_CHAR_EVENT_KUMA_HEAD_01,
MAZE_CHAR_EVENT_KUMA_GUTS_00_ARM_LEFT,
MAZE_CHAR_EVENT_KUMA_GUTS_00_ARM_RIGHT,
MAZE_CHAR_EVENT_KUMA_ENTRY_ARM_LEFT,
MAZE_CHAR_EVENT_KUMA_ENTRY_ARM_RIGHT,
MAZE_CHAR_EVENT_KUMA_SEE_ARM_LEFT,
MAZE_CHAR_EVENT_KUMA_SEE_ARM_RIGHT,
MAZE_CHAR_EVENT_KUMA_BASIC_ARM_LEFT,
MAZE_CHAR_EVENT_KUMA_BASIC_ARM_RIGHT,
MAZE_CHAR_EVENT_KUMA_GUTS_01_ARM_LEFT,
MAZE_CHAR_EVENT_KUMA_GUTS_01_ARM_RIGHT,
MAZE_CHAR_EVENT_KUMA_AKANBE_ARM_LEFT,
MAZE_CHAR_EVENT_KUMA_AKANBE_ARM_RIGHT,
MAZE_CHAR_EVENT_KUMA_PARTS_00,
MAZE_CHAR_EVENT_KUMA_PARTS_01,
MAZE_CHAR_EVENT_KUMA_PARTS_02,
MAZE_CHAR_EVENT_KUMA_PARTS_03,
MAZE_CHAR_EVENT_KUMA_PARTS_04,
MAZE_CHAR_EVENT_KUMA_PARTS_05,
MAZE_CHAR_EVENT_KUMA_PARTS_06,
MAZE_CHAR_EVENT_KUMA_PARTS_07,
MAZE_CHAR_EVENT_KUMA_PARTS_08,
MAZE_CHAR_EVENT_KUMA_PARTS_09,
MAZE_CHAR_EVENT_KUMA_PARTS_10,
MAZE_CHAR_EVENT_KUMA_PARTS_11,
MAZE_CHAR_EVENT_KUMA_PARTS_12,
MAZE_CHAR_EVENT_KUMA_PARTS_13,
MAZE_CHAR_EVENT_KUMA_PARTS_14,
MAZE_CHAR_EVENT_KUMA_PARTS_15,
MAZE_CHAR_EVENT_KUMA_PARTS_16,
MAZE_CHAR_EVENT_KUMA_PARTS_17,
MAZE_CHAR_EVENT_KUMA_PARTS_18,
MAZE_CHAR_EVENT_KUMA_PARTS_19,
MAZE_CHAR_EVENT_KUMA_PARTS_20,
MAZE_CHAR_EVENT_KUMA_PARTS_21,
MAZE_CHAR_EVENT_KUMA_PARTS_22,
MAZE_CHAR_EVENT_KUMA_PARTS_23,
MAZE_CHAR_EVENT_KUMA_PARTS_24,
MAZE_CHAR_EVENT_KUMA_PARTS_25,
MAZE_CHAR_EVENT_KUMA_PARTS_26,
MAZE_CHAR_EVENT_KUMA_PARTS_27,
MAZE_CHAR_EVENT_GUNGUN_BOROBORO_00,
MAZE_CHAR_EVENT_GUNGUN_ZITANDA_00,
MAZE_CHAR_EVENT_GUNGUN_ZITANDA_01,
MAZE_CHAR_EVENT_KUMA_ZITANDA_00,
MAZE_CHAR_EVENT_KUMA_ZITANDA_01,
MAZE_CHAR_EVENT_KUMA_BANZAI_00,
MAZE_CHAR_EVENT_KUMA_BANZAI_01,
MAZE_CHAR_EVENT_KUMA_BANZAI_02,
MAZE_CHAR_EVENT_GUNGUN_BOROBORO_01,
MAZE_CHAR_EVENT_GUNGUN_BODY,
MAZE_CHAR_EVENT_GUNGUN_FACE_00,
MAZE_CHAR_EVENT_GUNGUN_FACE_01,
MAZE_CHAR_EVENT_GUNGUN_KATATE_UE,
MAZE_CHAR_EVENT_GUNGUN_KATATE_YOKO,
MAZE_CHAR_EVENT_GUNGUN_MOUTH_00,
MAZE_CHAR_EVENT_GUNGUN_MOUTH_01,
MAZE_CHAR_EVENT_GUNGUN_MOUTH_02,
MAZE_CHAR_EVENT_GUNGUN_MOUTH_03,
MAZE_CHAR_EVENT_GUNGUN_BANZAI_BODY,
MAZE_CHAR_EVENT_GUNGUN_BANZAI_ARM_UE_LEFT,
MAZE_CHAR_EVENT_GUNGUN_BANZAI_ARM_UE_RIGHT,
MAZE_CHAR_EVENT_GUNGUN_BANZAI_ARM_YOKO_LEFT,
MAZE_CHAR_EVENT_GUNGUN_BANZAI_ARM_YOKO_RIGHT,
MAZE_CHAR_EVENT_GUNGUN_BANZAI_MOUTH,
MAZE_CHAR_EVENT_GUNGUN_JUMP,
MAZE_CHAR_EVENT_GUNGUN_JUMP_MOUTH_00,
MAZE_CHAR_EVENT_GUNGUN_JUMP_MOUTH_01,
MAZE_CHAR_EVENT_SHADOW_BIG,
MAZE_CHAR_EVENT_SHADOW_SMALL,
MAZE_CHAR_EVENT_SELECT_CONTINUE_PLATE,
MAZE_CHAR_EVENT_SELECT_CONTINUE_YES_DARK,
MAZE_CHAR_EVENT_SELECT_CONTINUE_NO_DARK,
MAZE_CHAR_EVENT_SELECT_CONTINUE_YES_LIGHT,
MAZE_CHAR_EVENT_SELECT_CONTINUE_NO_LIGHT,
MAZE_CHAR_EVENT_SELECT_CONTINUE_BUPE_00,
MAZE_CHAR_EVENT_SELECT_CONTINUE_BUPE_01,
MAZE_CHAR_EVENT_SELECT_CONTINUE_RETRY_H,
MAZE_CHAR_EVENT_SELECT_CONTINUE_END_H,
MAZE_CHAR_EVENT_SELECT_CONTINUE_CONTINUE_H,
MAZE_CHAR_EVENT_SELECT_CONTINUE_CURSOR,
MAZE_CHAR_EVENT_SELECT_CONTINUE_ERABU,
MAZE_CHAR_EVENT_SELECT_CONTINUE_KETEI,
MAZE_CHAR_EVENT_SELECT_CONTINUE_MENU,
MAZE_CHAR_EVENT_KUMA_ENTRY_00,
MAZE_CHAR_EVENT_KUMA_ENTRY_MOUSE,
MAZE_CHAR_EVENT_DANTYOU_00,
MAZE_CHAR_EVENT_DANTYOU_01,
MAZE_CHAR_EVENT_DANIN_FUUSEN_BLUE_00,
MAZE_CHAR_EVENT_DANIN_FUUSEN_ORANGE_00,
MAZE_CHAR_EVENT_DANIN_FUUSEN_BLUE_01,
MAZE_CHAR_EVENT_DANIN_FUUSEN_ORANGE_01,
MAZE_CHAR_EVENT_DANIN_HATA_00,
MAZE_CHAR_EVENT_DANIN_HATA_01,
MAZE_CHAR_EVENT_DANIN_HATA_02,
MAZE_CHAR_EVENT_DANIN_HATA_03,
MAZE_CHAR_EVENT_SELECT_LEVEL_CURSOR,
MAZE_CHAR_EVENT_SELECT_LEVEL_PLATE_LIGHT,
MAZE_CHAR_EVENT_SELECT_LEVEL_PLATE_DARK,
MAZE_CHAR_EVENT_SELECT_LEVEL_NUM_1,
MAZE_CHAR_EVENT_SELECT_LEVEL_NUM_2,
MAZE_CHAR_EVENT_SELECT_LEVEL_NUM_3,
MAZE_CHAR_EVENT_SELECT_LEVEL_NUM_4,
MAZE_CHAR_EVENT_SELECT_LEVEL_NUM_5,
};
extern u_long pad;
extern u_long NewPad;
extern u_long OldPad;
extern u_long JstPad;
extern u_long WorkPad;
extern u_long BG01A_image[];
extern u_long BG01A_clut[];
extern u_long BG01B_image[];
extern u_long BG01B_clut[];
extern u_long BG03A_image[];
extern u_long BG03A_clut[];
extern u_long BG03B_image[];
extern u_long BG03B_clut[];
extern u_long DON02_image[];
extern u_long DON02_clut[];
extern u_long DON03_image[];
extern u_long DON03_clut[];
extern u_long DON04_image[];
extern u_long DON04_clut[];
extern u_long GUN03_image[];
extern u_long GUN03_clut[];
extern u_long PARTS_00_image[];
extern u_long PARTS_00_clut[];
extern u_long PARTS_01_image[];
extern u_long PARTS_01_clut[];
extern u_long GUN02G_image[];
extern u_long GUN02G_clut[];
extern u_long GUN04G_image[];
extern u_long GUN04G_clut[];
extern u_long DON01G_image[];
extern u_long DON01G_clut[];
extern u_long BAKU01A_image[];
extern u_long BAKU01A_clut[];
extern u_long BAKU01B_image[];
extern u_long BAKU01B_clut[];
extern u_long BG02A_image[];
extern u_long BG02A_clut[];
extern u_long BG02B_image[];
extern u_long BG02B_clut[];
extern u_long BG02C_image[];
extern u_long BG02C_clut[];
extern u_long BG02D_image[];
extern u_long BG02D_clut[];
extern u_long DON01_image[];
extern u_long DON01_clut[];
extern u_long DON03E_image[];
extern u_long DON03E_clut[];
extern u_long GUN01_image[];
extern u_long GUN01_clut[];
extern u_long GUN02_image[];
extern u_long GUN02_clut[];
extern u_long GUN04_image[];
extern u_long GUN04_clut[];
extern u_long DON02E_image[];
extern u_long DON02E_clut[];
extern u_long font_image[];
extern u_long YorN_image[];
extern u_long name_image[];
extern u_long MMENU_image[];
extern u_long font_clut[];
extern u_long YorN_clut[];
extern u_long name_clut[];
extern u_long MMENU_clut[];
extern u_long help_00_image[];
extern u_long help_00_clut[];
extern int active;
extern GsOT Wot[2];
static GsBOXF Box;
static GsBOXF BoxDataBlack[] = {0x00000000, 0, 0,320,240,0x00,0x00,0x00};
static GsBOXF BoxDataWhite[] = {0x00000000, 0, 0,320,240,0xFF,0xFF,0xFF};
static MAZE_GAME MGameMgr;
static TIMD MazeGameTextureFile[] = {
{ "RCUBE3", "\\TIM\\MAZEGD.B;1"},
};
static TIMD MazeEventTextureFile[] = {
{ "RCUBE2", "\\TIM\\MAZEED.B;1"},
};
static GsIMAGE MazeGameTextureImage[]=
{
{ TIM_COLOR_16, 384,0, 64,256, font_image, 16,480, 16,6, font_clut },
{ TIM_COLOR_16, 448,0, 64,256, YorN_image, 0,480, 16,16, YorN_clut },
{ TIM_COLOR_16, 512,0, 64,256, help_00_image, 0,496, 16,2, help_00_clut },
{ TIM_COLOR_16, 320,0, 64,256, MMENU_image, 16,489, 16,7, MMENU_clut },
{ TIM_COLOR_16, 640,0, 64,256, BG01A_image, 64,481, 16,1, BG01A_clut },
{ TIM_COLOR_16, 480,256, 16,256, BG01B_image, 48,480, 16,1, BG01B_clut },
{ TIM_COLOR_256, 320,256, 128,256, BG03A_image, 64,498, 256,1, BG03A_clut },
{ TIM_COLOR_256, 448,256, 32,256, BG03B_image, 64,497, 256,1, BG03B_clut },
{ TIM_COLOR_16, 704,0, 64,256, DON02_image, 48,484, 16,7, DON02_clut },
{ TIM_COLOR_16, 512,256, 64,256, DON03_image, 64,482, 16,1, DON03_clut },
{ TIM_COLOR_16, 768,0, 64,256, DON04_image, 48,481, 16,3, DON04_clut },
{ TIM_COLOR_16, 832,0, 64,256, GUN03_image, 64,480, 16,1, GUN03_clut },
{ TIM_COLOR_16, 576,0, 64,256, PARTS_00_image, 80,480, 16,9, PARTS_00_clut },
{ TIM_COLOR_16, 496,256, 16,24, PARTS_01_image, 80,489, 16,2, PARTS_01_clut },
{ TIM_COLOR_16, 640,256, 64,256, GUN02G_image, 64,485, 16,1, GUN02G_clut },
{ TIM_COLOR_16, 576,256, 64,256, GUN04G_image, 64,483, 16,2, GUN04G_clut },
{ TIM_COLOR_16, 704,256, 64,256, DON01G_image, 64,486, 16,3, DON01G_clut },
};
static GsIMAGE MazeEventTextureImage[]=
{
{ TIM_COLOR_16, 384,0, 64,256, font_image, 16,480, 16,6, font_clut },
{ TIM_COLOR_16, 448,0, 64,256, YorN_image, 0,480, 16,16, YorN_clut },
{ TIM_COLOR_16, 512,0, 64,256, help_00_image, 0,496, 16,2, help_00_clut },
{ TIM_COLOR_16, 320,0, 64,256, MMENU_image, 16,489, 16,7, MMENU_clut },
{ TIM_COLOR_16, 576,0, 64,256, BAKU01A_image, 32,489, 16,1, BAKU01A_clut },
{ TIM_COLOR_16, 640,0, 64,256, BAKU01B_image, 32,480, 16,1, BAKU01B_clut },
{ TIM_COLOR_256, 320,256, 128,256, BG02A_image, 0,500, 256,1, BG02A_clut },
{ TIM_COLOR_256, 448,256, 32,256, BG02B_image, 0,501, 256,1, BG02B_clut },
{ TIM_COLOR_256, 704,0, 128,47, BG02C_image, 0,502, 256,1, BG02C_clut },
{ TIM_COLOR_256, 480,256, 32,47, BG02D_image, 0,503, 256,1, BG02D_clut },
{ TIM_COLOR_16, 512,256, 64,256, DON01_image, 32,481, 16,3, DON01_clut },
{ TIM_COLOR_16, 768,256, 64,256, DON03E_image, 32,490, 16,1, DON03E_clut },
{ TIM_COLOR_16, 640,256, 64,256, GUN01_image, 32,486, 16,2, GUN01_clut },
{ TIM_COLOR_16, 704,256, 64,256, GUN02_image, 32,488, 16,1, GUN02_clut },
{ TIM_COLOR_16, 576,256, 64,256, GUN04_image, 32,484, 16,2, GUN04_clut },
{ TIM_COLOR_16, 832,256, 64,256, DON02E_image, 48,480, 16,7, DON02E_clut },
};
static ENTRY_SPRITE_DATA MazeGameSpriteData[]=
{
{ TIM_POS_MAZE_GAME_BG01A, 0, 0, 240, 256, 0 },
{ TIM_POS_MAZE_GAME_BG01B, 0, 0, 240, 64, 0 },
{ TIM_POS_MAZE_GAME_BG03A, 0, 0, 240, 256, 0 },
{ TIM_POS_MAZE_GAME_BG03B, 0, 0, 240, 64, 0 },
{ TIM_POS_MAZE_GAME_DON02, 0, 0, 144, 133, 0 },
{ TIM_POS_MAZE_GAME_DON02, 134, 0, 12, 37, 0 },
{ TIM_POS_MAZE_GAME_DON02, 0, 144, 42, 48, 1 },
{ TIM_POS_MAZE_GAME_DON02, 48, 144, 42, 48, 1 },
{ TIM_POS_MAZE_GAME_DON02, 0, 186, 33, 40, 1 },
{ TIM_POS_MAZE_GAME_DON02, 0, 186, 33, 40, 2 },
{ TIM_POS_MAZE_GAME_DON02, 40, 186, 33, 40, 1 },
{ TIM_POS_MAZE_GAME_DON02, 40, 186, 33, 40, 2 },
{ TIM_POS_MAZE_GAME_DON02, 80, 186, 33, 40, 1 },
{ TIM_POS_MAZE_GAME_DON02, 120, 186, 33, 40, 1 },
{ TIM_POS_MAZE_GAME_DON02, 160, 186, 33, 40, 3 },
{ TIM_POS_MAZE_GAME_DON02, 200, 186, 33, 40, 3 },
{ TIM_POS_MAZE_GAME_DON02, 96, 144, 14, 20, 4 },
{ TIM_POS_MAZE_GAME_DON02, 96, 158, 9, 18, 4 },
{ TIM_POS_MAZE_GAME_DON02, 96, 158, 9, 18, 5 },
{ TIM_POS_MAZE_GAME_DON02, 96, 168, 10, 8, 6 },
{ TIM_POS_MAZE_GAME_DON02, 104, 168, 10, 8, 6 },
{ TIM_POS_MAZE_GAME_DON02, 112, 168, 10, 8, 6 },
{ TIM_POS_MAZE_GAME_DON02, 120, 168, 10, 8, 6 },
{ TIM_POS_MAZE_GAME_DON02, 128, 168, 10, 8, 6 },
{ TIM_POS_MAZE_GAME_DON03, 0, 0, 132, 140, 0 },
{ TIM_POS_MAZE_GAME_DON03, 0, 132, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 30, 132, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 60, 132, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 90, 132, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 120, 132, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 150, 132, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 180, 132, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 210, 132, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 0, 162, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 30, 162, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 60, 162, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 90, 162, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 120, 162, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 150, 162, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 180, 162, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 210, 162, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 0, 192, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 30, 192, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 60, 192, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 90, 192, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 120, 192, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 150, 192, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 180, 192, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 210, 192, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 0, 222, 30, 30, 0 },
{ TIM_POS_MAZE_GAME_DON03, 30, 222, 19, 35, 0 },
{ TIM_POS_MAZE_GAME_DON03, 65, 222, 19, 35, 0 },
{ TIM_POS_MAZE_GAME_DON04, 0, 0, 144, 133, 0 },
{ TIM_POS_MAZE_GAME_DON04, 0, 144, 33, 30, 1 },
{ TIM_POS_MAZE_GAME_DON04, 30, 144, 33, 30, 1 },
{ TIM_POS_MAZE_GAME_DON04, 60, 144, 33, 30, 1 },
{ TIM_POS_MAZE_GAME_DON04, 90, 144, 33, 30, 1 },
{ TIM_POS_MAZE_GAME_DON04, 120, 144, 33, 30, 1 },
{ TIM_POS_MAZE_GAME_DON04, 150, 144, 33, 30, 1 },
{ TIM_POS_MAZE_GAME_DON04, 180, 144, 33, 30, 1 },
{ TIM_POS_MAZE_GAME_DON04, 210, 144, 33, 30, 1 },
{ TIM_POS_MAZE_GAME_DON04, 0, 177, 31, 32, 1 },
{ TIM_POS_MAZE_GAME_DON04, 32, 177, 31, 32, 1 },
{ TIM_POS_MAZE_GAME_DON04, 64, 177, 31, 32, 1 },
{ TIM_POS_MAZE_GAME_DON04, 96, 177, 31, 32, 1 },
{ TIM_POS_MAZE_GAME_DON04, 128, 177, 31, 32, 1 },
{ TIM_POS_MAZE_GAME_DON04, 160, 177, 31, 32, 1 },
{ TIM_POS_MAZE_GAME_DON04, 192, 177, 31, 32, 1 },
{ TIM_POS_MAZE_GAME_DON04, 224, 177, 31, 32, 1 },
{ TIM_POS_MAZE_GAME_DON04, 0, 207, 40, 40, 2 },
{ TIM_POS_MAZE_GAME_DON04, 40, 207, 40, 40, 2 },
{ TIM_POS_MAZE_GAME_DON04, 80, 207, 40, 40, 2 },
{ TIM_POS_MAZE_GAME_DON04, 120, 207, 40, 40, 2 },
{ TIM_POS_MAZE_GAME_GUN03, 0, 0, 127, 113, 0 },
{ TIM_POS_MAZE_GAME_GUN03, 113, 0, 134, 109, 0 },
{ TIM_POS_MAZE_GAME_GUN03, 0, 127, 121, 124, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 0, 0, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 32, 0, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 64, 0, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 96, 0, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 128, 0, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 160, 0, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 192, 0, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 224, 0, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 0, 26, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 32, 26, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 64, 26, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 96, 26, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 128, 26, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 160, 26, 26, 32, 0 },
{ TIM_POS_MAZE_GAME_PARTS_00, 0, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 22, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 44, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 66, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 88, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 110, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 132, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 154, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 176, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 198, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 220, 52, 19, 21, 1 },
{ TIM_POS_MAZE_GAME_PARTS_00, 0, 71, 20, 20, 2 },
{ TIM_POS_MAZE_GAME_PARTS_00, 20, 71, 20, 20, 2 },
{ TIM_POS_MAZE_GAME_PARTS_00, 40, 71, 20, 20, 2 },
{ TIM_POS_MAZE_GAME_PARTS_00, 60, 71, 20, 20, 2 },
{ TIM_POS_MAZE_GAME_PARTS_00, 80, 71, 20, 20, 2 },
{ TIM_POS_MAZE_GAME_PARTS_00, 100, 71, 20, 20, 2 },
{ TIM_POS_MAZE_GAME_PARTS_00, 120, 71, 20, 20, 2 },
{ TIM_POS_MAZE_GAME_PARTS_00, 140, 71, 20, 20, 2 },
{ TIM_POS_MAZE_GAME_PARTS_00, 150, 91, 21, 23, 3 },
{ TIM_POS_MAZE_GAME_PARTS_00, 174, 91, 14, 15, 3 },
{ TIM_POS_MAZE_GAME_PARTS_00, 0, 117, 23, 23, 4 },
{ TIM_POS_MAZE_GAME_PARTS_00, 24, 117, 23, 23, 4 },
{ TIM_POS_MAZE_GAME_PARTS_00, 48, 117, 15, 14, 4 },
{ TIM_POS_MAZE_GAME_PARTS_00, 62, 117, 15, 18, 4 },
{ TIM_POS_MAZE_GAME_PARTS_00, 80, 117, 15, 18, 4 },
{ TIM_POS_MAZE_GAME_PARTS_00, 0, 91, 20, 24, 8 },
{ TIM_POS_MAZE_GAME_PARTS_00, 0, 160, 31, 40, 7 },
{ TIM_POS_MAZE_GAME_PARTS_00, 40, 160, 31, 40, 7 },
{ TIM_POS_MAZE_GAME_PARTS_00, 80, 160, 20, 22, 7 },
{ TIM_POS_MAZE_GAME_PARTS_00, 102, 160, 20, 22, 7 },
{ TIM_POS_MAZE_GAME_PARTS_00, 124, 160, 20, 22, 7 },
{ TIM_POS_MAZE_GAME_PARTS_00, 146, 160, 20, 22, 7 },
{ TIM_POS_MAZE_GAME_PARTS_00, 0, 140, 18, 20, 6 },
{ TIM_POS_MAZE_GAME_PARTS_01, 3, 0, 24, 28, 0 },
{ TIM_POS_MAZE_GAME_PARTS_01, 33, 0, 24, 28, 1 },
{ TIM_POS_MAZE_GAME_GUN02G, 0, 0, 169, 140, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 140, 0, 81, 111, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 148, 81, 67, 100, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 160, 148, 72, 96, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 50, 169, 51, 45, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 96, 169, 31, 46, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 0, 169, 21, 50, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 0, 190, 21, 50, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 0, 211, 21, 50, 0 },
{ TIM_POS_MAZE_GAME_GUN02G, 0, 232, 21, 50, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 0, 0, 131, 92, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 0, 131, 49, 40, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 40, 131, 49, 40, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 0, 180, 27, 44, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 0, 207, 27, 44, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 0, 234, 18, 48, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 92, 0, 146, 126, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 80, 146, 10, 48, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 80, 156, 14, 26, 0 },
{ TIM_POS_MAZE_GAME_GUN04G, 80, 170, 26, 97, 1 },
{ TIM_POS_MAZE_GAME_GUN04G, 178, 170, 17, 51, 1 },
{ TIM_POS_MAZE_GAME_GUN01G, 0, 144, 68, 94, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 94, 144, 66, 78, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 172, 144, 69, 78, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 0, 213, 40, 30, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 30, 213, 40, 30, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 60, 213, 36, 34, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 94, 213, 36, 34, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 128, 213, 32, 30, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 158, 213, 32, 30, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 134, 0, 42, 26, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 160, 0, 42, 26, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 186, 0, 56, 34, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 220, 0, 56, 34, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 134, 56, 34, 40, 0 },
{ TIM_POS_MAZE_GAME_GUN01G, 174, 56, 46, 67, 0 },
{ ENTRY_SPRITE_DATA_END,0,0,0,0,0 }
};
static ENTRY_SPRITE_DATA MazeEventSpriteData[]=
{
{ TIM_POS_MAZE_EVENT_BAKU01A, 0, 0, 199, 256, 0 },
{ TIM_POS_MAZE_EVENT_BAKU01B, 0, 0, 199, 50, 0 },
{ TIM_POS_MAZE_EVENT_BAKU01B, 50, 0, 154, 206, 0 },
{ TIM_POS_MAZE_EVENT_BAKU01B, 50, 154, 82, 107, 0 },
{ TIM_POS_MAZE_EVENT_BG02A, 0, 0, 240, 256, 0 },
{ TIM_POS_MAZE_EVENT_BG02B, 256, 0, 240, 64, 0 },
{ TIM_POS_MAZE_EVENT_BG02C, 0, 0, 47, 256, 0 },
{ TIM_POS_MAZE_EVENT_BG02D, 256, 0, 47, 64, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 0, 144, 68, 94, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 94, 144, 66, 78, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 172, 144, 69, 78, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 0, 213, 40, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 30, 213, 40, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 60, 213, 36, 34, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 94, 213, 36, 34, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 128, 213, 32, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 158, 213, 32, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 134, 0, 42, 26, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 160, 0, 42, 26, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 186, 0, 56, 34, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 220, 0, 56, 34, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 134, 56, 34, 40, 0 },
{ TIM_POS_MAZE_EVENT_DON01, 174, 56, 46, 67, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 0, 0, 132, 140, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 0, 132, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 30, 132, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 60, 132, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 90, 132, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 120, 132, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 150, 132, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 180, 132, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 210, 132, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 0, 162, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 30, 162, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 60, 162, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 90, 162, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 120, 162, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 150, 162, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 180, 162, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 210, 162, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 0, 192, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 30, 192, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 60, 192, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 90, 192, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 120, 192, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 150, 192, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 180, 192, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 210, 192, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 0, 222, 30, 30, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 30, 222, 19, 35, 0 },
{ TIM_POS_MAZE_EVENT_DON03E, 65, 222, 19, 35, 0 },
{ TIM_POS_MAZE_EVENT_GUN01, 0, 0, 151, 152, 0 },
{ TIM_POS_MAZE_EVENT_GUN01, 152, 0, 60, 52, 0 },
{ TIM_POS_MAZE_EVENT_GUN01, 204, 0, 60, 52, 0 },
{ TIM_POS_MAZE_EVENT_GUN01, 0, 160, 57, 60, 1 },
{ TIM_POS_MAZE_EVENT_GUN01, 60, 160, 57, 60, 1 },
{ TIM_POS_MAZE_EVENT_GUN01, 120, 160, 57, 60, 1 },
{ TIM_POS_MAZE_EVENT_GUN01, 180, 160, 57, 60, 1 },
{ TIM_POS_MAZE_EVENT_GUN01, 180, 103, 57, 60, 1 },
{ TIM_POS_MAZE_EVENT_GUN02, 0, 0, 169, 140, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 140, 0, 81, 111, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 148, 81, 67, 100, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 160, 148, 72, 96, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 50, 169, 51, 45, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 96, 169, 31, 46, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 0, 169, 21, 50, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 0, 190, 21, 50, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 0, 211, 21, 50, 0 },
{ TIM_POS_MAZE_EVENT_GUN02, 0, 232, 21, 50, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 0, 0, 131, 92, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 0, 131, 49, 40, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 40, 131, 49, 40, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 0, 180, 27, 44, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 0, 207, 27, 44, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 0, 234, 18, 48, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 92, 0, 146, 126, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 80, 146, 10, 48, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 80, 156, 14, 26, 0 },
{ TIM_POS_MAZE_EVENT_GUN04, 80, 170, 26, 97, 1 },
{ TIM_POS_MAZE_EVENT_GUN04, 178, 170, 17, 51, 1 },
{ TIM_POS_MAZE_EVENT_YORNO, 0, 0, 115, 186, 0 },
{ TIM_POS_MAZE_EVENT_YORNO, 0, 115, 40, 38, 1 },
{ TIM_POS_MAZE_EVENT_YORNO, 38, 115, 40, 44, 1 },
{ TIM_POS_MAZE_EVENT_YORNO, 82, 115, 40, 44, 2 },
{ TIM_POS_MAZE_EVENT_YORNO, 126, 115, 40, 44, 2 },
{ TIM_POS_MAZE_EVENT_YORNO, 186, 0, 69, 58, 3 },
{ TIM_POS_MAZE_EVENT_YORNO, 186, 69, 69, 58, 3 },
{ TIM_POS_MAZE_EVENT_YORNO, 0, 155, 14, 148, 4 },
{ TIM_POS_MAZE_EVENT_YORNO, 0, 170, 14, 148, 4 },
{ TIM_POS_MAZE_EVENT_YORNO, 20, 20, 14, 148, 4 },
{ TIM_POS_MAZE_EVENT_FONT, 24, 200, 24, 26, 2 },
{ TIM_POS_MAZE_EVENT_FONT, 0, 232, 15, 52, 4 },
{ TIM_POS_MAZE_EVENT_FONT, 52, 232, 15, 52, 4 },
{ TIM_POS_MAZE_EVENT_FONT, 104, 232, 15, 52, 4 },
{ TIM_POS_MAZE_EVENT_DON02E, 0, 0, 144, 133, 0 },
{ TIM_POS_MAZE_EVENT_DON02E, 134, 0, 12, 37, 0 },
{ TIM_POS_MAZE_EVENT_DON02E, 0, 144, 42, 48, 1 },
{ TIM_POS_MAZE_EVENT_DON02E, 48, 144, 42, 48, 1 },
{ TIM_POS_MAZE_EVENT_DON02E, 0, 186, 33, 40, 1 },
{ TIM_POS_MAZE_EVENT_DON02E, 0, 186, 33, 40, 2 },
{ TIM_POS_MAZE_EVENT_DON02E, 40, 186, 33, 40, 1 },
{ TIM_POS_MAZE_EVENT_DON02E, 40, 186, 33, 40, 2 },
{ TIM_POS_MAZE_EVENT_DON02E, 80, 186, 33, 40, 1 },
{ TIM_POS_MAZE_EVENT_DON02E, 120, 186, 33, 40, 1 },
{ TIM_POS_MAZE_EVENT_DON02E, 160, 186, 33, 40, 3 },
{ TIM_POS_MAZE_EVENT_DON02E, 200, 186, 33, 40, 3 },
{ TIM_POS_MAZE_EVENT_DON02E, 96, 144, 14, 20, 4 },
{ TIM_POS_MAZE_EVENT_DON02E, 96, 158, 9, 18, 4 },
{ TIM_POS_MAZE_EVENT_DON02E, 96, 158, 9, 18, 5 },
{ TIM_POS_MAZE_EVENT_DON02E, 96, 168, 10, 8, 6 },
{ TIM_POS_MAZE_EVENT_DON02E, 104, 168, 10, 8, 6 },
{ TIM_POS_MAZE_EVENT_DON02E, 112, 168, 10, 8, 6 },
{ TIM_POS_MAZE_EVENT_DON02E, 120, 168, 10, 8, 6 },
{ TIM_POS_MAZE_EVENT_DON02E, 128, 168, 10, 8, 6 },
{ ENTRY_SPRITE_DATA_END,0,0,0,0,0 }
};
static char InitMapData[MAZE_GAME_SQUARE_H_NUM+2][MAZE_GAME_SQUARE_W_NUM+2]=
{
{ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 },
{ -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2 },
{ -2, -1, -3, -1, -4, -1, -3, -1, -4, -1, -3, -1, -4, -1, -2 },
{ -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2 },
{ -2, -1, -4, -1, -3, -1, -4, -1, -3, -1, -4, -1, -3, -1, -2 },
{ -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2 },
{ -2, -1, -3, -1, -4, -1, -3, -1, -4, -1, -3, -1, -4, -1, -2 },
{ -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2 },
{ -2, -1, -4, -1, -3, -1, -4, -1, -3, -1, -4, -1, -3, -1, -2 },
{ -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2 },
{ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2 },
};
static MAZE_SPRITE_DATA GunGunGameSpriteTable[]=
{
{ MAZE_CHAR_GAME_SMOKE_01, 6, 12 },
{ MAZE_CHAR_GAME_SMOKE_00, 4, 10 },
{ MAZE_CHAR_GAME_GUNGUN_00, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_01, -1, 0 },
{ MAZE_CHAR_GAME_GUNGUN_02, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_03, 1, 0 },
{ MAZE_CHAR_GAME_GUNGUN_04, -1, 2 },
{ MAZE_CHAR_GAME_GUNGUN_05, 0, 2 },
{ MAZE_CHAR_GAME_GUNGUN_06, 0, 2 },
{ MAZE_CHAR_GAME_GUNGUN_07, -1, 2 },
{ MAZE_CHAR_GAME_GUNGUN_08, -2, 2 },
{ MAZE_CHAR_GAME_GUNGUN_09, -2, 2 },
{ MAZE_CHAR_GAME_GUNGUN_10, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_11, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_12, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_13, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_14, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_15, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_CATCH_03, -4, 0 },
{ MAZE_CHAR_GAME_GUNGUN_CATCH_03, -4, 0 },
{ MAZE_CHAR_GAME_GUNGUN_CATCH_01, -4, 0 },
{ MAZE_CHAR_GAME_GUNGUN_CATCH_01, -4, 0 },
{ MAZE_CHAR_GAME_GUNGUN_CATCH_02, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_CATCH_02, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_CATCH_00, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_CATCH_00, 0, 0 },
};
static MAZE_SPRITE_DATA KumaGameSpriteTable[]=
{
{ MAZE_CHAR_GAME_SMOKE_01, 6, 12 },
{ MAZE_CHAR_GAME_SMOKE_00, 4, 10 },
{ MAZE_CHAR_GAME_KUMA_00, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_01, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_02, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_03, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_04, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_05, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_06, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_07, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_08, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_09, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_10, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_11, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_12, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_13, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_14, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_15, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_16, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_17, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_18, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_19, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_20, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_21, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_22, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_23, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_24, 0, 0 },
{ MAZE_CHAR_GAME_KUMA_25, -4, 8 },
{ MAZE_CHAR_GAME_KUMA_26, -4, 8 },
};
static MAZE_SPRITE_DATA AppearKumaSpriteTable[]={
{ MAZE_CHAR_GAME_KUMA_ENTRY_00, 0, 0, },
{ MAZE_CHAR_GAME_KUMA_ENTRY_00, 0, 0, },
{ MAZE_CHAR_GAME_KUMA_ENTRY_02, -3, 9, },
};
static MAZE_SPRITE_DATA AppearGunGunSpriteTable[]={
{ MAZE_CHAR_GAME_GUNGUN_ENTRY_00, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_ENTRY_00, 0, 0 },
{ MAZE_CHAR_GAME_GUNGUN_ENTRY_02, -4, 5 },
};
static int DirectTable[]=
{
DIR_UP,
DIR_DOWN,
DIR_LEFT,
DIR_RIGHT,
};
static MAZE_GAME_ROAD DirectRoadTable[]={
{ 0, -1 },
{ 0, 1 },
{ -1, 0 },
{ 1, 0 },
};
static int KumaWaitTimeTable[]=
{
KUMA_WAIT_TIME_LEVEL_1,
KUMA_WAIT_TIME_LEVEL_2,
KUMA_WAIT_TIME_LEVEL_3,
KUMA_WAIT_TIME_LEVEL_4,
KUMA_WAIT_TIME_LEVEL_5,
};
static int KumaThinkModeProbabilityTable[]={
90,
92,
94,
96,
98,
};
static int QuestionNumTable[]={
6,
8,
10,
10,
12
};
static int QuestionTypeTable[]={
MAZE_GAME_QUESTION_TYPE_ADDITION,
MAZE_GAME_QUESTION_TYPE_ADDITION,
MAZE_GAME_QUESTION_TYPE_SUBTRACTION,
MAZE_GAME_QUESTION_TYPE_SUBTRACTION,
MAZE_GAME_QUESTION_TYPE_SUBTRACTION,
};
static MAZE_GAME_STAR_POS StarPosTable[]={
{1, 1}, {3, 1},{5, 1},{7, 1},{9, 1},{11, 1},{13, 1},
{1, 3}, {3, 3},{5, 3},{7, 3},{9, 3},{11, 3},{13, 3},
{1, 5}, {3, 5},{5, 5},{7, 5},{9, 5},{11, 5},{13, 5},
{1, 7}, {3, 7},{5, 7},{7, 7},{9, 7},{11, 7},{13, 7},
{1, 9}, {3, 9},{5, 9},{7, 9},{9, 9},{11, 9},{13, 9},
{1,11}, {3,11},{5,11},{7,11},{9,11},{11,11},{13,11},
};
static MAZE_GAME_ANSWER_POS AnswerPosTable[]=
{
{2,3}, {4,3}, {6,3}, {8,3}, {10,3}, {12,3},
{2,5}, {4,5}, {6,5}, {8,5}, {10,5}, {12,5},
{2,7}, {4,7}, {6,7}, {8,7}, {10,7}, {12,7},
};
static MAZE_GAME_ANSWER_POS_INDEX AnswerPosIndexTable[]=
{
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 5, 17, 16, 4, 10, 12, 0, 2, 11, 7, 15, 8 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 2, 10, 9, 14, 12, 11, 13, 1, 15, 3, 17, 0 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 17, 7, 8, 1, 12, 5, 14, 4, 2, 6, 13, 15 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 2, 12, 13, 7, 15, 3, 5, 17, 14, 6, 0, 10 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
{ 0, 7, 2, 4, 6, 9, 10, 8, 13, 3, 5, 17 },
};
static MAZE_GAME_QUESTION_ANSWER_DATA QuestionDataTable[]=
{
{ 1, 2, 3, 4, 5, 6, -1, -1, -1, -1, -1, -1 },
{ 2, 3, 4, 5, 6, 1, -1, -1, -1, -1, -1, -1 },
{ 3, 4, 5, 6, 1, 2, -1, -1, -1, -1, -1, -1 },
{ 4, 5, 6, 1, 2, 3, -1, -1, -1, -1, -1, -1 },
{ 5, 6, 1, 2, 3, 4, -1, -1, -1, -1, -1, -1 },
{ 6, 1, 2, 3, 4, 5, -1, -1, -1, -1, -1, -1 },
{ 1, 2, 3, 4, 5, 6, -1, -1, -1, -1, -1, -1 },
{ 2, 3, 4, 5, 6, 1, -1, -1, -1, -1, -1, -1 },
{ 3, 4, 5, 6, 1, 2, -1, -1, -1, -1, -1, -1 },
{ 4, 5, 6, 1, 2, 3, -1, -1, -1, -1, -1, -1 },
{ 7, 8, 9, 10, 7, 8, 9, 10, -1, -1, -1, -1 },
{ 8, 9, 10, 7, 8, 9, 10, 7, -1, -1, -1, -1 },
{ 9, 10, 7, 8, 9, 10, 7, 8, -1, -1, -1, -1 },
{ 10, 7, 8, 9, 10, 7, 8, 9, -1, -1, -1, -1 },
{ 7, 8, 9, 10, 7, 8, 9, 10, -1, -1, -1, -1 },
{ 8, 9, 10, 7, 8, 9, 10, 7, -1, -1, -1, -1 },
{ 9, 10, 7, 8, 9, 10, 7, 8, -1, -1, -1, -1 },
{ 10, 7, 8, 9, 10, 7, 8, 9, -1, -1, -1, -1 },
{ 9, 10, 7, 8, 9, 10, 7, 8, -1, -1, -1, -1 },
{ 10, 7, 8, 9, 10, 7, 8, 9, -1, -1, -1, -1 },
{ 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, -1, -1 },
{ 1, 1, 2, 2, 3, 3, 4, 4, 5, 0, -1, -1 },
{ 1, 2, 2, 3, 3, 4, 4, 5, 0, 1, -1, -1 },
{ 2, 2, 3, 3, 4, 4, 5, 0, 1, 1, -1, -1 },
{ 2, 3, 3, 4, 4, 5, 0, 1, 1, 2, -1, -1 },
{ 3, 3, 4, 4, 5, 0, 1, 1, 2, 2, -1, -1 },
{ 3, 4, 4, 5, 0, 1, 1, 2, 2, 3, -1, -1 },
{ 4, 4, 5, 0, 1, 1, 2, 2, 3, 3, -1, -1 },
{ 4, 5, 0, 1, 1, 2, 2, 3, 3, 4, -1, -1 },
{ 5, 0, 1, 1, 2, 2, 3, 3, 4, 4, -1, -1 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1 },
{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, -1, -1 },
{ 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, -1, -1 },
{ 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, -1, -1 },
{ 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, -1, -1 },
{ 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, -1, -1 },
{ 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, -1, -1 },
{ 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, -1, -1 },
{ 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, -1, -1 },
{ 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1 },
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 0 },
{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 0, 1 },
{ 3, 4, 5, 6, 7, 8, 9, 10, 10, 0, 1, 2 },
{ 4, 5, 6, 7, 8, 9, 10, 10, 0, 1, 2, 3 },
{ 5, 6, 7, 8, 9, 10, 10, 0, 1, 2, 3, 4 },
{ 6, 7, 8, 9, 10, 10, 0, 1, 2, 3, 4, 5 },
{ 7, 8, 9, 10, 10, 0, 1, 2, 3, 4, 5, 6 },
{ 8, 9, 10, 10, 0, 1, 2, 3, 4, 5, 6, 7 },
{ 9, 10, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8 },
};
static MQGET_VAL MazeQuestionGetTable_Level_1[]=
{
{ 2, {{ 0, 1},{ 1, 0},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 3, {{ 0, 2},{ 1, 1},{ 2, 0},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 4, {{ 0, 3},{ 1, 2},{ 2, 1},{ 3, 0},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 0, 4},{ 1, 3},{ 2, 2},{ 3, 1},{ 4, 0},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 6, {{ 0, 5},{ 1, 4},{ 2, 3},{ 3, 2},{ 4, 1},{ 5, 0},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 1, 5},{ 2, 4},{ 3, 3},{ 4, 2},{ 5, 1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
};
static MQGET_VAL MazeQuestionGetTable_Level_2[]=
{
{ 8, {{ 0, 7},{ 1, 6},{ 2, 5},{ 3, 4},{ 4, 3},{ 5, 2},{ 6, 1},{ 7, 0},{-1,-1},{-1,-1},{-1,-1}}, },
{ 9, {{ 0, 8},{ 1, 7},{ 2, 6},{ 3, 5},{ 4, 4},{ 5, 3},{ 6, 2},{ 7, 1},{ 8, 0},{-1,-1},{-1,-1}}, },
{ 10, {{ 0, 9},{ 1, 8},{ 2, 7},{ 3, 6},{ 4, 5},{ 5, 4},{ 6, 3},{ 7, 2},{ 8, 1},{ 9, 0},{-1,-1}}, },
{ 11, {{ 0,10},{ 1, 9},{ 2, 8},{ 3, 7},{ 4, 6},{ 5, 5},{ 6, 4},{ 7, 3},{ 8, 2},{ 9, 1},{10, 0}}, },
};
static MQGET_VAL MazeQuestionGetTable_Level_3[]=
{
{ 4, {{ 1, 1},{ 2, 2},{ 3, 3},{ 4, 4},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 6, {{ 1, 0},{ 2, 1},{ 3, 2},{ 4, 3},{ 5, 4},{ 6, 5},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 6, {{ 2, 0},{ 3, 1},{ 4, 2},{ 5, 3},{ 6, 4},{ 7, 5},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 6, {{ 3, 0},{ 4, 1},{ 5, 2},{ 6, 3},{ 7, 4},{ 8, 5},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 6, {{ 4, 0},{ 5, 1},{ 6, 2},{ 7, 3},{ 8, 4},{ 9, 5},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 6, 1},{ 7, 2},{ 8, 3},{ 9, 4},{10, 5},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
};
static MQGET_VAL MazeQuestionGetTable_Level_4[]=
{
{ 5, {{ 6, 5},{ 7, 6},{ 8, 7},{ 9, 8},{10, 9},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 6, 4},{ 7, 5},{ 8, 6},{ 9, 7},{10, 8},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 6, 3},{ 7, 4},{ 8, 5},{ 9, 6},{10, 7},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 6, 2},{ 7, 3},{ 8, 4},{ 9, 5},{10, 6},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 6, 1},{ 7, 2},{ 8, 3},{ 9, 4},{10, 5},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 6, 0},{ 7, 1},{ 8, 2},{ 9, 3},{10, 4},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 4, {{ 7, 0},{ 8, 1},{ 9, 2},{10, 3},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 3, {{ 8, 0},{ 9, 1},{10, 2},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 2, {{ 9, 0},{10, 1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 1, {{10, 0},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
};
static MQGET_VAL MazeQuestionGetTable_Level_5[]=
{
{ 10, {{ 1, 1},{ 2, 2},{ 3, 3},{ 4, 4},{ 5, 5},{ 6, 6},{ 7, 7},{ 8, 8},{ 9, 9},{10,10},{-1,-1}}, },
{ 10, {{ 1, 0},{ 2, 1},{ 3, 2},{ 4, 3},{ 5, 4},{ 6, 5},{ 7, 6},{ 8, 7},{ 9, 8},{10, 9},{-1,-1}}, },
{ 8, {{ 3, 1},{ 4, 2},{ 5, 3},{ 6, 4},{ 7, 5},{ 8, 6},{ 9, 7},{10, 8},{-1,-1},{-1,-1},{-1,-1}}, },
{ 7, {{ 4, 1},{ 5, 2},{ 6, 3},{ 7, 4},{ 8, 5},{ 9, 6},{10, 7},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 6, {{ 5, 1},{ 6, 2},{ 7, 3},{ 8, 4},{ 9, 5},{10, 6},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 5, {{ 6, 1},{ 7, 2},{ 8, 3},{ 9, 4},{10, 5},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 4, {{ 7, 1},{ 8, 2},{ 9, 3},{10, 4},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 3, {{ 8, 1},{ 9, 2},{10, 3},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 2, {{ 9, 1},{10, 2},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 1, {{10, 1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
{ 1, {{10, 0},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, },
};
#define SELECT_LEVEL_SCRIPT_BASE 0
#define SELECT_LEVEL_SCRIPT_NUM 1
#define INIT_DEMO_GUNGUN_1_SCRIPT_BASE 1
#define INIT_DEMO_GUNGUN_1_SCRIPT_NUM 1
#define INIT_DEMO_DONDON_1_SCRIPT_BASE 2
#define INIT_DEMO_DONDON_1_SCRIPT_NUM 1
#define INIT_DEMO_DONDON_2_SCRIPT_BASE 3
#define INIT_DEMO_DONDON_2_SCRIPT_NUM 2
#define INIT_DEMO_DONDON_3_SCRIPT_BASE 5
#define INIT_DEMO_DONDON_3_SCRIPT_NUM 1
#define CLEAR_DEMO_SCRIPT_BASE 6
#define CLEAR_DEMO_SCRIPT_NUM 2
#define ALL_CLEAR_DEMO_SCRIPT_BASE 8
#define ALL_CLEAR_DEMO_SCRIPT_NUM 1
#define FALSE_DEMO_1_SCRIPT_BASE 9
#define FALSE_DEMO_1_SCRIPT_NUM 2
#define FALSE_DEMO_2_SCRIPT_BASE 11
#define FALSE_DEMO_2_SCRIPT_NUM 2
static SCRIP_DATA MazeScript[]=
{
{
0,
NamePlateDan,
XA_FILE_BAND00,
4,
"初音時06ひかっている すうじを えらんでくれ。待300終"
},
{
0,
NamePlateGngn,
XA_FILE_MAZU00,
3,
"初消音時06やぁ。ドンドンに まけないように 改こたえの ボールを あつめるぞ!待240終"
},
{
0,
NamePlateDond,
XA_FILE_MAZU00,
0,
"初消音時06だあ!待120終"
},
{
0,
NamePlateDond,
XA_FILE_MAZU00,
1,
"初消音時06おれさまの なまえは、ドンドン。待240終"
},
{
0,
NamePlateDond,
XA_FILE_MAZU00,
2,
"初消音時06ここは おれさまが じゃましてやるぞ!待300終"
},
{
0,
NamePlateDond,
XA_FILE_MAZU00,
4,
"初消音時06べえだ!待120終"
},
{
0,
NamePlateGngn,
XA_FILE_MAZU03,
5,
"初消音時06やったぁ!スゴイね。 改つぎも がんばろう。待180終"
},
{
0,
NamePlateDond,
XA_FILE_MAZU03,
6,
"初消音時06あ~ん! くやしーよぉ。待360終"
},
{
0,
NamePlateGngn,
XA_FILE_MAZU03,
7,
"初消音時06わぁーい、わぁーい! 改すごい! すごいよ!待180終"
},
{
0,
NamePlateGngn,
XA_FILE_MAZU03,
9,
"初消音時06つぎは がんばろう。待180終"
},
{
0,
NamePlateDond,
XA_FILE_MAZU03,
10,
"初消音時06へえんだ、がんばれよ。待360終"
},
{
0,
NamePlateDond,
XA_FILE_MAZU03,
11,
"初消音時06へへへんだっ! おれさまの 改かちだぞぉ。待180終"
},
{
0,
NamePlateGngn,
XA_FILE_MAZU03,
12,
"初消音時06ああん、まけちゃったぁぁぁ。待360終"
},
};
#ifdef __DEBUG_MAZE__
static int wSx;
static int wSy;
#endif
int Maze(GAMEMGR *ip_GameMgr)
{
TASK Task;
switch( ip_GameMgr->SubMode )
{
case INIT:
InitSprite();
InitTaskMgr();
srand(ip_GameMgr->Timer);
SfileRead2(MAZU_SOUNDFILE);
HelpInit();
GameMgr.WaitFlag = ON;
MGameMgr.QuestionIndex = 0;
MGameMgr.Level = ip_GameMgr->Level[GAME_MAZE];
MGameMgr.PlayLevel = 0;
MGameMgr.ContinueFlag = 0;
MGameMgr.GameOverFlag = 0;
MGameMgr.CheckClearFlag = 0;
MGameMgr.ClearFlag = 0;
MGameMgr.AllClearFlag = 0;
MGameMgr.ExitFlag = 0;
#ifdef __DEBUG_MAZE__
if(NewPad & PADL1){
Task.func = DebugGameSpriteTask;
Task.priority = TASK_NO_DEBUG;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_DEBUG;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "DebugGameSpriteTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
if(NewPad & PADL2){
Task.func = ClearEventTask;
Task.priority = TASK_NO_DEBUG;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_DEBUG;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ClearEventTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
if( (NewPad & PADR1) && (NewPad & PADR2) ){
Task.func = AllClearEventTask;
Task.priority = TASK_NO_DEBUG;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_DEBUG;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "AllClearEventTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
if(NewPad & PADR1){
Task.func = FalseEventBakuTask;
Task.priority = TASK_NO_DEBUG;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_DEBUG;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "FalseEventBakuTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
if(NewPad & PADR2){
Task.func = FalseEventGutsTask;
Task.priority = TASK_NO_DEBUG;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_DEBUG;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "FalseEventGutsTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
if(MGameMgr.Level==0)
{
Task.func = GameControllTask;
Task.priority = TASK_NO_GAME_CONTROLL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_CONTROLL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "GameControllTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
Task.func = SelectLevelTask;
Task.priority = TASK_NO_GAME_SELECT_LEVEL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SELECT_LEVEL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "SelectLevelTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}
}
#else
if(MGameMgr.Level==0)
{
Task.func = GameControllTask;
Task.priority = TASK_NO_GAME_CONTROLL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_CONTROLL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "GameControllTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
Task.func = SelectLevelTask;
Task.priority = TASK_NO_GAME_SELECT_LEVEL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SELECT_LEVEL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "SelectLevelTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}
#endif
ip_GameMgr->SubMode = MAIN;
break;
case MAIN:
FntPrint("");
ExecuteTask();
TransSprite();
SpraitControl();
if(MGameMgr.ExitFlag) ip_GameMgr->SubMode = EXIT;
break;
case EXIT:
ip_GameMgr->Level[GAME_MAZE] = MGameMgr.Level;
SpraitCharClr();
SpraitControl();
GameMgr.WaitFlag = ON;
ssStopAll();
ssCloseVab();
ip_GameMgr->MainMode = MAIN_MODE_TOP_MENU;
ip_GameMgr->SubMode = INIT;
break;
default:
break;
}
return TRUE;
}
static int GameControllTask(TASK* ip_task)
{
TASK Task;
int i,j;
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(MazeGameTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_GAME_TIM_NUM, &MazeGameTextureImage[MAZE_GAME_TIM_POS] );
TimImgData = MazeGameTextureImage;
ReleaseSprite();
EntrySprite( MazeGameSpriteData );
MGameMgr.QuestionIndex = 0;
MGameMgr.Zanki = MAX_GUNGUN_ZANKI_NUM;
MGameMgr.GameOverFlag = 0;
MGameMgr.CheckClearFlag = 0;
MGameMgr.ClearFlag = 0;
MGameMgr.AllClearFlag = 0;
MGameMgr.ExitFlag = 0;
MGameMgr.ContinueFlag = 0;
GaidoInit();
InitGameMap();
GameMgr.FadeFlag = FadeIn;
Task.func = GunGunTask;
Task.priority = TASK_NO_GAME_GUNGUN;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_GUNGUN;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "GunGunTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = GameBgTask;
Task.priority = TASK_NO_GAME_BG;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_BG;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "GameBgTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = KumaTask;
Task.priority = TASK_NO_GAME_KUMA;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_KUMA;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "KumaTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = QuestionTask;
Task.priority = TASK_NO_GAME_QUESTION;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_QUESTION;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "QuestionTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = GunGunZankiTask;
Task.priority = TASK_NO_GAME_GUNGUN_ZANKI;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_GUNGUN_ZANKI;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "GunGunZankiTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = PauseTask;
Task.priority = TASK_NO_GAME_PAUSE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_PAUSE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "PauseTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
if(MGameMgr.ContinueFlag==0)
{
MGameMgr.ContinueFlag = 1;
Task.func = CastAppearTask;
Task.priority = TASK_NO_GAME_CAST_APPEAR;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_CAST_APPEAR;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "CastAppearTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
SleepTask(TASK_NO_GAME_GUNGUN);
SleepTask(TASK_NO_GAME_KUMA);
SleepTask(TASK_NO_GAME_QUESTION);
SleepTask(TASK_NO_GAME_GUNGUN_ZANKI);
}
SleepTask(TASK_NO_GAME_PAUSE);
break;
case TASK_MODE_MAIN:
#ifdef __DEBUG_MAZE__
FntPrint("Level____=[%d]\n",MGameMgr.Level);
FntPrint("PlayLevel=[%d]\n",MGameMgr.PlayLevel);
#endif
#ifdef __DEBUG_MAZE_ANSWER__
for(i=0;i<12;i++){
FntPrint("ANS:[%2d][%2d]/Q:[%2d][%2d][%2d]\n",i,MGameMgr.Answer[i],MGameMgr.Question.Data[i].QuestionNum.num1,MGameMgr.Question.Data[i].QuestionNum.num2,MGameMgr.Question.Data[i].QuestionNum.num3);
}
#endif
if(MGameMgr.ClearFlag || MGameMgr.GameOverFlag){
ip_task->mode = TASK_MODE_EXIT;
}
break;
case TASK_MODE_EXIT:
SpraitCharClr();
ssStopBgm(MAZU_BGM_00);
RemoveTask(TASK_NO_GAME_GUNGUN);
RemoveTask(TASK_NO_GAME_KUMA);
RemoveTask(TASK_NO_GAME_QUESTION);
RemoveTask(TASK_NO_GAME_BG);
RemoveTask(TASK_NO_GAME_GUNGUN_ZANKI);
RemoveTask(TASK_NO_GAME_PAUSE);
RemoveTask(TASK_NO_GAME_BAR);
RemoveTask(TASK_NO_GAME_STAR);
ReleaseSprite();
SpraitCharClr();
if(MGameMgr.AllClearFlag)
{
Task.func = AllClearEventTask;
Task.priority = TASK_NO_GAME_ALL_CLEAR_EVENT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_ALL_CLEAR_EVENT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "AllClearEventTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
if(MGameMgr.ClearFlag)
{
Task.func = ClearEventTask;
Task.priority = TASK_NO_GAME_CLEAR_EVENT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_CLEAR_EVENT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ClearEventTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
if(MGameMgr.GameOverFlag)
{
if( rand()%2 )
{
Task.func = FalseEventBakuTask;
Task.priority = TASK_NO_GAME_FALSE_EVENT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FALSE_EVENT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "FalseEventBakuTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
Task.func = FalseEventGutsTask;
Task.priority = TASK_NO_GAME_FALSE_EVENT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FALSE_EVENT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "FalseEventGutsTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}
}else{
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int CastAppearTask(TASK* ip_task)
{
static int kx,ky;
SPRITE_DATA SpData;
TASK Task;
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
kx=44;
ky=140;
ip_task->user[0]=0;
ip_task->user[1]=0;
ip_task->user[2]=0;
ip_task->user[3]=0;
#ifndef __DEBUG_MAZE__
if((file_read(MazeGameTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_GAME_TIM_NUM, &MazeGameTextureImage[MAZE_GAME_TIM_POS] );
TimImgData = MazeGameTextureImage;
ReleaseSprite();
EntrySprite( MazeGameSpriteData );
#endif
MGameMgr.AppearEvent.Kuma.Status = CAST_APPEAR_STATUS_WAIT;
MGameMgr.AppearEvent.Kuma.Anm.Data.no = AppearKumaSpriteTable[0].No;
MGameMgr.AppearEvent.Kuma.Anm.Data.wt = 0;
MGameMgr.AppearEvent.Kuma.Anm.Index = 0;
MGameMgr.AppearEvent.Kuma.Pos.x = KUMA_CAST_APPEAR_INIT_X;
MGameMgr.AppearEvent.Kuma.Pos.y = KUMA_CAST_APPEAR_INIT_Y;
MGameMgr.AppearEvent.Kuma.Pos.z = PRIORITY_MAZE_GAME_CAST_EVENT;
MGameMgr.AppearEvent.Kuma.OPos.x = 0;
MGameMgr.AppearEvent.Kuma.OPos.y = 0;
MGameMgr.AppearEvent.Kuma.OPos.z = 0;
MGameMgr.AppearEvent.Kuma.Spd.dx = 0;
MGameMgr.AppearEvent.Kuma.Spd.dy = -1;
MGameMgr.AppearEvent.Kuma.Spd.sx = 0;
MGameMgr.AppearEvent.Kuma.Spd.sy = 4;
MGameMgr.AppearEvent.KumaTimer = 0;
MGameMgr.AppearEvent.GunGun.Status = CAST_APPEAR_STATUS_WAIT;
MGameMgr.AppearEvent.GunGun.Anm.Data.no = AppearGunGunSpriteTable[0].No;
MGameMgr.AppearEvent.GunGun.Anm.Data.wt = 0;
MGameMgr.AppearEvent.GunGun.Anm.Index = 0;
MGameMgr.AppearEvent.GunGun.Pos.x = GUNGUN_CAST_APPEAR_INIT_X + 150;
MGameMgr.AppearEvent.GunGun.Pos.y = GUNGUN_CAST_APPEAR_INIT_Y;
MGameMgr.AppearEvent.GunGun.Pos.z = PRIORITY_MAZE_GAME_CAST_EVENT;
MGameMgr.AppearEvent.GunGun.OPos.x = 0;
MGameMgr.AppearEvent.GunGun.OPos.y = 0;
MGameMgr.AppearEvent.GunGun.OPos.z = 0;
MGameMgr.AppearEvent.GunGun.Spd.dx = 0;
MGameMgr.AppearEvent.GunGun.Spd.dy = -1;
MGameMgr.AppearEvent.GunGun.Spd.sx = 0;
MGameMgr.AppearEvent.GunGun.Spd.sy = 4;
MGameMgr.AppearEvent.GunGunTimer = 0;
MGameMgr.AppearEvent.Timer = 0;
break;
case TASK_MODE_MAIN:
++MGameMgr.AppearEvent.Timer;
switch(MGameMgr.AppearEvent.Kuma.Status)
{
case CAST_APPEAR_STATUS_WAIT:
MGameMgr.AppearEvent.Kuma.Status = CAST_APPEAR_STATUS_JUMP;
MGameMgr.Script.Flag=1;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_1;
Task.user[1] = INIT_DEMO_DONDON_1_SCRIPT_BASE;
Task.user[2] = INIT_DEMO_DONDON_1_SCRIPT_NUM;
CreateTask(&Task);
break;
case CAST_APPEAR_STATUS_JUMP:
MGameMgr.AppearEvent.Kuma.Pos.y += MGameMgr.AppearEvent.Kuma.Spd.sy * MGameMgr.AppearEvent.Kuma.Spd.dy;
if(MGameMgr.AppearEvent.Kuma.Pos.y < KUMA_CAST_APPEAR_DOWN_START_Y){
MGameMgr.AppearEvent.Kuma.Status = CAST_APPEAR_STATUS_DOWN;
MGameMgr.AppearEvent.Kuma.Spd.dy = 1;
MGameMgr.AppearEvent.Kuma.Spd.sy = 1;
}
break;
case CAST_APPEAR_STATUS_DOWN:
MGameMgr.AppearEvent.Kuma.Pos.y += MGameMgr.AppearEvent.Kuma.Spd.sy * MGameMgr.AppearEvent.Kuma.Spd.dy;
if(MGameMgr.AppearEvent.Kuma.Pos.y>KUMA_CAST_APPEAR_STOP_Y){
MGameMgr.AppearEvent.Kuma.Status = CAST_APPEAR_STATUS_STOP;
MGameMgr.AppearEvent.Kuma.Anm.Index = 2;
ssPlaySe(MAZU_SE_07);
}
break;
case CAST_APPEAR_STATUS_STOP:
if(++MGameMgr.AppearEvent.Kuma.Anm.Data.wt>CAST_STOP_WAIT_TIME){
if(!MGameMgr.Script.Flag){
MGameMgr.AppearEvent.Kuma.Status = CAST_APPEAR_STATUS_SPEAK;
MGameMgr.AppearEvent.Kuma.Anm.Index = 0;
MGameMgr.Script.Flag=1;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_2;
Task.user[1] = INIT_DEMO_DONDON_2_SCRIPT_BASE;
Task.user[2] = INIT_DEMO_DONDON_2_SCRIPT_NUM;
CreateTask(&Task);
}
}
break;
case CAST_APPEAR_STATUS_SPEAK:
++MGameMgr.AppearEvent.KumaTimer;
if(++ip_task->user[0]>=MAZE_GAME_EVENT_ANM_WAIT_TIME){
ip_task->user[0]=0;
ip_task->user[1]^=1;
}
if(!MGameMgr.Script.Flag){
MGameMgr.AppearEvent.Kuma.Status = CAST_APPEAR_STATUS_SPEAK_WAIT;
MGameMgr.AppearEvent.GunGun.Status = CAST_APPEAR_STATUS_JUMP;
}
break;
case CAST_APPEAR_STATUS_AKANBE:
if(!MGameMgr.Script.Flag){
ip_task->mode=TASK_MODE_EXIT;
}
break;
case CAST_APPEAR_STATUS_SPEAK_WAIT:
break;
default:
}
switch(MGameMgr.AppearEvent.GunGun.Status)
{
case CAST_APPEAR_STATUS_WAIT:
break;
case CAST_APPEAR_STATUS_JUMP:
MGameMgr.AppearEvent.GunGun.Pos.y += MGameMgr.AppearEvent.GunGun.Spd.sy * MGameMgr.AppearEvent.GunGun.Spd.dy;
if(MGameMgr.AppearEvent.GunGun.Pos.y < GUNGUN_CAST_APPEAR_DOWN_START_Y){
MGameMgr.AppearEvent.GunGun.Status = CAST_APPEAR_STATUS_DOWN;
MGameMgr.AppearEvent.GunGun.Spd.dy = 1;
MGameMgr.AppearEvent.GunGun.Spd.sy = 1;
}
break;
case CAST_APPEAR_STATUS_DOWN:
MGameMgr.AppearEvent.GunGun.Pos.y += MGameMgr.AppearEvent.GunGun.Spd.sy * MGameMgr.AppearEvent.GunGun.Spd.dy;
if(MGameMgr.AppearEvent.GunGun.Pos.y>GUNGUN_CAST_APPEAR_STOP_Y){
MGameMgr.AppearEvent.GunGun.Status = CAST_APPEAR_STATUS_STOP;
MGameMgr.AppearEvent.GunGun.Anm.Index = 2;
ssPlaySe(MAZU_SE_07);
}
break;
case CAST_APPEAR_STATUS_STOP:
if(++MGameMgr.AppearEvent.GunGun.Anm.Data.wt>CAST_STOP_WAIT_TIME){
if(!MGameMgr.Script.Flag){
MGameMgr.AppearEvent.GunGun.Status = CAST_APPEAR_STATUS_SPEAK;
MGameMgr.AppearEvent.GunGun.Anm.Index = 0;
MGameMgr.Script.Flag=1;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_2;
Task.user[1] = INIT_DEMO_GUNGUN_1_SCRIPT_BASE;
Task.user[2] = INIT_DEMO_GUNGUN_1_SCRIPT_NUM;
CreateTask(&Task);
}
}
break;
case CAST_APPEAR_STATUS_SPEAK:
if(++ip_task->user[2]>=MAZE_GAME_EVENT_ANM_WAIT_TIME){
ip_task->user[2]=0;
ip_task->user[3]^=1;
}
if(!MGameMgr.Script.Flag){
MGameMgr.AppearEvent.GunGun.Status = CAST_APPEAR_STATUS_SPEAK_WAIT;
MGameMgr.AppearEvent.Kuma.Status = CAST_APPEAR_STATUS_AKANBE;
MGameMgr.Script.Flag=1;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_1;
Task.user[1] = INIT_DEMO_DONDON_3_SCRIPT_BASE;
Task.user[2] = INIT_DEMO_DONDON_3_SCRIPT_NUM;
CreateTask(&Task);
}
break;
case CAST_APPEAR_STATUS_AKANBE:
break;
case CAST_APPEAR_STATUS_SPEAK_WAIT:
break;
default:
}
if(MGameMgr.AppearEvent.Kuma.Status == CAST_APPEAR_STATUS_SPEAK){
if(ip_task->user[1]){
SpData.No = MAZE_CHAR_GAME_KUMA_ENTRY_MOUSE;
SpData.PosX = 49 + MGameMgr.AppearEvent.Kuma.Pos.x + MGameMgr.AppearEvent.Kuma.OPos.x + AppearKumaSpriteTable[MGameMgr.AppearEvent.Kuma.Anm.Index].Ofx;
SpData.PosY = 57 + MGameMgr.AppearEvent.Kuma.Pos.y + MGameMgr.AppearEvent.Kuma.OPos.y + AppearKumaSpriteTable[MGameMgr.AppearEvent.Kuma.Anm.Index].Ofy;
SpData.PosZ = MGameMgr.AppearEvent.Kuma.Pos.z + MGameMgr.AppearEvent.Kuma.OPos.z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
if(MGameMgr.AppearEvent.Kuma.Status != CAST_APPEAR_STATUS_AKANBE){
MGameMgr.AppearEvent.Kuma.Anm.Data.no = AppearKumaSpriteTable[MGameMgr.AppearEvent.Kuma.Anm.Index].No;
SpData.No = MGameMgr.AppearEvent.Kuma.Anm.Data.no;
SpData.PosX = MGameMgr.AppearEvent.Kuma.Pos.x + MGameMgr.AppearEvent.Kuma.OPos.x + AppearKumaSpriteTable[MGameMgr.AppearEvent.Kuma.Anm.Index].Ofx;
SpData.PosY = MGameMgr.AppearEvent.Kuma.Pos.y + MGameMgr.AppearEvent.Kuma.OPos.y + AppearKumaSpriteTable[MGameMgr.AppearEvent.Kuma.Anm.Index].Ofy;
SpData.PosZ = MGameMgr.AppearEvent.Kuma.Pos.z + MGameMgr.AppearEvent.Kuma.OPos.z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}else{
SpData.No = MAZE_CHAR_GAME_KUMA_BODY;
SpData.PosX = kx;
SpData.PosY = ky;
SpData.PosZ = PRIORITY_MAZE_GAME_CAST_EVENT;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_GAME_KUMA_HEAD_00;
SpData.PosX = 8 + kx;
SpData.PosY = -61 + ky;
SpData.PosZ = PRIORITY_MAZE_GAME_CAST_EVENT;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_GAME_KUMA_AKANBE_ARM_LEFT;
SpData.PosX = -23 + kx;
SpData.PosY = -3 + ky;
SpData.PosZ = PRIORITY_MAZE_GAME_CAST_EVENT-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_GAME_KUMA_AKANBE_ARM_RIGHT;
SpData.PosX = 29 + kx;
SpData.PosY = -28 + ky;
SpData.PosZ = PRIORITY_MAZE_GAME_CAST_EVENT-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
if(MGameMgr.AppearEvent.GunGun.Status == CAST_APPEAR_STATUS_SPEAK){
if(ip_task->user[3]){
SpData.No = MAZE_CHAR_GAME_GUNGUN_MOUTH_00;
SpData.PosX = 32 + MGameMgr.AppearEvent.GunGun.Pos.x + MGameMgr.AppearEvent.GunGun.OPos.x + AppearGunGunSpriteTable[MGameMgr.AppearEvent.GunGun.Anm.Index].Ofx;
SpData.PosY = 37 + MGameMgr.AppearEvent.GunGun.Pos.y + MGameMgr.AppearEvent.GunGun.OPos.y + AppearGunGunSpriteTable[MGameMgr.AppearEvent.GunGun.Anm.Index].Ofy;
SpData.PosZ = MGameMgr.AppearEvent.GunGun.Pos.z + MGameMgr.AppearEvent.GunGun.OPos.z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
MGameMgr.AppearEvent.GunGun.Anm.Data.no = AppearGunGunSpriteTable[MGameMgr.AppearEvent.GunGun.Anm.Index].No;
SpData.No = MGameMgr.AppearEvent.GunGun.Anm.Data.no;
SpData.PosX = MGameMgr.AppearEvent.GunGun.Pos.x + MGameMgr.AppearEvent.GunGun.OPos.x + AppearGunGunSpriteTable[MGameMgr.AppearEvent.GunGun.Anm.Index].Ofx;
SpData.PosY = MGameMgr.AppearEvent.GunGun.Pos.y + MGameMgr.AppearEvent.GunGun.OPos.y + AppearGunGunSpriteTable[MGameMgr.AppearEvent.GunGun.Anm.Index].Ofy;
SpData.PosZ = MGameMgr.AppearEvent.GunGun.Pos.z + MGameMgr.AppearEvent.GunGun.OPos.z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case TASK_MODE_EXIT:
MetuseijiFlag=OFF;
WakeupTask(TASK_NO_GAME_GUNGUN);
WakeupTask(TASK_NO_GAME_KUMA);
WakeupTask(TASK_NO_GAME_QUESTION);
WakeupTask(TASK_NO_GAME_GUNGUN_ZANKI);
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int GunGunTask(TASK* ip_task)
{
static int GunGunDirectAnmBase[]={
GUNGUN_ANM_BASE_UP,
GUNGUN_ANM_BASE_DOWN,
GUNGUN_ANM_BASE_LEFT,
GUNGUN_ANM_BASE_RIGHT,
};
static int GunGunCoughtAnmBase[]={
GUNGUN_ANM_BASE_COUGHT_DOWN,
GUNGUN_ANM_BASE_COUGHT_UP,
GUNGUN_ANM_BASE_COUGHT_RIGHT,
GUNGUN_ANM_BASE_COUGHT_LEFT,
};
static int GunGunMoveCountTable[]={
MAZE_GAME_SQUARE_H,
MAZE_GAME_SQUARE_H,
MAZE_GAME_SQUARE_W,
MAZE_GAME_SQUARE_W,
};
TASK *pTask,Task;
SPRITE_DATA SpData;
int i,dir;
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
MGameMgr.GunGun.Character.Status = GUNGUN_APPEAR;
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[GUNGUN_ANM_BASE_SMOKE].No;
MGameMgr.GunGun.Character.Anm.Data.wt = 0;
MGameMgr.GunGun.Character.Anm.Index = 0;
MGameMgr.GunGun.Character.Pos.x = MAZE_GAME_MAP_LEFT_X + GUNGUN_INIT_MAP_OFFSET_X + (GUNGUN_INIT_PX) * MAZE_GAME_SQUARE_W;
MGameMgr.GunGun.Character.Pos.y = MAZE_GAME_MAP_LEFT_Y + GUNGUN_INIT_MAP_OFFSET_Y + (GUNGUN_INIT_PY) * MAZE_GAME_SQUARE_H;
MGameMgr.GunGun.Character.Pos.z = PRIORITY_MAZE_GAME_GUNGUN;
MGameMgr.GunGun.Character.OPos.x = GUNGUN_ANM_OFSET_X;
MGameMgr.GunGun.Character.OPos.y = GUNGUN_ANM_OFSET_Y;
MGameMgr.GunGun.Character.OPos.z = 0;
MGameMgr.GunGun.Character.Spd.dx = 0;
MGameMgr.GunGun.Character.Spd.dy = 0;
MGameMgr.GunGun.Character.Spd.sx = 1;
MGameMgr.GunGun.Character.Spd.sy = 1;
MGameMgr.GunGun.AnmBase = GUNGUN_ANM_BASE_SMOKE;
MGameMgr.GunGun.Timer = 0;
MGameMgr.GunGun.Px = GUNGUN_INIT_PX;
MGameMgr.GunGun.Py = GUNGUN_INIT_PY;
MGameMgr.GunGun.KeyDirect = DIR_NOTHING;
break;
case TASK_MODE_MAIN:
switch(MGameMgr.GunGun.Character.Status)
{
case GUNGUN_APPEAR:
if(++MGameMgr.GunGun.Timer>GUNGUN_APPEAR_TIME)
{
MGameMgr.GunGun.Character.Status = GUNGUN_APPEAR_WAIT;
MGameMgr.GunGun.AnmBase = GUNGUN_ANM_BASE_DOWN;
MGameMgr.GunGun.Character.Anm.Data.wt = 0;
MGameMgr.GunGun.Character.Anm.Index = 0;
MGameMgr.GunGun.Character.Anm.Data.wt = GUNGUN_GAME_ANM_WAIT_TIME;
MGameMgr.GunGun.Timer = 0;
}
break;
case GUNGUN_APPEAR_WAIT:
break;
case GUNGUN_WAIT:
if( !CheckCought(MGameMgr.GunGun.Px,MGameMgr.GunGun.Py,MGameMgr.Kuma.Px,MGameMgr.Kuma.Py) )
{
if(CheckKeyDir(&dir))
{
switch(CheckCharacterMaze(MGameMgr.GunGun.Px,MGameMgr.GunGun.Py,dir))
{
case MAZE_MAP_CHAR_NONE:
case MAZE_MAP_CHAR_STAR:
MGameMgr.GunGun.Character.Status = GUNGUN_WALK;
MGameMgr.GunGun.KeyDirect = dir;
MGameMgr.GunGun.Character.MoveCount = GunGunMoveCountTable[dir];
MGameMgr.GunGun.Character.Spd.dx = DirectRoadTable[dir].Px;
MGameMgr.GunGun.Character.Spd.dy = DirectRoadTable[dir].Py;
MGameMgr.GunGun.AnmBase = GunGunDirectAnmBase[dir];
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].No;
break;
case MAZE_MAP_CHAR_NUM_00:
case MAZE_MAP_CHAR_NUM_01:
case MAZE_MAP_CHAR_NUM_02:
case MAZE_MAP_CHAR_NUM_03:
case MAZE_MAP_CHAR_NUM_04:
case MAZE_MAP_CHAR_NUM_05:
case MAZE_MAP_CHAR_NUM_06:
case MAZE_MAP_CHAR_NUM_07:
case MAZE_MAP_CHAR_NUM_08:
case MAZE_MAP_CHAR_NUM_09:
case MAZE_MAP_CHAR_NUM_10:
if(CheckAnswer(dir))
{
GameMgr.WaitFlag = ON;
MGameMgr.GunGun.Character.Status = GUNGUN_GET_ANSWER_WALK;
if(++MGameMgr.QuestionIndex>QuestionNumTable[MGameMgr.PlayLevel]-1)
{
MGameMgr.QuestionIndex = QuestionNumTable[MGameMgr.PlayLevel]-1;
MGameMgr.CheckClearFlag = 1;
}
MGameMgr.GunGun.KeyDirect = dir;
MGameMgr.GunGun.Character.MoveCount = GunGunMoveCountTable[dir];
MGameMgr.GunGun.Character.Spd.dx = DirectRoadTable[dir].Px;
MGameMgr.GunGun.Character.Spd.dy = DirectRoadTable[dir].Py;
MGameMgr.GunGun.AnmBase = GunGunDirectAnmBase[dir];
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].No;
}else
{
MGameMgr.GunGun.AnmBase = GunGunDirectAnmBase[dir];
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].No;
MGameMgr.GunGun.Character.MoveCount = 0;
MGameMgr.GunGun.KeyDirect = DIR_NOTHING;
MGameMgr.GunGun.Character.Spd.dx = 0;
MGameMgr.GunGun.Character.Spd.dy = 0;
}
break;
case MAZE_MAP_CHAR_WALL:
case MAZE_MAP_CHAR_IWA_00:
case MAZE_MAP_CHAR_IWA_01:
case MAZE_MAP_CHAR_BAR_00:
case MAZE_MAP_CHAR_BAR_01:
case MAZE_MAP_CHAR_ENEMY:
default:
MGameMgr.GunGun.AnmBase = GunGunDirectAnmBase[dir];
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].No;
MGameMgr.GunGun.Character.MoveCount = 0;
MGameMgr.GunGun.KeyDirect = DIR_NOTHING;
MGameMgr.GunGun.Character.Spd.dx = 0;
MGameMgr.GunGun.Character.Spd.dy = 0;
break;
}
}else
{
MGameMgr.GunGun.Character.MoveCount = 0;
MGameMgr.GunGun.KeyDirect = DIR_NOTHING;
MGameMgr.GunGun.Character.Spd.dx = 0;
MGameMgr.GunGun.Character.Spd.dy = 0;
}
}else
{
GameMgr.WaitFlag = ON;
MGameMgr.GunGun.Character.Status = GUNGUN_CAUGHT;
MGameMgr.GunGun.AnmBase = GunGunCoughtAnmBase[MGameMgr.Kuma.MoveDirect];
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].No;
if(--MGameMgr.Zanki<=0){
MGameMgr.Zanki=0;
}
MGameMgr.Kuma.Character.Status = KUMA_CATCH;
MGameMgr.GunGun.Timer = 0;
pTask=SearchTask(TASK_NO_GAME_BAR);
if(pTask!=NULL){
pTask->mode = TASK_MODE_EXIT;
}
pTask=SearchTask(TASK_NO_GAME_STAR);
if(pTask!=NULL){
pTask->mode = TASK_MODE_EXIT;
}
}
break;
case GUNGUN_WALK:
MGameMgr.GunGun.Character.Pos.x += MGameMgr.GunGun.Character.Spd.dx*MGameMgr.GunGun.Character.Spd.sx;
MGameMgr.GunGun.Character.Pos.y += MGameMgr.GunGun.Character.Spd.dy*MGameMgr.GunGun.Character.Spd.sy;
if(--MGameMgr.GunGun.Character.MoveCount <= 0)
{
MGameMgr.GunGun.Character.Status = GUNGUN_WAIT;
switch(MGameMgr.GunGun.KeyDirect)
{
case DIR_UP:
if(--MGameMgr.GunGun.Py < 1){
MGameMgr.GunGun.Py=1;
}
break;
case DIR_DOWN:
if(++MGameMgr.GunGun.Py >= MAZE_GAME_SQUARE_H_NUM+1){
MGameMgr.GunGun.Py=MAZE_GAME_SQUARE_H_NUM-1+1;
}
break;
case DIR_LEFT:
if(--MGameMgr.GunGun.Px < 1){
MGameMgr.GunGun.Px=1;
}
break;
case DIR_RIGHT:
if(++MGameMgr.GunGun.Px>=MAZE_GAME_SQUARE_W_NUM+1){
MGameMgr.GunGun.Px=MAZE_GAME_SQUARE_W_NUM-1+1;
}
break;
default:
}
MGameMgr.GunGun.Character.Pos.z = PRIORITY_MAZE_GAME_GUNGUN - MGameMgr.GunGun.Py;
if( CheckStarPos(MGameMgr.GunGun.Px,MGameMgr.GunGun.Py) )
{
pTask=SearchTask(TASK_NO_GAME_STAR);
if(pTask!=NULL){
pTask->mode = TASK_MODE_EXIT;
}
Task.func = BeeTask;
Task.priority = TASK_NO_GAME_BEE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_BEE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "BeeTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = MGameMgr.GunGun.Px;
Task.user[1] = MGameMgr.GunGun.Py;
CreateTask(&Task);
}
MGameMgr.GunGun.KeyDirect = DIR_NOTHING;
}
break;
case GUNGUN_GET_ANSWER_WALK:
MGameMgr.GunGun.Character.Pos.x += MGameMgr.GunGun.Character.Spd.dx*MGameMgr.GunGun.Character.Spd.sx;
MGameMgr.GunGun.Character.Pos.y += MGameMgr.GunGun.Character.Spd.dy*MGameMgr.GunGun.Character.Spd.sy;
if(--MGameMgr.GunGun.Character.MoveCount <= 0)
{
ssPlaySe(MAZU_SE_10);
dsPlayXa(XA_FILE_MAZU03,7);
MGameMgr.GunGun.XaWaitTimer = GET_DA_STATUS_WAIT_TIME;
MGameMgr.GunGun.XaFlag = 1;
MGameMgr.GunGun.Character.Status = GUNGUN_CLEAR;
switch(MGameMgr.GunGun.KeyDirect)
{
case DIR_UP:
if(--MGameMgr.GunGun.Py < 1){
MGameMgr.GunGun.Py=1;
}
break;
case DIR_DOWN:
if(++MGameMgr.GunGun.Py >= MAZE_GAME_SQUARE_H_NUM+1){
MGameMgr.GunGun.Py=MAZE_GAME_SQUARE_H_NUM-1+1;
}
break;
case DIR_LEFT:
if(--MGameMgr.GunGun.Px < 1){
MGameMgr.GunGun.Px=1;
}
break;
case DIR_RIGHT:
if(++MGameMgr.GunGun.Px>=MAZE_GAME_SQUARE_W_NUM+1){
MGameMgr.GunGun.Px=MAZE_GAME_SQUARE_W_NUM-1+1;
}
break;
default:
}
MGameMgr.GunGun.KeyDirect = DIR_NOTHING;
ClearAnswer(MGameMgr.GunGun.Px,MGameMgr.GunGun.Py);
MGameMgr.GunGun.AnmBase = GUNGUN_ANM_BASE_CLEAR;
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].No;
MGameMgr.GunGun.Timer=0;
MGameMgr.Question.Mode = QUESTION_OK;
MGameMgr.Question.AnswerFlag = 1;
MGameMgr.Kuma.Character.Status = KUMA_CLEAR;
pTask=SearchTask(TASK_NO_GAME_BAR);
if(pTask!=NULL){
pTask->mode = TASK_MODE_EXIT;
}
pTask=SearchTask(TASK_NO_GAME_STAR);
if(pTask!=NULL){
pTask->mode = TASK_MODE_EXIT;
}
}
break;
case GUNGUN_CORRECT_ANSWER:
break;
case GUNGUN_CLEAR:
if(--MGameMgr.GunGun.XaWaitTimer<=0){
if(dSoundStatus == DslStatStandby){
MGameMgr.GunGun.Character.Status = GUNGUN_DISAPPEAR;
MGameMgr.GunGun.AnmBase = GUNGUN_ANM_BASE_SMOKE;
MGameMgr.GunGun.Character.Anm.Index = 0;
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].No;
MGameMgr.GunGun.Character.Anm.Data.wt = 0;
MGameMgr.GunGun.Timer = 0;
MGameMgr.Kuma.Character.Status = KUMA_DISAPPEAR;
MGameMgr.Kuma.AnmBase = KUMA_ANM_BASE_SMOKE;
MGameMgr.Kuma.Character.Anm.Index = 0;
MGameMgr.Kuma.Character.Anm.Data.no = KumaGameSpriteTable[MGameMgr.Kuma.AnmBase + MGameMgr.Kuma.Character.Anm.Index].No;
MGameMgr.Kuma.Character.Anm.Data.wt = 0;
ssPlaySe(MAZU_SE_07);
}
}
break;
case GUNGUN_DISAPPEAR:
if(++MGameMgr.GunGun.Timer>GUNGUN_GAME_DISAPPEAR_WAIT_TIME)
{
if(MGameMgr.CheckClearFlag)
{
MGameMgr.GunGun.Character.Status = GUNGUN_EVENT_WAIT;
MGameMgr.ClearFlag = 1;
if(++MGameMgr.PlayLevel>MAZE_GAME_MAX_LEVEL_NUM-1)
{
MGameMgr.PlayLevel=MAZE_GAME_MAX_LEVEL_NUM-1;
MGameMgr.AllClearFlag = 1;
}
if(MGameMgr.PlayLevel>MGameMgr.Level)
{
MGameMgr.Level=MGameMgr.PlayLevel;
}
}else
{
ip_task->mode = TASK_MODE_INIT;
MGameMgr.GunGun.Timer = 0;
pTask = SearchTask(TASK_NO_GAME_KUMA);
pTask->mode = TASK_MODE_INIT;
MGameMgr.Question.Mode = QUESTION_NEXT_UP;
}
}
break;
case GUNGUN_EVENT_WAIT:
break;
case GUNGUN_CAUGHT:
if(++MGameMgr.GunGun.Timer>GUNGUN_GAME_CATCH_WAIT_TIME)
{
ip_task->mode = TASK_MODE_INIT;
if(MGameMgr.Zanki==0)
{
MGameMgr.GameOverFlag = 1;
}else
{
pTask = SearchTask(TASK_NO_GAME_KUMA);
pTask->mode = TASK_MODE_INIT;
ssPlaySe(MAZU_SE_07);
MGameMgr.Question.Mode = QUESTION_NEXT_NONE;
}
}
if(MGameMgr.GunGun.Timer==140){
ssPlaySe(MAZU_SE_01);
}
break;
case GUNGUN_STAR_STEP:
break;
default:
}
if(++MGameMgr.GunGun.Character.Anm.Data.wt > GUNGUN_GAME_ANM_WAIT_TIME)
{
MGameMgr.GunGun.Character.Anm.Data.wt = 0;
MGameMgr.GunGun.Character.Anm.Index ^=1;
MGameMgr.GunGun.Character.Anm.Data.no = GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].No;
}
SpData.No = MGameMgr.GunGun.Character.Anm.Data.no;
SpData.PosX = MGameMgr.GunGun.Character.Pos.x + MGameMgr.GunGun.Character.OPos.x + GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].Ofx;
SpData.PosY = MGameMgr.GunGun.Character.Pos.y + MGameMgr.GunGun.Character.OPos.y + GunGunGameSpriteTable[MGameMgr.GunGun.AnmBase + MGameMgr.GunGun.Character.Anm.Index].Ofy;
SpData.PosZ = MGameMgr.GunGun.Character.Pos.z + MGameMgr.GunGun.Character.OPos.z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int GunGunZankiTask(TASK* ip_task)
{
static SPRITE_DATA SpData;
int i;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
break;
case TASK_MODE_MAIN:
for(i=0;i<MGameMgr.Zanki;i++){
SpData.No = MAZE_CHAR_GAME_GUNGUN_MARK;
SpData.PosX = GUNGUN_MARK_POS_X+GUNGUN_MARK_KANKAKU_X*2 - GUNGUN_MARK_KANKAKU_X*i;
SpData.PosY = GUNGUN_MARK_POS_Y;
SpData.PosZ = PRIORITY_MAZE_GAME_GUNGUN_MARK;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
}
static int KumaTask(TASK* ip_task)
{
static int KumaDirectAnmBase[]={
KUMA_ANM_BASE_UP,
KUMA_ANM_BASE_DOWN,
KUMA_ANM_BASE_LEFT,
KUMA_ANM_BASE_RIGHT,
};
static int KumaMoveCountTable[]={
MAZE_GAME_SQUARE_H,
MAZE_GAME_SQUARE_H,
MAZE_GAME_SQUARE_W,
MAZE_GAME_SQUARE_W,
};
static SPRITE_DATA SpData;
TASK Task;
TASK *pTask;
int i,j,kmvdir,kmvflag,rval;
#ifdef __DEBUG_MAZE__
FntPrint("(x,y)=(%2d,%2d)\n",wSx,wSy);
if(MGameMgr.Kuma.ThinkMode==THINK_MODE_SEARCH){
DrawSearchRoad(MGameMgr.VisitIndex);
}
#endif
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
MGameMgr.Kuma.Character.Status = KUMA_APPEAR;
MGameMgr.Kuma.Character.Anm.Data.no = KumaGameSpriteTable[KUMA_ANM_BASE_SMOKE].No;
MGameMgr.Kuma.Character.Anm.Data.wt = 0;
MGameMgr.Kuma.Character.Anm.Index = 0;
MGameMgr.Kuma.Character.Pos.x = MAZE_GAME_MAP_LEFT_X + KUMA_INIT_MAP_OFFSET_X + (KUMA_INIT_PX) * MAZE_GAME_SQUARE_W;
MGameMgr.Kuma.Character.Pos.y = MAZE_GAME_MAP_LEFT_Y + KUMA_INIT_MAP_OFFSET_Y + (KUMA_INIT_PY) * MAZE_GAME_SQUARE_H;
MGameMgr.Kuma.Character.Pos.z = PRIORITY_MAZE_GAME_KUMA;
MGameMgr.Kuma.Character.OPos.x = KUMA_ANM_OFSET_X;
MGameMgr.Kuma.Character.OPos.y = KUMA_ANM_OFSET_Y;
MGameMgr.Kuma.Character.OPos.z = 0;
MGameMgr.Kuma.Character.Spd.dx = 0;
MGameMgr.Kuma.Character.Spd.dy = 0;
MGameMgr.Kuma.Character.Spd.sx = 1;
MGameMgr.Kuma.Character.Spd.sy = 1;
MGameMgr.Kuma.Character.MoveCount = 0;
MGameMgr.Kuma.ThinkMode = THINK_MODE_RANDOM;
MGameMgr.Kuma.LastThinkMode = THINK_MODE_RANDOM;
MGameMgr.Kuma.Flag = 1;
MGameMgr.Kuma.BarFlag = 0;
MGameMgr.Kuma.StarFlag = 0;
MGameMgr.Kuma.AnmBase = KUMA_ANM_BASE_SMOKE;
MGameMgr.Kuma.Timer = 0;
MGameMgr.Kuma.Px = KUMA_INIT_PX;
MGameMgr.Kuma.Py = KUMA_INIT_PY;
MGameMgr.Kuma.MoveDirect = DIR_NOTHING;
break;
case TASK_MODE_MAIN:
switch(MGameMgr.Kuma.Character.Status)
{
case KUMA_APPEAR:
if(++MGameMgr.Kuma.Timer>KUMA_APPEAR_TIME)
{
MGameMgr.Kuma.Character.Status = KUMA_APPEAR_WAIT;
MGameMgr.Kuma.AnmBase = KUMA_ANM_BASE_DOWN;
MGameMgr.Kuma.Character.Anm.Data.no = KumaGameSpriteTable[MGameMgr.Kuma.AnmBase + MGameMgr.Kuma.Character.Anm.Index].No;
MGameMgr.Kuma.Timer = 0;
}
break;
case KUMA_APPEAR_WAIT:
break;
case KUMA_WAIT:
if(++MGameMgr.Kuma.Timer>KumaWaitTimeTable[MGameMgr.PlayLevel])
{
MGameMgr.Kuma.Character.Status = KUMA_THINK;
MGameMgr.Kuma.LastThinkMode = MGameMgr.Kuma.ThinkMode;
if( rand()%100 < KumaThinkModeProbabilityTable[MGameMgr.PlayLevel] )
{
MGameMgr.Kuma.ThinkMode = THINK_MODE_SEARCH;
}else
{
MGameMgr.Kuma.ThinkMode = THINK_MODE_RANDOM;
}
MGameMgr.Kuma.Timer=0;
}
break;
case KUMA_THINK:
kmvdir=0;
if(MGameMgr.Kuma.ThinkMode==THINK_MODE_RANDOM)
{
kmvflag = GetKumaRandomMoveDirect(&kmvdir);
}else{
kmvflag = SearchGunGun(&kmvdir);
}
if( kmvflag )
{
MGameMgr.Kuma.Character.Status = KUMA_WALK;
MGameMgr.Kuma.AnmBase = KumaDirectAnmBase[kmvdir];
MGameMgr.Kuma.Character.Anm.Data.no = KumaGameSpriteTable[MGameMgr.Kuma.AnmBase + MGameMgr.Kuma.Character.Anm.Index].No;
MGameMgr.Kuma.Character.Spd.dx = DirectRoadTable[kmvdir].Px;
MGameMgr.Kuma.Character.Spd.dy = DirectRoadTable[kmvdir].Py;
MGameMgr.Kuma.Character.MoveCount = KumaMoveCountTable[kmvdir];
MGameMgr.Kuma.MoveDirect = kmvdir;
MGameMgr.Kuma.Timer = 0;
if( (rand()%100) < BAR_BIRTH_PROBABILITY )
{
if( !CheckGunGunPosArea(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py) )
{
if(MGameMgr.Kuma.BarFlag==0)
{
Task.func = BarTask;
Task.priority = TASK_NO_GAME_BAR;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_BAR;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "BarTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = MGameMgr.Kuma.Px;
Task.user[1] = MGameMgr.Kuma.Py;
CreateTask(&Task);
}
}
}
if( (rand()%100) < STAR_BIRTH_PROBABILITY )
{
pTask=SearchTask(TASK_NO_GAME_BEE);
if(pTask==NULL)
{
rval = rand()%35;
if( !CheckGunGunPos(StarPosTable[rval].Px,StarPosTable[rval].Py) )
{
if(MGameMgr.Kuma.StarFlag==0)
{
pTask=SearchTask(TASK_NO_GAME_STAR);
if(pTask==NULL){
Task.func = StarTask;
Task.priority = TASK_NO_GAME_STAR;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_STAR;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "StarTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = StarPosTable[rval].Px;
Task.user[1] = StarPosTable[rval].Py;
CreateTask(&Task);
}
}
}
}
}
switch(MGameMgr.Kuma.MoveDirect)
{
case DIR_UP:
if(--MGameMgr.Kuma.Py < 1){
MGameMgr.Kuma.Py = 1;
}
break;
case DIR_DOWN:
if(++MGameMgr.Kuma.Py >= MAZE_GAME_SQUARE_H_NUM+1){
MGameMgr.Kuma.Py = MAZE_GAME_SQUARE_H_NUM-1+1;
}
break;
case DIR_LEFT:
if(--MGameMgr.Kuma.Px < 1){
MGameMgr.Kuma.Px = 1;
}
break;
case DIR_RIGHT:
if(++MGameMgr.Kuma.Px >= MAZE_GAME_SQUARE_W_NUM+1){
MGameMgr.Kuma.Px = MAZE_GAME_SQUARE_W_NUM-1+1;
}
break;
default:
}
}else
{
MGameMgr.Kuma.Character.Status = KUMA_WAIT;
MGameMgr.Kuma.Character.Spd.dx = 0;
MGameMgr.Kuma.Character.Spd.dy = 0;
MGameMgr.Kuma.Character.MoveCount = 0;
MGameMgr.Kuma.MoveDirect = DIR_NOTHING;
MGameMgr.Kuma.Timer = 0;
}
break;
case KUMA_WALK:
MGameMgr.Kuma.Character.Pos.x += MGameMgr.Kuma.Character.Spd.dx * MGameMgr.Kuma.Character.Spd.sx;
MGameMgr.Kuma.Character.Pos.y += MGameMgr.Kuma.Character.Spd.dy * MGameMgr.Kuma.Character.Spd.sy;
if(--MGameMgr.Kuma.Character.MoveCount <= 0)
{
MGameMgr.Kuma.Character.Status = KUMA_WAIT;
MGameMgr.Kuma.Timer = 0;
MGameMgr.Kuma.MoveDirect = DIR_NOTHING;
MGameMgr.Kuma.Character.Pos.z = PRIORITY_MAZE_GAME_KUMA - MGameMgr.Kuma.Py;
}
break;
case KUMA_CATCH:
MGameMgr.Kuma.Flag = 0;
MGameMgr.Kuma.Character.Status = KUMA_CATCH_WAIT;
ssPlaySe(MAZU_SE_02);
break;
case KUMA_CATCH_WAIT:
break;
case KUMA_BEE_BITE_OUCH:
if(++MGameMgr.Kuma.Timer>KUMA_BITE_OUCH_WAIT_TIME)
{
MGameMgr.Kuma.Character.Status = KUMA_WAIT;
MGameMgr.Kuma.Character.Pos.x = MAZE_GAME_MAP_LEFT_X + KUMA_INIT_MAP_OFFSET_X + (MGameMgr.Kuma.Px) * MAZE_GAME_SQUARE_W;
MGameMgr.Kuma.Character.Pos.y = MAZE_GAME_MAP_LEFT_Y + KUMA_INIT_MAP_OFFSET_Y + (MGameMgr.Kuma.Py) * MAZE_GAME_SQUARE_H;
MGameMgr.Kuma.AnmBase = KumaDirectAnmBase[1];
MGameMgr.Kuma.Character.Anm.Data.no = KumaGameSpriteTable[MGameMgr.Kuma.AnmBase + MGameMgr.Kuma.Character.Anm.Index].No;
MGameMgr.Kuma.Timer = 0;
}
break;
case KUMA_CLEAR:
break;
case KUMA_DISAPPEAR:
break;
default:
}
if(++MGameMgr.Kuma.Character.Anm.Data.wt > KUMA_GAME_ANM_WAIT_TIME)
{
MGameMgr.Kuma.Character.Anm.Data.wt = 0;
MGameMgr.Kuma.Character.Anm.Index ^=1;
MGameMgr.Kuma.Character.Anm.Data.no = KumaGameSpriteTable[MGameMgr.Kuma.AnmBase + MGameMgr.Kuma.Character.Anm.Index].No;
}
if(MGameMgr.Kuma.Flag){
SpData.No = MGameMgr.Kuma.Character.Anm.Data.no;
SpData.PosX = MGameMgr.Kuma.Character.Pos.x + MGameMgr.Kuma.Character.OPos.x + KumaGameSpriteTable[MGameMgr.Kuma.AnmBase + MGameMgr.Kuma.Character.Anm.Index].Ofx;
SpData.PosY = MGameMgr.Kuma.Character.Pos.y + MGameMgr.Kuma.Character.OPos.y + KumaGameSpriteTable[MGameMgr.Kuma.AnmBase + MGameMgr.Kuma.Character.Anm.Index].Ofy;
SpData.PosZ = MGameMgr.Kuma.Character.Pos.z + MGameMgr.Kuma.Character.OPos.z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int BeeTask(TASK* ip_task)
{
static MAZE_SPRITE_DATA BeeSpriteTable[]=
{
{ MAZE_CHAR_GAME_BEE_LEFT, 0, 0 },
{ MAZE_CHAR_GAME_BEE_RIGHT, 0, 0 },
};
SPRITE_DATA SpData;
int sx,sy,wx,wy;;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
MGameMgr.Bee.Px = ip_task->user[0];
MGameMgr.Bee.Py = ip_task->user[1];
MGameMgr.Bee.Character.Status = 0;
MGameMgr.Bee.Character.Anm.Data.no = 0;
MGameMgr.Bee.Character.Anm.Data.wt = 0;
MGameMgr.Bee.Character.Anm.Index = 0;
MGameMgr.Bee.Character.Pos.x = MAZE_GAME_MAP_LEFT_X + (MGameMgr.Bee.Px)*MAZE_GAME_SQUARE_W +BEE_ANM_OFSET_X;
MGameMgr.Bee.Character.Pos.y = MAZE_GAME_MAP_LEFT_Y + (MGameMgr.Bee.Py)*MAZE_GAME_SQUARE_H +BEE_ANM_OFSET_Y;
MGameMgr.Bee.Character.Pos.z = PRIORITY_MAZE_GAME_BEE;
MGameMgr.Bee.Character.OPos.x = BEE_ANM_OFSET_X;
MGameMgr.Bee.Character.OPos.y = BEE_ANM_OFSET_Y;
MGameMgr.Bee.Character.OPos.z = 0;
MGameMgr.Bee.Character.Spd.dx = 0;
MGameMgr.Bee.Character.Spd.dy = 0;
MGameMgr.Bee.Character.Spd.sx = BEE_SPEED_X;
MGameMgr.Bee.Character.Spd.sy = BEE_SPEED_Y;
MGameMgr.Bee.Timer = 0;
sx = MGameMgr.Kuma.Px - MGameMgr.Bee.Px;
sy = MGameMgr.Kuma.Py - MGameMgr.Bee.Py;
if(sx>0){
sx=1;
MGameMgr.Bee.Character.Anm.Data.no = BeeSpriteTable[1].No;
}else
if(sx<0){
MGameMgr.Bee.Character.Anm.Data.no = BeeSpriteTable[0].No;
sx=-1;
}else{
MGameMgr.Bee.Character.Anm.Data.no = BeeSpriteTable[0].No;
sx=0;
}
if(sy>0){
sy=1;
}else
if(sy<0){
sy=-1;
}else{
sy=0;
}
MGameMgr.Bee.Character.Spd.dx = sx;
MGameMgr.Bee.Character.Spd.dy = sy;
break;
case TASK_MODE_MAIN:
if(++MGameMgr.Bee.Timer>300){
ip_task->mode=TASK_MODE_EXIT;
}
if(!(MGameMgr.Bee.Timer%20)){
ssPlaySe(MAZU_SE_04);
}
wx = MGameMgr.Kuma.Character.Pos.x - MGameMgr.Bee.Character.Pos.x;
wy = MGameMgr.Kuma.Character.Pos.y - MGameMgr.Bee.Character.Pos.y;
if(wx>=0){
MGameMgr.Bee.Character.Spd.dx = 1;
}else
if(wx<0){
MGameMgr.Bee.Character.Spd.dx = -1;
}
if(wy>=0){
MGameMgr.Bee.Character.Spd.dy = 1;
}else
if(wy<0){
MGameMgr.Bee.Character.Spd.dy = -1;
}
if( ABS(wx) > BEE_NOMOVE_AREA ){
MGameMgr.Bee.Character.Pos.x += MGameMgr.Bee.Character.Spd.sx * MGameMgr.Bee.Character.Spd.dx;
}
if( ABS(wy) > BEE_NOMOVE_AREA ){
MGameMgr.Bee.Character.Pos.y += MGameMgr.Bee.Character.Spd.sy * MGameMgr.Bee.Character.Spd.dy;
}
if( ABS(wx) < BEE_ATTACK_AREA){
if( ABS(wy) < BEE_ATTACK_AREA )
{
ip_task->mode=TASK_MODE_EXIT;
MGameMgr.Kuma.Character.Status = KUMA_BEE_BITE_OUCH;
MGameMgr.Kuma.AnmBase = 27;
MGameMgr.Kuma.Character.Anm.Data.no = KumaGameSpriteTable[MGameMgr.Kuma.AnmBase + MGameMgr.Kuma.Character.Anm.Index].No;
ssPlaySe(MAZU_SE_00);
}
}
SpData.No = MGameMgr.Bee.Character.Anm.Data.no;
SpData.PosX = MGameMgr.Bee.Character.Pos.x + MGameMgr.Bee.Character.OPos.x;
SpData.PosY = MGameMgr.Bee.Character.Pos.y + MGameMgr.Bee.Character.OPos.y;
SpData.PosZ = MGameMgr.Bee.Character.Pos.z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int StarTask(TASK* ip_task)
{
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
MGameMgr.Kuma.StarFlag=1;
MGameMgr.Star.Status = STAR_APPEAR;
MGameMgr.Star.MapNo = MAZE_MAP_CHAR_STAR;
MGameMgr.Star.Px = ip_task->user[0];
MGameMgr.Star.Py = ip_task->user[1];
MGameMgr.Star.Timer = STAR_EXISTANCE_BASE_TIME + rand()%STAR_EXISTANCE_RANDOM_MAX_TIME;
SetStar(MGameMgr.Star.MapNo,MGameMgr.Star.Px,MGameMgr.Star.Py);
break;
case TASK_MODE_MAIN:
if(--MGameMgr.Star.Timer<=0){
ip_task->mode = TASK_MODE_EXIT;
}
break;
case TASK_MODE_EXIT:
MGameMgr.Kuma.StarFlag = 0;
ClearStar(MGameMgr.Star.Px, MGameMgr.Star.Py);
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int BarTask(TASK* ip_task)
{
static int BarTable[]=
{
MAZE_MAP_CHAR_BAR_00,
MAZE_MAP_CHAR_BAR_01,
};
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
MGameMgr.Kuma.BarFlag=1;
MGameMgr.Bar.Status = BAR_APPEAR;
MGameMgr.Bar.MapNo = BarTable[rand()%2];
MGameMgr.Bar.Px = ip_task->user[0];
MGameMgr.Bar.Py = ip_task->user[1];
MGameMgr.Bar.Timer = BAR_EXISTANCE_BASE_TIME + rand()%BAR_EXISTANCE_RANDOM_MAX_TIME;
SetBar(MGameMgr.Bar.MapNo, MGameMgr.Bar.Px, MGameMgr.Bar.Py);
break;
case TASK_MODE_MAIN:
switch(MGameMgr.Bar.Status)
{
case BAR_APPEAR:
if(--MGameMgr.Bar.Timer <= 0)
{
MGameMgr.Bar.Status = BAR_DISAPPEAR;
}
break;
case BAR_DISAPPEAR:
ip_task->mode = TASK_MODE_EXIT;
break;
default:
}
break;
case TASK_MODE_EXIT:
MGameMgr.Kuma.BarFlag=0;
ClearBar(MGameMgr.Bar.Px, MGameMgr.Bar.Py);
ExitTask(ip_task->id);
break;
default:
}
}
static int QuestionTask(TASK* ip_task)
{
static int QIndex;
static int QPosIndex;
MAZE_GAME_QUESTION_NUM_DATA TextNum;
TASK Task;
int i,Ans,Type,QAns;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
MGameMgr.Question.Mode = QUESTION_FLASH;
MGameMgr.Question.Index = 0;
MGameMgr.Question.Timer = 0;
MGameMgr.Question.FlashFlag = 0;
MGameMgr.Question.AnswerFlag = 0;
MGameMgr.Question.FlashCount = 0;
MGameMgr.Question.WaitTimer = QUESTION_START_PLAY_WAIT_TIME;
for(i=0;i<MAX_QUESTION_NUM;i++){
MGameMgr.Question.Data[i].Flag = 0;
MGameMgr.Question.Data[i].QuestionNum.num1 = 0;
MGameMgr.Question.Data[i].QuestionNum.num2 = 0;
MGameMgr.Question.Data[i].QuestionNum.num3 = 0;
}
QIndex = rand() % QUESTION_LEVEL_BASE;
QPosIndex = rand() % QUESTION_POS_BASE;
for(i=0;i<MAX_QUESTION_NUM;i++)
{
Ans = QuestionDataTable[ QUESTION_LEVEL_BASE * MGameMgr.PlayLevel + QIndex ].Data[i];
Type = QuestionTypeTable[MGameMgr.PlayLevel];
if(Ans==-1){
continue;
}else{
CreateQuestion2(Type,Ans,&TextNum);
}
MGameMgr.Question.Data[i].Flag = 0;
MGameMgr.Question.Data[i].QuestionNum.num1 = TextNum.num1;
MGameMgr.Question.Data[i].QuestionNum.num2 = TextNum.num2;
MGameMgr.Question.Data[i].QuestionNum.num3 = TextNum.num3;
QAns = TextNum.num3;
SetAnswer( QAns,
AnswerPosTable[ AnswerPosIndexTable[QUESTION_LEVEL_BASE+QPosIndex].Data[i] ].Px,
AnswerPosTable[ AnswerPosIndexTable[QUESTION_LEVEL_BASE+QPosIndex].Data[i] ].Py);
MGameMgr.Answer[i] = QAns;
}
ssPlaySe(MAZU_SE_06);
break;
case TASK_MODE_MAIN:
switch(MGameMgr.Question.Mode)
{
case QUESTION_FLASH:
if(++MGameMgr.Question.Timer>QUESTION_FLASH_WAIT_TIME){
MGameMgr.Question.Timer = 0;
MGameMgr.Question.FlashFlag ^=1;
if(MGameMgr.Question.FlashFlag){
if(MGameMgr.Question.FlashCount!=0){
ssPlaySe(MAZU_SE_09);
}
if(++MGameMgr.Question.FlashCount>=4)
{
MGameMgr.Question.Mode = QUESTION_PLAY_XA;
MGameMgr.Question.FlashFlag = 1;
MGameMgr.Question.WaitTimer = QUESTION_START_PLAY_WAIT_TIME;
}
}
}
break;
case QUESTION_PLAY_XA:
if(--MGameMgr.Question.WaitTimer<=0)
{
Task.func = PlayQuestionTask;
Task.priority = TASK_NO_GAME_PLAY_QUESTION;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_PLAY_QUESTION;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "PlayQuestionTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = QuestionTypeTable[MGameMgr.PlayLevel];
Task.user[1] = MGameMgr.Question.Data[MGameMgr.Question.Index].QuestionNum.num1;
Task.user[2] = MGameMgr.Question.Data[MGameMgr.Question.Index].QuestionNum.num2;
CreateTask(&Task);
MGameMgr.Question.Mode = QUESTION_PLAY_XA_WAIT;
MGameMgr.Question.WaitTimer = 10;
}
break;
case QUESTION_PLAY_XA_WAIT:
if(--MGameMgr.Question.WaitTimer<=0){
if(!MGameMgr.Question.PlayXa.Flag)
{
GameMgr.WaitFlag = OFF;
MGameMgr.GunGun.Character.Status = GUNGUN_WAIT;
MGameMgr.Kuma.Character.Status = KUMA_WAIT;
MGameMgr.Question.Mode = QUESTION_SELECT;
ssPlaySe(MAZU_SE_08);
ssPlayBgm(MAZU_BGM_00);
WakeupTask(TASK_NO_GAME_PAUSE);
}
}
break;
case QUESTION_SELECT:
break;
case QUESTION_OK:
break;
case QUESTION_NEXT_UP:
if(++MGameMgr.Question.Index>QuestionNumTable[MGameMgr.PlayLevel]-1)
{
MGameMgr.Question.Index = QuestionNumTable[MGameMgr.PlayLevel]-1;
}else{
ssPlaySe(MAZU_SE_06);
}
MGameMgr.Question.Mode = QUESTION_FLASH;
MGameMgr.Question.AnswerFlag = 0;
MGameMgr.Question.Timer = 0;
MGameMgr.Question.FlashFlag ^= 1;
MGameMgr.Question.FlashCount = 0;
ssStopBgm(MAZU_BGM_00);
SleepTask(TASK_NO_GAME_PAUSE);
break;
case QUESTION_NEXT_NONE:
ssPlaySe(MAZU_SE_06);
MGameMgr.Question.Mode = QUESTION_FLASH;
MGameMgr.Question.AnswerFlag = 0;
MGameMgr.Question.Timer = 0;
MGameMgr.Question.FlashFlag ^= 1;
MGameMgr.Question.FlashCount = 0;
ssStopBgm(MAZU_BGM_00);
SleepTask(TASK_NO_GAME_PAUSE);
default:
}
DrawQuestion( MGameMgr.Question.Index,
QUESTION_BASE_POS_X,
QUESTION_BASE_POS_Y,
PRIORITY_MAZE_GAME_QUESTION,
MGameMgr.Question.FlashFlag,
MGameMgr.Question.AnswerFlag);
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
}
return TRUE;
}
enum{
PLAY_STR_TO,
PLAY_STR_HA,
PLAY_STR_IKUTSU,
PLAY_STR_GAME_START,
};
static int PlayQuestionTask(TASK* ip_task)
{
static XA_DATA NumXaTable[]=
{
{ XA_FILE_YOMI01, 0 },
{ XA_FILE_YOMI01, 1 },
{ XA_FILE_YOMI01, 2 },
{ XA_FILE_YOMI01, 3 },
{ XA_FILE_YOMI01, 4 },
{ XA_FILE_YOMI01, 5 },
{ XA_FILE_YOMI01, 6 },
{ XA_FILE_YOMI01, 7 },
{ XA_FILE_YOMI01, 8 },
{ XA_FILE_YOMI01, 9 },
{ XA_FILE_YOMI01, 10 },
};
static XA_DATA StrXaTable[]=
{
{ XA_FILE_MAZU01, 0 },
{ XA_FILE_MAZU01, 5 },
{ XA_FILE_MAZU01, 8 },
{ XA_FILE_MAZU01, 7 },
};
TASK* pTask;
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
MGameMgr.Question.PlayXa.Flag = 1;
MGameMgr.Question.PlayXa.Type = ip_task->user[0];
MGameMgr.Question.PlayXa.Num1 = ip_task->user[1];
MGameMgr.Question.PlayXa.Num2 = ip_task->user[2];
MGameMgr.Question.PlayXa.Mode = 0;
MGameMgr.Question.PlayXa.WaitFlag = 0;
MGameMgr.Question.PlayXa.WaitTimer = GET_DA_STATUS_WAIT_TIME*3;
break;
case TASK_MODE_MAIN:
switch(MGameMgr.Question.PlayXa.Mode)
{
case 0:
if(!MGameMgr.Question.PlayXa.WaitFlag){
MGameMgr.Question.PlayXa.WaitFlag=1;
dsPlayXa( NumXaTable[MGameMgr.Question.PlayXa.Num1].FileNo,
NumXaTable[MGameMgr.Question.PlayXa.Num1].ChannelNo);
}else{
if(--MGameMgr.Question.PlayXa.WaitTimer<=0){
if(dSoundStatus == DslStatStandby){
MGameMgr.Question.PlayXa.Mode = 1;
MGameMgr.Question.PlayXa.WaitFlag = 0;
MGameMgr.Question.PlayXa.WaitTimer = GET_DA_STATUS_WAIT_TIME*3;
}
}
}
break;
case 1:
if(!MGameMgr.Question.PlayXa.WaitFlag){
MGameMgr.Question.PlayXa.WaitFlag=1;
if(MGameMgr.Question.PlayXa.Type==MAZE_GAME_QUESTION_TYPE_ADDITION){
dsPlayXa( StrXaTable[PLAY_STR_TO].FileNo,
StrXaTable[PLAY_STR_TO].ChannelNo);
}else{
dsPlayXa( StrXaTable[PLAY_STR_HA].FileNo,
StrXaTable[PLAY_STR_HA].ChannelNo);
}
}else{
if(--MGameMgr.Question.PlayXa.WaitTimer<=0){
if(dSoundStatus == DslStatStandby){
MGameMgr.Question.PlayXa.Mode = 2;
MGameMgr.Question.PlayXa.WaitFlag = 0;
MGameMgr.Question.PlayXa.WaitTimer = GET_DA_STATUS_WAIT_TIME*3;
}
}
}
break;
case 2:
if(!MGameMgr.Question.PlayXa.WaitFlag){
MGameMgr.Question.PlayXa.WaitFlag=1;
dsPlayXa( NumXaTable[MGameMgr.Question.PlayXa.Num2].FileNo,
NumXaTable[MGameMgr.Question.PlayXa.Num2].ChannelNo);
}else{
if(--MGameMgr.Question.PlayXa.WaitTimer<=0){
if(dSoundStatus == DslStatStandby){
MGameMgr.Question.PlayXa.Mode = 3;
MGameMgr.Question.PlayXa.WaitFlag = 0;
MGameMgr.Question.PlayXa.WaitTimer = GET_DA_STATUS_WAIT_TIME*3;
}
}
}
break;
case 3:
if(!MGameMgr.Question.PlayXa.WaitFlag){
MGameMgr.Question.PlayXa.WaitFlag=1;
if(MGameMgr.Question.PlayXa.Type==MAZE_GAME_QUESTION_TYPE_ADDITION){
dsPlayXa( StrXaTable[PLAY_STR_HA].FileNo,
StrXaTable[PLAY_STR_HA].ChannelNo);
}else{
dsPlayXa( StrXaTable[PLAY_STR_TO].FileNo,
StrXaTable[PLAY_STR_TO].ChannelNo);
}
}else{
if(--MGameMgr.Question.PlayXa.WaitTimer<=0){
if(dSoundStatus == DslStatStandby){
MGameMgr.Question.PlayXa.Mode = 4;
MGameMgr.Question.PlayXa.WaitFlag = 0;
MGameMgr.Question.PlayXa.WaitTimer = GET_DA_STATUS_WAIT_TIME*3;
}
}
}
break;
case 4:
if(!MGameMgr.Question.PlayXa.WaitFlag){
MGameMgr.Question.PlayXa.WaitFlag=1;
dsPlayXa( StrXaTable[PLAY_STR_IKUTSU].FileNo,
StrXaTable[PLAY_STR_IKUTSU].ChannelNo);
}else{
if(--MGameMgr.Question.PlayXa.WaitTimer<=0){
if(dSoundStatus == DslStatStandby){
MGameMgr.Question.PlayXa.Mode = 5;
MGameMgr.Question.PlayXa.WaitFlag = 0;
MGameMgr.Question.PlayXa.WaitTimer = GET_DA_STATUS_WAIT_TIME*3;
}
}
}
break;
case 5:
if(!MGameMgr.Question.PlayXa.WaitFlag){
MGameMgr.Question.PlayXa.WaitFlag=1;
dsPlayXa( StrXaTable[PLAY_STR_GAME_START].FileNo,
StrXaTable[PLAY_STR_GAME_START].ChannelNo);
}else{
if(--MGameMgr.Question.PlayXa.WaitTimer<=0){
if(dSoundStatus == DslStatStandby){
MGameMgr.Question.PlayXa.Mode = 6;
MGameMgr.Question.PlayXa.WaitFlag = 0;
MGameMgr.Question.PlayXa.WaitTimer = GET_DA_STATUS_WAIT_TIME*3;
}
}
}
break;
case 6:
ip_task->mode = TASK_MODE_EXIT;
break;
default:
}
break;
case TASK_MODE_EXIT:
MGameMgr.Question.PlayXa.Flag = 0;
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int GameBgTask(TASK* ip_task)
{
SPRITE_DATA SpData;
int i,j,mno;
static int BlockSpriteNoTable[]={
MAZE_CHAR_GAME_IWA_00,
MAZE_CHAR_GAME_IWA_01,
};
static int AnswerNumSpriteTable[]={
MAZE_CHAR_GAME_ANSWER_NUM_00,
MAZE_CHAR_GAME_ANSWER_NUM_01,
MAZE_CHAR_GAME_ANSWER_NUM_02,
MAZE_CHAR_GAME_ANSWER_NUM_03,
MAZE_CHAR_GAME_ANSWER_NUM_04,
MAZE_CHAR_GAME_ANSWER_NUM_05,
MAZE_CHAR_GAME_ANSWER_NUM_06,
MAZE_CHAR_GAME_ANSWER_NUM_07,
MAZE_CHAR_GAME_ANSWER_NUM_08,
MAZE_CHAR_GAME_ANSWER_NUM_09,
MAZE_CHAR_GAME_ANSWER_NUM_10,
};
static int BarSpriteNoTable[]={
MAZE_CHAR_GAME_SAKU_00,
MAZE_CHAR_GAME_SAKU_01,
};
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
break;
case TASK_MODE_MAIN:
mno = 0;
for(i=1;i<MAZE_GAME_SQUARE_W_NUM+1;i++)
{
for(j=1;j<MAZE_GAME_SQUARE_H_NUM+1;j++)
{
switch(MGameMgr.Map.Data[j][i])
{
case MAZE_MAP_CHAR_WALL:
break;
case MAZE_MAP_CHAR_IWA_00:
case MAZE_MAP_CHAR_IWA_01:
if(MGameMgr.Map.Data[j][i]==MAZE_MAP_CHAR_IWA_00){
mno = 0;
}else{
mno = 1;
}
SpData.No = BlockSpriteNoTable[mno];
SpData.PosX = MAZE_GAME_MAP_LEFT_X + (i-1)*MAZE_GAME_SQUARE_W;
SpData.PosY = MAZE_GAME_MAP_LEFT_Y + (j-1)*MAZE_GAME_SQUARE_H;
SpData.PosZ = PRIORITY_MAZE_GAME_IWA;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case MAZE_MAP_CHAR_NUM_00:
case MAZE_MAP_CHAR_NUM_01:
case MAZE_MAP_CHAR_NUM_02:
case MAZE_MAP_CHAR_NUM_03:
case MAZE_MAP_CHAR_NUM_04:
case MAZE_MAP_CHAR_NUM_05:
case MAZE_MAP_CHAR_NUM_06:
case MAZE_MAP_CHAR_NUM_07:
case MAZE_MAP_CHAR_NUM_08:
case MAZE_MAP_CHAR_NUM_09:
case MAZE_MAP_CHAR_NUM_10:
SpData.No = AnswerNumSpriteTable[MGameMgr.Map.Data[j][i]];
SpData.PosX = MAZE_GAME_MAP_LEFT_X + (i-1)*MAZE_GAME_SQUARE_W + 3;
SpData.PosY = MAZE_GAME_MAP_LEFT_Y + (j-1)*MAZE_GAME_SQUARE_H - 1;
SpData.PosZ = PRIORITY_MAZE_GAME_ANSWER_NUM;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case MAZE_MAP_CHAR_STAR:
SpData.No = MAZE_CHAR_GAME_BIG_STAR;
SpData.PosX = MAZE_GAME_MAP_LEFT_X + (i-1)*MAZE_GAME_SQUARE_W+2;
SpData.PosY = MAZE_GAME_MAP_LEFT_Y + (j-1)*MAZE_GAME_SQUARE_H;
SpData.PosZ = PRIORITY_MAZE_GAME_STAR;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case MAZE_MAP_CHAR_BAR_00:
case MAZE_MAP_CHAR_BAR_01:
if(MGameMgr.Map.Data[j][i]==MAZE_MAP_CHAR_BAR_00){
mno = 0;
}else{
mno = 1;
}
SpData.No = BarSpriteNoTable[mno];
SpData.PosX = MAZE_GAME_MAP_LEFT_X + (i-1)*MAZE_GAME_SQUARE_W + 2;
SpData.PosY = MAZE_GAME_MAP_LEFT_Y + (j-1)*MAZE_GAME_SQUARE_H - 3;
SpData.PosZ = PRIORITY_MAZE_GAME_SAKU;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
default:
}
}
}
SpData.No = MAZE_CHAR_GAME_BG_00;
SpData.PosX = 0;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_MAZE_GAME_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_GAME_BG_01;
SpData.PosX = 256;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_MAZE_GAME_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int SelectLevelTask(TASK* ip_task)
{
static int LevelNumTable[]={
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_1,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_2,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_3,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_4,
MAZE_CHAR_GAME_SELECT_LEVEL_NUM_5,
};
static MAZE_SPRITE_DATA GakudaninSpriteTable[]=
{
{ MAZE_CHAR_GAME_DANTYOU_00, 0, -6 },
{ MAZE_CHAR_GAME_DANTYOU_01, 0, -6 },
{ MAZE_CHAR_GAME_DANIN_FUUSEN_BLUE_00, 0, 0 },
{ MAZE_CHAR_GAME_DANIN_FUUSEN_BLUE_01, 0, 0 },
{ MAZE_CHAR_GAME_DANIN_HATA_02, 0, 0 },
{ MAZE_CHAR_GAME_DANIN_HATA_03, 0, 0 },
{ MAZE_CHAR_GAME_DANIN_HATA_00, 0, 0 },
{ MAZE_CHAR_GAME_DANIN_HATA_01, 0, 0 },
{ MAZE_CHAR_GAME_DANIN_FUUSEN_ORANGE_00, 0, 0 },
{ MAZE_CHAR_GAME_DANIN_FUUSEN_ORANGE_01, 0, 0 },
};
SPRITE_DATA SpData;
TASK Task;
int i,j;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(MazeGameTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_GAME_TIM_NUM, &MazeGameTextureImage[MAZE_GAME_TIM_POS] );
TimImgData = MazeGameTextureImage;
ReleaseSprite();
EntrySprite( MazeGameSpriteData );
MGameMgr.PlayLevel = 0;
MGameMgr.ContinueFlag = 0;
GameMgr.FadeFlag = FadeIn;
MGameMgr.SelectLevel.Mode = MAZE_GAME_SELECT_LEVEL_MODE_00;
MGameMgr.SelectLevel.Timer = 0;
MGameMgr.SelectLevel.BlockNo = 0;
MGameMgr.SelectLevel.BlockWt = 0;
MGameMgr.SelectLevel.KeteiWt = 0;
MGameMgr.SelectLevel.KeteiFlushIndex = 0;
MGameMgr.SelectLevel.KeteiFlushWt = 0;
MGameMgr.SelectLevel.AnmIndex = 0;
MGameMgr.SelectLevel.AnmNo = GakudaninSpriteTable[0].No;
MGameMgr.SelectLevel.AnmWt = 0;
MGameMgr.SelectLevel.AnmBase = 0;
MGameMgr.SelectLevel.PosX = MAZE_GAME_SELECT_LEVEL_GAKUDANIN_INIT_X;
MGameMgr.SelectLevel.PosY = MAZE_GAME_SELECT_LEVEL_GAKUDANIN_INIT_Y;
MGameMgr.SelectLevel.WaitFlag = 0;
dsPlayXa(XA_FILE_ZIRI10,5);
break;
case TASK_MODE_MAIN:
switch(MGameMgr.SelectLevel.Mode)
{
case MAZE_GAME_SELECT_LEVEL_MODE_00:
++MGameMgr.SelectLevel.Timer;
if(MGameMgr.SelectLevel.Timer > MAZE_GAME_SELECT_LEVEL_MODE_00_TIME){
MGameMgr.SelectLevel.Mode = MAZE_GAME_SELECT_LEVEL_MODE_01;
MGameMgr.Script.Flag= 1;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_1;
Task.user[1] = SELECT_LEVEL_SCRIPT_BASE;
Task.user[2] = SELECT_LEVEL_SCRIPT_NUM;
CreateTask(&Task);
SpraitCharSet(&GaidoLevelSpControl00[0], NULL);
}
for(i=0;i<MGameMgr.Level+1;i++){
for(j=0;j<5;j++){
if(j>i) continue;
SpData.No = MAZE_CHAR_GAME_SELECT_LEVEL_PLATE_LIGHT;
SpData.PosX = 101 + 25*i - 2;
SpData.PosY = 40 + 95 - 10*j + 3;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
MGameMgr.SelectLevel.PosX -= MAZE_GAME_SELECT_LEVEL_GAKUDANIN_SPEED_X;
if(MGameMgr.SelectLevel.PosX<MAZE_GAME_SELECT_LEVEL_GAKUDANIN_STOP_X)
{
MGameMgr.SelectLevel.PosX = MAZE_GAME_SELECT_LEVEL_GAKUDANIN_STOP_X;
}
break;
case MAZE_GAME_SELECT_LEVEL_MODE_01:
SsinScriptFlag = MGameMgr.Script.Flag;
if(!MGameMgr.Script.Flag){
if(JstPad & PADLright)
{
ssPlaySe(BUTONSE_LEVER);
if(++MGameMgr.PlayLevel>MGameMgr.Level){
MGameMgr.PlayLevel=0;
}
}else
if(JstPad & PADLleft){
ssPlaySe(BUTONSE_LEVER);
if(--MGameMgr.PlayLevel<0){
MGameMgr.PlayLevel=MGameMgr.Level;
}
}else{
}
if(JstPad & PADRright)
{
ssPlaySe(BUTONSE_MARU);
MGameMgr.SelectLevel.Mode = MAZE_GAME_SELECT_LEVEL_MODE_02;
}
}
if( ++MGameMgr.SelectLevel.BlockWt > MAZE_GAME_SELECT_LEVEL_FLUSH_ANM_TIME)
{
MGameMgr.SelectLevel.BlockWt=0;
if(++MGameMgr.SelectLevel.BlockNo > MAZE_GAME_MAX_LEVEL_NUM)
{
MGameMgr.SelectLevel.BlockNo=0;
}
}
for(i=0;i<MGameMgr.Level+1;i++){
for(j=0;j<5;j++){
if(j>i) continue;
if(MGameMgr.SelectLevel.BlockNo <= j) continue;
SpData.No = MAZE_CHAR_GAME_SELECT_LEVEL_PLATE_LIGHT;
SpData.PosX = 101 + 25*i - 2;
SpData.PosY = 40 + 95 - 10*j + 3;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-3;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
break;
case MAZE_GAME_SELECT_LEVEL_MODE_02:
if(!MGameMgr.SelectLevel.WaitFlag){
if(++MGameMgr.SelectLevel.KeteiWt > MAZE_GAME_SELECT_LEVEL_KETEI_WAIT_TIME){
MGameMgr.SelectLevel.WaitFlag=1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}
}
if( ++MGameMgr.SelectLevel.KeteiFlushWt > MAZE_GAME_SELECT_LEVEL_KETEI_FLUSH_TIME ){
MGameMgr.SelectLevel.KeteiFlushWt = 0;
MGameMgr.SelectLevel.KeteiFlushIndex^=1;
}
if(MGameMgr.SelectLevel.KeteiFlushIndex){
for(i=0;i<5;i++){
if(MGameMgr.PlayLevel>=i){
SpData.No = MAZE_CHAR_GAME_SELECT_LEVEL_PLATE_LIGHT;
SpData.PosX = 101 + 25*MGameMgr.PlayLevel - 2;
SpData.PosY = 40 + 95 - 10*i + 3;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
}
break;
default:
}
if(++MGameMgr.SelectLevel.AnmWt > MAZE_GAME_SELECT_LEVEL_GAKUDANIN_ANM_WAIT_TIME){
MGameMgr.SelectLevel.AnmWt = 0;
MGameMgr.SelectLevel.AnmIndex ^=1;
}
for(i=0;i<5;i++)
{
MGameMgr.SelectLevel.AnmBase = i*2;
MGameMgr.SelectLevel.AnmNo = GakudaninSpriteTable[MGameMgr.SelectLevel.AnmBase + MGameMgr.SelectLevel.AnmIndex].No;
SpData.No = MGameMgr.SelectLevel.AnmNo;
SpData.PosX = MGameMgr.SelectLevel.PosX + i*40 + GakudaninSpriteTable[MGameMgr.SelectLevel.AnmBase + MGameMgr.SelectLevel.AnmIndex].Ofx;
SpData.PosY = MGameMgr.SelectLevel.PosY + GakudaninSpriteTable[MGameMgr.SelectLevel.AnmBase + MGameMgr.SelectLevel.AnmIndex].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG - 4;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = 16;
SpData.PosX = 100 + 25 * MGameMgr.PlayLevel - 2;
SpData.PosY = 40 + 80 - 10 * MGameMgr.PlayLevel + 3;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG - 3;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
for(i=0;i<5;i++){
SpData.No = LevelNumTable[i];
SpData.PosX = 106 + 25*i -2 ;
SpData.PosY = 27 + 95 - 10*i + 3;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-4;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(j>i) continue;
SpData.No = MAZE_CHAR_GAME_SELECT_LEVEL_PLATE_DARK;
SpData.PosX = 101 + 25*i - 2;
SpData.PosY = 40 + 95 - 10*j + 3;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
SpData.No = MAZE_CHAR_GAME_SELECT_LEVEL_BG_00;
SpData.PosX = 0;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_GAME_SELECT_LEVEL_BG_01;
SpData.PosX = 256;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case TASK_MODE_EXIT:
MetuseijiFlag=OFF;
Task.func = GameControllTask;
Task.priority = TASK_NO_GAME_CONTROLL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_CONTROLL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "GameControllTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int ScriptTask(TASK* ip_task)
{
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
MGameMgr.Script.Flag = 1;
MGameMgr.Script.Index = 0;
MGameMgr.Script.Line = ip_task->user[0];
MGameMgr.Script.Base = ip_task->user[1];
MGameMgr.Script.Num = ip_task->user[2];
ip_task->user[0] = 0;
ip_task->user[1] = GET_DA_STATUS_WAIT_TIME*3;
break;
case TASK_MODE_MAIN:
switch(ip_task->user[0])
{
case 0:
if(MetuseijiFlag==OFF)
{
switch(MGameMgr.Script.Line)
{
case SCRIPT_LINE_1:
MenuMessageSet10(&MazeScript[MGameMgr.Script.Base + MGameMgr.Script.Index]);
break;
case SCRIPT_LINE_2:
MenuMessageSet20(&MazeScript[MGameMgr.Script.Base + MGameMgr.Script.Index]);
break;
case SCRIPT_LINE_3:
MenuMessageSet30(&MazeScript[MGameMgr.Script.Base + MGameMgr.Script.Index]);
break;
default:
}
if(++MGameMgr.Script.Index >= MGameMgr.Script.Num){
ip_task->user[0] = 1;
}
}
break;
case 1:
if(--ip_task->user[1]<=0){
if(dSoundStatus == DslStatStandby){
ip_task->mode = TASK_MODE_EXIT;
}
}
break;
default:
}
break;
case TASK_MODE_EXIT:
MGameMgr.Script.Flag = 0;
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int EventFadeOutTask(TASK* ip_task)
{
TASK* pTask;
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
GameMgr.FadeFlag = FadeOut;
break;
case TASK_MODE_MAIN:
if(GameMgr.FadeFlag==FadeOutOk){
ip_task->mode = TASK_MODE_EXIT;
}
break;
case TASK_MODE_EXIT:
pTask = SearchTask(ip_task->user[0]);
if(pTask!=NULL){
pTask->mode = TASK_MODE_EXIT;
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int PauseMenuFadeOutTask(TASK* ip_task)
{
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
GameMgr.FadeFlag = FadeOut;
break;
case TASK_MODE_MAIN:
if(GameMgr.FadeFlag==FadeOutOk){
ip_task->mode = TASK_MODE_EXIT;
}
break;
case TASK_MODE_EXIT:
MGameMgr.ExitFlag = 1;
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int PauseTask(TASK* ip_task)
{
TASK Task;
int ret;
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
ip_task->user[0] = 0;
GameMgr.WaitFlag = OFF;
break;
case TASK_MODE_MAIN:
if( !ip_task->user[0] )
{
ret = MainMenuCheck10();
if(ret==ON)
{
ip_task->user[0] = 1;
SleepTask(TASK_NO_GAME_GUNGUN);
SleepTask(TASK_NO_GAME_KUMA);
SleepTask(TASK_NO_GAME_QUESTION);
SleepTask(TASK_NO_GAME_GUNGUN_ZANKI);
SleepTask(TASK_NO_GAME_BAR);
SleepTask(TASK_NO_GAME_STAR);
}else{
}
}else
{
ret = MainMenuCheck10();
if(ret==OFF)
{
ip_task->user[0] = 0;
WakeupTask(TASK_NO_GAME_GUNGUN);
WakeupTask(TASK_NO_GAME_KUMA);
WakeupTask(TASK_NO_GAME_QUESTION);
WakeupTask(TASK_NO_GAME_GUNGUN_ZANKI);
WakeupTask(TASK_NO_GAME_BAR);
WakeupTask(TASK_NO_GAME_STAR);
}else
if(ret==MEIN_MENU_OWARI)
{
Task.func = PauseMenuFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "PauseMenuFadeOutTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
ip_task->mode = TASK_MODE_EXIT;
}else{
}
}
break;
case TASK_MODE_EXIT:
GameMgr.WaitFlag = ON;
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int FalseEventBakuTask(TASK *ip_task)
{
TASK Task;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(MazeEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_EVENT_TIM_NUM, &MazeEventTextureImage[MAZE_EVENT_TIM_POS] );
TimImgData = MazeEventTextureImage;
ReleaseSprite();
EntrySprite( MazeEventSpriteData );
MGameMgr.Event.EndFlag = 0;
MGameMgr.Event.Timer = 0;
MGameMgr.Event.GunGunTimer = 0;
MGameMgr.Event.GunGunAnmNo = 0;
MGameMgr.Event.GunGunAnmIndex = 0;
MGameMgr.Event.GunGunAnmWaitTime = 0;
MGameMgr.Event.GunGunPosX = 90;
MGameMgr.Event.GunGunPosY = 60;
MGameMgr.Event.GunGunStopFlag = 0;
MGameMgr.Event.GunGunAngle = 0;
MGameMgr.Event.GunGunWorkX = 0;
MGameMgr.Event.KumaTimer = 0;
MGameMgr.Event.KumaAnmNo = 0;
MGameMgr.Event.KumaAnmIndex = 0;
MGameMgr.Event.KumaAnmWaitTime = 0;
MGameMgr.Event.KumaPosX = 184;
MGameMgr.Event.KumaPosY = 40;
MGameMgr.Event.KumaMoveDirX = 0;
MGameMgr.Event.KumaStopFlag = 0;
MGameMgr.Event.BakuhatsuTimer = 0;
MGameMgr.Event.BakuhatsuAnmIndex = 0;
MGameMgr.Event.BakuhatsuAnmWaitTime = 0;
MGameMgr.Event.BakuhatsuDrawFlag = 1;
MGameMgr.SelectContinue.Val = 0;
MGameMgr.SelectContinue.Type = SELECT_RETRY_H;
MGameMgr.SelectContinue.No = 0;
MGameMgr.SelectContinue.Wt = 0;
MGameMgr.SelectContinue.FadeFlag = 0;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_2;
Task.user[1] = FALSE_DEMO_1_SCRIPT_BASE;
Task.user[2] = FALSE_DEMO_1_SCRIPT_NUM;
CreateTask(&Task);
ssPlaySe(MAZU_SE_03);
#ifdef __DEBUG_MAZE__
GameMgr.FadeFlag = FadeIn;
#endif
break;
case TASK_MODE_MAIN:
if(!MGameMgr.Script.Flag){
if(++MGameMgr.Event.Timer > MAZE_GAME_FALSE_EVENT_BAKU_END_TIME){
MGameMgr.Event.EndFlag=1;
}
}
EventBakuhatsu();
EventGunGun(MAZE_EVENT_FALSE_BAKU);
EventKuma(MAZE_EVENT_FALSE_BAKU);
MazeEventBg();
if(MGameMgr.Event.EndFlag)
{
if(SelectContinue(!MGameMgr.SelectContinue.FadeFlag))
{
if(!MGameMgr.SelectContinue.FadeFlag)
{
if((MGameMgr.SelectContinue.Val==0) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
MGameMgr.SelectContinue.FadeFlag = 1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}else
if( (MGameMgr.SelectContinue.Val==1) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
MGameMgr.SelectContinue.Type =SELECT_END_H;
MGameMgr.SelectContinue.Val = 0;
}else
if((MGameMgr.SelectContinue.Type==SELECT_END_H) && (MGameMgr.SelectContinue.Val==0))
{
MGameMgr.SelectContinue.FadeFlag = 1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}else
if((MGameMgr.SelectContinue.Type==SELECT_END_H) && (MGameMgr.SelectContinue.Val==1))
{
MGameMgr.SelectContinue.Type = SELECT_RETRY_H;
MGameMgr.SelectContinue.Val = 0;
}else
{
}
}
}else{
}
}
break;
case TASK_MODE_EXIT:
ReleaseSprite();
if((MGameMgr.SelectContinue.Val==0) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
Task.func = SelectLevelTask;
Task.priority = TASK_NO_GAME_SELECT_LEVEL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SELECT_LEVEL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "SelectLevelTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
MGameMgr.ExitFlag=1;
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int FalseEventGutsTask(TASK *ip_task)
{
TASK Task;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(MazeEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_EVENT_TIM_NUM, &MazeEventTextureImage[MAZE_EVENT_TIM_POS] );
TimImgData = MazeEventTextureImage;
ReleaseSprite();
EntrySprite( MazeEventSpriteData );
MGameMgr.Event.EndFlag = 0;
MGameMgr.Event.Timer = 0;
MGameMgr.Event.GunGunTimer = 0;
MGameMgr.Event.GunGunAnmNo = 0;
MGameMgr.Event.GunGunAnmIndex = 0;
MGameMgr.Event.GunGunAnmWaitTime = 0;
MGameMgr.Event.GunGunPosX = 186;
MGameMgr.Event.GunGunPosY = 40;
MGameMgr.Event.GunGunStopFlag = 0;
MGameMgr.Event.KumaTimer = 0;
MGameMgr.Event.KumaAnmNo = 0;
MGameMgr.Event.KumaAnmIndex = 0;
MGameMgr.Event.KumaAnmWaitTime = 0;
MGameMgr.Event.KumaPosX = 0;
MGameMgr.Event.KumaPosY = 0;
MGameMgr.Event.KumaMoveDirX = 0;
MGameMgr.Event.KumaStopFlag = 0;
MGameMgr.Event.BakuhatsuTimer = 0;
MGameMgr.Event.BakuhatsuAnmIndex = 0;
MGameMgr.Event.BakuhatsuAnmWaitTime = 0;
MGameMgr.Event.BakuhatsuDrawFlag = 0;
MGameMgr.SelectContinue.Val = 0;
MGameMgr.SelectContinue.Type = SELECT_RETRY_H;
MGameMgr.SelectContinue.No = 0;
MGameMgr.SelectContinue.Wt = 0;
MGameMgr.SelectContinue.FadeFlag = 0;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_2;
Task.user[1] = FALSE_DEMO_2_SCRIPT_BASE;
Task.user[2] = FALSE_DEMO_2_SCRIPT_NUM;
CreateTask(&Task);
#ifdef __DEBUG_MAZE__
GameMgr.FadeFlag = FadeIn;
#endif
break;
case TASK_MODE_MAIN:
if(!MGameMgr.Script.Flag){
if(++MGameMgr.Event.Timer > MAZE_GAME_FALSE_EVENT_GUTS_END_TIME){
MGameMgr.Event.EndFlag=1;
}
}
EventGunGun(MAZE_EVENT_FALSE_GUTS);
EventKuma(MAZE_EVENT_FALSE_GUTS);
MazeEventBg();
if(MGameMgr.Event.EndFlag)
{
if(SelectContinue(!MGameMgr.SelectContinue.FadeFlag))
{
if(!MGameMgr.SelectContinue.FadeFlag)
{
if((MGameMgr.SelectContinue.Val==0) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
MGameMgr.SelectContinue.FadeFlag = 1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}else
if( (MGameMgr.SelectContinue.Val==1) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
MGameMgr.SelectContinue.Type =SELECT_END_H;
MGameMgr.SelectContinue.Val = 0;
}else
if((MGameMgr.SelectContinue.Type==SELECT_END_H) && (MGameMgr.SelectContinue.Val==0))
{
MGameMgr.SelectContinue.FadeFlag = 1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}else
if((MGameMgr.SelectContinue.Type==SELECT_END_H) && (MGameMgr.SelectContinue.Val==1))
{
MGameMgr.SelectContinue.Type = SELECT_RETRY_H;
MGameMgr.SelectContinue.Val = 0;
}else
{
}
}
}else{
}
}
break;
case TASK_MODE_EXIT:
ReleaseSprite();
if((MGameMgr.SelectContinue.Val==0) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
Task.func = SelectLevelTask;
Task.priority = TASK_NO_GAME_SELECT_LEVEL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SELECT_LEVEL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "SelectLevelTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
MGameMgr.ExitFlag=1;
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int ClearEventTask(TASK *ip_task)
{
TASK Task;
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(MazeEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_EVENT_TIM_NUM, &MazeEventTextureImage[MAZE_EVENT_TIM_POS] );
TimImgData = MazeEventTextureImage;
ReleaseSprite();
EntrySprite( MazeEventSpriteData );
MGameMgr.Event.EndFlag = 0;
MGameMgr.Event.Timer = 0;
MGameMgr.Event.GunGunTimer = 0;
MGameMgr.Event.GunGunAnmNo = 0;
MGameMgr.Event.GunGunAnmIndex = 0;
MGameMgr.Event.GunGunAnmWaitTime = 0;
MGameMgr.Event.GunGunPosX = 114;
MGameMgr.Event.GunGunPosY = 87;
MGameMgr.Event.GunGunStopFlag = 0;
MGameMgr.Event.KumaTimer = 0;
MGameMgr.Event.KumaAnmNo = 0;
MGameMgr.Event.KumaAnmIndex = 0;
MGameMgr.Event.KumaAnmWaitTime = 0;
MGameMgr.Event.KumaPosX = 360;
MGameMgr.Event.KumaPosY = 34;
MGameMgr.Event.KumaMoveDirX = -1;
MGameMgr.Event.KumaStopFlag = 0;
MGameMgr.SelectContinue.Val = 0;
MGameMgr.SelectContinue.Type = SELECT_RETRY_H;
MGameMgr.SelectContinue.No = 0;
MGameMgr.SelectContinue.Wt = 0;
MGameMgr.SelectContinue.FadeFlag = 0;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_2;
Task.user[1] = CLEAR_DEMO_SCRIPT_BASE;
Task.user[2] = CLEAR_DEMO_SCRIPT_NUM;
CreateTask(&Task);
#ifdef __DEBUG_MAZE__
GameMgr.FadeFlag = FadeIn;
#endif
break;
case TASK_MODE_MAIN:
if(!MGameMgr.Script.Flag){
if(++MGameMgr.Event.Timer > MAZE_GAME_CLEAR_EVENT_END_TIME){
MGameMgr.Event.EndFlag=1;
}
}
EventGunGun(MAZE_EVENT_CLEAR);
EventKuma(MAZE_EVENT_CLEAR);
MazeEventBg();
if(MGameMgr.Event.EndFlag)
{
if(SelectContinue(!MGameMgr.SelectContinue.FadeFlag))
{
if(!MGameMgr.SelectContinue.FadeFlag)
{
if((MGameMgr.SelectContinue.Val==0) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
MGameMgr.SelectContinue.FadeFlag = 1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}else
if( (MGameMgr.SelectContinue.Val==1) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
MGameMgr.SelectContinue.Type =SELECT_END_H;
MGameMgr.SelectContinue.Val = 0;
}else
if((MGameMgr.SelectContinue.Type==SELECT_END_H) && (MGameMgr.SelectContinue.Val==0))
{
MGameMgr.SelectContinue.FadeFlag = 1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}else
if((MGameMgr.SelectContinue.Type==SELECT_END_H) && (MGameMgr.SelectContinue.Val==1))
{
MGameMgr.SelectContinue.Type = SELECT_RETRY_H;
MGameMgr.SelectContinue.Val = 0;
}else
{
}
}
}else{
}
}
break;
case TASK_MODE_EXIT:
ReleaseSprite();
if((MGameMgr.SelectContinue.Val==0) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
Task.func = SelectLevelTask;
Task.priority = TASK_NO_GAME_SELECT_LEVEL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SELECT_LEVEL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "SelectLevelTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
MGameMgr.ExitFlag=1;
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int AllClearEventTask(TASK *ip_task)
{
TASK Task;
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(MazeEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_EVENT_TIM_NUM, &MazeEventTextureImage[MAZE_EVENT_TIM_POS] );
TimImgData = MazeEventTextureImage;
ReleaseSprite();
EntrySprite( MazeEventSpriteData );
MGameMgr.Event.EndFlag = 0;
MGameMgr.Event.Timer = 0;
MGameMgr.Event.GunGunTimer = 0;
MGameMgr.Event.GunGunAnmNo = 0;
MGameMgr.Event.GunGunAnmIndex = 0;
MGameMgr.Event.GunGunAnmWaitTime = 0;
MGameMgr.Event.GunGunPosX = 114;
MGameMgr.Event.GunGunPosY = 87;
MGameMgr.Event.GunGunStopFlag = 0;
MGameMgr.Event.KumaTimer = 0;
MGameMgr.Event.KumaAnmNo = 0;
MGameMgr.Event.KumaAnmIndex = 0;
MGameMgr.Event.KumaAnmWaitTime = 0;
MGameMgr.Event.KumaPosX = 360;
MGameMgr.Event.KumaPosY = 34;
MGameMgr.Event.KumaMoveDirX = -1;
MGameMgr.Event.KumaStopFlag = 0;
MGameMgr.SelectContinue.Val = 0;
MGameMgr.SelectContinue.Type = SELECT_RETRY_H;
MGameMgr.SelectContinue.No = 0;
MGameMgr.SelectContinue.Wt = 0;
MGameMgr.SelectContinue.FadeFlag = 0;
Task.func = ScriptTask;
Task.priority = TASK_NO_GAME_SCRIPT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SCRIPT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ScriptTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SCRIPT_LINE_2;
Task.user[1] = ALL_CLEAR_DEMO_SCRIPT_BASE;
Task.user[2] = ALL_CLEAR_DEMO_SCRIPT_NUM;
CreateTask(&Task);
#ifdef __DEBUG_MAZE__
GameMgr.FadeFlag = FadeIn;
#endif
break;
case TASK_MODE_MAIN:
if(!MGameMgr.Script.Flag){
if(++MGameMgr.Event.Timer > MAZE_GAME_ALL_CLEAR_EVENT_END_TIME){
MGameMgr.Event.EndFlag=1;
}
}
if(MGameMgr.Event.Timer == 10)
{
dsPlayXa(XA_FILE_MAZU03,8);
}
EventGunGun(MAZE_EVENT_CLEAR);
EventKuma(MAZE_EVENT_CLEAR);
MazeEventBg();
if(MGameMgr.Event.EndFlag)
{
if(SelectContinue(!MGameMgr.SelectContinue.FadeFlag))
{
if(!MGameMgr.SelectContinue.FadeFlag)
{
if((MGameMgr.SelectContinue.Val==0) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
MGameMgr.SelectContinue.FadeFlag = 1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}else
if( (MGameMgr.SelectContinue.Val==1) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
MGameMgr.SelectContinue.Type =SELECT_END_H;
MGameMgr.SelectContinue.Val = 0;
}else
if((MGameMgr.SelectContinue.Type==SELECT_END_H) && (MGameMgr.SelectContinue.Val==0))
{
MGameMgr.SelectContinue.FadeFlag = 1;
Task.func = EventFadeOutTask;
Task.priority = TASK_NO_GAME_FADE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_FADE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "EventFadeOutTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = ip_task->id;
CreateTask(&Task);
}else
if((MGameMgr.SelectContinue.Type==SELECT_END_H) && (MGameMgr.SelectContinue.Val==1))
{
MGameMgr.SelectContinue.Type = SELECT_RETRY_H;
MGameMgr.SelectContinue.Val = 0;
}else
{
}
}
}else{
}
}
break;
case TASK_MODE_EXIT:
ReleaseSprite();
if((MGameMgr.SelectContinue.Val==0) && (MGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
Task.func = SelectLevelTask;
Task.priority = TASK_NO_GAME_SELECT_LEVEL;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SELECT_LEVEL;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "SelectLevelTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
MGameMgr.ExitFlag=1;
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static void InitGameMap(void)
{
memcpy( MGameMgr.Map.Data,
InitMapData,
(MAZE_GAME_SQUARE_W_NUM+2)*(MAZE_GAME_SQUARE_H_NUM+2) );
}
static void CopyGameMapToWorkMap(void)
{
memcpy( MGameMgr.WorkMap.Data,
MGameMgr.Map.Data,
(MAZE_GAME_SQUARE_W_NUM+2)*(MAZE_GAME_SQUARE_H_NUM+2) );
}
static int CheckKeyDir(int *ip_dir)
{
if(NewPad & PADLup){
*ip_dir=DIR_UP;
return TRUE;
}else
if(NewPad & PADLdown){
*ip_dir=DIR_DOWN;
return TRUE;
}
else
if(NewPad & PADLleft){
*ip_dir=DIR_LEFT;
return TRUE;
}
else
if(NewPad & PADLright){
*ip_dir=DIR_RIGHT;
return TRUE;
}else{
*ip_dir=DIR_NOTHING;
return FALSE;
}
}
static int CheckCharacterMaze(int i_x,int i_y,int i_dir)
{
int ofx,ofy;
switch(i_dir)
{
case DIR_UP:
ofx=0;
ofy=-1;
break;
case DIR_DOWN:
ofx=0;
ofy=1;
break;
case DIR_LEFT:
ofx=-1;
ofy=0;
break;
case DIR_RIGHT:
ofx=1;
ofy=0;
break;
default:
ofx=0;
ofy=0;
break;
}
if( CheckKumaPos(i_x + ofx ,i_y + ofy) )
{
return MAZE_MAP_CHAR_ENEMY;
}
switch( MGameMgr.Map.Data[i_y + ofy][i_x + ofx] )
{
case MAZE_MAP_CHAR_WALL:
return MAZE_MAP_CHAR_WALL;
break;
case MAZE_MAP_CHAR_IWA_00:
return MAZE_MAP_CHAR_IWA_00;
break;
case MAZE_MAP_CHAR_IWA_01:
return MAZE_MAP_CHAR_IWA_01;
break;
case MAZE_MAP_CHAR_NONE:
return MAZE_MAP_CHAR_NONE;
break;
case MAZE_MAP_CHAR_NUM_00:
return MAZE_MAP_CHAR_NUM_00;
case MAZE_MAP_CHAR_NUM_01:
return MAZE_MAP_CHAR_NUM_01;
break;
case MAZE_MAP_CHAR_NUM_02:
return MAZE_MAP_CHAR_NUM_02;
break;
case MAZE_MAP_CHAR_NUM_03:
return MAZE_MAP_CHAR_NUM_03;
break;
case MAZE_MAP_CHAR_NUM_04:
return MAZE_MAP_CHAR_NUM_04;
break;
case MAZE_MAP_CHAR_NUM_05:
return MAZE_MAP_CHAR_NUM_05;
break;
case MAZE_MAP_CHAR_NUM_06:
return MAZE_MAP_CHAR_NUM_06;
break;
case MAZE_MAP_CHAR_NUM_07:
return MAZE_MAP_CHAR_NUM_07;
break;
case MAZE_MAP_CHAR_NUM_08:
return MAZE_MAP_CHAR_NUM_08;
break;
case MAZE_MAP_CHAR_NUM_09:
return MAZE_MAP_CHAR_NUM_09;
break;
case MAZE_MAP_CHAR_NUM_10:
return MAZE_MAP_CHAR_NUM_10;
break;
case MAZE_MAP_CHAR_STAR:
return MAZE_MAP_CHAR_STAR;
break;
case MAZE_MAP_CHAR_BAR_00:
return MAZE_MAP_CHAR_BAR_00;
break;
case MAZE_MAP_CHAR_BAR_01:
return MAZE_MAP_CHAR_BAR_01;
break;
case MAZE_MAP_CHAR_ENEMY:
return MAZE_MAP_CHAR_ENEMY;
break;
default:
return MAZE_MAP_CHAR_WALL;
break;
}
}
static int CheckAnswer(int i_dir)
{
int ofx,ofy;
switch(i_dir)
{
case DIR_UP:
ofx=0;
ofy=-1;
break;
case DIR_DOWN:
ofx=0;
ofy=1;
break;
case DIR_LEFT:
ofx=-1;
ofy=0;
break;
case DIR_RIGHT:
ofx=1;
ofy=0;
break;
default:
ofx=0;
ofy=0;
break;
}
if( MGameMgr.Map.Data[MGameMgr.GunGun.Py+ofy][MGameMgr.GunGun.Px+ofx]==MGameMgr.Answer[MGameMgr.QuestionIndex] )
{
return TRUE;
}
return FALSE;
}
static void ClearAnswer(int i_x,int i_y)
{
MGameMgr.Map.Data[i_y][i_x] = MAZE_MAP_CHAR_NONE;
}
static void SetAnswer(int i_val, int i_x,int i_y)
{
if( MGameMgr.Map.Data[i_y][i_x]==MAZE_MAP_CHAR_NONE )
{
MGameMgr.Map.Data[i_y][i_x] = i_val;
}
}
static void SetBar(int i_val, int i_x,int i_y)
{
if( MGameMgr.Map.Data[i_y][i_x]==MAZE_MAP_CHAR_NONE )
{
MGameMgr.Map.Data[i_y][i_x] = i_val;
}
}
static void SetStar(int i_val, int i_x,int i_y)
{
if( MGameMgr.Map.Data[i_y][i_x]==MAZE_MAP_CHAR_NONE )
{
MGameMgr.Map.Data[i_y][i_x] = i_val;
}
}
static void ClearBar(int i_x,int i_y)
{
if( (MGameMgr.Map.Data[i_y][i_x]==MAZE_MAP_CHAR_BAR_00) || (MGameMgr.Map.Data[i_y][i_x]==MAZE_MAP_CHAR_BAR_01) )
{
MGameMgr.Map.Data[i_y][i_x]=MAZE_MAP_CHAR_NONE;
}
}
static void ClearStar(int i_x,int i_y)
{
if( (MGameMgr.Map.Data[i_y][i_x]==MAZE_MAP_CHAR_STAR) )
{
MGameMgr.Map.Data[i_y][i_x]=MAZE_MAP_CHAR_NONE;
}
}
static int CheckCought(int i_x1,int i_y1,int i_x2,int i_y2)
{
if( (i_x1==i_x2) && (i_y1==i_y2) ){
return TRUE;
}else{
return FALSE;
}
}
static int CheckGunGunPos(int i_x,int i_y)
{
if( MGameMgr.GunGun.Px==i_x ){
if( MGameMgr.GunGun.Py==i_y ){
return TRUE;
}
}
return FALSE;
}
static int CheckGunGunPosArea(int i_x,int i_y)
{
static POS2D AreaPosTable[]=
{
{ -1, -1 },
{ 0, -1 },
{ 1, -1 },
{ -1, 0 },
{ 1, 0 },
{ -1, 1 },
{ 0, 1 },
{ 1, 1 },
};
int i;
for(i=0;i<8;i++){
if( MGameMgr.GunGun.Px == (i_x+AreaPosTable[i].x) ){
if( MGameMgr.GunGun.Py == (i_x+AreaPosTable[i].y) ){
return TRUE;
}
}
}
return FALSE;
}
static int CheckKumaPos(int i_x,int i_y)
{
if( MGameMgr.Kuma.Px==i_x ){
if( MGameMgr.Kuma.Py==i_y ){
return TRUE;
}
}
return FALSE;
}
static int CheckStarPos(int i_x,int i_y)
{
if( MGameMgr.Map.Data[i_y][i_x]==MAZE_MAP_CHAR_STAR )
{
return TRUE;
}
return FALSE;
}
static int GetKumaRandomMoveDirect(int* ip_dir)
{
int cnt;
int chkmove[4];
int sel[4];
cnt = 0;
chkmove[DIR_UP] = chkmove[DIR_DOWN] = chkmove[DIR_LEFT] = chkmove[DIR_RIGHT] = 0;
sel[0]=sel[1]=sel[2]=sel[3]=0;
if( CheckCharacterMaze(MGameMgr.Kuma.Px, MGameMgr.Kuma.Py, DIR_UP)==MAZE_MAP_CHAR_NONE ){
chkmove[DIR_UP] = 1;
}
if( CheckCharacterMaze(MGameMgr.Kuma.Px, MGameMgr.Kuma.Py, DIR_DOWN)==MAZE_MAP_CHAR_NONE ){
chkmove[DIR_DOWN] = 1;
}
if( CheckCharacterMaze(MGameMgr.Kuma.Px, MGameMgr.Kuma.Py, DIR_LEFT)==MAZE_MAP_CHAR_NONE ){
chkmove[DIR_LEFT] = 1;
}
if( CheckCharacterMaze(MGameMgr.Kuma.Px, MGameMgr.Kuma.Py, DIR_RIGHT)==MAZE_MAP_CHAR_NONE ){
chkmove[DIR_RIGHT] = 1;
}
if(chkmove[DIR_UP]){
sel[cnt]=DIR_UP;
cnt++;
rand();
}
if(chkmove[DIR_DOWN]){
sel[cnt]=DIR_DOWN;
cnt++;
rand();
}
if(chkmove[DIR_LEFT]){
sel[cnt]=DIR_LEFT;
cnt++;
rand();
}
if(chkmove[DIR_RIGHT]){
sel[cnt]=DIR_RIGHT;
cnt++;
rand();
}
if(cnt==0)
{
*ip_dir = DIR_NOTHING;
return FALSE;
}else
{
*ip_dir = sel[rand()%cnt];
return TRUE;
}
}
static int CreateQuestion2(int i_type,int i_num, MAZE_GAME_QUESTION_NUM_DATA* ip_qtnum)
{
int randindex,numindex;
if(i_num>11) return FALSE;
if(i_num<0) return FALSE;
switch(i_type)
{
case MAZE_GAME_QUESTION_TYPE_ADDITION:
switch(MGameMgr.PlayLevel)
{
case 0:
numindex = i_num - 1;
randindex = rand() % MazeQuestionGetTable_Level_1[numindex].Num;
ip_qtnum->num1 = MazeQuestionGetTable_Level_1[numindex].Data[randindex].Val[0];
ip_qtnum->num2 = MazeQuestionGetTable_Level_1[numindex].Data[randindex].Val[1];
ip_qtnum->num3 = i_num;
break;
case 1:
numindex = i_num - 7;
randindex = rand() % MazeQuestionGetTable_Level_2[numindex].Num;
ip_qtnum->num1 = MazeQuestionGetTable_Level_2[numindex].Data[randindex].Val[0];
ip_qtnum->num2 = MazeQuestionGetTable_Level_2[numindex].Data[randindex].Val[1];
ip_qtnum->num3 = i_num;
break;
default:
}
break;
case MAZE_GAME_QUESTION_TYPE_SUBTRACTION:
switch(MGameMgr.PlayLevel)
{
case 2:
numindex = i_num;
randindex = rand() % MazeQuestionGetTable_Level_3[numindex].Num;
ip_qtnum->num1 = MazeQuestionGetTable_Level_3[numindex].Data[randindex].Val[0];
ip_qtnum->num2 = MazeQuestionGetTable_Level_3[numindex].Data[randindex].Val[1];
ip_qtnum->num3 = i_num;
break;
case 3:
numindex = i_num - 1;
randindex = rand() % MazeQuestionGetTable_Level_4[numindex].Num;
ip_qtnum->num1 = MazeQuestionGetTable_Level_4[numindex].Data[randindex].Val[0];
ip_qtnum->num2 = MazeQuestionGetTable_Level_4[numindex].Data[randindex].Val[1];
ip_qtnum->num3 = i_num;
break;
case 4:
numindex = i_num;
randindex = rand() % MazeQuestionGetTable_Level_5[numindex].Num;
ip_qtnum->num1 = MazeQuestionGetTable_Level_5[numindex].Data[randindex].Val[0];
ip_qtnum->num2 = MazeQuestionGetTable_Level_5[numindex].Data[randindex].Val[1];
ip_qtnum->num3 = i_num;
break;
default:
}
break;
default:
return FALSE;
}
return TRUE;
}
static void DrawQuestion(int i_index,int i_x,int i_y,int i_z,int i_flash,int i_ansflag )
{
static int QNumTable[]={
MAZE_CHAR_GAME_QUESTION_NUM_00,
MAZE_CHAR_GAME_QUESTION_NUM_01,
MAZE_CHAR_GAME_QUESTION_NUM_02,
MAZE_CHAR_GAME_QUESTION_NUM_03,
MAZE_CHAR_GAME_QUESTION_NUM_04,
MAZE_CHAR_GAME_QUESTION_NUM_05,
MAZE_CHAR_GAME_QUESTION_NUM_06,
MAZE_CHAR_GAME_QUESTION_NUM_07,
MAZE_CHAR_GAME_QUESTION_NUM_08,
MAZE_CHAR_GAME_QUESTION_NUM_09,
MAZE_CHAR_GAME_QUESTION_NUM_10,
};
static int QStrTable1[]={
MAZE_CHAR_GAME_QUESTION_STR_TO,
MAZE_CHAR_GAME_QUESTION_STR_HA,
};
static int QStrTable2[]={
MAZE_CHAR_GAME_QUESTION_STR_HA,
MAZE_CHAR_GAME_QUESTION_STR_TO,
};
SPRITE_DATA SpData;
if(i_index < 0 ){
i_index = 0;
}else if( i_index > QuestionNumTable[MGameMgr.PlayLevel]-1 ){
i_index = QuestionNumTable[MGameMgr.PlayLevel]-1;
}else{
}
if(i_flash){
SpData.No = QNumTable[ MGameMgr.Question.Data[i_index].QuestionNum.num1 ];
SpData.PosX = i_x + QUESTION_NUM1_POS_X;
SpData.PosY = i_y + QUESTION_NUM1_POS_Y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = QStrTable1[QuestionTypeTable[MGameMgr.PlayLevel]];
SpData.PosX = i_x + QUESTION_STR1_POS_X;
SpData.PosY = i_y + QUESTION_STR1_POS_Y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
if(i_flash){
SpData.No = QNumTable[MGameMgr.Question.Data[i_index].QuestionNum.num2];
SpData.PosX = i_x + QUESTION_NUM2_POS_X;
SpData.PosY = i_y + QUESTION_NUM2_POS_Y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = QStrTable2[QuestionTypeTable[MGameMgr.PlayLevel]];
SpData.PosX = i_x + QUESTION_STR2_POS_X;
SpData.PosY = i_y + QUESTION_STR2_POS_Y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = QNumTable[MGameMgr.Question.Data[i_index].QuestionNum.num3];
if(i_flash){
if(!i_ansflag){
SpData.No = MAZE_CHAR_GAME_QUESTION_MARK_H;
}
SpData.PosX = i_x + QUESTION_NUM3_POS_X;
SpData.PosY = i_y + QUESTION_NUM3_POS_Y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
static void EventGunGun(int i_etype)
{
static MAZE_SPRITE_DATA ClearGunGunAnmTable[]=
{
{ MAZE_CHAR_EVENT_GUNGUN_BANZAI_ARM_YOKO_LEFT, 89, 141 },
{ MAZE_CHAR_EVENT_GUNGUN_BANZAI_ARM_UE_LEFT, 94, 119 },
{ MAZE_CHAR_EVENT_GUNGUN_BANZAI_ARM_YOKO_RIGHT, 195, 138 },
{ MAZE_CHAR_EVENT_GUNGUN_BANZAI_ARM_UE_RIGHT, 188, 117 },
{ MAZE_CHAR_EVENT_GUNGUN_BANZAI_MOUTH, 138, 127 },
{ -1, 0, 0 },
};
static MAZE_SPRITE_DATA FalseBakuGunGunAnmTable[]=
{
{ MAZE_CHAR_EVENT_GUNGUN_BOROBORO_00, -12, 0 },
{ MAZE_CHAR_EVENT_GUNGUN_BOROBORO_01, 0, -14 },
};
static MAZE_SPRITE_DATA FalseGutsGunGunAnmTable[]=
{
{ MAZE_CHAR_EVENT_GUNGUN_ZITANDA_00, 0, 0 },
{ MAZE_CHAR_EVENT_GUNGUN_ZITANDA_01, 0, 0 },
};
SPRITE_DATA SpData;
double dwx=0;
switch(i_etype)
{
case MAZE_EVENT_CLEAR:
if(++MGameMgr.Event.GunGunTimer>=MAZE_GAME_CLEAR_EVENT_ANM_STOP_TIME)
{
MGameMgr.Event.GunGunTimer=MAZE_GAME_CLEAR_EVENT_ANM_STOP_TIME;
}else{
if(++MGameMgr.Event.GunGunAnmWaitTime > MAZE_GAME_EVENT_ANM_WAIT_TIME)
{
MGameMgr.Event.GunGunAnmWaitTime = 0;
MGameMgr.Event.GunGunAnmIndex^=1;
}
}
SpData.No = ClearGunGunAnmTable[0+MGameMgr.Event.GunGunAnmIndex].No;
SpData.PosX = ClearGunGunAnmTable[0+MGameMgr.Event.GunGunAnmIndex].Ofx;
SpData.PosY = ClearGunGunAnmTable[0+MGameMgr.Event.GunGunAnmIndex].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = ClearGunGunAnmTable[2+MGameMgr.Event.GunGunAnmIndex].No;
SpData.PosX = ClearGunGunAnmTable[2+MGameMgr.Event.GunGunAnmIndex].Ofx;
SpData.PosY = ClearGunGunAnmTable[2+MGameMgr.Event.GunGunAnmIndex].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
if(MGameMgr.Event.GunGunAnmIndex==0){
SpData.No = ClearGunGunAnmTable[4+MGameMgr.Event.GunGunAnmIndex].No;
SpData.PosX = ClearGunGunAnmTable[4+MGameMgr.Event.GunGunAnmIndex].Ofx;
SpData.PosY = ClearGunGunAnmTable[4+MGameMgr.Event.GunGunAnmIndex].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = MAZE_CHAR_EVENT_GUNGUN_BANZAI_BODY;
SpData.PosX = MGameMgr.Event.GunGunPosX;
SpData.PosY = MGameMgr.Event.GunGunPosY;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case MAZE_EVENT_FALSE_BAKU:
if(++MGameMgr.Event.GunGunTimer>MAZE_GAME_EVENT_BAKUHATSAU_WAIT_TIME)
{
MGameMgr.Event.GunGunAnmIndex = 1;
MGameMgr.Event.GunGunPosY += 1;
if(MGameMgr.Event.GunGunPosY>340){
MGameMgr.Event.GunGunPosY=340;
}
MGameMgr.Event.GunGunAngle += 4;
if(MGameMgr.Event.GunGunAngle >= 360){
MGameMgr.Event.GunGunAngle = 0;
}
MGameMgr.Event.GunGunWorkX = (double)(MGameMgr.Event.GunGunPosX + 5 * sin( DEG2RAD(MGameMgr.Event.GunGunAngle) ));
MGameMgr.Event.GunGunPosX = (int)MGameMgr.Event.GunGunWorkX;
}
SpData.No = FalseBakuGunGunAnmTable[MGameMgr.Event.GunGunAnmIndex].No;
SpData.PosX = MGameMgr.Event.GunGunPosX + FalseBakuGunGunAnmTable[MGameMgr.Event.GunGunAnmIndex].Ofx;
SpData.PosY = MGameMgr.Event.GunGunPosY + FalseBakuGunGunAnmTable[MGameMgr.Event.GunGunAnmIndex].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case MAZE_EVENT_FALSE_GUTS:
if(++MGameMgr.Event.GunGunAnmWaitTime > MAZE_GAME_EVENT_ANM_WAIT_TIME)
{
MGameMgr.Event.GunGunAnmWaitTime = 0;
MGameMgr.Event.GunGunAnmIndex^=1;
}
SpData.No = FalseGutsGunGunAnmTable[MGameMgr.Event.GunGunAnmIndex].No;
SpData.PosX = MGameMgr.Event.GunGunPosX + FalseGutsGunGunAnmTable[MGameMgr.Event.GunGunAnmIndex].Ofx;
SpData.PosY = MGameMgr.Event.GunGunPosY + FalseGutsGunGunAnmTable[MGameMgr.Event.GunGunAnmIndex].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_SHADOW_SMALL;
SpData.PosX = MGameMgr.Event.GunGunPosX + 1;
SpData.PosY = MGameMgr.Event.GunGunPosY + 48;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-6;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
default:
}
}
static void EventKuma(int i_etype)
{
static MAZE_SPRITE_DATA ClearKumaAnmTableble[]=
{
{ MAZE_CHAR_EVENT_KUMA_PARTS_13, 0, 0 },
{ MAZE_CHAR_EVENT_KUMA_PARTS_14, 0, 0 },
{ MAZE_CHAR_EVENT_KUMA_PARTS_15, 0, 0 },
{ MAZE_CHAR_EVENT_KUMA_PARTS_16, 0, 0 },
};
static MAZE_SPRITE_DATA BakuhatsuKumaAnmTable[]=
{
{ MAZE_CHAR_EVENT_KUMA_BANZAI_00, 0, 0 },
{ MAZE_CHAR_EVENT_KUMA_BANZAI_01, 0, 0 },
{ MAZE_CHAR_EVENT_KUMA_BANZAI_02, 0, 0 },
};
static MAZE_SPRITE_DATA GutsKumaAnmTable[]=
{
{ MAZE_CHAR_EVENT_KUMA_GUTS_00_ARM_LEFT, 95, 118 },
{ MAZE_CHAR_EVENT_KUMA_GUTS_01_ARM_LEFT, 94, 103 },
{ MAZE_CHAR_EVENT_KUMA_GUTS_00_ARM_RIGHT, 196, 118 },
{ MAZE_CHAR_EVENT_KUMA_GUTS_01_ARM_RIGHT, 193, 103 },
};
SPRITE_DATA SpData;
switch(i_etype)
{
case MAZE_EVENT_CLEAR:
if(++MGameMgr.Event.KumaAnmWaitTime > MAZE_GAME_EVENT_ANM_WAIT_TIME/4){
MGameMgr.Event.KumaAnmWaitTime = 0;
MGameMgr.Event.KumaAnmIndex ^= 1;
MGameMgr.Event.KumaAnmNo = ClearKumaAnmTableble[MGameMgr.Event.KumaMoveDirX+1+MGameMgr.Event.KumaAnmIndex].No;
}
MGameMgr.Event.KumaPosX += 2*MGameMgr.Event.KumaMoveDirX;
MGameMgr.Event.KumaMoveDirX;
if( (MGameMgr.Event.KumaPosX < -30) || (MGameMgr.Event.KumaPosX > 360) ){
MGameMgr.Event.KumaMoveDirX *= -1;
}
SpData.No = ClearKumaAnmTableble[MGameMgr.Event.KumaMoveDirX+1+MGameMgr.Event.KumaAnmIndex].No;
SpData.PosX = MGameMgr.Event.KumaPosX;
SpData.PosY = MGameMgr.Event.KumaPosY;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-3;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case MAZE_EVENT_FALSE_BAKU:
if(++MGameMgr.Event.KumaTimer>=MAZE_GAME_EVENT_BAKUHATSAU_KUMA_ANM_STOP_TIME)
{
MGameMgr.Event.KumaTimer = MAZE_GAME_EVENT_BAKUHATSAU_KUMA_ANM_STOP_TIME;
}else{
if(++MGameMgr.Event.KumaAnmWaitTime > MAZE_GAME_EVENT_ANM_WAIT_TIME){
MGameMgr.Event.KumaAnmWaitTime = 0;
MGameMgr.Event.KumaAnmIndex ^= 1;
MGameMgr.Event.KumaAnmNo = BakuhatsuKumaAnmTable[MGameMgr.Event.KumaAnmIndex+1].No;
}
}
SpData.No = BakuhatsuKumaAnmTable[MGameMgr.Event.KumaAnmIndex].No;
SpData.PosX = MGameMgr.Event.KumaPosX;
SpData.PosY = MGameMgr.Event.KumaPosY;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-7;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_SHADOW_SMALL;
SpData.PosX = MGameMgr.Event.KumaPosX + 4;
SpData.PosY = MGameMgr.Event.KumaPosY + 45;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-6;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case MAZE_EVENT_FALSE_GUTS:
if(++MGameMgr.Event.KumaTimer >= MAZE_GAME_EVENT_GUTS_KUMA_ANM_STOP_TIME)
{
MGameMgr.Event.KumaTimer = MAZE_GAME_EVENT_GUTS_KUMA_ANM_STOP_TIME;
}else
{
if(++MGameMgr.Event.KumaAnmWaitTime > MAZE_GAME_EVENT_ANM_WAIT_TIME){
MGameMgr.Event.KumaAnmWaitTime = 0;
MGameMgr.Event.KumaAnmIndex ^= 1;
MGameMgr.Event.KumaAnmNo = GutsKumaAnmTable[MGameMgr.Event.KumaAnmIndex].No;
}
}
if(MGameMgr.Event.KumaAnmIndex){
SpData.No = MAZE_CHAR_EVENT_KUMA_ENTRY_MOUSE;
SpData.PosX = 142;
SpData.PosY = 130;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-8;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = MAZE_CHAR_EVENT_KUMA_HEAD_00;
SpData.PosX = 121;
SpData.PosY = 79;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-7;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = GutsKumaAnmTable[MGameMgr.Event.KumaAnmIndex + 0].No;
SpData.PosX = GutsKumaAnmTable[MGameMgr.Event.KumaAnmIndex + 0].Ofx;
SpData.PosY = GutsKumaAnmTable[MGameMgr.Event.KumaAnmIndex + 0].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-7;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = GutsKumaAnmTable[MGameMgr.Event.KumaAnmIndex + 2].No;
SpData.PosX = GutsKumaAnmTable[MGameMgr.Event.KumaAnmIndex + 2].Ofx;
SpData.PosY = GutsKumaAnmTable[MGameMgr.Event.KumaAnmIndex + 2].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-7;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_KUMA_BODY;
SpData.PosX = 113;
SpData.PosY = 140;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-7;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
default:
}
}
static void MazeEventBg(void)
{
SPRITE_DATA SpData;
SpData.No = MAZE_CHAR_EVENT_BG_02;
SpData.PosX = 0;
SpData.PosY = 47;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-5;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_BG_03;
SpData.PosX = 256;
SpData.PosY = 47;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-5;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_BG_00;
SpData.PosX = 0;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_BG_01;
SpData.PosX = 256;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
static void EventBakuhatsu(void)
{
static MAZE_SPRITE_DATA BakuhatsuAnmTable[]=
{
{ MAZE_CHAR_EVENT_BAKU_SMALL, 108, 78 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
{ MAZE_CHAR_EVENT_BAKU_BIG_00, 6, 21 },
};
SPRITE_DATA SpData;
if(MGameMgr.Event.BakuhatsuDrawFlag==1)
{
if(++MGameMgr.Event.BakuhatsuAnmWaitTime > MAZE_GAME_EVENT_BAKUHATSAU_ANM_WAIT_TIME)
{
MGameMgr.Event.BakuhatsuAnmWaitTime=0;
MGameMgr.Event.BakuhatsuAnmIndex++;
if(MGameMgr.Event.BakuhatsuAnmIndex>4){
MGameMgr.Event.BakuhatsuAnmIndex=4;
MGameMgr.Event.BakuhatsuDrawFlag=0;
}
}
SpData.No = BakuhatsuAnmTable[MGameMgr.Event.BakuhatsuAnmIndex].No;
SpData.PosX = BakuhatsuAnmTable[MGameMgr.Event.BakuhatsuAnmIndex].Ofx;
SpData.PosY = BakuhatsuAnmTable[MGameMgr.Event.BakuhatsuAnmIndex].Ofy;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-12;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
if( (MGameMgr.Event.BakuhatsuAnmIndex>=1) && (MGameMgr.Event.BakuhatsuAnmIndex<=14) )
{
SpData.No = MAZE_CHAR_EVENT_BAKU_BIG_01;
SpData.PosX = 262;
SpData.PosY = 21;
SpData.PosZ = PRIORITY_MAZE_EVENT_BG-12;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
}
static int SelectContinue(int i_flag)
{
static int BupeAnmTable[] ={
MAZE_CHAR_EVENT_SELECT_CONTINUE_BUPE_00,
MAZE_CHAR_EVENT_SELECT_CONTINUE_BUPE_01,
};
static int MaruBatuTable[]={
MAZE_CHAR_EVENT_SELECT_CONTINUE_YES_LIGHT, MAZE_CHAR_EVENT_SELECT_CONTINUE_NO_DARK,
MAZE_CHAR_EVENT_SELECT_CONTINUE_YES_DARK, MAZE_CHAR_EVENT_SELECT_CONTINUE_NO_LIGHT,
};
SPRITE_DATA SpData;
int o_ret;
if(i_flag){
o_ret=FALSE;
if(JstPad & PADRright){
o_ret=TRUE;
ssPlaySe(BUTONSE_MARU);
}
if(JstPad & PADLright || JstPad & PADLleft){
MGameMgr.SelectContinue.Val^=1;
ssPlaySe(BUTONSE_LEVER);
}
}
SpData.No = MaruBatuTable[MGameMgr.SelectContinue.Val*2];
SpData.PosX = 68+72;
SpData.PosY = 73+57;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MaruBatuTable[MGameMgr.SelectContinue.Val*2+1];
SpData.PosX = 68+126;
SpData.PosY = 73+57;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
switch(MGameMgr.SelectContinue.Type)
{
case SELECT_RETRY_H:
SpData.No = MAZE_CHAR_EVENT_SELECT_CONTINUE_RETRY_H;
SpData.PosX = 68+20;
SpData.PosY = 73+20;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case SELECT_END_H:
SpData.No = MAZE_CHAR_EVENT_SELECT_CONTINUE_END_H;
SpData.PosX = 68+20;
SpData.PosY = 73+20;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case SELECT_CONTINUE_H:
SpData.No = MAZE_CHAR_EVENT_SELECT_CONTINUE_CONTINUE_H;
SpData.PosX = 68+20;
SpData.PosY = 73+20;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
default:
}
if(++MGameMgr.SelectContinue.Wt>SELECT_LEVEL_PUPE_ANM_TIME){
MGameMgr.SelectContinue.No^=1;
MGameMgr.SelectContinue.Wt=0;
}
SpData.No = BupeAnmTable[MGameMgr.SelectContinue.No];
SpData.PosX = 68+12;
SpData.PosY = 73+34;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU-10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_SELECT_CONTINUE_PLATE;
SpData.PosX = 68;
SpData.PosY = 73;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_SELECT_CONTINUE_ERABU;
SpData.PosX = (320-130)/2;
SpData.PosY = 206;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MAZE_CHAR_EVENT_SELECT_CONTINUE_KETEI;
SpData.PosX = (320-130)/2+78;
SpData.PosY = 206;
SpData.PosZ = PRIORITY_MAZE_EVENT_MENU-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
return o_ret;
}
static int GetDirectKumaToGunGun(void)
{
int dx,dy;
dx = MGameMgr.GunGun.Px - MGameMgr.Kuma.Px;
dy = MGameMgr.GunGun.Py - MGameMgr.Kuma.Py;
if(dx>0)
{
return DIR_RIGHT;
}else
if(dx<0)
{
return DIR_LEFT;
}else
{
if(dy>=0)
{
return DIR_DOWN;
}else
{
return DIR_UP;
}
}
}
static int SearchGunGun(int* ip_dir)
{
#ifndef __DEBUG_MAZE__
int wSx,wSy;
#endif
int dir;
if(MGameMgr.Kuma.LastThinkMode==THINK_MODE_SEARCH)
{
wSx = MGameMgr.VisitRoad[MGameMgr.VisitIndex].Px - MGameMgr.Kuma.Px;
wSy = MGameMgr.VisitRoad[MGameMgr.VisitIndex].Py - MGameMgr.Kuma.Py;
--MGameMgr.VisitIndex;
if(MGameMgr.VisitIndex<=1)
{
MGameMgr.VisitSuccess = 0;
MGameMgr.VisitIndex = 0;
memset( MGameMgr.WorkMap.Data, 0, (MAZE_GAME_SQUARE_H_NUM+2)*(MAZE_GAME_SQUARE_W_NUM+2));
CopyGameMapToWorkMap();
dir=GetDirectKumaToGunGun();
switch(dir){
case DIR_UP:
VisitUp(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py);
break;
case DIR_DOWN:
VisitDown(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py);
break;
case DIR_LEFT:
VisitLeft(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py);
break;
case DIR_RIGHT:
VisitRight(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py);
break;
default:
}
if(MGameMgr.VisitSuccess)
{
MGameMgr.VisitIndex-=2;
wSx = MGameMgr.VisitRoad[MGameMgr.VisitIndex].Px - MGameMgr.Kuma.Px;
wSy = MGameMgr.VisitRoad[MGameMgr.VisitIndex].Py - MGameMgr.Kuma.Py;
if(wSx>0){
*ip_dir=DIR_RIGHT;
}else
if(wSx<0){
*ip_dir=DIR_LEFT;
}else{
if(wSy>0){
*ip_dir=DIR_DOWN;
}else
if(wSy<0){
*ip_dir=DIR_UP;
}else{
*ip_dir=DIR_NOTHING;
return FALSE;
}
}
return TRUE;
}else
{
*ip_dir=DIR_NOTHING;
return FALSE;
}
}else{
if(wSx>0){
*ip_dir=DIR_RIGHT;
}else
if(wSx<0){
*ip_dir=DIR_LEFT;
}else{
if(wSy>0){
*ip_dir=DIR_DOWN;
}else
if(wSy<0){
*ip_dir=DIR_UP;
}else{
*ip_dir=DIR_NOTHING;
return FALSE;
}
}
}
}else
{
MGameMgr.VisitSuccess = 0;
MGameMgr.VisitIndex = 0;
memset( MGameMgr.WorkMap.Data, 0, (MAZE_GAME_SQUARE_H_NUM+2)*(MAZE_GAME_SQUARE_W_NUM+2));
CopyGameMapToWorkMap();
dir=GetDirectKumaToGunGun();
switch(dir){
case DIR_UP:
VisitUp(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py);
break;
case DIR_DOWN:
VisitDown(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py);
break;
case DIR_LEFT:
VisitLeft(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py);
break;
case DIR_RIGHT:
VisitRight(MGameMgr.Kuma.Px,MGameMgr.Kuma.Py);
break;
default:
}
if(MGameMgr.VisitSuccess)
{
MGameMgr.VisitIndex-=2;
wSx = MGameMgr.VisitRoad[MGameMgr.VisitIndex].Px - MGameMgr.Kuma.Px;
wSy = MGameMgr.VisitRoad[MGameMgr.VisitIndex].Py - MGameMgr.Kuma.Py;
if(wSx>0){
*ip_dir=DIR_RIGHT;
}else
if(wSx<0){
*ip_dir=DIR_LEFT;
}else{
if(wSy>0){
*ip_dir=DIR_DOWN;
}else
if(wSy<0){
*ip_dir=DIR_UP;
}else{
*ip_dir=DIR_NOTHING;
return FALSE;
}
}
return TRUE;
}else
{
*ip_dir=DIR_NOTHING;
return FALSE;
}
}
}
static void VisitUp(int x,int y)
{
MGameMgr.WorkMap.Data[y][x] = 0;
if( (x==MGameMgr.GunGun.Px) && (y==MGameMgr.GunGun.Py) )
{
MGameMgr.VisitSuccess = 1;
}
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y-1][x ]==MAZE_MAP_CHAR_NONE)) VisitUp(x, y-1 );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y ][x+1]==MAZE_MAP_CHAR_NONE)) VisitUp(x+1, y );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y+1][x ]==MAZE_MAP_CHAR_NONE)) VisitUp(x, y+1 );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y ][x-1]==MAZE_MAP_CHAR_NONE)) VisitUp(x-1, y );
if(MGameMgr.VisitSuccess)
{
MGameMgr.VisitRoad[MGameMgr.VisitIndex].Px = x;
MGameMgr.VisitRoad[MGameMgr.VisitIndex].Py = y;
MGameMgr.VisitIndex++;
}
}
static void VisitDown(int x,int y)
{
MGameMgr.WorkMap.Data[y][x] = 0;
if( (x==MGameMgr.GunGun.Px) && (y==MGameMgr.GunGun.Py) )
{
MGameMgr.VisitSuccess = 1;
}
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y+1][x ]==MAZE_MAP_CHAR_NONE)) VisitDown(x, y+1 );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y ][x-1]==MAZE_MAP_CHAR_NONE)) VisitDown(x-1, y );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y-1][x ]==MAZE_MAP_CHAR_NONE)) VisitDown(x, y-1 );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y ][x+1]==MAZE_MAP_CHAR_NONE)) VisitDown(x+1, y );
if(MGameMgr.VisitSuccess)
{
MGameMgr.VisitRoad[MGameMgr.VisitIndex].Px = x;
MGameMgr.VisitRoad[MGameMgr.VisitIndex].Py = y;
MGameMgr.VisitIndex++;
}
}
static void VisitLeft(int x,int y)
{
MGameMgr.WorkMap.Data[y][x] = 0;
if( (x==MGameMgr.GunGun.Px) && (y==MGameMgr.GunGun.Py) )
{
MGameMgr.VisitSuccess = 1;
}
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y-1][x ]==MAZE_MAP_CHAR_NONE)) VisitLeft(x, y-1 );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y ][x-1]==MAZE_MAP_CHAR_NONE)) VisitLeft(x-1, y );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y ][x+1]==MAZE_MAP_CHAR_NONE)) VisitLeft(x+1, y );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y+1][x ]==MAZE_MAP_CHAR_NONE)) VisitLeft(x, y+1 );
if(MGameMgr.VisitSuccess)
{
MGameMgr.VisitRoad[MGameMgr.VisitIndex].Px = x;
MGameMgr.VisitRoad[MGameMgr.VisitIndex].Py = y;
MGameMgr.VisitIndex++;
}
}
static void VisitRight(int x,int y)
{
MGameMgr.WorkMap.Data[y][x] = 0;
if( (x==MGameMgr.GunGun.Px) && (y==MGameMgr.GunGun.Py) )
{
MGameMgr.VisitSuccess = 1;
}
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y ][x+1]==MAZE_MAP_CHAR_NONE)) VisitRight(x+1, y );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y+1][x ]==MAZE_MAP_CHAR_NONE)) VisitRight(x, y+1 );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y ][x-1]==MAZE_MAP_CHAR_NONE)) VisitRight(x-1, y );
if(!MGameMgr.VisitSuccess && (MGameMgr.WorkMap.Data[y-1][x ]==MAZE_MAP_CHAR_NONE)) VisitRight(x, y-1 );
if(MGameMgr.VisitSuccess)
{
MGameMgr.VisitRoad[MGameMgr.VisitIndex].Px = x;
MGameMgr.VisitRoad[MGameMgr.VisitIndex].Py = y;
MGameMgr.VisitIndex++;
}
}
static void DrawSearchRoad(int i_num)
{
SPRITE_DATA SpData;
int i;
for(i=0;i<i_num;i++)
{
SpData.No = MAZE_CHAR_GAME_GUNGUN_MARK;
SpData.PosX = MAZE_GAME_MAP_LEFT_X + (MGameMgr.VisitRoad[i].Px-1)*MAZE_GAME_SQUARE_W + 4;
SpData.PosY = MAZE_GAME_MAP_LEFT_Y + (MGameMgr.VisitRoad[i].Py-1)*MAZE_GAME_SQUARE_H + 2;
SpData.PosZ = 10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
#ifdef __DEBUG_MAZE__
static int DebugGameSpriteTask(TASK* ip_task)
{
static int SpIndex;
static int SpEntryNum;
static int Counter;
static int FlushFlag;
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(MazeGameTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_GAME_TIM_NUM, &MazeGameTextureImage[MAZE_GAME_TIM_POS] );
TimImgData = MazeGameTextureImage;
ReleaseSprite();
EntrySprite( MazeGameSpriteData );
SpIndex = 0;
SpEntryNum = GetEntrySpriteNum();
Counter = 0;
FlushFlag = 0;
GameMgr.FadeFlag = FadeIn;
break;
case TASK_MODE_MAIN:
if( JstPad & PADLdown ){
SpIndex++;
if(SpIndex > SpEntryNum-1) SpIndex = 0;
}else
if( JstPad & PADLup ){
SpIndex--;
if( SpIndex < 0 ) SpIndex = SpEntryNum-1;
}else{
}
if(JstPad & PADRright)
{
FlushFlag^=1;
}
if(FlushFlag) GsSortBoxFill(&BoxDataBlack, &Wot[active], 4);
else GsSortBoxFill(&BoxDataWhite, &Wot[active], 4);
SpData.No = SpIndex;
SpData.PosX = (320 - MazeGameSpriteData[SpIndex].Width) / 2;
SpData.PosY = (240 - MazeGameSpriteData[SpIndex].Height) / 2;
SpData.PosZ = 10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
FntPrint("-Maze GameSprite Check-\n");
FntPrint("SNO=%d/%d\n", SpIndex,SpEntryNum-1 );
FntPrint("OfX=%d\n", MazeGameSpriteData[SpIndex].OffSetX );
FntPrint("OfY=%d\n", MazeGameSpriteData[SpIndex].OffSetY );
FntPrint("W__=%d\n", MazeGameSpriteData[SpIndex].Width );
FntPrint("H__=%d\n", MazeGameSpriteData[SpIndex].Height );
FntPrint("PNO=%d\n", MazeGameSpriteData[SpIndex].PaletteNo );
FntPrint("CNT=%d\n", ++Counter );
break;
case TASK_MODE_EXIT:
ReleaseSprite();
ExitTask(ip_task->id);
break;
default:
break;
}
}
static int DebugEventSpriteTask(TASK* ip_task)
{
static int SpIndex;
static int SpEntryNum;
static int Counter;
static int FlushFlag;
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(MazeEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( MAZE_EVENT_TIM_NUM, &MazeEventTextureImage[MAZE_EVENT_TIM_POS] );
TimImgData = MazeEventTextureImage;
ReleaseSprite();
EntrySprite( MazeEventSpriteData );
SpIndex = 0;
SpEntryNum = GetEntrySpriteNum();
Counter = 0;
FlushFlag = 0;
GameMgr.FadeFlag = FadeIn;
break;
case TASK_MODE_MAIN:
if( JstPad & PADLdown ){
SpIndex++;
if(SpIndex > SpEntryNum-1) SpIndex = 0;
}else
if( JstPad & PADLup ){
SpIndex--;
if( SpIndex < 0 ) SpIndex = SpEntryNum-1;
}else{
}
if(JstPad & PADRright)
{
FlushFlag^=1;
}
if(FlushFlag) GsSortBoxFill(&BoxDataBlack, &Wot[active], 4);
else GsSortBoxFill(&BoxDataWhite, &Wot[active], 4);
SpData.No = SpIndex;
SpData.PosX = (320 - MazeEventSpriteData[SpIndex].Width) / 2;
SpData.PosY = (240 - MazeEventSpriteData[SpIndex].Height) / 2;
SpData.PosZ = 10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
FntPrint("-Maze EventSprite Check-\n");
FntPrint("SNO=%d/%d\n", SpIndex,SpEntryNum-1 );
FntPrint("OfX=%d\n", MazeEventSpriteData[SpIndex].OffSetX );
FntPrint("OfY=%d\n", MazeEventSpriteData[SpIndex].OffSetY );
FntPrint("W__=%d\n", MazeEventSpriteData[SpIndex].Width );
FntPrint("H__=%d\n", MazeEventSpriteData[SpIndex].Height );
FntPrint("PNO=%d\n", MazeEventSpriteData[SpIndex].PaletteNo );
FntPrint("CNT=%d\n", ++Counter );
break;
case TASK_MODE_EXIT:
ReleaseSprite();
ExitTask(ip_task->id);
break;
default:
break;
}
}
#endif