926 lines
30 KiB
C
926 lines
30 KiB
C
/***************************************************************************************************
|
|
Pause & Save Message Function
|
|
programed by Iwamoto Daiki [1996 April 22]
|
|
****************************************************************************************************/
|
|
|
|
extern Gfx RCP_redcoin1[];
|
|
extern Gfx RCP_redcoin2[];
|
|
extern Gfx RCP_redcoin3[];
|
|
extern Gfx RCP_redcoin4[];
|
|
|
|
#define EXTSTAR 90
|
|
#define COINSTAR 91
|
|
|
|
char redcoin_num;
|
|
static char cam_crs = 1;
|
|
char select_starNo = 1;
|
|
|
|
/*=================================================================================================
|
|
Pause Scene Event
|
|
|
|
|
|
|
|
===================================================================================================*/
|
|
/***************************************************************************************************
|
|
Stage Inintialize
|
|
****************************************************************************************************/
|
|
extern void iwaStageInit(void)
|
|
{
|
|
redcoin_num = 0;
|
|
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Course Pause Init
|
|
****************************************************************************************************/
|
|
static void CoursePauseInit(void)
|
|
{
|
|
if (SpecialMode(SM_CHECK) == SM_SPECIAL) {
|
|
cam_crs = 1;
|
|
}
|
|
else cam_crs = 2;
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Pause Back Ground
|
|
****************************************************************************************************/
|
|
static void DrawPauseBack(void)
|
|
{
|
|
|
|
iTranslate(PUSH, 0, 240 ,0);
|
|
|
|
iScale(NOPUSH,2.6 , 3.4 ,1.);
|
|
|
|
gDPSetEnvColor(graphPtr++,0,0,0,110);
|
|
gSPDisplayList(graphPtr++, RCP_Mess_window);
|
|
|
|
gSPPopMatrix(graphPtr++,G_MTX_MODELVIEW);
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Draw Red Coin
|
|
****************************************************************************************************/
|
|
static void DrawRedCoin(short posx,short posy)
|
|
{
|
|
ulong counter = frameCounter;
|
|
|
|
iTranslate(PUSH,posx,posy,0);
|
|
iScale(NOPUSH,0.2,0.2,1);
|
|
|
|
gDPSetRenderMode(graphPtr++,G_RM_TEX_EDGE,G_RM_TEX_EDGE2);
|
|
|
|
switch (counter & 0x06) {
|
|
case 0x00: gSPDisplayList(graphPtr++, RCP_redcoin1); break;
|
|
case 0x02: gSPDisplayList(graphPtr++, RCP_redcoin2); break;
|
|
case 0x04: gSPDisplayList(graphPtr++, RCP_redcoin3); break;
|
|
case 0x06: gSPDisplayList(graphPtr++, RCP_redcoin4); break;
|
|
}
|
|
|
|
gDPSetRenderMode(graphPtr++,G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
|
|
|
gSPPopMatrix(graphPtr++,G_MTX_MODELVIEW);
|
|
|
|
}
|
|
|
|
/***************************************************************************************************
|
|
Draw Red Coin
|
|
****************************************************************************************************/
|
|
static void DrawRedCoinNumber(void)
|
|
{
|
|
|
|
char i;
|
|
|
|
for (i=0; i<redcoin_num; i++) {
|
|
DrawRedCoin(290 - i*20,16);
|
|
|
|
}
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Pause Scene Event
|
|
****************************************************************************************************/
|
|
static void DrawPauseScene(void)
|
|
{
|
|
|
|
#if ENGLISH
|
|
unsigned char se8_Course[] = {f8_C, f8_O, f8_U, f8_R, f8_S, f8_E, 0xff}; //Course
|
|
unsigned char se8_hiscore[]= {f8_M, f8_Y, 0x9e, f8_S, f8_C, f8_O, f8_R, f8_E, 0xff,}; //myscore
|
|
#elif CHINA
|
|
unsigned char se8_Course[] = {0x1, 0x4, 0x1, 0x5, 0xff, 0xff,}; //Course
|
|
unsigned char se8_hiscore[]= {0x1, 0x0, 0x1, 0x1, 0x1, 0x2, 0x1, 0x3, 0xff, 0xff,}; //myscore
|
|
#else
|
|
unsigned char se8_Course[] = {0x79, 0x9f, 0x7c, 0xff}; //Course
|
|
unsigned char se8_hiscore[]= {0x8e, 0x71, 0x7c, 0x79, 0x70, 0xff,}; //myscore
|
|
#endif
|
|
#if CHINA
|
|
unsigned char se8_star[] = {0x00, 0xfa, 0xff, 0x9e, 0xff, 0xff,}; //star
|
|
unsigned char se8_nostar[] = {0x00, 0xfd, 0xff, 0x9e, 0xff, 0xff,}; //star
|
|
#else
|
|
unsigned char se8_star[] = {0xfa, 0xff,}; //star
|
|
unsigned char se8_nostar[] = {0xfd, 0xff,}; //star
|
|
#endif
|
|
unsigned char Number[8];
|
|
unsigned char **crs = (unsigned char**)(SegmentToVirtual(crsNamePtr));
|
|
unsigned char *crsname;
|
|
unsigned char **starnamep = (unsigned char**)(SegmentToVirtual(starnamePtr));
|
|
unsigned char *starname;
|
|
unsigned char courseNo = activeCourseNo -1;
|
|
unsigned char get_starFlag = BuGetStarFlag(activePlayerNo-1,activeCourseNo-1);
|
|
|
|
|
|
/*---------------16 Bit Font----------------------------------*/
|
|
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
|
|
if (courseNo < 15) {
|
|
DrawMyScore(activePlayerNo-1,courseNo, 178, 103);
|
|
DrawCourseStar(activePlayerNo-1,courseNo, 118, 103);
|
|
}
|
|
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_off);
|
|
|
|
/*---------------8 Bit Font----------------------------------*/
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
|
|
if (courseNo<15 && BuGetCourseStars(activePlayerNo-1,courseNo)!=0) Draw8bitFont( 42,121,se8_hiscore);
|
|
|
|
crsname = (unsigned char* )(SegmentToVirtual(crs[courseNo]));
|
|
|
|
if (courseNo < 15) {
|
|
Draw8bitFont(63,157,se8_Course); //Course No
|
|
I_itochar((activeCourseNo-1)+1,Number);
|
|
#if ENGLISH || CHINA
|
|
Draw8bitFont(93+7,157,Number);
|
|
#else
|
|
Draw8bitFont(93,157,Number);
|
|
#endif
|
|
starname = (unsigned char* )(SegmentToVirtual(starnamep[(activeCourseNo-1)*6 + select_starNo-1]));
|
|
if (get_starFlag & (0x01<<(select_starNo-1)) )
|
|
Draw8bitFont( 98,140,se8_star);
|
|
else
|
|
Draw8bitFont( 98,140,se8_nostar);
|
|
Draw8bitFont(112,140,starname);
|
|
#if CHINA
|
|
Draw8bitFont(117,157,(crsname+3*2));
|
|
#else
|
|
Draw8bitFont(117,157,(crsname+3));
|
|
#endif
|
|
|
|
}
|
|
else {
|
|
#if CHINA
|
|
Draw8bitFont(117-23,157,(crsname+3*2));
|
|
#else
|
|
Draw8bitFont(117-23,157,(crsname+3));
|
|
#endif
|
|
}
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Camera Change Cursor Event
|
|
****************************************************************************************************/
|
|
static void DrawCameraChange(short posx,short posy,char* cursor,short space)
|
|
{
|
|
#if ENGLISH
|
|
unsigned char se8_MARIOCAM[]= {f8_L, f8_A, f8_K, f8_I, f8_T, f8_U, 0x9e, 0xe4, 0x9e, f8_M, f8_A, f8_R, f8_I, f8_O, 0xff}; //jugem<->mario
|
|
unsigned char se8_STOPCAM[]= {f8_L, f8_A, f8_K, f8_I, f8_T, f8_U, 0x9e, 0xe4, 0x9e, f8_S, f8_T, f8_O, f8_P, 0xff}; //jugem<->stop
|
|
unsigned char se8_OSUSUME1[]= {0xe1, f8_N, f8_O, f8_R, f8_M, f8_A, f8_L, 0xe3, 0xe1, f8_U, f8_P, 0x9f, f8_C, f8_L, f8_O, f8_S, f8_E, 0xe3,0xff}; //ossume
|
|
unsigned char se8_OSUSUME2[]= {0xe1, f8_N, f8_O, f8_R, f8_M, f8_A, f8_L, 0xe3, 0xe1, f8_F, f8_I, f8_X, f8_E, f8_D, 0xe3, 0xff}; //ossume
|
|
#elif CHINA
|
|
unsigned char se8_MARIOCAM[]= {0xff, 0xff}; //jugem<->mario
|
|
unsigned char se8_STOPCAM[]= {0xff, 0xff}; //jugem<->stop
|
|
unsigned char se8_OSUSUME1[]= {0x1, 0x11, 0x1, 0x12, 0x1, 0x13, 0x1, 0x14, 0xff, 0xff,}; //up-close
|
|
unsigned char se8_OSUSUME2[]= {0x1, 0x15, 0x1, 0xe, 0x1, 0x13, 0x1, 0x14, 0xff, 0xff,}; //fixed angle
|
|
#else
|
|
unsigned char se8_MARIOCAM[]= {0xf0, k8_si, sk8_yu, 0xf0, k8_ke, k8_mu, 0xe4, k8_ma, k8_ri, k8_o, 0xff}; //jugem<->mario
|
|
unsigned char se8_STOPCAM[]= {0xf0, k8_si, sk8_yu, 0xf0, k8_ke, k8_mu, 0xe4, k8_su, k8_to, sk8_tu, 0xf1, k8_hu, 0xff}; //jugem<->stop
|
|
unsigned char se8_OSUSUME1[]= {0xe1, h8_o, h8_su, h8_su, h8_me, 0xe2, k8_ri, k8_a, k8_ru, 0xe3, 0xff}; //ossume
|
|
unsigned char se8_OSUSUME2[]= {0xe1, h8_o, h8_su, h8_su, h8_me, 0xe2, h8_to, h8_ma, h8_ru, 0xe3, 0xff}; //ossume
|
|
#endif
|
|
|
|
|
|
|
|
ContCursorEvent(2,cursor,1,2);
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
|
|
#if ENGLISH
|
|
Draw8bitFont(posx+14 , posy+2 ,se8_MARIOCAM);
|
|
Draw8bitFont(posx+3 , posy-13,se8_OSUSUME1);
|
|
Draw8bitFont(posx+124, posy+2 ,se8_STOPCAM);
|
|
Draw8bitFont(posx+119, posy-13,se8_OSUSUME2);
|
|
#elif CHINA
|
|
Draw8bitFont(posx+14 , posy+2,se8_OSUSUME1);
|
|
Draw8bitFont(posx+124, posy+2,se8_OSUSUME2);
|
|
#else
|
|
Draw8bitFont(posx+14 , posy+2 ,se8_MARIOCAM);
|
|
Draw8bitFont(posx+4 , posy-13,se8_OSUSUME1);
|
|
Draw8bitFont(posx+124, posy+2 ,se8_STOPCAM);
|
|
Draw8bitFont(posx+116, posy-13,se8_OSUSUME2);
|
|
#endif
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
|
|
|
|
#if ENGLISH || CHINA
|
|
iTranslate(PUSH, posx+((*cursor-1)*space), posy+2,0);
|
|
#else
|
|
iTranslate(PUSH, posx+((*cursor-1)*space), posy,0);
|
|
#endif
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
gSPDisplayList(graphPtr++, RCP_mess_cursor);
|
|
gSPPopMatrix(graphPtr++,G_MTX_MODELVIEW);
|
|
|
|
switch (*cursor) {
|
|
case 1: SpecialMode(SM_SPECIAL);
|
|
break;
|
|
|
|
case 2: SpecialMode(SM_STOP);
|
|
break;
|
|
}
|
|
}
|
|
/***************************************************************************************************
|
|
Pause Scene Cursor Event
|
|
****************************************************************************************************/
|
|
static void DrawContinue(short posx,short posy,char* cursor,short space)
|
|
{
|
|
#if ENGLISH
|
|
unsigned char se8_TUDUKU[]= {f8_C, f8_O, f8_N, f8_T, f8_I, f8_N, f8_U, f8_E, 0xff}; //Continue
|
|
unsigned char se8_YAMERU[]= {f8_E, f8_X, f8_I, f8_T, 0x9e, f8_C, f8_O, f8_U, f8_R, f8_S, f8_E, 0xff}; //Course
|
|
unsigned char se8_CAMTITLE[]= {f8_S, f8_E, f8_T, 0x9e, f8_C, f8_A, f8_M, f8_E, f8_R, f8_A, 0x9e, f8_A, f8_N, f8_G, f8_L, f8_E, 0x9e, f8_W, f8_I, f8_T, f8_H, 0x9e, f8_R, 0xff}; //Camera Angle With R
|
|
#elif CHINA
|
|
unsigned char se8_TUDUKU[]= {0x1, 0x8, 0x1, 0x9, 0xff, 0xff,}; //Continue
|
|
unsigned char se8_YAMERU[]= {0x1, 0x6, 0x1, 0x7, 0xff, 0xff,}; //Exit Course
|
|
unsigned char se8_CAMTITLE[]= {0x1, 0xa, 0x1, 0xb, 0x00, 0x58, 0x1, 0xc, 0x1, 0xd, 0x1, 0xe, 0x1, 0xf, 0x1, 0x10, 0xff, 0xff,}; //Camera Angle With R
|
|
#else
|
|
unsigned char se8_TUDUKU[]= {0x51, 0xf0, 0x51, 0x48, 0x52, 0x9e, 0x8e, 0x97, 0x74, 0x4c, 0x68, 0xf4, 0xff}; //Course
|
|
unsigned char se8_YAMERU[]= {0x79, 0x9f, 0x7c, 0x45, 0x66, 0xf0, 0x52, 0x68, 0xf4, 0xff}; //Course
|
|
unsigned char se8_CAMTITLE[]= {f8_R, 0xf0, k8_ho, k8_ta, k8_n, h8_no, k8_ka, k8_me, k8_ra, h8_ki, h8_ri, h8_ka, h8_e, 0xff}; //title
|
|
#endif
|
|
|
|
ContCursorEvent(1,cursor,1,3);
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
Draw8bitFont(posx+10,posy-2 ,se8_TUDUKU);
|
|
#if CHINA
|
|
Draw8bitFont(posx+10,posy-20 ,se8_YAMERU);
|
|
#else
|
|
Draw8bitFont(posx+10,posy-17 ,se8_YAMERU);
|
|
#endif
|
|
|
|
if (*cursor != 3) {
|
|
#if CHINA
|
|
Draw8bitFont(posx+10,posy-38 ,se8_CAMTITLE);
|
|
#else
|
|
Draw8bitFont(posx+10,posy-33 ,se8_CAMTITLE);
|
|
#endif
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
|
|
#if ENGLISH || CHINA
|
|
iTranslate(PUSH, posx-4, posy+2 - ((*cursor-1)*space)-4,0);
|
|
#else
|
|
iTranslate(PUSH, posx, posy - ((*cursor-1)*space)-4,0);
|
|
#endif
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
gSPDisplayList(graphPtr++, RCP_mess_cursor);
|
|
gSPPopMatrix(graphPtr++,G_MTX_MODELVIEW);
|
|
}
|
|
|
|
if (*cursor == 3) {
|
|
DrawCameraChange(posx-42,posy-42,&cam_crs,110);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*==================================================================================================*/
|
|
/* Select Room Pause Scene
|
|
/*
|
|
/*==================================================================================================*/
|
|
/***************************************************************************************************
|
|
Pause Back Ground
|
|
****************************************************************************************************/
|
|
static void DrawScoreWin(short px,short py)
|
|
{
|
|
|
|
iTranslate(PUSH, px-78, py-32 ,0);
|
|
iScale(NOPUSH,1.2 , 0.8 ,1.);
|
|
gDPSetEnvColor(graphPtr++,0,0,0,105);
|
|
gSPDisplayList(graphPtr++, RCP_Mess_window);
|
|
|
|
gSPPopMatrix(graphPtr++,G_MTX_MODELVIEW);
|
|
|
|
|
|
iTranslate(PUSH, px+6 , py-28,0);
|
|
iRotate(NOPUSH, 90,0,0,1);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
gSPDisplayList(graphPtr++, RCP_mess_cursor);
|
|
gSPPopMatrix(graphPtr++,G_MTX_MODELVIEW);
|
|
|
|
|
|
iTranslate(PUSH, px-9 , py-101,0);
|
|
iRotate(NOPUSH, 270,0,0,1);
|
|
gSPDisplayList(graphPtr++, RCP_mess_cursor);
|
|
gSPPopMatrix(graphPtr++,G_MTX_MODELVIEW);
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Pause Scene Event
|
|
****************************************************************************************************/
|
|
static void SelectRoomPauseInit(void)
|
|
{
|
|
unsigned char courseNo;
|
|
|
|
if (BuGetLastCourseNo() == 0) { courseNo = 0; }
|
|
else {
|
|
courseNo = BuGetLastCourseNo()-1;
|
|
if (courseNo > 14) courseNo = 15;
|
|
}
|
|
|
|
cursor_no = courseNo;
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Pause Scene Event
|
|
****************************************************************************************************/
|
|
static void DrawOutOfPauseScene(void)
|
|
{
|
|
#if CHINA
|
|
unsigned char se16_PAUSE[] = {0x86, 0x87, 0x8a, 0x8b, 0x8e, 0x8f, 0xfe, 0x88, 0x89, 0x8c, 0x8d, 0x90, 0x91, 0xff}; //PAUSE
|
|
#else
|
|
unsigned char se16_PAUSE[] = {f16_P, f16_A, f16_U, f16_S, f16_E, 0xff}; //PAUSE
|
|
#endif
|
|
|
|
/*---------------16 Bit Font----------------------------------*/
|
|
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
#if CHINA
|
|
Draw16bitFont(2, 113 , 81,se16_PAUSE);
|
|
#else
|
|
Draw16bitFont(2, 123 , 81,se16_PAUSE);
|
|
#endif
|
|
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_off);
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Pause Scene Score Event
|
|
****************************************************************************************************/
|
|
#if CHINA
|
|
static void DrawScoreStar(short px,short py,short player,short courseNo)
|
|
{
|
|
|
|
short i = 0;
|
|
unsigned char star[60];
|
|
unsigned char pa_star[] = {0x00, 0xfa, 0xff, 0xff};
|
|
unsigned char get_starFlag = BuGetStarFlag(player,courseNo);
|
|
unsigned short getStarNum = BuGetCourseStars(player,courseNo);
|
|
unsigned short star_num = 0;
|
|
short ceposx;
|
|
|
|
if (get_starFlag & (0x01<<6)) {
|
|
getStarNum--;
|
|
Draw8bitFont(px+89,py-5,pa_star);
|
|
}
|
|
|
|
while (i != getStarNum) {
|
|
if (get_starFlag & (0x01 << star_num) ) {
|
|
star[4*star_num] = 0x00; //STAR
|
|
star[4*star_num+1] = 0xfa; //STAR
|
|
i++;
|
|
}
|
|
else {
|
|
star[4*star_num] = 0x00; //NOSTAR
|
|
star[4*star_num+1] = 0xfd; //NOSTAR
|
|
}
|
|
star[4*star_num+2] = 0xff;
|
|
star[4*star_num+3] = 0x9e;
|
|
star_num++;
|
|
}
|
|
|
|
if (getStarNum == star_num && getStarNum != 6) {
|
|
star[4*star_num] = 0xff; //NOSTAR
|
|
star[4*star_num+1] = 0xd0; //NOSTAR
|
|
star[4*star_num+2] = 0xff;
|
|
star[4*star_num+3] = 0x9e;
|
|
star_num++;
|
|
}
|
|
|
|
star[4*star_num] = 0xff;
|
|
star[4*star_num+1] = 0xff;
|
|
|
|
Draw8bitFont(px+14,py+13,star);
|
|
}
|
|
#else
|
|
static void DrawScoreStar(short px,short py,short player,short courseNo)
|
|
{
|
|
|
|
short i = 0;
|
|
unsigned char star[30];
|
|
unsigned char pa_star[] = {0xfa, 0xff};
|
|
unsigned char get_starFlag = BuGetStarFlag(player,courseNo);
|
|
unsigned short getStarNum = BuGetCourseStars(player,courseNo);
|
|
unsigned short star_num = 0;
|
|
short ceposx;
|
|
|
|
if (get_starFlag & (0x01<<6)) {
|
|
getStarNum--;
|
|
Draw8bitFont(px+89,py-5,pa_star);
|
|
}
|
|
|
|
while (i != getStarNum) {
|
|
if (get_starFlag & (0x01 << star_num) ) {
|
|
star[2*star_num] = 0xfa; //STAR
|
|
i++;
|
|
}
|
|
else {
|
|
star[2*star_num] = 0xfd; //NOSTAR
|
|
}
|
|
star[2*star_num+1] = 0x9e;
|
|
star_num++;
|
|
}
|
|
|
|
if (getStarNum == star_num && getStarNum != 6) {
|
|
star[2*star_num] = 0xfd; //NOSTAR
|
|
star[2*star_num+1] = 0x9e;
|
|
star_num++;
|
|
}
|
|
|
|
star[2*star_num] = 0xff;
|
|
|
|
Draw8bitFont(px+14,py+13,star);
|
|
|
|
|
|
}
|
|
#endif
|
|
/***************************************************************************************************
|
|
Pause Scene Score Event
|
|
****************************************************************************************************/
|
|
static void DrawPauseScore(short px,short py)
|
|
{
|
|
unsigned char **crsnamep = (unsigned char**)(SegmentToVirtual(crsNamePtr));
|
|
#if CHINA
|
|
unsigned char ps_coin[] = {0x00, 0xf9, 0x00, 0xfb, 0xff, 0xff};
|
|
#else
|
|
unsigned char ps_coin[] = {0xf9, 0xfb,0xff};
|
|
#endif
|
|
unsigned char* coursename;
|
|
unsigned char courseNo;
|
|
unsigned char Number[8];
|
|
short be_cursor = cursor_no;
|
|
|
|
ContCursorEvent(1,&cursor_no,-1,16);
|
|
if (cursor_no == 16) cursor_no = 0;
|
|
if (cursor_no == -1) cursor_no = 15;
|
|
|
|
if (cursor_no != 15) {
|
|
while (BuGetCourseStars(activePlayerNo-1,cursor_no)==0) {
|
|
if (cursor_no >= be_cursor) cursor_no++;
|
|
else cursor_no--;
|
|
if (cursor_no == 15 || cursor_no == -1) { cursor_no = 15; break; }
|
|
}
|
|
}
|
|
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
|
|
|
|
if (cursor_no < 15) {
|
|
coursename = (unsigned char* )(SegmentToVirtual(crsnamep[cursor_no]));
|
|
|
|
DrawScoreStar(px,py,activePlayerNo-1,cursor_no);
|
|
|
|
Draw8bitFont(px+34,py-5,ps_coin);
|
|
I_itochar(BuGetNumCoins(activePlayerNo-1,cursor_no),Number);
|
|
Draw8bitFont(px+54,py-5,Number);
|
|
}
|
|
else {
|
|
#if CHINA
|
|
unsigned char s88_Star[] = { 0x00, 0xfa, 0x00, 0xfb, 0xff, 0xff,};
|
|
#else
|
|
unsigned char s88_Star[] = { 0xfa, 0xfb, 0xff,};
|
|
#endif
|
|
coursename = (unsigned char* )(SegmentToVirtual(crsnamep[25]));
|
|
|
|
Draw8bitFont(px+40,py+13 ,s88_Star);
|
|
I_itochar(BuGetExtraStars(activePlayerNo-1),Number);
|
|
Draw8bitFont(px+60,py+13 ,Number);
|
|
}
|
|
|
|
|
|
Draw8bitFont(px-9,py+30,coursename);
|
|
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
|
|
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Pause Scene Event
|
|
****************************************************************************************************/
|
|
extern short PauseSceneEvent(void)
|
|
{
|
|
short ret_num;
|
|
char curs;
|
|
|
|
switch(message_flag) {
|
|
case 0: cursor_no = 1;
|
|
font_alpha = 0;
|
|
FreezeGame(-1,NULL);
|
|
Na_FixSeFlagEntry(NA_SYS_PAUSE_ON); //Sound ON
|
|
if (activeCourseNo>=1 && activeCourseNo<=25) { CoursePauseInit(); message_flag = 1; }
|
|
else { SelectRoomPauseInit(); message_flag = 2; }
|
|
break;
|
|
|
|
case 1: DrawPauseBack(); //Normal Pause
|
|
DrawPauseScene();
|
|
DrawRedCoinNumber();
|
|
if (playerWorks[0].status & PS_TYPE_QUIT) DrawContinue(99,93,&cursor_no,15);
|
|
if (contOr->trigger & CONT_A || contOr->trigger & CONT_START) {
|
|
FreezeGame(0,NULL); //Window Close!
|
|
Na_FixSeFlagEntry(NA_SYS_PAUSE_OFF); //Sound ON
|
|
message_flag = 0;
|
|
selectNo = -1;
|
|
if (cursor_no == 2) ret_num = cursor_no;
|
|
else ret_num = 1;
|
|
return(ret_num);
|
|
}
|
|
break;
|
|
|
|
case 2: DrawPauseBack(); //Out Of Course Pause
|
|
DrawOutOfPauseScene();
|
|
// if (BuGetCourseStars(activePlayerNo-1,cursor_no)!=0 || cursor_no==15) {
|
|
DrawScoreWin(160,143);
|
|
DrawPauseScore(104,60);
|
|
// }
|
|
if (contOr->trigger & CONT_A || contOr->trigger & CONT_START) {
|
|
FreezeGame(0,NULL); //Window Close!
|
|
Na_FixSeFlagEntry(NA_SYS_PAUSE_OFF); //Sound ON
|
|
selectNo = -1;
|
|
message_flag = 0;
|
|
return(1);
|
|
}
|
|
break;
|
|
}
|
|
|
|
|
|
if (font_alpha <250) font_alpha += 25;
|
|
|
|
return(NULL);
|
|
|
|
|
|
|
|
}
|
|
/*=================================================================================================
|
|
Save Scene Event
|
|
|
|
|
|
|
|
===================================================================================================*/
|
|
|
|
#define DEMO_FRAME 100
|
|
|
|
static char save_flag = 0;
|
|
static int saveScene_counter = 0;
|
|
static int coin_counter = 0;
|
|
char getStar_flag = 0;
|
|
/***************************************************************************************************
|
|
Coin Count Demo
|
|
****************************************************************************************************/
|
|
static void SpecialDemo(char code)
|
|
{
|
|
|
|
#if ENGLISH
|
|
unsigned char se16_HISCORE[] = {f16_H ,f16_I , 0x9e, f16_S ,f16_C ,f16_O ,f16_R ,f16_E ,0xff};
|
|
#elif CHINA
|
|
unsigned char se16_HISCORE[] = {0x6a, 0x6b, 0x6e, 0x6f, 0x72, 0x73, 0xfe, 0x6c, 0x6d, 0x70, 0x71, 0x74, 0x75, 0xff};
|
|
#else
|
|
unsigned char se16_HISCORE[] = {f16_H ,f16_I , f16_S ,f16_C ,f16_O ,f16_R ,f16_E ,0xff};
|
|
#endif
|
|
#if CHINA
|
|
unsigned char se16_CONGRATULATIONS[] = {0x3a, 0x3b, 0x3e, 0x3f, 0x42, 0x43, 0xfe, 0x3c, 0x3d, 0x40, 0x41, 0x44, 0x45, 0xff};
|
|
#else
|
|
unsigned char se16_CONGRATULATIONS[] = {f16_C ,f16_O ,f16_N ,f16_G ,f16_R ,f16_A ,f16_T ,f16_U ,f16_L ,f16_A ,f16_T ,f16_I ,f16_O ,f16_N ,f16_S ,0xff};
|
|
#endif
|
|
unsigned char color = 200+sin(delta)*50;
|
|
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_on);
|
|
gDPSetEnvColor(graphPtr++,color,color,color,255);
|
|
|
|
#if ENGLISH
|
|
if (code == 0) {Draw16bitFont(2, 109 , 36, se16_HISCORE); }
|
|
else {Draw16bitFont(2, 70 , 67, se16_CONGRATULATIONS); }
|
|
#elif CHINA
|
|
if (code == 0) {Draw16bitFont(2, 109 , 26, se16_HISCORE); }
|
|
else {Draw16bitFont(2, 100 , 62, se16_CONGRATULATIONS); }
|
|
#else
|
|
if (code == 0) {Draw16bitFont(2, 118 , 48, se16_HISCORE); }
|
|
else {Draw16bitFont(2, 70 , 67, se16_CONGRATULATIONS); }
|
|
#endif
|
|
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_off);
|
|
}
|
|
/***************************************************************************************************
|
|
Coin Count Demo
|
|
****************************************************************************************************/
|
|
static void CoinCountDemo(short posx, short posy)
|
|
{
|
|
unsigned char coin_num[8];
|
|
unsigned char se16_coinnum1[] = {0x33, 0xff}; //coin num
|
|
unsigned char se16_coinnum2[] = {0x32, 0xff}; //coin num
|
|
|
|
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,255);
|
|
Draw16bitFont(2,posx,posy,se16_coinnum1);
|
|
Draw16bitFont(2,posx+16,posy,se16_coinnum2);
|
|
|
|
#if CHINA
|
|
I_itochar_16(coin_counter,coin_num);
|
|
#else
|
|
I_itochar(coin_counter,coin_num);
|
|
#endif
|
|
|
|
Draw16bitFont(2,posx+32,posy,coin_num);
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_off);
|
|
|
|
|
|
if (coin_counter >= playerMeter.coin) {
|
|
save_flag = 1;
|
|
coin_counter = playerMeter.coin;
|
|
if (BuIsMyHiScore()) SpecialDemo(0);
|
|
}
|
|
else {
|
|
if (saveScene_counter & 0x01 || playerMeter.coin > 70) {
|
|
coin_counter++;
|
|
Na_FixSeFlagEntry(NA_SYS_COUNTUP);
|
|
|
|
if (coin_counter == 50 || coin_counter == 100 || coin_counter == 150) {
|
|
Na_FixSeFlagEntry(NA_SE2_ONEUP);
|
|
(marioWorks->nlifes)++;
|
|
}
|
|
|
|
}
|
|
if (coin_counter == playerMeter.coin && BuIsMyHiScore()) Na_FixSeFlagEntry(NA_SYS_HIGH_SCORE);
|
|
}
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Coin Count Demo
|
|
****************************************************************************************************/
|
|
static void StarGetEffect(int mode ,unsigned char code)
|
|
{
|
|
|
|
/* getStar_flag == 1 ... Star Tenmetu */
|
|
|
|
if (coin_counter == playerMeter.coin && (BuGetStartingStar() & code )==0 && getStar_flag == 0 ) {
|
|
Na_HiScoreBgm();
|
|
getStar_flag = mode;
|
|
}
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Draw Save Scene
|
|
****************************************************************************************************/
|
|
static void DrawSaveDemo(void)
|
|
{
|
|
|
|
#if ENGLISH
|
|
unsigned char se8_Course[]= {f8_C, f8_O, f8_U, f8_R, f8_S, f8_E, 0xff}; //Course
|
|
unsigned char se8_Catch[] = {f8_C, f8_A, f8_T, f8_C, f8_H, 0xff}; //Catch!
|
|
unsigned char se8_Clear[] = {f8_C, f8_L, f8_E, f8_A, f8_R, 0xff}; //Clear!
|
|
#elif CHINA
|
|
unsigned char se8_Course[]= {0x1, 0x4, 0x1, 0x5, 0xff, 0xff}; //Course
|
|
unsigned char se8_Catch[] = {0x1, 0x45, 0x1, 0x46, 0xff, 0xff}; //Catch!
|
|
unsigned char se8_Clear[] = {0x1, 0x47, 0x1, 0x1f, 0xff, 0xff}; //Clear!
|
|
#else
|
|
unsigned char se8_Course[]= {0x79, 0x9f, 0x7c, 0xff}; //Course
|
|
unsigned char se8_Catch[] = {k8_ki, sk8_ya, sk8_tu, k8_ti,f8_bik,0xff}; //Catch!
|
|
unsigned char se8_Clear[] = {k8_ku, k8_ri, k8_a, f8_bik,0xff}; //Clear!
|
|
#endif
|
|
unsigned char se16_Star[]= {0x35, 0xff}; //Star
|
|
unsigned char **starnamep = (unsigned char**)(SegmentToVirtual(starnamePtr));
|
|
unsigned char **crsnamep = (unsigned char**)(SegmentToVirtual(crsNamePtr));
|
|
unsigned char *starname;
|
|
unsigned char Number[8];
|
|
|
|
|
|
if (BuGetLastCourseNo() <= 15) {
|
|
|
|
CoinCountDemo(118,103);
|
|
StarGetEffect(1,(0x01<<(BuGetLastStarNo()-1)));
|
|
|
|
|
|
if (BuGetLastStarNo() == 7) {
|
|
starname = (unsigned char* )(SegmentToVirtual(starnamep[COINSTAR]));
|
|
}
|
|
else {
|
|
starname = (unsigned char* )(SegmentToVirtual(starnamep[(BuGetLastCourseNo()-1)*6+(BuGetLastStarNo()-1)]));
|
|
}
|
|
|
|
/*------- 8 bit COURSE NO -----------*/
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
|
|
I_itochar(BuGetLastCourseNo(),Number);
|
|
gDPSetEnvColor(graphPtr++,0,0,0,font_alpha);
|
|
#if ENGLISH || CHINA
|
|
Draw8bitFont(65,165,se8_Course);
|
|
Draw8bitFont(95+9,165,Number);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
Draw8bitFont(63,167,se8_Course);
|
|
Draw8bitFont(93+9,167,Number);
|
|
#else
|
|
Draw8bitFont(65,165,se8_Course);
|
|
Draw8bitFont(95,165,Number);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
Draw8bitFont(63,167,se8_Course);
|
|
Draw8bitFont(93,167,Number);
|
|
#endif
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
|
|
}
|
|
else {
|
|
|
|
if (BuGetLastCourseNo()==16 || BuGetLastCourseNo()==17) { //Koopa Clear
|
|
starname = (unsigned char* )(SegmentToVirtual(crsnamep[BuGetLastCourseNo()-1]));
|
|
|
|
#if ENGLISH || CHINA
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,0,0,0,font_alpha);
|
|
Draw8bitFont(71,130,starname);
|
|
Draw8bitFont(81+MessageLength(starname),130,se8_Clear);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
Draw8bitFont(69,132,starname );
|
|
Draw8bitFont(79+MessageLength(starname),132,se8_Clear);
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
#else
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,0,0,0,font_alpha);
|
|
Draw8bitFont( 71,130,starname);
|
|
Draw8bitFont(205,130,se8_Clear);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
Draw8bitFont( 69,132,starname );
|
|
Draw8bitFont(203,132,se8_Clear);
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
#endif
|
|
|
|
SpecialDemo(1);
|
|
CoinCountDemo(118,111);
|
|
StarGetEffect(2,0x00);
|
|
return;
|
|
}
|
|
else {
|
|
starname = (unsigned char* )(SegmentToVirtual(starnamep[EXTSTAR]));
|
|
CoinCountDemo(118,103);
|
|
StarGetEffect(1,(0x01<<(BuGetLastStarNo()-1)));
|
|
}
|
|
|
|
}
|
|
|
|
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
Draw16bitFont(2, 55,77,se16_Star);
|
|
gSPDisplayList(graphPtr++, RCP_tfont2_off);
|
|
|
|
/*------- 8 bit STAR NAME-----------*/
|
|
#if ENGLISH || CHINA
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,0,0,0,font_alpha);
|
|
Draw8bitFont(76,145,starname);
|
|
// Draw8bitFont(86+MessageLength(starname),145,se8_Catch);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
Draw8bitFont(74,147,starname );
|
|
// Draw8bitFont(84+MessageLength(starname),147,se8_Catch);
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
#else
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,0,0,0,font_alpha);
|
|
Draw8bitFont( 76,145,starname);
|
|
Draw8bitFont(220,145,se8_Catch);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
Draw8bitFont( 74,147,starname );
|
|
Draw8bitFont(218,147,se8_Catch);
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
#endif
|
|
|
|
}
|
|
/***************************************************************************************************
|
|
Save Scene Cursor Event
|
|
****************************************************************************************************/
|
|
static void SaveCheckContinue(short posx,short posy,char* cursor,short space)
|
|
{
|
|
#if ENGLISH
|
|
unsigned char se8_SaveTUDUKU[]= {f8_S, f8_A, f8_V, f8_E, 0x9e, 0xe5, 0x9e, f8_C, f8_O, f8_N, f8_T, f8_I, f8_N, f8_U, f8_E, 0xff}; //save site tudukeru
|
|
unsigned char se8_SaveOWARU[]= {f8_S, f8_A, f8_V, f8_E, 0x9e, 0xe5, 0x9e, f8_Q, f8_U, f8_I, f8_T, 0xff}; //save site owaru
|
|
unsigned char se8_SaveNASI[]= {f8_C, f8_O, f8_N, f8_T, f8_I, f8_N, f8_U, f8_E, 0x6f, 0x9e, f8_D, f8_O, f8_N, 0x3e, f8_T, 0x9e, f8_S, f8_A, f8_V, f8_E, 0xff}; //save sinaide owaru
|
|
#elif CHINA
|
|
unsigned char se8_SaveTUDUKU[]= {0x1, 0x2b, 0x1, 0x2c, 0x1, 0x42, 0x1, 0x8, 0x1, 0x9, 0xff, 0xff,}; //save site tudukeru
|
|
unsigned char se8_SaveOWARU[]= {0x1, 0x2b, 0x1, 0x2c, 0x1, 0x42, 0x1, 0x6, 0x1, 0x7, 0xff, 0xff,}; //save site owaru
|
|
unsigned char se8_SaveNASI[]= {0x1, 0x43, 0x1, 0x44, 0x1, 0x2b, 0x1, 0x2c, 0xff, 0xff,}; //save sinaide owaru
|
|
#else
|
|
unsigned char se8_SaveTUDUKU[]= {0x7d, 0x9f, 0xf0, 0x8b, 0x4b, 0x52, 0x51, 0xf0, 0x51, 0x48, 0x68, 0xf4, 0xff}; //save site tudukeru
|
|
unsigned char se8_SaveOWARU[]= {0x7d, 0x9f, 0xf0, 0x8b, 0x4b, 0x52, 0x44, 0x6b, 0x68, 0xf4, 0xff}; //save site owaru
|
|
unsigned char se8_SaveNASI[]= {0x7d, 0x9f, 0xf0, 0x8b, 0x4b, 0x54, 0x41, 0xf0, 0x52, 0x51, 0xf0, 0x51, 0x48, 0x68, 0xf4, 0xff}; //save sinaide owaru
|
|
#endif
|
|
|
|
ContCursorEvent(1,cursor,1,3);
|
|
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_on);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
#if ENGLISH || CHINA
|
|
Draw8bitFont(posx+12,(posy) ,se8_SaveTUDUKU);
|
|
Draw8bitFont(posx+12,(posy)-20,se8_SaveOWARU);
|
|
Draw8bitFont(posx+12,(posy)-40,se8_SaveNASI);
|
|
#else
|
|
Draw8bitFont(posx+10,(posy+2) ,se8_SaveTUDUKU);
|
|
Draw8bitFont(posx+10,(posy+2)-20,se8_SaveOWARU);
|
|
Draw8bitFont(posx+10,(posy+2)-40,se8_SaveNASI);
|
|
#endif
|
|
gSPDisplayList(graphPtr++, RCP_mess_font_off);
|
|
|
|
|
|
iTranslate(PUSH, posx, posy - ((*cursor-1)*space),0);
|
|
gDPSetEnvColor(graphPtr++,255,255,255,font_alpha);
|
|
gSPDisplayList(graphPtr++, RCP_mess_cursor);
|
|
gSPPopMatrix(graphPtr++,G_MTX_MODELVIEW);
|
|
}
|
|
/***************************************************************************************************
|
|
Save Scene Event
|
|
****************************************************************************************************/
|
|
extern short SaveSceneEvent(void)
|
|
{
|
|
short ret_num;
|
|
char curs;
|
|
|
|
|
|
switch(message_flag) {
|
|
case 0: DrawSaveDemo();
|
|
if (saveScene_counter > DEMO_FRAME && save_flag == 1) {
|
|
message_flag = 1;
|
|
// Na_FixSeFlagEntry(NA_SYS_PAUSE_ON); //Sound ON
|
|
FreezeGame(-1,NULL);
|
|
font_alpha = 0;
|
|
cursor_no = 1;
|
|
}
|
|
break;
|
|
|
|
case 1: DrawPauseBack();
|
|
DrawSaveDemo();
|
|
SaveCheckContinue(100,86,&cursor_no,20);
|
|
if (saveScene_counter > DEMO_FRAME+10 && (contOr->trigger & CONT_A || contOr->trigger & CONT_START)) {
|
|
FreezeGame(0,NULL); //Window Close!
|
|
Na_FixSeFlagEntry(NA_SE2_SET); //Sound ON
|
|
message_flag = 0;
|
|
selectNo = -1;
|
|
ret_num = cursor_no;
|
|
saveScene_counter = 0;
|
|
coin_counter = 0;
|
|
save_flag = 0;
|
|
getStar_flag = 0;
|
|
return(ret_num);
|
|
}
|
|
break;
|
|
|
|
}
|
|
|
|
if (font_alpha <250) font_alpha += 25;
|
|
saveScene_counter ++;
|
|
|
|
return(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|