PokedexPlus with HGSS styled UI by TheXaman

more ui, BROKEN atm

type icons in info screen

working topbar

dpad for switching and white mon name

initial working stats screen

additional stats, proper move list array

Working stats screen, all infos in, all icons in, buggy when switching

Fixed sprite bug, proper sprite destruction, works with old compiler

new navigation: info>area>stats

power+accuracy text, change of positions

layout for stats screen, other screen visually broken

new stats layout properly working plus toggle infos

show lvl of LevelUpMove and TM/HM of TMHM_Move

3 dashes for EggMoves and CORRECT icon for TM/HMs pog

improved layout and contest move data!

TutorMoves now available

hold dpad to scroll, pure relieve

search by move code working

6evs, 16 character move names, tripple digit moves, new eduardo layout

working tileset, info screen no correct xy layout for elements yet

new list menu start

new layout working, only missing stats bars

new list, new search

fixed area screen change and fixed "new caught" bug (type icons)
This commit is contained in:
TheXaman 2020-10-31 14:34:37 +01:00
parent 585f313c64
commit abf5d238c2
36 changed files with 1729 additions and 280 deletions

View File

@ -1,21 +1,21 @@
JASC-PAL
0100
48
123 131 0
255 255 255
222 222 222
189 189 189
164 164 164
98 98 115
41 57 65
41 57 106
0 0 41
255 255 255
238 246 57
255 0 189
49 213 74
24 131 32
189 156 90
193 33 177
249 249 249
225 225 225
201 201 201
169 169 169
129 129 129
249 153 161
233 49 49
193 33 41
145 17 33
249 153 161
193 33 41
141 251 184
52 66 162
194 181 66
0 0 0
123 131 0
255 255 255

View File

@ -1,21 +1,21 @@
JASC-PAL
0100
96
123 131 0
255 255 255
222 222 222
189 189 189
164 164 164
98 98 115
41 57 65
164 164 164
41 57 65
255 255 255
238 246 57
255 0 189
123 164 115
74 115 65
189 156 90
193 33 177
249 249 249
225 225 225
201 201 201
169 169 169
129 129 129
249 153 161
233 49 49
193 33 41
145 17 33
249 153 161
193 33 41
141 251 184
52 66 162
194 181 66
0 0 0
123 131 0
255 255 255

View File

@ -1,21 +1,21 @@
JASC-PAL
0100
48
123 131 0
255 255 255
255 238 0
255 189 0
255 115 0
98 98 115
41 57 65
41 57 106
0 0 41
255 255 255
238 246 57
255 0 189
49 213 74
24 131 32
189 156 90
193 33 177
249 249 249
225 225 225
201 201 201
169 169 169
129 129 129
249 153 161
233 49 49
193 33 41
145 17 33
249 153 161
193 33 41
141 251 184
52 66 162
194 181 66
0 0 0
123 131 0
255 255 255

Binary file not shown.

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
193 33 177
249 249 249
225 225 225
201 201 201
169 169 169
129 129 129
249 153 161
233 49 49
193 33 41
145 17 33
156 226 199
141 251 184
52 66 162
194 181 66
159 216 234
0 0 0

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,21 +1,21 @@
JASC-PAL
0100
96
123 131 0
255 255 255
222 222 222
189 189 189
164 164 164
98 98 115
41 57 65
98 98 115
49 49 65
255 255 255
238 246 57
255 0 189
123 148 32
41 82 0
189 156 90
193 33 177
249 249 249
225 225 225
201 201 201
169 169 169
129 129 129
249 153 161
233 49 49
193 33 41
145 17 33
249 153 161
193 33 41
141 251 184
52 66 162
194 181 66
0 0 0
123 131 0
255 255 255

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -24,4 +24,7 @@ bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio);
void ShowDaycareLevelMenu(void);
void ChooseSendDaycareMon(void);
u8 GetEggMovesSpecies(u16 species, u16 *eggMoves);
bool8 SpeciesCanLearnEggMove(u16 species, u16 move);
#endif // GUARD_DAYCARE_H

View File

