#include #include "CORE_fileio.h" #include "GUI_common.h" #include "gfx/all_gfx.h" #define MOVE_SPEED 4 static commons_init_t Commons = {0,0,0}; #ifdef __INTERNAL_GFX__ void title_init(title_t t){ const unsigned short* _pal = NULL; const unsigned char* _sp1 = NULL; const unsigned char* _sp2 = NULL; const unsigned char* _sp3 = NULL; switch(t){ case TITLE_MAIN: _pal = title_main_Pal; _sp1 = TITLE_main_0_Sprite; _sp2 = TITLE_main_1_Sprite; _sp3 = TITLE_main_2_Sprite; break; case TITLE_CONNECT: _pal = title_connect_Pal; _sp1 = TITLE_connect_0_Sprite; _sp2 = TITLE_connect_1_Sprite; _sp3 = TITLE_connect_2_Sprite; break; case TITLE_CONFIG: _pal = title_config_Pal; _sp1 = TITLE_config_0_Sprite; _sp2 = TITLE_config_1_Sprite; _sp3 = TITLE_config_2_Sprite; break; case TITLE_NETWORK: _pal = title_network_Pal; _sp1 = TITLE_network_0_Sprite; _sp2 = TITLE_network_1_Sprite; _sp3 = TITLE_network_2_Sprite; break; case TITLE_LOCAL_PORT: _pal = title_net_local_port_Pal; _sp1 = TITLE_net_local_port_0_Sprite; _sp2 = TITLE_net_local_port_1_Sprite; _sp3 = TITLE_net_local_port_2_Sprite; break; case TITLE_SERV_PORT: _pal = title_net_serv_port_Pal; _sp1 = TITLE_net_serv_port_0_Sprite; _sp2 = TITLE_net_serv_port_1_Sprite; _sp3 = TITLE_net_serv_port_2_Sprite; break; case TITLE_SERV_IP: _pal = title_net_serv_ip_Pal; _sp1 = TITLE_net_serv_ip_0_Sprite; _sp2 = TITLE_net_serv_ip_1_Sprite; _sp3 = TITLE_net_serv_ip_2_Sprite; break; case TITLE_POWER: _pal = title_power_Pal; _sp1 = TITLE_power_0_Sprite; _sp2 = TITLE_power_1_Sprite; _sp3 = TITLE_power_2_Sprite; break; case TITLE_KEYS: _pal = title_keys_Pal; _sp1 = TITLE_keys_0_Sprite; _sp2 = TITLE_keys_1_Sprite; _sp3 = TITLE_keys_2_Sprite; break; } PA_LoadSpritePal(0, PALETTE_TITLE, (void*)_pal); PA_CreateSprite(0, 0, (void*)_sp1, OBJ_SIZE_64X32, 1, 0, OUT_TITLE_X, OUT_TITLE_Y); PA_CreateSprite(0, 1, (void*)_sp2, OBJ_SIZE_64X32, 1, 0, OUT_TITLE_X+64, OUT_TITLE_Y); PA_CreateSprite(0, 2, (void*)_sp3, OBJ_SIZE_64X32, 1, 0, OUT_TITLE_X+128, OUT_TITLE_Y); Commons.title = 1; return; } #else u16 _title_pal[256]; u8* _title_sp1 = NULL; u8* _title_sp2 = NULL; u8* _title_sp3 = NULL; void title_init(title_t t){ u8* _f1 = NULL; u8* _f2 = NULL; u8* _f3 = NULL; switch(t){ case TITLE_MAIN: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; case TITLE_CONNECT: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; case TITLE_CONFIG: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; case TITLE_NETWORK: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; case TITLE_LOCAL_PORT: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; case TITLE_SERV_PORT: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; case TITLE_SERV_IP: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; case TITLE_POWER: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; case TITLE_KEYS: _f1 = file_load("/GFX_iconMask_64x32.gif"); _f2 = file_load("/GFX_iconMask_64x32.gif"); _f3 = file_load("/GFX_iconMask_64x32.gif"); break; } _title_sp1 = PA_GifToTiles((void*)_f1, _title_pal); _title_sp2 = PA_GifToTiles((void*)_f2, _title_pal); _title_sp3 = PA_GifToTiles((void*)_f3, _title_pal); free(_f1); free(_f2); free(_f3); PA_LoadSpritePal(0, PALETTE_TITLE, (void*)_title_pal); PA_CreateSprite(0, 0, (void*)_title_sp1, OBJ_SIZE_64X32, 1, PALETTE_TITLE, OUT_TITLE_X, OUT_TITLE_Y); PA_CreateSprite(0, 1, (void*)_title_sp2, OBJ_SIZE_64X32, 1, PALETTE_TITLE, OUT_TITLE_X+64, OUT_TITLE_Y); PA_CreateSprite(0, 2, (void*)_title_sp3, OBJ_SIZE_64X32, 1, PALETTE_TITLE, OUT_TITLE_X+128, OUT_TITLE_Y); Commons.title = 1; return; } #endif void button_init_l(button_t b){ const unsigned short* _pal = NULL; const unsigned char* _sp1 = NULL; const unsigned char* _sp2 = NULL; switch(b){ case BUTTON_BACK: _pal = button_back_Pal; _sp1 = BUTTON_back_0_Sprite; _sp2 = BUTTON_back_1_Sprite; break; case BUTTON_OK: _pal = button_ok_Pal; _sp1 = BUTTON_ok_0_Sprite; _sp2 = BUTTON_ok_1_Sprite; break; case BUTTON_MORE: _pal = button_more_Pal; _sp1 = BUTTON_more_0_Sprite; _sp2 = BUTTON_more_1_Sprite; break; case BUTTON_PLAY: _pal = button_play_Pal; _sp1 = BUTTON_play_0_Sprite; _sp2 = BUTTON_play_1_Sprite; break; } PA_LoadSpritePal(0, PALETTE_BUTTON_L, (void*)_pal); PA_CreateSprite(0, 3, (void*)_sp1, OBJ_SIZE_64X32, 1, PALETTE_BUTTON_L, OUT_BUTTON_L_X, OUT_BUTTON_L_Y); PA_CreateSprite(0, 4, (void*)_sp2, OBJ_SIZE_32X32, 1, PALETTE_BUTTON_L, OUT_BUTTON_L_X+64, OUT_BUTTON_L_Y); Commons.button_l = 1; return; } void button_init_r(button_t b){ const unsigned short* _pal = NULL; const unsigned char* _sp1 = NULL; const unsigned char* _sp2 = NULL; switch(b){ case BUTTON_BACK: _pal = button_back_Pal; _sp1 = BUTTON_back_0_Sprite; _sp2 = BUTTON_back_1_Sprite; break; case BUTTON_OK: _pal = button_ok_Pal; _sp1 = BUTTON_ok_0_Sprite; _sp2 = BUTTON_ok_1_Sprite; break; case BUTTON_MORE: _pal = button_more_Pal; _sp1 = BUTTON_more_0_Sprite; _sp2 = BUTTON_more_1_Sprite; break; case BUTTON_PLAY: _pal = button_play_Pal; _sp1 = BUTTON_play_0_Sprite; _sp2 = BUTTON_play_1_Sprite; break; } PA_LoadSpritePal(0, PALETTE_BUTTON_R, (void*)_pal); PA_CreateSprite(0, 5, (void*)_sp1, OBJ_SIZE_64X32, 1, PALETTE_BUTTON_R, OUT_BUTTON_R_X, OUT_BUTTON_R_Y); PA_CreateSprite(0, 6, (void*)_sp2, OBJ_SIZE_32X32, 1, PALETTE_BUTTON_R, OUT_BUTTON_R_X+64, OUT_BUTTON_R_Y); Commons.button_r = 1; return; } /* buttons/title move in/out Return 1 if in progress 0 if finished */ u8 button_l_move_in(void){ if(!Commons.button_l) return 0; if(PA_GetSpriteY(0, 3) > IN_BUTTON_L_Y){ // l button PA_SetSpriteXY(0, 3, PA_GetSpriteX(0, 3)+MOVE_SPEED, PA_GetSpriteY(0, 3)-MOVE_SPEED); PA_SetSpriteXY(0, 4, PA_GetSpriteX(0, 4)+MOVE_SPEED, PA_GetSpriteY(0, 4)-MOVE_SPEED); return 1; } return 0; } u8 button_r_move_in(void){ if(!Commons.button_r) return 0; if(PA_GetSpriteY(0, 5) > IN_BUTTON_R_Y){ // r button PA_SetSpriteXY(0, 5, PA_GetSpriteX(0, 5)-MOVE_SPEED, PA_GetSpriteY(0, 5)-MOVE_SPEED); PA_SetSpriteXY(0, 6, PA_GetSpriteX(0, 6)-MOVE_SPEED, PA_GetSpriteY(0, 6)-MOVE_SPEED); return 1; } return 0; } u8 button_l_move_out(void){ if(!Commons.button_l) return 0; if(PA_GetSpriteY(0, 3) < OUT_BUTTON_L_Y){ // l button PA_SetSpriteXY(0, 3, PA_GetSpriteX(0, 3)-MOVE_SPEED, PA_GetSpriteY(0, 3)+MOVE_SPEED); PA_SetSpriteXY(0, 4, PA_GetSpriteX(0, 4)-MOVE_SPEED, PA_GetSpriteY(0, 4)+MOVE_SPEED); return 1; } return 0; } u8 button_r_move_out(void){ if(!Commons.button_r) return 0; if(PA_GetSpriteY(0, 5) < OUT_BUTTON_R_Y){ // r button PA_SetSpriteXY(0, 5, PA_GetSpriteX(0, 5)+MOVE_SPEED, PA_GetSpriteY(0, 5)+MOVE_SPEED); PA_SetSpriteXY(0, 6, PA_GetSpriteX(0, 6)+MOVE_SPEED, PA_GetSpriteY(0, 6)+MOVE_SPEED); return 1; } return 0; } u8 buttons_move_in(void){ return(button_l_move_in() | button_r_move_in()); } u8 buttons_move_out(void){ return(button_l_move_out() | button_r_move_out()); } u8 title_move_in(void){ if(!Commons.title) return 0; if( ((s8)PA_GetSpriteY(0, 0)) < IN_TITLE_Y ){ PA_SetSpriteY(0, 0, PA_GetSpriteY(0, 0)+MOVE_SPEED); PA_SetSpriteY(0, 1, PA_GetSpriteY(0, 1)+MOVE_SPEED); PA_SetSpriteY(0, 2, PA_GetSpriteY(0, 2)+MOVE_SPEED); return 1; } return 0; } u8 title_move_out(void){ if(!Commons.title) return 0; if( ((s8)PA_GetSpriteY(0, 0)) > OUT_TITLE_Y ){ PA_SetSpriteY(0, 0, PA_GetSpriteY(0, 0)-MOVE_SPEED); PA_SetSpriteY(0, 1, PA_GetSpriteY(0, 1)-MOVE_SPEED); PA_SetSpriteY(0, 2, PA_GetSpriteY(0, 2)-MOVE_SPEED); return 1; } return 0; } void commons_move_in(void){ PA_PlaySimpleSound(0, SFX_woosh_out); while( buttons_move_in() | title_move_in() ) PA_WaitForVBL(); return; } void commons_move_out(void){ PA_PlaySimpleSound(1, SFX_woosh_out); while( buttons_move_out() | title_move_out() ) PA_WaitForVBL(); return; } /* l boutton touched returns 1 yes 0 no*/ u8 button_touch_l(void){ u8 i = 0; if(!Commons.button_l) return 0; for(i=3; i<=4; i++){ if(PA_SpriteTouched(i) && Stylus.Newpress) return 1; } return 0; } /* r boutton touched returns 1 yes 0 no*/ u8 button_touch_r(void){ u8 i = 0; if(!Commons.button_r) return 0; for(i=5; i<=6; i++){ if(PA_SpriteTouched(i) && Stylus.Newpress) return 1; } return 0; } /* buttons delete */ void buttons_delete(void){ u8 i = 0; if(Commons.button_l){ for(i=3; i<=4; i++){ PA_DeleteSprite(0, i); } Commons.button_l = 0; } if(Commons.button_r){ for(i=5; i<=6; i++){ PA_DeleteSprite(0, i); } Commons.button_r = 0; } return; } /* title delete */ void title_delete(void){ u8 i = 0; if(!Commons.title) return; Commons.title = 0; for(i=0; i<=2; i++){ PA_DeleteSprite(0, i); } #ifndef __INTERNAL_GFX__ free((void*)_title_sp1); free((void*)_title_sp2); free((void*)_title_sp3); #endif return; }