diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-21 14:36:13 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-21 14:36:13 -0500 |
commit | 9f9b4dd13dfdbb2367059df09a15ba877ecd84e7 (patch) | |
tree | 5bf63eee2a7b28d07e60709d4a32634908cac634 | |
parent | d873b1c6aaafb211f1184755b1534d9e9e2891af (diff) |
Data through gUnknown_84570C8
-rw-r--r-- | data/union_room.s | 208 | ||||
-rw-r--r-- | include/constants/pokemon.h | 130 | ||||
-rw-r--r-- | include/pokemon.h | 184 | ||||
-rw-r--r-- | src/data/union_room.h | 536 | ||||
-rw-r--r-- | src/union_room.c | 319 |
5 files changed, 720 insertions, 657 deletions
diff --git a/data/union_room.s b/data/union_room.s index 97a681485..afb79e74a 100644 --- a/data/union_room.s +++ b/data/union_room.s @@ -6,215 +6,7 @@ .section .rodata .align 2 -gUnknown_8456D4C:: @ 8456D4C - .byte 0x00, 0x01, 0x03, 0x11, 0x0A, 0x0F @ window template - .2byte 0x0044 - -gUnknown_8456D54:: @ 8456D54 - .byte 0x00, 0x14, 0x03, 0x07, 0x04, 0x0F @ window template - .2byte 0x00EE - -gUnknown_8456D5C:: @ 8456D5C - .word gUnknown_84571AC, 0 - .word gUnknown_84571AC, 1 - .word gUnknown_84571AC, 2 - .word gUnknown_84571AC, 3 - .word gUnknown_84571AC, 4 - .word gUnknown_84571AC, 5 - .word gUnknown_84571AC, 6 - .word gUnknown_84571AC, 7 - .word gUnknown_84571AC, 8 - .word gUnknown_84571AC, 9 - .word gUnknown_84571AC, 10 - .word gUnknown_84571AC, 11 - .word gUnknown_84571AC, 12 - .word gUnknown_84571AC, 13 - .word gUnknown_84571AC, 14 - .word gUnknown_84571AC, 15 - -gUnknown_8456DDC:: @ 8456DDC - .word gUnknown_8456D5C - .word ListMenuDefaultCursorMoveFunc - .word sub_8116F94 - .2byte 0x0010 - .2byte 0x0005 - .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x50, 0x02 - -gUnknown_8456DF4:: @ 8456DF4 - .byte 0x00, 0x14, 0x06, 0x08, 0x07, 0x0F @ window template? - .2byte 0x0001 - -gUnknown_8456DFC:: @ 8456DFC - .word gUnknown_8459354, 0x00000208 - .word gUnknown_8459344, 0x00000241 - .word gUnknown_845934C, 0x00000245 - .word gUnknown_8459360, 0x00000040 - -gUnknown_8456E1C:: @ 8456E1C - .word gUnknown_8456DFC - .word ListMenuDefaultCursorMoveFunc - .word NULL - .2byte 0x0004 - .2byte 0x0004 - .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02 - -gUnknown_8456E34:: @ 8456E34 - .byte 0x00, 0x12, 0x08, 0x0B, 0x05, 0x0F @ window template - .2byte 0x0001 - -gUnknown_8456E3C:: @ 8456E3C - .word gText_Register, 1 - .word gUnknown_8459370, 2 - .word gUnknown_8459360, 3 - -gUnknown_8456E54:: @ 8456E54 - .word gUnknown_8456E3C - .word ListMenuDefaultCursorMoveFunc - .word NULL - .2byte 0x0003 - .2byte 0x0003 - .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02 - -gUnknown_8456E6C:: @ 8456E6C - .byte 0x00, 0x14, 0x02, 0x09, 0x0B, 0x0F @ window template - .2byte 0x0001 - -gUnknown_8456E74:: @ 8456E74 - .word gTypeNames + 0x00, 0 - .word gTypeNames + 0x46, 10 - .word gTypeNames + 0x4D, 11 - .word gTypeNames + 0x5B, 13 - .word gTypeNames + 0x54, 12 - .word gTypeNames + 0x69, 15 - .word gTypeNames + 0x1C, 4 - .word gTypeNames + 0x23, 5 - .word gTypeNames + 0x0E, 2 - .word gTypeNames + 0x62, 14 - .word gTypeNames + 0x07, 1 - .word gTypeNames + 0x15, 3 - .word gTypeNames + 0x2A, 6 - .word gTypeNames + 0x31, 7 - .word gTypeNames + 0x70, 16 - .word gTypeNames + 0x38, 8 - .word gTypeNames + 0x77, 17 - .word gUnknown_8459360, 18 - -gUnknown_8456F04:: @ 8456F04 - .word gUnknown_8456E74 - .word ListMenuDefaultCursorMoveFunc - .word NULL - .2byte 0x0012 - .2byte 0x0006 - .byte 0x00, 0x00, 0x08, 0x00, 0x22, 0x31, 0x01, 0x02 - -gUnknown_8456F1C:: @ 8456F1C - .byte 0x00, 0x01, 0x01, 0x1C, 0x02, 0x0D @ window template - .2byte 0x0001 - -gUnknown_8456F24:: @ 8456F24 - .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D @ window template - .2byte 0x0039 - -gUnknown_8456F2C:: @ 8456F2C - .word gUnknown_84571AC, -3 - .word gUnknown_84571AC, 0 - .word gUnknown_84571AC, 1 - .word gUnknown_84571AC, 2 - .word gUnknown_84571AC, 3 - .word gUnknown_84571AC, 4 - .word gUnknown_84571AC, 5 - .word gUnknown_84571AC, 6 - .word gUnknown_84571AC, 7 - .word gUnknown_8459368, 8 - -gUnknown_8456F7C:: @ 8456F7C - .word gUnknown_8456F2C - .word ListMenuDefaultCursorMoveFunc - .word sub_811ACA4 - .2byte 0x000A - .2byte 0x0005 - .byte 0x00, 0x00, 0x0C, 0x00, 0xE2, 0xDF, 0x09, 0x02 - - @ unused window template? - .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D - .2byte 0x0039 - -gUnknown_8456F9C:: @ 8456F9C - .word gUnknown_84571AC, 0 - .word gUnknown_84571AC, 1 - .word gUnknown_84571AC, 2 - .word gUnknown_84571AC, 3 - .word gUnknown_84571AC, 4 - .word gUnknown_84571AC, 5 - .word gUnknown_84571AC, 6 - .word gUnknown_84571AC, 7 - .word gUnknown_84571AC, 8 - .word gUnknown_84571AC, 9 - .word gUnknown_84571AC, 10 - .word gUnknown_84571AC, 11 - .word gUnknown_84571AC, 12 - .word gUnknown_84571AC, 13 - .word gUnknown_84571AC, 14 - .word gUnknown_84571AC, 15 - -gUnknown_845701C:: @ 845701C - .word gUnknown_8456F9C - .word ListMenuDefaultCursorMoveFunc - .word nullsub_92 - .2byte 0x0010 - .2byte 0x0004 - .byte 0x00, 0x00, 0x08, 0x01, 0x20, 0x31, 0x41, 0x02 - -gUnknown_8457034:: @ 8457034 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - @ starts at gUnknown_082F0474 in pokeemerald, union link groups -gUnknown_845704C:: @ 845704C - .byte 0x01, 0xFF, 0x00, 0x00 -gUnknown_8457050:: @ 8457050 - .byte 0x02, 0xFF, 0x00, 0x00 -gUnknown_8457054:: @ 8457054 - .byte 0x03, 0xFF, 0x00, 0x00 -gUnknown_8457058:: @ 8457058 - .byte 0x04, 0xFF, 0x00, 0x00 -gUnknown_845705C:: @ 845705C - .byte 0x09, 0xFF, 0x00, 0x00 -gUnknown_8457060:: @ 8457060 - .byte 0x0A, 0xFF, 0x00, 0x00 -gUnknown_8457064:: @ 8457064 - .byte 0x0B, 0xFF, 0x00, 0x00 -gUnknown_8457068:: @ 8457068 - .byte 0x15, 0xFF, 0x00, 0x00 -gUnknown_845706C:: @ 845706C - .byte 0x16, 0xFF, 0x00, 0x00 -gUnknown_8457070:: @ 8457070 - .byte 0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xFF, 0x00, 0x00 -gUnknown_845707C:: @ 845707C - .byte 0x0C, 0xFF, 0x00, 0x00 -gUnknown_8457080:: @ 8457080 - .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0x0D, 0xFF, 0x00 -gUnknown_845708C:: @ 845708C - .byte 0x01, 0x02, 0x03, 0x04, 0x0A, 0xFF, 0x00, 0x00 - -gUnknown_8457094:: @ 8457094 - .word gUnknown_845704C - .word gUnknown_8457050 - .word gUnknown_8457054 - .word gUnknown_8457058 - .word gUnknown_845705C - .word gUnknown_8457060 - .word gUnknown_8457064 - .word gUnknown_8457068 - .word gUnknown_845706C - .word gUnknown_8457070 - .word gUnknown_845707C - .word gUnknown_8457080 - .word gUnknown_845708C - -gUnknown_84570C8:: @ 84570C8 - .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0xF7, 0x00, 0xAF, 0xF7, 0x01, 0xFF, 0x00 gUnknown_84570D8:: @ 84570D8 .byte 0x29, 0x36, 0x27, 0x12, 0x13, 0x14, 0x19, 0x1A, 0x00, 0x00, 0x2A, 0x3A, 0x28, 0x16, 0x17, 0x18, 0x1C, 0x1D, 0x00, 0x00 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index c6fc55003..2c8eeb3ea 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -1,6 +1,97 @@ #ifndef GUARD_CONSTANTS_POKEMON_H #define GUARD_CONSTANTS_POKEMON_H +// For (Set|Get)(Box)?MonData +#define MON_DATA_PERSONALITY 0 +#define MON_DATA_OT_ID 1 +#define MON_DATA_NICKNAME 2 +#define MON_DATA_LANGUAGE 3 +#define MON_DATA_SANITY_IS_BAD_EGG 4 +#define MON_DATA_SANITY_HAS_SPECIES 5 +#define MON_DATA_SANITY_IS_EGG 6 +#define MON_DATA_OT_NAME 7 +#define MON_DATA_MARKINGS 8 +#define MON_DATA_CHECKSUM 9 +#define MON_DATA_ENCRYPT_SEPARATOR 10 +#define MON_DATA_SPECIES 11 +#define MON_DATA_HELD_ITEM 12 +#define MON_DATA_MOVE1 13 +#define MON_DATA_MOVE2 14 +#define MON_DATA_MOVE3 15 +#define MON_DATA_MOVE4 16 +#define MON_DATA_PP1 17 +#define MON_DATA_PP2 18 +#define MON_DATA_PP3 19 +#define MON_DATA_PP4 20 +#define MON_DATA_PP_BONUSES 21 +#define MON_DATA_COOL 22 +#define MON_DATA_BEAUTY 23 +#define MON_DATA_CUTE 24 +#define MON_DATA_EXP 25 +#define MON_DATA_HP_EV 26 +#define MON_DATA_ATK_EV 27 +#define MON_DATA_DEF_EV 28 +#define MON_DATA_SPEED_EV 29 +#define MON_DATA_SPATK_EV 30 +#define MON_DATA_SPDEF_EV 31 +#define MON_DATA_FRIENDSHIP 32 +#define MON_DATA_SMART 33 +#define MON_DATA_POKERUS 34 +#define MON_DATA_MET_LOCATION 35 +#define MON_DATA_MET_LEVEL 36 +#define MON_DATA_MET_GAME 37 +#define MON_DATA_POKEBALL 38 +#define MON_DATA_HP_IV 39 +#define MON_DATA_ATK_IV 40 +#define MON_DATA_DEF_IV 41 +#define MON_DATA_SPEED_IV 42 +#define MON_DATA_SPATK_IV 43 +#define MON_DATA_SPDEF_IV 44 +#define MON_DATA_IS_EGG 45 +#define MON_DATA_ABILITY_NUM 46 +#define MON_DATA_TOUGH 47 +#define MON_DATA_SHEEN 48 +#define MON_DATA_OT_GENDER 49 +#define MON_DATA_COOL_RIBBON 50 +#define MON_DATA_BEAUTY_RIBBON 51 +#define MON_DATA_CUTE_RIBBON 52 +#define MON_DATA_SMART_RIBBON 53 +#define MON_DATA_TOUGH_RIBBON 54 +#define MON_DATA_STATUS 55 +#define MON_DATA_LEVEL 56 +#define MON_DATA_HP 57 +#define MON_DATA_MAX_HP 58 +#define MON_DATA_ATK 59 +#define MON_DATA_DEF 60 +#define MON_DATA_SPEED 61 +#define MON_DATA_SPATK 62 +#define MON_DATA_SPDEF 63 +#define MON_DATA_MAIL 64 +#define MON_DATA_SPECIES2 65 +#define MON_DATA_IVS 66 +#define MON_DATA_CHAMPION_RIBBON 67 +#define MON_DATA_WINNING_RIBBON 68 +#define MON_DATA_VICTORY_RIBBON 69 +#define MON_DATA_ARTIST_RIBBON 70 +#define MON_DATA_EFFORT_RIBBON 71 +#define MON_DATA_GIFT_RIBBON_1 72 +#define MON_DATA_GIFT_RIBBON_2 73 +#define MON_DATA_GIFT_RIBBON_3 74 +#define MON_DATA_GIFT_RIBBON_4 75 +#define MON_DATA_GIFT_RIBBON_5 76 +#define MON_DATA_GIFT_RIBBON_6 77 +#define MON_DATA_GIFT_RIBBON_7 78 +#define MON_DATA_FATEFUL_ENCOUNTER 79 +#define MON_DATA_OBEDIENCE 80 +#define MON_DATA_KNOWN_MOVES 81 +#define MON_DATA_RIBBON_COUNT 82 +#define MON_DATA_RIBBONS 83 +#define MON_DATA_ATK2 84 +#define MON_DATA_DEF2 85 +#define MON_DATA_SPEED2 86 +#define MON_DATA_SPATK2 87 +#define MON_DATA_SPDEF2 88 + // Pokemon types #define TYPE_NORMAL 0x00 #define TYPE_FIGHTING 0x01 @@ -77,6 +168,16 @@ #define STAT_ACC 6 // only in battles #define STAT_EVASION 7 // only in battles +// TODO: Why do we need these as separate defines? +#define STAT_STAGE_HP 0 +#define STAT_STAGE_ATK 1 +#define STAT_STAGE_DEF 2 +#define STAT_STAGE_SPEED 3 +#define STAT_STAGE_SPATK 4 +#define STAT_STAGE_SPDEF 5 +#define STAT_STAGE_ACC 6 +#define STAT_STAGE_EVASION 7 + #define NUM_STATS 6 #define NUM_BATTLE_STATS 8 @@ -91,4 +192,33 @@ #define PLAYER_HAS_ONE_MON 0x1 #define PLAYER_HAS_ONE_USABLE_MON 0x2 +#define MAX_LEVEL 100 + +#define OT_ID_RANDOM_NO_SHINY 2 +#define OT_ID_PRESET 1 +#define OT_ID_PLAYER_ID 0 + +#define MON_GIVEN_TO_PARTY 0x0 +#define MON_GIVEN_TO_PC 0x1 +#define MON_CANT_GIVE 0x2 + +#define MON_MALE 0x00 +#define MON_FEMALE 0xFE +#define MON_GENDERLESS 0xFF + +#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0 +#define FRIENDSHIP_EVENT_VITAMIN 0x1 +#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2 +#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3 +#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4 +#define FRIENDSHIP_EVENT_WALKING 0x5 +#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6 +#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7 +#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8 + +#define PARTY_SIZE 6 +#define MAX_TOTAL_EVS 510 +#define UNOWN_FORM_COUNT 28 +#define MAX_MON_LEVEL 100 + #endif // GUARD_CONSTANTS_POKEMON_H diff --git a/include/pokemon.h b/include/pokemon.h index ae909018c..be0a35877 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -3,167 +3,7 @@ #include "global.h" #include "sprite.h" - -#define MON_DATA_PERSONALITY 0 -#define MON_DATA_OT_ID 1 -#define MON_DATA_NICKNAME 2 -#define MON_DATA_LANGUAGE 3 -#define MON_DATA_SANITY_IS_BAD_EGG 4 -#define MON_DATA_SANITY_HAS_SPECIES 5 -#define MON_DATA_SANITY_IS_EGG 6 -#define MON_DATA_OT_NAME 7 -#define MON_DATA_MARKINGS 8 -#define MON_DATA_CHECKSUM 9 -#define MON_DATA_ENCRYPT_SEPARATOR 10 -#define MON_DATA_SPECIES 11 -#define MON_DATA_HELD_ITEM 12 -#define MON_DATA_MOVE1 13 -#define MON_DATA_MOVE2 14 -#define MON_DATA_MOVE3 15 -#define MON_DATA_MOVE4 16 -#define MON_DATA_PP1 17 -#define MON_DATA_PP2 18 -#define MON_DATA_PP3 19 -#define MON_DATA_PP4 20 -#define MON_DATA_PP_BONUSES 21 -#define MON_DATA_COOL 22 -#define MON_DATA_BEAUTY 23 -#define MON_DATA_CUTE 24 -#define MON_DATA_EXP 25 -#define MON_DATA_HP_EV 26 -#define MON_DATA_ATK_EV 27 -#define MON_DATA_DEF_EV 28 -#define MON_DATA_SPEED_EV 29 -#define MON_DATA_SPATK_EV 30 -#define MON_DATA_SPDEF_EV 31 -#define MON_DATA_FRIENDSHIP 32 -#define MON_DATA_SMART 33 -#define MON_DATA_POKERUS 34 -#define MON_DATA_MET_LOCATION 35 -#define MON_DATA_MET_LEVEL 36 -#define MON_DATA_MET_GAME 37 -#define MON_DATA_POKEBALL 38 -#define MON_DATA_HP_IV 39 -#define MON_DATA_ATK_IV 40 -#define MON_DATA_DEF_IV 41 -#define MON_DATA_SPEED_IV 42 -#define MON_DATA_SPATK_IV 43 -#define MON_DATA_SPDEF_IV 44 -#define MON_DATA_IS_EGG 45 -#define MON_DATA_ABILITY_NUM 46 -#define MON_DATA_TOUGH 47 -#define MON_DATA_SHEEN 48 -#define MON_DATA_OT_GENDER 49 -#define MON_DATA_COOL_RIBBON 50 -#define MON_DATA_BEAUTY_RIBBON 51 -#define MON_DATA_CUTE_RIBBON 52 -#define MON_DATA_SMART_RIBBON 53 -#define MON_DATA_TOUGH_RIBBON 54 -#define MON_DATA_STATUS 55 -#define MON_DATA_LEVEL 56 -#define MON_DATA_HP 57 -#define MON_DATA_MAX_HP 58 -#define MON_DATA_ATK 59 -#define MON_DATA_DEF 60 -#define MON_DATA_SPEED 61 -#define MON_DATA_SPATK 62 -#define MON_DATA_SPDEF 63 -#define MON_DATA_MAIL 64 -#define MON_DATA_SPECIES2 65 -#define MON_DATA_IVS 66 -#define MON_DATA_CHAMPION_RIBBON 67 -#define MON_DATA_WINNING_RIBBON 68 -#define MON_DATA_VICTORY_RIBBON 69 -#define MON_DATA_ARTIST_RIBBON 70 -#define MON_DATA_EFFORT_RIBBON 71 -#define MON_DATA_GIFT_RIBBON_1 72 -#define MON_DATA_GIFT_RIBBON_2 73 -#define MON_DATA_GIFT_RIBBON_3 74 -#define MON_DATA_GIFT_RIBBON_4 75 -#define MON_DATA_GIFT_RIBBON_5 76 -#define MON_DATA_GIFT_RIBBON_6 77 -#define MON_DATA_GIFT_RIBBON_7 78 -#define MON_DATA_FATEFUL_ENCOUNTER 79 -#define MON_DATA_OBEDIENCE 80 -#define MON_DATA_KNOWN_MOVES 81 -#define MON_DATA_RIBBON_COUNT 82 -#define MON_DATA_RIBBONS 83 -#define MON_DATA_ATK2 84 -#define MON_DATA_DEF2 85 -#define MON_DATA_SPEED2 86 -#define MON_DATA_SPATK2 87 -#define MON_DATA_SPDEF2 88 - -#define MAX_LEVEL 100 - -#define OT_ID_RANDOM_NO_SHINY 2 -#define OT_ID_PRESET 1 -#define OT_ID_PLAYER_ID 0 - -#define MON_GIVEN_TO_PARTY 0x0 -#define MON_GIVEN_TO_PC 0x1 -#define MON_CANT_GIVE 0x2 - -#define MON_MALE 0x00 -#define MON_FEMALE 0xFE -#define MON_GENDERLESS 0xFF - -#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0 -#define FRIENDSHIP_EVENT_VITAMIN 0x1 -#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2 -#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3 -#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4 -#define FRIENDSHIP_EVENT_WALKING 0x5 -#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6 -#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7 -#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8 - -#define TYPE_NORMAL 0x00 -#define TYPE_FIGHTING 0x01 -#define TYPE_FLYING 0x02 -#define TYPE_POISON 0x03 -#define TYPE_GROUND 0x04 -#define TYPE_ROCK 0x05 -#define TYPE_BUG 0x06 -#define TYPE_GHOST 0x07 -#define TYPE_STEEL 0x08 -#define TYPE_MYSTERY 0x09 -#define TYPE_FIRE 0x0a -#define TYPE_WATER 0x0b -#define TYPE_GRASS 0x0c -#define TYPE_ELECTRIC 0x0d -#define TYPE_PSYCHIC 0x0e -#define TYPE_ICE 0x0f -#define TYPE_DRAGON 0x10 -#define TYPE_DARK 0x11 - -#define NUMBER_OF_MON_TYPES 0x12 - -#define PARTY_SIZE 6 -#define MAX_TOTAL_EVS 510 -#define NUM_STATS 6 -#define UNOWN_FORM_COUNT 28 -#define MAX_MON_LEVEL 100 - -enum -{ - EGG_GROUP_NONE, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - EGG_GROUP_BUG, - EGG_GROUP_FLYING, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_WATER_3, - EGG_GROUP_MINERAL, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_WATER_2, - EGG_GROUP_DITTO, - EGG_GROUP_DRAGON, - EGG_GROUP_UNDISCOVERED -}; +#include "constants/pokemon.h" struct PokemonSubstruct0 { @@ -357,28 +197,6 @@ struct BattlePokemon /*0x54*/ u32 otId; }; -enum -{ - STAT_STAGE_HP, // 0 - STAT_STAGE_ATK, // 1 - STAT_STAGE_DEF, // 2 - STAT_STAGE_SPEED, // 3 - STAT_STAGE_SPATK, // 4 - STAT_STAGE_SPDEF, // 5 - STAT_STAGE_ACC, // 6 - STAT_STAGE_EVASION, // 7 -}; - -enum -{ - STAT_HP, // 0 - STAT_ATK, // 1 - STAT_DEF, // 2 - STAT_SPD, // 3 - STAT_SPATK, // 4 - STAT_SPDEF, // 5 -}; - struct BaseStats { /* 0x00 */ u8 baseHP; diff --git a/src/data/union_room.h b/src/data/union_room.h new file mode 100644 index 000000000..22655721b --- /dev/null +++ b/src/data/union_room.h @@ -0,0 +1,536 @@ +extern const u8 gUnknown_84571AC[]; +extern const u8 gUnknown_8459344[]; +extern const u8 gUnknown_845934C[]; +extern const u8 gUnknown_8459354[]; +extern const u8 gUnknown_8459360[]; +extern const u8 gUnknown_8459368[]; +extern const u8 gUnknown_8459370[]; +extern const u8 gUnknown_8459394[]; +extern const u8 gUnknown_84593A4[]; +extern const u8 gUnknown_84593B4[]; +extern const u8 gUnknown_84593C4[]; +extern const u8 gUnknown_84593D4[]; +extern const u8 gUnknown_84593E4[]; +extern const u8 gUnknown_84593F4[]; +extern const u8 gUnknown_84593DC[]; +extern const u8 gUnknown_8459400[]; +extern const u8 gUnknown_8459410[]; +extern const u8 gUnknown_845941C[]; +extern const u8 gUnknown_845942C[]; +extern const u8 gUnknown_8459434[]; +extern const u8 gUnknown_8459440[]; + +#define _8456CD8(a, b) ((a) | ((b) << 8)) + +static const u8 *const gUnknown_8456C74[] = { + gUnknown_84571AC, + gUnknown_8459394, + gUnknown_84593A4, + gUnknown_84593B4, + gUnknown_84593C4, + gUnknown_84593D4, + gUnknown_84593E4, + gUnknown_84593F4, + gUnknown_84593DC, + gUnknown_8459400, + gUnknown_8459410, + gUnknown_845941C, + gUnknown_845942C, + gUnknown_8459434, + gUnknown_8459440, + gUnknown_84571AC, + gUnknown_84571AC, + gUnknown_84571AC, + gUnknown_84571AC, + gUnknown_84571AC, + gUnknown_84571AC, + gUnknown_84593E4, + gUnknown_84593F4 +}; + +static const struct WindowTemplate gUnknown_8456CD0 = { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0xF, + .baseBlock = 0x008 +}; + +static const u32 gUnknown_8456CD8[] = { + _8456CD8( 1, 2), + _8456CD8( 2, 2), + _8456CD8( 3, 4), + _8456CD8( 4, 2), + _8456CD8( 9, 37), + _8456CD8(10, 37), + _8456CD8(11, 53), + _8456CD8(13, 53), + _8456CD8(14, 53) +}; + +static const struct WindowTemplate gUnknown_8456CFC = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 3, + .width = 13, + .height = 10, + .paletteNum = 15, + .baseBlock = 0x044 +}; + +static const struct WindowTemplate gUnknown_8456D04 = { + .bg = 0, + .tilemapLeft = 16, + .tilemapTop = 3, + .width = 7, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x0C6 +}; + +const struct ListMenuItem gUnknown_8456D0C[] = { + {gUnknown_84571AC, 0}, + {gUnknown_84571AC, 1}, + {gUnknown_84571AC, 2}, + {gUnknown_84571AC, 3}, + {gUnknown_84571AC, 4} +}; + +static const struct ListMenuTemplate gUnknown_8456D34 = { + .items = gUnknown_8456D0C, + .moveCursorFunc = NULL, + .itemPrintFunc = sub_81164C8, + .totalItems = 5, + .maxShowed = 5, + .windowId = 0, + .header_X = 0, + .item_X = 1, + .cursor_X = 0, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 2, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = 2, + .cursorKind = 1 +}; + +static const struct WindowTemplate gUnknown_8456D4C = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 3, + .width = 17, + .height = 10, + .paletteNum = 15, + .baseBlock = 0x044 +}; + +static const struct WindowTemplate gUnknown_8456D54 = { + .bg = 0, + .tilemapLeft = 20, + .tilemapTop = 3, + .width = 7, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x0EE +}; + +static const struct ListMenuItem gUnknown_8456D5C[] = { + {gUnknown_84571AC, 0}, + {gUnknown_84571AC, 1}, + {gUnknown_84571AC, 2}, + {gUnknown_84571AC, 3}, + {gUnknown_84571AC, 4}, + {gUnknown_84571AC, 5}, + {gUnknown_84571AC, 6}, + {gUnknown_84571AC, 7}, + {gUnknown_84571AC, 8}, + {gUnknown_84571AC, 9}, + {gUnknown_84571AC, 10}, + {gUnknown_84571AC, 11}, + {gUnknown_84571AC, 12}, + {gUnknown_84571AC, 13}, + {gUnknown_84571AC, 14}, + {gUnknown_84571AC, 15} +}; + +static const struct ListMenuTemplate gUnknown_8456DDC = { + .items = gUnknown_8456D5C, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = sub_8116F94, + .totalItems = 16, + .maxShowed = 5, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 0, + .itemVerticalPadding = 2, + .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD, + .fontId = 2, + .cursorKind = 0 +}; + +static const struct WindowTemplate gUnknown_8456DF4 = { + .bg = 0, + .tilemapLeft = 20, + .tilemapTop = 6, + .width = 8, + .height = 7, + .paletteNum = 15, + .baseBlock = 0x001 +}; + +static const struct ListMenuItem gUnknown_8456DFC[] = { + {gUnknown_8459354, _8456CD8( 8, 2)}, + {gUnknown_8459344, _8456CD8(65, 2)}, + {gUnknown_845934C, _8456CD8(69, 2)}, + {gUnknown_8459360, _8456CD8(64, 0)} +}; + +static const struct ListMenuTemplate gUnknown_8456E1C = { + .items = gUnknown_8456DFC, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = NULL, + .totalItems = 4, + .maxShowed = 4, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 1, + .itemVerticalPadding = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = 2, + .cursorKind = 0 +}; + +static const struct WindowTemplate gUnknown_8456E34 = { + .bg = 0, + .tilemapLeft = 18, + .tilemapTop = 8, + .width = 11, + .height = 5, + .paletteNum = 15, + .baseBlock = 0x001 +}; + +static const struct ListMenuItem gUnknown_8456E3C[] = { + {gText_Register, 1}, + {gUnknown_8459370, 2}, + {gUnknown_8459360, 3} +}; + +static const struct ListMenuTemplate gUnknown_8456E54 = { + .items = gUnknown_8456E3C, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = NULL, + .totalItems = 3, + .maxShowed = 3, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 1, + .itemVerticalPadding = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = 2, + .cursorKind = 0 +}; + +static const struct WindowTemplate gUnknown_8456E6C = { + .bg = 0, + .tilemapLeft = 20, + .tilemapTop = 2, + .width = 9, + .height = 11, + .paletteNum = 15, + .baseBlock = 0x001 +}; + +static const struct ListMenuItem gUnknown_8456E74[] = { + {gTypeNames[TYPE_NORMAL], TYPE_NORMAL}, + {gTypeNames[TYPE_FIRE], TYPE_FIRE}, + {gTypeNames[TYPE_WATER], TYPE_WATER}, + {gTypeNames[TYPE_ELECTRIC], TYPE_ELECTRIC}, + {gTypeNames[TYPE_GRASS], TYPE_GRASS}, + {gTypeNames[TYPE_ICE], TYPE_ICE}, + {gTypeNames[TYPE_GROUND], TYPE_GROUND}, + {gTypeNames[TYPE_ROCK], TYPE_ROCK}, + {gTypeNames[TYPE_FLYING], TYPE_FLYING}, + {gTypeNames[TYPE_PSYCHIC], TYPE_PSYCHIC}, + {gTypeNames[TYPE_FIGHTING], TYPE_FIGHTING}, + {gTypeNames[TYPE_POISON], TYPE_POISON}, + {gTypeNames[TYPE_BUG], TYPE_BUG}, + {gTypeNames[TYPE_GHOST], TYPE_GHOST}, + {gTypeNames[TYPE_DRAGON], TYPE_DRAGON}, + {gTypeNames[TYPE_STEEL], TYPE_STEEL}, + {gTypeNames[TYPE_DARK], TYPE_DARK}, + {gUnknown_8459360, NUMBER_OF_MON_TYPES} +}; + +static const struct ListMenuTemplate gUnknown_8456F04 = { + .items = gUnknown_8456E74, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = NULL, + .totalItems = NUMBER_OF_MON_TYPES, + .maxShowed = 6, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 0, + .upText_Y = 2, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 1, + .itemVerticalPadding = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = 2, + .cursorKind = 0 +}; + +static const struct WindowTemplate gUnknown_8456F1C = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 28, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x001 +}; + +static const struct WindowTemplate gUnknown_8456F24 = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 5, + .width = 28, + .height = 10, + .paletteNum = 13, + .baseBlock = 0x039 +}; + +static const struct ListMenuItem gUnknown_8456F2C[] = { + {gUnknown_84571AC, -3}, + {gUnknown_84571AC, 0}, + {gUnknown_84571AC, 1}, + {gUnknown_84571AC, 2}, + {gUnknown_84571AC, 3}, + {gUnknown_84571AC, 4}, + {gUnknown_84571AC, 5}, + {gUnknown_84571AC, 6}, + {gUnknown_84571AC, 7}, + {gUnknown_8459368, 8} +}; + +static const struct ListMenuTemplate gUnknown_8456F7C = { + .items = gUnknown_8456F2C, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = sub_811ACA4, + .totalItems = 10, + .maxShowed = 5, + .windowId = 0, + .header_X = 0, + .item_X = 12, + .cursor_X = 0, + .upText_Y = 2, + .cursorPal = 14, + .fillValue = 15, + .cursorShadowPal = 13, + .lettersSpacing = 1, + .itemVerticalPadding = 1, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = 2, + .cursorKind = 0 +}; + +static const struct WindowTemplate gUnknown_8456F94 = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 5, + .width = 28, + .height = 10, + .paletteNum = 13, + .baseBlock = 0x039 +}; + +static const struct ListMenuItem gUnknown_8456F9C[] = { + {gUnknown_84571AC, 0}, + {gUnknown_84571AC, 1}, + {gUnknown_84571AC, 2}, + {gUnknown_84571AC, 3}, + {gUnknown_84571AC, 4}, + {gUnknown_84571AC, 5}, + {gUnknown_84571AC, 6}, + {gUnknown_84571AC, 7}, + {gUnknown_84571AC, 8}, + {gUnknown_84571AC, 9}, + {gUnknown_84571AC, 10}, + {gUnknown_84571AC, 11}, + {gUnknown_84571AC, 12}, + {gUnknown_84571AC, 13}, + {gUnknown_84571AC, 14}, + {gUnknown_84571AC, 15} +}; + +static const struct ListMenuTemplate gUnknown_845701C = { + .items = gUnknown_8456F9C, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .itemPrintFunc = nullsub_92, + .totalItems = 16, + .maxShowed = 4, + .windowId = 0, + .header_X = 0, + .item_X = 8, + .cursor_X = 1, + .upText_Y = 0, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 1, + .itemVerticalPadding = 0, + .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD, + .fontId = 2, + .cursorKind = 0 +}; + +static const struct UnkStruct_Shared gUnknown_8457034 = {}; + +// starts at gUnknown_082F0474 in pokeemerald, union link groups + +ALIGNED(4) static const u8 gUnknown_845704C[] = {0x01, 0xFF}; +ALIGNED(4) static const u8 gUnknown_8457050[] = {0x02, 0xFF}; +ALIGNED(4) static const u8 gUnknown_8457054[] = {0x03, 0xFF}; +ALIGNED(4) static const u8 gUnknown_8457058[] = {0x04, 0xFF}; +ALIGNED(4) static const u8 gUnknown_845705C[] = {0x09, 0xFF}; +ALIGNED(4) static const u8 gUnknown_8457060[] = {0x0A, 0xFF}; +ALIGNED(4) static const u8 gUnknown_8457064[] = {0x0B, 0xFF}; +ALIGNED(4) static const u8 gUnknown_8457068[] = {0x15, 0xFF}; +ALIGNED(4) static const u8 gUnknown_845706C[] = {0x16, 0xFF}; +ALIGNED(4) static const u8 gUnknown_8457070[] = {0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xFF}; +ALIGNED(4) static const u8 gUnknown_845707C[] = {0x0C, 0xFF}; +ALIGNED(4) static const u8 gUnknown_8457080[] = {0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0x0D, 0xFF}; +ALIGNED(4) static const u8 gUnknown_845708C[] = {0x01, 0x02, 0x03, 0x04, 0x0A, 0xFF}; + +static const u8 *const gUnknown_8457094[] = { + gUnknown_845704C, + gUnknown_8457050, + gUnknown_8457054, + gUnknown_8457058, + gUnknown_845705C, + gUnknown_8457060, + gUnknown_8457064, + gUnknown_8457068, + gUnknown_845706C, + gUnknown_8457070, + gUnknown_845707C, + gUnknown_8457080, + gUnknown_845708C +}; + +static const u8 gUnknown_84570C8[] = {0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0xF7, 0x00, 0xAF, 0xF7, 0x01, 0xFF, 0x00}; + +extern const u8 gUnknown_84571B0[]; +extern const u8 gUnknown_84571B4[]; +extern const u8 gUnknown_84571B8[]; +extern const u8 gUnknown_84571E0[]; +extern const u8 gUnknown_8457234[]; +extern const u8 gUnknown_8457264[]; +extern const u8 *const gUnknown_845742C[][5]; +extern const u8 gUnknown_845747C[]; +extern const u8 gUnknown_84574A0[]; +extern const u8 gUnknown_84574C4[]; +extern const u8 gUnknown_84574EC[]; +extern const u8 gUnknown_8457514[]; +extern const u8 gUnknown_8457530[]; +extern const u8 gUnknown_8457554[]; +extern const u8 *const gUnknown_8457608[]; +extern const u8 gUnknown_8457610[]; +extern const u8 *const gUnknown_845767C[]; +extern const u8 gUnknown_84576AC[]; +extern const u8 gUnknown_84576C4[]; +extern const u8 gUnknown_8457700[]; +extern const u8 gUnknown_845771C[]; +extern const u8 *const gUnknown_8457754[]; +extern const u8 gUnknown_845777C[]; +extern const u8 gUnknown_84577BC[]; +extern const u8 gUnknown_84577F8[]; +extern const u8 *const gUnknown_8457838[]; +extern const u8 gUnknown_84578BC[]; +extern const u8 *const gUnknown_8457A34[]; +extern const u8 *const gUnknown_8457B04[][2]; +extern const u8 *const gUnknown_8457BCC[]; +extern const u8 *const gUnknown_8457C20[]; +extern const u8 gUnknown_8457C48[]; +extern const u8 gUnknown_8457CA4[]; +extern const u8 gUnknown_8457CF8[]; +extern const u8 gUnknown_8457D44[]; +extern const u8 gUnknown_8457DB8[]; +extern const u8 gUnknown_8457E0C[]; +extern const u8 gUnknown_8457E28[]; +extern const u8 gUnknown_8457E44[]; +extern const u8 gUnknown_8457E60[]; +extern const u8 *const gUnknown_8457F80[][2]; +extern const u8 gUnknown_8457F90[]; +extern const u8 *const gUnknown_84580F4[][4]; +extern const u8 *const gUnknown_8458230[][2][3]; +extern const u8 *const gUnknown_8458314[]; +extern const u8 *const gUnknown_84583B4[]; +extern const u8 *const gUnknown_845842C[]; +extern const u8 gUnknown_8458434[]; +extern const u8 gUnknown_845847C[]; +extern const u8 gUnknown_84584C0[]; +extern const u8 *const gUnknown_8458548[]; +extern const u8 *const gUnknown_84585E8[]; +extern const u8 *const gUnknown_8458758[2][4]; +extern const u8 *const gUnknown_84588BC[2][4]; +extern const u8 *const gUnknown_84589AC[2][2]; +extern const u8 *const gUnknown_8458A78[2][4]; +extern const u8 gUnknown_8458A98[]; +extern const u8 gUnknown_8458AB8[]; +extern const u8 gUnknown_8458B44[]; +extern const u8 gUnknown_8458CD4[]; +extern const u8 gUnknown_8458D1C[]; +extern const u8 gUnknown_8458D54[]; +extern const u8 gUnknown_8458D78[]; +extern const u8 gUnknown_8458D9C[]; +extern const u8 gUnknown_8458DBC[]; +extern const u8 gUnknown_8458DE8[]; +extern const u8 gUnknown_8458E10[]; +extern const u8 gUnknown_8458E70[]; +extern const u8 gUnknown_8458ED0[]; +extern const u8 gUnknown_8458F04[]; +extern const u8 gUnknown_8458F9C[]; +extern const u8 gUnknown_8458FBC[]; +extern const u8 gUnknown_8458FC8[]; +extern const u8 gUnknown_8458FE4[]; +extern const u8 gUnknown_84591DC[]; +extern const u8 *const gUnknown_84591B8[]; +extern const u8 gUnknown_8459238[]; +extern const u8 gUnknown_8459250[]; +extern const u8 gUnknown_845928C[]; +extern const u8 *const gUnknown_845933C[]; +extern const u8 gUnknown_8459378[]; +extern const u8 *const gUnknown_84594B0[]; +extern const u8 gUnknown_84594C4[]; +extern const u8 gUnknown_8459504[]; +extern const u8 *const gUnknown_8459580[]; +extern const u8 gUnknown_8459588[]; + +#undef _8456CD8 diff --git a/src/union_room.c b/src/union_room.c index 73e146a4d..32635debd 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -31,6 +31,7 @@ #include "script.h" #include "script_pokemon_util.h" #include "start_menu.h" +#include "strings.h" #include "task.h" #include "trade.h" #include "trade_scene.h" @@ -61,13 +62,14 @@ static struct UnkStruct_URoom * sURoom; void sub_8115A68(u8 taskId); void sub_81161E4(struct UnkStruct_Leader * leader); bool8 sub_8116444(struct UnkStruct_Leader * leader, u32 a1, u32 a2); -void sub_81164C8(u8 arg0, s32 id, u8 arg2); +void sub_81164C8(u8 windowId, s32 itemId, u8 y); u8 sub_8116524(struct UnkStruct_Main0 * a0); u8 sub_81165E8(struct UnkStruct_Main0 * a0); void sub_8116738(u8 taskId); u32 sub_8116D10(struct UnkStruct_Group * group, s32 id); void sub_8116D60(struct UnkStruct_Group * group, s32 id); void sub_8116E1C(u8 taskId); +void sub_8116F94(u8 windowId, s32 itemId, u8 y); u8 sub_8116FE4(void); void sub_8117990(void); void sub_81179A4(void); @@ -99,12 +101,14 @@ bool8 sub_811A694(struct UnkStruct_Shared * arg0, const struct UnkStruct_Shared bool32 sub_811A6DC(struct UnkStruct_Shared * arg0, struct UnkStruct_Shared * arg1); u32 sub_811A748(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1); u8 sub_811A798(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1, u8 arg2); -void sub_811A81C(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 * arg3, u8 arg4, u8 id); +void sub_811A81C(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * arg3, u8 arg4, u8 id); void sub_811A910(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 * arg3, u8 arg4, u8 id); bool32 sub_811A9B8(void); u32 sub_811A9FC(s32 a0); u32 sub_811AA24(struct UnkStruct_x20 * unkX20); s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender); +void nullsub_92(u8 windowId, s32 itemId, u8 y); +void sub_811ACA4(u8 windowId, s32 itemId, u8 y); s32 sub_811AD7C(struct UnkStruct_x20 * arg, s32 arg1); s32 sub_811ADC4(s32 a0, struct UnkStruct_Main0 * a1); s32 sub_811ADD0(u32 type, u32 species); @@ -125,233 +129,16 @@ void sub_811B31C(u8 *dest, struct UnkStruct_URoom * uRoom, bool8 gender); u8 sub_811B754(struct UnkStruct_8019BA8 * ptr); void sub_811BA78(void); -extern const u8 gUnknown_84571AC[]; -extern const u8 gUnknown_8459394[]; -extern const u8 gUnknown_84593A4[]; -extern const u8 gUnknown_84593B4[]; -extern const u8 gUnknown_84593C4[]; -extern const u8 gUnknown_84593D4[]; -extern const u8 gUnknown_84593E4[]; -extern const u8 gUnknown_84593F4[]; -extern const u8 gUnknown_84593DC[]; -extern const u8 gUnknown_8459400[]; -extern const u8 gUnknown_8459410[]; -extern const u8 gUnknown_845941C[]; -extern const u8 gUnknown_845942C[]; -extern const u8 gUnknown_8459434[]; -extern const u8 gUnknown_8459440[]; - -static const u8 *const gUnknown_8456C74[] = { - gUnknown_84571AC, - gUnknown_8459394, - gUnknown_84593A4, - gUnknown_84593B4, - gUnknown_84593C4, - gUnknown_84593D4, - gUnknown_84593E4, - gUnknown_84593F4, - gUnknown_84593DC, - gUnknown_8459400, - gUnknown_8459410, - gUnknown_845941C, - gUnknown_845942C, - gUnknown_8459434, - gUnknown_8459440, - gUnknown_84571AC, - gUnknown_84571AC, - gUnknown_84571AC, - gUnknown_84571AC, - gUnknown_84571AC, - gUnknown_84571AC, - gUnknown_84593E4, - gUnknown_84593F4 -}; - -static const struct WindowTemplate gUnknown_8456CD0 = { - .bg = 0, - .tilemapLeft = 0, - .tilemapTop = 0, - .width = 30, - .height = 2, - .paletteNum = 0xF, - .baseBlock = 0x008 -}; - -#define _8456CD8(a, b) ((a) | ((b) << 8)) - -static const u32 gUnknown_8456CD8[] = { - _8456CD8( 1, 2), - _8456CD8( 2, 2), - _8456CD8( 3, 4), - _8456CD8( 4, 2), - _8456CD8( 9, 37), - _8456CD8(10, 37), - _8456CD8(11, 53), - _8456CD8(13, 53), - _8456CD8(14, 53) -}; - -#undef _8456CD8 - -static const struct WindowTemplate gUnknown_8456CFC = { - .bg = 0, - .tilemapLeft = 1, - .tilemapTop = 3, - .width = 13, - .height = 10, - .paletteNum = 15, - .baseBlock = 0x044 -}; - -static const struct WindowTemplate gUnknown_8456D04 = { - .bg = 0, - .tilemapLeft = 16, - .tilemapTop = 3, - .width = 7, - .height = 4, - .paletteNum = 15, - .baseBlock = 0x0C6 -}; - -const struct ListMenuItem gUnknown_8456D0C[] = { - {gUnknown_84571AC, 0}, - {gUnknown_84571AC, 1}, - {gUnknown_84571AC, 2}, - {gUnknown_84571AC, 3}, - {gUnknown_84571AC, 4} -}; - -static const struct ListMenuTemplate gUnknown_8456D34 = { - .items = gUnknown_8456D0C, - .moveCursorFunc = NULL, - .itemPrintFunc = sub_81164C8, - .totalItems = 5, - .maxShowed = 5, - .windowId = 0, - .header_X = 0, - .item_X = 1, - .cursor_X = 0, - .upText_Y = 0, - .cursorPal = 2, - .fillValue = 1, - .cursorShadowPal = 3, - .lettersSpacing = 0, - .itemVerticalPadding = 2, - .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, - .fontId = 2, - .cursorKind = 1 -}; - -extern const struct WindowTemplate gUnknown_8456D4C; -extern const struct WindowTemplate gUnknown_8456D54; -extern const struct ListMenuTemplate gUnknown_8456DDC; -extern const struct WindowTemplate gUnknown_8456DF4; -extern const struct ListMenuTemplate gUnknown_8456E1C; -extern const struct WindowTemplate gUnknown_8456E34; -extern const struct ListMenuTemplate gUnknown_8456E54; -extern const struct WindowTemplate gUnknown_8456E6C; -extern const struct ListMenuTemplate gUnknown_8456F04; -extern const struct WindowTemplate gUnknown_8456F1C; -extern const struct WindowTemplate gUnknown_8456F24; -extern const struct ListMenuTemplate gUnknown_8456F7C; -extern const struct UnkStruct_Shared gUnknown_8457034; -extern const u8 *const gUnknown_8457094[13]; -extern const u8 gUnknown_84570C8[]; -extern const u8 gUnknown_84571B0[]; -extern const u8 gUnknown_84571B4[]; -extern const u8 gUnknown_84571B8[]; -extern const u8 gUnknown_84571E0[]; -extern const u8 gUnknown_8457234[]; -extern const u8 gUnknown_8457264[]; -extern const u8 *const gUnknown_845742C[][5]; -extern const u8 gUnknown_845747C[]; -extern const u8 gUnknown_84574A0[]; -extern const u8 gUnknown_84574C4[]; -extern const u8 gUnknown_84574EC[]; -extern const u8 gUnknown_8457514[]; -extern const u8 gUnknown_8457530[]; -extern const u8 gUnknown_8457554[]; -extern const u8 *const gUnknown_8457608[]; -extern const u8 gUnknown_8457610[]; -extern const u8 *const gUnknown_845767C[]; -extern const u8 gUnknown_84576AC[]; -extern const u8 gUnknown_84576C4[]; -extern const u8 gUnknown_8457700[]; -extern const u8 gUnknown_845771C[]; -extern const u8 *const gUnknown_8457754[]; -extern const u8 gUnknown_845777C[]; -extern const u8 gUnknown_84577BC[]; -extern const u8 gUnknown_84577F8[]; -extern const u8 *const gUnknown_8457838[]; -extern const u8 gUnknown_84578BC[]; -extern const u8 *const gUnknown_8457A34[]; -extern const u8 *const gUnknown_8457B04[][2]; -extern const u8 *const gUnknown_8457BCC[]; -extern const u8 *const gUnknown_8457C20[]; -extern const u8 gUnknown_8457C48[]; -extern const u8 gUnknown_8457CA4[]; -extern const u8 gUnknown_8457CF8[]; -extern const u8 gUnknown_8457D44[]; -extern const u8 gUnknown_8457DB8[]; -extern const u8 gUnknown_8457E0C[]; -extern const u8 gUnknown_8457E28[]; -extern const u8 gUnknown_8457E44[]; -extern const u8 gUnknown_8457E60[]; -extern const u8 *const gUnknown_8457F80[][2]; -extern const u8 gUnknown_8457F90[]; -extern const u8 *const gUnknown_84580F4[][4]; -extern const u8 *const gUnknown_8458230[][2][3]; -extern const u8 *const gUnknown_8458314[]; -extern const u8 *const gUnknown_84583B4[]; -extern const u8 *const gUnknown_845842C[]; -extern const u8 gUnknown_8458434[]; -extern const u8 gUnknown_845847C[]; -extern const u8 gUnknown_84584C0[]; -extern const u8 *const gUnknown_8458548[]; -extern const u8 *const gUnknown_84585E8[]; -extern const u8 *const gUnknown_8458758[2][4]; -extern const u8 *const gUnknown_84588BC[2][4]; -extern const u8 *const gUnknown_84589AC[2][2]; -extern const u8 *const gUnknown_8458A78[2][4]; -extern const u8 gUnknown_8458A98[]; -extern const u8 gUnknown_8458AB8[]; -extern const u8 gUnknown_8458B44[]; -extern const u8 gUnknown_8458CD4[]; -extern const u8 gUnknown_8458D1C[]; -extern const u8 gUnknown_8458D54[]; -extern const u8 gUnknown_8458D78[]; -extern const u8 gUnknown_8458D9C[]; -extern const u8 gUnknown_8458DBC[]; -extern const u8 gUnknown_8458DE8[]; -extern const u8 gUnknown_8458E10[]; -extern const u8 gUnknown_8458E70[]; -extern const u8 gUnknown_8458ED0[]; -extern const u8 gUnknown_8458F04[]; -extern const u8 gUnknown_8458F9C[]; -extern const u8 gUnknown_8458FBC[]; -extern const u8 gUnknown_8458FC8[]; -extern const u8 gUnknown_8458FE4[]; -extern const u8 gUnknown_84591DC[]; -extern const u8 *const gUnknown_84591B8[]; -extern const u8 gUnknown_8459238[]; -extern const u8 gUnknown_8459250[]; -extern const u8 gUnknown_845928C[]; -extern const u8 *const gUnknown_845933C[]; -extern const u8 gUnknown_8459378[]; -extern const u8 *const gUnknown_84594B0[]; -extern const u8 gUnknown_84594C4[]; -extern const u8 gUnknown_8459504[]; -extern const u8 *const gUnknown_8459580[]; -extern const u8 gUnknown_8459588[]; +#include "data/union_room.h" // These are functions in Emmerald but inlined in FireRed -#define sub_8018404(dest, arg1) ({ \ +#define IntlConvPartnerUname7(dest, arg1) ({ \ StringCopy7(dest, (arg1).unk.playerName); \ ConvertInternationalString(dest, (arg1).unk.field_0.unk_00.unk_00_0); \ }) -#define sub_8018404_2(dest, arg1) ({ \ +#define IntlConvPartnerUname(dest, arg1) ({ \ StringCopy(dest, (arg1).unk.playerName); \ ConvertInternationalString(dest, (arg1).unk.field_0.unk_00.unk_00_0); \ }) @@ -590,7 +377,7 @@ void sub_8115A68(u8 taskId) } else { - sub_8018404(gStringVar1, data->field_0->arr[data->field_13 - 1]); + IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_13 - 1]); StringExpandPlaceholders(gStringVar4, gUnknown_8457554); data->state = 13; } @@ -828,7 +615,7 @@ bool8 sub_8116444(struct UnkStruct_Leader * data, u32 arg1, u32 arg2) case 1: PlaySE(SE_PC_LOGIN); RedrawListMenu(data->listTaskId); - sub_8018404(gStringVar2, data->field_0->arr[data->field_13]); + IntlConvPartnerUname7(gStringVar2, data->field_0->arr[data->field_13]); sub_8116244(gStringVar4, gUnknown_203B058); data->state = arg1; break; @@ -842,15 +629,15 @@ bool8 sub_8116444(struct UnkStruct_Leader * data, u32 arg1, u32 arg2) return FALSE; } -void sub_81164C8(u8 arg0, s32 id, u8 arg2) +void sub_81164C8(u8 windowId, s32 itemId, u8 y) { struct UnkStruct_Leader * data = sUnionRoomMain.leader; u8 var = 0; - switch (data->field_0->arr[id].field_1A_0) + switch (data->field_0->arr[itemId].field_1A_0) { case 1: - if (data->field_0->arr[id].field_1B != 0) + if (data->field_0->arr[itemId].field_1B != 0) var = 2; break; case 2: @@ -858,7 +645,7 @@ void sub_81164C8(u8 arg0, s32 id, u8 arg2) break; } - sub_811A910(arg0, 0, arg2, &data->field_0->arr[id], var, id); + sub_811A910(windowId, 0, y, &data->field_0->arr[itemId], var, itemId); } u8 sub_8116524(struct UnkStruct_Main0 * arg0) @@ -1059,7 +846,7 @@ void sub_8116738(u8 taskId) sub_811631C(gStringVar4, gUnknown_203B058); if (PrintOnTextbox(&data->textState, gStringVar4)) { - sub_8018404(gStringVar1, data->field_0->arr[data->field_F]); + IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_F]); data->state = 6; } break; @@ -1228,7 +1015,7 @@ void sub_8116D60(struct UnkStruct_Group * data, s32 id) LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); RedrawListMenu(data->listTaskId); - sub_8018404(gStringVar1, data->field_0->arr[data->field_F]); + IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_F]); sub_80FB008(gUnknown_84570C8[gSpecialVar_0x8004], 0, 1); sub_80FBF54(data->field_0->arr[data->field_F].unk.playerName, ReadAsU16(data->field_0->arr[data->field_F].unk.field_0.unk_00.playerTrainerId)); } @@ -1327,12 +1114,12 @@ u8 sub_8116F5C(struct UnkStruct_Group * data, u32 id) return 0; } -void sub_8116F94(u8 arg0, s32 id, u8 arg2) +void sub_8116F94(u8 windowId, s32 itemId, u8 y) { struct UnkStruct_Group * data = sUnionRoomMain.group; - u8 var = sub_8116F5C(data, id); + u8 var = sub_8116F5C(data, itemId); - sub_811A81C(arg0, 8, arg2, &data->field_0->arr[id], var, id); + sub_811A81C(windowId, 8, y, &data->field_0->arr[itemId], var, itemId); } u8 sub_8116FE4(void) @@ -1827,7 +1614,7 @@ void sub_8117A0C(u8 taskId) data->field_0->arr[data->field_13].field_1B = 0; RedrawListMenu(data->listTaskId); data->field_13++; - sub_8018404(gStringVar1, data->field_0->arr[data->field_13 - 1]); + IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_13 - 1]); StringExpandPlaceholders(gStringVar4, gUnknown_8457554); data->state = 9; sub_80F8F5C(); @@ -2005,7 +1792,7 @@ void sub_8117F20(u8 taskId) LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); RedrawListMenu(data->listTaskId); - sub_8018404_2(gStringVar1, data->field_0->arr[data->field_F]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]); sub_80FBF54(data->field_0->arr[data->field_F].unk.playerName, ReadAsU16(data->field_0->arr[data->field_F].unk.field_0.unk_00.playerTrainerId)); PlaySE(SE_PN_ON); data->state = 4; @@ -2024,7 +1811,7 @@ void sub_8117F20(u8 taskId) break; case 4: AddTextPrinterToWindow1(gUnknown_8459238); - sub_8018404_2(gStringVar1, data->field_0->arr[data->field_F]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]); data->state = 5; break; case 5: @@ -2189,7 +1976,7 @@ void sub_81182DC(u8 taskId) break; case 4: AddTextPrinterToWindow1(gUnknown_845928C); - sub_8018404_2(gStringVar1, data->field_0->arr[data->field_F]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]); data->state = 5; break; case 5: @@ -3005,17 +2792,17 @@ void sub_81186E0(u8 taskId) switch (sub_811ADD0(data->field_0->arr[var5].unk.field_0.type, data->field_0->arr[var5].unk.field_0.species)) { case 0: - sub_8018404_2(gStringVar1, data->field_0->arr[var5]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]); sub_8118664(49, gUnknown_8458E70); taskData[1] = var5; break; case 1: - sub_8018404_2(gStringVar1, data->field_0->arr[var5]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]); StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].unk.field_0.type]); sub_8118664(46, gUnknown_8458ED0); break; case 2: - sub_8018404_2(gStringVar1, data->field_0->arr[var5]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]); StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].unk.field_0.type]); sub_8118664(46, gUnknown_8458F04); break; @@ -3053,7 +2840,7 @@ void sub_81186E0(u8 taskId) case 51: gUnknown_203B058 = 0x44; sub_80FC114(data->field_0->arr[taskData[1]].unk.playerName, &data->field_0->arr[taskData[1]].unk.field_0, 0x44); - sub_8018404_2(gStringVar1, data->field_0->arr[taskData[1]]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[taskData[1]]); sub_811A0B4(gUnknown_8457A34[2]); data->state = 25; break; @@ -3177,7 +2964,7 @@ void sub_81199FC(u8 taskId) { if (structPtr->field_0->arr[i].field_1A_0 == 1) { - sub_8018404_2(text, structPtr->field_0->arr[i]); + IntlConvPartnerUname(text, structPtr->field_0->arr[i]); if (sub_80FD338(ReadAsU16(structPtr->field_0->arr[i].unk.field_0.unk_00.playerTrainerId), text)) { StringCopy(sUnionRoomPlayerName, text); @@ -3832,7 +3619,7 @@ void sub_811A81C(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, r2 = arg3->unk.field_0.unk_0a_0; if (arg3->field_1A_0 == 1 && !(r2 & 0x40)) { - sub_8018404_2(sp10, *arg3); + IntlConvPartnerUname(sp10, *arg3); sub_811A444(arg0, 2, sp10, arg1, arg2, arg4); ConvertIntToDecimalStringN(sp0, arg3->unk.field_0.unk_00.playerTrainerId[0] | (arg3->unk.field_0.unk_00.playerTrainerId[1] << 8), STR_CONV_MODE_LEADING_ZEROS, 5); StringCopy(gStringVar4, gUnknown_84571B4); @@ -3842,20 +3629,20 @@ void sub_811A81C(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, } } -void sub_811A910(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id) +void sub_811A910(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 *arg3, u8 arg4, u8 id) { u8 sp0[6]; u8 sp10[30]; if (arg3->field_1A_0 == 1) { - sub_8018404_2(sp10, *arg3); - sub_811A444(arg0, 2, sp10, arg1, arg2, arg4); + IntlConvPartnerUname(sp10, *arg3); + sub_811A444(windowId, 2, sp10, x, y, arg4); ConvertIntToDecimalStringN(sp0, arg3->unk.field_0.unk_00.playerTrainerId[0] | (arg3->unk.field_0.unk_00.playerTrainerId[1] << 8), STR_CONV_MODE_LEADING_ZEROS, 5); StringCopy(gStringVar4, gUnknown_84571B4); StringAppend(gStringVar4, sp0); - arg1 += 71; - sub_811A444(arg0, 0, gStringVar4, arg1, arg2, arg4); + x += 71; + sub_811A444(windowId, 0, gStringVar4, x, y, arg4); } } @@ -3898,7 +3685,7 @@ u32 sub_811A9FC(s32 arg0) u32 sub_811AA24(struct UnkStruct_x20 *arg0) { u8 sp0[30]; - sub_8018404_2(sp0, *arg0); + IntlConvPartnerUname(sp0, *arg0); return sub_80FD338(ReadAsU16(arg0->unk.field_0.unk_00.playerTrainerId), sp0); } @@ -3910,7 +3697,7 @@ s32 sub_811AA5C(struct UnkStruct_Main0 *arg0, u8 arg1, u8 arg2, u32 playerGender if (!r5->unk.field_0.unk_0a_7 && arg1 == 0) { - sub_8018404_2(gStringVar1, *r5); + IntlConvPartnerUname(gStringVar1, *r5); r2 = sub_80FD338(ReadAsU16(r5->unk.field_0.unk_00.playerTrainerId), gStringVar1); if (r5->unk.field_0.unk_0a_0 == 0x45) { @@ -3925,7 +3712,7 @@ s32 sub_811AA5C(struct UnkStruct_Main0 *arg0, u8 arg1, u8 arg2, u32 playerGender } else { - sub_8018404_2(gStringVar1, *r5); + IntlConvPartnerUname(gStringVar1, *r5); if (arg1 != 0) { playerGender = (r5->unk.field_0.unk_00.playerTrainerId[arg1 + 1] >> 3) & 1; @@ -3957,24 +3744,24 @@ void nullsub_92(u8 windowId, s32 itemId, u8 y) } -void sub_811ABE4(u8 arg0, u8 arg1, struct GFtgtGname * arg2, const u8 * str, u8 arg4) +void sub_811ABE4(u8 windowId, u8 y, struct GFtgtGname * gname, const u8 * uname, u8 colorIdx) { - u8 sp8[4]; - u16 r8 = arg2->species; - u8 r7 = arg2->type; - u8 r9 = arg2->level; + u8 level_t[4]; + u16 species = gname->species; + u8 type = gname->type; + u8 level = gname->level; - sub_811A444(arg0, 2, str, 8, arg1, arg4); - if (r8 == SPECIES_EGG) + sub_811A444(windowId, 2, uname, 8, y, colorIdx); + if (species == SPECIES_EGG) { - sub_811A444(arg0, 2, gUnknown_8458FBC, 0x44, arg1, arg4); + sub_811A444(windowId, 2, gUnknown_8458FBC, 0x44, y, colorIdx); } else { - BlitMoveInfoIcon(arg0, r7 + 1, 0x44, arg1); - sub_811A444(arg0, 2, gSpeciesNames[r8], 0x76, arg1, arg4); - ConvertIntToDecimalStringN(sp8, r9, STR_CONV_MODE_LEFT_ALIGN, 3); - sub_811A444(arg0, 2, sp8, GetStringRightAlignXOffset(2, sp8, 218), arg1, arg4); + BlitMoveInfoIcon(windowId, type + 1, 0x44, y); + sub_811A444(windowId, 2, gSpeciesNames[species], 0x76, y, colorIdx); + ConvertIntToDecimalStringN(level_t, level, STR_CONV_MODE_LEFT_ALIGN, 3); + sub_811A444(windowId, 2, level_t, GetStringRightAlignXOffset(2, level_t, 218), y, colorIdx); } } @@ -3983,7 +3770,7 @@ void sub_811ACA4(u8 windowId, s32 itemId, u8 y) struct UnkStruct_Leader *leader = sUnionRoomMain.leader; struct GFtgtGname *rfu; s32 i, j; - u8 sp4[8]; + u8 uname[8]; if (itemId == -3 && y == gUnknown_8456F7C.upText_Y) { @@ -4004,8 +3791,8 @@ void sub_811ACA4(u8 windowId, s32 itemId, u8 y) } if (j == itemId + 1) { - sub_8018404_2(sp4, leader->field_0->arr[i]); - sub_811ABE4(windowId, y, &leader->field_0->arr[i].unk.field_0, sp4, 6); + IntlConvPartnerUname(uname, leader->field_0->arr[i]); + sub_811ABE4(windowId, y, &leader->field_0->arr[i].unk.field_0, uname, 6); break; } } |