@ -3285,6 +3285,8 @@ extern const u32 gBattleTerrainPalette_StadiumWallace[];
// pokedex
extern const u32 gPokedexInterface_Gfx[];
extern const u16 gPokedexBgHoenn_Pal[];
extern const u32 gPokedexMenuRest_Gfx[];
extern const u32 gPokedexMenuList_Gfx[];
extern const u32 gPokedexMenu_Gfx[];
extern const u8 gPokedexList_Tilemap[];
extern const u8 gPokedexListUnderlay_Tilemap[];
@ -3293,10 +3295,12 @@ extern const u8 gPokedexStartMenuSearchResults_Tilemap[];
extern const u16 gPokedexSearchResults_Pal[];
extern const u16 gPokedexBgNational_Pal[];
extern const u8 gPokedexInfoScreen_Tilemap[];
extern const u8 gPokedexStatsScreen_Tilemap[];
extern const u8 gPokedexCryScreen_Tilemap[];
extern const u8 gPokedexSizeScreen_Tilemap[];
extern const u8 gPokedexScreenSelectBarMain_Tilemap[];
extern const u8 gPokedexScreenSelectBarSubmenu_Tilemap[];
extern const u8 gPokedexScreenSelectBarSubmenu_Tilemap_Clear[];
extern const u16 gPokedexCaughtScreen_Pal[];
extern const u32 gPokedexSearchMenu_Gfx[];
extern const u32 gPokedexSearchMenuHoenn_Tilemap[];

View File

@ -90,4 +90,6 @@ void BufferMoveDeleterNicknameAndMove(void);
void GetNumMovesSelectedMonHas(void);
void MoveDeleterChooseMoveToForget(void);
bool8 CanLearnTutorMove(u16, u8);
#endif // GUARD_PARTY_MENU_H

View File

@ -7,6 +7,8 @@ extern u8 gLastViewedMonIndex;
extern const u8 *const gMoveDescriptionPointers[];
extern const u8 *const gNatureNamePointers[];
extern const struct SpriteTemplate sSpriteTemplate_MoveTypes;
extern const struct CompressedSpriteSheet sSpriteSheet_MoveTypes;
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove);

View File

@ -532,6 +532,69 @@ extern const u8 gText_SearchingPleaseWait[];
extern const u8 gText_SearchCompleted[];
extern const u8 gText_NoMatchingPkmnWereFound[];
extern const u8 gText_SelectorArrow[];
//PokedexPlus HGSS_Ui
extern const u8 gText_Stats_EV[];
extern const u8 gText_Stats_EV_HP[];
extern const u8 gText_Stats_EV_Attack[];
extern const u8 gText_Stats_EV_Defense[];
extern const u8 gText_Stats_EV_Speed[];
extern const u8 gText_Stats_EV_SpAtk[];
extern const u8 gText_Stats_EV_SpDef[];
extern const u8 gText_Stats_HP[];
extern const u8 gText_Stats_Attack[];
extern const u8 gText_Stats_Defense[];
extern const u8 gText_Stats_Speed[];
extern const u8 gText_Stats_SpAtk[];
extern const u8 gText_Stats_SpDef[];
extern const u8 gText_Stats_EVHP[];
extern const u8 gText_Stats_EVAttack[];
extern const u8 gText_Stats_EVDefense[];
extern const u8 gText_Stats_EVSpeed[];
extern const u8 gText_Stats_EVSpAtk[];
extern const u8 gText_Stats_EVSpDef[];
extern const u8 gText_Stats_MoveSelectedMax[];
extern const u8 gText_Stats_MoveLevel[];
extern const u8 gText_Stats_Gender_0[];
extern const u8 gText_Stats_Gender_12_5[];
extern const u8 gText_Stats_Gender_25[];
extern const u8 gText_Stats_Gender_50[];
extern const u8 gText_Stats_Gender_75[];
extern const u8 gText_Stats_Gender_87_5[];
extern const u8 gText_Stats_Gender_100[];
extern const u8 gText_Stats_Catch[];
extern const u8 gText_Stats_Exp[];
extern const u8 gText_Stats_EggCycles[];
extern const u8 gText_Stats_Growthrate[];
extern const u8 gText_Stats_Friendship[];
extern const u8 gText_Stats_MEDIUM_FAST[];
extern const u8 gText_Stats_ERRATIC[];
extern const u8 gText_Stats_FLUCTUATING[];
extern const u8 gText_Stats_MEDIUM_SLOW[];
extern const u8 gText_Stats_FAST[];
extern const u8 gText_Stats_SLOW[];
extern const u8 gText_Stats_ContestHeart[];
extern const u8 gText_PlusSymbol[];
extern const u8 gText_Stats_Minus[];
extern const u8 gText_Stats_eggGroup_g1[];
extern const u8 gText_Stats_eggGroup_g2[];
extern const u8 gText_Stats_eggGroup_MONSTER[];
extern const u8 gText_Stats_eggGroup_WATER_1[];
extern const u8 gText_Stats_eggGroup_BUG[];
extern const u8 gText_Stats_eggGroup_FLYING[];
extern const u8 gText_Stats_eggGroup_FIELD[];
extern const u8 gText_Stats_eggGroup_FAIRY[];
extern const u8 gText_Stats_eggGroup_GRASS[];
extern const u8 gText_Stats_eggGroup_HUMAN_LIKE[];
extern const u8 gText_Stats_eggGroup_WATER_3[];
extern const u8 gText_Stats_eggGroup_MINERAL[];
extern const u8 gText_Stats_eggGroup_AMORPHOUS[];
extern const u8 gText_Stats_eggGroup_WATER_2[];
extern const u8 gText_Stats_eggGroup_DITTO[];
extern const u8 gText_Stats_eggGroup_DRAGON[];
extern const u8 gText_Stats_eggGroup_UNDISCOVERED[];
extern const u8 gText_Dex_SEEN[];
extern const u8 gText_Dex_OWN[];
// birch dex rating text
extern const u8 gBirchDexRatingText_LessThan10[];

