#include "COMMON.H"
#include "KAZU.H"
#include "SPMGR.H"
#include "TASKMGR.H"
#include "SPCONT.H"
#include "SOUND.H"
#include "SEES.H"
#define TIM_POS_SEES_EVENT_FONT 0
#define TIM_POS_SEES_EVENT_YORNO 1
#define SEES_GAME_TIM_POS 0+4
#define SEES_GAME_TIM_NUM 11
#define SEES_EVENT_TIM_POS 0+4
#define SEES_EVENT_TIM_NUM 11
#define TIM_POS_SEES_GAME_BG
#define TIM_POS_SEES_GAME_BG
#define TIM_POS_SEES_GAME_BGGAME 2+4
#define TIM_POS_SEES_GAME_BGGAME_ 3+4
#define TIM_POS_SEES_GAME_BGLV 4+4
#define TIM_POS_SEES_GAME_BGLV_ 5+4
#define TIM_POS_SEES_GAME_BORI
#define TIM_POS_SEES_GAME_BORI
#define TIM_POS_SEES_GAME_ITEM 8+4
#define TIM_POS_SEES_GAME_KAYO 9+4
#define TIM_POS_SEES_GAME_LEVEL 10+4
#define TIM_POS_SEES_EVENT_BG
#define TIM_POS_SEES_EVENT_BG
#define TIM_POS_SEES_EVENT_BG
#define TIM_POS_SEES_EVENT_BG
#define TIM_POS_SEES_EVENT_BGEND 4+4
#define TIM_POS_SEES_EVENT_BGEND_ 5+4
#define TIM_POS_SEES_EVENT_BORI
#define TIM_POS_SEES_EVENT_HANA 7+4
#define TIM_POS_SEES_EVENT_ITEM 8+4
#define TIM_POS_SEES_EVENT_KAYO 9+4
#define TIM_POS_SEES_EVENT_MEGAHANA 10+4
enum{
SEES_CHAR_GAME_APPEAR_BG_00,
SEES_CHAR_GAME_APPEAR_BG_01,
SEES_CHAR_GAME_GAME_BG_00,
SEES_CHAR_GAME_GAME_BG_01,
SEES_CHAR_GAME_SELECT_LEVEL_BG_00,
SEES_CHAR_GAME_SELECT_LEVEL_BG_01,
SEES_CHAR_GAME_AS_MACNINE_00,
SEES_CHAR_GAME_AS_MACNINE_01,
SEES_CHAR_GAME_AS_HAND_MACNINE_00,
SEES_CHAR_GAME_AS_HAND_MACNINE_01,
SEES_CHAR_GAME_AS_HAND_MACNINE_02,
SEES_CHAR_GAME_AS_HAND_MACNINE_03,
SEES_CHAR_GAME_DR_00,
SEES_CHAR_GAME_DR_01,
SEES_CHAR_GAME_DR_02,
SEES_CHAR_GAME_DR_03,
SEES_CHAR_GAME_DR_04,
SEES_CHAR_GAME_DR_05,
SEES_CHAR_GAME_DR_06,
SEES_CHAR_GAME_DR_07,
SEES_CHAR_GAME_DR_08,
SEES_CHAR_GAME_DR_09,
SEES_CHAR_GAME_DR_10,
SEES_CHAR_GAME_AS_BODY,
SEES_CHAR_GAME_AS_PARTS_00,
SEES_CHAR_GAME_AS_PARTS_01,
SEES_CHAR_GAME_AS_PARTS_02,
SEES_CHAR_GAME_AS_PARTS_03,
SEES_CHAR_GAME_AS_PARTS_04,
SEES_CHAR_GAME_AS_PARTS_05,
SEES_CHAR_GAME_AS_PARTS_06,
SEES_CHAR_GAME_AS_PARTS_07,
SEES_CHAR_GAME_AS_PARTS_08,
SEES_CHAR_GAME_AS_PARTS_09,
SEES_CHAR_GAME_AS_PARTS_10,
SEES_CHAR_GAME_AS_PARTS_11,
SEES_CHAR_GAME_AS_PARTS_12,
SEES_CHAR_GAME_AS_PARTS_13,
SEES_CHAR_GAME_AS_PARTS_14,
SEES_CHAR_GAME_COUNT_NUM_1,
SEES_CHAR_GAME_COUNT_NUM_2,
SEES_CHAR_GAME_COUNT_NUM_3,
SEES_CHAR_GAME_COUNT_NUM_4,
SEES_CHAR_GAME_COUNT_NUM_5,
SEES_CHAR_GAME_COUNT_NUM_6,
SEES_CHAR_GAME_COUNT_NUM_7,
SEES_CHAR_GAME_COUNT_NUM_8,
SEES_CHAR_GAME_COUNT_NUM_9,
SEES_CHAR_GAME_COUNT_NUM_0,
SEES_CHAR_GAME_PLATE_NUM_WAKU,
SEES_CHAR_GAME_PLATE_NUM_01,
SEES_CHAR_GAME_PLATE_NUM_02,
SEES_CHAR_GAME_PLATE_NUM_03,
SEES_CHAR_GAME_PLATE_NUM_04,
SEES_CHAR_GAME_PLATE_NUM_05,
SEES_CHAR_GAME_PLATE_NUM_06,
SEES_CHAR_GAME_PLATE_NUM_07,
SEES_CHAR_GAME_PLATE_NUM_08,
SEES_CHAR_GAME_PLATE_NUM_09,
SEES_CHAR_GAME_PLATE_NUM_00,
SEES_CHAR_GAME_WAKU_BIG,
SEES_CHAR_GAME_WAKU_MIDDLE,
SEES_CHAR_GAME_WAKU_SMALL,
SEES_CHAR_GAME_PLATE_STAR,
SEES_CHAR_GAME_BOX,
SEES_CHAR_GAME_BOX_AMI,
SEES_CHAR_GAME_FRUITS_YELLOW,
SEES_CHAR_GAME_FRUITS_RED,
SEES_CHAR_GAME_WIN_PLATE,
SEES_CHAR_GAME_LOSE_PLATE,
SEES_CHAR_GAME_SEESAW_LEFT,
SEES_CHAR_GAME_SEESAW_RIGHT,
SEES_CHAR_GAME_LEFT_LIGHT_00,
SEES_CHAR_GAME_LEFT_LIGHT_01,
SEES_CHAR_GAME_LEFT_LIGHT_02,
SEES_CHAR_GAME_LEFT_LIGHT_03,
SEES_CHAR_GAME_LEFT_LIGHT_04,
SEES_CHAR_GAME_LEFT_LIGHT_05,
SEES_CHAR_GAME_RIGHT_LIGHT_00,
SEES_CHAR_GAME_RIGHT_LIGHT_01,
SEES_CHAR_GAME_RIGHT_LIGHT_02,
SEES_CHAR_GAME_RIGHT_LIGHT_03,
SEES_CHAR_GAME_RIGHT_LIGHT_04,
SEES_CHAR_GAME_RIGHT_LIGHT_05,
SEES_CHAR_GAME_RAINBOW_MACHINE_00,
SEES_CHAR_GAME_RAINBOW_MACHINE_01,
SEES_CHAR_GAME_LEFT_LIGHT_FLUSH,
SEES_CHAR_GAME_RIGHT_LIGHT_FLUSH,
SEES_CHAR_GAME_NEW_CARD_WAKU,
SEES_CHAR_GAME_NEW_STAR_CARD,
SEES_CHAR_GAME_KY_00,
SEES_CHAR_GAME_KY_01,
SEES_CHAR_GAME_KY_02,
SEES_CHAR_GAME_KY_03,
SEES_CHAR_GAME_KY_04,
SEES_CHAR_GAME_KY_05,
SEES_CHAR_GAME_KY_06,
SEES_CHAR_GAME_KY_07,
SEES_CHAR_GAME_KY_08,
SEES_CHAR_GAME_KY_09,
SEES_CHAR_GAME_HANABI_00,
SEES_CHAR_GAME_DANTYOU_00,
SEES_CHAR_GAME_DANTYOU_01,
SEES_CHAR_GAME_DANIN_FUUSEN_BLUE_00,
SEES_CHAR_GAME_DANIN_FUUSEN_BLUE_01,
SEES_CHAR_GAME_DANIN_FUUSEN_ORANGE_00,
SEES_CHAR_GAME_DANIN_FUUSEN_ORANGE_01,
SEES_CHAR_GAME_DANIN_HATA_YOKO_00,
SEES_CHAR_GAME_DANIN_HATA_YOKO_01,
SEES_CHAR_GAME_DANIN_HATA_TATE_00,
SEES_CHAR_GAME_DANIN_HATA_TATE_01,
SEES_CHAR_GAME_SELECT_LEVEL_CURSOR,
SEES_CHAR_GAME_SELECT_LEVEL_PLATE_LIGHT,
SEES_CHAR_GAME_SELECT_LEVEL_PLATE_DARK,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_1,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_2,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_3,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_4,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_5,
SEES_CHAR_GAME_DR_APPEAR_MOUSE,
SEES_CHAR_GAME_SELECT_ANSWER_CURSOR,
};
enum{
SEES_CHAR_EVENT_CLEAR_ACTION_BG_00,
SEES_CHAR_EVENT_CLEAR_ACTION_BG_01,
SEES_CHAR_EVENT_CLEAR_ACTION_BG_02,
SEES_CHAR_EVENT_CLEAR_ACTION_BG_03,
SEES_CHAR_EVENT_EVENT_BG_00,
SEES_CHAR_EVENT_EVENT_BG_01,
SEES_CHAR_EVENT_AS_MACNINE_00,
SEES_CHAR_EVENT_AS_MACNINE_01,
SEES_CHAR_EVENT_AS_HAND_MACNINE_00,
SEES_CHAR_EVENT_AS_HAND_MACNINE_01,
SEES_CHAR_EVENT_AS_HAND_MACNINE_02,
SEES_CHAR_EVENT_AS_HAND_MACNINE_03,
SEES_CHAR_EVENT_DR_00,
SEES_CHAR_EVENT_DR_01,
SEES_CHAR_EVENT_DR_02,
SEES_CHAR_EVENT_DR_03,
SEES_CHAR_EVENT_DR_04,
SEES_CHAR_EVENT_DR_05,
SEES_CHAR_EVENT_DR_06,
SEES_CHAR_EVENT_DR_07,
SEES_CHAR_EVENT_DR_08,
SEES_CHAR_EVENT_DR_09,
SEES_CHAR_EVENT_DR_10,
SEES_CHAR_EVENT_HANABI_BIG,
SEES_CHAR_EVENT_HANABI_MIDDLE,
SEES_CHAR_EVENT_HANABI_SMALL_00,
SEES_CHAR_EVENT_HANABI_SMALL_01,
SEES_CHAR_EVENT_STAR_00,
SEES_CHAR_EVENT_STAR_01,
SEES_CHAR_EVENT_HANABI_TANE_00,
SEES_CHAR_EVENT_HANABI_TANE_01,
SEES_CHAR_EVENT_COUNT_NUM_1,
SEES_CHAR_EVENT_COUNT_NUM_2,
SEES_CHAR_EVENT_COUNT_NUM_3,
SEES_CHAR_EVENT_COUNT_NUM_4,
SEES_CHAR_EVENT_COUNT_NUM_5,
SEES_CHAR_EVENT_COUNT_NUM_6,
SEES_CHAR_EVENT_COUNT_NUM_7,
SEES_CHAR_EVENT_COUNT_NUM_8,
SEES_CHAR_EVENT_COUNT_NUM_9,
SEES_CHAR_EVENT_COUNT_NUM_0,
SEES_CHAR_EVENT_PLATE_NUM_WA,
SEES_CHAR_EVENT_PLATE_NUM_01,
SEES_CHAR_EVENT_PLATE_NUM_02,
SEES_CHAR_EVENT_PLATE_NUM_03,
SEES_CHAR_EVENT_PLATE_NUM_04,
SEES_CHAR_EVENT_PLATE_NUM_05,
SEES_CHAR_EVENT_PLATE_NUM_06,
SEES_CHAR_EVENT_PLATE_NUM_07,
SEES_CHAR_EVENT_PLATE_NUM_08,
SEES_CHAR_EVENT_PLATE_NUM_09,
SEES_CHAR_EVENT_PLATE_NUM_00,
SEES_CHAR_EVENT_WAKU_BIG,
SEES_CHAR_EVENT_WAKU_MIDDLE,
SEES_CHAR_EVENT_WAKU_SMALL,
SEES_CHAR_EVENT_PLATE_STAR,
SEES_CHAR_EVENT_BOX,
SEES_CHAR_EVENT_BOX_AMI,
SEES_CHAR_EVENT_FRUITS_YELLOW,
SEES_CHAR_EVENT_FRUITS_RED,
SEES_CHAR_EVENT_WIN_PLATE,
SEES_CHAR_EVENT_LOSE_PLATE,
SEES_CHAR_EVENT_SEESAW_LEFT,
SEES_CHAR_EVENT_SEESAW_RIGHT,
SEES_CHAR_EVENT_LUMP_LEFT_00,
SEES_CHAR_EVENT_LUMP_LEFT_01,
SEES_CHAR_EVENT_LUMP_LEFT_02,
SEES_CHAR_EVENT_LUMP_LEFT_03,
SEES_CHAR_EVENT_LUMP_LEFT_04,
SEES_CHAR_EVENT_LUMP_LEFT_05,
SEES_CHAR_EVENT_LUMP_RIGHT_00,
SEES_CHAR_EVENT_LUMP_RIGHT_01,
SEES_CHAR_EVENT_LUMP_RIGHT_02,
SEES_CHAR_EVENT_LUMP_RIGHT_03,
SEES_CHAR_EVENT_LUMP_RIGHT_04,
SEES_CHAR_EVENT_LUMP_RIGHT_05,
SEES_CHAR_EVENT_RAINBOW_MACHINE_00,
SEES_CHAR_EVENT_RAINBOW_MACHINE_01,
SEES_CHAR_EVENT_LUMP_LEFT_TOP,
SEES_CHAR_EVENT_LUMP_RIGHT_TOP,
SEES_CHAR_EVENT_KY_00,
SEES_CHAR_EVENT_KY_01,
SEES_CHAR_EVENT_KY_02,
SEES_CHAR_EVENT_KY_03,
SEES_CHAR_EVENT_KY_04,
SEES_CHAR_EVENT_KY_05,
SEES_CHAR_EVENT_KY_06,
SEES_CHAR_EVENT_KY_07,
SEES_CHAR_EVENT_KY_08,
SEES_CHAR_EVENT_KY_09,
SEES_CHAR_EVENT_HANABI_00,
SEES_CHAR_EVENT_HANABI_DR_00,
SEES_CHAR_EVENT_HANABI_DR_01,
SEES_CHAR_EVENT_SELECT_CONTINUE_PLATE,
SEES_CHAR_EVENT_SELECT_CONTINUE_YES_DARK,
SEES_CHAR_EVENT_SELECT_CONTINUE_NO_DARK,
SEES_CHAR_EVENT_SELECT_CONTINUE_YES_LIGHT,
SEES_CHAR_EVENT_SELECT_CONTINUE_NO_LIGHT,
SEES_CHAR_EVENT_SELECT_CONTINUE_BUPE_00,
SEES_CHAR_EVENT_SELECT_CONTINUE_BUPE_01,
SEES_CHAR_EVENT_SELECT_CONTINUE_RETRY_H,
SEES_CHAR_EVENT_SELECT_CONTINUE_END_H,
SEES_CHAR_EVENT_SELECT_CONTINUE_CONTINUE_H,
SEES_CHAR_EVENT_SELECT_CONTINUE_CURSOR,
SEES_CHAR_EVENT_SELECT_CONTINUE_ERABU,
SEES_CHAR_EVENT_SELECT_CONTINUE_KETEI,
SEES_CHAR_EVENT_SELECT_CONTINUE_MENU,
};
extern u_long pad;
extern u_long NewPad;
extern u_long OldPad;
extern u_long JstPad;
extern u_long WorkPad;
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 SG_BG00_image[];
extern u_long SG_BG00_clut[];
extern u_long SG_BG00__image[];
extern u_long SG_BG00__clut[];
extern u_long SG_BGgame_image[];
extern u_long SG_BGgame_clut[];
extern u_long SG_BGgame__image[];
extern u_long SG_BGgame__clut[];
extern u_long SG_BGlv_image[];
extern u_long SG_BGlv_clut[];
extern u_long SG_BGlv__image[];
extern u_long SG_BGlv__clut[];
extern u_long SG_BORI00_image[];
extern u_long SG_BORI00_clut[];
extern u_long SG_BORI01_image[];
extern u_long SG_BORI01_clut[];
extern u_long SG_ITEM_image[];
extern u_long SG_ITEM_clut[];
extern u_long SG_KAYO_image[];
extern u_long SG_KAYO_clut[];
extern u_long SG_LEVEL_image[];
extern u_long SG_LEVEL_clut[];
extern u_long SE_BG01_image[];
extern u_long SE_BG01_clut[];
extern u_long SE_BG01__image[];
extern u_long SE_BG01__clut[];
extern u_long SE_BG02_image[];
extern u_long SE_BG02_clut[];
extern u_long SE_BG02__image[];
extern u_long SE_BG02__clut[];
extern u_long SE_BGend_image[];
extern u_long SE_BGend_clut[];
extern u_long SE_BGend__image[];
extern u_long SE_BGend__clut[];
extern u_long SE_BORI00_image[];
extern u_long SE_BORI00_clut[];
extern u_long SE_HANA_image[];
extern u_long SE_HANA_clut[];
extern u_long SE_ITEM_image[];
extern u_long SE_ITEM_clut[];
extern u_long SE_KAYO_image[];
extern u_long SE_KAYO_clut[];
extern u_long SE_MEGAHANA_image[];
extern u_long SE_MEGAHANA_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 SEES_GAME SGameMgr;
static TIMD SeesGameTextureFile[] = {
{ "RCUBE3", "\\TIM\\SEESGD.B;1"},
};
static TIMD SeesEventTextureFile[] = {
{ "RCUBE3", "\\TIM\\SEESED.B;1"},
};
static GsIMAGE SeesGameTextureImage[]=
{
{ 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_256, 512,256, 128,256, SG_BG00_image, 0,509, 256,1, SG_BG00_clut },
{ TIM_COLOR_256, 768,256, 32,256, SG_BG00__image, 0,508, 256,1, SG_BG00__clut },
{ TIM_COLOR_256, 576,0, 128,256, SG_BGgame_image, 0,507, 256,1, SG_BGgame_clut },
{ TIM_COLOR_256, 768,0, 32,256, SG_BGgame__image, 0,506, 256,1, SG_BGgame__clut },
{ TIM_COLOR_256, 640,256, 128,256, SG_BGlv_image, 0,511, 256,1, SG_BGlv_clut },
{ TIM_COLOR_256, 832,0, 32,256, SG_BGlv__image, 0,510, 256,1, SG_BGlv__clut },
{ TIM_COLOR_16, 832,256, 64,256, SG_BORI00_image, 144,480, 16,16, SG_BORI00_clut },
{ TIM_COLOR_16, 704,0, 64,256, SG_BORI01_image, 112,480, 16,16, SG_BORI01_clut },
{ TIM_COLOR_16, 320,256, 64,256, SG_ITEM_image, 80,480, 16,16, SG_ITEM_clut },
{ TIM_COLOR_16, 384,256, 64,256, SG_KAYO_image, 96,480, 16,16, SG_KAYO_clut },
{ TIM_COLOR_16, 448,256, 64,256, SG_LEVEL_image, 128,480, 16,16, SG_LEVEL_clut },
};
static GsIMAGE SeesEventTextureImage[]=
{
{ 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_256, 576,0, 128,256, SE_BG01_image, 0,511, 256,1, SE_BG01_clut },
{ TIM_COLOR_256, 768,256, 32,256, SE_BG01__image, 0,508, 256,1, SE_BG01__clut },
{ TIM_COLOR_256, 576,256, 128,256, SE_BG02_image, 0,510, 256,1, SE_BG02_clut },
{ TIM_COLOR_256, 704,256, 32,256, SE_BG02__image, 0,509, 256,1, SE_BG02__clut },
{ TIM_COLOR_16, 512,256, 64,256, SE_BGend_image, 160,481, 16,1, SE_BGend_clut },
{ TIM_COLOR_16, 832,256, 16,256, SE_BGend__image, 160,480, 16,1, SE_BGend__clut },
{ TIM_COLOR_16, 704,0, 64,256, SE_BORI00_image, 144,480, 16,16, SE_BORI00_clut },
{ TIM_COLOR_16, 768,0, 64,256, SE_HANA_image, 128,480, 16,16, SE_HANA_clut },
{ TIM_COLOR_16, 320,256, 64,256, SE_ITEM_image, 80,480, 16,16, SE_ITEM_clut },
{ TIM_COLOR_16, 384,256, 64,256, SE_KAYO_image, 96,480, 16,16, SE_KAYO_clut },
{ TIM_COLOR_16, 448,256, 64,256, SE_MEGAHANA_image, 112,480, 16,16, SE_MEGAHANA_clut},
};
static ENTRY_SPRITE_DATA SeesGameSpriteData[] =
{
{ TIM_POS_SEES_GAME_BG00, 0, 0, 240, 256, 0 },
{ TIM_POS_SEES_GAME_BG00_, 256, 0, 240, 64, 0 },
{ TIM_POS_SEES_GAME_BGGAME, 0, 0, 240, 256, 0 },
{ TIM_POS_SEES_GAME_BGGAME_, 256, 0, 240, 64, 0 },
{ TIM_POS_SEES_GAME_BGLV, 0, 0, 240, 256, 0 },
{ TIM_POS_SEES_GAME_BGLV_, 256, 0, 240, 64, 0 },
{ TIM_POS_SEES_GAME_BORI00, 0, 0, 90, 94, 0 },
{ TIM_POS_SEES_GAME_BORI00, 94, 0, 90, 115, 0 },
{ TIM_POS_SEES_GAME_BORI00, 210, 0, 22, 26, 0 },
{ TIM_POS_SEES_GAME_BORI00, 210, 22, 22, 26, 0 },
{ TIM_POS_SEES_GAME_BORI00, 210, 44, 32, 28, 0 },
{ TIM_POS_SEES_GAME_BORI00, 210, 76, 36, 28, 0 },
{ TIM_POS_SEES_GAME_BORI00, 0, 90, 58, 72, 1 },
{ TIM_POS_SEES_GAME_BORI00, 72, 90, 51, 60, 1 },
{ TIM_POS_SEES_GAME_BORI00, 132, 90, 51, 60, 1 },
{ TIM_POS_SEES_GAME_BORI00, 0, 148, 47, 58, 1 },
{ TIM_POS_SEES_GAME_BORI00, 58, 148, 47, 58, 1 },
{ TIM_POS_SEES_GAME_BORI00, 116, 148, 47, 58, 1 },
{ TIM_POS_SEES_GAME_BORI00, 0, 195, 60, 58, 1 },
{ TIM_POS_SEES_GAME_BORI00, 58, 195, 48, 62, 1 },
{ TIM_POS_SEES_GAME_BORI00, 120, 195, 58, 74, 1 },
{ TIM_POS_SEES_GAME_BORI00, 192, 112, 67, 61, 1 },
{ TIM_POS_SEES_GAME_BORI00, 194, 195, 47, 58, 1 },
{ TIM_POS_SEES_GAME_BORI01, 0, 0, 108, 81, 0 },
{ TIM_POS_SEES_GAME_BORI01, 82, 0, 84, 20, 0 },
{ TIM_POS_SEES_GAME_BORI01, 210, 171, 84, 20, 0 },
{ TIM_POS_SEES_GAME_BORI01, 118, 0, 45, 32, 0 },
{ TIM_POS_SEES_GAME_BORI01, 150, 0, 35, 44, 0 },
{ TIM_POS_SEES_GAME_BORI01, 195, 0, 36, 37, 0 },
{ TIM_POS_SEES_GAME_BORI01, 232, 0, 24, 24, 0 },
{ TIM_POS_SEES_GAME_BORI01, 118, 45, 40, 64, 0 },
{ TIM_POS_SEES_GAME_BORI01, 182, 36, 56, 40, 0 },
{ TIM_POS_SEES_GAME_BORI01, 0, 108, 52, 92, 0 },
{ TIM_POS_SEES_GAME_BORI01, 210, 163, 8, 22, 0 },
{ TIM_POS_SEES_GAME_BORI01, 92, 108, 55, 100, 0 },
{ TIM_POS_SEES_GAME_BORI01, 192, 108, 50, 47, 0 },
{ TIM_POS_SEES_GAME_BORI01, 0, 162, 55, 100, 0 },
{ TIM_POS_SEES_GAME_BORI01, 100, 163, 54, 110, 0 },
{ TIM_POS_SEES_GAME_BORI01, 0, 217, 33, 56, 0 },
{ TIM_POS_SEES_GAME_ITEM, 0, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 22, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 44, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 66, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 88, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 110, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 132, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 154, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 176, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 198, 0, 34, 22, 0 },
{ TIM_POS_SEES_GAME_ITEM, 0, 34, 18, 19, 1 },
{ TIM_POS_SEES_GAME_ITEM, 20, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 26, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 32, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 38, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 44, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 50, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 56, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 62, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 68, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 74, 34, 10, 6, 1 },
{ TIM_POS_SEES_GAME_ITEM, 0, 53, 26, 48, 2 },
{ TIM_POS_SEES_GAME_ITEM, 48, 53, 21, 48, 2 },
{ TIM_POS_SEES_GAME_ITEM, 96, 53, 24, 26, 2 },
{ TIM_POS_SEES_GAME_ITEM, 122, 53, 18, 19, 2 },
{ TIM_POS_SEES_GAME_ITEM, 0, 80, 15, 40, 3 },
{ TIM_POS_SEES_GAME_ITEM, 40, 80, 15, 40, 3 },
{ TIM_POS_SEES_GAME_ITEM, 80, 80, 8, 8, 4 },
{ TIM_POS_SEES_GAME_ITEM, 88, 80, 8, 8, 4 },
{ TIM_POS_SEES_GAME_ITEM, 0, 96, 19, 182, 5 },
{ TIM_POS_SEES_GAME_ITEM, 0, 115, 19, 182, 5 },
{ TIM_POS_SEES_GAME_ITEM, 0, 134, 20, 108, 6 },
{ TIM_POS_SEES_GAME_ITEM, 108, 134, 20, 108, 6 },
{ TIM_POS_SEES_GAME_ITEM, 0, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 8, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 16, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 24, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 32, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 40, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 48, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 56, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 64, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 72, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 80, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 88, 154, 37, 8, 7 },
{ TIM_POS_SEES_GAME_ITEM, 104, 154, 86, 44, 8 },
{ TIM_POS_SEES_GAME_ITEM, 148, 154, 86, 44, 8 },
{ TIM_POS_SEES_GAME_ITEM, 0, 200, 18, 20, 9 },
{ TIM_POS_SEES_GAME_ITEM, 0, 218, 18, 20, 9 },
{ TIM_POS_SEES_GAME_ITEM, 82, 34, 18, 26, 1 },
{ TIM_POS_SEES_GAME_ITEM, 108, 34, 18, 26, 2 },
{ TIM_POS_SEES_GAME_KAYO, 0, 0, 46, 40, 0 },
{ TIM_POS_SEES_GAME_KAYO, 40, 0, 46, 40, 0 },
{ TIM_POS_SEES_GAME_KAYO, 80, 0, 46, 40, 0 },
{ TIM_POS_SEES_GAME_KAYO, 120, 0, 46, 40, 0 },
{ TIM_POS_SEES_GAME_KAYO, 160, 0, 46, 48, 0 },
{ TIM_POS_SEES_GAME_KAYO, 0, 46, 58, 64, 0 },
{ TIM_POS_SEES_GAME_KAYO, 64, 46, 58, 64, 0 },
{ TIM_POS_SEES_GAME_KAYO, 128, 46, 58, 52, 0 },
{ TIM_POS_SEES_GAME_KAYO, 180, 46, 58, 52, 0 },
{ TIM_POS_SEES_GAME_KAYO, 0, 104, 46, 50, 0 },
{ TIM_POS_SEES_GAME_KAYO, 96, 150, 90, 105, 1 },
{ TIM_POS_SEES_GAME_LEVEL, 0, 0, 42, 48, 0 },
{ TIM_POS_SEES_GAME_LEVEL, 48, 0, 42, 48, 0 },
{ TIM_POS_SEES_GAME_LEVEL, 0, 42, 33, 40, 0 },
{ TIM_POS_SEES_GAME_LEVEL, 40, 42, 33, 40, 0 },
{ TIM_POS_SEES_GAME_LEVEL, 0, 42, 33, 40, 1 },
{ TIM_POS_SEES_GAME_LEVEL, 40, 42, 33, 40, 1 },
{ TIM_POS_SEES_GAME_LEVEL, 80, 42, 33, 40, 1 },
{ TIM_POS_SEES_GAME_LEVEL, 120, 42, 33, 40, 1 },
{ TIM_POS_SEES_GAME_LEVEL, 160, 42, 33, 40, 2 },
{ TIM_POS_SEES_GAME_LEVEL, 200, 42, 33, 40, 2 },
{ TIM_POS_SEES_GAME_LEVEL, 96, 0, 14, 20, 3 },
{ TIM_POS_SEES_GAME_LEVEL, 96, 14, 9, 18, 3 },
{ TIM_POS_SEES_GAME_LEVEL, 96, 14, 9, 18, 4 },
{ TIM_POS_SEES_GAME_LEVEL, 96, 24, 10, 8, 5 },
{ TIM_POS_SEES_GAME_LEVEL, 104, 24, 10, 8, 5 },
{ TIM_POS_SEES_GAME_LEVEL, 112, 24, 10, 8, 5 },
{ TIM_POS_SEES_GAME_LEVEL, 120, 24, 10, 8, 5 },
{ TIM_POS_SEES_GAME_LEVEL, 128, 24, 10, 8, 5 },
{ TIM_POS_SEES_GAME_LEVEL, 0, 80, 37, 58, 6 },
{ TIM_POS_SEES_EVENT_FONT, 24, 200, 24, 26, 2 },
{ ENTRY_SPRITE_DATA_END,0,0,0,0,0 }
};
static ENTRY_SPRITE_DATA SeesEventSpriteData[] =
{
{ TIM_POS_SEES_EVENT_BG01, 0, 0, 240, 256, 0 },
{ TIM_POS_SEES_EVENT_BG01_, 256, 0, 240, 64, 0 },
{ TIM_POS_SEES_EVENT_BG02, 0, 0, 240, 256, 0 },
{ TIM_POS_SEES_EVENT_BG02_, 256, 0, 240, 64, 0 },
{ TIM_POS_SEES_EVENT_BGEND, 0, 0, 240, 256, 0 },
{ TIM_POS_SEES_EVENT_BGEND_, 256, 0, 240 , 64, 0 },
{ TIM_POS_SEES_EVENT_BORI00, 0, 0, 90, 94, 0 },
{ TIM_POS_SEES_EVENT_BORI00, 94, 0, 90, 115, 0 },
{ TIM_POS_SEES_EVENT_BORI00, 210, 0, 22, 26, 0 },
{ TIM_POS_SEES_EVENT_BORI00, 210, 22, 22, 26, 0 },
{ TIM_POS_SEES_EVENT_BORI00, 210, 44, 32, 28, 0 },
{ TIM_POS_SEES_EVENT_BORI00, 210, 76, 36, 28, 0 },
{ TIM_POS_SEES_EVENT_BORI00, 0, 90, 58, 72, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 72, 90, 51, 60, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 132, 90, 51, 60, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 0, 148, 47, 58, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 58, 148, 47, 58, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 116, 148, 47, 58, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 0, 195, 60, 58, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 58, 195, 48, 62, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 120, 195, 58, 74, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 192, 112, 67, 61, 1 },
{ TIM_POS_SEES_EVENT_BORI00, 194, 195, 47, 58, 1 },
{ TIM_POS_SEES_EVENT_HANA, 0, 0, 90, 194, 0 },
{ TIM_POS_SEES_EVENT_HANA, 0, 90, 93, 170, 0 },
{ TIM_POS_SEES_EVENT_HANA, 170, 90, 68, 77, 0 },
{ TIM_POS_SEES_EVENT_HANA, 170, 158, 68, 77, 0 },
{ TIM_POS_SEES_EVENT_HANA, 0, 183, 30, 33, 1 },
{ TIM_POS_SEES_EVENT_HANA, 34, 183, 30, 33, 1 },
{ TIM_POS_SEES_EVENT_HANA, 168, 226, 10, 18, 2 },
{ TIM_POS_SEES_EVENT_HANA, 186, 226, 10, 18, 2 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 22, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 44, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 66, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 88, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 110, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 132, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 154, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 176, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 198, 0, 34, 22, 0 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 34, 18, 20, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 20, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 26, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 32, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 38, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 44, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 50, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 56, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 62, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 68, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 74, 34, 10, 6, 1 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 53, 26, 48, 2 },
{ TIM_POS_SEES_EVENT_ITEM, 48, 53, 21, 48, 2 },
{ TIM_POS_SEES_EVENT_ITEM, 96, 53, 24, 26, 2 },
{ TIM_POS_SEES_EVENT_ITEM, 122, 53, 18, 19, 2 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 80, 15, 40, 3 },
{ TIM_POS_SEES_EVENT_ITEM, 40, 80, 15, 40, 3 },
{ TIM_POS_SEES_EVENT_ITEM, 80, 80, 8, 8, 4 },
{ TIM_POS_SEES_EVENT_ITEM, 88, 80, 8, 8, 4 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 96, 19, 182, 5 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 115, 19, 182, 5 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 134, 20, 108, 6 },
{ TIM_POS_SEES_EVENT_ITEM, 108, 134, 20, 108, 6 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 8, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 16, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 24, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 32, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 40, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 48, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 56, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 64, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 72, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 80, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 88, 154, 37, 8, 7 },
{ TIM_POS_SEES_EVENT_ITEM, 104, 154, 86, 44, 8 },
{ TIM_POS_SEES_EVENT_ITEM, 148, 154, 86, 44, 8 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 200, 18, 20, 9 },
{ TIM_POS_SEES_EVENT_ITEM, 0, 218, 18, 20, 9 },
{ TIM_POS_SEES_EVENT_KAYO, 0, 0, 46, 40, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 40, 0, 46, 40, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 80, 0, 46, 40, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 120, 0, 46, 40, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 160, 0, 46, 48, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 0, 46, 58, 64, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 64, 46, 58, 64, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 128, 46, 58, 52, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 180, 46, 58, 52, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 0, 104, 46, 50, 0 },
{ TIM_POS_SEES_EVENT_KAYO, 96, 150, 90, 105, 1 },
{ TIM_POS_SEES_EVENT_MEGAHANA, 0, 0, 126, 165, 0 },
{ TIM_POS_SEES_EVENT_MEGAHANA, 0, 126, 101, 132, 0 },
{ TIM_POS_SEES_EVENT_YORNO, 0, 0, 115, 186, 0 },
{ TIM_POS_SEES_EVENT_YORNO, 0, 115, 40, 38, 1 },
{ TIM_POS_SEES_EVENT_YORNO, 38, 115, 40, 44, 1 },
{ TIM_POS_SEES_EVENT_YORNO, 82, 115, 40, 44, 2 },
{ TIM_POS_SEES_EVENT_YORNO, 126, 115, 40, 44, 2 },
{ TIM_POS_SEES_EVENT_YORNO, 186, 0, 69, 58, 3 },
{ TIM_POS_SEES_EVENT_YORNO, 186, 69, 69, 58, 3 },
{ TIM_POS_SEES_EVENT_YORNO, 0, 155, 14, 148, 4 },
{ TIM_POS_SEES_EVENT_YORNO, 0, 170, 14, 148, 4 },
{ TIM_POS_SEES_EVENT_YORNO, 20, 20, 14, 148, 4 },
{ TIM_POS_SEES_EVENT_FONT, 24, 200, 24, 26, 2 },
{ TIM_POS_SEES_EVENT_FONT, 0, 232, 15, 52, 4 },
{ TIM_POS_SEES_EVENT_FONT, 52, 232, 15, 52, 4 },
{ TIM_POS_SEES_EVENT_FONT, 104, 232, 15, 52, 4 },
{ ENTRY_SPRITE_DATA_END,0,0,0,0,0 }
};
static SEES_SPRITE_DATA KyGameSpriteTable[]=
{
{ SEES_CHAR_GAME_KY_00, 0, -36 },
{ SEES_CHAR_GAME_KY_01, 0, -36 },
{ SEES_CHAR_GAME_KY_01, 0, -36 },
{ SEES_CHAR_GAME_KY_02, 0, -36 },
{ SEES_CHAR_GAME_KY_03, -1, -36 },
{ SEES_CHAR_GAME_KY_04, -5, -36 },
{ SEES_CHAR_GAME_KY_09, -6, -36 },
{ SEES_CHAR_GAME_KY_09, -6, -36 },
{ SEES_CHAR_GAME_KY_04, -5, -36 },
{ SEES_CHAR_GAME_KY_04, -5, -36 },
};
static SEES_SPRITE_DATA DrGameSpriteTable[]=
{
{ SEES_CHAR_GAME_DR_01, -1, -41 },
{ SEES_CHAR_GAME_DR_02, -1, -41 },
{ SEES_CHAR_GAME_DR_03, 0, -37 },
{ SEES_CHAR_GAME_DR_04, 0, -37 },
{ SEES_CHAR_GAME_DR_04, 0, -37 },
{ SEES_CHAR_GAME_DR_05, 0, -37 },
{ SEES_CHAR_GAME_DR_04, 0, -37 },
{ SEES_CHAR_GAME_DR_07, -2, -38 },
{ SEES_CHAR_GAME_DR_04, 0, -37 },
{ SEES_CHAR_GAME_DR_04, 0, -37 },
};
static SEES_SPRITE_DATA AsGameSpriteTable[]=
{
{ SEES_CHAR_GAME_AS_BODY, 44, 123 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_00, 30, 126 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_01, 120, 126 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_02, 112, 124 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_03, 6, 125 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_04, 24, 124 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_05, 72, 118 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_06, 74, 124 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_07, 118, 93 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_08, 60, 96 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_09, 72, 136 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_10, 34, 124 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_11, 60, 96 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_12, 36, 124 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_13, 58, 97 + BG_OFFSET_Y + 11 },
{ SEES_CHAR_GAME_AS_PARTS_14, 118, 125 + BG_OFFSET_Y + 11 },
};
static int AsGamePartsIndexTable[][10]=
{
{ 0, 12, 1, 2, -1, 0, 0, 0, 0, -1 },
{ 0, 1, 14, -1, 0, 0, 0, 0, 0, -1 },
{ 0, 14, 1, 10, -1, 0, 0, 0, 0, -1 },
{ 0, 12, 1, 8, -1, 0, 0, 0, 0, -1 },
{ 0, 1, 9, -1, 0, 0, 0, 0, 0, -1 },
{ 0, 12, 4, 2, -1, 0, 0, 0, 0, -1 },
{ 0, 12, 5, 2, -1, 0, 0, 0, 0, -1 },
{ 0, 12, 7, 1, -1, 0, 0, 0, 0, -1 },
{ 0, 12, 3, 1, -1, 0, 0, 0, 0, -1 },
{ 0, 12, 15, 1, -1, 0, 0, 0, 0, -1 },
};
static int SmallNumSpriteTable[]=
{
SEES_CHAR_GAME_PLATE_NUM_00,
SEES_CHAR_GAME_PLATE_NUM_01,
SEES_CHAR_GAME_PLATE_NUM_02,
SEES_CHAR_GAME_PLATE_NUM_03,
SEES_CHAR_GAME_PLATE_NUM_04,
SEES_CHAR_GAME_PLATE_NUM_05,
SEES_CHAR_GAME_PLATE_NUM_06,
SEES_CHAR_GAME_PLATE_NUM_07,
SEES_CHAR_GAME_PLATE_NUM_08,
SEES_CHAR_GAME_PLATE_NUM_09,
};
static int BigNumSpriteTable[]=
{
SEES_CHAR_GAME_COUNT_NUM_0,
SEES_CHAR_GAME_COUNT_NUM_1,
SEES_CHAR_GAME_COUNT_NUM_2,
SEES_CHAR_GAME_COUNT_NUM_3,
SEES_CHAR_GAME_COUNT_NUM_4,
SEES_CHAR_GAME_COUNT_NUM_5,
SEES_CHAR_GAME_COUNT_NUM_6,
SEES_CHAR_GAME_COUNT_NUM_7,
SEES_CHAR_GAME_COUNT_NUM_8,
SEES_CHAR_GAME_COUNT_NUM_9,
};
static POS2D ApplePosTable[]={
{ 8, 5+1 },
{ 17, 5+1 },
{ 26, 5+1 },
{ 4, -2+1 },
{ 13, -2+1 },
{ 21, -2+1 },
{ 30, -2+1 },
{ 8, -9+1 },
{ 17, -9+1 },
{ 26, -9+1 },
};
static int CardCastDataTable[MAX_GAME_LEVEL_NUM][MAX_GAME_PATTERN_NUM][MAX_CARD_NUM]=
{
{
{ 1, 2, 3, 4, 5, 6, 0, 0, 0, 0 },
{ 2, 3, 4, 5, 6, 7, 0, 0, 0, 0 },
{ 3, 4, 5, 6, 7, 8, 0, 0, 0, 0 },
{ 4, 5, 6, 7, 8, 9, 0, 0, 0, 0 },
{ 5, 6, 7, 8, 9, 10, 0, 0, 0, 0 },
{ 1, 2, 6, 7, 8, 9, 0, 0, 0, 0 },
},
{
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },
},
{
{ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 },
{ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 },
{ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 },
{ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 },
{ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 },
{ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 },
},
{
{ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 },
{ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 },
{ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 },
{ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 },
{ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 },
{ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 },
},
{
{ 32, 38, 41, 44, 56, 58, 65, 68, 72, 81 },
{ 43, 47, 52, 53, 64, 70, 73, 80, 85, 94 },
{ 37, 54, 56, 62, 63, 72, 81, 82, 92, 100 },
{ 33, 34, 50, 64, 65, 71, 74, 80, 89, 94 },
{ 36, 46, 48, 63, 73, 76, 80, 85, 97, 98 },
{ 35, 36, 48, 50, 59, 76, 82, 87, 89, 96 },
},
};
static int CardDeelDataRandomTable[MAX_GAME_LEVEL_NUM][MAX_GAME_PATTERN_NUM][MAX_USER_CARD_NUM]=
{
{
{ 0, 1, 2, -1, -1 },
{ 1, 2, 0, -1, -1 },
{ 2, 0, 1, -1, -1 },
{ 0, 1, 2, -1, -1 },
{ 1, 2, 0, -1, -1 },
{ 2, 0, 1, -1, -1 },
},
{
{ 0, 1, 2, 3, 4 },
{ 1, 2, 3, 4, 0 },
{ 2, 3, 4, 0, 1 },
{ 3, 4, 0, 1, 2 },
{ 4, 0, 1, 2, 3 },
{ 2, 1, 0, 4, 3 },
},
{
{ 0, 1, 2, 3, 4 },
{ 1, 2, 3, 4, 0 },
{ 2, 3, 4, 0, 1 },
{ 3, 4, 0, 1, 2 },
{ 4, 0, 1, 2, 3 },
{ 2, 1, 0, 4, 3 },
},
{
{ 0, 1, 2, 3, 4 },
{ 1, 2, 3, 4, 0 },
{ 2, 3, 4, 0, 1 },
{ 3, 4, 0, 1, 2 },
{ 4, 0, 1, 2, 3 },
{ 2, 1, 0, 4, 3 },
},
{
{ 0, 1, 2, 3, 4 },
{ 1, 2, 3, 4, 0 },
{ 2, 3, 4, 0, 1 },
{ 3, 4, 0, 1, 2 },
{ 4, 0, 1, 2, 3 },
{ 2, 1, 0, 4, 3 },
},
};
static int CardDeelDataTable[MAX_GAME_LEVEL_NUM][2][MAX_GAME_PATTERN_NUM][MAX_USER_CARD_NUM]=
{
{
{
{ 2, 3, 6, -1, -1 },
{ 3, 4, 7, -1, -1 },
{ 4, 5, 8, -1, -1 },
{ 5, 6, 9, -1, -1 },
{ 6, 7, 10, -1, -1 },
{ 7, 8, 1, -1, -1 },
},
{
{ 1, 4, 5, -1, -1 },
{ 2, 5, 6, -1, -1 },
{ 3, 6, 7, -1, -1 },
{ 4, 7, 8, -1, -1 },
{ 5, 8, 9, -1, -1 },
{ 6, 9, 2, -1, -1 },
},
},
{
{
{ 2, 3, 6, 7, 9 },
{ 3, 4, 7, 8, 10 },
{ 4, 5, 8, 9, 1 },
{ 5, 6, 9, 10, 2 },
{ 6, 7, 10, 1, 3 },
{ 7, 8, 1, 2, 4 },
},
{
{ 1, 4, 5, 8, 10 },
{ 2, 5, 6, 9, 1 },
{ 3, 6, 7, 10, 2 },
{ 4, 7, 8, 1, 3 },
{ 5, 8, 9, 2, 4 },
{ 6, 9, 10, 3, 5 },
},
},
{
{
{ 12, 13, 16, 17, 20 },
{ 13, 14, 17, 18, 11 },
{ 14, 15, 18, 19, 12 },
{ 15, 16, 19, 20, 13 },
{ 16, 17, 20, 11, 14 },
{ 17, 18, 11, 12, 15 },
},
{
{ 11, 14, 15, 18, 19 },
{ 12, 15, 16, 19, 20 },
{ 13, 16, 17, 20, 11 },
{ 14, 17, 18, 11, 12 },
{ 15, 18, 19, 12, 13, },
{ 16, 19, 20, 13, 14, },
},
},
{
{
{ 20, 30, 60, 70, 90 },
{ 30, 40, 70, 80, 100 },
{ 40, 50, 80, 90, 10 },
{ 50, 60, 90, 100,20 },
{ 60, 70, 100,10, 30 },
{ 70, 80, 10, 20, 40 },
},
{
{ 10, 40, 50, 80, 100 },
{ 20, 50, 60, 90, 10 },
{ 30, 60, 70, 100,20 },
{ 40, 70, 80, 10, 30 },
{ 50, 80, 90, 20, 40 },
{ 60, 90, 100,30, 50 },
},
},
{
{
{ 32, 44, 58, 65, 72 },
{ 43, 53, 70, 73, 85 },
{ 54, 62, 82, 81, 100 },
{ 65, 71, 94, 89, 33 },
{ 76, 80, 36, 97, 46 },
{ 87, 89, 48, 35, 59 },
},
{
{ 38, 41, 56, 68, 81 },
{ 47, 52, 64, 80, 94 },
{ 56, 63, 72, 92, 37 },
{ 64, 74, 80, 34, 50 },
{ 73, 85, 98, 48, 63 },
{ 82, 96, 36, 50, 76 },
},
},
};
static POS2D DrCardPosTable[2][MAX_USER_CARD_NUM]=
{
{
{ 16, 170 + BG_OFFSET_Y },
{ 64, 170 + BG_OFFSET_Y },
{ 112, 170 + BG_OFFSET_Y },
{ 0, 0 + BG_OFFSET_Y },
{ 0, 0 + BG_OFFSET_Y },
},
{
{ 14, 170 + BG_OFFSET_Y },
{ 44, 170 + BG_OFFSET_Y },
{ 74, 170 + BG_OFFSET_Y },
{ 104, 170 + BG_OFFSET_Y },
{ 134, 170 + BG_OFFSET_Y },
},
};
static POS2D KyCardPosTable[2][MAX_USER_CARD_NUM]=
{
{
{ 220, 140 + BG_OFFSET_Y },
{ 188, 170 + BG_OFFSET_Y },
{ 252, 170 + BG_OFFSET_Y },
{ 0, 0 + BG_OFFSET_Y },
{ 0, 0 + BG_OFFSET_Y },
},
{
{ 208, 140 + BG_OFFSET_Y },
{ 238, 140 + BG_OFFSET_Y },
{ 268, 140 + BG_OFFSET_Y },
{ 208, 170 + BG_OFFSET_Y },
{ 238, 170 + BG_OFFSET_Y },
},
};
static int AsSelectCardIndexTable[MAX_GAME_LEVEL_NUM][MAX_GAME_PATTERN_NUM][MAX_USER_CARD_NUM]=
{
{
{ 1, 2, 0, -1, -1 },
{ 0, 1, 2, -1, -1 },
{ 2, 0, 1, -1, -1 },
{ 0, 1, 2, -1, -1 },
{ 1, 2, 0, -1, -1 },
{ 2, 0, 1, -1, -1 },
},
{
{ 2, 3, 4, 0, 1 },
{ 2, 1, 0, 4, 3 },
{ 3, 4, 0, 1, 2 },
{ 4, 0, 1, 2, 3 },
{ 1, 2, 3, 4, 0 },
{ 0, 1, 2, 3, 4 },
},
{
{ 4, 0, 1, 2, 3 },
{ 0, 1, 2, 3, 4 },
{ 3, 4, 0, 1, 2 },
{ 1, 2, 3, 4, 0 },
{ 2, 1, 0, 4, 3 },
{ 2, 3, 4, 0, 1 },
},
{
{ 1, 2, 3, 4, 0 },
{ 0, 1, 2, 3, 4 },
{ 3, 4, 0, 1, 2 },
{ 4, 0, 1, 2, 3 },
{ 2, 3, 4, 0, 1 },
{ 2, 1, 0, 4, 3 },
},
{
{ 3, 4, 0, 1, 2 },
{ 2, 3, 4, 0, 1 },
{ 0, 1, 2, 3, 4 },
{ 4, 0, 1, 2, 3 },
{ 1, 2, 3, 4, 0 },
{ 2, 1, 0, 4, 3 },
},
};
static SEESAW_MOVE_DATA SeesawCompareMoveData[]={
{ 16, 1},
{ 14, -1},
{ 10, 1},
{ 8, -1},
{ 6, 1},
{ 4, -1},
{ 2, 1},
{ -1, 0},
};
static SEESAW_MOVE_DATA SeesawUpKyMoveData[]={
{ SEESAW_DISTANCE_04, -1},
{ -1, 0},
};
static SEESAW_MOVE_DATA SeesawUpDrMoveData[]={
{ SEESAW_DISTANCE_04, 1},
{ -1, 0},
};
static SEESAW_MOVE_DATA SeesawReturnDrMoveData[]={
{ SEESAW_DISTANCE_04, -1},
{ -1, 0},
};
static SEESAW_MOVE_DATA SeesawReturnKyMoveData[]={
{ SEESAW_DISTANCE_04, 1},
{ -1, 0},
};
static int AsSelectBoxAnswerSpriteTypeTable[]=
{
AS_SP_TYPE_SELECT_QUESTION_01,
AS_SP_TYPE_SELECT_QUESTION_03,
AS_SP_TYPE_SELECT_QUESTION_04,
};
static int AsSelectCardAnswerSpriteTypeTable[]=
{
AS_SP_TYPE_SELECT_QUESTION_01,
AS_SP_TYPE_SELECT_QUESTION_02,
AS_SP_TYPE_SELECT_QUESTION_03,
AS_SP_TYPE_SELECT_QUESTION_04,
AS_SP_TYPE_SELECT_QUESTION_05,
};
static SEES_SPRITE_DATA FalseEventKyAnmSpriteData[]=
{
{ SEES_CHAR_EVENT_KY_07, 0, 0 },
{ SEES_CHAR_EVENT_KY_08, 0, 0 },
};
static SEES_SPRITE_DATA FalseEventStarSpriteData[]=
{
{ SEES_CHAR_EVENT_STAR_00, 0, 0 },
{ SEES_CHAR_EVENT_STAR_01, 0, 0 },
};
static SEES_SPRITE_DATA ClearEventFireworksSpriteTable[]=
{
{ SEES_CHAR_EVENT_HANABI_SMALL_00, 120, 34 },
{ SEES_CHAR_EVENT_HANABI_SMALL_01, 162, 26 },
{ SEES_CHAR_EVENT_HANABI_MIDDLE, 76, 41 },
{ SEES_CHAR_EVENT_HANABI_BIG, 64, 18 },
{ SEES_CHAR_EVENT_HANABI_DR_01, 96, 20 },
{ SEES_CHAR_EVENT_HANABI_DR_00, 78, 10 },
{ SEES_CHAR_EVENT_HANABI_SMALL_01, 162, 26 },
{ SEES_CHAR_EVENT_HANABI_SMALL_00, 100, 34 },
};
static SEES_SPRITE_DATA ClearEventCongratulationSpriteTable[]=
{
{ SEES_CHAR_EVENT_CLEAR_ACTION_BG_00, 0, 0},
{ SEES_CHAR_EVENT_CLEAR_ACTION_BG_01, 0, 0},
{ SEES_CHAR_EVENT_CLEAR_ACTION_BG_02, 0, 0},
{ SEES_CHAR_EVENT_CLEAR_ACTION_BG_03, 0, 0},
};
static SEES_SPRITE_DATA ClearEventAsSpriteTable[]=
{
{ SEES_CHAR_EVENT_AS_MACNINE_01, 184, 99 },
{ SEES_CHAR_EVENT_AS_HAND_MACNINE_02, 244, 117 },
{ SEES_CHAR_EVENT_AS_HAND_MACNINE_03, 244, 118 },
{ SEES_CHAR_EVENT_LUMP_RIGHT_TOP, 0, 0 },
};
static SEES_SPRITE_DATA ClearEventDrSpriteTable[]=
{
{ SEES_CHAR_EVENT_DR_00, 110, 133 },
{ SEES_CHAR_EVENT_DR_08, 110, 133 },
};
static SEES_SPRITE_DATA ClearEventKySpriteTable[]=
{
{ SEES_CHAR_EVENT_KY_05, 40, 129 },
{ SEES_CHAR_EVENT_KY_06, 40, 129 },
};
static SEES_SPRITE_DATA ClearEventFlySmokeSpriteTable[]=
{
{ SEES_CHAR_EVENT_HANABI_TANE_00, 0, 0 },
{ SEES_CHAR_EVENT_HANABI_TANE_01, 0, 0 },
};
#define INIT_PLAY_DEMO_SCRIPT_BASE 0
#define INIT_PLAY_DEMO_SCRIPT_NUM 2
#define SELECT_LEVEL_SCRIPT_BASE 2
#define SELECT_LEVEL_SCRIPT_NUM 1
#define INTRODUCE_CARD_CAST_SCRIPT_BASE 3
#define INTRODUCE_CARD_CAST_SCRIPT_NUM 1
#define AS_SELECT_CARD_SCRIPT_BASE 4
#define AS_SELECT_CARD_SCRIPT_NUM 1
#define PLAYER_SELECT_CARD_SCRIPT_BASE 5
#define PLAYER_SELECT_CARD_SCRIPT_NUM 1
#define COMPARE_CARD_SCRIPT_BASE 6
#define COMPARE_CARD_SCRIPT_NUM 1
#define KY_WIN_SCRIPT_BASE 7
#define KY_WIN_SCRIPT_NUM 1
#define DR_WIN_SCRIPT_BASE 8
#define DR_WIN_SCRIPT_NUM 1
#define AS_RETRY_SCRIPT_BASE 9
#define AS_RETRY_SCRIPT_NUM 1
#define CLEAR_1_SCRIPT_BASE 10
#define CLEAR_1_SCRIPT_NUM 1
#define CLEAR_2_SCRIPT_BASE 11
#define CLEAR_2_SCRIPT_NUM 1
#define CLEAR_3_SCRIPT_BASE 12
#define CLEAR_3_SCRIPT_NUM 1
#define ALL_CLEAR_1_SCRIPT_BASE 13
#define ALL_CLEAR_1_SCRIPT_NUM 1
#define ALL_CLEAR_2_SCRIPT_BASE 14
#define ALL_CLEAR_2_SCRIPT_NUM 1
#define ALL_CLEAR_3_SCRIPT_BASE 15
#define ALL_CLEAR_3_SCRIPT_NUM 1
#define ALL_CLEAR_4_SCRIPT_BASE 16
#define ALL_CLEAR_4_SCRIPT_NUM 1
#define FALSE_SCRIPT_BASE 17
#define FALSE_SCRIPT_NUM 1
#define CLEAR_MAKENAI_SCRIPT_BASE 18
#define CLEAR_MAKENAI_SCRIPT_NUM 1
static SCRIP_DATA SeesScript[]=
{
{
0,
NamePlateToma,
XA_FILE_SEES00,
2,
"初消音時06「のっけてシーソー」に ようこそ!待120終"
},
{
4,
NamePlateToma,
XA_FILE_SEES00,
3,
"初消音時06ここは、ちょっと、あたまを つかうぞ。待240終"
},
{
0,
NamePlateDan,
XA_FILE_BAND00,
4,
"初音時06ひかっている すうじを えらんでくれ。待300終"
},
{
0,
NamePlateBori,
XA_FILE_SEES01,
0,
"初消音時06これで、しょうぶだよ。待240終"
},
{
0,
NamePlateBori,
XA_FILE_SEES01,
3,
"初消音時06これに しよう。待120終"
},
{
0,
NamePlateKayo,
XA_FILE_SEES01,
5,
"初消音時06さぁ、どれで しょうぶする?待120終"
},
{
0,
NamePlateNare,
XA_FILE_SEES02,
1,
"初消音時06さぁ、おおきい かずは どちら?待180終"
},
{
0,
NamePlateKayo,
XA_FILE_SEES03,
0,
"初消音時06やったわね! だいしょうり!待180終"
},
{
0,
NamePlateToma,
XA_FILE_SEES03,
4,
"初消音時06やった。わしらの、かちじゃ!待180終"
},
{
0,
NamePlateBori,
XA_FILE_SEES03,
6,
"初消音時06もう いっかい。待180終"
},
{
0,
NamePlateToma,
XA_FILE_SEES04,
0,
"初消音時06ブラボ~! きみは すんばらしい!待180終"
},
{
0,
NamePlateToma,
XA_FILE_SEES04,
1,
"初消音時06わしらからの プレゼント! きれいな 改はなびじゃ。待220終"
},
{
0,
NamePlateToma,
XA_FILE_SEES04,
2,
"初消音時06ボーリー、スイッチオン!待180終"
},
{
0,
NamePlateToma,
XA_FILE_SEES04,
4,
"初消音時06ブラボ~! まったく、すんばらしい!待180終"
},
{
0,
NamePlateToma,
XA_FILE_SEES04,
5,
"初消音時06わしらの かんぱいぢゃ。待180終"
},
{
0,
NamePlateToma,
XA_FILE_SEES04,
6,
"初消音時06では、とっておきのプレゼント、改すんごくきれいなはなびじゃ。待220終"
},
{
0,
NamePlateToma,
XA_FILE_SEES04,
7,
"初消音時06ボーリー、スイッチオン!待180終"
},
{
0,
NamePlateKayo,
XA_FILE_SEES04,
9,
"初消音時06だいじょうぶ。こんどは、かてるわ。待240終"
},
{
0,
NamePlateToma,
XA_FILE_SEES04,
8,
"初消音時06こんどは、まけないぞ。待240終"
},
};
int Sees(GAMEMGR* ip_GameMgr)
{
TASK Task;
int i;
switch( ip_GameMgr->SubMode )
{
case INIT:
ip_GameMgr->SubMode = MAIN;
InitSprite();
InitTaskMgr();
srand(ip_GameMgr->Timer);
SfileRead2(SEES_SOUNDFILE);
HelpInit();
GameMgr.WaitFlag = ON;
SGameMgr.Timer = 0;
SGameMgr.Level = ip_GameMgr->Level[GAME_SEES];
SGameMgr.PlayLevel = 2;
SGameMgr.ContinueFlag = 0;
SGameMgr.EventEndFlag = 0;
SGameMgr.ClearFlag = 0;
SGameMgr.FalseFlag = 0;
SGameMgr.AllClearFlag = 0;
SGameMgr.ExitFlag = 0;
#ifdef __DEBUG_SEES__
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 = DebugEventSpriteTask;
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 = "DebugEventSpriteTask";
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 = 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 & PADR2){
Task.func = FalseEventTask;
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 = "FalseEventTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
if(SGameMgr.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(SGameMgr.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
break;
case MAIN:
FntPrint("");
ExecuteTask();
TransSprite();
SpraitControl();
if(SGameMgr.ExitFlag) ip_GameMgr->SubMode = EXIT;
break;
case EXIT:
ReleaseSprite();
ip_GameMgr->Level[GAME_SEES] = SGameMgr.Level;
SpraitCharClr();
SpraitControl();
GameMgr.WaitFlag = ON;
ssStopAll();
ssCloseVab();
ip_GameMgr->MainMode = MAIN_MODE_TOP_MENU;
ip_GameMgr->SubMode = INIT;
break;
default:
}
return TRUE;
}
static int GameControllTask(TASK* ip_task)
{
TASK Task;
int i;
static int dcount=0;
static int dbx=20;
static int dby=20;
switch( ip_task->mode )
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
SGameMgr.EventEndFlag = 0;
SGameMgr.ClearFlag = 0;
SGameMgr.FalseFlag = 0;
SGameMgr.AllClearFlag = 0;
SGameMgr.ExitFlag = 0;
dcount = 10;
if((file_read(SeesGameTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( SEES_GAME_TIM_NUM, &SeesGameTextureImage[SEES_GAME_TIM_POS] );
TimImgData = SeesGameTextureImage;
EntrySprite( SeesGameSpriteData );
GaidoInit();
if(SGameMgr.ContinueFlag==0)
{
SGameMgr.ContinueFlag = 1;
Task.func = DrAppearTasK;
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 = "DrAppearTasK";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
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 = CardCastTask;
Task.priority = TASK_NO_GAME_CARD_CAST;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_CARD_CAST;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "CardCastTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = SeesawTask;
Task.priority = TASK_NO_GAME_SEESAW;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SEESAW;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "SeesawTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = KyTask;
Task.priority = TASK_NO_GAME_KY;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_KY;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "KyTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = DrTask;
Task.priority = TASK_NO_GAME_DR;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_DR;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "DrTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = AsTask;
Task.priority = TASK_NO_GAME_AS;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_AS;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "AsTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = DrCardTask;
Task.priority = TASK_NO_GAME_DR_CARD;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_DR_CARD;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "DrCardTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = KyCardTask;
Task.priority = TASK_NO_GAME_KY_CARD;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_KY_CARD;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "KyCardTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}
break;
case TASK_MODE_MAIN:
if( SGameMgr.ClearFlag || SGameMgr.FalseFlag) ip_task->mode = TASK_MODE_EXIT;
#ifdef __DEBUG_SEES__
#endif
break;
case TASK_MODE_EXIT:
RemoveTask(TASK_NO_GAME_PAUSE);
RemoveTask(TASK_NO_GAME_APPEAR_DR);
RemoveTask(TASK_NO_GAME_SELECT_LEVEL);
RemoveTask(TASK_NO_GAME_CARD_CAST);
RemoveTask(TASK_NO_GAME_APPLE_COUNT);
RemoveTask(TASK_NO_GAME_SEESAW);
RemoveTask(TASK_NO_GAME_PLAYER);
RemoveTask(TASK_NO_GAME_DR);
RemoveTask(TASK_NO_GAME_KY);
RemoveTask(TASK_NO_GAME_AS);
RemoveTask(TASK_NO_GAME_DR_CARD);
RemoveTask(TASK_NO_GAME_KY_CARD);
RemoveTask(TASK_NO_GAME_LIGHT_FLUSH);
RemoveTask(TASK_NO_GAME_BG);
ssStopBgm(SEES_BGM_00);
if(SGameMgr.PlayLevel > SGameMgr.Level)
{
SGameMgr.Level = SGameMgr.PlayLevel;
}
SpraitCharClr();
if(SGameMgr.AllClearFlag)
{
RemoveTask(TASK_NO_GAME_BG);
Task.func = AllClearEventTask;
Task.priority = TASK_NO_EVENT_ALL_CLEAR;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_EVENT_ALL_CLEAR;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "AllClearEventTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
if(SGameMgr.ClearFlag)
{
RemoveTask(TASK_NO_GAME_BG);
Task.func = ClearEventTask;
Task.priority = TASK_NO_EVENT_CLEAR;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_EVENT_CLEAR;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "ClearEventTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}else
{
Task.func = FalseEventTask;
Task.priority = TASK_NO_EVENT_FALSE;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_EVENT_FALSE;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "FalseEventTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int SelectLevelTask(TASK* ip_task)
{
static int LevelNumTable[]={
SEES_CHAR_GAME_SELECT_LEVEL_NUM_1,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_2,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_3,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_4,
SEES_CHAR_GAME_SELECT_LEVEL_NUM_5,
};
static SEES_SPRITE_DATA GakudaninSpriteTable[]=
{
{ SEES_CHAR_GAME_DANTYOU_00, 2, -4 },
{ SEES_CHAR_GAME_DANTYOU_01, 0, -6 },
{ SEES_CHAR_GAME_DANIN_FUUSEN_BLUE_00, 0, 0 },
{ SEES_CHAR_GAME_DANIN_FUUSEN_BLUE_01, 0, 0 },
{ SEES_CHAR_GAME_DANIN_HATA_YOKO_00, 0, 0 },
{ SEES_CHAR_GAME_DANIN_HATA_YOKO_01, 0, 0 },
{ SEES_CHAR_GAME_DANIN_HATA_TATE_00, 0, 0 },
{ SEES_CHAR_GAME_DANIN_HATA_TATE_01, 0, 0 },
{ SEES_CHAR_GAME_DANIN_FUUSEN_ORANGE_00, 0, 0 },
{ SEES_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(SeesGameTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( SEES_GAME_TIM_NUM, &SeesGameTextureImage[SEES_GAME_TIM_POS] );
TimImgData = SeesGameTextureImage;
EntrySprite( SeesGameSpriteData );
SGameMgr.PlayLevel = 0;
SGameMgr.ContinueFlag = 0;
SGameMgr.SelectLevel.Mode = SEES_GAME_SELECT_LEVEL_MODE_00;
SGameMgr.SelectLevel.Timer = 0;
SGameMgr.SelectLevel.BlockNo = 0;
SGameMgr.SelectLevel.BlockWt = 0;
SGameMgr.SelectLevel.KeteiWt = 0;
SGameMgr.SelectLevel.KeteiFlushIndex = 0;
SGameMgr.SelectLevel.KeteiFlushWt = 0;
SGameMgr.SelectLevel.AnmIndex = 0;
SGameMgr.SelectLevel.AnmNo = GakudaninSpriteTable[0].No;
SGameMgr.SelectLevel.AnmWt = 0;
SGameMgr.SelectLevel.AnmBase = 0;
SGameMgr.SelectLevel.PosX = SEES_GAME_SELECT_LEVEL_GAKUDANIN_INIT_X;
SGameMgr.SelectLevel.PosY = SEES_GAME_SELECT_LEVEL_GAKUDANIN_INIT_Y;
SGameMgr.SelectLevel.WaitFlag = 0;
GameMgr.FadeFlag = FadeIn;
dsPlayXa(XA_FILE_ZIRI10,5);
break;
case TASK_MODE_MAIN:
SsinScriptFlag = SGameMgr.Script.Flag;
switch(SGameMgr.SelectLevel.Mode)
{
case SEES_GAME_SELECT_LEVEL_MODE_00:
++SGameMgr.SelectLevel.Timer;
if(SGameMgr.SelectLevel.Timer > SEES_GAME_SELECT_LEVEL_MODE_00_TIME){
}
for(i=0;i<SGameMgr.Level+1;i++){
for(j=0;j<5;j++){
if(j>i) continue;
SpData.No = SEES_CHAR_GAME_SELECT_LEVEL_PLATE_LIGHT;
SpData.PosX = 101 + 25*i - 2;
SpData.PosY = 40 + 95 - 10*j + 3;
SpData.PosZ = PRIORITY_BG-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
SGameMgr.SelectLevel.PosX -= SEES_GAME_SELECT_LEVEL_GAKUDANIN_SPEED_X;
if(SGameMgr.SelectLevel.PosX < SEES_GAME_SELECT_LEVEL_GAKUDANIN_STOP_X)
{
SGameMgr.SelectLevel.PosX = SEES_GAME_SELECT_LEVEL_GAKUDANIN_STOP_X;
SGameMgr.SelectLevel.Mode = SEES_GAME_SELECT_LEVEL_MODE_01;
SGameMgr.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);
}
break;
case SEES_GAME_SELECT_LEVEL_MODE_01:
if(!SGameMgr.Script.Flag){
if(JstPad & PADLright)
{
ssPlaySe(BUTONSE_LEVER);
if(++SGameMgr.PlayLevel>SGameMgr.Level){
SGameMgr.PlayLevel=0;
}
}else
if(JstPad & PADLleft){
ssPlaySe(BUTONSE_LEVER);
if(--SGameMgr.PlayLevel<0){
SGameMgr.PlayLevel=SGameMgr.Level;
}
}else{
}
if(JstPad & PADRright)
{
SGameMgr.SelectLevel.Mode = SEES_GAME_SELECT_LEVEL_MODE_02;
ssPlaySe(BUTONSE_MARU);
}
}
if( ++SGameMgr.SelectLevel.BlockWt > SEES_GAME_SELECT_LEVEL_FLUSH_ANM_TIME)
{
SGameMgr.SelectLevel.BlockWt=0;
if(++SGameMgr.SelectLevel.BlockNo > SEES_GAME_MAX_LEVEL_NUM)
{
SGameMgr.SelectLevel.BlockNo=0;
}
}
for(i=0;i<SGameMgr.Level+1;i++){
for(j=0;j<5;j++){
if(j>i) continue;
if(SGameMgr.SelectLevel.BlockNo <= j) continue;
SpData.No = SEES_CHAR_GAME_SELECT_LEVEL_PLATE_LIGHT;
SpData.PosX = 101 + 25*i - 2;
SpData.PosY = 40 + 95 - 10*j + 3;
SpData.PosZ = PRIORITY_BG-3;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
break;
case SEES_GAME_SELECT_LEVEL_MODE_02:
if(!SGameMgr.SelectLevel.WaitFlag){
if(++SGameMgr.SelectLevel.KeteiWt > SEES_GAME_SELECT_LEVEL_KETEI_WAIT_TIME){
SGameMgr.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( ++SGameMgr.SelectLevel.KeteiFlushWt > SEES_GAME_SELECT_LEVEL_KETEI_FLUSH_TIME ){
SGameMgr.SelectLevel.KeteiFlushWt = 0;
SGameMgr.SelectLevel.KeteiFlushIndex^=1;
}
if(SGameMgr.SelectLevel.KeteiFlushIndex){
for(i=0;i<5;i++){
if(SGameMgr.PlayLevel>=i){
SpData.No = SEES_CHAR_GAME_SELECT_LEVEL_PLATE_LIGHT;
SpData.PosX = 101 + 25*SGameMgr.PlayLevel - 2;
SpData.PosY = 40 + 95 - 10*i + 3;
SpData.PosZ = PRIORITY_BG-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
}
break;
default:
}
if(++SGameMgr.SelectLevel.AnmWt > SEES_GAME_SELECT_LEVEL_GAKUDANIN_ANM_WAIT_TIME){
SGameMgr.SelectLevel.AnmWt = 0;
SGameMgr.SelectLevel.AnmIndex ^=1;
}
for(i=0;i<5;i++)
{
SGameMgr.SelectLevel.AnmBase = i*2;
SGameMgr.SelectLevel.AnmNo = GakudaninSpriteTable[SGameMgr.SelectLevel.AnmBase + SGameMgr.SelectLevel.AnmIndex].No;
SpData.No = SGameMgr.SelectLevel.AnmNo;
SpData.PosX = SGameMgr.SelectLevel.PosX + i*40 + GakudaninSpriteTable[SGameMgr.SelectLevel.AnmBase + SGameMgr.SelectLevel.AnmIndex].Ofx;
SpData.PosY = SGameMgr.SelectLevel.PosY + GakudaninSpriteTable[SGameMgr.SelectLevel.AnmBase + SGameMgr.SelectLevel.AnmIndex].Ofy;
SpData.PosZ = PRIORITY_BG - 4;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = SEES_CHAR_GAME_SELECT_LEVEL_CURSOR;
SpData.PosX = 100 + 25 * SGameMgr.PlayLevel - 2;
SpData.PosY = 40 + 80 - 10 * SGameMgr.PlayLevel + 3;
SpData.PosZ = PRIORITY_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_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 = SEES_CHAR_GAME_SELECT_LEVEL_PLATE_DARK;
SpData.PosX = 101 + 25*i - 2;
SpData.PosY = 40 + 95 - 10*j + 3;
SpData.PosZ = PRIORITY_BG-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
SpData.No = SEES_CHAR_GAME_SELECT_LEVEL_BG_00;
SpData.PosX = 0;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SEES_CHAR_GAME_SELECT_LEVEL_BG_01;
SpData.PosX = 256;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_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 DrAppearTasK(TASK* ip_task)
{
SPRITE_DATA SpData;
TASK Task;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
ip_task->user[0] = 0;
ip_task->user[1] = 0;
ip_task->user[2] = 0;
GameMgr.FadeFlag = FadeIn;
SGameMgr.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_PLAY_DEMO_SCRIPT_BASE;
Task.user[2] = INIT_PLAY_DEMO_SCRIPT_NUM;
CreateTask(&Task);
break;
case TASK_MODE_MAIN:
if(!ip_task->user[0]){
if(!SGameMgr.Script.Flag){
ip_task->user[0] = 1;
ip_task->user[1] = 0;
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(++ip_task->user[2]>=CAST_ANM_WAIT_TIME){
ip_task->user[2]=0;
ip_task->user[1]^=1;
}
}
}
if(ip_task->user[1]){
SpData.No = SEES_CHAR_GAME_DR_APPEAR_MOUSE;
SpData.PosX = 82;
SpData.PosY = 98;
SpData.PosZ = PRIORITY_BG-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = SEES_CHAR_GAME_APPEAR_BG_00;
SpData.PosX = 0;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SEES_CHAR_GAME_APPEAR_BG_01;
SpData.PosX = 256;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_BG-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case TASK_MODE_EXIT:
MetuseijiFlag=OFF;
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 = CardCastTask;
Task.priority = TASK_NO_GAME_CARD_CAST;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_CARD_CAST;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "CardCastTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = SeesawTask;
Task.priority = TASK_NO_GAME_SEESAW;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_SEESAW;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "SeesawTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = KyTask;
Task.priority = TASK_NO_GAME_KY;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_KY;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "KyTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = DrTask;
Task.priority = TASK_NO_GAME_DR;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_DR;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "DrTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = AsTask;
Task.priority = TASK_NO_GAME_AS;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_AS;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "AsTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = DrCardTask;
Task.priority = TASK_NO_GAME_DR_CARD;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_DR_CARD;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "DrCardTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
Task.func = KyCardTask;
Task.priority = TASK_NO_GAME_KY_CARD;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_KY_CARD;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "KyCardTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int SeesawTask(TASK *ip_task)
{
static int AnswerLightSpriteTable[]={
SEES_CHAR_GAME_LEFT_LIGHT_00,
SEES_CHAR_GAME_LEFT_LIGHT_01,
SEES_CHAR_GAME_LEFT_LIGHT_02,
SEES_CHAR_GAME_LEFT_LIGHT_03,
SEES_CHAR_GAME_LEFT_LIGHT_04,
SEES_CHAR_GAME_LEFT_LIGHT_05,
SEES_CHAR_GAME_RIGHT_LIGHT_00,
SEES_CHAR_GAME_RIGHT_LIGHT_01,
SEES_CHAR_GAME_RIGHT_LIGHT_02,
SEES_CHAR_GAME_RIGHT_LIGHT_03,
SEES_CHAR_GAME_RIGHT_LIGHT_04,
SEES_CHAR_GAME_RIGHT_LIGHT_05,
};
SPRITE_DATA SpData;
TASK Task;
int drno,kyno;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
SGameMgr.Seesaw.Status = SEESAW_WAIT;
SGameMgr.Seesaw.L_Base.Status = 0;
SGameMgr.Seesaw.L_Base.Anm.Data.no = SEES_CHAR_GAME_SEESAW_LEFT;
SGameMgr.Seesaw.L_Base.Anm.Data.wt = 0;
SGameMgr.Seesaw.L_Base.Anm.Index = 0;
SGameMgr.Seesaw.L_Base.Pos.x = SEESAW_LEFT_BASE_X;
SGameMgr.Seesaw.L_Base.Pos.y = SEESAW_MATCH_BASE_POS_Y;
SGameMgr.Seesaw.L_Base.Pos.z = PRIORITY_SEESAW;
SGameMgr.Seesaw.L_Base.OPos.x = 0;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.L_Base.OPos.z = 0;
SGameMgr.Seesaw.L_Base.Spd.dx = 0;
SGameMgr.Seesaw.L_Base.Spd.dy = 0;
SGameMgr.Seesaw.L_Base.Spd.sx = 0;
SGameMgr.Seesaw.L_Base.Spd.sy = 1;
SGameMgr.Seesaw.R_Base.Status = 0;
SGameMgr.Seesaw.R_Base.Anm.Data.no = SEES_CHAR_GAME_SEESAW_RIGHT;
SGameMgr.Seesaw.R_Base.Anm.Data.wt = 0;
SGameMgr.Seesaw.R_Base.Anm.Index = 0;
SGameMgr.Seesaw.R_Base.Pos.x = SEESAW_RIGHT_BASE_X;
SGameMgr.Seesaw.R_Base.Pos.y = SEESAW_MATCH_BASE_POS_Y;
SGameMgr.Seesaw.R_Base.Pos.z = PRIORITY_SEESAW;
SGameMgr.Seesaw.R_Base.OPos.x = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.z = 0;
SGameMgr.Seesaw.R_Base.Spd.dx = 0;
SGameMgr.Seesaw.R_Base.Spd.dy = 0;
SGameMgr.Seesaw.R_Base.Spd.sx = 0;
SGameMgr.Seesaw.R_Base.Spd.sy = 1;
SGameMgr.Seesaw.MoveCount = 0;
SGameMgr.Seesaw.MoveDirect = 0;
SGameMgr.Seesaw.MoveSpeed = SEESAW_SPEED_Y;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_AnswerNum = 0;
SGameMgr.Seesaw.R_AnswerNum = 0;
SGameMgr.Seesaw.Timer = 0;
SGameMgr.Seesaw.WaitFlag = 0;
SGameMgr.Seesaw.WaitTimer = 0;
SGameMgr.Seesaw.CountStartFlag = 0;
SGameMgr.Seesaw.CountEndFlag = 0;
break;
case TASK_MODE_MAIN:
switch(SGameMgr.Seesaw.Status)
{
case SEESAW_WAIT:
break;
case SEESAW_WEIGHT_MATCH_H_WAIT:
if(!SGameMgr.Seesaw.WaitFlag){
if(dSoundStatus == DslStatStandby){
SGameMgr.Seesaw.WaitFlag=1;
}
}
if(SGameMgr.Seesaw.WaitFlag)
{
if(SGameMgr.PlayLevel==0)
{
if(SGameMgr.Seesaw.CountStartFlag==0)
{
SGameMgr.Seesaw.CountStartFlag = 1;
SGameMgr.Seesaw.CountEndFlag = 0;
Task.func = AppleCountTask;
Task.priority = TASK_NO_GAME_APPLE_COUNT;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_APPLE_COUNT;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "AppleCountTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = SGameMgr.Dr.Card[ AsSelectCardIndexTable[SGameMgr.PlayLevel][SGameMgr.As.SelectOrderIndex][SGameMgr.As.SelectIndex] ].Data.No;
Task.user[1] = SGameMgr.Ky.Card[ SGameMgr.Player.AnswerIndex ].Data.No;
CreateTask(&Task);
}
if(SGameMgr.Seesaw.CountEndFlag)
{
if(SGameMgr.Seesaw.Timer==0) ssPlaySe(SEES_SE_08);
if(SGameMgr.Seesaw.Timer==40) ssPlaySe(SEES_SE_08);
if(++SGameMgr.Seesaw.Timer > SEESAW_COMPARE_WAIT_TIME )
{
drno = SGameMgr.Dr.Card[ AsSelectCardIndexTable[SGameMgr.PlayLevel][SGameMgr.As.SelectOrderIndex][SGameMgr.As.SelectIndex] ].Data.No;
kyno = SGameMgr.Ky.Card[ SGameMgr.Player.AnswerIndex ].Data.No;
if(drno - kyno >= 0)
{
ssPlaySe(SEES_SE_04);
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] = DR_WIN_SCRIPT_BASE;
Task.user[2] = DR_WIN_SCRIPT_NUM;
CreateTask(&Task);
SGameMgr.Seesaw.Status = SEESAW_WEIGHT_HEAVY_DR;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveCount = SeesawUpKyMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawUpKyMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
SGameMgr.Ky.Character.Status = CAST_RISE;
if(++SGameMgr.Seesaw.L_AnswerNum >= MAX_SEESAW_LIGHT){
SGameMgr.Seesaw.L_AnswerNum = MAX_SEESAW_LIGHT;
}
Task.func = LightFlushTask;
Task.priority = TASK_NO_GAME_LIGHT_FLUSH;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_LIGHT_FLUSH;
Task.wait_time = LIGHT_FLUSH_WAIT_TIME_;
Task.buf = NULL;
Task.name = "LightFlushTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = 0;
CreateTask(&Task);
}else
{
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] = KY_WIN_SCRIPT_BASE;
Task.user[2] = KY_WIN_SCRIPT_NUM;
CreateTask(&Task);
SGameMgr.Seesaw.Status = SEESAW_WEIGHT_HEAVY_KY;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveCount = SeesawUpDrMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawUpDrMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
SGameMgr.Dr.Character.Status = CAST_RISE;
if(++SGameMgr.Seesaw.R_AnswerNum >= MAX_SEESAW_LIGHT){
SGameMgr.Seesaw.R_AnswerNum = MAX_SEESAW_LIGHT;
}
Task.func = LightFlushTask;
Task.priority = TASK_NO_GAME_LIGHT_FLUSH;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_LIGHT_FLUSH;
Task.wait_time = LIGHT_FLUSH_WAIT_TIME_;
Task.buf = NULL;
Task.name = "LightFlushTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = 1;
CreateTask(&Task);
}
SGameMgr.Seesaw.CountStartFlag = 0;
SGameMgr.Seesaw.CountEndFlag = 0;
}
}
}else
{
if(SGameMgr.Seesaw.Timer==0) ssPlaySe(SEES_SE_08);
if(SGameMgr.Seesaw.Timer==40) ssPlaySe(SEES_SE_08);
if(++SGameMgr.Seesaw.Timer > SEESAW_COMPARE_WAIT_TIME )
{
drno = SGameMgr.Dr.Card[ AsSelectCardIndexTable[SGameMgr.PlayLevel][SGameMgr.As.SelectOrderIndex][SGameMgr.As.SelectIndex] ].Data.No;
kyno = SGameMgr.Ky.Card[ SGameMgr.Player.AnswerIndex ].Data.No;
if(drno - kyno >= 0)
{
ssPlaySe(SEES_SE_04);
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] = DR_WIN_SCRIPT_BASE;
Task.user[2] = DR_WIN_SCRIPT_NUM;
CreateTask(&Task);
SGameMgr.Seesaw.Status = SEESAW_WEIGHT_HEAVY_DR;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveCount = SeesawUpKyMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawUpKyMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
SGameMgr.Ky.Character.Status = CAST_RISE;
if(++SGameMgr.Seesaw.L_AnswerNum >= MAX_SEESAW_LIGHT){
SGameMgr.Seesaw.L_AnswerNum = MAX_SEESAW_LIGHT;
}
Task.func = LightFlushTask;
Task.priority = TASK_NO_GAME_LIGHT_FLUSH;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_LIGHT_FLUSH;
Task.wait_time = LIGHT_FLUSH_WAIT_TIME_;
Task.buf = NULL;
Task.name = "LightFlushTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = 0;
CreateTask(&Task);
}else
{
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] = KY_WIN_SCRIPT_BASE;
Task.user[2] = KY_WIN_SCRIPT_NUM;
CreateTask(&Task);
SGameMgr.Seesaw.Status = SEESAW_WEIGHT_HEAVY_KY;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveCount = SeesawUpDrMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawUpDrMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
SGameMgr.Dr.Character.Status = CAST_RISE;
if(++SGameMgr.Seesaw.R_AnswerNum >= MAX_SEESAW_LIGHT){
SGameMgr.Seesaw.R_AnswerNum = MAX_SEESAW_LIGHT;
}
Task.func = LightFlushTask;
Task.priority = TASK_NO_GAME_LIGHT_FLUSH;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_LIGHT_FLUSH;
Task.wait_time = LIGHT_FLUSH_WAIT_TIME_;
Task.buf = NULL;
Task.name = "LightFlushTask";
Task.mode = TASK_MODE_INIT;
Task.user[0] = 1;
CreateTask(&Task);
}
}
}
}
break;
case SEESAW_WEIGHT_MATCH:
break;
case SEESAW_WEIGHT_COMPARE:
if(SGameMgr.Seesaw.MoveCount <= 0)
{
if(SeesawCompareMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount == -1)
{
SGameMgr.Seesaw.Status = SEESAW_WEIGHT_MATCH_H_WAIT;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
SGameMgr.Seesaw.Timer = 0;
SGameMgr.Seesaw.WaitFlag = 0;
}else
{
++SGameMgr.Seesaw.MoveIndex;
SGameMgr.Seesaw.MoveCount = SeesawCompareMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawCompareMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
};
}
--SGameMgr.Seesaw.MoveCount;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed * -1;
SGameMgr.Seesaw.R_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed;
break;
case SEESAW_RETURN_DR:
if(SGameMgr.Seesaw.MoveCount<=0){
SGameMgr.Seesaw.Status = SEESAW_WAIT;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
if(++SGameMgr.As.SelectIndex > SGameMgr.As.EffectiveCardNum-1 )
{
SGameMgr.As.SelectIndex = SGameMgr.As.EffectiveCardNum-1;
SGameMgr.As.Character.Status = AS_STAND_END;
SGameMgr.As.AnmType = AS_SP_TYPE_QUESTION;
if(SGameMgr.Seesaw.R_AnswerNum - SGameMgr.Seesaw.L_AnswerNum > 0){
SGameMgr.ClearFlag = 1;
if(SGameMgr.PlayLevel==SEES_GAME_MAX_LEVEL_NUM-1){
SGameMgr.AllClearFlag = 1;
}
if(++SGameMgr.PlayLevel > SEES_GAME_MAX_LEVEL_NUM-1){
SGameMgr.PlayLevel = SEES_GAME_MAX_LEVEL_NUM-1;
}
}else
{
SGameMgr.FalseFlag = 1;
}
}else
{
SGameMgr.As.Character.Status = AS_ONCE_AGAIN;
SGameMgr.As.AnmType = AS_SP_TYPE_ONCE_AGAIN;
SGameMgr.As.Timer = 0;
SGameMgr.Dr.AnmBase = DR_ANM_BASE_WAIT;
SGameMgr.Ky.AnmBase = KY_ANM_BASE_WAIT;
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] = AS_RETRY_SCRIPT_BASE;
Task.user[2] = AS_RETRY_SCRIPT_NUM;
CreateTask(&Task);
}
}
--SGameMgr.Seesaw.MoveCount;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed * -1;
SGameMgr.Seesaw.R_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed;
break;
case SEESAW_RETURN_KY:
if(SGameMgr.Seesaw.MoveCount<=0){
SGameMgr.Seesaw.Status = SEESAW_WAIT;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
if(++SGameMgr.As.SelectIndex > SGameMgr.As.EffectiveCardNum-1 )
{
SGameMgr.As.SelectIndex = SGameMgr.As.EffectiveCardNum-1;
SGameMgr.As.Character.Status = AS_STAND_END;
SGameMgr.As.AnmType = AS_SP_TYPE_QUESTION;
if(SGameMgr.Seesaw.R_AnswerNum - SGameMgr.Seesaw.L_AnswerNum > 0){
SGameMgr.ClearFlag = 1;
if(SGameMgr.PlayLevel==SEES_GAME_MAX_LEVEL_NUM-1){
SGameMgr.AllClearFlag = 1;
}
if(++SGameMgr.PlayLevel > SEES_GAME_MAX_LEVEL_NUM-1){
SGameMgr.PlayLevel = SEES_GAME_MAX_LEVEL_NUM-1;
}
}else
{
SGameMgr.FalseFlag = 1;
}
}else
{
SGameMgr.As.Character.Status = AS_ONCE_AGAIN;
SGameMgr.As.AnmType = AS_SP_TYPE_ONCE_AGAIN;
SGameMgr.As.Timer = 0;
SGameMgr.Dr.AnmBase = DR_ANM_BASE_WAIT;
SGameMgr.Ky.AnmBase = KY_ANM_BASE_WAIT;
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] = AS_RETRY_SCRIPT_BASE;
Task.user[2] = AS_RETRY_SCRIPT_NUM;
CreateTask(&Task);
}
}
--SGameMgr.Seesaw.MoveCount;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed * -1;
SGameMgr.Seesaw.R_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed;
break;
case SEESAW_WEIGHT_HEAVY_DR:
if(SGameMgr.Seesaw.MoveCount<=0){
SGameMgr.Seesaw.Status = SEESAW_WAIT;
}
--SGameMgr.Seesaw.MoveCount;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed * -1;
SGameMgr.Seesaw.R_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed;
break;
case SEESAW_WEIGHT_HEAVY_KY:
if(SGameMgr.Seesaw.MoveCount<=0){
SGameMgr.Seesaw.Status = SEESAW_WAIT;
}
--SGameMgr.Seesaw.MoveCount;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed * -1;
SGameMgr.Seesaw.R_Base.OPos.y += SGameMgr.Seesaw.MoveDirect * SGameMgr.Seesaw.MoveSpeed;
break;
default:
}
SpData.No = SGameMgr.Seesaw.L_Base.Anm.Data.no;
SpData.PosX = SGameMgr.Seesaw.L_Base.Pos.x;
SpData.PosY = SGameMgr.Seesaw.L_Base.Pos.y + SGameMgr.Seesaw.L_Base.OPos.y;
SpData.PosZ = PRIORITY_SEESAW;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SGameMgr.Seesaw.R_Base.Anm.Data.no;
SpData.PosX = SGameMgr.Seesaw.R_Base.Pos.x;
SpData.PosY = SGameMgr.Seesaw.R_Base.Pos.y + SGameMgr.Seesaw.R_Base.OPos.y;
SpData.PosZ = PRIORITY_SEESAW;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = AnswerLightSpriteTable[SEESAW_LEFT_LIGHT_BASE + SGameMgr.Seesaw.L_AnswerNum];
SpData.PosX = 140;
SpData.PosY = 57 + BG_OFFSET_Y;
SpData.PosZ = PRIORITY_SEESAW;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = AnswerLightSpriteTable[SEESAW_RIGHT_LIGHT_BASE + SGameMgr.Seesaw.R_AnswerNum];
SpData.PosX = 170;
SpData.PosY = 57 + BG_OFFSET_Y;
SpData.PosZ = PRIORITY_SEESAW;
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 LightFlushTask(TASK* ip_task)
{
static SEES_SPRITE_DATA LightFlushSpriteTable[]={
{ SEES_CHAR_GAME_LEFT_LIGHT_FLUSH, 136, 31+BG_OFFSET_Y },
{ SEES_CHAR_GAME_RIGHT_LIGHT_FLUSH, 164, 31+BG_OFFSET_Y },
};
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
ip_task->user[1] = 0;
ssPlaySe(SEES_SE_03);
break;
case TASK_MODE_MAIN:
SpData.No = LightFlushSpriteTable[ ip_task->user[0] ].No;
SpData.PosX = LightFlushSpriteTable[ ip_task->user[0] ].Ofx;
SpData.PosY = LightFlushSpriteTable[ ip_task->user[0] ].Ofy;
SpData.PosZ = PRIORITY_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
if(++ip_task->user[1] >= MACHINE_LIGHT_FLUSH_TIME){
ip_task->mode = TASK_MODE_EXIT;
}
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int CardCastTask(TASK* ip_task)
{
SPRITE_DATA SpData;
int i,cardtype;
TASK Task;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
ip_task->user[0] = 0;
if(SGameMgr.PlayLevel == 0){
SGameMgr.CardCast.EffectiveNum = EFFECTIVE_CARD_BOX_NUM*2;
cardtype = CARD_TYPE_BOX;
}else{
SGameMgr.CardCast.EffectiveNum = EFFECTIVE_CARD_STAR_NUM*2;
cardtype = CARD_TYPE_STAR;
}
SGameMgr.CardCast.Index = rand() % MAX_GAME_PATTERN_NUM;
SGameMgr.CardCast.DeelSide = rand() % 2;
SGameMgr.CardCast.Timer = 0;
for(i=0;i<SGameMgr.CardCast.EffectiveNum;i++)
{
SGameMgr.CardCast.Card[i].Character.Status = CARD_CAST_WAIT;
SGameMgr.CardCast.Card[i].Character.Anm.Index = 0;
SGameMgr.CardCast.Card[i].Character.Anm.Data.no = 0;
SGameMgr.CardCast.Card[i].Character.Anm.Data.wt = 0;
if(cardtype==CARD_TYPE_STAR) SGameMgr.CardCast.Card[i].Character.Pos.x = 22+i*(26+2);
else SGameMgr.CardCast.Card[i].Character.Pos.x = 20+i*(40+8);
SGameMgr.CardCast.Card[i].Character.Pos.y = 89+BG_OFFSET_Y;
SGameMgr.CardCast.Card[i].Character.Pos.z = PRIORITY_CARD;
SGameMgr.CardCast.Card[i].Character.OPos.x = 0;
SGameMgr.CardCast.Card[i].Character.OPos.y = 0;
SGameMgr.CardCast.Card[i].Character.OPos.z = 0;
SGameMgr.CardCast.Card[i].Character.Spd.dx = 0;
SGameMgr.CardCast.Card[i].Character.Spd.dy = 0;
SGameMgr.CardCast.Card[i].Character.Spd.sx = 0;
SGameMgr.CardCast.Card[i].Character.Spd.sy = 0;
SGameMgr.CardCast.Card[i].Data.No = CardCastDataTable[SGameMgr.PlayLevel][SGameMgr.CardCast.Index][i];
SGameMgr.CardCast.Card[i].Data.Flag = 1;
SGameMgr.CardCast.Card[i].Data.Side = CARD_SIDE_HEADS;
SGameMgr.CardCast.Card[i].DrawFlag = 1;
SGameMgr.CardCast.Card[i].Type = cardtype;
SGameMgr.CardCast.CastDeelTimer[i] = i*CARD_DEAL_WAIT_TIME;
SGameMgr.CardCast.CastTurnOverTimer[i] = i*CARD_DEAL_WAIT_TIME;;
}
GameMgr.FadeFlag = FadeIn;
ssPlayBgm(SEES_BGM_00);
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] = INTRODUCE_CARD_CAST_SCRIPT_BASE;
Task.user[2] = INTRODUCE_CARD_CAST_SCRIPT_NUM;
CreateTask(&Task);
break;
case TASK_MODE_MAIN:
++SGameMgr.CardCast.Timer;
for(i=0;i<SGameMgr.CardCast.EffectiveNum;i++)
{
switch(SGameMgr.CardCast.Card[i].Character.Status)
{
case CARD_CAST_WAIT:
break;
case CARD_CAST_TURN_OVER:
if( --SGameMgr.CardCast.CastDeelTimer[i] <= 0 ){
SGameMgr.CardCast.Card[i].Data.Side = CARD_SIDE_TAIL;
if( SGameMgr.CardCast.Card[SGameMgr.CardCast.EffectiveNum-1].Data.Side == CARD_SIDE_TAIL ){
SGameMgr.CardCast.Card[i].Character.Status = CARD_CAST_DEAL;
}
}
break;
case CARD_CAST_DEAL:
if(--SGameMgr.CardCast.CastTurnOverTimer[i] <= 0){
SGameMgr.CardCast.Card[i].DrawFlag = 0;
SGameMgr.CardCast.Card[i].Character.Status = CARD_CAST_END;
SetDrawFlagUserCard(i);
ssPlaySe(SEES_SE_05);
if(++ip_task->user[0] >= SGameMgr.CardCast.EffectiveNum ) {
ip_task->mode = TASK_MODE_EXIT;
}
}
break;
case CARD_CAST_END:
break;
default:
}
if(SGameMgr.CardCast.Card[i].Character.Status != CARD_CAST_END){
DrawCard( SGameMgr.CardCast.Card[i].Type,
SGameMgr.CardCast.Card[i].Data.No,
SGameMgr.CardCast.Card[i].Data.Side,
SGameMgr.CardCast.Card[i].Character.Pos.x + SGameMgr.CardCast.Card[i].Character.OPos.x,
SGameMgr.CardCast.Card[i].Character.Pos.y + SGameMgr.CardCast.Card[i].Character.OPos.y,
SGameMgr.CardCast.Card[i].Character.Pos.z + SGameMgr.CardCast.Card[i].Character.OPos.z);
}
}
break;
case TASK_MODE_EXIT:
SGameMgr.As.Character.Status = AS_HAND_HEAD;
SGameMgr.As.AnmType = AS_SP_TYPE_SELECT_QUESTION_00;
Task.func = PlayerTask;
Task.priority = TASK_NO_GAME_PLAYER;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_GAME_PLAYER;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "PlayerTask";
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);
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int PlayerTask(TASK* ip_task)
{
static int ConvertTable[] ={-1,4,3,2,1,0};
SPRITE_DATA SpData;
int dirindex;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
SGameMgr.Player.AnswerIndex = 0;
if(SGameMgr.PlayLevel==0){
SGameMgr.Player.CardType = CARD_TYPE_BOX;
SGameMgr.Player.EffectiveIndexNum = EFFECTIVE_CARD_BOX_NUM;
}
else{
SGameMgr.Player.CardType = CARD_TYPE_STAR;
SGameMgr.Player.EffectiveIndexNum = EFFECTIVE_CARD_STAR_NUM;
}
SGameMgr.Player.WaitFlag = 0;
SGameMgr.Player.WaitTimer = GET_DA_STATUS_WAIT_TIME;
SGameMgr.Player.Character.Status = PLAYER_WAIT;
SGameMgr.Player.Character.Anm.Data.no = SEES_CHAR_GAME_SELECT_ANSWER_CURSOR;
SGameMgr.Player.Character.Anm.Data.wt = 0;
SGameMgr.Player.Character.Anm.Index = 0;
SGameMgr.Player.Character.Pos.x = KyCardPosTable[SGameMgr.Player.CardType][SGameMgr.Player.AnswerIndex].x;
SGameMgr.Player.Character.Pos.y = KyCardPosTable[SGameMgr.Player.CardType][SGameMgr.Player.AnswerIndex].y;
SGameMgr.Player.Character.Pos.z = PRIORITY_CURSOR;
SGameMgr.Player.Character.OPos.x = 16;
SGameMgr.Player.Character.OPos.y = 12;
SGameMgr.Player.Character.OPos.z = 0;
SGameMgr.Player.Character.Spd.dx = 0;
SGameMgr.Player.Character.Spd.dy = 0;
SGameMgr.Player.Character.Spd.sx = 0;
SGameMgr.Player.Character.Spd.sy = 0;
break;
case TASK_MODE_MAIN:
switch(SGameMgr.Player.Character.Status)
{
case PLAYER_WAIT:
break;
case PLAYER_XA_WAIT:
if(--SGameMgr.Player.WaitTimer<=0) SGameMgr.Player.WaitFlag=0;
if(!SGameMgr.Player.WaitFlag){
if(dSoundStatus == DslStatStandby){
SGameMgr.Player.Character.Status=PLAYER_SELECT;
ChangePlayerCursorIndex();
}
}
break;
case PLAYER_SELECT:
if(SGameMgr.Player.CardType==CARD_TYPE_BOX)
{
switch(SGameMgr.Player.AnswerIndex)
{
case 0:
if(JstPad & PADLleft)
{
if(SGameMgr.Ky.Card[2].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 2;
}else
if(SGameMgr.Ky.Card[1].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 1;
}else{
}
}else
if(JstPad & PADLright)
{
if(SGameMgr.Ky.Card[1].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 1;
}else
if(SGameMgr.Ky.Card[2].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 2;
}else{
}
}else
if(JstPad & PADLdown)
{
if(SGameMgr.Ky.Card[1].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 1;
}else
if(SGameMgr.Ky.Card[2].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 2;
}else{
}
}else{
}
break;
case 1:
if(JstPad & PADLright)
{
if(SGameMgr.Ky.Card[2].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 2;
}else
if(SGameMgr.Ky.Card[0].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 0;
}else{
}
}else
if(JstPad & PADLleft)
{
if(SGameMgr.Ky.Card[0].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 0;
}else
if(SGameMgr.Ky.Card[2].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 2;
}else{
}
}else
if(JstPad & PADLup)
{
if(SGameMgr.Ky.Card[0].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 0;
}else{
}
}else{
}
break;
case 2:
if(JstPad & PADLright)
{
if(SGameMgr.Ky.Card[0].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 0;
}else
if(SGameMgr.Ky.Card[1].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 1;
}else{
}
}else
if(JstPad & PADLleft)
{
if(SGameMgr.Ky.Card[1].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 1;
}else
if(SGameMgr.Ky.Card[0].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 0;
}else{
}
}else
if(JstPad & PADLup)
{
if(SGameMgr.Ky.Card[0].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 0;
}else{
}
}else{
}
break;
default:
}
}else
{
dirindex = 0;
switch(SGameMgr.Player.AnswerIndex)
{
case 0:
if(JstPad & PADLup)
{
if(SGameMgr.Ky.Card[3].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 3;
}
}else
if(JstPad & PADLdown)
{
if(SGameMgr.Ky.Card[3].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 3;
}
}else
if(JstPad & PADLleft)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else
if(JstPad & PADLright)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else{
}
break;
case 1:
if(JstPad & PADLup)
{
if(SGameMgr.Ky.Card[4].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 4;
}
}else
if(JstPad & PADLdown)
{
if(SGameMgr.Ky.Card[4].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 4;
}
}else
if(JstPad & PADLleft)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else
if(JstPad & PADLright)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else{
}
break;
case 2:
if(JstPad & PADLup)
{
}else
if(JstPad & PADLdown)
{
}else
if(JstPad & PADLleft)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else
if(JstPad & PADLright)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else{
}
break;
case 3:
if(JstPad & PADLup)
{
if(SGameMgr.Ky.Card[0].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 0;
}
}else
if(JstPad & PADLdown)
{
if(SGameMgr.Ky.Card[0].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 0;
}
}else
if(JstPad & PADLleft)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else
if(JstPad & PADLright)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else{
}
break;
case 4:
if(JstPad & PADLup)
{
if(SGameMgr.Ky.Card[1].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 1;
}
}else
if(JstPad & PADLdown)
{
if(SGameMgr.Ky.Card[1].Data.Flag){
ssPlaySe(BUTONSE_LEVER);
SGameMgr.Player.AnswerIndex = 1;
}
}else
if(JstPad & PADLleft)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+ConvertTable[dirindex])%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else
if(JstPad & PADLright)
{
for(dirindex=1;dirindex<EFFECTIVE_CARD_STAR_NUM;dirindex++){
if(SGameMgr.Ky.Card[(SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM].Data.Flag){
SGameMgr.Player.AnswerIndex = (SGameMgr.Player.AnswerIndex+dirindex)%EFFECTIVE_CARD_STAR_NUM;
ssPlaySe(BUTONSE_LEVER);
break;
}else{
continue;
}
}
}else{
}
break;
default:
}
}
if(SGameMgr.Ky.Card[SGameMgr.Player.AnswerIndex].Data.Flag != 0)
{
if(JstPad & PADRright){
SGameMgr.Ky.Card[SGameMgr.Player.AnswerIndex].Character.Status = CARD_RISE;
SGameMgr.Player.Character.Status = PLAYER_WAIT;
ssPlaySe(BUTONSE_MARU);
ssPlaySe(SEES_SE_06);
}
}
break;
default:
}
SGameMgr.Player.Character.Pos.x = KyCardPosTable[SGameMgr.Player.CardType][SGameMgr.Player.AnswerIndex].x;
SGameMgr.Player.Character.Pos.y = KyCardPosTable[SGameMgr.Player.CardType][SGameMgr.Player.AnswerIndex].y;
if(SGameMgr.Player.Character.Status == PLAYER_SELECT){
GameMgr.WaitFlag = OFF;
SpData.No = SGameMgr.Player.Character.Anm.Data.no;
SpData.PosX = SGameMgr.Player.Character.Pos.x+SGameMgr.Player.Character.OPos.x;
SpData.PosY = SGameMgr.Player.Character.Pos.y+SGameMgr.Player.Character.OPos.y;
SpData.PosZ = SGameMgr.Player.Character.Pos.z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
else{
GameMgr.WaitFlag = ON;
}
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int DrTask(TASK* ip_task)
{
SPRITE_DATA SpData;
int i,count,lpc,cardtype,rval,DrCardIndex;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
SGameMgr.Dr.AnmBase = DR_ANM_BASE_WAIT;
SGameMgr.Dr.Character.Status = CAST_MOVE;
SGameMgr.Dr.Character.Anm.Index = 0;
SGameMgr.Dr.Character.Anm.Data.no = DrGameSpriteTable[SGameMgr.Dr.AnmBase + SGameMgr.Dr.Character.Anm.Index].No;
SGameMgr.Dr.Character.Anm.Data.wt = 0;
SGameMgr.Dr.Character.Pos.x = 46;
SGameMgr.Dr.Character.Pos.y = 0;
SGameMgr.Dr.Character.Pos.z = PRIORITY_CAST;
SGameMgr.Dr.Character.OPos.x = DrGameSpriteTable[SGameMgr.Dr.AnmBase + SGameMgr.Dr.Character.Anm.Index].Ofx;
SGameMgr.Dr.Character.OPos.y = DrGameSpriteTable[SGameMgr.Dr.AnmBase + SGameMgr.Dr.Character.Anm.Index].Ofy;
SGameMgr.Dr.Character.OPos.z = 0;
SGameMgr.Dr.Character.Spd.dx = 0;
SGameMgr.Dr.Character.Spd.dy = 0;
SGameMgr.Dr.Character.Spd.sx = 0;
SGameMgr.Dr.Character.Spd.sy = 0;
SGameMgr.Dr.Timer = 0;
break;
case TASK_MODE_MAIN:
switch(SGameMgr.Dr.Character.Status)
{
case CAST_WAIT:
break;
case CAST_MOVE:
SGameMgr.Dr.Character.Pos.y = SGameMgr.Seesaw.L_Base.Pos.y + SGameMgr.Seesaw.L_Base.OPos.y;
break;
case CAST_RISE:
SGameMgr.Dr.Character.Pos.y += CAST_RISE_SPEED_Y;
if(SGameMgr.Dr.Character.Pos.y < CAST_RISE_STOP_Y){
SGameMgr.Dr.Character.Status = CAST_FLY;
SGameMgr.Dr.Timer = 0;
SGameMgr.Ky.AnmBase = KY_ANM_BASE_PLEASURE;
SGameMgr.Ky.Character.Anm.Data.wt = 0;
SGameMgr.Ky.Character.Anm.Index = 0;
SGameMgr.Ky.Card[SGameMgr.Player.AnswerIndex].Character.Status = CARD_FLY;
}
break;
case CAST_FLY:
if(++SGameMgr.Dr.Timer > CAST_FLY_WAIT_TIME){
SGameMgr.Dr.Timer = 0;
SGameMgr.Dr.Character.Status = CAST_FALL;
SGameMgr.Dr.AnmBase = DR_ANM_BASE_FALL;
SGameMgr.Dr.Character.Anm.Data.wt = 0;
SGameMgr.Dr.Character.Anm.Index = 0;
DrCardIndex = AsSelectCardIndexTable[SGameMgr.PlayLevel][SGameMgr.As.SelectOrderIndex][SGameMgr.As.SelectIndex];
SGameMgr.Dr.Card[DrCardIndex].Character.Status = CARD_DEATH;
SGameMgr.Dr.Card[DrCardIndex].Data.Flag = 0;
SGameMgr.Dr.Card[DrCardIndex].DrawFlag = 0;
}
break;
case CAST_FALL:
SGameMgr.Dr.Character.Pos.y += CAST_FALL_SPEED_Y;
if(SGameMgr.Dr.Character.Pos.y >= SGameMgr.Seesaw.L_Base.Pos.y - SEESAW_DISTANCE_04){
SGameMgr.Dr.Character.Status = CAST_MOVE;
SGameMgr.Dr.AnmBase = DR_ANM_BASE_WAIT;
SGameMgr.Dr.Character.Anm.Data.wt = 0;
SGameMgr.Dr.Character.Anm.Index = 0;
SGameMgr.Seesaw.Status = SEESAW_RETURN_DR;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveCount = SeesawReturnDrMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawReturnDrMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y = -8;
SGameMgr.Seesaw.R_Base.OPos.y = 8;
ssPlaySe(SEES_SE_07);
}
break;
default:
}
if(++SGameMgr.Dr.Character.Anm.Data.wt > CAST_ANM_WAIT_TIME)
{
SGameMgr.Dr.Character.Anm.Data.wt = 0;
SGameMgr.Dr.Character.Anm.Index ^= 1;
SGameMgr.Dr.Character.Anm.Data.no = DrGameSpriteTable[SGameMgr.Dr.AnmBase + SGameMgr.Dr.Character.Anm.Index].No;
SGameMgr.Dr.Character.OPos.x = DrGameSpriteTable[SGameMgr.Dr.AnmBase + SGameMgr.Dr.Character.Anm.Index].Ofx;
SGameMgr.Dr.Character.OPos.y = DrGameSpriteTable[SGameMgr.Dr.AnmBase + SGameMgr.Dr.Character.Anm.Index].Ofy;
}
SpData.No = SGameMgr.Dr.Character.Anm.Data.no;
SpData.PosX = SGameMgr.Dr.Character.Pos.x + SGameMgr.Dr.Character.OPos.x;
SpData.PosY = SGameMgr.Dr.Character.Pos.y + SGameMgr.Dr.Character.OPos.y;
SpData.PosZ = SGameMgr.Dr.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 KyTask(TASK* ip_task)
{
SPRITE_DATA SpData;
int i,count,lpc,drno,KyCardIndex;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
SGameMgr.Ky.AnmBase = KY_ANM_BASE_WAIT;
SGameMgr.Ky.Character.Status = CAST_MOVE;
SGameMgr.Ky.Character.Anm.Index = 0;
SGameMgr.Ky.Character.Anm.Data.no = KyGameSpriteTable[SGameMgr.Ky.AnmBase + SGameMgr.Ky.Character.Anm.Index].No;
SGameMgr.Ky.Character.Anm.Data.wt = 0;
SGameMgr.Ky.Character.Pos.x = 226;
SGameMgr.Ky.Character.Pos.y = 0;
SGameMgr.Ky.Character.Pos.z = PRIORITY_CAST;
SGameMgr.Ky.Character.OPos.x = KyGameSpriteTable[SGameMgr.Ky.AnmBase + SGameMgr.Ky.Character.Anm.Index].Ofx;
SGameMgr.Ky.Character.OPos.y = KyGameSpriteTable[SGameMgr.Ky.AnmBase + SGameMgr.Ky.Character.Anm.Index].Ofy;
SGameMgr.Ky.Character.OPos.z = 0;
SGameMgr.Ky.Character.Spd.dx = 0;
SGameMgr.Ky.Character.Spd.dy = 0;
SGameMgr.Ky.Character.Spd.sx = 0;
SGameMgr.Ky.Character.Spd.sy = 0;
SGameMgr.Ky.Timer = 0;
break;
case TASK_MODE_MAIN:
switch(SGameMgr.Ky.Character.Status)
{
case CAST_WAIT:
break;
case CAST_MOVE:
SGameMgr.Ky.Character.Pos.y = SGameMgr.Seesaw.R_Base.Pos.y + SGameMgr.Seesaw.R_Base.OPos.y;
break;
case CAST_RISE:
SGameMgr.Ky.Character.Pos.y += CAST_RISE_SPEED_Y;
if(SGameMgr.Ky.Character.Pos.y < CAST_RISE_STOP_Y){
SGameMgr.Ky.Character.Status = CAST_FLY;
SGameMgr.Ky.Timer = 0;
SGameMgr.Dr.AnmBase = DR_ANM_BASE_PLEASURE;
SGameMgr.Dr.Character.Anm.Data.wt = 0;
SGameMgr.Dr.Character.Anm.Index = 0;
SGameMgr.Dr.Card[ AsSelectCardIndexTable[SGameMgr.PlayLevel][SGameMgr.As.SelectOrderIndex][SGameMgr.As.SelectIndex]].Character.Status = CARD_FLY;
}
break;
case CAST_FLY:
if(++SGameMgr.Ky.Timer > CAST_FLY_WAIT_TIME){
SGameMgr.Ky.Timer = 0;
SGameMgr.Ky.Character.Status = CAST_FALL;
SGameMgr.Ky.AnmBase = KY_ANM_BASE_FALL;
SGameMgr.Ky.Character.Anm.Data.wt = 0;
SGameMgr.Ky.Character.Anm.Index = 0;
KyCardIndex = SGameMgr.Player.AnswerIndex;
SGameMgr.Ky.Card[KyCardIndex].Character.Status = CARD_DEATH;
SGameMgr.Ky.Card[KyCardIndex].Data.Flag = 0;
SGameMgr.Ky.Card[KyCardIndex].DrawFlag = 0;
}
break;
case CAST_FALL:
SGameMgr.Ky.Character.Pos.y += CAST_FALL_SPEED_Y;
if(SGameMgr.Ky.Character.Pos.y >= SGameMgr.Seesaw.R_Base.Pos.y - SEESAW_DISTANCE_04){
SGameMgr.Ky.Character.Status = CAST_MOVE;
SGameMgr.Ky.AnmBase = KY_ANM_BASE_WAIT;
SGameMgr.Ky.Character.Anm.Data.wt = 0;
SGameMgr.Ky.Character.Anm.Index = 0;
SGameMgr.Seesaw.Status = SEESAW_RETURN_KY;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveCount = SeesawReturnKyMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawReturnKyMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y = 8;
SGameMgr.Seesaw.R_Base.OPos.y = -8;
ssPlaySe(SEES_SE_07);
}
break;
default:
}
if(++SGameMgr.Ky.Character.Anm.Data.wt > CAST_ANM_WAIT_TIME)
{
SGameMgr.Ky.Character.Anm.Data.wt = 0;
SGameMgr.Ky.Character.Anm.Index ^= 1;
SGameMgr.Ky.Character.Anm.Data.no = KyGameSpriteTable[SGameMgr.Ky.AnmBase + SGameMgr.Ky.Character.Anm.Index].No;
SGameMgr.Ky.Character.OPos.x = KyGameSpriteTable[SGameMgr.Ky.AnmBase + SGameMgr.Ky.Character.Anm.Index].Ofx;
SGameMgr.Ky.Character.OPos.y = KyGameSpriteTable[SGameMgr.Ky.AnmBase + SGameMgr.Ky.Character.Anm.Index].Ofy;
}
SpData.No = SGameMgr.Ky.Character.Anm.Data.no;
SpData.PosX = SGameMgr.Ky.Character.Pos.x + SGameMgr.Ky.Character.OPos.x;
SpData.PosY = SGameMgr.Ky.Character.Pos.y + SGameMgr.Ky.Character.OPos.y;
SpData.PosZ = SGameMgr.Ky.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 AsTask(TASK* ip_task)
{
SPRITE_DATA SpData;
TASK Task;
int i,DrCardIndex;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if(SGameMgr.PlayLevel == 0){
SGameMgr.As.EffectiveCardNum = EFFECTIVE_CARD_BOX_NUM;
}else{
SGameMgr.As.EffectiveCardNum = EFFECTIVE_CARD_STAR_NUM;
}
SGameMgr.As.AnmType = AS_SP_TYPE_STAND;
SGameMgr.As.SelectIndex = 0;
SGameMgr.As.SelectOrderIndex = rand()%MAX_GAME_PATTERN_NUM;
SGameMgr.As.Timer = 0;
SGameMgr.As.AnmIndex = 0;
SGameMgr.As.AnmBase = 0;
SGameMgr.As.AnmWaitTime = 0;
SGameMgr.As.Character.Status = AS_STAND;
SGameMgr.As.Character.Anm.Index = 0;
SGameMgr.As.Character.Anm.Data.no = 0;
SGameMgr.As.Character.Anm.Data.wt = 0;
SGameMgr.As.Character.Pos.x = 0;
SGameMgr.As.Character.Pos.y = 0;
SGameMgr.As.Character.Pos.z = PRIORITY_CAST;
SGameMgr.As.Character.OPos.x = 0;
SGameMgr.As.Character.OPos.y = 0;
SGameMgr.As.Character.OPos.z = 0;
SGameMgr.As.Character.Spd.dx = 0;
SGameMgr.As.Character.Spd.dy = 0;
SGameMgr.As.Character.Spd.sx = 0;
SGameMgr.As.Character.Spd.sy = 0;
break;
case TASK_MODE_MAIN:
switch(SGameMgr.As.Character.Status)
{
case AS_STAND:
if(++SGameMgr.As.Timer >= AS_STAND_WAIT_TIME)
{
SGameMgr.As.Timer = 0;
SGameMgr.As.Character.Status = AS_SPEAK;
SGameMgr.As.AnmIndex = 0;
SGameMgr.As.AnmBase = AS_SP_TYPE_QUESTION;
SGameMgr.As.AnmWaitTime = 0;
}
break;
case AS_SPEAK:
if(++SGameMgr.As.AnmWaitTime >= AS_ANM_WAIT_TIME){
SGameMgr.As.AnmWaitTime = 0;
SGameMgr.As.AnmIndex ^= 1;
SGameMgr.As.AnmType = SGameMgr.As.AnmBase + SGameMgr.As.AnmIndex;
}
if(++SGameMgr.As.Timer >= AS_SPEAK_TIME)
{
SGameMgr.As.Timer = 0;
SGameMgr.As.Character.Status = AS_SPEAK_AFTER;
SGameMgr.As.AnmType = AS_SP_TYPE_QUESTION;
for(i=0;i<MAX_CARD_NUM;i++){
SGameMgr.CardCast.Card[i].Character.Status = CARD_CAST_TURN_OVER;
}
}
break;
case AS_SPEAK_AFTER:
break;
case AS_ONCE_AGAIN:
if(++SGameMgr.As.Timer >= AS_ONCE_AGAIN_TIME)
{
SGameMgr.As.Character.Status = AS_HAND_HEAD;
SGameMgr.As.AnmType = AS_SP_TYPE_SELECT_QUESTION_00;
SGameMgr.As.Timer = 0;
ssPlaySe(SEES_SE_00);
}
break;
case AS_HAND_HEAD:
if(++SGameMgr.As.Timer >= AS_WAIT_SELECT_CARD_TIME)
{
SGameMgr.As.Timer = 0;
SGameMgr.As.Character.Status = AS_SELECT_QUESTION;
if( SGameMgr.As.EffectiveCardNum == EFFECTIVE_CARD_BOX_NUM )
{
SGameMgr.As.AnmType = AsSelectBoxAnswerSpriteTypeTable[ AsSelectCardIndexTable[SGameMgr.PlayLevel][SGameMgr.As.SelectOrderIndex][SGameMgr.As.SelectIndex] ];
}else
{
SGameMgr.As.AnmType = AsSelectCardAnswerSpriteTypeTable[ AsSelectCardIndexTable[SGameMgr.PlayLevel][SGameMgr.As.SelectOrderIndex][SGameMgr.As.SelectIndex] ];
}
ssPlaySe(SEES_SE_05);
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] = AS_SELECT_CARD_SCRIPT_BASE;
Task.user[2] = AS_SELECT_CARD_SCRIPT_NUM;
CreateTask(&Task);
}
break;
case AS_SELECT_QUESTION:
if(++SGameMgr.As.Timer >= AS_SELECT_CARD_TIME)
{
SGameMgr.As.Timer = 0;
SGameMgr.As.Character.Status = AS_HAND_UP;
SGameMgr.As.AnmType = AS_SP_TYPE_QUESTION;
DrCardIndex = AsSelectCardIndexTable[SGameMgr.PlayLevel][SGameMgr.As.SelectOrderIndex][SGameMgr.As.SelectIndex];
SGameMgr.Dr.Card[DrCardIndex].Character.Status = CARD_RISE;
ssPlaySe(SEES_SE_06);
}
break;
case AS_HAND_UP:
break;
case AS_STAND_END:
break;
default:
}
for(i=0;i<10;i++){
if( AsGamePartsIndexTable[SGameMgr.As.AnmType][i]==-1 ) break;
SpData.No = AsGameSpriteTable[ AsGamePartsIndexTable[SGameMgr.As.AnmType][i] ].No;
SpData.PosX = AsGameSpriteTable[ AsGamePartsIndexTable[SGameMgr.As.AnmType][i] ].Ofx;
SpData.PosY = AsGameSpriteTable[ AsGamePartsIndexTable[SGameMgr.As.AnmType][i] ].Ofy;
SpData.PosZ = SGameMgr.As.Character.Pos.z-i;
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 DrCardTask(TASK* ip_task)
{
SPRITE_DATA SpData;
TASK Task;
int i,rval,cardtype;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if(SGameMgr.PlayLevel == 0){
SGameMgr.Dr.EffectiveCardNum = EFFECTIVE_CARD_BOX_NUM;
cardtype = CARD_TYPE_BOX;
}else{
SGameMgr.Dr.EffectiveCardNum = EFFECTIVE_CARD_STAR_NUM;
cardtype = CARD_TYPE_STAR;
}
rval= rand() % SGameMgr.Dr.EffectiveCardNum;
for(i=0;i<SGameMgr.Dr.EffectiveCardNum;i++)
{
SGameMgr.Dr.Card[i].Character.Status = CARD_WAIT;
SGameMgr.Dr.Card[i].Character.Anm.Index = 0;
SGameMgr.Dr.Card[i].Character.Anm.Data.no = 0;
SGameMgr.Dr.Card[i].Character.Anm.Data.wt = 0;
SGameMgr.Dr.Card[i].Character.Pos.x = DrCardPosTable[cardtype][i].x;
SGameMgr.Dr.Card[i].Character.Pos.y = DrCardPosTable[cardtype][i].y;
SGameMgr.Dr.Card[i].Character.Pos.z = PRIORITY_CARD - i*2;
SGameMgr.Dr.Card[i].Character.OPos.x = 0;
SGameMgr.Dr.Card[i].Character.OPos.y = 0;
SGameMgr.Dr.Card[i].Character.OPos.z = 0;
SGameMgr.Dr.Card[i].Character.Spd.dx = 0;
SGameMgr.Dr.Card[i].Character.Spd.dy = 0;
SGameMgr.Dr.Card[i].Character.Spd.sx = 0;
SGameMgr.Dr.Card[i].Character.Spd.sy = 0;
SGameMgr.Dr.Card[i].Data.No = CardDeelDataTable[SGameMgr.PlayLevel][SGameMgr.CardCast.DeelSide][SGameMgr.CardCast.Index][ CardDeelDataRandomTable[SGameMgr.PlayLevel][rval][i] ];
SGameMgr.Dr.Card[i].Data.Flag = 1;
SGameMgr.Dr.Card[i].Data.Side = CARD_SIDE_TAIL;
SGameMgr.Dr.Card[i].DrawFlag = 0;
SGameMgr.Dr.Card[i].Type = cardtype;
SGameMgr.Dr.Card[i].Timer = 0;
}
break;
case TASK_MODE_MAIN:
for(i=0;i<SGameMgr.Dr.EffectiveCardNum;i++){
switch(SGameMgr.Dr.Card[i].Character.Status)
{
case CARD_WAIT:
break;
case CARD_SELECT_WAIT:
break;
case CARD_RISE:
SGameMgr.Dr.Card[i].Character.Pos.y -= CARD_RISE_SPEED_Y;
if(SGameMgr.Dr.Card[i].Character.Pos.y < CARD_RISE_STOP_POSY){
SGameMgr.Dr.Card[i].Character.Status = CARD_FALL;
SGameMgr.Dr.Card[i].Data.Side = CARD_SIDE_HEADS;
SGameMgr.Dr.AnmBase = DR_ANM_BASE_RECEIVE;
if(SGameMgr.Dr.Card[i].Type==CARD_TYPE_BOX)
{
SGameMgr.Dr.Card[i].Character.Pos.x = DR_BOX_RECEIVE_X;
SGameMgr.Dr.Card[i].Character.OPos.y = DR_BOX_RECEIVE_OFFSET_Y;
}else
{
SGameMgr.Dr.Card[i].Character.Pos.x = DR_CARD_RECEIVE_X;
SGameMgr.Dr.Card[i].Character.OPos.y = DR_CARD_RECEIVE_OFFSET_Y;
}
}
break;
case CARD_FALL:
SGameMgr.Dr.Card[i].Character.Pos.y += CARD_FALL_SPEED_Y;
if(SGameMgr.Dr.Card[i].Character.Pos.y > CARD_FALL_STOP_POSY){
SGameMgr.Dr.Card[i].Character.Status = CARD_MOVE_WITH_CAST;
SGameMgr.Seesaw.Status = SEESAW_WEIGHT_HEAVY_DR;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveCount = SeesawUpKyMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawUpKyMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y = 0;
SGameMgr.Seesaw.R_Base.OPos.y = 0;
SGameMgr.Player.Character.Status = PLAYER_XA_WAIT;
SGameMgr.Player.WaitTimer = GET_DA_STATUS_WAIT_TIME;
SGameMgr.Player.WaitFlag = 1;
ssPlaySe(SEES_SE_01);
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] = PLAYER_SELECT_CARD_SCRIPT_BASE;
Task.user[2] = PLAYER_SELECT_CARD_SCRIPT_NUM;
CreateTask(&Task);
}
break;
case CARD_MOVE_WITH_CAST:
SGameMgr.Dr.Card[i].Character.Pos.y = SGameMgr.Dr.Character.Pos.y +
SGameMgr.Dr.Character.OPos.y +
SGameMgr.Dr.Card[i].Character.OPos.y;
break;
case CARD_FLY:
SGameMgr.Dr.Card[i].Character.Pos.x -= 2;
SGameMgr.Dr.Card[i].Character.Pos.y -= 2;
if( SGameMgr.Dr.Card[i].Character.Pos.y< -20){
SGameMgr.Dr.Card[i].Character.Status=CARD_DEATH;
SGameMgr.Dr.Card[i].Data.Flag = 0;
SGameMgr.Dr.Card[i].DrawFlag = 0;
}
break;
case CARD_DEATH:
break;
default:
}
if(SGameMgr.Dr.Card[i].DrawFlag){
DrawCard( SGameMgr.Dr.Card[i].Type,
SGameMgr.Dr.Card[i].Data.No,
SGameMgr.Dr.Card[i].Data.Side,
SGameMgr.Dr.Card[i].Character.Pos.x,
SGameMgr.Dr.Card[i].Character.Pos.y,
SGameMgr.Dr.Card[i].Character.Pos.z);
}
}
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int KyCardTask(TASK* ip_task)
{
SPRITE_DATA SpData;
TASK Task;
int i,rval,cardtype;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if(SGameMgr.PlayLevel == 0){
SGameMgr.Ky.EffectiveCardNum = EFFECTIVE_CARD_BOX_NUM;
cardtype = CARD_TYPE_BOX;
}else{
SGameMgr.Ky.EffectiveCardNum = EFFECTIVE_CARD_STAR_NUM;
cardtype = CARD_TYPE_STAR;
}
rval= rand() % SGameMgr.Ky.EffectiveCardNum;
for(i=0;i<SGameMgr.Ky.EffectiveCardNum;i++)
{
SGameMgr.Ky.Card[i].Character.Status = CARD_WAIT;
SGameMgr.Ky.Card[i].Character.Anm.Index = 0;
SGameMgr.Ky.Card[i].Character.Anm.Data.no = 0;
SGameMgr.Ky.Card[i].Character.Anm.Data.wt = 0;
SGameMgr.Ky.Card[i].Character.Pos.x = KyCardPosTable[cardtype][i].x;
SGameMgr.Ky.Card[i].Character.Pos.y = KyCardPosTable[cardtype][i].y;
SGameMgr.Ky.Card[i].Character.Pos.z = PRIORITY_CARD - i*2;
SGameMgr.Ky.Card[i].Character.OPos.x = 0;
SGameMgr.Ky.Card[i].Character.OPos.y = 0;
SGameMgr.Ky.Card[i].Character.OPos.z = 0;
SGameMgr.Ky.Card[i].Character.Spd.dx = 0;
SGameMgr.Ky.Card[i].Character.Spd.dy = 0;
SGameMgr.Ky.Card[i].Character.Spd.sx = 0;
SGameMgr.Ky.Card[i].Character.Spd.sy = 0;
SGameMgr.Ky.Card[i].Data.No = CardDeelDataTable[SGameMgr.PlayLevel][SGameMgr.CardCast.DeelSide^1][SGameMgr.CardCast.Index][ CardDeelDataRandomTable[SGameMgr.PlayLevel][rval][i] ];
SGameMgr.Ky.Card[i].Data.Flag = 1;
SGameMgr.Ky.Card[i].Data.Side = CARD_SIDE_HEADS;
SGameMgr.Ky.Card[i].DrawFlag = 0;
SGameMgr.Ky.Card[i].Type = cardtype;
SGameMgr.Ky.Card[i].Timer = 0;
}
break;
case TASK_MODE_MAIN:
for(i=0;i<SGameMgr.Ky.EffectiveCardNum;i++){
switch(SGameMgr.Ky.Card[i].Character.Status)
{
case CARD_WAIT:
break;
case CARD_SELECT_WAIT:
break;
case CARD_RISE:
SGameMgr.Ky.Card[i].Character.Pos.y -= CARD_RISE_SPEED_Y;
if(SGameMgr.Ky.Card[i].Character.Pos.y < CARD_RISE_STOP_POSY){
SGameMgr.Ky.Card[i].Character.Status = CARD_FALL;
SGameMgr.Ky.AnmBase = KY_ANM_BASE_RECEIVE;
if(SGameMgr.Ky.Card[i].Type ==CARD_TYPE_BOX)
{
SGameMgr.Ky.Card[i].Character.Pos.x = KY_BOX_RECEIVE_X;
SGameMgr.Ky.Card[i].Character.OPos.y = KY_BOX_RECEIVE_OFFSET_Y;
}else
{
SGameMgr.Ky.Card[i].Character.Pos.x = KY_CARD_RECEIVE_X;
SGameMgr.Ky.Card[i].Character.OPos.y = KY_CARD_RECEIVE_OFFSET_Y;
}
}
break;
case CARD_FALL:
SGameMgr.Ky.Card[i].Character.Pos.y += CARD_FALL_SPEED_Y;
if(SGameMgr.Ky.Card[i].Character.Pos.y > CARD_FALL_STOP_POSY){
SGameMgr.Ky.Card[i].Character.Status = CARD_MOVE_WITH_CAST;
SGameMgr.Seesaw.Status = SEESAW_WEIGHT_COMPARE;
SGameMgr.Seesaw.MoveIndex = 0;
SGameMgr.Seesaw.MoveCount = SeesawCompareMoveData[SGameMgr.Seesaw.MoveIndex].MoveCount;
SGameMgr.Seesaw.MoveDirect = SeesawCompareMoveData[SGameMgr.Seesaw.MoveIndex].MoveDirect;
SGameMgr.Seesaw.MoveWaitTimer = 0;
SGameMgr.Seesaw.L_Base.OPos.y = 8;
SGameMgr.Seesaw.R_Base.OPos.y = -8;
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] = COMPARE_CARD_SCRIPT_BASE;
Task.user[2] = COMPARE_CARD_SCRIPT_NUM;
CreateTask(&Task);
}
break;
case CARD_MOVE_WITH_CAST:
SGameMgr.Ky.Card[i].Character.Pos.y = SGameMgr.Ky.Character.Pos.y + SGameMgr.Ky.Character.OPos.y + SGameMgr.Ky.Card[i].Character.OPos.y;
break;
case CARD_FLY:
SGameMgr.Ky.Card[i].Character.Pos.x += 2;
SGameMgr.Ky.Card[i].Character.Pos.y -= 2;
if( SGameMgr.Ky.Card[i].Character.Pos.y< -20){
SGameMgr.Ky.Card[i].Character.Status=CARD_DEATH;
SGameMgr.Ky.Card[i].Data.Flag = 0;
SGameMgr.Ky.Card[i].DrawFlag = 0;
}
break;
case CARD_DEATH:
break;
default:
}
if(SGameMgr.Ky.Card[i].DrawFlag){
DrawCard( SGameMgr.Ky.Card[i].Type,
SGameMgr.Ky.Card[i].Data.No,
SGameMgr.Ky.Card[i].Data.Side,
SGameMgr.Ky.Card[i].Character.Pos.x,
SGameMgr.Ky.Card[i].Character.Pos.y,
SGameMgr.Ky.Card[i].Character.Pos.z);
}
}
break;
case TASK_MODE_EXIT:
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int AppleCountTask(TASK* ip_task)
{
SPRITE_DATA SpData;
int offsetx;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
ip_task->user[UWORK_TIMER] = 0;
ip_task->user[UWORK_COUNT] = 0;
ip_task->user[UWORK_DR_COUNT] = 0;
ip_task->user[UWORK_KY_COUNT] = 0;
ip_task->user[UWORK_DR_STOP_COUNT] = 0;
ip_task->user[UWORK_KY_STOP_COUNT] = 0;
break;
case TASK_MODE_MAIN:
if( ++ip_task->user[UWORK_TIMER] > APPLE_COUNT_WAIT_TIME)
{
ip_task->user[UWORK_TIMER] = 0;
if(++ip_task->user[UWORK_DR_COUNT] > ip_task->user[UWORK_DR_COUNT_DATA]){
ip_task->user[UWORK_DR_COUNT] = ip_task->user[UWORK_DR_COUNT_DATA];
ip_task->user[UWORK_DR_STOP_COUNT] = 1;
}
if(++ip_task->user[UWORK_KY_COUNT] > ip_task->user[UWORK_KY_COUNT_DATA]){
ip_task->user[UWORK_KY_COUNT] = ip_task->user[UWORK_KY_COUNT_DATA];
ip_task->user[UWORK_KY_STOP_COUNT] = 1;
}
if( (ip_task->user[UWORK_DR_STOP_COUNT]==1) && (ip_task->user[UWORK_KY_STOP_COUNT]==1) )
{
ip_task->mode = TASK_MODE_EXIT;
}else
{
++ip_task->user[UWORK_COUNT];
dsPlayXa(XA_FILE_NUMB03,ip_task->user[UWORK_COUNT]);
}
}
if(ip_task->user[UWORK_COUNT] !=0 ){
if(ip_task->user[UWORK_DR_COUNT]>=10) offsetx = 11;
else offsetx = 0;
DrawNum( ip_task->user[UWORK_DR_COUNT],
WIDTH_BIG_FONT,
BigNumSpriteTable,
DR_SIDE_APPLE_COUNT_POS_X+offsetx,
DR_SIDE_APPLE_COUNT_POS_Y,
PRIORITY_NUM );
DrawBox( ip_task->user[UWORK_DR_COUNT],
ip_task->user[UWORK_DR_COUNT_DATA],
DR_SIDE_APPLE_COUNT_BOX_POS_X,
DR_SIDE_APPLE_COUNT_BOX_POS_Y,
PRIORITY_BOX);
if(ip_task->user[UWORK_KY_COUNT]>=10) offsetx = 11;
else offsetx = 0;
DrawNum( ip_task->user[UWORK_KY_COUNT],
WIDTH_BIG_FONT,
BigNumSpriteTable,
KR_SIDE_APPLE_COUNT_POS_X+offsetx,
KR_SIDE_APPLE_COUNT_POS_Y,
PRIORITY_NUM );
DrawBox( ip_task->user[UWORK_KY_COUNT],
ip_task->user[UWORK_KY_COUNT_DATA],
KY_SIDE_APPLE_COUNT_BOX_POS_X,
KY_SIDE_APPLE_COUNT_BOX_POS_Y,
PRIORITY_BOX);
}
break;
case TASK_MODE_EXIT:
SGameMgr.Seesaw.CountEndFlag=1;
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int GameBgTask(TASK* ip_task)
{
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
break;
case TASK_MODE_MAIN:
SpData.No = SEES_CHAR_GAME_GAME_BG_00;
SpData.PosX = 0;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SEES_CHAR_GAME_GAME_BG_01;
SpData.PosX = 256;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_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 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_SELECT_LEVEL);
SleepTask(TASK_NO_GAME_CARD_CAST);
SleepTask(TASK_NO_GAME_APPLE_COUNT);
SleepTask(TASK_NO_GAME_SEESAW);
SleepTask(TASK_NO_GAME_KY);
SleepTask(TASK_NO_GAME_DR);
SleepTask(TASK_NO_GAME_AS);
SleepTask(TASK_NO_GAME_DR_CARD);
SleepTask(TASK_NO_GAME_KY_CARD);
SleepTask(TASK_NO_GAME_LIGHT_FLUSH);
SleepTask(TASK_NO_GAME_PLAYER);
}else{
}
}else
{
ret = MainMenuCheck10();
if(ret==OFF)
{
ip_task->user[0] = 0;
WakeupTask(TASK_NO_GAME_SELECT_LEVEL);
WakeupTask(TASK_NO_GAME_CARD_CAST);
WakeupTask(TASK_NO_GAME_APPLE_COUNT);
WakeupTask(TASK_NO_GAME_SEESAW);
WakeupTask(TASK_NO_GAME_KY);
WakeupTask(TASK_NO_GAME_DR);
WakeupTask(TASK_NO_GAME_AS);
WakeupTask(TASK_NO_GAME_DR_CARD);
WakeupTask(TASK_NO_GAME_KY_CARD);
WakeupTask(TASK_NO_GAME_LIGHT_FLUSH);
WakeupTask(TASK_NO_GAME_PLAYER);
}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 FireworksTask(TASK* ip_task)
{
SPRITE_DATA SpData;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
ip_task->user[USER_WORK_FIREWORKS_MODE] = 0;
if(SGameMgr.AllClearFlag){
ip_task->user[USER_WORK_FIREWORKS_PLAY_LEVEL] = SGameMgr.PlayLevel;
}else{
ip_task->user[USER_WORK_FIREWORKS_PLAY_LEVEL] = SGameMgr.PlayLevel-1;
}
ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] = 0;
ip_task->user[USER_WORK_FIREWORKS_ANM_WAIT_TIME] = 0;
ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG] = 0;
ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_INDEX] = 0;
ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_WAIT_TIME] = 0;
ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_POSX] = 240;
ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_POSY] = 100;
break;
case TASK_MODE_MAIN:
switch(ip_task->user[USER_WORK_FIREWORKS_MODE])
{
case 0:
if( ++ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_WAIT_TIME] > SEES_GAME_EVENT_ANM_WAIT_TIME)
{
ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_WAIT_TIME] = 0;
ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_INDEX] ^= 1;
}
ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_POSX] -= 2;
ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_POSY] -= 2;
if(ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_POSY] < 0){
ip_task->user[USER_WORK_FIREWORKS_MODE] = 1;
ssPlaySe(SEES_SE_11);
}
SpData.No = ClearEventFlySmokeSpriteTable[ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_INDEX]].No;
SpData.PosX = ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_POSX];
SpData.PosY = ip_task->user[USER_WORK_FIREWORKS_ANM_TANE_POSY];
SpData.PosZ = PRIORITY_FIRE;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case 1:
switch(ip_task->user[USER_WORK_FIREWORKS_PLAY_LEVEL])
{
case 0:
if(ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG]==1) ip_task->mode = TASK_MODE_EXIT;
if(++ip_task->user[USER_WORK_FIREWORKS_ANM_WAIT_TIME] > SEES_GAME_EVENT_FIREWORKS_DRAW_TIME)
{
ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG] = 1;
}
SpData.No = ClearEventFireworksSpriteTable[0].No;
SpData.PosX = ClearEventFireworksSpriteTable[0].Ofx;
SpData.PosY = ClearEventFireworksSpriteTable[0].Ofy;
SpData.PosZ = PRIORITY_FIRE;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case 1:
if(ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG]==1) ip_task->mode = TASK_MODE_EXIT;
if(++ip_task->user[USER_WORK_FIREWORKS_ANM_WAIT_TIME] > SEES_GAME_EVENT_FIREWORKS_DRAW_TIME)
{
ip_task->user[USER_WORK_FIREWORKS_ANM_WAIT_TIME] = 0;
++ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX];
if(ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] >= 2)
{
ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] = 1;
ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG] = 1;
}else
if(ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX]==1){
ssPlaySe(SEES_SE_11);
}else{
}
}
SpData.No = ClearEventFireworksSpriteTable[ 6 + ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] ].No;
SpData.PosX = ClearEventFireworksSpriteTable[ 6 + ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] ].Ofx;
SpData.PosY = ClearEventFireworksSpriteTable[ 6 + ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] ].Ofy;
SpData.PosZ = PRIORITY_FIRE;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case 2:
if(ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG]==1) ip_task->mode = TASK_MODE_EXIT;
if(++ip_task->user[USER_WORK_FIREWORKS_ANM_WAIT_TIME] > SEES_GAME_EVENT_FIREWORKS_DRAW_TIME)
{
ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG] = 1;
}
SpData.No = ClearEventFireworksSpriteTable[2].No;
SpData.PosX = ClearEventFireworksSpriteTable[2].Ofx;
SpData.PosY = ClearEventFireworksSpriteTable[2].Ofy;
SpData.PosZ = PRIORITY_FIRE;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case 3:
if(ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG]==1) ip_task->mode = TASK_MODE_EXIT;
if(++ip_task->user[USER_WORK_FIREWORKS_ANM_WAIT_TIME] > SEES_GAME_EVENT_FIREWORKS_DRAW_TIME)
{
ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG] = 1;
}
SpData.No = ClearEventFireworksSpriteTable[3].No;
SpData.PosX = ClearEventFireworksSpriteTable[3].Ofx;
SpData.PosY = ClearEventFireworksSpriteTable[3].Ofy;
SpData.PosZ = PRIORITY_FIRE;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case 4:
if(ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG]==1) ip_task->mode = TASK_MODE_EXIT;
if(++ip_task->user[USER_WORK_FIREWORKS_ANM_WAIT_TIME] > SEES_GAME_EVENT_FIREWORKS_DRAW_TIME)
{
ip_task->user[USER_WORK_FIREWORKS_ANM_WAIT_TIME] = 0;
if(++ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] >= 2)
{
ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] = 1;
ip_task->user[USER_WORK_FIREWORKS_ANM_END_FLAG] = 1;
}
}
SpData.No = ClearEventFireworksSpriteTable[ 4 + ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] ].No;
SpData.PosX = ClearEventFireworksSpriteTable[ 4 + ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] ].Ofx;
SpData.PosY = ClearEventFireworksSpriteTable[ 4 + ip_task->user[USER_WORK_FIREWORKS_ANM_INDEX] ].Ofy;
SpData.PosZ = PRIORITY_FIRE;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
default:
}
break;
default:
}
break;
case TASK_MODE_EXIT:
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;
SGameMgr.Script.Flag = 1;
SGameMgr.Script.Index = 0;
SGameMgr.Script.Line = ip_task->user[0];
SGameMgr.Script.Base = ip_task->user[1];
SGameMgr.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(SGameMgr.Script.Line)
{
case SCRIPT_LINE_1:
MenuMessageSet10(&SeesScript[SGameMgr.Script.Base + SGameMgr.Script.Index]);
break;
case SCRIPT_LINE_2:
MenuMessageSet20(&SeesScript[SGameMgr.Script.Base + SGameMgr.Script.Index]);
break;
case SCRIPT_LINE_3:
MenuMessageSet30(&SeesScript[SGameMgr.Script.Base + SGameMgr.Script.Index]);
break;
default:
}
if(++SGameMgr.Script.Index >= SGameMgr.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:
SGameMgr.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:
SGameMgr.ExitFlag = 1;
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int FalseEventTask(TASK* ip_task)
{
SPRITE_DATA SpData;
TASK Task;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(SeesEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( SEES_EVENT_TIM_NUM, &SeesEventTextureImage[SEES_EVENT_TIM_POS] );
TimImgData = SeesEventTextureImage;
EntrySprite( SeesEventSpriteData );
SGameMgr.Event.Timer = 0;
SGameMgr.Event.EndFlag = 0;
SGameMgr.Event.False.KyIndex = 0;
SGameMgr.Event.False.KyWaitTime = 0;
SGameMgr.Event.False.StarFlag = 0;
SGameMgr.Event.False.StarIndex = 0;
SGameMgr.Event.False.StarWaitTime = 0;
SGameMgr.Event.False.Timer = 0;
SGameMgr.SelectContinue.Val = 0;
SGameMgr.SelectContinue.Type = SELECT_RETRY_H;
SGameMgr.SelectContinue.No = 0;
SGameMgr.SelectContinue.Wt = 0;
SGameMgr.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_1;
Task.user[1] = FALSE_SCRIPT_BASE;
Task.user[2] = FALSE_SCRIPT_NUM;
CreateTask(&Task);
#ifdef __DEBUG_SEES__
GameMgr.FadeFlag = FadeIn;
#endif
break;
case TASK_MODE_MAIN:
if(++SGameMgr.Event.Timer > SEES_GAME_FALSE_EVENT_END_TIME){
SGameMgr.Event.EndFlag = 1;
}
if(!SGameMgr.Event.False.StarFlag){
if( ++SGameMgr.Event.False.Timer >= SEES_GAME_FALSE_EVENT_STAR_WAIT_TIME )
{
if(++SGameMgr.Event.False.StarWaitTime>SEES_GAME_EVENT_ANM_WAIT_TIME*2)
{
SGameMgr.Event.False.StarWaitTime=0;
if(++SGameMgr.Event.False.StarIndex >= 2)
{
SGameMgr.Event.False.StarFlag=1;
--SGameMgr.Event.False.StarIndex;
}
}
SpData.No = FalseEventStarSpriteData[SGameMgr.Event.False.StarIndex].No;
SpData.PosX = 64;
SpData.PosY = 35;
SpData.PosZ = PRIORITY_CAST;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}
if(SGameMgr.Event.False.Timer <= SEES_GAME_FALSE_EVENT_STAR_WAIT_TIME)
{
if(++SGameMgr.Event.False.KyWaitTime > SEES_GAME_EVENT_ANM_WAIT_TIME)
{
SGameMgr.Event.False.KyWaitTime = 0;
SGameMgr.Event.False.KyIndex ^= 1;
}
}
if(SGameMgr.Event.False.Timer==SEES_GAME_FALSE_EVENT_STAR_WAIT_TIME){
ssPlaySe(SEES_SE_12);
}
SpData.No = FalseEventKyAnmSpriteData[SGameMgr.Event.False.KyIndex].No;
SpData.PosX = 228;
SpData.PosY = 126;
SpData.PosZ = PRIORITY_CAST;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SEES_CHAR_EVENT_LOSE_PLATE;
SpData.PosX = 70;
SpData.PosY = 206;
SpData.PosZ = PRIORITY_CAST;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
EventBg();
if(SGameMgr.Event.EndFlag)
{
if(SelectContinue(!SGameMgr.SelectContinue.FadeFlag))
{
if(!SGameMgr.SelectContinue.FadeFlag)
{
if((SGameMgr.SelectContinue.Val==0) && (SGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
SGameMgr.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( (SGameMgr.SelectContinue.Val==1) && (SGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
SGameMgr.SelectContinue.Type = SELECT_END_H;
SGameMgr.SelectContinue.Val = 0;
}else
if((SGameMgr.SelectContinue.Type==SELECT_END_H) && (SGameMgr.SelectContinue.Val==0))
{
SGameMgr.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((SGameMgr.SelectContinue.Type==SELECT_END_H) && (SGameMgr.SelectContinue.Val==1))
{
SGameMgr.SelectContinue.Type = SELECT_RETRY_H;
SGameMgr.SelectContinue.Val = 0;
}else
{
}
}
}else{
}
}
break;
case TASK_MODE_EXIT:
if((SGameMgr.SelectContinue.Type==SELECT_END_H) && (SGameMgr.SelectContinue.Val==0))
{
SGameMgr.ExitFlag=1;
}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);
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int ClearEventTask(TASK* ip_task)
{
TASK Task;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(SeesEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( SEES_EVENT_TIM_NUM, &SeesEventTextureImage[SEES_EVENT_TIM_POS] );
TimImgData = SeesEventTextureImage;
EntrySprite( SeesEventSpriteData );
SGameMgr.Event.Timer = 0;
SGameMgr.Event.EndFlag = 0;
SGameMgr.Event.Clear.Mode = 0;
ip_task->user[0] = GET_DA_STATUS_WAIT_TIME;
ip_task->user[1] = 0;
ip_task->user[2] = GET_DA_STATUS_WAIT_TIME*5;
ip_task->user[3] = 0;
ip_task->user[4] = SEES_GAME_CLEAR_EVENT_LAST_SCRIPT_WAIT_TIMER;
ip_task->user[5] = 0;
ip_task->user[6] = 0;
SGameMgr.Event.Clear.Sup.Status = 0;
SGameMgr.Event.Clear.Sup.Anm.Data.no = 0;
SGameMgr.Event.Clear.Sup.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Sup.Anm.Index = 0;
SGameMgr.Event.Clear.Sup.Pos.x = 0;
SGameMgr.Event.Clear.Sup.Pos.y = 0;
SGameMgr.Event.Clear.Sup.Pos.z = 0;
SGameMgr.Event.Clear.Sup.OPos.x = 0;
SGameMgr.Event.Clear.Sup.OPos.y = 0;
SGameMgr.Event.Clear.Sup.OPos.z = 0;
SGameMgr.Event.Clear.Sup.Spd.dx = 0;
SGameMgr.Event.Clear.Sup.Spd.dy = 0;
SGameMgr.Event.Clear.Sup.Spd.sx = 0;
SGameMgr.Event.Clear.Sup.Spd.sy = 0;
SGameMgr.Event.Clear.Dr.Status = EVENT_DR_ANM_ON;
SGameMgr.Event.Clear.Dr.Anm.Data.no = 0;
SGameMgr.Event.Clear.Dr.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Dr.Anm.Index = 1;
SGameMgr.Event.Clear.Dr.Pos.x = 0;
SGameMgr.Event.Clear.Dr.Pos.y = 0;
SGameMgr.Event.Clear.Dr.Pos.z = 0;
SGameMgr.Event.Clear.Dr.OPos.x = 0;
SGameMgr.Event.Clear.Dr.OPos.y = 0;
SGameMgr.Event.Clear.Dr.OPos.z = 0;
SGameMgr.Event.Clear.Dr.Spd.dx = 0;
SGameMgr.Event.Clear.Dr.Spd.dy = 0;
SGameMgr.Event.Clear.Dr.Spd.sx = 0;
SGameMgr.Event.Clear.Dr.Spd.sy = 0;
SGameMgr.Event.Clear.Ky.Status = EVENT_KY_ANM_ON;
SGameMgr.Event.Clear.Ky.Anm.Data.no = 0;
SGameMgr.Event.Clear.Ky.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Ky.Anm.Index = 0;
SGameMgr.Event.Clear.Ky.Pos.x = 0;
SGameMgr.Event.Clear.Ky.Pos.y = 0;
SGameMgr.Event.Clear.Ky.Pos.z = 0;
SGameMgr.Event.Clear.Ky.OPos.x = 0;
SGameMgr.Event.Clear.Ky.OPos.y = 0;
SGameMgr.Event.Clear.Ky.OPos.z = 0;
SGameMgr.Event.Clear.Ky.Spd.dx = 0;
SGameMgr.Event.Clear.Ky.Spd.dy = 0;
SGameMgr.Event.Clear.Ky.Spd.sx = 0;
SGameMgr.Event.Clear.Ky.Spd.sy = 0;
SGameMgr.Event.Clear.As.Status = EVENT_AS_ANM_OFF;
SGameMgr.Event.Clear.As.Anm.Data.no = 0;
SGameMgr.Event.Clear.As.Anm.Data.wt = 0;
SGameMgr.Event.Clear.As.Anm.Index = 0;
SGameMgr.Event.Clear.As.Pos.x = 0;
SGameMgr.Event.Clear.As.Pos.y = 0;
SGameMgr.Event.Clear.As.Pos.z = 0;
SGameMgr.Event.Clear.As.OPos.x = 0;
SGameMgr.Event.Clear.As.OPos.y = 0;
SGameMgr.Event.Clear.As.OPos.z = 0;
SGameMgr.Event.Clear.As.Spd.dx = 0;
SGameMgr.Event.Clear.As.Spd.dy = 0;
SGameMgr.Event.Clear.As.Spd.sx = 0;
SGameMgr.Event.Clear.As.Spd.sy = 0;
SGameMgr.SelectContinue.Val = 0;
SGameMgr.SelectContinue.Type = SELECT_RETRY_H;
SGameMgr.SelectContinue.No = 0;
SGameMgr.SelectContinue.Wt = 0;
SGameMgr.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_1;
Task.user[1] = CLEAR_1_SCRIPT_BASE;
Task.user[2] = CLEAR_1_SCRIPT_NUM;
CreateTask(&Task);
#ifdef __DEBUG_SEES__
GameMgr.FadeFlag = FadeIn;
#endif
break;
case TASK_MODE_MAIN:
if(++SGameMgr.Event.Timer > SEES_GAME_CLEAR_EVENT_END_TIME){
SGameMgr.Event.EndFlag = 1;
SGameMgr.Event.Clear.Dr.Status = EVENT_DR_ANM_OFF;
SGameMgr.Event.Clear.Ky.Status = EVENT_KY_ANM_OFF;
}
switch(SGameMgr.Event.Clear.Mode)
{
case 0:
EventCongratulations();
break;
case 1:
if(!ip_task->user[1]){
if(--ip_task->user[0]<=0){
if(dSoundStatus == DslStatStandby){
ip_task->user[1]=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] = CLEAR_3_SCRIPT_BASE;
Task.user[2] = CLEAR_3_SCRIPT_NUM;
CreateTask(&Task);
}
}
}
if(!ip_task->user[3]){
if(ip_task->user[1]){
if(--ip_task->user[2]<=0){
if(dSoundStatus == DslStatStandby){
ip_task->user[3]=1;
ip_task->user[6]=1;
ssPlaySe(SEES_SE_09);
ssPlaySe(SEES_SE_10);
Task.func = FireworksTask;
Task.priority = TASK_NO_EVENT_FIREWORKS;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_EVENT_FIREWORKS;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "FireworksTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}
}
}
}
if(!ip_task->user[5]){
if(ip_task->user[3]){
if(--ip_task->user[4]<=0){
ip_task->user[5]=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] = CLEAR_MAKENAI_SCRIPT_BASE;
Task.user[2] = CLEAR_MAKENAI_SCRIPT_NUM;
CreateTask(&Task);
}
}
}
EventDr();
EventKy();
EventAs(ip_task->user[6]);
EventBg();
break;
default:
}
if(SGameMgr.Event.EndFlag)
{
if(SelectContinue(!SGameMgr.SelectContinue.FadeFlag))
{
if(!SGameMgr.SelectContinue.FadeFlag){
if((SGameMgr.SelectContinue.Val==0) && (SGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
SGameMgr.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( (SGameMgr.SelectContinue.Val==1) && (SGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
SGameMgr.SelectContinue.Type =SELECT_END_H;
SGameMgr.SelectContinue.Val = 0;
}else
if((SGameMgr.SelectContinue.Type==SELECT_END_H) && (SGameMgr.SelectContinue.Val==0))
{
SGameMgr.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((SGameMgr.SelectContinue.Type==SELECT_END_H) && (SGameMgr.SelectContinue.Val==1))
{
SGameMgr.SelectContinue.Type = SELECT_RETRY_H;
SGameMgr.SelectContinue.Val = 0;
}else
{
}
}
}else{
}
}
break;
case TASK_MODE_EXIT:
if((SGameMgr.SelectContinue.Val==0) && (SGameMgr.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
{
SGameMgr.ExitFlag=1;
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int AllClearEventTask(TASK* ip_task)
{
TASK Task;
switch(ip_task->mode)
{
case TASK_MODE_INIT:
ip_task->mode = TASK_MODE_MAIN;
if((file_read(SeesEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( SEES_EVENT_TIM_NUM, &SeesEventTextureImage[SEES_EVENT_TIM_POS] );
TimImgData = SeesEventTextureImage;
EntrySprite( SeesEventSpriteData );
SGameMgr.Event.Timer = 0;
SGameMgr.Event.EndFlag = 0;
SGameMgr.Event.Timer = 0;
SGameMgr.Event.EndFlag = 0;
SGameMgr.Event.Clear.Mode = 0;
ip_task->user[0] = GET_DA_STATUS_WAIT_TIME;
ip_task->user[1] = 0;
ip_task->user[2] = GET_DA_STATUS_WAIT_TIME*5;
ip_task->user[3] = 0;
ip_task->user[4] = SEES_GAME_CLEAR_EVENT_LAST_SCRIPT_WAIT_TIMER;
ip_task->user[5] = 0;
ip_task->user[6] = 0;
SGameMgr.Event.Clear.Sup.Status = 0;
SGameMgr.Event.Clear.Sup.Anm.Data.no = 0;
SGameMgr.Event.Clear.Sup.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Sup.Anm.Index = 0;
SGameMgr.Event.Clear.Sup.Pos.x = 0;
SGameMgr.Event.Clear.Sup.Pos.y = 0;
SGameMgr.Event.Clear.Sup.Pos.z = 0;
SGameMgr.Event.Clear.Sup.OPos.x = 0;
SGameMgr.Event.Clear.Sup.OPos.y = 0;
SGameMgr.Event.Clear.Sup.OPos.z = 0;
SGameMgr.Event.Clear.Sup.Spd.dx = 0;
SGameMgr.Event.Clear.Sup.Spd.dy = 0;
SGameMgr.Event.Clear.Sup.Spd.sx = 0;
SGameMgr.Event.Clear.Sup.Spd.sy = 0;
SGameMgr.Event.Clear.Dr.Status = EVENT_DR_ANM_ON;
SGameMgr.Event.Clear.Dr.Anm.Data.no = 0;
SGameMgr.Event.Clear.Dr.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Dr.Anm.Index = 1;
SGameMgr.Event.Clear.Dr.Pos.x = 0;
SGameMgr.Event.Clear.Dr.Pos.y = 0;
SGameMgr.Event.Clear.Dr.Pos.z = 0;
SGameMgr.Event.Clear.Dr.OPos.x = 0;
SGameMgr.Event.Clear.Dr.OPos.y = 0;
SGameMgr.Event.Clear.Dr.OPos.z = 0;
SGameMgr.Event.Clear.Dr.Spd.dx = 0;
SGameMgr.Event.Clear.Dr.Spd.dy = 0;
SGameMgr.Event.Clear.Dr.Spd.sx = 0;
SGameMgr.Event.Clear.Dr.Spd.sy = 0;
SGameMgr.Event.Clear.Ky.Status = EVENT_KY_ANM_ON;
SGameMgr.Event.Clear.Ky.Anm.Data.no = 0;
SGameMgr.Event.Clear.Ky.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Ky.Anm.Index = 0;
SGameMgr.Event.Clear.Ky.Pos.x = 0;
SGameMgr.Event.Clear.Ky.Pos.y = 0;
SGameMgr.Event.Clear.Ky.Pos.z = 0;
SGameMgr.Event.Clear.Ky.OPos.x = 0;
SGameMgr.Event.Clear.Ky.OPos.y = 0;
SGameMgr.Event.Clear.Ky.OPos.z = 0;
SGameMgr.Event.Clear.Ky.Spd.dx = 0;
SGameMgr.Event.Clear.Ky.Spd.dy = 0;
SGameMgr.Event.Clear.Ky.Spd.sx = 0;
SGameMgr.Event.Clear.Ky.Spd.sy = 0;
SGameMgr.Event.Clear.As.Status = EVENT_AS_ANM_OFF;
SGameMgr.Event.Clear.As.Anm.Data.no = 0;
SGameMgr.Event.Clear.As.Anm.Data.wt = 0;
SGameMgr.Event.Clear.As.Anm.Index = 0;
SGameMgr.Event.Clear.As.Pos.x = 0;
SGameMgr.Event.Clear.As.Pos.y = 0;
SGameMgr.Event.Clear.As.Pos.z = 0;
SGameMgr.Event.Clear.As.OPos.x = 0;
SGameMgr.Event.Clear.As.OPos.y = 0;
SGameMgr.Event.Clear.As.OPos.z = 0;
SGameMgr.Event.Clear.As.Spd.dx = 0;
SGameMgr.Event.Clear.As.Spd.dy = 0;
SGameMgr.Event.Clear.As.Spd.sx = 0;
SGameMgr.Event.Clear.As.Spd.sy = 0;
SGameMgr.SelectContinue.Val = 0;
SGameMgr.SelectContinue.Type = SELECT_RETRY_H;
SGameMgr.SelectContinue.No = 0;
SGameMgr.SelectContinue.Wt = 0;
SGameMgr.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_1_SCRIPT_BASE;
Task.user[2] = ALL_CLEAR_1_SCRIPT_NUM;
CreateTask(&Task);
#ifdef __DEBUG_SEES__
GameMgr.FadeFlag = FadeIn;
#endif
break;
case TASK_MODE_MAIN:
if(++SGameMgr.Event.Timer > SEES_GAME_ALL_CLEAR_EVENT_END_TIME){
SGameMgr.Event.EndFlag = 1;
SGameMgr.Event.Clear.Dr.Status = EVENT_DR_ANM_OFF;
SGameMgr.Event.Clear.Ky.Status = EVENT_KY_ANM_OFF;
}
switch(SGameMgr.Event.Clear.Mode)
{
case 0:
EventCongratulations();
break;
case 1:
if(!ip_task->user[1]){
if(--ip_task->user[0]<=0){
if(dSoundStatus == DslStatStandby){
ip_task->user[1]=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] = ALL_CLEAR_4_SCRIPT_BASE;
Task.user[2] = ALL_CLEAR_4_SCRIPT_NUM;
CreateTask(&Task);
}
}
}
if(!ip_task->user[3]){
if(ip_task->user[1]){
if(--ip_task->user[2]<=0){
if(dSoundStatus == DslStatStandby){
ip_task->user[3]=1;
ip_task->user[6]=1;
ssPlaySe(SEES_SE_09);
ssPlaySe(SEES_SE_10);
Task.func = FireworksTask;
Task.priority = TASK_NO_EVENT_FIREWORKS;
Task.attribute = ATTR_USER;
Task.status = TASK_NEW_ENTRY;
Task.id = TASK_NO_EVENT_FIREWORKS;
Task.wait_time = 0;
Task.buf = NULL;
Task.name = "FireworksTask";
Task.mode = TASK_MODE_INIT;
CreateTask(&Task);
}
}
}
}
if(!ip_task->user[5]){
if(ip_task->user[3]){
if(--ip_task->user[4]<=0){
ip_task->user[5]=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] = CLEAR_MAKENAI_SCRIPT_BASE;
Task.user[2] = CLEAR_MAKENAI_SCRIPT_NUM;
CreateTask(&Task);
}
}
}
EventDr();
EventKy();
EventAs(ip_task->user[6]);
EventBg();
break;
default:
}
if(SGameMgr.Event.EndFlag)
{
if(SelectContinue(!SGameMgr.SelectContinue.FadeFlag))
{
if(!SGameMgr.SelectContinue.FadeFlag){
if((SGameMgr.SelectContinue.Val==0) && (SGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
SGameMgr.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( (SGameMgr.SelectContinue.Val==1) && (SGameMgr.SelectContinue.Type==SELECT_RETRY_H))
{
SGameMgr.SelectContinue.Type =SELECT_END_H;
SGameMgr.SelectContinue.Val = 0;
}else
if((SGameMgr.SelectContinue.Type==SELECT_END_H) && (SGameMgr.SelectContinue.Val==0))
{
SGameMgr.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((SGameMgr.SelectContinue.Type==SELECT_END_H) && (SGameMgr.SelectContinue.Val==1))
{
SGameMgr.SelectContinue.Type = SELECT_RETRY_H;
SGameMgr.SelectContinue.Val = 0;
}else
{
}
}
}else{
}
}
break;
case TASK_MODE_EXIT:
if((SGameMgr.SelectContinue.Val==0) && (SGameMgr.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
{
SGameMgr.ExitFlag=1;
}
ExitTask(ip_task->id);
break;
default:
}
return TRUE;
}
static int SelectContinue(int i_flag)
{
static int BupeAnmTable[] ={
SEES_CHAR_EVENT_SELECT_CONTINUE_BUPE_00,
SEES_CHAR_EVENT_SELECT_CONTINUE_BUPE_01,
};
static int MaruBatuTable[]={
SEES_CHAR_EVENT_SELECT_CONTINUE_YES_LIGHT, SEES_CHAR_EVENT_SELECT_CONTINUE_NO_DARK,
SEES_CHAR_EVENT_SELECT_CONTINUE_YES_DARK, SEES_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){
SGameMgr.SelectContinue.Val^=1;
ssPlaySe(BUTONSE_LEVER);
}
}
SpData.No = MaruBatuTable[SGameMgr.SelectContinue.Val*2];
SpData.PosX = 68+72;
SpData.PosY = 73+57;
SpData.PosZ = PRIORITY_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = MaruBatuTable[SGameMgr.SelectContinue.Val*2+1];
SpData.PosX = 68+126;
SpData.PosY = 73+57;
SpData.PosZ = PRIORITY_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
switch(SGameMgr.SelectContinue.Type)
{
case SELECT_RETRY_H:
SpData.No = SEES_CHAR_EVENT_SELECT_CONTINUE_RETRY_H;
SpData.PosX = 68+20;
SpData.PosY = 73+20;
SpData.PosZ = PRIORITY_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case SELECT_END_H:
SpData.No = SEES_CHAR_EVENT_SELECT_CONTINUE_END_H;
SpData.PosX = 68+20;
SpData.PosY = 73+20;
SpData.PosZ = PRIORITY_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
case SELECT_CONTINUE_H:
SpData.No = SEES_CHAR_EVENT_SELECT_CONTINUE_CONTINUE_H;
SpData.PosX = 68+20;
SpData.PosY = 73+20;
SpData.PosZ = PRIORITY_EVENT_MENU-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
break;
default:
}
if(++SGameMgr.SelectContinue.Wt>SELECT_LEVEL_PUPE_ANM_TIME){
SGameMgr.SelectContinue.No^=1;
SGameMgr.SelectContinue.Wt=0;
}
SpData.No = BupeAnmTable[SGameMgr.SelectContinue.No];
SpData.PosX = 68+12;
SpData.PosY = 73+34;
SpData.PosZ = PRIORITY_EVENT_MENU-10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SEES_CHAR_EVENT_SELECT_CONTINUE_PLATE;
SpData.PosX = 68;
SpData.PosY = 73;
SpData.PosZ = PRIORITY_EVENT_MENU;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SEES_CHAR_EVENT_SELECT_CONTINUE_ERABU;
SpData.PosX = (320-130)/2;
SpData.PosY = 206;
SpData.PosZ = PRIORITY_EVENT_MENU-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SEES_CHAR_EVENT_SELECT_CONTINUE_KETEI;
SpData.PosX = (320-130)/2+78;
SpData.PosY = 206;
SpData.PosZ = PRIORITY_EVENT_MENU-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
return o_ret;
}
static void DrawNum(int i_num,int i_wsize,int *ip_numtbl,int i_x,int i_y,int i_z)
{
int i,bx,by;
int numarr[3];
SPRITE_DATA SpData;
if(i_num>999) i_num=999;
if(i_num<0) i_num=0;
numarr[0] = i_num/100;
numarr[1] = (i_num-numarr[0]*100)/10;
numarr[2] = (i_num-numarr[0]*100-numarr[1]*10)/1;
bx=i_x;
by=i_y;
for(i=0;i<3;i++){
if(numarr[i]==0){
if(i==0)
{
bx+=i_wsize;
}else if(i==1)
{
if(i_num<100)
{
bx+=i_wsize;
}else
{
SpData.No = ip_numtbl[0];
SpData.PosX = bx;
SpData.PosY = by;
SpData.PosZ = i_z-i;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
bx+=i_wsize;
}
}else if(i==2)
{
SpData.No = ip_numtbl[0];
SpData.PosX = bx;
SpData.PosY = by;
SpData.PosZ = i_z-i;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
}else{
SpData.No = ip_numtbl[numarr[i]];
SpData.PosX = bx;
SpData.PosY = by;
SpData.PosZ = i_z-i;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
bx+=i_wsize;
}
}
}
static void DrawCard(int i_type,int i_no,int i_side,int i_x,int i_y,int i_z)
{
SPRITE_DATA SpData;
int i;
if(i_no < 0 ) i_no=0;
if(i_no >100 ) i_no=100;
switch(i_type)
{
case CARD_TYPE_BOX:
if(i_no>10) i_no=10;
if(i_side==CARD_SIDE_HEADS){
for(i=0;i<i_no;i++){
SpData.No = SEES_CHAR_GAME_FRUITS_RED;
SpData.PosX = i_x + ApplePosTable[i].x;
SpData.PosY = i_y + ApplePosTable[i].y;
SpData.PosZ = i_z-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = SEES_CHAR_GAME_BOX;
SpData.PosX = i_x;
SpData.PosY = i_y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}else{
SpData.No = SEES_CHAR_GAME_BOX_AMI;
SpData.PosX = i_x;
SpData.PosY = i_y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
break;
case CARD_TYPE_STAR:
if(i_side==CARD_SIDE_HEADS){
if(i_no<10){
DrawNum( i_no, WIDTH_SMALL_FONT, SmallNumSpriteTable, i_x-4, i_y+4, i_z-1);
}else
if(i_no<100){
DrawNum( i_no, WIDTH_SMALL_FONT, SmallNumSpriteTable, i_x, i_y+4, i_z-1);
}else{
DrawNum( i_no, WIDTH_SMALL_FONT, SmallNumSpriteTable, i_x+2, i_y+4, i_z-1);
}
SpData.No = SEES_CHAR_GAME_NEW_CARD_WAKU;
SpData.PosX = i_x;
SpData.PosY = i_y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}else{
SpData.No = SEES_CHAR_GAME_NEW_STAR_CARD;
SpData.PosX = i_x;
SpData.PosY = i_y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
break;
default:
}
}
static void DrawBox(int i_count,int i_no,int i_x,int i_y,int i_z)
{
SPRITE_DATA SpData;
int i;
if(i_no>10) i_no = 10;
if(i_count>10) i_count = 10;
for(i=0;i<i_no;i++)
{
if(i_count > i ) SpData.No = SEES_CHAR_GAME_FRUITS_YELLOW;
else SpData.No = SEES_CHAR_GAME_FRUITS_RED;
SpData.PosX = i_x + ApplePosTable[i].x;
SpData.PosY = i_y + ApplePosTable[i].y;
SpData.PosZ = i_z-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
SpData.No = SEES_CHAR_GAME_BOX;
SpData.PosX = i_x;
SpData.PosY = i_y;
SpData.PosZ = i_z;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
static void SetDrawFlagUserCard(int i_no)
{
switch(i_no)
{
case 0:
SGameMgr.Dr.Card[0].DrawFlag = 1;
break;
case 1:
SGameMgr.Ky.Card[0].DrawFlag = 1;
break;
case 2:
SGameMgr.Dr.Card[1].DrawFlag = 1;
break;
case 3:
SGameMgr.Ky.Card[1].DrawFlag = 1;
break;
case 4:
SGameMgr.Dr.Card[2].DrawFlag = 1;
break;
case 5:
SGameMgr.Ky.Card[2].DrawFlag = 1;
break;
case 6:
SGameMgr.Dr.Card[3].DrawFlag = 1;
break;
case 7:
SGameMgr.Ky.Card[3].DrawFlag = 1;
break;
case 8:
SGameMgr.Dr.Card[4].DrawFlag = 1;
break;
case 9:
SGameMgr.Ky.Card[4].DrawFlag = 1;
break;
default:
}
}
static void EventCongratulations(void)
{
SPRITE_DATA SpData;
TASK Task;
if(SGameMgr.Event.Timer > SEES_GAME_EVENT_CONGRATULATION_END_TIME)
{
SGameMgr.Event.Clear.Mode = 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;
if(SGameMgr.AllClearFlag){
Task.user[1] = ALL_CLEAR_3_SCRIPT_BASE;
Task.user[2] = ALL_CLEAR_3_SCRIPT_NUM;
}else{
Task.user[1] = CLEAR_2_SCRIPT_BASE;
Task.user[2] = CLEAR_2_SCRIPT_NUM;
}
CreateTask(&Task);
}
if(++SGameMgr.Event.Clear.Sup.Anm.Data.wt > SEES_GAME_EVENT_ANM_WAIT_TIME){
SGameMgr.Event.Clear.Sup.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Sup.Anm.Index ^=1;
}
SpData.No = SEES_CHAR_EVENT_WIN_PLATE;
SpData.PosX = 70;
SpData.PosY = 206;
SpData.PosZ = PRIORITY_BG-2;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = ClearEventCongratulationSpriteTable[SGameMgr.Event.Clear.Sup.Anm.Index*2 + 0].No;
SpData.PosX = 0;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = ClearEventCongratulationSpriteTable[SGameMgr.Event.Clear.Sup.Anm.Index*2 + 1].No;
SpData.PosX = 256;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_BG-1;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
static void EventDr(void)
{
SPRITE_DATA SpData;
switch(SGameMgr.Event.Clear.Dr.Status)
{
case EVENT_DR_ANM_OFF:
break;
case EVENT_DR_ANM_ON:
if(++SGameMgr.Event.Clear.Dr.Anm.Data.wt > SEES_GAME_EVENT_ANM_WAIT_TIME){
SGameMgr.Event.Clear.Dr.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Dr.Anm.Index ^= 1;
}
break;
default:
}
SpData.No = ClearEventDrSpriteTable[SGameMgr.Event.Clear.Dr.Anm.Index].No;
SpData.PosX = ClearEventDrSpriteTable[SGameMgr.Event.Clear.Dr.Anm.Index].Ofx;
SpData.PosY = ClearEventDrSpriteTable[SGameMgr.Event.Clear.Dr.Anm.Index].Ofy;
SpData.PosZ = PRIORITY_CAST;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
static void EventKy(void)
{
SPRITE_DATA SpData;
switch(SGameMgr.Event.Clear.Ky.Status)
{
case EVENT_DR_ANM_OFF:
break;
case EVENT_DR_ANM_ON:
if(++SGameMgr.Event.Clear.Ky.Anm.Data.wt > SEES_GAME_EVENT_ANM_WAIT_TIME){
SGameMgr.Event.Clear.Ky.Anm.Data.wt = 0;
SGameMgr.Event.Clear.Ky.Anm.Index ^= 1;
}
break;
default:
}
SpData.No = ClearEventKySpriteTable[SGameMgr.Event.Clear.Ky.Anm.Index].No;
SpData.PosX = ClearEventKySpriteTable[SGameMgr.Event.Clear.Ky.Anm.Index].Ofx;
SpData.PosY = ClearEventKySpriteTable[SGameMgr.Event.Clear.Ky.Anm.Index].Ofy;
SpData.PosZ = PRIORITY_CAST;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
static void EventAs(int i_no)
{
SPRITE_DATA SpData;
SpData.No = ClearEventAsSpriteTable[0].No;
SpData.PosX = ClearEventAsSpriteTable[0].Ofx;
SpData.PosY = ClearEventAsSpriteTable[0].Ofy;
SpData.PosZ = PRIORITY_CAST;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = ClearEventAsSpriteTable[1 + i_no].No;
SpData.PosX = ClearEventAsSpriteTable[1 + i_no].Ofx;
SpData.PosY = ClearEventAsSpriteTable[1 + i_no].Ofy;
SpData.PosZ = PRIORITY_CAST;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
static void EventBg(void)
{
SPRITE_DATA SpData;
SpData.No = SEES_CHAR_EVENT_EVENT_BG_00;
SpData.PosX = 0;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
SpData.No = SEES_CHAR_EVENT_EVENT_BG_01;
SpData.PosX = 256;
SpData.PosY = 0;
SpData.PosZ = PRIORITY_BG;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
}
static int ChangePlayerCursorIndex(void)
{
int i;
for(i=0;i<SGameMgr.Player.EffectiveIndexNum;i++)
{
if(SGameMgr.Ky.Card[i].Data.Flag==1)
{
SGameMgr.Player.AnswerIndex = i;
return TRUE;
}
}
return FALSE;
}
#ifdef __DEBUG_SEES__
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(SeesGameTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( SEES_GAME_TIM_NUM, &SeesGameTextureImage[SEES_GAME_TIM_POS] );
TimImgData = SeesGameTextureImage;
EntrySprite( SeesGameSpriteData );
SpIndex = 0;
SpEntryNum = GetEntrySpriteNum();
Counter = 0;
FlushFlag = 0;
#ifdef __DEBUG_SEES__
GameMgr.FadeFlag = FadeIn;
#endif
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 - SeesGameSpriteData[SpIndex].Width) / 2;
SpData.PosY = (240 - SeesGameSpriteData[SpIndex].Height) / 2;
SpData.PosZ = 10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
FntPrint("SNO=%d/%d\n", SpIndex,SpEntryNum-1 );
FntPrint("OfX=%d\n", SeesGameSpriteData[SpIndex].OffSetX );
FntPrint("OfY=%d\n", SeesGameSpriteData[SpIndex].OffSetY );
FntPrint("W__=%d\n", SeesGameSpriteData[SpIndex].Width );
FntPrint("H__=%d\n", SeesGameSpriteData[SpIndex].Height );
FntPrint("PNO=%d\n", SeesGameSpriteData[SpIndex].PaletteNo );
FntPrint("CNT=%d\n", ++Counter );
break;
case TASK_MODE_EXIT:
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(SeesEventTextureFile[0].fn,LoadAddress)) == -1)
{
return FALSE;
}
TexInit( SEES_EVENT_TIM_NUM, &SeesEventTextureImage[SEES_EVENT_TIM_POS] );
TimImgData = SeesEventTextureImage;
EntrySprite( SeesEventSpriteData );
SpIndex = 0;
SpEntryNum = GetEntrySpriteNum();
Counter = 0;
FlushFlag = 0;
#ifdef __DEBUG_SEES__
GameMgr.FadeFlag = FadeIn;
#endif
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 - SeesEventSpriteData[SpIndex].Width) / 2;
SpData.PosY = (240 - SeesEventSpriteData[SpIndex].Height) / 2;
SpData.PosZ = 10;
SpData.ScaleX = SCALE10;
SpData.ScaleY = SCALE10;
SpData.Rotate = ROTATE000;
SpData.Reverse = NOREVERS;
DrawSprite( &SpData );
FntPrint("SNO=%d/%d\n", SpIndex,SpEntryNum-1 );
FntPrint("OfX=%d\n", SeesEventSpriteData[SpIndex].OffSetX );
FntPrint("OfY=%d\n", SeesEventSpriteData[SpIndex].OffSetY );
FntPrint("W__=%d\n", SeesEventSpriteData[SpIndex].Width );
FntPrint("H__=%d\n", SeesEventSpriteData[SpIndex].Height );
FntPrint("PNO=%d\n", SeesEventSpriteData[SpIndex].PaletteNo );
FntPrint("CNT=%d\n", ++Counter );
break;
case TASK_MODE_EXIT:
break;
default:
break;
}
}
#endif