From 7d8a2ae7f0d9edaca7770cf472909bf9197acf2a Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Thu, 25 Jan 2018 15:25:35 -0600 Subject: Decompile new_menu_helpers.s --- include/gba/defines.h | 3 +++ include/menu.h | 1 + include/new_menu_helpers.h | 6 +++--- include/text.h | 4 ++-- 4 files changed, 9 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/gba/defines.h b/include/gba/defines.h index 41cc84f4a..702d4a352 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -39,6 +39,9 @@ #define BG_CHAR_ADDR(n) (BG_VRAM + (BG_CHAR_SIZE * (n))) #define BG_SCREEN_ADDR(n) (BG_VRAM + (BG_SCREEN_SIZE * (n))) +#define BG_TILE_H_FLIP(n) (0x400 | (n)) +#define BG_TILE_V_FLIP(n) (0x800 | (n)) + // text-mode BG #define OBJ_VRAM0 (VRAM + 0x10000) #define OBJ_VRAM0_SIZE 0x8000 diff --git a/include/menu.h b/include/menu.h index e5f705cae..425908aea 100644 --- a/include/menu.h +++ b/include/menu.h @@ -39,5 +39,6 @@ void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterS 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); +u8 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16); #endif // GUARD_MENU_H diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 4b1e372c2..fb9a727dc 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -7,10 +7,10 @@ void sub_81971D0(void); void sub_8197200(void); void sub_81973A4(void); -void sub_81973C4(u8, u8); +void NewMenuHelpers_DrawDialogueFrame(u8, u8); void sub_819746C(u8 windowId, bool8 copyToVram); -void sub_81973FC(u8, u8); -u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor); +void NewMenuHelpers_DrawStdWindowFrame(u8, u8); +u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), 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); diff --git a/include/text.h b/include/text.h index b5fc5b58a..b10b27f1e 100644 --- a/include/text.h +++ b/include/text.h @@ -116,7 +116,7 @@ struct TextSubPrinter // TODO: Better name u8 letterSpacing; u8 lineSpacing; u8 fontColor_l:4; // 0xC - u8 fontColor_h:4; + u8 fgColor:4; u8 bgColor:4; u8 shadowColor:4; }; @@ -149,7 +149,7 @@ struct FontInfo u8 letterSpacing; u8 lineSpacing; u8 fontColor_l:4; - u8 fontColor_h:4; + u8 fgColor:4; u8 bgColor:4; u8 shadowColor:4; }; -- cgit v1.2.3 From 2da7bdbb1175802e55103c4f9df95e035aa38c40 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 26 Jan 2018 23:41:52 -0600 Subject: Begin menu.s decomp --- include/gba/defines.h | 4 ++-- include/menu.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/gba/defines.h b/include/gba/defines.h index 702d4a352..6925864a2 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -39,8 +39,8 @@ #define BG_CHAR_ADDR(n) (BG_VRAM + (BG_CHAR_SIZE * (n))) #define BG_SCREEN_ADDR(n) (BG_VRAM + (BG_SCREEN_SIZE * (n))) -#define BG_TILE_H_FLIP(n) (0x400 | (n)) -#define BG_TILE_V_FLIP(n) (0x800 | (n)) +#define BG_TILE_H_FLIP(n) (0x400 + (n)) +#define BG_TILE_V_FLIP(n) (0x800 + (n)) // text-mode BG #define OBJ_VRAM0 (VRAM + 0x10000) diff --git a/include/menu.h b/include/menu.h index 425908aea..2b9ec4438 100644 --- a/include/menu.h +++ b/include/menu.h @@ -30,15 +30,15 @@ void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y); void reset_temp_tile_data_buffers(void); int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); -u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd +struct WindowTemplate sub_8198A50(u8, u8, u8, u8, u8, u8, u16); void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); s8 ProcessMenuInputNoWrap_(void); void do_scheduled_bg_tilemap_copies_to_vram(void); void clear_scheduled_bg_copies_to_vram(void); 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_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u8 a3); void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds); void sub_8197DF8(u8 windowId, bool8 copyToVram); -u8 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16); +u16 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16); #endif // GUARD_MENU_H -- cgit v1.2.3 From a3ed94dc69aea88c2e18ddab6099217c3ee1094b Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Sat, 27 Jan 2018 17:46:32 -0600 Subject: Continue work on menu.c --- include/menu.h | 4 ++-- include/menu_helpers.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/menu.h b/include/menu.h index 2b9ec4438..0988194a7 100644 --- a/include/menu.h +++ b/include/menu.h @@ -21,8 +21,8 @@ void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); void schedule_bg_copy_tilemap_to_vram(u8 bgNum); -void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs); -void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8); +void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs); +u8 InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 windowId, u8 numItems, u8 initialCursorPos); u8 GetMenuCursorPos(void); s8 ProcessMenuInput(void); s8 ProcessMenuInputNoWrapAround(void); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 14b6d32ca..047adaf2a 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -27,5 +27,7 @@ void sub_81223FC(u8 *a0, u8 count, u8 a2); void sub_8122448(u8 *a0, u8 count, u16 x, u16 y); void DisplayMessageAndContinueTask(u8 taskId, u8 arg1, u16 arg2, u8 arg3, u8 arg4, u8 textSpeed, const u8 *string, void *taskFunc); void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); +u8 GetLRKeysState(void); +u8 sub_812210C(void); #endif //GUARD_MENU_HELPERS_H -- cgit v1.2.3 From 3793152bc3666043764689af9821ef15da1243ae Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Mon, 29 Jan 2018 17:26:36 -0600 Subject: More work on menu --- include/dma3.h | 2 +- include/global.h | 2 +- include/menu.h | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/dma3.h b/include/dma3.h index d58e41850..19a69ea80 100644 --- a/include/dma3.h +++ b/include/dma3.h @@ -5,6 +5,6 @@ void ClearDma3Requests(void); void ProcessDma3Requests(void); s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode); s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode); -int CheckForSpaceForDma3Request(s16 index); +s16 CheckForSpaceForDma3Request(s16 index); #endif // GUARD_DMA3_H diff --git a/include/global.h b/include/global.h index 9f6c45df1..21e468515 100644 --- a/include/global.h +++ b/include/global.h @@ -24,7 +24,7 @@ #define INCBIN_S32 {0} #endif // __APPLE__ -#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) +#define ARRAY_COUNT(array) (size_t)(sizeof(array) / sizeof((array)[0])) // useful math macros diff --git a/include/menu.h b/include/menu.h index 0988194a7..efccde1e2 100644 --- a/include/menu.h +++ b/include/menu.h @@ -28,7 +28,7 @@ s8 ProcessMenuInput(void); s8 ProcessMenuInputNoWrapAround(void); void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y); void reset_temp_tile_data_buffers(void); -int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode); +void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size, u16 offset, u8 mode); bool8 free_temp_tile_data_buffers_if_possible(void); struct WindowTemplate sub_8198A50(u8, u8, u8, u8, u8, u8, u16); void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos); @@ -40,5 +40,7 @@ void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u8 a3); void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds); void sub_8197DF8(u8 windowId, bool8 copyToVram); u16 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16); +void *malloc_and_decompress(const void *src, int *sizeOut); +u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode); #endif // GUARD_MENU_H -- cgit v1.2.3 From 97c9a4ec22a479c5a98226c9333e9bffcf1fd4e0 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 6 Feb 2018 14:35:23 -0600 Subject: Skip sub_819A080 --- include/menu.h | 2 +- include/window.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/menu.h b/include/menu.h index efccde1e2..6c4a069e3 100644 --- a/include/menu.h +++ b/include/menu.h @@ -16,7 +16,7 @@ struct MenuAction } func; }; -void box_print(u8, u8, u8, u8, const void *, s8, const u8 *); +void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const struct TextColor *color, s8 speed, const u8 *str); void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); diff --git a/include/window.h b/include/window.h index b630cd316..07c642a09 100644 --- a/include/window.h +++ b/include/window.h @@ -52,7 +52,7 @@ void PutWindowTilemap(u8 windowId); void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette); void ClearWindowTilemap(u8 windowId); void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height); -void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height); +void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height); void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset); -- cgit v1.2.3 From 18abda9dca7e38a1dee63ff0d167e1e2601504bf Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 6 Feb 2018 20:37:54 -0600 Subject: Finish menu.s and eliminate TextColor --- include/menu.h | 4 ++-- include/region_map.h | 1 + include/text.h | 18 ++++-------------- 3 files changed, 7 insertions(+), 16 deletions(-) (limited to 'include') diff --git a/include/menu.h b/include/menu.h index 6c4a069e3..8f4ad686e 100644 --- a/include/menu.h +++ b/include/menu.h @@ -16,7 +16,7 @@ struct MenuAction } func; }; -void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const struct TextColor *color, s8 speed, const u8 *str); +void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str); void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette); @@ -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 AddTextPrinterParameterized2(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 u8 *color, s8 speed, const u8 *str); void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u8 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/region_map.h b/include/region_map.h index e8cc80f82..af331ad81 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -93,5 +93,6 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *, u16, u16); bool32 sub_8124668(u8 mapSecId); +u8 *sub_81245DC(u8 *dest, u16 mapSecId); #endif //GUARD_REGION_MAP_H diff --git a/include/text.h b/include/text.h index b10b27f1e..e073c3762 100644 --- a/include/text.h +++ b/include/text.h @@ -75,6 +75,10 @@ #define CHAR_NEWLINE 0xFE #define EOS 0xFF // end of string +#define EXT_CTRL_CODE_COLOR 0x1 +#define EXT_CTRL_CODE_HIGHLIGHT 0x2 +#define EXT_CTRL_CODE_SHADOW 0x3 + #define TEXT_COLOR_TRANSPARENT 0x0 #define TEXT_COLOR_WHITE 0x1 #define TEXT_COLOR_DARK_GREY 0x2 @@ -178,20 +182,6 @@ typedef struct { extern TextFlags gTextFlags; -struct __attribute__((packed)) TextColor -{ - u8 fgColor; - u8 bgColor; - 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 d396a8f89caa2d47ae39f7dfa8da02017945d7f7 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Wed, 7 Feb 2018 00:07:42 -0600 Subject: Merge new_menu_helpers and menu --- include/graphics.h | 6 ++++++ include/menu.h | 15 +++++++++++++++ include/menu_helpers.h | 2 ++ include/new_menu_helpers.h | 21 --------------------- include/strings.h | 3 +++ 5 files changed, 26 insertions(+), 21 deletions(-) delete mode 100644 include/new_menu_helpers.h (limited to 'include') diff --git a/include/graphics.h b/include/graphics.h index 5917e9d2a..bebf1724b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2679,4 +2679,10 @@ extern const u8 gRaySceneKyogreRight_Pal[]; extern const u8 gRaySceneRayquazaHover_Pal[]; extern const u8 gRaySceneSplash_Pal[]; +//menu graphics +extern const u16 gFireRedMenuElements1_Pal[16]; +extern const u16 gFireRedMenuElements2_Pal[16]; +extern const u16 gFireRedMenuElements3_Pal[16]; +extern const u8 gFireRedMenuElements_Gfx[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/menu.h b/include/menu.h index 8f4ad686e..98b323e42 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,6 +1,7 @@ #ifndef GUARD_MENU_H #define GUARD_MENU_H +#include "task.h" #include "text.h" #include "window.h" @@ -16,6 +17,20 @@ struct MenuAction } func; }; +void sub_81971D0(void); +void sub_8197200(void); +void sub_81973A4(void); +void NewMenuHelpers_DrawDialogueFrame(u8, u8); +void sub_819746C(u8 windowId, bool8 copyToVram); +void NewMenuHelpers_DrawStdWindowFrame(u8, u8); +u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), 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); +void sub_8197930(void); +u8 GetPlayerTextSpeed(void); +void sub_81978B0(u16 arg0); + void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str); void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 047adaf2a..7fae43e9c 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -1,6 +1,8 @@ #ifndef GUARD_MENU_HELPERS_H #define GUARD_MENU_HELPERS_H +#include "task.h" + // Exported type declarations struct YesNoFuncTable diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h deleted file mode 100644 index fb9a727dc..000000000 --- a/include/new_menu_helpers.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef GUARD_NEW_MENU_HELPERS_H -#define GUARD_NEW_MENU_HELPERS_H - -#include "text.h" -#include "task.h" - -void sub_81971D0(void); -void sub_8197200(void); -void sub_81973A4(void); -void NewMenuHelpers_DrawDialogueFrame(u8, u8); -void sub_819746C(u8 windowId, bool8 copyToVram); -void NewMenuHelpers_DrawStdWindowFrame(u8, u8); -u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), 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); -void sub_8197930(void); -u8 GetPlayerTextSpeed(void); -void sub_81978B0(u16 arg0); - -#endif // GUARD_NEW_MENU_HELPERS_H diff --git a/include/strings.h b/include/strings.h index 806a2e405..3bd69bb12 100644 --- a/include/strings.h +++ b/include/strings.h @@ -202,4 +202,7 @@ extern const u8 gText_ButtonMode[]; extern const u8 gText_MaleSymbol[]; extern const u8 gText_FemaleSymbol[]; +extern const u8 gText_SelectorArrow3[]; +extern const u8 gText_YesNo[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3