View File

@ -625,6 +625,61 @@ static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
return numEggMoves;
}
u8 GetEggMovesSpecies(u16 species, u16 *eggMoves)
{
u16 eggMoveIdx;
u16 numEggMoves;
u16 i;
numEggMoves = 0;
eggMoveIdx = 0;
for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++)
{
if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET)
{
eggMoveIdx = i + 1;
break;
}
}
for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
{
if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET)
{
// TODO: the curly braces around this if statement are required for a matching build.
break;
}
eggMoves[i] = gEggMoves[eggMoveIdx + i];
numEggMoves++;
}
return numEggMoves;
}
bool8 SpeciesCanLearnEggMove(u16 species, u16 move) //Move search PokedexPlus HGSS_Ui
{
u16 eggMoveIdx;
u16 i;
eggMoveIdx = 0;
for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++)
{
if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET)
{
eggMoveIdx = i + 1;
break;
}
}
for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
{
if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET)
return FALSE;
if (move == gEggMoves[eggMoveIdx + i])
return TRUE;
}
return FALSE;
}
static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother)
{

View File

@ -1257,6 +1257,8 @@ const u16 gPokedexBgHoenn_Pal[] = INCBIN_U16("graphics/pokedex/bg_hoenn.gbapal")
const u16 gPokedexCaughtScreen_Pal[] = INCBIN_U16("graphics/pokedex/caught_screen.gbapal");
const u16 gPokedexSearchResults_Pal[] = INCBIN_U16("graphics/pokedex/search_results_bg.gbapal");
const u16 gPokedexBgNational_Pal[] = INCBIN_U16("graphics/pokedex/bg_national.gbapal");
const u32 gPokedexMenuRest_Gfx[] = INCBIN_U32("graphics/pokedex/menu_rest.4bpp.lz");
const u32 gPokedexMenuList_Gfx[] = INCBIN_U32("graphics/pokedex/menu_list.4bpp.lz");
const u32 gPokedexMenu_Gfx[] = INCBIN_U32("graphics/pokedex/menu.4bpp.lz");
const u32 gPokedexInterface_Gfx[] = INCBIN_U32("graphics/pokedex/interface.4bpp.lz");
const u32 gUnused_PokedexNoBall[] = INCBIN_U32("graphics/pokedex/noball_unused.4bpp.lz");
@ -1267,7 +1269,12 @@ const u32 gPokedexListUnderlay_Tilemap[] = INCBIN_U32("graphics/pokedex/list_und
const u32 gPokedexSizeScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/size_screen.bin.lz");
const u32 gPokedexScreenSelectBarMain_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_main.bin.lz");
const u32 gPokedexScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_submenu.bin.lz");
const u32 gPokedexScreenSelectBarSubmenu_Tilemap_Clear[] = INCBIN_U32("graphics/pokedex/screen_select_bar_submenu_clear.bin.lz");
// const u32 gPokedexScreenSelectBarSubmenu_Area_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_submenu_area.bin.lz");
// const u32 gPokedexScreenSelectBarSubmenu_Cry_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_submenu_cry.bin.lz");
// const u32 gPokedexScreenSelectBarSubmenu_Size_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_submenu_size.bin.lz");
const u32 gPokedexInfoScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/info_screen.bin.lz");
const u32 gPokedexStatsScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/stats_screen.bin.lz");
const u32 gPokedexCryScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/cry_screen.bin.lz");
const u16 gPokedexSearchMenu_Pal[] = INCBIN_U16("graphics/pokedex/search_menu.gbapal");
const u32 gPokedexSearchMenu_Gfx[] = INCBIN_U32("graphics/pokedex/search_menu.4bpp.lz");

View File

@ -254,7 +254,7 @@ static bool16 IsMonAllowedInPokemonJump(struct Pokemon*);
static bool16 IsMonAllowedInDodrioBerryPicking(struct Pokemon*);
static void Task_CancelParticipationYesNo(u8);
static void Task_HandleCancelParticipationYesNoInput(u8);
static bool8 CanLearnTutorMove(u16, u8);
// static bool8 CanLearnTutorMove(u16, u8);
static u16 GetTutorMove(u8);
static bool8 ShouldUseChooseMonText(void);
static void SetPartyMonFieldSelectionActions(struct Pokemon*, u8);
@ -1989,7 +1989,7 @@ static u16 GetTutorMove(u8 tutor)
return gTutorMoves[tutor];
}
static bool8 CanLearnTutorMove(u16 species, u8 tutor)
bool8 CanLearnTutorMove(u16 species, u8 tutor)
{
if (sTutorLearnsets[species] & (1 << tutor))
return TRUE;

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,7 @@
#include "menu.h"
#include "overworld.h"
#include "palette.h"
#include "pokedex.h"
#include "pokedex_area_screen.h"
#include "region_map.h"
#include "roamer.h"
@ -726,10 +727,20 @@ static void Task_HandlePokedexAreaScreenInput(u8 taskId)
if (JOY_NEW(B_BUTTON))
{
gTasks[taskId].data[1] = 1;
PlaySE(SE_PC_OFF);
PlaySE(SE_DEX_PAGE);
}
else if (JOY_NEW(DPAD_LEFT) || (JOY_NEW(L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
gTasks[taskId].data[1] = 1;
PlaySE(SE_DEX_PAGE);
}
else if (JOY_NEW(DPAD_RIGHT) || (JOY_NEW(R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(sPokedexAreaScreen->species), FLAG_GET_CAUGHT))
{
PlaySE(SE_FAILURE);
return;
}
gTasks[taskId].data[1] = 2;
PlaySE(SE_DEX_PAGE);
}

View File

@ -851,13 +851,13 @@ static const union AnimCmd *const sSpriteAnimTable_MoveTypes[NUMBER_OF_MON_TYPES
sSpriteAnim_CategoryTough,
};
static const struct CompressedSpriteSheet sSpriteSheet_MoveTypes =
const struct CompressedSpriteSheet sSpriteSheet_MoveTypes =
{
.data = gMoveTypes_Gfx,
.size = (NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT) * 0x100,
.tag = TAG_MOVE_TYPES
};
static const struct SpriteTemplate sSpriteTemplate_MoveTypes =
const struct SpriteTemplate sSpriteTemplate_MoveTypes =
{
.tileTag = TAG_MOVE_TYPES,
.paletteTag = TAG_MOVE_TYPES,
@ -3752,7 +3752,7 @@ static void CreateMoveTypeIcons(void)
}
}
static void SetTypeSpritePosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
void SetTypeSpritePosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId) //HGSS_Ui
{
struct Sprite *sprite = &gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]];
StartSpriteAnim(sprite, typeId);

View File

@ -1817,3 +1817,66 @@ const u8 gText_Answer[] = _("ANSWER");
const u8 gText_PokeBalls[] = _("POKé BALLS");
const u8 gText_Berry[] = _("BERRY");
const u8 gText_Berries[] = _("BERRIES");
//HGSS_Ui PokedexPlus
const u8 gText_Stats_EV[] = _("EV: ");
const u8 gText_Stats_EV_HP[] = _("HP {PLUS} ");
const u8 gText_Stats_EV_Attack[] = _("ATTACK {PLUS} ");
const u8 gText_Stats_EV_Defense[] = _("DEFENSE {PLUS} ");
const u8 gText_Stats_EV_Speed[] = _("SPEED {PLUS} ");
const u8 gText_Stats_EV_SpAtk[] = _("SP. ATK {PLUS} ");
const u8 gText_Stats_EV_SpDef[] = _("SP. DEF {PLUS}");
const u8 gText_Stats_HP[] = _("HP ");
const u8 gText_Stats_Attack[] = _("ATK ");
const u8 gText_Stats_Defense[] = _("DEF ");
const u8 gText_Stats_Speed[] = _("SPE ");
const u8 gText_Stats_SpAtk[] = _("SP.A ");
const u8 gText_Stats_SpDef[] = _("SP.D ");
const u8 gText_Stats_EVHP[] = _("EV HP");
const u8 gText_Stats_EVAttack[] = _("EV ATK");
const u8 gText_Stats_EVDefense[] = _("EV DEF");
const u8 gText_Stats_EVSpeed[] = _("EV SPE");
const u8 gText_Stats_EVSpAtk[] = _("EV SP.A");
const u8 gText_Stats_EVSpDef[] = _("EV SP.D");
const u8 gText_Stats_MoveSelectedMax[] = _("{STR_VAR_1} / {STR_VAR_2}");
const u8 gText_Stats_MoveLevel[] = _("LVL");
const u8 gText_Stats_Gender_0[] = _("");
const u8 gText_Stats_Gender_12_5[] = _("♀ 1/7 ♂"); //_("♀ 12.5 / 87.5 ♂");
const u8 gText_Stats_Gender_25[] = _("♀ 1/3 ♂"); //_("♀ 25 / 75 ♂");
const u8 gText_Stats_Gender_50[] = _("♀ 1/1 ♂"); //_("♀ 50 / 50 ♂");
const u8 gText_Stats_Gender_75[] = _("♀ 3/1 ♂"); //_("♀ 75 / 25 ♂");
const u8 gText_Stats_Gender_87_5[] = _("♀ 7/1 ♂");
const u8 gText_Stats_Gender_100[] = _("");
const u8 gText_Stats_Catch[] = _("CATCH RATE: ");
const u8 gText_Stats_Exp[] = _("EXPERIENCE: ");
const u8 gText_Stats_EggCycles[] = _("EGG CYCLES: ");
const u8 gText_Stats_Growthrate[] = _("GROW: ");
const u8 gText_Stats_Friendship[] = _("FRIENDSHIP:" );
const u8 gText_Stats_MEDIUM_FAST[] = _("MED. FAST");
const u8 gText_Stats_ERRATIC[] = _("ERRATIC");
const u8 gText_Stats_FLUCTUATING[] = _("FLUCTUATING");
const u8 gText_Stats_MEDIUM_SLOW[] = _("MED. SLOW");
const u8 gText_Stats_FAST[] = _("FAST");
const u8 gText_Stats_SLOW[] = _("SLOW");
const u8 gText_Stats_ContestHeart[] = _("H");
const u8 gText_Stats_Minus[] = _("-");
const u8 gText_Stats_eggGroup_g1[] = _("EGG G1:");
const u8 gText_Stats_eggGroup_g2[] = _("EGG G2:");
const u8 gText_Stats_eggGroup_MONSTER[] = _("MONSTER");
const u8 gText_Stats_eggGroup_WATER_1[] = _("WATER 1");
const u8 gText_Stats_eggGroup_BUG[] = _("BUG");
const u8 gText_Stats_eggGroup_FLYING[] = _("FLYING");
const u8 gText_Stats_eggGroup_FIELD[] = _("FIELD");
const u8 gText_Stats_eggGroup_FAIRY[] = _("FAIR");
const u8 gText_Stats_eggGroup_GRASS[] = _("GRASS");
const u8 gText_Stats_eggGroup_HUMAN_LIKE[] = _("HUMAN LIKE");
const u8 gText_Stats_eggGroup_WATER_3[] = _("WATER 3");
const u8 gText_Stats_eggGroup_MINERAL[] = _("MINERAL");
const u8 gText_Stats_eggGroup_AMORPHOUS[] = _("AMORPHOUS");
const u8 gText_Stats_eggGroup_WATER_2[] = _("WATER 2");
const u8 gText_Stats_eggGroup_DITTO[] = _("DITTO");
const u8 gText_Stats_eggGroup_DRAGON[] = _("DRAGON");
const u8 gText_Stats_eggGroup_UNDISCOVERED[]= _("---");
const u8 gText_Dex_SEEN[] = _("SEEN");
const u8 gText_Dex_OWN[] = _("OWN");