From ad73f920612f747a963d9aed8867aa930ebc8173 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 22 Jan 2018 21:32:50 +0100 Subject: start decompiling pokemon animation --- include/pokemon_animation.h | 4 ++-- include/sprite.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/pokemon_animation.h b/include/pokemon_animation.h index 42fc10809..b6d8c868e 100644 --- a/include/pokemon_animation.h +++ b/include/pokemon_animation.h @@ -1,7 +1,7 @@ #ifndef GUARD_POKEMON_ANIMATION_H #define GUARD_POKEMON_ANIMATION_H -void LaunchAnimationTaskForFrontSprite(struct Sprite* sprite, u8 frontAnimId); -void LaunchAnimationTaskForBackSprite(struct Sprite* sprite, u8 backAnimId); +void LaunchAnimationTaskForFrontSprite(struct Sprite *sprite, u8 frontAnimId); +void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimId); #endif // GUARD_POKEMON_ANIMATION_H diff --git a/include/sprite.h b/include/sprite.h index d5c6bc402..b5a1b6ae5 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -233,6 +233,7 @@ extern s16 gSpriteCoordOffsetX; extern s16 gSpriteCoordOffsetY; extern struct Sprite gSprites[]; +extern struct OamMatrix gOamMatrices[]; void ResetSpriteData(void); void AnimateSprites(void); -- cgit v1.2.3 From 5a57485ece9686eadaf2a96365aa285587ab51af Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 23 Jan 2018 21:30:13 -0600 Subject: Decompile naming_screen.c --- include/field_effect.h | 1 + include/field_player_avatar.h | 1 + include/field_specials.h | 2 + include/gba/macro.h | 21 ++++++++++ include/main.h | 2 + include/naming_screen.h | 91 ++++++++++++++++++++++++++++++++++++++++--- include/new_menu_helpers.h | 2 + include/pokemon_icon.h | 2 + include/strings.h | 3 ++ include/text.h | 7 ++++ 10 files changed, 126 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/field_effect.h b/include/field_effect.h index 1fdcbe22c..7395270f9 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -78,5 +78,6 @@ void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); void sub_80B7FC8(void); void FieldEffectActiveListRemove(u8 id); +void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index cc4c65448..af602245b 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -34,5 +34,6 @@ void sub_808BCE8(void); void sub_808D074(u8); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); +u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_specials.h b/include/field_specials.h index 1f8fbf147..dd72bdd13 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -2,5 +2,7 @@ #define GUARD_FIELD_SPECIALS_H u8 GetLeadMonIndex(void); +u8 sub_813B260(void); +u16 get_unknown_box_id(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/gba/macro.h b/include/gba/macro.h index ad4820bcf..3b35a1946 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -122,6 +122,27 @@ #define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32) +#define DmaClearLarge(dmaNum, dest, size, block, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, (block)); \ + _dest += (block); \ + _size -= (block); \ + if (_size <= (block)) \ + { \ + DmaFill##bit(dmaNum, 0, _dest, _size); \ + break; \ + } \ + } \ +} + +#define DmaClearLarge16(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 16) + +#define DmaClearLarge32(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 32) + #define DmaCopyDefvars(dmaNum, src, dest, size, bit) \ { \ const void *_src = src; \ diff --git a/include/main.h b/include/main.h index e283d1754..40a2580a2 100644 --- a/include/main.h +++ b/include/main.h @@ -60,5 +60,7 @@ void SetSerialCallback(IntrCallback callback); void InitFlashTimer(void); void DoSoftReset(void); void ClearPokemonCrySongs(void); +void StartTimer1(void); +void SeedRngAndSetTrainerId(void); #endif // GUARD_MAIN_H diff --git a/include/naming_screen.h b/include/naming_screen.h index 3d69b834f..28132466c 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -1,12 +1,91 @@ #ifndef GUARD_NAMING_SCREEN_H #define GUARD_NAMING_SCREEN_H -#define NAMING_SCREEN_PLAYER 0 -#define NAMING_SCREEN_BOX 1 -#define NAMING_SCREEN_CAUGHT_MON 2 -#define NAMING_SCREEN_3 3 -#define NAMING_SCREEN_WALDA 4 +#include "main.h" -void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void)); +#define KBEVENT_NONE 0 +#define KBEVENT_PRESSED_A 5 +#define KBEVENT_PRESSED_B 6 +#define KBEVENT_PRESSED_SELECT 8 +#define KBEVENT_PRESSED_START 9 + +enum +{ + NAMING_SCREEN_PLAYER, + NAMING_SCREEN_BOX, + NAMING_SCREEN_CAUGHT_MON, + NAMING_SCREEN_3, + NAMING_SCREEN_WALDA, +}; + +struct NamingScreenTemplate +{ + u8 unk0; + u8 maxChars; + u8 unk2; + u8 unk3; + u8 unk4; //mode? + u8 unk5; + u8 unk6; + u8 unk7; + const u8 *title; +}; + +struct NamingScreenData { + /*0x0*/ u8 tilemapBuffer1[0x800]; + /*0x800*/ u8 tilemapBuffer2[0x800]; + /*0x800*/ u8 tilemapBuffer3[0x800]; + /*0x1800*/ u8 textBuffer[0x10]; + /*0x1810*/ u8 tileBuffer[0x600]; + /*0x1E10*/ u8 state; + /*0x1E11*/ u8 windows[5]; + /*0x1E16*/ u16 unk1E16; + /*0x1E18*/ u16 bg1vOffset; + /*0x1E1A*/ u16 bg2vOffset; + /*0x1E1C*/ u16 unk1E1C; + /*0x1E1E*/ u16 unk1E1E; + /*0x1E20*/ u8 unk1E20; + /*0x1E21*/ u8 unk1E21; + /*0x1E22*/ u8 currentPage; + /*0x1E23*/ u8 cursorSpriteId; + /*0x1E24*/ u8 unk1E24; + /*0x1E25*/ u8 unk1E25; + /*0x1E28*/ const struct NamingScreenTemplate *template; + /*0x1E2C*/ u8 templateNum; + /*0x1E30*/ u8 *destBuffer; + /*0x1E34*/ u16 unk1E34; + /*0x1E36*/ u16 unk1E36; + /*0x1E38*/ u32 unk1E38; + /*0x1E3C*/ MainCallback returnCallback; +}; + +enum +{ + PAGE_UPPER, + PAGE_LOWER, + PAGE_OTHERS, +}; + +enum +{ + MAIN_STATE_BEGIN_FADE_IN, + MAIN_STATE_WAIT_FADE_IN, + MAIN_STATE_HANDLE_INPUT, + MAIN_STATE_MOVE_TO_OK_BUTTON, + MAIN_STATE_START_PAGE_SWAP, + MAIN_STATE_WAIT_PAGE_SWAP, + MAIN_STATE_6, + MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE, + MAIN_STATE_BEGIN_FADE_OUT, +}; + +enum +{ + INPUT_STATE_DISABLED, + INPUT_STATE_ENABLED, + INPUT_STATE_2, +}; + +void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 monSpecies, u16 monGender, u32 monPersonality, MainCallback returnCallback); #endif // GUARD_NAMING_SCREEN_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index dad819c51..5a4abeb85 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -4,6 +4,8 @@ #include "text.h" #include "task.h" +void sub_81971D0(void); +void sub_8197200(void); void sub_81973A4(void); void sub_81973C4(u8, u8); void sub_819746C(u8 windowId, bool8 copyToVram); diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index e0a9aa0c5..e7fc81ce4 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -5,9 +5,11 @@ const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); const u16 *GetValidMonIconPalettePtr(u16 speciesId); u16 GetUnownLetterByPersonality(u32 personality); u16 sub_80D2E84(u16 speciesId); +void sub_80D2F04(void); void sub_80D2F68(u16 iconId); u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); void sub_80D2FF0(u16 iconId); void sub_80D2EF8(struct Sprite *sprite); +u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, int a7); #endif // GUARD_POKEMON_ICON_H diff --git a/include/strings.h b/include/strings.h index 8af8e629e..806a2e405 100644 --- a/include/strings.h +++ b/include/strings.h @@ -199,4 +199,7 @@ extern const u8 gText_Frame[]; extern const u8 gText_OptionMenuCancel[]; extern const u8 gText_ButtonMode[]; +extern const u8 gText_MaleSymbol[]; +extern const u8 gText_FemaleSymbol[]; + #endif //GUARD_STRINGS_H diff --git a/include/text.h b/include/text.h index 289c7d2b5..b5fc5b58a 100644 --- a/include/text.h +++ b/include/text.h @@ -185,6 +185,13 @@ struct __attribute__((packed)) TextColor u8 shadowColor; }; +struct AlignedTextColor // because sometimes it's necessary +{ + u8 fgColor; + u8 bgColor; + u8 shadowColor; +}; + extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; -- cgit v1.2.3 From 5784098446d4f380434a939e4c72577c8136bb81 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 23 Jan 2018 23:14:22 -0600 Subject: Organization and naming --- include/naming_screen.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'include') diff --git a/include/naming_screen.h b/include/naming_screen.h index 28132466c..5c8df2e23 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -22,7 +22,7 @@ struct NamingScreenTemplate { u8 unk0; u8 maxChars; - u8 unk2; + u8 iconFunction; u8 unk3; u8 unk4; //mode? u8 unk5; @@ -39,23 +39,23 @@ struct NamingScreenData { /*0x1810*/ u8 tileBuffer[0x600]; /*0x1E10*/ u8 state; /*0x1E11*/ u8 windows[5]; - /*0x1E16*/ u16 unk1E16; + /*0x1E16*/ u16 inputCharBaseXPos; /*0x1E18*/ u16 bg1vOffset; /*0x1E1A*/ u16 bg2vOffset; - /*0x1E1C*/ u16 unk1E1C; - /*0x1E1E*/ u16 unk1E1E; - /*0x1E20*/ u8 unk1E20; - /*0x1E21*/ u8 unk1E21; + /*0x1E1C*/ u16 bg1Priority; + /*0x1E1E*/ u16 bg2Priority; + /*0x1E20*/ u8 bgToReveal; + /*0x1E21*/ u8 bgToHide; /*0x1E22*/ u8 currentPage; /*0x1E23*/ u8 cursorSpriteId; - /*0x1E24*/ u8 unk1E24; - /*0x1E25*/ u8 unk1E25; + /*0x1E24*/ u8 selectBtnFrameSpriteId; + /*0x1E25*/ u8 keyRepeatStartDelayCopy; /*0x1E28*/ const struct NamingScreenTemplate *template; /*0x1E2C*/ u8 templateNum; /*0x1E30*/ u8 *destBuffer; - /*0x1E34*/ u16 unk1E34; - /*0x1E36*/ u16 unk1E36; - /*0x1E38*/ u32 unk1E38; + /*0x1E34*/ u16 monSpecies; + /*0x1E36*/ u16 monGender; + /*0x1E38*/ u32 monPersonality; /*0x1E3C*/ MainCallback returnCallback; }; -- cgit v1.2.3 From b8b0431477b841162b48b30afb46bb31c11960a0 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 23 Jan 2018 23:32:16 -0600 Subject: Identification --- include/naming_screen.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/naming_screen.h b/include/naming_screen.h index 5c8df2e23..b04cb19b6 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -20,14 +20,12 @@ enum struct NamingScreenTemplate { - u8 unk0; + u8 copyExistingString; u8 maxChars; u8 iconFunction; - u8 unk3; - u8 unk4; //mode? - u8 unk5; - u8 unk6; - u8 unk7; + u8 addGenderIcon; + u8 initialPage; + u8 unused; const u8 *title; }; -- cgit v1.2.3 From 10037ac0e1c1737dc7cb309257369b17ccd5e028 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 24 Jan 2018 01:03:20 -0600 Subject: Fix spelling of 'Parametrized' to 'Parameterized' --- include/menu.h | 2 +- include/new_menu_helpers.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/menu.h b/include/menu.h index 124303570..e5f705cae 100644 --- a/include/menu.h +++ b/include/menu.h @@ -35,7 +35,7 @@ void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirs s8 ProcessMenuInputNoWrap_(void); void do_scheduled_bg_tilemap_copies_to_vram(void); void clear_scheduled_bg_copies_to_vram(void); -void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); +void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3); void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds); void sub_8197DF8(u8 windowId, bool8 copyToVram); diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 5a4abeb85..4b1e372c2 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -10,7 +10,7 @@ void sub_81973A4(void); void sub_81973C4(u8, u8); void sub_819746C(u8 windowId, bool8 copyToVram); void sub_81973FC(u8, u8); -u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); +u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); void sub_8197434(u8 a0, u8 a1); void SetStandardWindowBorderStyle(u8 a0, u8 a1); -- cgit v1.2.3 From 95827ab64bc2fe148a3c52b0c341002deec72b0e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 27 Jan 2018 11:57:46 +0100 Subject: more pokemon anim functions decompiled --- include/blend_palette.h | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/blend_palette.h b/include/blend_palette.h index 1db3f4eb0..a00847bc3 100644 --- a/include/blend_palette.h +++ b/include/blend_palette.h @@ -1,12 +1,6 @@ #ifndef GUARD_BLEND_PALETTE_H #define GUARD_BLEND_PALETTE_H -// Exported type declarations +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); -// Exported RAM declarations - -// Exported ROM declarations - -void BlendPalette(u16, u16, u8, u16); - -#endif //GUARD_BLEND_PALETTE_H +#endif // GUARD_BLEND_PALETTE_H -- cgit v1.2.3 From 3eaaa59c047f529c81bcfe2cd0f5d0c8fdcc6bff Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 29 Jan 2018 04:13:15 -0500 Subject: start decompiling field_map_obj_helpers --- include/map_obj_8097404.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/map_obj_8097404.h b/include/map_obj_8097404.h index 0800b15b0..33694fe98 100644 --- a/include/map_obj_8097404.h +++ b/include/map_obj_8097404.h @@ -29,6 +29,6 @@ bool8 sub_8097758(struct Sprite *); void sub_8097FA4(struct MapObject *); void sub_8098044(u8); void UnfreezeMapObjects(void); -void sub_80974D0(u8 mapObjectId); +void FreezeMapObjectsExceptOne(u8 mapObjectId); #endif //GUARD_MAP_OBJ_8097404_H -- cgit v1.2.3 From ed546d680f726e068183f94d0104a251f75fbfe2 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Jan 2018 12:36:56 +0100 Subject: pokemon animation is decompiled --- include/pokemon_animation.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/pokemon_animation.h b/include/pokemon_animation.h index b6d8c868e..c1ab8d817 100644 --- a/include/pokemon_animation.h +++ b/include/pokemon_animation.h @@ -1,7 +1,10 @@ #ifndef GUARD_POKEMON_ANIMATION_H #define GUARD_POKEMON_ANIMATION_H +u8 GetSpeciesBackAnimSet(u16 species); void LaunchAnimationTaskForFrontSprite(struct Sprite *sprite, u8 frontAnimId); -void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimId); +void StartMonSummaryAnimation(struct Sprite *sprite, u8 frontAnimId); +void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet); +void SetSpriteCB_MonAnimDummy(struct Sprite *sprite); #endif // GUARD_POKEMON_ANIMATION_H -- cgit v1.2.3 From 78728ae454b6c184b69f4a8c145f32904d406f19 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Jan 2018 14:36:13 +0100 Subject: add rgb constants --- include/constants/rgb.h | 15 +++++++++++++++ include/gba/defines.h | 5 ----- 2 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 include/constants/rgb.h (limited to 'include') diff --git a/include/constants/rgb.h b/include/constants/rgb.h new file mode 100644 index 000000000..2c22df32a --- /dev/null +++ b/include/constants/rgb.h @@ -0,0 +1,15 @@ +#ifndef GUARD_RGB_H +#define GUARD_RGB_H + +#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) + +#define RGB_BLACK RGB(0, 0, 0) +#define RGB_WHITE RGB(31, 31, 31) +#define RGB_RED RGB(31, 0, 0) +#define RGB_GREEN RGB(0, 31, 0) +#define RGB_BLUE RGB(0, 0, 31) +#define RGB_YELLOW RGB(31, 31, 0) +#define RGB_MAGENTA RGB(31, 0, 31) +#define RGB_CYAN RGB(0, 31, 31) + +#endif // GUARD_RGB_H diff --git a/include/gba/defines.h b/include/gba/defines.h index 41cc84f4a..5c07347ce 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -60,11 +60,6 @@ #define TOTAL_OBJ_TILE_COUNT 1024 -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) - -#define RGB_BLACK RGB(0, 0, 0) -#define RGB_WHITE RGB(31, 31, 31) - #define WIN_RANGE(a, b) (((a) << 8) | (b)) #endif // GUARD_GBA_DEFINES -- cgit v1.2.3 From d728124a7b51d5db257d58ae9b47a5285c696748 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Jan 2018 15:55:34 +0100 Subject: decompile time events --- include/field_weather.h | 169 +++++++++++++++++++++++++++++++++++++++++++++++- include/overworld.h | 2 + include/time_events.h | 8 +++ 3 files changed, 176 insertions(+), 3 deletions(-) create mode 100644 include/time_events.h (limited to 'include') diff --git a/include/field_weather.h b/include/field_weather.h index e12107e70..0bdebf747 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -1,12 +1,175 @@ #ifndef GUARD_WEATHER_H #define GUARD_WEATHER_H -void fade_screen(u8, s8); +#include "sprite.h" +// Controls how the weather should be changing the screen palettes. +enum { + WEATHER_PAL_STATE_CHANGING_WEATHER, + WEATHER_PAL_STATE_SCREEN_FADING_IN, + WEATHER_PAL_STATE_SCREEN_FADING_OUT, + WEATHER_PAL_STATE_IDLE, +}; + +struct Weather +{ + union + { + struct + { + struct Sprite *rainSprites[24]; + struct Sprite *snowflakeSprites[101]; + struct Sprite *cloudSprites[3]; + } s1; + struct + { + u8 filler0[0xA0]; + struct Sprite *fog1Sprites[20]; + struct Sprite *ashSprites[20]; + struct Sprite *fog2Sprites[20]; + struct Sprite *sandstormSprites1[20]; + struct Sprite *sandstormSprites2[5]; + } s2; + } sprites; + u8 gammaShifts[19][32]; + u8 altGammaShifts[19][32]; + s8 gammaIndex; + s8 gammaTargetIndex; + u8 gammaStepDelay; + u8 gammaStepFrameCounter; + u16 fadeDestColor; + u8 palProcessingState; + u8 fadeScreenCounter; + bool8 readyForInit; + u8 taskId; + u8 unknown_6CA; + u8 unknown_6CB; + u16 initStep; + u16 finishStep; + u8 currWeather; + u8 nextWeather; + u8 weatherGfxLoaded; + bool8 weatherChangeComplete; + u8 weatherPicSpritePalIndex; + u8 altGammaSpritePalIndex; + u16 unknown_6D6; + u8 unknown_6D8; + u8 unknown_6D9; + u8 rainSpriteCount; + u8 unknown_6DB; + u8 unknown_6DC; + u8 rainStrength; + /*0x6DE*/ u8 cloudSpritesCreated; + u8 filler_6DF[1]; + u16 unknown_6E0; + u16 unknown_6E2; + u8 snowflakeSpriteCount; + u8 unknown_6E5; + u16 unknown_6E6; + u16 thunderCounter; + u8 unknown_6EA; + u8 unknown_6EB; + u8 unknown_6EC; + u8 unknown_6ED; + u16 fog1ScrollPosX; + u16 unknown_6F0; + u16 unknown_6F2; + u8 lightenedFogSpritePals[6]; + u8 lightenedFogSpritePalsCount; + u8 fog1SpritesCreated; + u16 unknown_6FC; + u16 unknown_6FE; + u8 ashSpritesCreated; + u8 filler_701[3]; + u32 unknown_704; + u32 unknown_708; + u8 filler_70C[2]; + u16 unknown_70E; + u16 unknown_710; + u16 unknown_712; + u16 unknown_714; + u8 sandstormSprites1Created; + u8 sandstormSprites2Created; + u16 unknown_718; + u16 unknown_71A; + u16 unknown_71C; + u16 unknown_71E; + u16 unknown_720; + u16 unknown_722; + u8 fog2SpritesCreated; + u8 filler_725[1]; + u16 unknown_726; + u16 unknown_728; + u16 unknown_72A; + u16 unknown_72C; + u8 unknown_72E; + u8 filler_72F; + u16 currBlendEVA; + u16 currBlendEVB; + u16 targetBlendEVA; + u16 targetBlendEVB; + u8 blendUpdateCounter; + u8 blendFrameCounter; + u8 blendDelay; + u8 filler_73B[0x3C-0x3B]; + s16 unknown_73C; + s16 unknown_73E; + s16 unknown_740; + s16 unknown_742; + u8 filler_744[0xD-4]; + s8 loadDroughtPalsIndex; + u8 loadDroughtPalsOffset; +}; + +void StartWeather(void); +void ChangeWeather(u8 weather); +void sub_807C988(u8 effect); +void sub_807C9B4(u8 effect); +void Task_WeatherInit(u8); +void Task_WeatherMain(u8); +void sub_807CAE8(void); +void nullsub_38(void); +void SetWeatherScreenFadeOut(void); + +enum +{ + FADE_FROM_BLACK, + FADE_TO_BLACK, + FADE_FROM_WHITE, + FADE_TO_WHITE, +}; + +void FadeScreen(u8, u8); +// ... +void UpdateSpritePaletteWithWeather(u8 tag); +void ApplyWeatherGammaShiftToPal(u8); +// ... +void Weather_SetBlendCoeffs(u8, u8); +// ... +void PlayRainSoundEffect(void); +// ... void SetSav1Weather(u32); u8 GetSav1Weather(void); -void sub_80AEDBC(void); - +void SetSav1WeatherFromCurrMapHeader(void); +// ... void DoCurrentWeather(void); +void sub_8080750(); + +bool8 IsWeatherNotFadingIn(void); +bool8 IsWeatherChangeComplete(void); +void SetWeather(u32); +void UpdateWeatherPerDay(u16); +void PreservePaletteInWeather(u8 index); +void ResetPreservedPalettesInWeather(void); +extern void ResetDroughtWeatherPaletteLoading(void); +void ResetDroughtWeatherPaletteLoading(void); +bool8 LoadDroughtWeatherPalettes(void); +u8 GetCurrentWeather(void); +void LoadCustomWeatherSpritePalette(const u16 *palette); + + +extern struct Weather gWeather; + +extern struct Weather *const gWeatherPtr; #endif // GUARD_WEATHER_H diff --git a/include/overworld.h b/include/overworld.h index 597a160ed..974f8f091 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -70,6 +70,8 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum); void c2_load_new_map(void); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); void mapldr_default(void); +u8 get_map_light_from_warp0(void); +bool8 is_light_level_1_2_3_5_or_6(u8 a1); void IncrementGameStat(u8); u32 GetGameStat(u8); diff --git a/include/time_events.h b/include/time_events.h new file mode 100644 index 000000000..fd6d29f39 --- /dev/null +++ b/include/time_events.h @@ -0,0 +1,8 @@ +#ifndef GUARD_TIME_EVENTS_H +#define GUARD_TIME_EVENTS_H + +void UpdateMirageRnd(u16); +u8 IsMirageIslandPresent(void); +void UpdateBirchState(u16); + +#endif // GUARD_TIME_EVENTS_H -- cgit v1.2.3 From 76fc1d1c129fa1aa01bd51d44ba1aa780f69f9cf Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Jan 2018 16:25:09 +0100 Subject: make time events compile --- include/field_weather.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/field_weather.h b/include/field_weather.h index 0bdebf747..5d1aa5ac2 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -139,7 +139,7 @@ enum FADE_TO_WHITE, }; -void FadeScreen(u8, u8); +void FadeScreen(u8, s8); // ... void UpdateSpritePaletteWithWeather(u8 tag); void ApplyWeatherGammaShiftToPal(u8); -- cgit v1.2.3 From e6fb626c1fddb2f696b26219156d2591867295e7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Jan 2018 16:46:56 +0100 Subject: decompile_coord_event_weather --- include/constants/weather.h | 39 +++++++++++++++++++++++++++++++++++++++ include/coord_event_weather.h | 6 ++++++ include/field_weather.h | 1 + 3 files changed, 46 insertions(+) create mode 100644 include/constants/weather.h create mode 100644 include/coord_event_weather.h (limited to 'include') diff --git a/include/constants/weather.h b/include/constants/weather.h new file mode 100644 index 000000000..953cc2753 --- /dev/null +++ b/include/constants/weather.h @@ -0,0 +1,39 @@ +#ifndef GUARD_CONSTANTS_WEATHER_H +#define GUARD_CONSTANTS_WEATHER_H + +#define WEATHER_NONE 0 +#define WEATHER_CLOUDS 1 +#define WEATHER_SUNNY 2 +#define WEATHER_RAIN_LIGHT 3 +#define WEATHER_SNOW 4 +#define WEATHER_RAIN_MED 5 +#define WEATHER_FOG_1 6 +#define WEATHER_ASH 7 +#define WEATHER_SANDSTORM 8 +#define WEATHER_FOG_2 9 +#define WEATHER_FOG_3 10 +#define WEATHER_SHADE 11 +#define WEATHER_DROUGHT 12 +#define WEATHER_RAIN_HEAVY 13 +#define WEATHER_BUBBLES 14 +#define WEATHER_ROUTE119_CYCLE 20 +#define WEATHER_ROUTE123_CYCLE 21 + +// These are used in maps' coord_weather_event entries. +// They are not a one-to-one mapping with the engine's +// internal weather constants above. +#define COORD_EVENT_WEATHER_CLOUDS 1 +#define COORD_EVENT_WEATHER_SUNNY 2 +#define COORD_EVENT_WEATHER_RAIN_LIGHT 3 +#define COORD_EVENT_WEATHER_SNOW 4 +#define COORD_EVENT_WEATHER_RAIN_MED 5 +#define COORD_EVENT_WEATHER_FOG_1 6 +#define COORD_EVENT_WEATHER_FOG_2 7 +#define COORD_EVENT_WEATHER_ASH 8 +#define COORD_EVENT_WEATHER_SANDSTORM 9 +#define COORD_EVENT_WEATHER_SHADE 10 +#define COORD_EVENT_WEATHER_DROUGHT 11 +#define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20 +#define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21 + +#endif // GUARD_CONSTANTS_WEATHER_H diff --git a/include/coord_event_weather.h b/include/coord_event_weather.h new file mode 100644 index 000000000..86fb48793 --- /dev/null +++ b/include/coord_event_weather.h @@ -0,0 +1,6 @@ +#ifndef GUARD_COORD_EVENT_WEATHER_H +#define GUARD_COORD_EVENT_WEATHER_H + +void DoCoordEventWeather(u8); + +#endif // GUARD_COORD_EVENT_WEATHER_H diff --git a/include/field_weather.h b/include/field_weather.h index e12107e70..b39af437b 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -6,6 +6,7 @@ void fade_screen(u8, s8); void SetSav1Weather(u32); u8 GetSav1Weather(void); void sub_80AEDBC(void); +void SetWeather(u32); void DoCurrentWeather(void); -- cgit v1.2.3 From db3ecf5012612ed08aab55f4a8993afea74a4216 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Jan 2018 17:47:12 +0100 Subject: decompile scanline effect --- include/scanline_effect.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ include/unknown_task.h | 22 ---------------------- 2 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 include/scanline_effect.h delete mode 100644 include/unknown_task.h (limited to 'include') diff --git a/include/scanline_effect.h b/include/scanline_effect.h new file mode 100644 index 000000000..54dfe17bd --- /dev/null +++ b/include/scanline_effect.h @@ -0,0 +1,47 @@ +#ifndef GUARD_SCANLINE_EFFECT_H +#define GUARD_SCANLINE_EFFECT_H + +// DMA control value to ransfer a single 16-bit value at HBlank +#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1) + +#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1HOFS (REG_ADDR_BG1HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG1VOFS (REG_ADDR_BG1VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2HOFS (REG_ADDR_BG2HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG2VOFS (REG_ADDR_BG2VOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3HOFS (REG_ADDR_BG3HOFS - REG_ADDR_BG0HOFS) +#define SCANLINE_EFFECT_REG_BG3VOFS (REG_ADDR_BG3VOFS - REG_ADDR_BG0HOFS) + +struct ScanlineEffectParams +{ + volatile void *dmaDest; + u32 dmaControl; + u8 initState; + u8 unused9; +}; + +struct ScanlineEffect +{ + void *dmaSrcBuffers[2]; + volatile void *dmaDest; + u32 dmaControl; + void (*setFirstScanlineReg)(void); + u8 srcBuffer; + u8 state; + u8 unused16; + u8 unused17; + u8 waveTaskId; +}; + +extern struct ScanlineEffect gScanlineEffect; + +extern u16 gScanlineEffectRegBuffers[][0x3C0]; + +void ScanlineEffect_Stop(void); +void ScanlineEffect_Clear(void); +void ScanlineEffect_SetParams(struct ScanlineEffectParams); +void ScanlineEffect_InitHBlankDmaTransfer(void); +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7); + +#endif // GUARD_SCANLINE_EFFECT_H diff --git a/include/unknown_task.h b/include/unknown_task.h deleted file mode 100644 index 906fed3e0..000000000 --- a/include/unknown_task.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef GUARD_unknown_task_H -#define GUARD_unknown_task_H - -// Exported type declarations -struct UnknownTaskStruct -{ - volatile void *dest; - u32 control; - u8 unk8; - u8 unk9; -}; - -extern struct UnknownTaskStruct gUnknown_0831AC70; - -// Exported RAM declarations - -// Exported ROM declarations -void ScanlineEffect_Stop(void); -void sub_80BA038(struct UnknownTaskStruct arg0); -void sub_80BA0A8(void); - -#endif // GUARD_unknown_task_H -- cgit v1.2.3 From f0cc705d35820fa6673200ace50aa67e5832f3f8 Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Tue, 30 Jan 2018 17:16:41 -0500 Subject: fixes --- include/new_menu_helpers.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include') diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 4b1e372c2..bcbb1147d 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -17,5 +17,9 @@ void SetStandardWindowBorderStyle(u8 a0, u8 a1); void sub_8197930(void); u8 GetPlayerTextSpeed(void); void sub_81978B0(u16 arg0); +u16 sub_8197224(void); +int sub_8196094(void); +void sub_8196080(u8*); +void AddTextPrinterForMessage(u8); #endif // GUARD_NEW_MENU_HELPERS_H -- cgit v1.2.3 From 741b8adf9a43989182ff3648bf14e3236d4b5ce9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 30 Jan 2018 23:23:35 +0100 Subject: decompile mystery event menu --- include/link.h | 8 ++++---- include/mystery_event_menu.h | 6 ++++++ include/strings.h | 8 ++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 include/mystery_event_menu.h (limited to 'include') diff --git a/include/link.h b/include/link.h index fe5429497..1c9795d29 100644 --- a/include/link.h +++ b/include/link.h @@ -143,8 +143,9 @@ extern struct LinkPlayer gLinkPlayers[]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkVSyncDisabled; +extern u32 gLinkStatus; -void Task_DestroySelf(u8); +void Task_DestroySelf(u8 taskId); void OpenLink(void); void CloseLink(void); u16 LinkMain2(u16 *); @@ -188,11 +189,10 @@ bool8 sub_8010500(void); void sub_800DFB4(u8, u8); void sub_800ADF8(void); void sub_800B488(void); -void sub_8009734(void); +void OpenLink(void); void sub_800A620(void); void sub_8011BD0(void); -u8 sub_800ABAC(void); -u8 sub_800ABBC(void); void sub_800AC34(void); +u8 sub_800A0C8(s32, s32); #endif // GUARD_LINK_H diff --git a/include/mystery_event_menu.h b/include/mystery_event_menu.h new file mode 100644 index 000000000..8801789d9 --- /dev/null +++ b/include/mystery_event_menu.h @@ -0,0 +1,6 @@ +#ifndef GUARD_MYSTERY_EVENT_MENU_H +#define GUARD_MYSTERY_EVENT_MENU_H + +void CB2_InitMysteryEventMenu(void); + +#endif // GUARD_MYSTERY_EVENT_MENU_H diff --git a/include/strings.h b/include/strings.h index 806a2e405..305007c5d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -202,4 +202,12 @@ extern const u8 gText_ButtonMode[]; extern const u8 gText_MaleSymbol[]; extern const u8 gText_FemaleSymbol[]; +// mystery event menu text +extern const u8 gText_EventSafelyLoaded[]; +extern const u8 gText_LoadErrorEndingSession[]; +extern const u8 gText_PressAToLoadEvent[]; +extern const u8 gText_LoadingEvent[]; +extern const u8 gText_DontRemoveCableTurnOff[]; +extern const u8 gText_LinkStandby2[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From 6453b884338f070c6626e84ca591db7f71dcb3ad Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 30 Jan 2018 18:19:41 -0500 Subject: finish decompiling field_map_obj_helpers.c --- include/map_obj_8097404.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/map_obj_8097404.h b/include/map_obj_8097404.h index 33694fe98..f0880a641 100644 --- a/include/map_obj_8097404.h +++ b/include/map_obj_8097404.h @@ -8,7 +8,7 @@ // Exported type declarations // Exported RAM declarations -extern void *gUnknown_020375B8; +extern u8 *gUnknown_020375B8; // Exported ROM declarations void sub_8097AC8(struct Sprite *); -- cgit v1.2.3 From 05bd37bf469638c5f918733d074ec930af3f6508 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 30 Jan 2018 18:30:59 -0500 Subject: rename header --- include/field_map_obj_helpers.h | 30 +++++++++++++++++++++++++++--- include/map_obj_8097404.h | 34 ---------------------------------- 2 files changed, 27 insertions(+), 37 deletions(-) delete mode 100644 include/map_obj_8097404.h (limited to 'include') diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index ba797ec98..031c7a8ab 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -1,7 +1,31 @@ -#ifndef GUARD_FIELDMAPOBJHELP_H -#define GUARD_FIELDMAPOBJHELP_H +#ifndef GUARD_FIELD_MAP_OBJ_HELPERS_H +#define GUARD_FIELD_MAP_OBJ_HELPERS_H +// Exported type declarations + +// Exported RAM declarations +extern u8 *gUnknown_020375B8; + +// Exported ROM declarations +void sub_8097AC8(struct Sprite *); +void npc_sync_anim_pause_bits(struct MapObject *); +void oamt_npc_ministep_reset(struct Sprite *, u8, u8); +u8 sub_8097F78(struct MapObject *); +bool8 obj_npc_ministep(struct Sprite *sprite); +bool8 sub_80976EC(struct Sprite *sprite); +void sub_80976DC(struct Sprite *, u8); +void sub_809783C(struct Sprite *, u8, u8, u8); +void DoShadowFieldEffect(struct MapObject *); +u8 sub_809785C(struct Sprite *); +u8 sub_80978E4(struct Sprite *); +void obj_anim_image_set_and_seek(struct Sprite *, u8, u8); +bool8 sub_80979BC(struct Sprite *); +void sub_8097750(struct Sprite *); +bool8 sub_8097758(struct Sprite *); +void sub_8097FA4(struct MapObject *); +void sub_8098044(u8); void UnfreezeMapObjects(void); +void FreezeMapObjectsExceptOne(u8 mapObjectId); void sub_8097B78(u8, u8); -#endif +#endif //GUARD_FIELD_MAP_OBJ_HELPERS_H diff --git a/include/map_obj_8097404.h b/include/map_obj_8097404.h deleted file mode 100644 index f0880a641..000000000 --- a/include/map_obj_8097404.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// Created by scott on 9/7/2017. -// - -#ifndef GUARD_MAP_OBJ_8097404_H -#define GUARD_MAP_OBJ_8097404_H - -// Exported type declarations - -// Exported RAM declarations -extern u8 *gUnknown_020375B8; - -// Exported ROM declarations -void sub_8097AC8(struct Sprite *); -void npc_sync_anim_pause_bits(struct MapObject *); -void oamt_npc_ministep_reset(struct Sprite *, u8, u8); -u8 sub_8097F78(struct MapObject *); -bool8 obj_npc_ministep(struct Sprite *sprite); -bool8 sub_80976EC(struct Sprite *sprite); -void sub_80976DC(struct Sprite *, u8); -void sub_809783C(struct Sprite *, u8, u8, u8); -void DoShadowFieldEffect(struct MapObject *); -u8 sub_809785C(struct Sprite *); -u8 sub_80978E4(struct Sprite *); -void obj_anim_image_set_and_seek(struct Sprite *, u8, u8); -bool8 sub_80979BC(struct Sprite *); -void sub_8097750(struct Sprite *); -bool8 sub_8097758(struct Sprite *); -void sub_8097FA4(struct MapObject *); -void sub_8098044(u8); -void UnfreezeMapObjects(void); -void FreezeMapObjectsExceptOne(u8 mapObjectId); - -#endif //GUARD_MAP_OBJ_8097404_H -- cgit v1.2.3 From 78bd2b0849f357f0d2fbbb8e1e69e50d630dd9b0 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 31 Jan 2018 15:26:57 -0500 Subject: move save rodata to source and use saveblock chunk macros --- include/global.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include') diff --git a/include/global.h b/include/global.h index 9f6c45df1..f358dafe7 100644 --- a/include/global.h +++ b/include/global.h @@ -37,6 +37,9 @@ #define POKEMON_NAME_LENGTH 10 #define OT_NAME_LENGTH 7 +#define min(a, b) ((a) < (b) ? (a) : (b)) +#define max(a, b) ((a) >= (b) ? (a) : (b)) + #define HEAP_SIZE 0x1C000 extern u8 gStringVar1[]; -- cgit v1.2.3