/*************************************************************************************************** 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; imario 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); }