diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pokemon_1.c | 59 | ||||
-rw-r--r-- | src/start_menu.c | 277 | ||||
-rw-r--r-- | src/starter_choose.c | 36 |
3 files changed, 183 insertions, 189 deletions
diff --git a/src/pokemon_1.c b/src/pokemon_1.c index f7dc3aa01..8489f973d 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -4,8 +4,15 @@ #include "pokemon.h" #include "species.h" #include "main.h" +#include "rng.h" #include "sprite.h" +//Extracts the upper 16 bits of a 32-bit number +#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) + +//Extracts the lower 16 bits of a 32-bit number +#define LOHALF(n) ((n) & 0xFFFF) + extern u8 sav1_map_get_name(); extern struct Pokemon gPlayerParty[6]; // 0x3004360 @@ -81,33 +88,27 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, ZeroBoxMonData(boxMon); if (hasFixedPersonality) - { personality = fixedPersonality; - } else - { - u32 r = Random(); - personality = (u16)r | (Random() << 16); - } + personality = Random32(); SetBoxMonData(boxMon, MON_DATA_PERSONALITY, (u8 *)&personality); - if (otIdType == 2) + //Determine original trainer ID + if (otIdType == 2) //Pokemon cannot be shiny { u32 shinyValue; do { - u32 r = Random(); - value = (u16)r | (Random() << 16); - asm(""); // needed to match for some reason - shinyValue = ((value & 0xFFFF0000) >> 16) ^ (value & 0x0000FFFF) ^ ((personality & 0xFFFF0000) >> 16) ^ (personality & 0x0000FFFF); + value = Random32(); + shinyValue = HIHALF(value) ^ LOHALF(value) ^ HIHALF(personality) ^ LOHALF(personality); } while (shinyValue < 8); } - else if (otIdType == 1) + else if (otIdType == 1) //Pokemon has a preset OT ID { value = fixedOtId; } - else + else //Player is the OT { value = gSaveBlock2.playerTrainerId[0] | (gSaveBlock2.playerTrainerId[1] << 8) @@ -181,8 +182,7 @@ void CreateMonWithNature(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, do { - u32 r = Random(); - personality = (u16)r | (Random() << 16); + personality = Random32(); } while (nature != GetNatureFromPersonality(personality)); @@ -199,8 +199,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, do { - u32 r = Random(); - personality = (u16)r | (Random() << 16); + personality = Random32(); actualLetter = ((((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | personality & 0x3) % 28); } while (nature != GetNatureFromPersonality(personality) @@ -211,8 +210,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, { do { - u32 r = Random(); - personality = (u16)r | (Random() << 16); + personality = Random32(); } while (nature != GetNatureFromPersonality(personality) || gender != GetGenderFromSpeciesAndPersonality(species, personality)); @@ -229,11 +227,8 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level) do { - u32 r1, r2; - r1 = Random(); - otId = (u16)r1 | (Random() << 16); - r2 = Random(); - personality = (u16)r2 | (Random() << 16); + otId = Random32(); + personality = Random32(); } while (GetGenderFromSpeciesAndPersonality(species, personality) != MON_MALE); CreateMon(mon, species, level, 32, 1, personality, 1, otId); @@ -260,7 +255,7 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread) { - register s32 i asm("r5"); + s32 i; register u32 temp asm("r4"); s32 statCount = 0; u16 evAmount; @@ -268,29 +263,23 @@ void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedI u8 mask2; CreateMon(mon, species, level, fixedIV, 0, 0, 0, 0); - temp = evSpread; mask1 = 1; - i = 5; - do + for (i = 5; i >= 0; i--) { if (temp & mask1) statCount++; temp >>= 1; - i--; - } while (i >= 0); - + } evAmount = 510 / statCount; mask2 = 1; - i = 0; - do + for (i = 0; i < 6; i++) { if (evSpread & mask2) SetMonData(mon, MON_DATA_HP_EV + i, (u8 *)&evAmount); mask2 <<= 1; - i++; - } while (i < 6); + } CalculateMonStats(mon); } diff --git a/src/start_menu.c b/src/start_menu.c index 4c2bd19ba..a08930a19 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -64,8 +64,8 @@ struct MenuItem { }; static u8 (*saveDialogCallback)(void); -static u8 gUnknown_030006AC; -static bool8 gUnknown_030006AD; +static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed +static bool8 savingComplete; extern bool8 gUnknown_020297EC; extern u16 gSaveFileStatus; @@ -115,11 +115,11 @@ static void BuildStartMenuActions_Normal(void); static void BuildStartMenuActions_SafariZone(void); static void BuildStartMenuActions_Link(void); static void DisplaySafariBallsWindow(void); -static bool32 sub_8071114(s16 *a, u32 b); -static bool32 sub_807117C(s16 *a, s16 *b); +static bool32 PrintStartMenuItemsMultistep(s16 *a, u32 b); +static bool32 InitStartMenuMultistep(s16 *a, s16 *b); static void sub_8071230(void); static void Task_StartMenu(u8 taskId); -static u8 Callback_8071338(void); +static u8 StartMenu_InputProcessCallback(void); static u8 SaveCallback1(void); static u8 SaveCallback2(void); static void sub_807160C(void); @@ -127,23 +127,23 @@ static u8 RunSaveDialogCallback(void); static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void)); static void Task_SaveDialog(u8 taskId); static void sub_8071700(void); -static void EraseSaveDialog(void); -static void sub_8071724(void); -static u8 sub_8071730(void); -static u8 sub_8071764(void); -static u8 sub_8071764(void); -static u8 SaveDialogCB_8071794(void); -static u8 SaveDialogCB_80717B8(void); -static u8 SaveDialogCB_80717D8(void); +static void HideSaveDialog(void); +static void SaveDialogStartTimeout(void); +static u8 SaveDialogCheckForTimeoutOrKeypress(void); +static u8 SaveDialogCheckForTimeoutAndKeypress(void); +static u8 SaveDialogCheckForTimeoutAndKeypress(void); +static u8 SaveDialogCB_DisplayConfirmMessage(void); +static u8 SaveDialogCB_DisplayConfirmYesNoMenu(void); +static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void); static u8 SaveDialogCB_SaveFileExists(void); static u8 SaveDialogCB_DisplayOverwriteYesNoMenu(void); static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void); -static u8 SaveDialogCB_SavingMessage(void); +static u8 SaveDialogCB_DisplaySavingMessage(void); static u8 SaveDialogCB_DoSave(void); static u8 SaveDialogCB_SaveSuccess(void); -static u8 SaveDialogCB_8071988(void); -static u8 SaveDialogCB_80719AC(void); -static u8 SaveDialogCB_80719D4(void); +static u8 SaveDialogCB_ReturnSuccess(void); +static u8 SaveDialogCB_SaveError(void); +static u8 SaveDialogCB_ReturnError(void); static void sub_80719F0(void); static bool32 sub_80719FC(u8 *ptr); static void sub_8071B54(void); @@ -214,50 +214,50 @@ static void DisplaySafariBallsWindow(void) MenuPrint(gOtherText_SafariStock, 1, 1); } -static bool32 sub_8071114(s16 *a, u32 b) +//Prints n menu items starting at *index +static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n) { - s32 var = *a; + int _index = *index; do { - MenuPrint(gStartMenuItems[sCurrentStartMenuActions[var]].text, - 0x17, var * 2 + 2); - var++; - if(var >= sNumStartMenuActions) + MenuPrint(gStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2); + _index++; + if(_index >= sNumStartMenuActions) { - *a = var; - return 1; + *index = _index; + return TRUE; } } - while(--b != 0); - *a = var; - return 0; + while(--n != 0); + *index = _index; + return FALSE; } -static bool32 sub_807117C(s16 *a, s16 *b) +static bool32 InitStartMenuMultistep(s16 *step, s16 *index) { - switch(*a) + switch(*step) { case 1: BuildStartMenuActions(); - (*a)++; + (*step)++; break; case 2: MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3); - *b = 0; - (*a)++; + *index = 0; + (*step)++; break; case 3: if(GetSafariZoneFlag()) DisplaySafariBallsWindow(); - (*a)++; + (*step)++; break; case 4: - if(sub_8071114(b, 2)) - (*a)++; + if(PrintStartMenuItemsMultistep(index, 2)) + (*step)++; break; case 0: - (*a)++; + (*step)++; break; case 5: sStartMenuCursorPos = InitMenu(0, 0x17, 2, sNumStartMenuActions, sStartMenuCursorPos, 6); @@ -266,18 +266,18 @@ static bool32 sub_807117C(s16 *a, s16 *b) return FALSE; } -static void sub_8071230(void) +static void InitStartMenu(void) { - s16 a = 0; - s16 b = 0; + s16 step = 0; + s16 index = 0; - while(sub_807117C(&a, &b) == FALSE) + while(InitStartMenuMultistep(&step, &index) == FALSE) ; } static void Task_StartMenu(u8 taskId) { - if(sub_807117C(gTasks[taskId].data, gTasks[taskId].data + 1) == TRUE) + if(InitStartMenuMultistep(gTasks[taskId].data, gTasks[taskId].data + 1) == TRUE) { *gTasks[taskId].data = 0; SwitchTaskToFollowupFunc(taskId); @@ -307,7 +307,7 @@ void sub_80712B4(u8 taskId) switch(((struct MyTask *)&gTasks[taskId])->var1) { case 0: - gCallback_03004AE8 = Callback_8071338; + gCallback_03004AE8 = StartMenu_InputProcessCallback; ((struct MyTask *)&gTasks[taskId])->var1++; break; case 1: @@ -329,7 +329,7 @@ void sub_8071310(void) ScriptContext2_Enable(); } -static u8 Callback_8071338(void) +static u8 StartMenu_InputProcessCallback(void) { if(gMain.newKeys & DPAD_UP) { @@ -350,9 +350,9 @@ static u8 Callback_8071338(void) return 0; } gCallback_03004AE8 = gStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].callback; - if(StartMenu_SaveCallback != gCallback_03004AE8 && - StartMenu_ExitCallback != gCallback_03004AE8 && - StartMenu_RetireCallback != gCallback_03004AE8) + if(gCallback_03004AE8 != StartMenu_SaveCallback && + gCallback_03004AE8 != StartMenu_ExitCallback && + gCallback_03004AE8 != StartMenu_RetireCallback) fade_screen(1, 0); return 0; } @@ -473,6 +473,14 @@ u8 StartMenu_PlayerLinkCallback(void) return 0; } +//Save dialog status +enum { + SAVE_IN_PROGRESS, + SAVE_SUCCESS, + SAVE_CANCELED, + SAVE_ERROR, +}; + static u8 SaveCallback1(void) { sub_807160C(); @@ -484,15 +492,16 @@ static u8 SaveCallback2(void) { switch(RunSaveDialogCallback()) { - case 0: + case SAVE_IN_PROGRESS: return FALSE; - case 2: + case SAVE_CANCELED: + //Go back to start menu MenuZeroFillScreen(); - sub_8071230(); - gCallback_03004AE8 = Callback_8071338; + InitStartMenu(); + gCallback_03004AE8 = StartMenu_InputProcessCallback; return FALSE; - case 1: - case 3: + case SAVE_SUCCESS: + case SAVE_ERROR: MenuZeroFillScreen(); sub_8064E2C(); ScriptContext2_Disable(); @@ -504,18 +513,18 @@ static u8 SaveCallback2(void) static void sub_807160C(void) { save_serialize_map(); - saveDialogCallback = SaveDialogCB_8071794; - gUnknown_030006AD = FALSE; + saveDialogCallback = SaveDialogCB_DisplayConfirmMessage; + savingComplete = FALSE; } static u8 RunSaveDialogCallback(void) { - if(gUnknown_030006AD) + if(savingComplete) { if(!MenuUpdateWindowText()) return 0; } - gUnknown_030006AD = FALSE; + savingComplete = FALSE; return saveDialogCallback(); } @@ -530,24 +539,24 @@ static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void)) StringExpandPlaceholders(gStringVar4, ptr); MenuDisplayMessageBox(); sub_8072044(gStringVar4); - gUnknown_030006AD = TRUE; + savingComplete = TRUE; saveDialogCallback = func; } static void Task_SaveDialog(u8 taskId) { - u8 b = RunSaveDialogCallback(); + u8 status = RunSaveDialogCallback(); - switch(b) + switch(status) { - case 2: - case 3: + case SAVE_CANCELED: + case SAVE_ERROR: gScriptResult = 0; break; - case 1: - gScriptResult = b; + case SAVE_SUCCESS: + gScriptResult = status; break; - case 0: + case SAVE_IN_PROGRESS: return; } DestroyTask(taskId); @@ -559,66 +568,60 @@ static void sub_8071700(void) sub_80946C8(0, 0); } -static void EraseSaveDialog(void) +static void HideSaveDialog(void) { MenuZeroFillWindowRect(20, 8, 26, 13); } -static void sub_8071724(void) +static void SaveDialogStartTimeout(void) { - gUnknown_030006AC = 0x3C; + saveDialogTimer = 60; } - -static u8 sub_8071730(void) +static bool8 SaveDialogCheckForTimeoutOrKeypress(void) { - gUnknown_030006AC--; - if(!(gMain.heldKeys & 1)) + saveDialogTimer--; + if(gMain.heldKeys & A_BUTTON) { - if(gUnknown_030006AC) - return 0; - } - else PlaySE(SE_SELECT); - return 1; + return TRUE; + } + else if(saveDialogTimer == 0) + return TRUE; + return FALSE; } - -static u8 sub_8071764(void) +static bool8 SaveDialogCheckForTimeoutAndKeypress(void) { - if(gUnknown_030006AC == 0) - { - if(gMain.heldKeys & 1) - return 1; - } - else - gUnknown_030006AC--; - return 0; - + if(saveDialogTimer != 0) + saveDialogTimer--; + else if(gMain.heldKeys & A_BUTTON) + return TRUE; + return FALSE; } -static u8 SaveDialogCB_8071794(void) +static u8 SaveDialogCB_DisplayConfirmMessage(void) { MenuZeroFillScreen(); sub_80945C0(0, 0); //"Would you like to save the game?" - DisplaySaveMessageWithCallback(gSaveText_WouldYouLikeToSave, SaveDialogCB_80717B8); - return 0; + DisplaySaveMessageWithCallback(gSaveText_WouldYouLikeToSave, SaveDialogCB_DisplayConfirmYesNoMenu); + return SAVE_IN_PROGRESS; } -static u8 SaveDialogCB_80717B8(void) +static u8 SaveDialogCB_DisplayConfirmYesNoMenu(void) { DisplayYesNoMenu(20, 8, 1); - saveDialogCallback = SaveDialogCB_80717D8; - return 0; + saveDialogCallback = SaveDialogCB_ProcessConfirmYesNoMenu; + return SAVE_IN_PROGRESS; } -static u8 SaveDialogCB_80717D8(void) +static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void) { switch(ProcessMenuInputNoWrap_()) { case 0: //YES - EraseSaveDialog(); + HideSaveDialog(); switch(gSaveFileStatus) { case 0: @@ -626,22 +629,22 @@ static u8 SaveDialogCB_80717D8(void) if(gUnknown_020297EC == FALSE) { saveDialogCallback = SaveDialogCB_SaveFileExists; - return 0; + return SAVE_IN_PROGRESS; } - saveDialogCallback = SaveDialogCB_SavingMessage; - return 0; + saveDialogCallback = SaveDialogCB_DisplaySavingMessage; + return SAVE_IN_PROGRESS; default: saveDialogCallback = SaveDialogCB_SaveFileExists; - return 0; + return SAVE_IN_PROGRESS; } break; case -1: //B button case 1: //NO - EraseSaveDialog(); + HideSaveDialog(); sub_8071700(); - return 2; + return SAVE_CANCELED; } - return 0; + return SAVE_IN_PROGRESS; } static u8 SaveDialogCB_SaveFileExists(void) @@ -649,14 +652,14 @@ static u8 SaveDialogCB_SaveFileExists(void) DisplaySaveMessageWithCallback( gUnknown_020297EC == TRUE ? gSaveText_ThereIsADifferentFile : gSaveText_ThereIsAlreadyAFile, SaveDialogCB_DisplayOverwriteYesNoMenu); - return 0; + return SAVE_IN_PROGRESS; } static u8 SaveDialogCB_DisplayOverwriteYesNoMenu(void) { DisplayYesNoMenu(20, 8, 1); saveDialogCallback = SaveDialogCB_ProcessOverwriteYesNoMenu; - return 0; + return SAVE_IN_PROGRESS; } static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void) @@ -664,23 +667,23 @@ static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void) switch(ProcessMenuInputNoWrap_()) { case 0: //YES - EraseSaveDialog(); - saveDialogCallback = SaveDialogCB_SavingMessage; + HideSaveDialog(); + saveDialogCallback = SaveDialogCB_DisplaySavingMessage; break; case -1: //B button case 1: //NO - EraseSaveDialog(); + HideSaveDialog(); sub_8071700(); - return 2; + return SAVE_CANCELED; } - return 0; + return SAVE_IN_PROGRESS; } -static u8 SaveDialogCB_SavingMessage(void) +static u8 SaveDialogCB_DisplaySavingMessage(void) { //"SAVING... DON'T TURN OFF THE POWER." DisplaySaveMessageWithCallback(gSaveText_DontTurnOff, SaveDialogCB_DoSave); - return 0; + return SAVE_IN_PROGRESS; } static u8 SaveDialogCB_DoSave(void) @@ -706,11 +709,11 @@ static u8 SaveDialogCB_DoSave(void) else { //"Save error. Please exchange the backup memory." - DisplaySaveMessageWithCallback(gSystemText_SaveErrorExchangeBackup, SaveDialogCB_80719AC); + DisplaySaveMessageWithCallback(gSystemText_SaveErrorExchangeBackup, SaveDialogCB_SaveError); } - sub_8071724(); - return 0; + SaveDialogStartTimeout(); + return SAVE_IN_PROGRESS; } static u8 SaveDialogCB_SaveSuccess(void) @@ -718,40 +721,40 @@ static u8 SaveDialogCB_SaveSuccess(void) if(MenuUpdateWindowText()) { PlaySE(SE_SAVE); - saveDialogCallback = SaveDialogCB_8071988; + saveDialogCallback = SaveDialogCB_ReturnSuccess; } - return 0; + return SAVE_IN_PROGRESS; } -static u8 SaveDialogCB_8071988(void) +static u8 SaveDialogCB_ReturnSuccess(void) { - if(!IsSEPlaying() && sub_8071730()) + if(!IsSEPlaying() && SaveDialogCheckForTimeoutOrKeypress()) { sub_8071700(); - return 1; + return SAVE_SUCCESS; } else - return 0; + return SAVE_IN_PROGRESS; } -static u8 SaveDialogCB_80719AC(void) +static u8 SaveDialogCB_SaveError(void) { if(MenuUpdateWindowText()) { PlaySE(SE_BOO); - saveDialogCallback = SaveDialogCB_80719D4; + saveDialogCallback = SaveDialogCB_ReturnError; } - return 0; + return SAVE_IN_PROGRESS; } -static u8 SaveDialogCB_80719D4(void) +static u8 SaveDialogCB_ReturnError(void) { - if(!sub_8071764()) - return 0; + if(!SaveDialogCheckForTimeoutAndKeypress()) + return SAVE_IN_PROGRESS; else { sub_8071700(); - return 3; + return SAVE_ERROR; } } @@ -760,9 +763,9 @@ static void sub_80719F0(void) TransferPlttBuffer(); } -static bool32 sub_80719FC(u8 *ptr) +static bool32 sub_80719FC(u8 *step) { - switch(*ptr) + switch(*step) { case 0: { @@ -814,7 +817,7 @@ static bool32 sub_80719FC(u8 *ptr) case 4: return TRUE; } - (*ptr)++; + (*step)++; return FALSE; } @@ -835,32 +838,32 @@ static void sub_8071B54(void) static void Task_8071B64(u8 taskId) { - s16 *val = gTasks[taskId].data; + s16 *step = gTasks[taskId].data; if(!gPaletteFade.active) { - switch(*val) + switch(*step) { case 0: MenuDisplayMessageBox(); MenuPrint(gSystemText_Saving, 2, 15); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - (*val)++; + (*step)++; break; case 1: sub_8047A1C(); sub_8125E2C(); - (*val)++; + (*step)++; break; case 2: if(!sub_8125E6C()) break; sub_8047A34(); - (*val)++; + (*step)++; break; case 3: BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - (*val)++; + (*step)++; break; case 4: SetMainCallback2(gMain.field_8); diff --git a/src/starter_choose.c b/src/starter_choose.c index 0bb6c88b4..d17ba32ee 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -45,8 +45,6 @@ extern const struct SpritePalette gMonPaletteTable[]; extern u8 gUnknown_083F76E4[][2]; extern u8 gOtherText_BirchInTrouble[]; -extern struct WindowConfig gWindowConfig_81E6C3C; -extern struct WindowConfig gWindowConfig_81E6CE4; extern struct SpriteTemplate gSpriteTemplate_83F77E4; extern struct SpriteTemplate gSpriteTemplate_83F77CC; extern struct SpritePalette gUnknown_083F77B4[]; @@ -67,11 +65,15 @@ static void CreateStarterPokemonLabel(u8, u8); static u8 CreatePokemonFrontSprite(u16, u8, u8); void StarterPokemonSpriteAnimCallback(struct Sprite *); +//Position of the sprite of the selected starter Pokemon +#define STARTER_PKMN_POS_X 120 +#define STARTER_PKMN_POS_Y 64 + //Task data enum { TD_STARTERSELECTION, - TD_POKEMON_SPRITE, - TD_CIRCLE_SPRITE, + TD_PKMN_SPRITE_ID, + TD_CIRCLE_SPRITE_ID, }; //Retrieves one of the available starter Pokemon @@ -216,7 +218,7 @@ static void Task_StarterChoose2(u8 taskId) gStarterChoose_PokeballCoords[selection][0], gStarterChoose_PokeballCoords[selection][1], 1); - gTasks[taskId].data[TD_CIRCLE_SPRITE] = spriteId; + gTasks[taskId].data[TD_CIRCLE_SPRITE_ID] = spriteId; //Create Pokemon sprite spriteId = CreatePokemonFrontSprite( @@ -225,18 +227,18 @@ static void Task_StarterChoose2(u8 taskId) gStarterChoose_PokeballCoords[selection][1]); gSprites[spriteId].affineAnims = gUnknown_083F778C; gSprites[spriteId].callback = StarterPokemonSpriteAnimCallback; - gTasks[taskId].data[TD_POKEMON_SPRITE] = spriteId; + gTasks[taskId].data[TD_PKMN_SPRITE_ID] = spriteId; gTasks[taskId].func = Task_StarterChoose3; } else { - if((gMain.newKeys & DPAD_LEFT) && selection != 0) + if((gMain.newKeys & DPAD_LEFT) && selection > 0) { gTasks[taskId].data[TD_STARTERSELECTION]--; CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]); } - else if((gMain.newKeys & DPAD_RIGHT) && selection <= 1) + else if((gMain.newKeys & DPAD_RIGHT) && selection < 2) { gTasks[taskId].data[TD_STARTERSELECTION]++; CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]); @@ -246,9 +248,9 @@ static void Task_StarterChoose2(u8 taskId) static void Task_StarterChoose3(u8 taskId) { - if(gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE]].affineAnimEnded && - gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE]].pos1.x == 120 && - gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE]].pos1.y == 64) + if(gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].affineAnimEnded && + gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.x == STARTER_PKMN_POS_X && + gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.y == STARTER_PKMN_POS_Y) { gTasks[taskId].func = Task_StarterChoose4; } @@ -280,12 +282,12 @@ static void Task_StarterChoose5(u8 taskId) PlaySE(SE_SELECT); MenuZeroFillWindowRect(21, 7, 27, 12); - spriteId = gTasks[taskId].data[TD_POKEMON_SPRITE]; + spriteId = gTasks[taskId].data[TD_PKMN_SPRITE_ID]; FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); FreeOamMatrix(gSprites[spriteId].oam.matrixNum); DestroySprite(&gSprites[spriteId]); - spriteId = gTasks[taskId].data[TD_CIRCLE_SPRITE]; + spriteId = gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]; FreeOamMatrix(gSprites[spriteId].oam.matrixNum); DestroySprite(&gSprites[spriteId]); gTasks[taskId].func = Task_StarterChoose6; @@ -423,12 +425,12 @@ void sub_810A68C(struct Sprite *sprite) void StarterPokemonSpriteAnimCallback(struct Sprite *sprite) { //Move sprite to upper center of screen - if(sprite->pos1.x > 120) + if(sprite->pos1.x > STARTER_PKMN_POS_X) sprite->pos1.x -= 4; - if(sprite->pos1.x <= 119) + if(sprite->pos1.x < STARTER_PKMN_POS_X) sprite->pos1.x += 4; - if(sprite->pos1.y > 64) + if(sprite->pos1.y > STARTER_PKMN_POS_Y) sprite->pos1.y -= 2; - if(sprite->pos1.y <= 63) + if(sprite->pos1.y < STARTER_PKMN_POS_Y) sprite->pos1.y += 2; } |