//Experimental Control Settings
const int I_SWITCH_COOL = 51;
const int EQUIPPED_ITEM = 52;
const int SWITCH_BUTTON = 53;
const int JUMP_BUTTON = 54;
const int DASH_BUTTON = 55;
const int DIAGONAL_UP_BUTTON = 56;
const int DIAGONAL_DN_BUTTON = 57;
const int I_MISSILES = 13;
const int I_BEAM = -1;
const int I_BEAM1 = 5;
const int I_BEAM2 = 6;
const int I_BEAM3 = 7;
const int I_BEAM4 = 36;
const int I_SUPERMISSILE = 25;
const int I_X_RAY = 53;
const int I_POWER_BOMB = 48;
bool PressItemSwitch(){
if(SamusVars[SWITCH_BUTTON]==BUTTON_A){
if(Link->PressA)return true;
}
else if(SamusVars[SWITCH_BUTTON]==BUTTON_B){
if(Link->PressB)return true;
}
else if(SamusVars[SWITCH_BUTTON]==BUTTON_L){
if(Link->PressL)return true;
}
else if(SamusVars[SWITCH_BUTTON]==BUTTON_R){
if(Link->PressR)return true;
}
else if(SamusVars[SWITCH_BUTTON]==BUTTON_EX1){
if(Link->PressEx1)return true;
}
else if(SamusVars[SWITCH_BUTTON]==BUTTON_EX2){
if(Link->PressEx2)return true;
}
else if(SamusVars[SWITCH_BUTTON]==BUTTON_EX3){
if(Link->PressEx3)return true;
}
else if(SamusVars[SWITCH_BUTTON]==BUTTON_EX4){
if(Link->PressEx4)return true;
}
}
const int I_DUMMY = 26;//A useless item, only needed to damp B button input.
void ItemSwitcher(){
equipItemB(I_DUMMY);
if(PressItemSwitch() && SamusVars[I_SWITCH_COOL]<=0){
if(SamusVars[EQUIPPED_ITEM]==I_BEAM){
if(Link->Item[I_MISSILES] && Game->Counter[CR_ARROWS])
SamusVars[EQUIPPED_ITEM]=I_MISSILES;
else if(Link->Item[I_SUPERMISSILE] && Game->Counter[CR_RUPEES]!=0)
SamusVars[EQUIPPED_ITEM]=I_SUPERMISSILE;
else if(Link->Item[I_POWER_BOMB] && Game->Counter[CR_SBOMBS]!=0)
SamusVars[EQUIPPED_ITEM]=I_POWER_BOMB;
else if(Link->Item[I_GRAPPLE])
SamusVars[EQUIPPED_ITEM]= I_GRAPPLE;
else if(Link->Item[I_X_RAY])
SamusVars[EQUIPPED_ITEM]= I_X_RAY;
}
else if(SamusVars[EQUIPPED_ITEM]==I_MISSILES){
if(Link->Item[I_SUPERMISSILE] && Game->Counter[CR_RUPEES]!=0)
SamusVars[EQUIPPED_ITEM]=I_SUPERMISSILE;
else if(Link->Item[I_POWER_BOMB] && Game->Counter[CR_SBOMBS]!=0)
SamusVars[EQUIPPED_ITEM]=I_POWER_BOMB;
else if(Link->Item[I_GRAPPLE])
SamusVars[EQUIPPED_ITEM]= I_GRAPPLE;
else if(Link->Item[I_X_RAY])
SamusVars[EQUIPPED_ITEM]= I_X_RAY;
else
SamusVars[EQUIPPED_ITEM]= I_BEAM;
}
else if(SamusVars[EQUIPPED_ITEM]==I_SUPERMISSILE){
if(Link->Item[I_POWER_BOMB] && Game->Counter[CR_SBOMBS]!=0)
SamusVars[EQUIPPED_ITEM]=I_POWER_BOMB;
else if(Link->Item[I_GRAPPLE])
SamusVars[EQUIPPED_ITEM]= I_GRAPPLE;
else if(Link->Item[I_X_RAY])
SamusVars[EQUIPPED_ITEM]= I_X_RAY;
else
SamusVars[EQUIPPED_ITEM]= I_BEAM;
}
else if(SamusVars[EQUIPPED_ITEM]==I_POWER_BOMB){
if(Link->Item[I_GRAPPLE])
SamusVars[EQUIPPED_ITEM]= I_GRAPPLE;
else if(Link->Item[I_X_RAY])
SamusVars[EQUIPPED_ITEM]= I_X_RAY;
else
SamusVars[EQUIPPED_ITEM]= I_BEAM;
}
else if(SamusVars[EQUIPPED_ITEM]==I_GRAPPLE){
if(Link->Item[I_X_RAY])
SamusVars[EQUIPPED_ITEM]= I_X_RAY;
else
SamusVars[EQUIPPED_ITEM]= I_BEAM;
}
else if(SamusVars[EQUIPPED_ITEM]==I_X_RAY)
SamusVars[EQUIPPED_ITEM]=I_BEAM;
SamusVars[I_SWITCH_COOL]=30;
}
if(SamusVars[I_SWITCH_COOL]>0)
SamusVars[I_SWITCH_COOL]--;
if(SamusVars[EQUIPPED_ITEM]==I_BEAM){
if(Link->Item[I_BEAM1] && !Link->Item[I_BEAM2]
&& !Link->Item[I_BEAM3] && !Link->Item[I_BEAM4])
equipItemA(I_BEAM1);
else if(Link->Item[I_BEAM1] && Link->Item[I_BEAM2]
&& !Link->Item[I_BEAM3] && !Link->Item[I_BEAM4])
equipItemA(I_BEAM2);
else if(Link->Item[I_BEAM1] && Link->Item[I_BEAM2]
&& Link->Item[I_BEAM3] && !Link->Item[I_BEAM4])
equipItemA(I_BEAM3);
else if(Link->Item[I_BEAM1] && Link->Item[I_BEAM2]
&& Link->Item[I_BEAM3] && Link->Item[I_BEAM4])
equipItemA(I_BEAM4);
}
else if(SamusVars[EQUIPPED_ITEM]==I_MISSILES)
equipItemA(I_MISSILES);
else if(SamusVars[EQUIPPED_ITEM]==I_SUPERMISSILE)
equipItemA(I_SUPERMISSILE);
else if(SamusVars[EQUIPPED_ITEM]==I_POWER_BOMB)
equipItemA(I_POWER_BOMB);
else if(SamusVars[EQUIPPED_ITEM]==I_GRAPPLE)
equipItemA(I_GRAPPLE);
else if(SamusVars[EQUIPPED_ITEM]==I_X_RAY)
equipItemA(I_X_RAY);
}
bool PressJump(){
if(SamusVars[JUMP_BUTTON]==BUTTON_A){
if(Link->PressA)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_B){
if(Link->PressB)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_L){
if(Link->PressL)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_R){
if(Link->PressR)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX1){
if(Link->PressEx1)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX2){
if(Link->PressEx2)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX3){
if(Link->PressEx3)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX4){
if(Link->PressEx4)return true;
}
}
bool InputJump(){
if(SamusVars[JUMP_BUTTON]==BUTTON_A){
if(Link->InputA)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_B){
if(Link->InputB)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_L){
if(Link->InputL)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_R){
if(Link->InputR)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX1){
if(Link->InputEx1)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX2){
if(Link->InputEx2)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX3){
if(Link->InputEx3)return true;
}
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX4){
if(Link->InputEx4)return true;
}
}
bool PressDash(){
if(SamusVars[DASH_BUTTON]==BUTTON_A){
if(Link->PressA)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_B){
if(Link->PressB)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_L){
if(Link->PressL)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_R){
if(Link->PressR)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_EX1){
if(Link->PressEx1)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_EX2){
if(Link->PressEx2)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_EX3){
if(Link->PressEx3)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_EX4){
if(Link->PressEx4)return true;
}
}
bool InputDash(){
if(SamusVars[DASH_BUTTON]==BUTTON_A){
if(Link->InputA)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_B){
if(Link->InputB)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_L){
if(Link->InputL)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_R){
if(Link->InputR)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_EX1){
if(Link->InputEx1)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_EX2){
if(Link->InputEx2)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_EX3){
if(Link->InputEx3)return true;
}
else if(SamusVars[DASH_BUTTON]==BUTTON_EX4){
if(Link->InputEx4)return true;
}
}
bool PressDiagUp(){
if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_A){
if(Link->PressA)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_B){
if(Link->PressB)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_L){
if(Link->PressL)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_R){
if(Link->PressR)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX1){
if(Link->PressEx1)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX2){
if(Link->PressEx2)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX3){
if(Link->PressEx3)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX4){
if(Link->PressEx4)return true;
}
}
bool InputDiagUp(){
if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_A){
if(Link->InputA)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_B){
if(Link->InputB)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_L){
if(Link->InputL)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_R){
if(Link->InputR)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX1){
if(Link->InputEx1)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX2){
if(Link->InputEx2)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX3){
if(Link->InputEx3)return true;
}
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX4){
if(Link->InputEx4)return true;
}
}
bool PressDiagDn(){
if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_A){
if(Link->PressA)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_B){
if(Link->PressB)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_L){
if(Link->PressL)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_R){
if(Link->PressR)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX1){
if(Link->PressEx1)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX2){
if(Link->PressEx2)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX3){
if(Link->PressEx3)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX4){
if(Link->PressEx4)return true;
}
}
bool InputDiagDn(){
if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_A){
if(Link->InputA)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_B){
if(Link->InputB)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_L){
if(Link->InputL)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_R){
if(Link->InputR)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX1){
if(Link->InputEx1)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX2){
if(Link->InputEx2)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX3){
if(Link->InputEx3)return true;
}
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX4){
if(Link->InputEx4)return true;
}
}
const int CM_AUTOWARPD = 74; //Combo ID of a transparent AutoWarp D combotype
ffc script StartMenu{
void run(){
SamusVars[IS_INVISIBLE]=1;
bool pressed;
int choice;
SamusVars[JUMP_BUTTON]= BUTTON_EX1;
SamusVars[DASH_BUTTON]= BUTTON_EX2;
SamusVars[DIAGONAL_UP_BUTTON]= BUTTON_L;
SamusVars[DIAGONAL_DN_BUTTON]=BUTTON_R;
SamusVars[SWITCH_BUTTON]= BUTTON_B;
while ( true ) {
//If this station is active...
while ( ( !pressed && !Tango_MenuIsActive() ) ) {
if ( Link->PressStart ) {
pressed = true;
Link->PressStart= false;
Link->InputStart = false;
}
Waitframe();
}
if ( pressed ) {
pressed = false;
//Set coordinates for this station:
choice = Start_Menu();
if ( choice < 0 && choice > -9999)
if ( GetGameRestoreStation()!=128 )
WarpSamus( GetGameRestoreStation(), 0,false );
else
this->Data = CM_AUTOWARPD;
}
Waitframe(); //Main while loop.
}
}
}
//Menu called by the save station ffc.
int Start_Menu() {
int lineBreak[]="@26";
int line1[]="@choice(1)Start Game@26";
int line2[]="@choice(2)Set Up Controls@26";
int initmenu[]="@domenu(1)@suspend()";
SetUpWindow(WINDOW_SLOT_1, WINDOW_STYLE_1, 32, 16, SIZE_WIDE);
Tango_LoadString(WINDOW_SLOT_1, line1);
Tango_AppendString(WINDOW_SLOT_1, line2);
Tango_AppendString(WINDOW_SLOT_1, initmenu);
Tango_ActivateSlot(WINDOW_SLOT_1);
while(!Tango_MenuIsActive()){
Waitframe();
}
// Save the state again...
int slotState[278];
int menuState[960];
int cursorPos;
Tango_SaveSlotState(WINDOW_SLOT_1, slotState);
Tango_SaveMenuState(menuState);
int done = 0;
int choice;
while(true){
while( Tango_MenuIsActive() ) {
cursorPos=Tango_GetMenuCursorPosition();
Waitframe();
}
choice = Tango_GetLastMenuChoice();
if ( choice == 1)
done = -9999;
else if ( choice == 2){//Cancel
ControlMenu();
done =1;
}
if ( done )
break;
// return choice;
else {
Tango_RestoreSlotState(WINDOW_SLOT_1, slotState);
Tango_RestoreMenuState(menuState);
Tango_SetMenuCursorPosition(cursorPos);
}
}
Tango_ClearSlot(WINDOW_SLOT_1);
//if ( DEBUG_MENUS ) DebugMetroidSaveStationMenu(done);
return done;
}
//Menu called by the save station ffc.
int ControlMenu() {
int lineBreak[]="@26";
int line1[]="@choice(1)Press Jump@26";
int line2[]="@choice(2)Press Dash@26";
int line3[]="@choice(3)Switch Items@26";
int line4[]="@choice(4)Aim Up@26";
int line5[]="@choice(5)Aim Dn@26";
int End[]="@choice(6)End@26@sync(1)";
int initmenu[]="@domenu(1)@suspend()";
int ButtonB[]= "B@26";
int ButtonL[]= "L@26";
int ButtonR[]= "R@26";
int ButtonEx1[]= "Ex1@26";
int ButtonEx2[]= "Ex2@26";
int ButtonEx3[]= "Ex3@26";
int ButtonEx4[]= "Ex4@26";
int Sync[]= "@sync(1)";
//Default settings.
//Ex1 = Jump.
//Ex2 = Dash
//B = Switch Items.
//L = Diagonal up.
//R = Diagonal Dn.
SetUpWindow(WINDOW_SLOT_1, WINDOW_STYLE_1, 32, 16, SIZE_LARGE);
Tango_LoadString(WINDOW_SLOT_1, line1);
Tango_AppendString(WINDOW_SLOT_1, line2);
Tango_AppendString(WINDOW_SLOT_1, line3);
Tango_AppendString(WINDOW_SLOT_1, line4);
Tango_AppendString(WINDOW_SLOT_1, line5);
Tango_AppendString(WINDOW_SLOT_1, End);
Tango_AppendString(WINDOW_SLOT_1, initmenu);
Tango_ActivateSlot(WINDOW_SLOT_1);
SetUpWindow(WINDOW_SLOT_2, WINDOW_STYLE_1, 128, 16, SIZE_LARGE);
if(SamusVars[JUMP_BUTTON]==BUTTON_EX1)
Tango_LoadString(WINDOW_SLOT_2, ButtonEx1);
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX2)
Tango_LoadString(WINDOW_SLOT_2, ButtonEx2);
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX3)
Tango_LoadString(WINDOW_SLOT_2, ButtonEx3);
else if(SamusVars[JUMP_BUTTON]==BUTTON_EX4)
Tango_LoadString(WINDOW_SLOT_2, ButtonEx4);
else if(SamusVars[JUMP_BUTTON]==BUTTON_L)
Tango_LoadString(WINDOW_SLOT_2, ButtonL);
else if(SamusVars[JUMP_BUTTON]==BUTTON_R)
Tango_LoadString(WINDOW_SLOT_2, ButtonR);
else if(SamusVars[JUMP_BUTTON]==BUTTON_B)
Tango_LoadString(WINDOW_SLOT_2, ButtonB);
if(SamusVars[DASH_BUTTON]==BUTTON_EX1)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx1);
else if(SamusVars[DASH_BUTTON]==BUTTON_EX2)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx2);
else if(SamusVars[DASH_BUTTON]==BUTTON_EX3)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx3);
else if(SamusVars[DASH_BUTTON]==BUTTON_EX4)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx4);
else if(SamusVars[DASH_BUTTON]==BUTTON_L)
Tango_AppendString(WINDOW_SLOT_2, ButtonL);
else if(SamusVars[DASH_BUTTON]==BUTTON_R)
Tango_AppendString(WINDOW_SLOT_2, ButtonR);
else if(SamusVars[DASH_BUTTON]==BUTTON_B)
Tango_AppendString(WINDOW_SLOT_2, ButtonB);
if(SamusVars[SWITCH_BUTTON]==BUTTON_EX1)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx1);
else if(SamusVars[SWITCH_BUTTON]==BUTTON_EX2)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx2);
else if(SamusVars[SWITCH_BUTTON]==BUTTON_EX3)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx3);
else if(SamusVars[SWITCH_BUTTON]==BUTTON_EX4)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx4);
else if(SamusVars[SWITCH_BUTTON]==BUTTON_L)
Tango_AppendString(WINDOW_SLOT_2, ButtonL);
else if(SamusVars[SWITCH_BUTTON]==BUTTON_R)
Tango_AppendString(WINDOW_SLOT_2, ButtonR);
else if(SamusVars[SWITCH_BUTTON]==BUTTON_B)
Tango_AppendString(WINDOW_SLOT_2, ButtonB);
if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX1)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx1);
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX2)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx2);
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX3)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx3);
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_EX4)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx4);
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_L)
Tango_AppendString(WINDOW_SLOT_2, ButtonL);
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_R)
Tango_AppendString(WINDOW_SLOT_2, ButtonR);
else if(SamusVars[DIAGONAL_UP_BUTTON]==BUTTON_B)
Tango_AppendString(WINDOW_SLOT_2, ButtonB);
if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX1)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx1);
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX2)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx2);
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX3)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx3);
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_EX4)
Tango_AppendString(WINDOW_SLOT_2, ButtonEx4);
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_L)
Tango_AppendString(WINDOW_SLOT_2, ButtonL);
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_R)
Tango_AppendString(WINDOW_SLOT_2, ButtonR);
else if(SamusVars[DIAGONAL_DN_BUTTON]==BUTTON_B)
Tango_AppendString(WINDOW_SLOT_2, ButtonB);
Tango_AppendString(WINDOW_SLOT_2, Sync);
Tango_ActivateSlot(WINDOW_SLOT_2);
while(!Tango_MenuIsActive()){
Waitframe();
}
// Save the state again...
int slotState[278];
int slotState2[278];
int menuState[960];
int cursorPos;
Tango_SaveSlotState(WINDOW_SLOT_1, slotState);
Tango_SaveSlotState(WINDOW_SLOT_2,slotState2);
Tango_SaveMenuState(menuState);
int done = 0;
int choice;
while(true){
while( Tango_MenuIsActive() ) {
cursorPos=Tango_GetMenuCursorPosition();
Waitframe();
}
choice = Tango_GetLastMenuChoice();
if ( choice == 1){
while(!LinkButtonPress()){
Waitframe();
}
Game->PlaySound(SFX_ACCEPTED);
if(LinkButtonPress()==BUTTON_B)
SamusVars[JUMP_BUTTON]=BUTTON_B;
else if(LinkButtonPress()==BUTTON_EX1)
SamusVars[JUMP_BUTTON]=BUTTON_EX1;
else if(LinkButtonPress()==BUTTON_EX2)
SamusVars[JUMP_BUTTON]=BUTTON_EX2;
else if(LinkButtonPress()==BUTTON_EX3)
SamusVars[JUMP_BUTTON]=BUTTON_EX3;
else if(LinkButtonPress()==BUTTON_EX4)
SamusVars[JUMP_BUTTON]=BUTTON_EX4;
else if(LinkButtonPress()==BUTTON_L)
SamusVars[JUMP_BUTTON]=BUTTON_L;
else if(LinkButtonPress()==BUTTON_R)
SamusVars[JUMP_BUTTON]=BUTTON_R;
if(SamusVars[JUMP_BUTTON]!=BUTTON_EX1)
DefaultButton(SamusVars[JUMP_BUTTON],BUTTON_EX1);
}
else if ( choice == 2){
while(!LinkButtonPress()){
Waitframe();
}
Game->PlaySound(SFX_ACCEPTED);
if(LinkButtonPress()==BUTTON_B)
SamusVars[DASH_BUTTON]=BUTTON_B;
else if(LinkButtonPress()==BUTTON_EX1)
SamusVars[DASH_BUTTON]=BUTTON_EX1;
else if(LinkButtonPress()==BUTTON_EX2)
SamusVars[DASH_BUTTON]=BUTTON_EX2;
else if(LinkButtonPress()==BUTTON_EX3)
SamusVars[DASH_BUTTON]=BUTTON_EX3;
else if(LinkButtonPress()==BUTTON_EX4)
SamusVars[DASH_BUTTON]=BUTTON_EX4;
else if(LinkButtonPress()==BUTTON_L)
SamusVars[DASH_BUTTON]=BUTTON_L;
else if(LinkButtonPress()==BUTTON_R)
SamusVars[DASH_BUTTON]=BUTTON_R;
if(SamusVars[DASH_BUTTON]!=BUTTON_EX2)
DefaultButton(SamusVars[DASH_BUTTON],BUTTON_EX2);
}
else if ( choice == 3){
while(!LinkButtonPress()){
Waitframe();
}
Game->PlaySound(SFX_ACCEPTED);
if(LinkButtonPress()==BUTTON_B)
SamusVars[SWITCH_BUTTON]=BUTTON_B;
else if(LinkButtonPress()==BUTTON_EX1)
SamusVars[SWITCH_BUTTON]=BUTTON_EX1;
else if(LinkButtonPress()==BUTTON_EX2)
SamusVars[SWITCH_BUTTON]=BUTTON_EX2;
else if(LinkButtonPress()==BUTTON_EX3)
SamusVars[SWITCH_BUTTON]=BUTTON_EX3;
else if(LinkButtonPress()==BUTTON_EX4)
SamusVars[SWITCH_BUTTON]=BUTTON_EX4;
else if(LinkButtonPress()==BUTTON_L)
SamusVars[SWITCH_BUTTON]=BUTTON_L;
else if(LinkButtonPress()==BUTTON_R)
SamusVars[SWITCH_BUTTON]=BUTTON_R;
if(SamusVars[SWITCH_BUTTON]!=BUTTON_B)
DefaultButton(SamusVars[SWITCH_BUTTON],BUTTON_B);
}
else if ( choice == 4){
while(!LinkButtonPress()){
Waitframe();
}
Game->PlaySound(SFX_ACCEPTED);
if(LinkButtonPress()==BUTTON_B)
SamusVars[DIAGONAL_UP_BUTTON]=BUTTON_B;
else if(LinkButtonPress()==BUTTON_EX1)
SamusVars[DIAGONAL_UP_BUTTON]=BUTTON_EX1;
else if(LinkButtonPress()==BUTTON_EX2)
SamusVars[DIAGONAL_UP_BUTTON]=BUTTON_EX2;
else if(LinkButtonPress()==BUTTON_EX3)
SamusVars[DIAGONAL_UP_BUTTON]=BUTTON_EX3;
else if(LinkButtonPress()==BUTTON_EX4)
SamusVars[DIAGONAL_UP_BUTTON]=BUTTON_EX4;
else if(LinkButtonPress()==BUTTON_L)
SamusVars[DIAGONAL_UP_BUTTON]=BUTTON_L;
else if(LinkButtonPress()==BUTTON_R)
SamusVars[DIAGONAL_UP_BUTTON]=BUTTON_R;
if(SamusVars[DIAGONAL_UP_BUTTON]!=BUTTON_L)
DefaultButton(SamusVars[DIAGONAL_UP_BUTTON],BUTTON_L);
}
else if ( choice == 5){
while(!LinkButtonPress()){
Waitframe();
}
Game->PlaySound(SFX_ACCEPTED);
if(LinkButtonPress()==BUTTON_B)
SamusVars[DIAGONAL_DN_BUTTON]=BUTTON_B;
else if(LinkButtonPress()==BUTTON_EX1)
SamusVars[DIAGONAL_DN_BUTTON]=BUTTON_EX1;
else if(LinkButtonPress()==BUTTON_EX2)
SamusVars[DIAGONAL_DN_BUTTON]=BUTTON_EX2;
else if(LinkButtonPress()==BUTTON_EX3)
SamusVars[DIAGONAL_DN_BUTTON]=BUTTON_EX3;
else if(LinkButtonPress()==BUTTON_EX4)
SamusVars[DIAGONAL_DN_BUTTON]=BUTTON_EX4;
else if(LinkButtonPress()==BUTTON_L)
SamusVars[DIAGONAL_DN_BUTTON]=BUTTON_L;
else if(LinkButtonPress()==BUTTON_R)
SamusVars[DIAGONAL_DN_BUTTON]=BUTTON_R;
if(SamusVars[DIAGONAL_DN_BUTTON]!=BUTTON_R)
DefaultButton(SamusVars[DIAGONAL_DN_BUTTON],BUTTON_R);
}
else
done = -9999;
if ( done )
break;
// return choice;
else {
Tango_RestoreSlotState(WINDOW_SLOT_1, slotState);
Tango_RestoreMenuState(menuState);
Tango_RestoreSlotState(WINDOW_SLOT_2, slotState2);
Tango_SetMenuCursorPosition(cursorPos);
}
}
Tango_ClearSlot(WINDOW_SLOT_1);
Tango_ClearSlot(WINDOW_SLOT_2);
//if ( DEBUG_MENUS ) DebugMetroidSaveStationMenu(done);
return done;
}
//Returns last button pressed. If you press A, returns zero.
int LinkButtonPress(){
if(Link->PressB||Link->InputB)
return BUTTON_B;
else if(Link->PressEx1||Link->InputEx1)
return BUTTON_EX1;
else if(Link->PressEx2||Link->InputEx2)
return BUTTON_EX3;
else if(Link->PressEx3||Link->InputEx3)
return BUTTON_EX3;
else if(Link->PressEx4||Link->InputEx4)
return BUTTON_EX4;
else if(Link->PressL||Link->InputL)
return BUTTON_L;
else if(Link->PressR||Link->InputR)
return BUTTON_R;
return 0;
}
const int SFX_ACCEPTED = 27;//Sound to make if input is accepted.
void DampInput(int Button){
if(Button==BUTTON_EX1){
Link->PressEx1 = false;
Link->InputEx1 = false;
}
else if(Button==BUTTON_EX2){
Link->PressEx2 = false;
Link->InputEx2 = false;
}
else if(Button==BUTTON_EX3){
Link->PressEx3 = false;
Link->InputEx3 = false;
}
else if(Button==BUTTON_EX4){
Link->PressEx4 = false;
Link->InputEx4 = false;
}
else if(Button==BUTTON_L){
Link->PressL = false;
Link->InputL = false;
}
else if(Button==BUTTON_R){
Link->PressR = false;
Link->InputR = false;
}
else if(Button==BUTTON_B){
Link->PressB = false;
Link->InputB = false;
}
}
void DefaultButton(int OldButton, int NewButton){
if(OldButton==BUTTON_EX1)
SamusVars[JUMP_BUTTON]=NewButton;
else if(OldButton==BUTTON_EX2)
SamusVars[DASH_BUTTON]=NewButton;
else if(OldButton==BUTTON_B)
SamusVars[SWITCH_BUTTON]= NewButton;
else if(OldButton==BUTTON_L)
SamusVars[DIAGONAL_UP_BUTTON]= NewButton;
else if(OldButton==BUTTON_R)
SamusVars[DIAGONAL_DN_BUTTON]= NewButton;
}