diff options
Diffstat (limited to 'src/field/decoration.c')
-rw-r--r-- | src/field/decoration.c | 4283 |
1 files changed, 0 insertions, 4283 deletions
diff --git a/src/field/decoration.c b/src/field/decoration.c deleted file mode 100644 index 0e7fa5f41..000000000 --- a/src/field/decoration.c +++ /dev/null @@ -1,4283 +0,0 @@ -#include "global.h" -#include "constants/decorations.h" -#include "main.h" -#include "constants/map_objects.h" -#include "overworld.h" -#include "sound.h" -#include "constants/songs.h" -#include "string_util.h" -#include "menu.h" -#include "menu_helpers.h" -#include "strings.h" -#include "script.h" -#include "palette.h" -#include "field_player_avatar.h" -#include "field_camera.h" -#include "field_fadetransition.h" -#include "fieldmap.h" -#include "metatile_behavior.h" -#include "event_data.h" -#include "field_weather.h" -#include "decoration.h" -#include "shop.h" -#include "ewram.h" - -EWRAM_DATA u8 *gUnknown_020388D0 = NULL; -EWRAM_DATA u8 gUnknown_020388D4 = 0; -EWRAM_DATA u8 gUnknown_020388D5 = 0; -EWRAM_DATA u8 gUnknown_020388D6[16] = {0}; -EWRAM_DATA u8 gUnknown_020388E6[12] = {0}; -EWRAM_DATA u8 gUnknown_020388F2 = 0; -EWRAM_DATA u8 gUnknown_020388F3 = 0; -EWRAM_DATA u8 gUnknown_020388F4 = 0; -EWRAM_DATA u8 gUnknown_020388F5 = 0; -EWRAM_DATA u8 gUnknown_020388F6 = 0; -EWRAM_DATA u8 gUnknown_020388F7[8] = {0}; -EWRAM_DATA struct UnkStruct_02038900 gUnknown_02038900 = {0}; -EWRAM_DATA u16 gUnknown_020391A4 = 0; -EWRAM_DATA u16 gUnknown_020391A6 = 0; -EWRAM_DATA u8 gUnknown_020391A8 = 0; -EWRAM_DATA u8 gUnknown_020391A9 = 0; -EWRAM_DATA u8 gUnknown_020391AA = 0; -EWRAM_DATA struct OamData gUnknown_020391AC = {0}; -EWRAM_DATA struct UnkStruct_020391B4 gUnknown_020391B4[16] = {0}; -EWRAM_DATA u8 gUnknown_02039234 = 0; - -#if ENGLISH -const u8 DecorDesc_SMALL_DESK[] = _( - "A small desk built\n" - "for one."); - -const u8 DecorDesc_POKEMON_DESK[] = _( - "A small desk built in\n" - "the shape of a POKé\n" - "BALL."); - -const u8 DecorDesc_HEAVY_DESK[] = _( - "A large desk made\n" - "of steel. Put some\n" - "decorations on it."); - -const u8 DecorDesc_RAGGED_DESK[] = _( - "A large desk made\n" - "of wood. Put some\n" - "decorations on it."); - -const u8 DecorDesc_COMFORT_DESK[] = _( - "A large desk made\n" - "of leaves. Put some\n" - "decorations on it."); - -const u8 DecorDesc_PRETTY_DESK[] = _( - "A huge desk made\n" - "of glass. Holds lots\n" - "of decorations."); - -const u8 DecorDesc_BRICK_DESK[] = _( - "A huge desk made\n" - "of brick. Holds lots\n" - "of decorations."); - -const u8 DecorDesc_CAMP_DESK[] = _( - "A huge desk made\n" - "of logs. Put lots of\n" - "decorations on it."); - -const u8 DecorDesc_HARD_DESK[] = _( - "A huge desk made\n" - "of rocks. Holds\n" - "many decorations."); - -const u8 DecorDesc_SMALL_CHAIR[] = _( - "A small chair made\n" - "for one."); - -const u8 DecorDesc_POKEMON_CHAIR[] = _( - "A small chair built\n" - "in the shape of a\n" - "POKé BALL."); - -const u8 DecorDesc_HEAVY_CHAIR[] = _( - "A small chair made\n" - "of steel."); - -const u8 DecorDesc_PRETTY_CHAIR[] = _( - "A small chair made\n" - "of glass."); - -const u8 DecorDesc_COMFORT_CHAIR[] = _( - "A small chair made\n" - "of leaves."); - -const u8 DecorDesc_RAGGED_CHAIR[] = _( - "A small chair made\n" - "of wood."); - -const u8 DecorDesc_BRICK_CHAIR[] = _( - "A small chair made\n" - "of brick."); - -const u8 DecorDesc_CAMP_CHAIR[] = _( - "A small chair made\n" - "of logs."); - -const u8 DecorDesc_HARD_CHAIR[] = _( - "A small chair made\n" - "of rock."); - -const u8 DecorDesc_RED_PLANT[] = _( - "A vivid red potted\n" - "plant."); - -const u8 DecorDesc_TROPICAL_PLANT[] = _( - "A flowering tropical\n" - "plant in a pot."); - -const u8 DecorDesc_PRETTY_FLOWERS[] = _( - "A pot of cute\n" - "flowers."); - -const u8 DecorDesc_COLORFUL_PLANT[] = _( - "A large pot with\n" - "many colorful\n" - "flowers."); - -const u8 DecorDesc_BIG_PLANT[] = _( - "A large, umbrella-\n" - "shaped plant in a\n" - "big pot."); - -const u8 DecorDesc_GORGEOUS_PLANT[] = _( - "A large, impressive\n" - "plant in a big pot."); - -const u8 DecorDesc_RED_BRICK[] = _( - "A red-colored brick.\n" - "Decorations can be\n" - "placed on top."); - -const u8 DecorDesc_YELLOW_BRICK[] = _( - "A yellow-colored\n" - "brick. Put some\n" - "decorations on top."); - -const u8 DecorDesc_BLUE_BRICK[] = _( - "A blue-colored\n" - "brick. Put some\n" - "decorations on top."); - -const u8 DecorDesc_RED_BALLOON[] = _( - "A red balloon filled\n" - "with water. Bursts\n" - "if stepped on."); - -const u8 DecorDesc_BLUE_BALLOON[] = _( - "A blue balloon filled\n" - "with water. Bursts\n" - "if stepped on."); - -const u8 DecorDesc_YELLOW_BALLOON[] = _( - "A yellow balloon\n" - "filled with water.\n" - "Pops if stepped on."); - -const u8 DecorDesc_RED_TENT[] = _( - "A large red tent.\n" - "You can hide inside\n" - "it."); - -const u8 DecorDesc_BLUE_TENT[] = _( - "A large blue tent.\n" - "You can hide inside\n" - "it."); - -const u8 DecorDesc_SOLID_BOARD[] = _( - "Place over a hole to\n" - "cross to the other\n" - "side."); - -const u8 DecorDesc_SLIDE[] = _( - "Use to slide down\n" - "from the platform."); - -const u8 DecorDesc_FENCE_LENGTH[] = _( - "A small fence that\n" - "blocks passage."); - -const u8 DecorDesc_FENCE_WIDTH[] = _( - "A small fence that\n" - "blocks passage."); - -const u8 DecorDesc_TIRE[] = _( - "An old large tire.\n" - "Decorations can be\n" - "placed on top."); - -const u8 DecorDesc_STAND[] = _( - "A large pedestal\n" - "with steps."); - -const u8 DecorDesc_MUD_BALL[] = _( - "A large ball of mud.\n" - "Crumbles if stepped\n" - "on."); - -const u8 DecorDesc_BREAKABLE_DOOR[] = _( - "A weird door that\n" - "people can walk\n" - "right through."); - -const u8 DecorDesc_SAND_ORNAMENT[] = _( - "An ornament made\n" - "of sand. Crumbles if\n" - "touched."); - -const u8 DecorDesc_SILVER_SHIELD[] = _( - "Awarded for 50\n" - "straight wins at\n" - "the BATTLE TOWER."); - -const u8 DecorDesc_GOLD_SHIELD[] = _( - "Awarded for 100\n" - "straight wins at\n" - "the BATTLE TOWER."); - -const u8 DecorDesc_GLASS_ORNAMENT[] = _( - "A glass replica of\n" - "a famous sculpture\n" - "at the ART MUSEUM."); - -const u8 DecorDesc_TV[] = _( - "A small, gray-\n" - "colored toy TV."); - -const u8 DecorDesc_ROUND_TV[] = _( - "A toy TV modeled\n" - "in the image of a\n" - "SEEDOT."); - -const u8 DecorDesc_CUTE_TV[] = _( - "A toy TV modeled\n" - "in the image of a\n" - "SKITTY."); - -const u8 DecorDesc_GLITTER_MAT[] = _( - "An odd mat that\n" - "glitters if stepped\n" - "on."); - -const u8 DecorDesc_JUMP_MAT[] = _( - "A trick mat that\n" - "jumps when it is\n" - "stepped on."); - -const u8 DecorDesc_SPIN_MAT[] = _( - "A trick mat that\n" - "spins around when\n" - "stepped on."); - -const u8 DecorDesc_C_LOW_NOTE_MAT[] = _( - "A mat that plays\n" - "a low C note when\n" - "stepped on."); - -const u8 DecorDesc_D_NOTE_MAT[] = _( - "A mat that plays\n" - "a D note when\n" - "stepped on."); - -const u8 DecorDesc_E_NOTE_MAT[] = _( - "A mat that plays\n" - "an E note when\n" - "stepped on."); - -const u8 DecorDesc_F_NOTE_MAT[] = _( - "A mat that plays\n" - "an F note when\n" - "stepped on."); - -const u8 DecorDesc_G_NOTE_MAT[] = _( - "A mat that plays\n" - "a G note when\n" - "stepped on."); - -const u8 DecorDesc_A_NOTE_MAT[] = _( - "A mat that plays\n" - "an A note when\n" - "stepped on."); - -const u8 DecorDesc_B_NOTE_MAT[] = _( - "A mat that plays\n" - "a B note when\n" - "stepped on."); - -const u8 DecorDesc_C_HIGH_NOTE_MAT[] = _( - "A mat that plays\n" - "a high C note when\n" - "stepped on."); - -const u8 DecorDesc_SURF_MAT[] = _( - "A mat designed with\n" - "a SURF image.\n" - "Put items on top."); - -const u8 DecorDesc_THUNDER_MAT[] = _( - "A mat designed with\n" - "a THUNDER image.\n" - "Put items on top."); - -const u8 DecorDesc_FIRE_BLAST_MAT[] = _( - "A mat designed with\n" - "a FIRE BLAST image.\n" - "Put items on top."); - -const u8 DecorDesc_POWDER_SNOW_MAT[] = _( - "A mat with a POWDER\n" - "SNOW image design.\n" - "Put items on top."); - -const u8 DecorDesc_ATTRACT_MAT[] = _( - "A mat designed with\n" - "an ATTRACT image.\n" - "Put items on top."); - -const u8 DecorDesc_FISSURE_MAT[] = _( - "A mat designed with\n" - "a FISSURE image.\n" - "Put items on top."); - -const u8 DecorDesc_SPIKES_MAT[] = _( - "A mat designed with\n" - "a SPIKES image.\n" - "Put items on top."); - -const u8 DecorDesc_BALL_POSTER[] = _( - "A small poster\n" - "printed with POKé\n" - "BALLS."); - -const u8 DecorDesc_GREEN_POSTER[] = _( - "A small poster with\n" - "a TREECKO print."); - -const u8 DecorDesc_RED_POSTER[] = _( - "A small poster with\n" - "a TORCHIC print."); - -const u8 DecorDesc_BLUE_POSTER[] = _( - "A small poster with\n" - "a MUDKIP print."); - -const u8 DecorDesc_CUTE_POSTER[] = _( - "A small poster with\n" - "an AZURILL print."); - -const u8 DecorDesc_PIKA_POSTER[] = _( - "A large poster with\n" - "a PIKACHU and\n" - "PICHU print."); - -const u8 DecorDesc_LONG_POSTER[] = _( - "A large poster with\n" - "a SEVIPER print."); - -const u8 DecorDesc_SEA_POSTER[] = _( - "A large poster with\n" - "a RELICANTH print."); - -const u8 DecorDesc_SKY_POSTER[] = _( - "A large poster with\n" - "a WINGULL print."); - -const u8 DecorDesc_KISS_POSTER[] = _( - "A large poster with\n" - "a SMOOCHUM print."); - -const u8 DecorDesc_PICHU_DOLL[] = _( - "A PICHU doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_PIKACHU_DOLL[] = _( - "A PIKACHU doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_MARILL_DOLL[] = _( - "A MARILL doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_TOGEPI_DOLL[] = _( -#if REVISION >= 1 - "A TOGEPI doll.\n" -#else - "A TOPGEPI doll.\n" -#endif - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_CYNDAQUIL_DOLL[] = _( - "A CYNDAQUIL doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_CHIKORITA_DOLL[] = _( - "A CHIKORITA doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_TOTODILE_DOLL[] = _( - "A TOTODILE doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_JIGGLYPUFF_DOLL[] = _( - "A JIGGLYPUFF doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_MEOWTH_DOLL[] = _( - "A MEOWTH doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_CLEFAIRY_DOLL[] = _( - "A CLEFAIRY doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_DITTO_DOLL[] = _( - "A DITTO doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_SMOOCHUM_DOLL[] = _( - "A SMOOCHUM doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_TREECKO_DOLL[] = _( - "A TREECKO doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_TORCHIC_DOLL[] = _( - "A TORCHIC doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_MUDKIP_DOLL[] = _( - "A MUDKIP doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_DUSKULL_DOLL[] = _( - "A DUSKULL doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_WYNAUT_DOLL[] = _( - "A WYNAUT doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_BALTOY_DOLL[] = _( - "A BALTOY doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_KECLEON_DOLL[] = _( - "A KECLEON doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_AZURILL_DOLL[] = _( - "An AZURILL doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_SKITTY_DOLL[] = _( - "A SKITTY doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_SWABLU_DOLL[] = _( - "A SWABLU doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_GULPIN_DOLL[] = _( - "A GULPIN doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_LOTAD_DOLL[] = _( - "A LOTAD doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_SEEDOT_DOLL[] = _( - "A SEEDOT doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_PIKA_CUSHION[] = _( - "A PIKACHU cushion.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_ROUND_CUSHION[] = _( - "A MARILL cushion.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_KISS_CUSHION[] = _( - "A SMOOCHUM\n" - "cushion. Place it on\n" - "a mat or a desk."); - -const u8 DecorDesc_ZIGZAG_CUSHION[] = _( - "A ZIGZAGOON\n" - "cushion. Place it on\n" - "a mat or a desk."); - -const u8 DecorDesc_SPIN_CUSHION[] = _( - "A SPINDA cushion.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_DIAMOND_CUSHION[] = _( - "A SABLEYE cushion.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_BALL_CUSHION[] = _( - "A BALL cushion.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_GRASS_CUSHION[] = _( - "A grass-mark\n" - "cushion. Place it on\n" - "a mat or a desk."); - -const u8 DecorDesc_FIRE_CUSHION[] = _( - "A fire-mark\n" - "cushion. Place it on\n" - "a mat or a desk."); - -const u8 DecorDesc_WATER_CUSHION[] = _( - "A water-mark\n" - "cushion. Place it on\n" - "a mat or a desk."); - -const u8 DecorDesc_SNORLAX_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_RHYDON_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_LAPRAS_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_VENUSAUR_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_CHARIZARD_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_BLASTOISE_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_WAILMER_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_REGIROCK_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_REGICE_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); - -const u8 DecorDesc_REGISTEEL_DOLL[] = _( - "A large doll.\n" - "Place it on a mat\n" - "or a desk."); -#elif GERMAN -#include "../data/decoration/descriptions_de.h" -#endif - -const u16 DecorGfx_SMALL_DESK[] = { - 0x87 -}; - -const u16 DecorGfx_POKEMON_DESK[] = { - 0x8F -}; - -const u16 DecorGfx_HEAVY_DESK[] = { - 0x90, - 0x91, - 0x92, - 0x98, - 0x99, - 0x9A -}; - -const u16 DecorGfx_RAGGED_DESK[] = { - 0x93, - 0x94, - 0x95, - 0x9B, - 0x9C, - 0x9D -}; - -const u16 DecorGfx_COMFORT_DESK[] = { - 0x96, - 0x97, - 0xA3, - 0x9E, - 0x9F, - 0xAB -}; - -const u16 DecorGfx_PRETTY_DESK[] = { - 0xBD, - 0xBE, - 0xBF, - 0xC5, - 0xC6, - 0xC7, - 0xCD, - 0xCE, - 0xCF -}; - -const u16 DecorGfx_BRICK_DESK[] = { - 0xA0, - 0xA1, - 0xA2, - 0xA8, - 0xA9, - 0xAA, - 0xB0, - 0xB1, - 0xB2 -}; - -const u16 DecorGfx_CAMP_DESK[] = { - 0xA4, - 0xA5, - 0xA6, - 0xAC, - 0xAD, - 0xAE, - 0xB4, - 0xB5, - 0xB6 -}; - -const u16 DecorGfx_HARD_DESK[] = { - 0xA7, - 0xBB, - 0xBC, - 0xAF, - 0xC3, - 0xC4, - 0xB7, - 0xCB, - 0xCC -}; - -const u16 DecorGfx_SMALL_CHAIR[] = { - 0xB8 -}; - -const u16 DecorGfx_POKEMON_CHAIR[] = { - 0xB9 -}; - -const u16 DecorGfx_HEAVY_CHAIR[] = { - 0xBA -}; - -const u16 DecorGfx_PRETTY_CHAIR[] = { - 0xC0 -}; - -const u16 DecorGfx_COMFORT_CHAIR[] = { - 0xC1 -}; - -const u16 DecorGfx_RAGGED_CHAIR[] = { - 0xC2 -}; - -const u16 DecorGfx_BRICK_CHAIR[] = { - 0xC8 -}; - -const u16 DecorGfx_CAMP_CHAIR[] = { - 0xC9 -}; - -const u16 DecorGfx_HARD_CHAIR[] = { - 0xCA -}; - -const u16 DecorGfx_RED_PLANT[] = { - 0xD0, - 0xD8 -}; - -const u16 DecorGfx_TROPICAL_PLANT[] = { - 0xD2, - 0xDA -}; - -const u16 DecorGfx_PRETTY_FLOWERS[] = { - 0xD4, - 0xDC -}; - -const u16 DecorGfx_COLORFUL_PLANT[] = { - 0xE0, - 0xE2, - 0xE8, - 0xE9 -}; - -const u16 DecorGfx_BIG_PLANT[] = { - 0xE4, - 0xE6, - 0xEC, - 0xED -}; - -const u16 DecorGfx_GORGEOUS_PLANT[] = { - 0xF0, - 0xF2, - 0xF8, - 0xF9 -}; - -const u16 DecorGfx_RED_BRICK[] = { - 0x25, - 0x2D -}; - -const u16 DecorGfx_YELLOW_BRICK[] = { - 0x26, - 0x2E -}; - -const u16 DecorGfx_BLUE_BRICK[] = { - 0x27, - 0x2F -}; - -const u16 DecorGfx_RED_BALLOON[] = { - 0x138 -}; - -const u16 DecorGfx_BLUE_BALLOON[] = { - 0x13C -}; - -const u16 DecorGfx_YELLOW_BALLOON[] = { - 0x140 -}; - -const u16 DecorGfx_RED_TENT[] = { - 0x30, - 0x31, - 0x32, - 0x38, - 0x39, - 0x3A, - 0x40, - 0x41, - 0x3B -}; - -const u16 DecorGfx_BLUE_TENT[] = { - 0x48, - 0x49, - 0x68, - 0x50, - 0x51, - 0x70, - 0x58, - 0x59, - 0x69 -}; - -const u16 DecorGfx_SOLID_BOARD[] = { - 0x34, - 0x3C -}; - -const u16 DecorGfx_SLIDE[] = { - 0x35, - 0x36, - 0x3D, - 0x3E, - 0x63, - 0x64, - 0x6F, - 0x77 -}; - -const u16 DecorGfx_FENCE_LENGTH[] = { - 0x33 -}; - -const u16 DecorGfx_FENCE_WIDTH[] = { - 0x2C -}; - -const u16 DecorGfx_TIRE[] = { - 0x80, - 0x81, - 0x88, - 0x89 -}; - -const u16 DecorGfx_STAND[] = { - 0x6A, - 0x6B, - 0x6C, - 0x6D, - 0x72, - 0x73, - 0x74, - 0x75 -}; - -const u16 DecorGfx_MUD_BALL[] = { - 0x28 -}; - -const u16 DecorGfx_BREAKABLE_DOOR[] = { - 0x37, - 0x3F -}; - -const u16 DecorGfx_SAND_ORNAMENT[] = { - 0x85, - 0x8D -}; - -const u16 DecorGfx_SILVER_SHIELD[] = { - 0xD6, - 0xDE -}; - -const u16 DecorGfx_GOLD_SHIELD[] = { - 0x12E, - 0x136 -}; - -const u16 DecorGfx_GLASS_ORNAMENT[] = { - 0x82, - 0x8A -}; - -const u16 DecorGfx_TV[] = { - 0xF4 -}; - -const u16 DecorGfx_ROUND_TV[] = { - 0xF5 -}; - -const u16 DecorGfx_CUTE_TV[] = { - 0xF6 -}; - -const u16 DecorGfx_GLITTER_MAT[] = { - 0x60 -}; - -const u16 DecorGfx_JUMP_MAT[] = { - 0x61 -}; - -const u16 DecorGfx_SPIN_MAT[] = { - 0x62 -}; - -const u16 DecorGfx_C_LOW_NOTE_MAT[] = { - 0x78 -}; - -const u16 DecorGfx_D_NOTE_MAT[] = { - 0x79 -}; - -const u16 DecorGfx_E_NOTE_MAT[] = { - 0x7A -}; - -const u16 DecorGfx_F_NOTE_MAT[] = { - 0x7B -}; - -const u16 DecorGfx_G_NOTE_MAT[] = { - 0x7C -}; - -const u16 DecorGfx_A_NOTE_MAT[] = { - 0x7D -}; - -const u16 DecorGfx_B_NOTE_MAT[] = { - 0x7E -}; - -const u16 DecorGfx_C_HIGH_NOTE_MAT[] = { - 0xB3 -}; - -const u16 DecorGfx_SURF_MAT[] = { - 0x42, - 0x43, - 0x44, - 0x4A, - 0x4B, - 0x4C, - 0x52, - 0x53, - 0x54 -}; - -const u16 DecorGfx_THUNDER_MAT[] = { - 0x45, - 0x46, - 0x47, - 0x4D, - 0x4E, - 0x4F, - 0x55, - 0x56, - 0x57 -}; - -const u16 DecorGfx_FIRE_BLAST_MAT[] = { - 0x5A, - 0x5B, - 0x5C, - 0x5D, - 0x5E, - 0x5F, - 0x65, - 0x66, - 0x67 -}; - -const u16 DecorGfx_POWDER_SNOW_MAT[] = { - 0x100, - 0x101, - 0x102, - 0x108, - 0x109, - 0x10A, - 0x110, - 0x111, - 0x112 -}; - -const u16 DecorGfx_ATTRACT_MAT[] = { - 0x103, - 0x104, - 0x105, - 0x10B, - 0x10C, - 0x10D, - 0x113, - 0x114, - 0x115 -}; - -const u16 DecorGfx_FISSURE_MAT[] = { - 0x106, - 0x107, - 0x118, - 0x10E, - 0x10F, - 0x120, - 0x116, - 0x117, - 0x128 -}; - -const u16 DecorGfx_SPIKES_MAT[] = { - 0x119, - 0x11A, - 0x11B, - 0x121, - 0x122, - 0x123, - 0x129, - 0x12A, - 0x12B -}; - -const u16 DecorGfx_BALL_POSTER[] = { - 0x130 -}; - -const u16 DecorGfx_GREEN_POSTER[] = { - 0x131 -}; - -const u16 DecorGfx_RED_POSTER[] = { - 0x132 -}; - -const u16 DecorGfx_BLUE_POSTER[] = { - 0x133 -}; - -const u16 DecorGfx_CUTE_POSTER[] = { - 0x134 -}; - -const u16 DecorGfx_PIKA_POSTER[] = { - 0x11C, - 0x11D -}; - -const u16 DecorGfx_LONG_POSTER[] = { - 0x11E, - 0x11F -}; - -const u16 DecorGfx_SEA_POSTER[] = { - 0x124, - 0x125 -}; - -const u16 DecorGfx_SKY_POSTER[] = { - 0x126, - 0x127 -}; - -const u16 DecorGfx_KISS_POSTER[] = { - 0x12C, - 0x12D -}; - -const u16 DecorGfx_PICHU_DOLL[] = { - MAP_OBJ_GFX_PICHU_DOLL -}; - -const u16 DecorGfx_PIKACHU_DOLL[] = { - MAP_OBJ_GFX_PIKACHU_DOLL -}; - -const u16 DecorGfx_MARILL_DOLL[] = { - MAP_OBJ_GFX_MARILL_DOLL -}; - -const u16 DecorGfx_TOGEPI_DOLL[] = { - MAP_OBJ_GFX_TOGEPI_DOLL -}; - -const u16 DecorGfx_CYNDAQUIL_DOLL[] = { - MAP_OBJ_GFX_CYNDAQUIL_DOLL -}; - -const u16 DecorGfx_CHIKORITA_DOLL[] = { - MAP_OBJ_GFX_CHIKORITA_DOLL -}; - -const u16 DecorGfx_TOTODILE_DOLL[] = { - MAP_OBJ_GFX_TOTODILE_DOLL -}; - -const u16 DecorGfx_JIGGLYPUFF_DOLL[] = { - MAP_OBJ_GFX_JIGGLYPUFF_DOLL -}; - -const u16 DecorGfx_MEOWTH_DOLL[] = { - MAP_OBJ_GFX_MEOWTH_DOLL -}; - -const u16 DecorGfx_CLEFAIRY_DOLL[] = { - MAP_OBJ_GFX_CLEFAIRY_DOLL -}; - -const u16 DecorGfx_DITTO_DOLL[] = { - MAP_OBJ_GFX_DITTO_DOLL -}; - -const u16 DecorGfx_SMOOCHUM_DOLL[] = { - MAP_OBJ_GFX_SMOOCHUM_DOLL -}; - -const u16 DecorGfx_TREECKO_DOLL[] = { - MAP_OBJ_GFX_TREECKO_DOLL -}; - -const u16 DecorGfx_TORCHIC_DOLL[] = { - MAP_OBJ_GFX_TORCHIC_DOLL -}; - -const u16 DecorGfx_MUDKIP_DOLL[] = { - MAP_OBJ_GFX_MUDKIP_DOLL -}; - -const u16 DecorGfx_DUSKULL_DOLL[] = { - MAP_OBJ_GFX_DUSKULL_DOLL -}; - -const u16 DecorGfx_WYNAUT_DOLL[] = { - MAP_OBJ_GFX_WYNAUT_DOLL -}; - -const u16 DecorGfx_BALTOY_DOLL[] = { - MAP_OBJ_GFX_BALTOY_DOLL -}; - -const u16 DecorGfx_KECLEON_DOLL[] = { - MAP_OBJ_GFX_KECLEON_DOLL -}; - -const u16 DecorGfx_AZURILL_DOLL[] = { - MAP_OBJ_GFX_AZURILL_DOLL -}; - -const u16 DecorGfx_SKITTY_DOLL[] = { - MAP_OBJ_GFX_SKITTY_DOLL -}; - -const u16 DecorGfx_SWABLU_DOLL[] = { - MAP_OBJ_GFX_SWABLU_DOLL -}; - -const u16 DecorGfx_GULPIN_DOLL[] = { - MAP_OBJ_GFX_GULPIN_DOLL -}; - -const u16 DecorGfx_LOTAD_DOLL[] = { - MAP_OBJ_GFX_LOTAD_DOLL -}; - -const u16 DecorGfx_SEEDOT_DOLL[] = { - MAP_OBJ_GFX_SEEDOT_DOLL -}; - -const u16 DecorGfx_PIKA_CUSHION[] = { - MAP_OBJ_GFX_PIKA_CUSHION -}; - -const u16 DecorGfx_ROUND_CUSHION[] = { - MAP_OBJ_GFX_ROUND_CUSHION -}; - -const u16 DecorGfx_KISS_CUSHION[] = { - MAP_OBJ_GFX_KISS_CUSHION -}; - -const u16 DecorGfx_ZIGZAG_CUSHION[] = { - MAP_OBJ_GFX_ZIGZAG_CUSHION -}; - -const u16 DecorGfx_SPIN_CUSHION[] = { - MAP_OBJ_GFX_SPIN_CUSHION -}; - -const u16 DecorGfx_DIAMOND_CUSHION[] = { - MAP_OBJ_GFX_DIAMOND_CUSHION -}; - -const u16 DecorGfx_BALL_CUSHION[] = { - MAP_OBJ_GFX_BALL_CUSHION -}; - -const u16 DecorGfx_GRASS_CUSHION[] = { - MAP_OBJ_GFX_GRASS_CUSHION -}; - -const u16 DecorGfx_FIRE_CUSHION[] = { - MAP_OBJ_GFX_FIRE_CUSHION -}; - -const u16 DecorGfx_WATER_CUSHION[] = { - MAP_OBJ_GFX_WATER_CUSHION -}; - -const u16 DecorGfx_SNORLAX_DOLL[] = { - MAP_OBJ_GFX_BIG_SNORLAX_DOLL -}; - -const u16 DecorGfx_RHYDON_DOLL[] = { - MAP_OBJ_GFX_BIG_RHYDON_DOLL -}; - -const u16 DecorGfx_LAPRAS_DOLL[] = { - MAP_OBJ_GFX_BIG_LAPRAS_DOLL -}; - -const u16 DecorGfx_VENUSAUR_DOLL[] = { - MAP_OBJ_GFX_BIG_VENUSAUR_DOLL -}; - -const u16 DecorGfx_CHARIZARD_DOLL[] = { - MAP_OBJ_GFX_BIG_CHARIZARD_DOLL -}; - -const u16 DecorGfx_BLASTOISE_DOLL[] = { - MAP_OBJ_GFX_BIG_BLASTOISE_DOLL -}; - -const u16 DecorGfx_WAILMER_DOLL[] = { - MAP_OBJ_GFX_BIG_WAILMER_DOLL -}; - -const u16 DecorGfx_REGIROCK_DOLL[] = { - MAP_OBJ_GFX_BIG_REGIROCK_DOLL -}; - -const u16 DecorGfx_REGICE_DOLL[] = { - MAP_OBJ_GFX_BIG_REGICE_DOLL -}; - -const u16 DecorGfx_REGISTEEL_DOLL[] = { - MAP_OBJ_GFX_BIG_REGISTEEL_DOLL -}; - -#if ENGLISH -const struct Decoration gDecorations[] = { - {DECOR_NONE, _("SMALL DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_DESK, 0, DecorDesc_SMALL_DESK, DecorGfx_SMALL_DESK}, - {DECOR_SMALL_DESK, _("SMALL DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_DESK, 3000, DecorDesc_SMALL_DESK, DecorGfx_SMALL_DESK}, - {DECOR_POKEMON_DESK, _("POKéMON DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_DESK, 3000, DecorDesc_POKEMON_DESK, DecorGfx_POKEMON_DESK}, - {DECOR_HEAVY_DESK, _("HEAVY DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x2, DECORCAT_DESK, 6000, DecorDesc_HEAVY_DESK, DecorGfx_HEAVY_DESK}, - {DECOR_RAGGED_DESK, _("RAGGED DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x2, DECORCAT_DESK, 6000, DecorDesc_RAGGED_DESK, DecorGfx_RAGGED_DESK}, - {DECOR_COMFORT_DESK, _("COMFORT DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x2, DECORCAT_DESK, 6000, DecorDesc_COMFORT_DESK, DecorGfx_COMFORT_DESK}, - {DECOR_PRETTY_DESK, _("PRETTY DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x3, DECORCAT_DESK, 9000, DecorDesc_PRETTY_DESK, DecorGfx_PRETTY_DESK}, - {DECOR_BRICK_DESK, _("BRICK DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x3, DECORCAT_DESK, 9000, DecorDesc_BRICK_DESK, DecorGfx_BRICK_DESK}, - {DECOR_CAMP_DESK, _("CAMP DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x3, DECORCAT_DESK, 9000, DecorDesc_CAMP_DESK, DecorGfx_CAMP_DESK}, - {DECOR_HARD_DESK, _("HARD DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x3, DECORCAT_DESK, 9000, DecorDesc_HARD_DESK, DecorGfx_HARD_DESK}, - {DECOR_SMALL_CHAIR, _("SMALL CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_SMALL_CHAIR, DecorGfx_SMALL_CHAIR}, - {DECOR_POKEMON_CHAIR, _("POKéMON CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_POKEMON_CHAIR, DecorGfx_POKEMON_CHAIR}, - {DECOR_HEAVY_CHAIR, _("HEAVY CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_HEAVY_CHAIR, DecorGfx_HEAVY_CHAIR}, - {DECOR_PRETTY_CHAIR, _("PRETTY CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_PRETTY_CHAIR, DecorGfx_PRETTY_CHAIR}, - {DECOR_COMFORT_CHAIR, _("COMFORT CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_COMFORT_CHAIR, DecorGfx_COMFORT_CHAIR}, - {DECOR_RAGGED_CHAIR, _("RAGGED CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_RAGGED_CHAIR, DecorGfx_RAGGED_CHAIR}, - {DECOR_BRICK_CHAIR, _("BRICK CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_BRICK_CHAIR, DecorGfx_BRICK_CHAIR}, - {DECOR_CAMP_CHAIR, _("CAMP CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_CAMP_CHAIR, DecorGfx_CAMP_CHAIR}, - {DECOR_HARD_CHAIR, _("HARD CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_HARD_CHAIR, DecorGfx_HARD_CHAIR}, - {DECOR_RED_PLANT, _("RED PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_PLANT, 3000, DecorDesc_RED_PLANT, DecorGfx_RED_PLANT}, - {DECOR_TROPICAL_PLANT, _("TROPICAL PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_PLANT, 3000, DecorDesc_TROPICAL_PLANT, DecorGfx_TROPICAL_PLANT}, - {DECOR_PRETTY_FLOWERS, _("PRETTY FLOWERS"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_PLANT, 3000, DecorDesc_PRETTY_FLOWERS, DecorGfx_PRETTY_FLOWERS}, - {DECOR_COLORFUL_PLANT, _("COLORFUL PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_2x2, DECORCAT_PLANT, 5000, DecorDesc_COLORFUL_PLANT, DecorGfx_COLORFUL_PLANT}, - {DECOR_BIG_PLANT, _("BIG PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_2x2, DECORCAT_PLANT, 5000, DecorDesc_BIG_PLANT, DecorGfx_BIG_PLANT}, - {DECOR_GORGEOUS_PLANT, _("GORGEOUS PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_2x2, DECORCAT_PLANT, 5000, DecorDesc_GORGEOUS_PLANT, DecorGfx_GORGEOUS_PLANT}, - {DECOR_RED_BRICK, _("RED BRICK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 500, DecorDesc_RED_BRICK, DecorGfx_RED_BRICK}, - {DECOR_YELLOW_BRICK, _("YELLOW BRICK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 500, DecorDesc_YELLOW_BRICK, DecorGfx_YELLOW_BRICK}, - {DECOR_BLUE_BRICK, _("BLUE BRICK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 500, DecorDesc_BLUE_BRICK, DecorGfx_BLUE_BRICK}, - {DECOR_RED_BALLOON, _("RED BALLOON"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_RED_BALLOON, DecorGfx_RED_BALLOON}, - {DECOR_BLUE_BALLOON, _("BLUE BALLOON"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_BLUE_BALLOON, DecorGfx_BLUE_BALLOON}, - {DECOR_YELLOW_BALLOON, _("YELLOW BALLOON"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_YELLOW_BALLOON, DecorGfx_YELLOW_BALLOON}, - {DECOR_RED_TENT, _("RED TENT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_ORNAMENT, 10000, DecorDesc_RED_TENT, DecorGfx_RED_TENT}, - {DECOR_BLUE_TENT, _("BLUE TENT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_ORNAMENT, 10000, DecorDesc_BLUE_TENT, DecorGfx_BLUE_TENT}, - {DECOR_SOLID_BOARD, _("SOLID BOARD"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 3000, DecorDesc_SOLID_BOARD, DecorGfx_SOLID_BOARD}, - {DECOR_SLIDE, _("SLIDE"), DECORPERM_PASS_FLOOR, DECORSHAPE_2x4, DECORCAT_ORNAMENT, 8000, DecorDesc_SLIDE, DecorGfx_SLIDE}, - {DECOR_FENCE_LENGTH, _("FENCE LENGTH"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_FENCE_LENGTH, DecorGfx_FENCE_LENGTH}, - {DECOR_FENCE_WIDTH, _("FENCE WIDTH"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_FENCE_WIDTH, DecorGfx_FENCE_WIDTH}, - {DECOR_TIRE, _("TIRE"), DECORPERM_SOLID_FLOOR, DECORSHAPE_2x2, DECORCAT_ORNAMENT, 800, DecorDesc_TIRE, DecorGfx_TIRE}, - {DECOR_STAND, _("STAND"), DECORPERM_PASS_FLOOR, DECORSHAPE_4x2, DECORCAT_ORNAMENT, 7000, DecorDesc_STAND, DecorGfx_STAND}, - {DECOR_MUD_BALL, _("MUD BALL"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 200, DecorDesc_MUD_BALL, DecorGfx_MUD_BALL}, - {DECOR_BREAKABLE_DOOR, _("BREAKABLE DOOR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 3000, DecorDesc_BREAKABLE_DOOR, DecorGfx_BREAKABLE_DOOR}, - {DECOR_SAND_ORNAMENT, _("SAND ORNAMENT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 3000, DecorDesc_SAND_ORNAMENT, DecorGfx_SAND_ORNAMENT}, - {DECOR_SILVER_SHIELD, _("SILVER SHIELD"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 0, DecorDesc_SILVER_SHIELD, DecorGfx_SILVER_SHIELD}, - {DECOR_GOLD_SHIELD, _("GOLD SHIELD"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 0, DecorDesc_GOLD_SHIELD, DecorGfx_GOLD_SHIELD}, - {DECOR_GLASS_ORNAMENT, _("GLASS ORNAMENT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 0, DecorDesc_GLASS_ORNAMENT, DecorGfx_GLASS_ORNAMENT}, - {DECOR_TV, _("TV"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 3000, DecorDesc_TV, DecorGfx_TV}, - {DECOR_ROUND_TV, _("ROUND TV"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 4000, DecorDesc_ROUND_TV, DecorGfx_ROUND_TV}, - {DECOR_CUTE_TV, _("CUTE TV"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 4000, DecorDesc_CUTE_TV, DecorGfx_CUTE_TV}, - {DECOR_GLITTER_MAT, _("GLITTER MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 2000, DecorDesc_GLITTER_MAT, DecorGfx_GLITTER_MAT}, - {DECOR_JUMP_MAT, _("JUMP MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 2000, DecorDesc_JUMP_MAT, DecorGfx_JUMP_MAT}, - {DECOR_SPIN_MAT, _("SPIN MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 2000, DecorDesc_SPIN_MAT, DecorGfx_SPIN_MAT}, - {DECOR_C_LOW_NOTE_MAT, _("C Low NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_C_LOW_NOTE_MAT, DecorGfx_C_LOW_NOTE_MAT}, - {DECOR_D_NOTE_MAT, _("D NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_D_NOTE_MAT, DecorGfx_D_NOTE_MAT}, - {DECOR_E_NOTE_MAT, _("E NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_E_NOTE_MAT, DecorGfx_E_NOTE_MAT}, - {DECOR_F_NOTE_MAT, _("F NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_F_NOTE_MAT, DecorGfx_F_NOTE_MAT}, - {DECOR_G_NOTE_MAT, _("G NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_G_NOTE_MAT, DecorGfx_G_NOTE_MAT}, - {DECOR_A_NOTE_MAT, _("A NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_A_NOTE_MAT, DecorGfx_A_NOTE_MAT}, - {DECOR_B_NOTE_MAT, _("B NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_B_NOTE_MAT, DecorGfx_B_NOTE_MAT}, - {DECOR_C_HIGH_NOTE_MAT, _("C High NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_C_HIGH_NOTE_MAT, DecorGfx_C_HIGH_NOTE_MAT}, - {DECOR_SURF_MAT, _("SURF MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_SURF_MAT, DecorGfx_SURF_MAT}, - {DECOR_THUNDER_MAT, _("THUNDER MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_THUNDER_MAT, DecorGfx_THUNDER_MAT}, - {DECOR_FIRE_BLAST_MAT, _("FIRE BLAST MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_FIRE_BLAST_MAT, DecorGfx_FIRE_BLAST_MAT}, - {DECOR_POWDER_SNOW_MAT, _("POWDER SNOW MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_POWDER_SNOW_MAT, DecorGfx_POWDER_SNOW_MAT}, - {DECOR_ATTRACT_MAT, _("ATTRACT MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_ATTRACT_MAT, DecorGfx_ATTRACT_MAT}, - {DECOR_FISSURE_MAT, _("FISSURE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_FISSURE_MAT, DecorGfx_FISSURE_MAT}, - {DECOR_SPIKES_MAT, _("SPIKES MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_SPIKES_MAT, DecorGfx_SPIKES_MAT}, - {DECOR_BALL_POSTER, _("BALL POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_BALL_POSTER, DecorGfx_BALL_POSTER}, - {DECOR_GREEN_POSTER, _("GREEN POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_GREEN_POSTER, DecorGfx_GREEN_POSTER}, - {DECOR_RED_POSTER, _("RED POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_RED_POSTER, DecorGfx_RED_POSTER}, - {DECOR_BLUE_POSTER, _("BLUE POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_BLUE_POSTER, DecorGfx_BLUE_POSTER}, - {DECOR_CUTE_POSTER, _("CUTE POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_CUTE_POSTER, DecorGfx_CUTE_POSTER}, - {DECOR_PIKA_POSTER, _("PIKA POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_PIKA_POSTER, DecorGfx_PIKA_POSTER}, - {DECOR_LONG_POSTER, _("LONG POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_LONG_POSTER, DecorGfx_LONG_POSTER}, - {DECOR_SEA_POSTER, _("SEA POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_SEA_POSTER, DecorGfx_SEA_POSTER}, - {DECOR_SKY_POSTER, _("SKY POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_SKY_POSTER, DecorGfx_SKY_POSTER}, - {DECOR_KISS_POSTER, _("KISS POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_KISS_POSTER, DecorGfx_KISS_POSTER}, - {DECOR_PICHU_DOLL, _("PICHU DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_PICHU_DOLL, DecorGfx_PICHU_DOLL}, - {DECOR_PIKACHU_DOLL, _("PIKACHU DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_PIKACHU_DOLL, DecorGfx_PIKACHU_DOLL}, - {DECOR_MARILL_DOLL, _("MARILL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_MARILL_DOLL, DecorGfx_MARILL_DOLL}, - {DECOR_TOGEPI_DOLL, _("TOGEPI DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_TOGEPI_DOLL, DecorGfx_TOGEPI_DOLL}, - {DECOR_CYNDAQUIL_DOLL, _("CYNDAQUIL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_CYNDAQUIL_DOLL, DecorGfx_CYNDAQUIL_DOLL}, - {DECOR_CHIKORITA_DOLL, _("CHIKORITA DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_CHIKORITA_DOLL, DecorGfx_CHIKORITA_DOLL}, - {DECOR_TOTODILE_DOLL, _("TOTODILE DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_TOTODILE_DOLL, DecorGfx_TOTODILE_DOLL}, - {DECOR_JIGGLYPUFF_DOLL, _("JIGGLYPUFF DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_JIGGLYPUFF_DOLL, DecorGfx_JIGGLYPUFF_DOLL}, - {DECOR_MEOWTH_DOLL, _("MEOWTH DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_MEOWTH_DOLL, DecorGfx_MEOWTH_DOLL}, - {DECOR_CLEFAIRY_DOLL, _("CLEFAIRY DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_CLEFAIRY_DOLL, DecorGfx_CLEFAIRY_DOLL}, - {DECOR_DITTO_DOLL, _("DITTO DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_DITTO_DOLL, DecorGfx_DITTO_DOLL}, - {DECOR_SMOOCHUM_DOLL, _("SMOOCHUM DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_SMOOCHUM_DOLL, DecorGfx_SMOOCHUM_DOLL}, - {DECOR_TREECKO_DOLL, _("TREECKO DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_TREECKO_DOLL, DecorGfx_TREECKO_DOLL}, - {DECOR_TORCHIC_DOLL, _("TORCHIC DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_TORCHIC_DOLL, DecorGfx_TORCHIC_DOLL}, - {DECOR_MUDKIP_DOLL, _("MUDKIP DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_MUDKIP_DOLL, DecorGfx_MUDKIP_DOLL}, - {DECOR_DUSKULL_DOLL, _("DUSKULL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_DUSKULL_DOLL, DecorGfx_DUSKULL_DOLL}, - {DECOR_WYNAUT_DOLL, _("WYNAUT DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_WYNAUT_DOLL, DecorGfx_WYNAUT_DOLL}, - {DECOR_BALTOY_DOLL, _("BALTOY DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_BALTOY_DOLL, DecorGfx_BALTOY_DOLL}, - {DECOR_KECLEON_DOLL, _("KECLEON DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_KECLEON_DOLL, DecorGfx_KECLEON_DOLL}, - {DECOR_AZURILL_DOLL, _("AZURILL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_AZURILL_DOLL, DecorGfx_AZURILL_DOLL}, - {DECOR_SKITTY_DOLL, _("SKITTY DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_SKITTY_DOLL, DecorGfx_SKITTY_DOLL}, - {DECOR_SWABLU_DOLL, _("SWABLU DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_SWABLU_DOLL, DecorGfx_SWABLU_DOLL}, - {DECOR_GULPIN_DOLL, _("GULPIN DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_GULPIN_DOLL, DecorGfx_GULPIN_DOLL}, - {DECOR_LOTAD_DOLL, _("LOTAD DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_LOTAD_DOLL, DecorGfx_LOTAD_DOLL}, - {DECOR_SEEDOT_DOLL, _("SEEDOT DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_SEEDOT_DOLL, DecorGfx_SEEDOT_DOLL}, - {DECOR_PIKA_CUSHION, _("PIKA CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_PIKA_CUSHION, DecorGfx_PIKA_CUSHION}, - {DECOR_ROUND_CUSHION, _("ROUND CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_ROUND_CUSHION, DecorGfx_ROUND_CUSHION}, - {DECOR_KISS_CUSHION, _("KISS CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_KISS_CUSHION, DecorGfx_KISS_CUSHION}, - {DECOR_ZIGZAG_CUSHION, _("ZIGZAG CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_ZIGZAG_CUSHION, DecorGfx_ZIGZAG_CUSHION}, - {DECOR_SPIN_CUSHION, _("SPIN CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_SPIN_CUSHION, DecorGfx_SPIN_CUSHION}, - {DECOR_DIAMOND_CUSHION, _("DIAMOND CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_DIAMOND_CUSHION, DecorGfx_DIAMOND_CUSHION}, - {DECOR_BALL_CUSHION, _("BALL CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_BALL_CUSHION, DecorGfx_BALL_CUSHION}, - {DECOR_GRASS_CUSHION, _("GRASS CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_GRASS_CUSHION, DecorGfx_GRASS_CUSHION}, - {DECOR_FIRE_CUSHION, _("FIRE CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_FIRE_CUSHION, DecorGfx_FIRE_CUSHION}, - {DECOR_WATER_CUSHION, _("WATER CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_WATER_CUSHION, DecorGfx_WATER_CUSHION}, - {DECOR_SNORLAX_DOLL, _("SNORLAX DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_SNORLAX_DOLL, DecorGfx_SNORLAX_DOLL}, - {DECOR_RHYDON_DOLL, _("RHYDON DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_RHYDON_DOLL, DecorGfx_RHYDON_DOLL}, - {DECOR_LAPRAS_DOLL, _("LAPRAS DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_LAPRAS_DOLL, DecorGfx_LAPRAS_DOLL}, - {DECOR_VENUSAUR_DOLL, _("VENUSAUR DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_VENUSAUR_DOLL, DecorGfx_VENUSAUR_DOLL}, - {DECOR_CHARIZARD_DOLL, _("CHARIZARD DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_CHARIZARD_DOLL, DecorGfx_CHARIZARD_DOLL}, - {DECOR_BLASTOISE_DOLL, _("BLASTOISE DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_BLASTOISE_DOLL, DecorGfx_BLASTOISE_DOLL}, - {DECOR_WAILMER_DOLL, _("WAILMER DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_WAILMER_DOLL, DecorGfx_WAILMER_DOLL}, - {DECOR_REGIROCK_DOLL, _("REGIROCK DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGIROCK_DOLL, DecorGfx_REGIROCK_DOLL}, - {DECOR_REGICE_DOLL, _("REGICE DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGICE_DOLL, DecorGfx_REGICE_DOLL}, - {DECOR_REGISTEEL_DOLL, _("REGISTEEL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGISTEEL_DOLL, DecorGfx_REGISTEEL_DOLL} -}; -#elif GERMAN -#include "../data/decoration/decorations.h" -#endif - -const u8 *const gUnknown_083EC5E4[] = { - SecretBaseText_Desk, - SecretBaseText_Chair, - SecretBaseText_Plant, - SecretBaseText_Ornament, - SecretBaseText_Mat, - SecretBaseText_Poster, - SecretBaseText_Doll, - SecretBaseText_Cushion -}; - -const struct MenuAction2 gUnknown_083EC604[] = { - {SecretBaseText_Decorate, sub_80FF160}, - {SecretBaseText_PutAway, sub_8100A0C}, - {SecretBaseText_Toss, sub_8101700}, - {gUnknownText_Exit, gpu_pal_decompress_alloc_tag_and_upload} -}; - -const u8 *const gUnknown_083EC624[] = { - SecretBaseText_PutOutDecor, - SecretBaseText_StoreChosenDecor, - SecretBaseText_ThrowAwayDecor, - gMenuText_GoBackToPrev -}; - -const struct YesNoFuncTable gUnknown_083EC634[] = { - {sub_80FF5BC, sub_80FF058}, - {sub_81017A0, sub_80FF058}, - {sub_81017A0, sub_80FF058}, - {sub_8109D04, sub_80FF058} -}; - -// text - -extern u8 gUnknown_0815F399[]; - -void sub_80FE1DC(void) -{ - sub_80FE2B4(); - Menu_DrawStdWindowFrame(0, 0, 10, 9); - Menu_PrintItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604); - InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9); -} - -void sub_80FE220(void) -{ - gUnknown_020388D4 = 0; - ScriptContext2_Enable(); - sub_80FE1DC(); - sub_80FE394(); -} - -void DecorationPC(u8 taskId) -{ - sub_80FE220(); - gTasks[taskId].func = Task_DecorationPCProcessMenuInput; -} - -void Task_SecretBasePC_Decoration(u8 taskId) -{ - DecorationPC(taskId); - ewram_1f000.items = gSaveBlock1.secretBases[0].decorations; - ewram_1f000.pos = gSaveBlock1.secretBases[0].decorationPos; - ewram_1f000.size = sizeof gSaveBlock1.secretBases[0].decorations; - ewram_1f000.isPlayerRoom = 0; -} - -void DoPlayerPCDecoration(u8 taskId) -{ - DecorationPC(taskId); - ewram_1f000.items = gSaveBlock1.playerRoomDecor; - ewram_1f000.pos = gSaveBlock1.playerRoomDecorPos; - ewram_1f000.size = sizeof gSaveBlock1.playerRoomDecor; - ewram_1f000.isPlayerRoom = 1; -} - -void sub_80FE2B4(void) -{ - u16 palettes[3] = {RGB(24, 24, 24), - RGB(28, 28, 28), - RGB(31, 31, 31)}; - LoadPalette(&palettes[2], 0xdf, 2); - LoadPalette(&palettes[1], 0xd1, 2); - LoadPalette(&palettes[0], 0xd8, 2); -} - -void Task_DecorationPCProcessMenuInput(u8 taskId) -{ - if (!gPaletteFade.active) - { - if (gMain.newKeys & DPAD_UP) - { - PlaySE(SE_SELECT); - gUnknown_020388D4 = Menu_MoveCursor(-1); - sub_80FE394(); - } - if (gMain.newKeys & DPAD_DOWN) - { - PlaySE(SE_SELECT); - gUnknown_020388D4 = Menu_MoveCursor(1); - sub_80FE394(); - } - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - gUnknown_083EC604[gUnknown_020388D4].func(taskId); - } else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - gpu_pal_decompress_alloc_tag_and_upload(taskId); - } - } -} - -void sub_80FE394(void) -{ - Menu_BlankWindowRect(2, 15, 27, 18); - Menu_PrintText(gUnknown_083EC624[gUnknown_020388D4], 2, 15); -} - -void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId) -{ - Menu_DestroyCursor(); - Menu_EraseWindowRect(0, 0, 10, 9); - Menu_BlankWindowRect(2, 15, 27, 18); - FreeSpritePaletteByTag(6); - if (ewram_1f000.isPlayerRoom == 0) - { - ScriptContext1_SetupScript(gUnknown_0815F399); - DestroyTask(taskId); - } else - { - ReshowPlayerPC(taskId); - } -} - -void sub_80FE418(u8 taskId) -{ - sub_80FE5AC(taskId); -} - -void sub_80FE428(u8 taskId) -{ - InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9); - sub_80FE394(); - gTasks[taskId].func = Task_DecorationPCProcessMenuInput; -} - -void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCategorySelectionMenuString -{ - u8 *strptr; - u8 v0; - v0 = Menu_GetTextWindowPaletteNum(); - // PALETTE {palIdx} - strptr = gStringVar4; - strptr[0] = EXT_CTRL_CODE_BEGIN; - strptr[1] = 5; - strptr[2] = palIdx; - strptr += 3; - strptr = StringCopy(strptr, gUnknown_083EC5E4[decoCat]); - strptr = sub_8072C14(strptr, sub_8134194(decoCat), 0x56, 1); - *strptr++ = 0xba; - strptr = sub_8072C14(strptr, gDecorationInventories[decoCat].size, 0x68, 1); - strptr[0] = EXT_CTRL_CODE_BEGIN; - strptr[1] = 5; - strptr[2] = v0; - strptr[3] = EOS; - Menu_PrintText(gStringVar4, left, top); -} - -void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings -{ - u8 decoCat; - Menu_DrawStdWindowFrame(0, 0, 14, 19); - for (decoCat=0; decoCat<8; decoCat++) - { - if (ewram_1f000.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECORCAT_DOLL && decoCat != DECORCAT_CUSHION) - { - sub_80FE470(decoCat, 1, 2 * decoCat + 1, 13); // Selectable - } else - { - sub_80FE470(decoCat, 1, 2 * decoCat + 1, 255); // Unselectable - } - } - Menu_PrintText(gUnknownText_Exit, 1, 17); -} - -void sub_80FE5AC(u8 taskId) -{ - Menu_DestroyCursor(); - Menu_EraseWindowRect(0, 0, 29, 19); - sub_80FE528(taskId); - InitMenu(0, 1, 1, 9, gUnknown_020388F6, 13); - gTasks[taskId].func = sub_80FE604; -} - -void sub_80FE604(u8 taskId) -{ - if (!gPaletteFade.active) - { - if (gMain.newAndRepeatedKeys & DPAD_UP) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(-1); - } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(1); - } else if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - gUnknown_020388F6 = Menu_GetCursorPos(); - if (gUnknown_020388F6 != 8) - { - gUnknown_020388D5 = sub_8134194(gUnknown_020388F6); - if (gUnknown_020388D5) - { - sub_8134104(gUnknown_020388F6); - gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items; - sub_80FEF50(taskId); - ClearVerticalScrollIndicatorPalettes(); - sub_80F9480(gUnknown_020388F7, 8); - LoadScrollIndicatorPalette(); - gTasks[taskId].func = sub_80FE868; - } else - { - Menu_DestroyCursor(); - Menu_EraseWindowRect(0, 0, 14, 19); - DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE418, 0); - } - } else - { - sub_80FE728(taskId); - } - } else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - sub_80FE728(taskId); - } - } -} - -void sub_80FE728(u8 taskId) -{ - if (gTasks[taskId].data[11] != 3) - { - sub_80FE758(taskId); - } else - { - sub_8109DAC(taskId); - } -} - -void sub_80FE758(u8 taskId) -{ - Menu_DestroyCursor(); - Menu_EraseWindowRect(0, 0, 14, 19); - if (gTasks[taskId].data[11] != 2) - { - sub_80FE1DC(); - Menu_DisplayDialogueFrame(); - sub_80FE394(); - gTasks[taskId].func = Task_DecorationPCProcessMenuInput; - } else - { - Shop_RunExitSellMenuTask(taskId); - } -} - -void sub_80FE7A8(u8 taskId) -{ - gTasks[taskId].data[11] = 3; - gUnknown_020388F6 = 0; - sub_80FE5AC(taskId); -} - -void sub_80FE7D4(u8 *dest, u8 decClass) -{ - StringCopy(dest, gUnknown_083EC5E4[decClass]); -} - -void sub_80FE7EC(u8 taskId) -{ - Menu_DestroyCursor(); - Menu_EraseWindowRect(0, 0, 29, 19); - - sub_80FEC94(taskId); - sub_80FECB8(gUnknown_020388F6); - -#if ENGLISH - Menu_DrawStdWindowFrame(15, 12, 29, 19); -#elif GERMAN - if ((gUnknown_020388F2 + gUnknown_020388F4) != gUnknown_020388D5) - { - Menu_DrawStdWindowFrame(15, 12, 29, 19); - } -#endif - - sub_80FECE0(gUnknown_020388F2 + gUnknown_020388F4); - InitMenu(0, 1, 2, gUnknown_020388F3 + 1, gUnknown_020388F2, 13); -} - -void sub_80FE868(u8 taskId) -{ - sub_80FE7EC(taskId); - gTasks[taskId].func = sub_80FE948; -} - -void sub_80FE894(u8 taskId /*r8*/, s8 cursorVector /*r5*/, s8 bgVector /*r7*/) -{ - int v0 /*r10*/; - u8 v1; - v0 = gUnknown_020388F2 + gUnknown_020388F4 == gUnknown_020388D5; - PlaySE(SE_SELECT); - if (cursorVector != 0) - { - gUnknown_020388F2 = Menu_MoveCursor(cursorVector); - } - if (bgVector != 0) - { - v1 = gUnknown_020388F4; - gUnknown_020388F4 = v1 + bgVector; - sub_80FEABC(taskId, 1); - } - if (gUnknown_020388F2 + gUnknown_020388F4 != gUnknown_020388D5) - { - if (v0) - { - Menu_DrawStdWindowFrame(15, 12, 29, 19); - } - sub_80FECE0(gUnknown_020388F2 + gUnknown_020388F4); - } else - { - Menu_EraseWindowRect(15, 12, 29, 19); - } -} - -void sub_80FE948(u8 taskId) -{ - if (!gPaletteFade.active) - { - if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) - { - if (gUnknown_020388F2 != 0) - { - sub_80FE894(taskId, -1, 0); - } else if (gUnknown_020388F4 != 0) - { - sub_80FE894(taskId, 0, -1); - } - } - if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) - { - if (gUnknown_020388F2 != gUnknown_020388F3) - { - sub_80FE894(taskId, 1, 0); - } else if (gUnknown_020388F4 + gUnknown_020388F2 != gUnknown_020388D5) - { - sub_80FE894(taskId, 0, 1); - } - } - if (gMain.newKeys & A_BUTTON) - { - Menu_DestroyCursor(); - PlaySE(SE_SELECT); - gUnknown_020388F5 = gUnknown_020388F2 + gUnknown_020388F4; - if (gUnknown_020388F5 == gUnknown_020388D5) - { - gUnknown_083EC634[gTasks[taskId].data[11]].noFunc(taskId); - } else - { - gUnknown_083EC634[gTasks[taskId].data[11]].yesFunc(taskId); - } - } else if (gMain.newKeys & B_BUTTON) - { - Menu_DestroyCursor(); - PlaySE(SE_SELECT); - gUnknown_083EC634[gTasks[taskId].data[11]].noFunc(taskId); - } - } -} - -const u8 gUnknown_083EC65A[] = _("{PALETTE 13}{STR_VAR_1}"); - -void sub_80FEABC(u8 taskId, u8 dummy1) -{ - u16 i; - u16 j; - u8 ni; - if (gUnknown_020388F4 != 0 || (DestroyVerticalScrollIndicator(TOP_ARROW), gUnknown_020388F4 != 0)) - { - CreateVerticalScrollIndicators(TOP_ARROW, 0x3c, 0x08); - } - if (gUnknown_020388F4 + 7 == gUnknown_020388D5) - { - DestroyVerticalScrollIndicator(BOTTOM_ARROW); - } - if (gUnknown_020388F4 + 7 < gUnknown_020388D5) - { - CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x3c, 0x98); - } - for (i=gUnknown_020388F4; i<gUnknown_020388F4+8; i++) - { - ni = 2 * (i - gUnknown_020388F4) + 2; - if (gUnknown_020388F7[i - gUnknown_020388F4]) - { - sub_80F94F8(&gUnknown_020388F7[i - gUnknown_020388F4]); - } - if (i == gUnknown_020388D5) - { - sub_8072A18(gUnknownText_Exit, 0x08, 8 * ni, 0x68, 1); - break; - } - if (gUnknown_020388D0[i]) - { - if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION && gTasks[taskId].data[11] == 0) - { - StringCopy(gStringVar1, gDecorations[gUnknown_020388D0[i]].name); - sub_8072A18(gUnknown_083EC65A, 0x08, 8 * ni, 0x68, 1); - } else - { - sub_8072A18(gDecorations[gUnknown_020388D0[i]].name, 0x08, 8 * ni, 0x68, 1); - } - for (j=0; j<16; j++) - { - if (gUnknown_020388D6[j] - 1 == i) - { - sub_80F94A4(4, &gUnknown_020388F7[i - gUnknown_020388F4], 0x6c, (i - gUnknown_020388F4) * 16 + 24); - break; - } - } - for (j=0; j<12; j++) - { - if (gUnknown_020388E6[j] - 1 == i) - { - sub_80F94A4(5, &gUnknown_020388F7[i - gUnknown_020388F4], 0x6c, (i - gUnknown_020388F4) * 16 + 24); - break; - } - } - } - } -} - -void sub_80FEC94(u8 taskId) -{ - Menu_DrawStdWindowFrame(0, 0, 14, 19); - sub_80FEABC(taskId, 0); -} - -void sub_80FECB8(u8 decoCat) -{ - Menu_DrawStdWindowFrame(15, 0, 29, 3); - sub_80FE470(decoCat, 16, 1, 0xff); -} - -#if ENGLISH -void sub_80FECE0(u8 decoCat) -{ - sub_8072AB0(gDecorations[gUnknown_020388D0[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1); -} -#elif GERMAN -__attribute__((naked)) -void sub_80FECE0(u8 decoCat) -{ - asm(".syntax unified\n\ - push {lr}\n\ - sub sp, 0x8\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - ldr r0, _080FED18 @ =gUnknown_020388D5\n\ - ldrb r0, [r0]\n\ - cmp r2, r0\n\ - beq _080FED24\n\ - ldr r1, _080FED1C @ =gDecorations\n\ - ldr r0, _080FED20 @ =gUnknown_020388D0\n\ - ldr r0, [r0]\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - lsls r0, 5\n\ - adds r1, 0x18\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x30\n\ - str r1, [sp]\n\ - movs r1, 0x1\n\ - str r1, [sp, 0x4]\n\ - movs r1, 0x80\n\ - movs r2, 0x68\n\ - movs r3, 0x68\n\ - bl sub_8072AB0\n\ - movs r0, 0x1\n\ - b _080FED26\n\ - .align 2, 0\n\ -_080FED18: .4byte gUnknown_020388D5\n\ -_080FED1C: .4byte gDecorations\n\ -_080FED20: .4byte gUnknown_020388D0\n\ -_080FED24:\n\ - movs r0, 0\n\ -_080FED26:\n\ - add sp, 0x8\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif - -void sub_80FED1C(void) -{ - Menu_EraseWindowRect(15, 0, 29, 3); - Menu_EraseWindowRect(15, 12, 29, 19); -} - -void sub_80FED3C(u8 taskId) -{ - LoadScrollIndicatorPalette(); - gTasks[taskId].func = sub_80FE868; -} - -bool8 sub_80FED64(u8 a0) -{ - u8 i; - for (i=0; i<16; i++) - { - if (gUnknown_020388D6[i] == a0) - { - return TRUE; - } - } - return FALSE; -} - -void sub_80FED90(u8 taskId) -{ - u16 i; - u16 j; - u16 k; - u16 cnt; - cnt = 0; - for (i=0; i<16; i++) - { - gUnknown_020388D6[i] = 0; - if (i < 12) - { - gUnknown_020388E6[i] = 0; - } - } - for (i=0; i<16; i++) - { - if (gSaveBlock1.secretBases[0].decorations[i] != 0) - { - for (j=0; j<gDecorationInventories[gUnknown_020388F6].size; j++) - { - if (gUnknown_020388D0[j] == gSaveBlock1.secretBases[0].decorations[i]) - { - for (k=0; k<cnt && gUnknown_020388D6[k]!=j+1; k++); - if (k == cnt) - { - gUnknown_020388D6[cnt] = j+1; - cnt++; - break; - } - } - } - } - } - cnt = 0; - for (i=0; i<12; i++) - { - if (gSaveBlock1.playerRoomDecor[i] != 0) - { - for (j=0; j<gDecorationInventories[gUnknown_020388F6].size; j++) - { - if (gUnknown_020388D0[j] == gSaveBlock1.playerRoomDecor[i] && !sub_80FED64(j + 1)) - { - for (k=0; k<cnt && gUnknown_020388E6[k]!=j+1; k++); - if (k == cnt) - { - gUnknown_020388E6[cnt] = j+1; - cnt++; - break; - } - } - } - } - } -} - -void sub_80FEF28(void) -{ - if (gUnknown_020388D5 <= 7) - { - gUnknown_020388F3 = gUnknown_020388D5; - } else - { - gUnknown_020388F3 = 7; - } -} - -void sub_80FEF50(u8 taskId) -{ - sub_80FED90(taskId); - sub_80FEF28(); - gUnknown_020388F2 = 0; - gUnknown_020388F4 = 0; -} - -void sub_80FEF74(void) -{ - sub_80F9520(gUnknown_020388F7, 8); - DestroyVerticalScrollIndicator(TOP_ARROW); - DestroyVerticalScrollIndicator(BOTTOM_ARROW); - Menu_DestroyCursor(); - Menu_EraseWindowRect(0, 0, 14, 19); -} - -bool8 sub_80FEFA4(void) -{ - u16 i; - int v0; - for (i=0; i<16; i++) - { - v0 = gUnknown_020388F4 + gUnknown_020388F2 + 1; - if (gUnknown_020388D6[i] == v0 || (i < 12 && gUnknown_020388E6[i] == v0)) - { - return FALSE; - } - } - return TRUE; -} - -void sub_80FEFF4(u8 taskId) -{ - if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) - { - LoadScrollIndicatorPalette(); - gTasks[taskId].func = sub_80FE868; - } -} - -void sub_80FF034(u8 taskId) -{ - Menu_DestroyCursor(); - Menu_EraseWindowRect(0, 0, 14, 19); - sub_80FE5AC(taskId); -} - -void sub_80FF058(u8 taskId) -{ - sub_80F9520(gUnknown_020388F7, 8); - DestroyVerticalScrollIndicator(TOP_ARROW); - DestroyVerticalScrollIndicator(BOTTOM_ARROW); - BuyMenuFreeMemory(); - gTasks[taskId].func = sub_80FF034; -} - -void sub_80FF098(u8 taskId) -{ - gUnknown_020388D5--; - if (gUnknown_020388F4 + 7 > gUnknown_020388D5 && gUnknown_020388F4 != 0) - { - gUnknown_020388F4--; - } - sub_8134104(gUnknown_020388F6); - sub_80FED90(taskId); - sub_80FEF28(); -} - -void sub_80FF0E0(u8 taskId) -{ - gTasks[taskId].data[3] = gSaveBlock1.pos.x; - gTasks[taskId].data[4] = gSaveBlock1.pos.y; - PlayerGetDestCoords(&gTasks[taskId].data[0], &gTasks[taskId].data[1]); -} - -void sub_80FF114(u8 taskId) -{ - DrawWholeMapView(); - Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); - warp_in(); -} -void sub_80FF160(u8 taskId) -{ - if (!sub_81341D4()) - { - DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); - } else - { - gTasks[taskId].data[11] = 0; - gUnknown_020388F6 = 0; - sub_80FE5AC(taskId); - } -} - -u16 sub_80FF1B0(u8 decoId, u8 a1) -{ - u16 retval; - retval = 0xffff; - - switch (decoId) - { - case DECOR_STAND: - retval = gUnknown_083EC97C[a1] << 12; - return retval; - case DECOR_SLIDE: - retval = gUnknown_083EC984[a1] << 12; - return retval; - default: - return retval; - } -} - -void sub_80FF1EC(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decIdx) -{ - u16 i; - u16 j; // r10 - u16 behavior; - u16 flags; // r8 - u16 v0; - u16 v1; - s16 x; - s16 decBottom; - - for (i=0; i<decHeight; i++) - { - decBottom = mapY - decHeight + 1 + i; - for (j=0; j<decWidth; j++) - { - x = mapX + j; - behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decIdx].tiles[i * decWidth + j]); - if (sub_8057288(behavior) == 1 || (gDecorations[decIdx].permission != DECORPERM_PASS_FLOOR && (behavior >> 12))) - { - flags = 0xc00; - } else - { - flags = 0x000; - } - if (gDecorations[decIdx].permission != DECORPERM_NA_WALL && sub_80572B0(MapGridGetMetatileBehaviorAt(x, decBottom)) == 1) - { - v0 = 1; - } else - { - v0 = 0; - } - v1 = sub_80FF1B0(gDecorations[decIdx].id, i * decWidth + j); - if (v1 != 0xffff) - { - MapGridSetMetatileEntryAt(x, decBottom, (gDecorations[decIdx].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1); - } else - { - MapGridSetMetatileIdAt(x, decBottom, (gDecorations[decIdx].tiles[i * decWidth + j] + (0x200 | v0)) | flags); - } - } - } -} - -void sub_80FF394(u16 mapX, u16 mapY, u16 decIdx) -{ - switch (gDecorations[decIdx].shape) - { - case DECORSHAPE_1x1: - sub_80FF1EC(mapX, mapY, 1, 1, decIdx); - break; - case DECORSHAPE_2x1: - sub_80FF1EC(mapX, mapY, 2, 1, decIdx); - break; - case DECORSHAPE_3x1: // unused - sub_80FF1EC(mapX, mapY, 3, 1, decIdx); - break; - case DECORSHAPE_4x2: - sub_80FF1EC(mapX, mapY, 4, 2, decIdx); - break; - case DECORSHAPE_2x2: - sub_80FF1EC(mapX, mapY, 2, 2, decIdx); - break; - case DECORSHAPE_1x2: - sub_80FF1EC(mapX, mapY, 1, 2, decIdx); - break; - case DECORSHAPE_1x3: // unused - sub_80FF1EC(mapX, mapY, 1, 3, decIdx); - break; - case DECORSHAPE_2x4: - sub_80FF1EC(mapX, mapY, 2, 4, decIdx); - break; - case DECORSHAPE_3x3: - sub_80FF1EC(mapX, mapY, 3, 3, decIdx); - break; - case DECORSHAPE_3x2: - sub_80FF1EC(mapX, mapY, 3, 2, decIdx); - break; - } -} - -void sub_80FF474(void) -{ - u8 i; - u8 j; - for (i=0; i<14; i++) - { - if (FlagGet(i + FLAG_DECORATION_2) == 1) - { - FlagClear(i + FLAG_DECORATION_2); - for (j=0; j<gMapHeader.events->mapObjectCount; j++) - { - if (gMapHeader.events->mapObjects[j].flagId == i + FLAG_DECORATION_2) - { - break; - } - } - VarSet(0x3f20 + gMapHeader.events->mapObjects[j].graphicsId, gUnknown_02038900.decoration->tiles[0]); - gSpecialVar_0x8005 = gMapHeader.events->mapObjects[j].localId; - gSpecialVar_0x8006 = gUnknown_020391A4; - gSpecialVar_0x8007 = gUnknown_020391A6; - show_sprite(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - sub_805C0F8(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); - sub_805C78C(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - break; - } - } -} - -bool8 sub_80FF58C/*IsThereRoomForMoreDecorations*/(void) -{ - u16 i; - for (i=0; i<ewram_1f000.size; i++) - { - if (ewram_1f000.items[i] == 0) - { - return TRUE; - } - } - return FALSE; -} - -void sub_80FF5BC(u8 taskId) -{ - if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION) - { - sub_80FEF74(); - sub_80FED1C(); - DisplayItemMessageOnField(taskId, gSecretBaseText_DecorCantPlace, sub_80FEFF4, 0); - } else if (sub_80FEFA4() == TRUE) - { - if (sub_80FF58C() == TRUE) - { - FadeScreen(1, 0); - gTasks[taskId].data[2] = 0; - gTasks[taskId].func = sub_80FF6AC; - } else - { - sub_80FEF74(); - sub_80FED1C(); - ConvertIntToDecimalStringN(gStringVar1, ewram_1f000.size, STR_CONV_MODE_RIGHT_ALIGN, 2); - if (!ewram_1f000.isPlayerRoom) - { - StringExpandPlaceholders(gStringVar4, gSecretBaseText_NoMoreDecor); - } else - { - StringExpandPlaceholders(gStringVar4, gSecretBaseText_NoMoreDecor2); - } - DisplayItemMessageOnField(taskId, gStringVar4, sub_80FEFF4, 0); - } - } else - { - sub_80FEF74(); - sub_80FED1C(); - DisplayItemMessageOnField(taskId, gSecretBaseText_InUseAlready, sub_80FEFF4, 0); - } -} - -void sub_80FF6AC(u8 taskId) -{ - switch (gTasks[taskId].data[2]) - { - case 0: - if (!gPaletteFade.active) - { - sub_80FF0E0(taskId); - DestroyVerticalScrollIndicator(TOP_ARROW); - DestroyVerticalScrollIndicator(BOTTOM_ARROW); - sub_80F9520(gUnknown_020388F7, 8); - BuyMenuFreeMemory(); - gTasks[taskId].data[2] = 1; - } - break; - case 1: - gPaletteFade.bufferTransferDisabled = 1; - AddDecorationIconObjectFromFieldObject(&gUnknown_02038900, gUnknown_020388D0[gUnknown_020388F5]); - sub_80FF960(taskId); - SetUpPlacingDecorationPlayerAvatar(taskId, &gUnknown_02038900); - pal_fill_black(); - gPaletteFade.bufferTransferDisabled = 0; - gTasks[taskId].data[2] = 2; - break; - case 2: - if (IsWeatherNotFadingIn() == TRUE) - { - gTasks[taskId].data[12] = 0; - sub_810065C(taskId); - } - break; - } -} - -void AddDecorationIconObjectFromFieldObject(struct UnkStruct_02038900 * unk_02038900, u8 decoIdx) -{ - sub_80FEF74(); - sub_80FED1C(); - sub_81006D0(unk_02038900); - unk_02038900->decoration = &gDecorations[decoIdx]; - if (gDecorations[decoIdx].permission != DECORPERM_SOLID_MAT) - { - sub_81008BC(unk_02038900); - sub_8100930(unk_02038900->decoration->shape); - sub_8100874(unk_02038900); - sub_810070C(unk_02038900->palette, ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles + 8 * unk_02038900->decoration->tiles[0])[7] >> 12); - LoadSpritePalette(&gUnknown_083EC954); - gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0]; - gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83EC93C, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 0); - } else - { - gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0]; - gUnknown_03004880.unk4 = AddPseudoFieldObject(unk_02038900->decoration->tiles[0], sub_81009A8, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 1); - gSprites[gUnknown_03004880.unk4].oam.priority = 1; - } -} - -void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct UnkStruct_02038900 *unk_02038900) -{ - u8 v0; - v0 = 16 * (u8)gTasks[taskId].data[5] + gUnknown_083EC900[unk_02038900->decoration->shape].x - 8 * ((u8)gTasks[taskId].data[5] - 1); - if (unk_02038900->decoration->shape == DECORSHAPE_3x1 || unk_02038900->decoration->shape == DECORSHAPE_3x3 || unk_02038900->decoration->shape == DECORSHAPE_3x2) - { - v0 -= 8; - } - if (gSaveBlock2.playerGender == MALE) - { - gUnknown_020391A9 = AddPseudoFieldObject(0xc1, SpriteCallbackDummy, v0, 0x48, 0); - } else - { - gUnknown_020391A9 = AddPseudoFieldObject(0xc2, SpriteCallbackDummy, v0, 0x48, 0); - } - gSprites[gUnknown_020391A9].oam.priority = 1; - DestroySprite(&gSprites[gUnknown_020391A8]); - gUnknown_020391A8 = gUnknown_03004880.unk4; -} - -void sub_80FF960(u8 taskId) -{ - switch (gDecorations[gUnknown_020388D0[gUnknown_020388F5]].shape) - { - case DECORSHAPE_1x1: - gTasks[taskId].data[5] = 1; - gTasks[taskId].data[6] = 1; - break; - case DECORSHAPE_2x1: - gTasks[taskId].data[5] = 2; - gTasks[taskId].data[6] = 1; - break; - case DECORSHAPE_3x1: - gTasks[taskId].data[5] = 3; - gTasks[taskId].data[6] = 1; - break; - case DECORSHAPE_4x2: - gTasks[taskId].data[5] = 4; - gTasks[taskId].data[6] = 2; - break; - case DECORSHAPE_2x2: - gTasks[taskId].data[5] = 2; - gTasks[taskId].data[6] = 2; - break; - case DECORSHAPE_1x2: - gTasks[taskId].data[5] = 1; - gTasks[taskId].data[6] = 2; - break; - case DECORSHAPE_1x3: - gTasks[taskId].data[5] = 1; - gTasks[taskId].data[6] = 3; - gTasks[taskId].data[1]++; - break; - case DECORSHAPE_2x4: - gTasks[taskId].data[5] = 2; - gTasks[taskId].data[6] = 4; - break; - case DECORSHAPE_3x3: - gTasks[taskId].data[5] = 3; - gTasks[taskId].data[6] = 3; - break; - case DECORSHAPE_3x2: - gTasks[taskId].data[5] = 3; - gTasks[taskId].data[6] = 2; - break; - } -} - -void sub_80FFAB0(u8 taskId) -{ - gTasks[taskId].data[10] = 0; - gSprites[gUnknown_020391A8].data[7] = 1; - gSprites[gUnknown_020391A9].data[7] = 1; - sub_810045C(); - sub_8100038(taskId); -} - -void sub_80FFB08(u8 taskId) -{ - gTasks[taskId].data[10] = 0; - gSprites[gUnknown_020391A8].data[7] = 1; - gSprites[gUnknown_020391A9].data[7] = 1; - sub_810045C(); - DisplayItemMessageOnField(taskId, gSecretBaseText_CancelDecorating, sub_8100248, 0); -} - -bool8 sub_80FFB6C(u8 a0, u16 a1) -{ - if (sub_8057274(a0) != 1 || a1 != 0) - { - return FALSE; - } - return TRUE; -} - -bool8 sub_80FFB94(u8 taskId, s16 x, s16 y, u16 decoId) -{ - if (x == gTasks[taskId].data[3] + 7 && y == gTasks[taskId].data[4] + 7 && decoId != 0) - { - return FALSE; - } - return TRUE; -} - -bool8 sub_80FFBDC(u16 a0, const struct Decoration *decoration) -{ - if (sub_8057274(a0) != 1) - { - if (decoration->id == DECOR_SOLID_BOARD && sub_8057300(a0) == 1) - { - return TRUE; - } - if (sub_805729C(a0)) - { - return TRUE; - } - } - return FALSE; -} - -// When behaviorBy is set, it is masked by 0xf000. This is the step that fails to match when built. -#ifdef NONMATCHING -bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) -{ - u8 i; - u8 j; - u8 behaviorAt; - u16 behaviorBy; - u8 mapY; - u8 mapX; - s16 curY; - s16 curX; - mapY = gTasks[taskId].data[6]; - mapX = gTasks[taskId].data[5]; - switch (decoration->permission) - { - case DECORPERM_SOLID_FLOOR: - case DECORPERM_PASS_FLOOR: - for (i=0; i<mapY; i++) - { - curY = gTasks[taskId].data[1] - i; - for (j=0; j<mapX; j++) - { - curX = gTasks[taskId].data[0] + j; - behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000; - if (!sub_80FFBDC(behaviorAt, decoration)) - { - return FALSE; - } - if (!sub_80FFB94(taskId, curX, curY, behaviorBy)) - { - return FALSE; - } - behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0); - if (behaviorAt != 0 && behaviorAt != 16) - { - return FALSE; - } - } - } - break; - case DECORPERM_BEHIND_FLOOR: - for (i=0; i<mapY-1; i++) - { - curY = gTasks[taskId].data[1] - i; - for (j=0; j<mapX; j++) - { - curX = gTasks[taskId].data[0] + j; - behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000; - if (!sub_805729C(behaviorAt) && !sub_80FFB6C(behaviorAt, behaviorBy)) - { - return FALSE; - } - if (!sub_80FFB94(taskId, curX, curY, behaviorBy)) - { - return FALSE; - } - if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16) - { - return FALSE; - } - } - } - curY = gTasks[taskId].data[1] - mapY + 1; - for (j=0; j<mapX; j++) - { - curX = gTasks[taskId].data[0] + j; - behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000; - if (!sub_805729C(behaviorAt) && !sub_80572B0(behaviorAt)) - { - return FALSE; - } - if (!sub_80FFB94(taskId, curX, curY, behaviorBy)) - { - return FALSE; - } - behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0); - if (behaviorAt != 0 && behaviorAt != 16) - { - return FALSE; - } - } - break; - case DECORPERM_NA_WALL: - for (i=0; i<mapY; i++) - { - curY = gTasks[taskId].data[1] - i; - for (j=0; j<mapX; j++) - { - curX = gTasks[taskId].data[0] + j; - if (!sub_80572B0(MapGridGetMetatileBehaviorAt(curX, curY))) - { - return FALSE; - } - if (MapGridGetMetatileIdAt(curX, curY + 1) == 0x28c) - { - return FALSE; - } - } - } - break; - case DECORPERM_SOLID_MAT: - curY = gTasks[taskId].data[1]; - for (j=0; j<mapX; j++) - { - curX = gTasks[taskId].data[0] + j; - behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - if (decoration->shape == DECORSHAPE_1x2) - { - if (!sub_80572EC(behaviorAt)) - { - return FALSE; - } - } - else if (!sub_80572D8(behaviorAt)) - { - if (!sub_80572EC(behaviorAt)) - { - return FALSE; - } - } - if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16) - { - return FALSE; - } - } - break; - } - return TRUE; -} -#else -__attribute__((naked)) -bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) -{ - asm(".syntax unified\n" - "\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x24\n" - "\tstr r1, [sp]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmov r10, r0\n" - "\tldr r1, _080FFC60 @ =gTasks\n" - "\tlsls r0, 2\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tadds r0, r1\n" - "\tldrb r2, [r0, 0x14]\n" - "\tstr r2, [sp, 0x4]\n" - "\tldrb r0, [r0, 0x12]\n" - "\tstr r0, [sp, 0x8]\n" - "\tldr r3, [sp]\n" - "\tldrb r0, [r3, 0x11]\n" - "\tadds r2, r1, 0\n" - "\tcmp r0, 0x4\n" - "\tbls _080FFC56\n" - "\tb _08100024\n" - "_080FFC56:\n" - "\tlsls r0, 2\n" - "\tldr r1, _080FFC64 @ =_080FFC68\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" - "_080FFC60: .4byte gTasks\n" - "_080FFC64: .4byte _080FFC68\n" - "\t.align 2, 0\n" - "_080FFC68:\n" - "\t.4byte _080FFC7C\n" - "\t.4byte _080FFC7C\n" - "\t.4byte _080FFD68\n" - "\t.4byte _080FFF1C\n" - "\t.4byte _080FFFA0\n" - "_080FFC7C:\n" - "\tmovs r6, 0\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r6, r0\n" - "\tbcc _080FFC86\n" - "\tb _08100024\n" - "_080FFC86:\n" - "\tmov r1, r10\n" - "\tlsls r1, 2\n" - "\tstr r1, [sp, 0x1C]\n" - "_080FFC8C:\n" - "\tmov r2, r10\n" - "\tlsls r0, r2, 2\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tldr r3, _080FFD64 @ =gTasks\n" - "\tadds r0, r3\n" - "\tldrh r0, [r0, 0xA]\n" - "\tsubs r0, r6\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tadds r6, 0x1\n" - "\tstr r6, [sp, 0x14]\n" - "\tldr r0, [sp, 0x8]\n" - "\tcmp r7, r0\n" - "\tbcs _080FFD56\n" - "\tmov r1, r9\n" - "\tlsls r1, 16\n" - "\tstr r1, [sp, 0xC]\n" - "\tasrs r1, 16\n" - "\tmov r9, r1\n" - "_080FFCB8:\n" - "\tldr r0, [sp, 0x1C]\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tldr r2, _080FFD64 @ =gTasks\n" - "\tadds r0, r2\n" - "\tldrh r0, [r0, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tmov r8, r0\n" - "\tasrs r6, r0, 16\n" - "\tadds r0, r6, 0\n" - "\tmov r1, r9\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r1, [sp, 0x14]\n" - "\tsubs r0, r3, r1\n" - "\tldr r2, [sp, 0x8]\n" - "\tadds r1, r0, 0\n" - "\tmuls r1, r2\n" - "\tadds r1, r7\n" - "\tldr r3, [sp]\n" - "\tldr r0, [r3, 0x1C]\n" - "\tlsls r1, 1\n" - "\tadds r1, r0\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 2\n" - "\tadds r0, r2, 0\n" - "\tldrh r1, [r1]\n" - "\tadds r0, r1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tbl GetBehaviorByMetatileId\n" - "\tmovs r3, 0xF0\n" - "\tlsls r3, 8\n" - "\tadds r1, r3, 0\n" - "\tadds r5, r1, 0\n" - "\tands r5, r0\n" - "\tadds r0, r4, 0\n" - "\tldr r1, [sp]\n" - "\tbl sub_80FFBDC\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFD1A\n" - "\tb _080FFFF4\n" - "_080FFD1A:\n" - "\tmov r0, r10\n" - "\tadds r1, r6, 0\n" - "\tmov r2, r9\n" - "\tadds r3, r5, 0\n" - "\tbl sub_80FFB94\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFD2E\n" - "\tb _080FFFF4\n" - "_080FFD2E:\n" - "\tmov r1, r8\n" - "\tlsrs r0, r1, 16\n" - "\tldr r2, [sp, 0xC]\n" - "\tlsrs r1, r2, 16\n" - "\tmovs r2, 0\n" - "\tbl GetFieldObjectIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r4, 0\n" - "\tbeq _080FFD4A\n" - "\tcmp r4, 0x10\n" - "\tbeq _080FFD4A\n" - "\tb _080FFFF4\n" - "_080FFD4A:\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFCB8\n" - "_080FFD56:\n" - "\tldr r1, [sp, 0x14]\n" - "\tlsls r0, r1, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r2, [sp, 0x4]\n" - "\tcmp r6, r2\n" - "\tbcc _080FFC8C\n" - "\tb _08100024\n" - "\t.align 2, 0\n" - "_080FFD64: .4byte gTasks\n" - "_080FFD68:\n" - "\tmovs r6, 0\n" - "\tmov r3, r10\n" - "\tlsls r3, 2\n" - "\tstr r3, [sp, 0x1C]\n" - "\tldr r0, [sp, 0x4]\n" - "\tsubs r0, 0x1\n" - "\tstr r0, [sp, 0x18]\n" - "\tcmp r6, r0\n" - "\tbge _080FFE54\n" - "\tadds r0, r3, 0\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tstr r0, [sp, 0x10]\n" - "_080FFD82:\n" - "\tldr r1, [sp, 0x10]\n" - "\tadds r0, r1, r2\n" - "\tldrh r0, [r0, 0xA]\n" - "\tsubs r0, r6\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tadds r6, 0x1\n" - "\tstr r6, [sp, 0x14]\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcs _080FFE48\n" - "\tlsls r0, 16\n" - "\tstr r0, [sp, 0x20]\n" - "_080FFDA0:\n" - "\tldr r1, [sp, 0x10]\n" - "\tadds r0, r1, r2\n" - "\tldrh r0, [r0, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tmov r8, r0\n" - "\tasrs r6, r0, 16\n" - "\tmov r2, r9\n" - "\tlsls r1, r2, 16\n" - "\tadds r0, r6, 0\n" - "\tasrs r1, 16\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp, 0x4]\n" - "\tldr r1, [sp, 0x14]\n" - "\tsubs r0, r3, r1\n" - "\tldr r2, [sp, 0x8]\n" - "\tadds r1, r0, 0\n" - "\tmuls r1, r2\n" - "\tadds r1, r7\n" - "\tldr r3, [sp]\n" - "\tldr r0, [r3, 0x1C]\n" - "\tlsls r1, 1\n" - "\tadds r1, r0\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 2\n" - "\tadds r0, r2, 0\n" - "\tldrh r1, [r1]\n" - "\tadds r0, r1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tbl GetBehaviorByMetatileId\n" - "\tmovs r3, 0xF0\n" - "\tlsls r3, 8\n" - "\tadds r1, r3, 0\n" - "\tadds r5, r1, 0\n" - "\tands r5, r0\n" - "\tadds r0, r4, 0\n" - "\tbl sub_805729C\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFE0C\n" - "\tadds r0, r4, 0\n" - "\tadds r1, r5, 0\n" - "\tbl sub_80FFB6C\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFE0C\n" - "\tb _080FFFF4\n" - "_080FFE0C:\n" - "\tmov r0, r10\n" - "\tadds r1, r6, 0\n" - "\tldr r3, [sp, 0x20]\n" - "\tasrs r2, r3, 16\n" - "\tadds r3, r5, 0\n" - "\tbl sub_80FFB94\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFE22\n" - "\tb _080FFFF4\n" - "_080FFE22:\n" - "\tmov r1, r8\n" - "\tlsrs r0, r1, 16\n" - "\tldr r2, [sp, 0x20]\n" - "\tlsrs r1, r2, 16\n" - "\tmovs r2, 0\n" - "\tbl GetFieldObjectIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x10\n" - "\tbeq _080FFE3A\n" - "\tb _080FFFF4\n" - "_080FFE3A:\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r2, _080FFF18 @ =gTasks\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFDA0\n" - "_080FFE48:\n" - "\tldr r1, [sp, 0x14]\n" - "\tlsls r0, r1, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r3, [sp, 0x18]\n" - "\tcmp r6, r3\n" - "\tblt _080FFD82\n" - "_080FFE54:\n" - "\tldr r0, [sp, 0x1C]\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tadds r0, r2\n" - "\tldrh r0, [r0, 0xA]\n" - "\tldr r1, [sp, 0x4]\n" - "\tsubs r0, r1\n" - "\tadds r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFE74\n" - "\tb _08100024\n" - "_080FFE74:\n" - "\tlsls r0, 16\n" - "\tstr r0, [sp, 0x20]\n" - "_080FFE78:\n" - "\tldr r0, [sp, 0x1C]\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tldr r1, _080FFF18 @ =gTasks\n" - "\tadds r0, r1\n" - "\tldrh r0, [r0, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tmov r8, r0\n" - "\tasrs r6, r0, 16\n" - "\tmov r2, r9\n" - "\tlsls r1, r2, 16\n" - "\tadds r0, r6, 0\n" - "\tasrs r1, 16\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp]\n" - "\tldr r0, [r3, 0x1C]\n" - "\tlsls r1, r7, 1\n" - "\tadds r1, r0\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 2\n" - "\tadds r0, r2, 0\n" - "\tldrh r1, [r1]\n" - "\tadds r0, r1\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tbl GetBehaviorByMetatileId\n" - "\tmovs r3, 0xF0\n" - "\tlsls r3, 8\n" - "\tadds r1, r3, 0\n" - "\tadds r5, r1, 0\n" - "\tands r5, r0\n" - "\tadds r0, r4, 0\n" - "\tbl sub_805729C\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFEDA\n" - "\tadds r0, r4, 0\n" - "\tbl sub_80572B0\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFEDA\n" - "\tb _080FFFF4\n" - "_080FFEDA:\n" - "\tmov r0, r10\n" - "\tadds r1, r6, 0\n" - "\tldr r3, [sp, 0x20]\n" - "\tasrs r2, r3, 16\n" - "\tadds r3, r5, 0\n" - "\tbl sub_80FFB94\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _080FFEF0\n" - "\tb _080FFFF4\n" - "_080FFEF0:\n" - "\tmov r1, r8\n" - "\tlsrs r0, r1, 16\n" - "\tldr r2, [sp, 0x20]\n" - "\tlsrs r1, r2, 16\n" - "\tmovs r2, 0\n" - "\tbl GetFieldObjectIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r4, 0\n" - "\tbeq _080FFF0A\n" - "\tcmp r4, 0x10\n" - "\tbne _080FFFF4\n" - "_080FFF0A:\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFE78\n" - "\tb _08100024\n" - "\t.align 2, 0\n" - "_080FFF18: .4byte gTasks\n" - "_080FFF1C:\n" - "\tmovs r6, 0\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r6, r0\n" - "\tbcc _080FFF26\n" - "\tb _08100024\n" - "_080FFF26:\n" - "\tmov r1, r10\n" - "\tlsls r0, r1, 2\n" - "\tadd r0, r10\n" - "\tlsls r1, r0, 3\n" - "\tldr r2, _080FFF9C @ =gTasks\n" - "\tadds r0, r1, r2\n" - "\tldrh r0, [r0, 0xA]\n" - "\tsubs r0, r6\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcs _080FFF8C\n" - "\tadds r0, r2, 0\n" - "\tadds r1, r0\n" - "\tmov r8, r1\n" - "\tmov r1, r9\n" - "\tlsls r0, r1, 16\n" - "\tasrs r5, r0, 16\n" - "_080FFF50:\n" - "\tmov r2, r8\n" - "\tldrh r0, [r2, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tasrs r4, r0, 16\n" - "\tadds r0, r4, 0\n" - "\tadds r1, r5, 0\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tbl sub_80572B0\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _080FFFF4\n" - "\tadds r0, r4, 0\n" - "\tadds r1, r5, 0x1\n" - "\tbl MapGridGetMetatileIdAt\n" - "\tmovs r1, 0xA3\n" - "\tlsls r1, 2\n" - "\tcmp r0, r1\n" - "\tbeq _080FFFF4\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFF50\n" - "_080FFF8C:\n" - "\tadds r0, r6, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r6, r0\n" - "\tbcc _080FFF26\n" - "\tb _08100024\n" - "\t.align 2, 0\n" - "_080FFF9C: .4byte gTasks\n" - "_080FFFA0:\n" - "\tmov r3, r10\n" - "\tlsls r1, r3, 2\n" - "\tadds r0, r1, r3\n" - "\tlsls r0, 3\n" - "\tadds r0, r2\n" - "\tldrh r0, [r0, 0xA]\n" - "\tmov r9, r0\n" - "\tmovs r7, 0\n" - "\tstr r1, [sp, 0x1C]\n" - "\tldr r0, [sp, 0x8]\n" - "\tcmp r7, r0\n" - "\tbcs _08100024\n" - "\tadds r6, r2, 0\n" - "\tmov r1, r9\n" - "\tlsls r1, 16\n" - "\tstr r1, [sp, 0x20]\n" - "_080FFFC0:\n" - "\tldr r0, [sp, 0x1C]\n" - "\tadd r0, r10\n" - "\tlsls r0, 3\n" - "\tadds r0, r6\n" - "\tldrh r0, [r0, 0x8]\n" - "\tadds r0, r7\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tasrs r0, 16\n" - "\tmov r2, r9\n" - "\tlsls r1, r2, 16\n" - "\tasrs r1, 16\n" - "\tbl MapGridGetMetatileBehaviorAt\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp]\n" - "\tldrb r0, [r3, 0x12]\n" - "\tcmp r0, 0x5\n" - "\tbne _080FFFF8\n" - "_080FFFE8:\n" - "\tadds r0, r4, 0\n" - "\tbl sub_80572EC\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _08100004\n" - "_080FFFF4:\n" - "\tmovs r0, 0\n" - "\tb _08100026\n" - "_080FFFF8:\n" - "\tadds r0, r4, 0\n" - "\tbl sub_80572D8\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _080FFFE8\n" - "_08100004:\n" - "\tadds r0, r5, 0\n" - "\tldr r2, [sp, 0x20]\n" - "\tlsrs r1, r2, 16\n" - "\tmovs r2, 0\n" - "\tbl GetFieldObjectIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x10\n" - "\tbne _080FFFF4\n" - "\tadds r0, r7, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tldr r3, [sp, 0x8]\n" - "\tcmp r7, r3\n" - "\tbcc _080FFFC0\n" - "_08100024:\n" - "\tmovs r0, 0x1\n" - "_08100026:\n" - "\tadd sp, 0x24\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r1}\n" - "\tbx r1\n" - ".syntax divided\n"); -} -#endif - -void sub_8100038(u8 taskId) -{ - if (sub_80FFC24(taskId, &gDecorations[gUnknown_020388D0[gUnknown_020388F5]]) == 1) - { - DisplayItemMessageOnField(taskId, gSecretBaseText_PlaceItHere, sub_81000A0, 0); - } else - { - PlaySE(SE_HAZURE); - DisplayItemMessageOnField(taskId, gSecretBaseText_CantBePlacedHere, sub_81006A8, 0); - } -} - -void sub_81000A0(u8 taskId) -{ - DisplayYesNoMenu(20, 8, 1); - DoYesNoFuncWithChoice(taskId, &gUnknown_083EC95C); -} - -void sub_81000C4(u8 taskId) -{ - Menu_EraseWindowRect(0, 0, 29, 19); - sub_8100174(taskId); - if (gDecorations[gUnknown_020388D0[gUnknown_020388F5]].permission != DECORPERM_SOLID_MAT) - { - sub_80FF394(gTasks[taskId].data[0], gTasks[taskId].data[1], gUnknown_020388D0[gUnknown_020388F5]); - } else - { - gUnknown_020391A4 = gTasks[taskId].data[0] - 7; - gUnknown_020391A6 = gTasks[taskId].data[1] - 7; - ScriptContext1_SetupScript(gUnknown_081A2F7B); - } - gSprites[gUnknown_020391A8].pos1.y += 2; - sub_810028C(taskId); -} - -void sub_8100174(u8 taskId) -{ - u16 i; - for (i=0; i<ewram_1f000.size; i++) - { - if (ewram_1f000.items[i] == 0) - { - ewram_1f000.items[i] = gUnknown_020388D0[gUnknown_020388F5]; - ewram_1f000.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7); - break; - } - } - if (!ewram_1f000.isPlayerRoom) - { - for (i=0; i<16; i++) - { - if (gUnknown_020388D6[i] == 0) - { - gUnknown_020388D6[i] = gUnknown_020388F5 + 1; - break; - } - } - } else - { - for (i=0; i<12; i++) - { - if (gUnknown_020388E6[i] == 0) - { - gUnknown_020388E6[i] = gUnknown_020388F5 + 1; - break; - } - } - } -} - -void sub_8100248(u8 taskId) -{ - DisplayYesNoMenu(20, 8, 1); - DoYesNoFuncWithChoice(taskId, &gUnknown_083EC964); -} - -void sub_810026C(u8 taskId) -{ - Menu_EraseWindowRect(0, 0, 29, 19); - sub_810028C(taskId); -} - -void sub_810028C(u8 taskId) -{ - FadeScreen(1, 0); - gTasks[taskId].data[2] = 0; - gTasks[taskId].func = c1_overworld_prev_quest; -} - -void c1_overworld_prev_quest(u8 taskId) -{ - switch (gTasks[taskId].data[2]) - { - case 0: - ScriptContext2_Enable(); - if (!gPaletteFade.active) - { - sub_80FF114(taskId); - gTasks[taskId].data[2] = 1; - } - break; - case 1: - sub_81016F4(); - FreeSpritePaletteByTag(0xbb8); - gFieldCallback = &sub_8100364; - SetMainCallback2(c2_exit_to_overworld_2_switch); - DestroyTask(taskId); - break; - } -} - -void sub_8100334(u8 taskId) -{ - if (IsWeatherNotFadingIn() == TRUE) - { - gTasks[taskId].func = sub_80FE948; - } -} - -void sub_8100364(void) -{ - ScriptContext2_Enable(); - LoadScrollIndicatorPalette(); - pal_fill_black(); - sub_80FE7EC(CreateTask(sub_8100334, 8)); -} - -bool8 sub_810038C(u8 taskId) -{ - s16 *data; - data = gTasks[taskId].data; - if (gUnknown_020391AA == DIR_SOUTH && data[1] - data[6] - 6 < 0) - { - data[1]++; - return FALSE; - } else if (gUnknown_020391AA == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height) - { - data[1]--; - return FALSE; - } else if (gUnknown_020391AA == DIR_WEST && data[0] - 7 < 0) - { - data[0]++; - return FALSE; - } else if (gUnknown_020391AA == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width) - { - data[0]--; - return FALSE; - } - return TRUE; -} - -bool8 sub_8100430(void) -{ - if ((gMain.heldKeys & DPAD_ANY) != DPAD_UP && (gMain.heldKeys & DPAD_ANY) != DPAD_DOWN && (gMain.heldKeys & DPAD_ANY) != DPAD_LEFT && (gMain.heldKeys & DPAD_ANY) != DPAD_RIGHT) - { - return FALSE; - } - return TRUE; -} - -void sub_810045C(void) -{ - gUnknown_020391AA = 0; - gSprites[gUnknown_020391A8].data[2] = 0; - gSprites[gUnknown_020391A8].data[3] = 0; -} - -void sub_8100494(u8 taskId) -{ - if (!gSprites[gUnknown_020391A8].data[4]) - { - if (gTasks[taskId].data[10] == 1) - { - gUnknown_083EC96C[gTasks[taskId].data[12]].yesFunc(taskId); - return; - } else if (gTasks[taskId].data[10] == 2) - { - gUnknown_083EC96C[gTasks[taskId].data[12]].noFunc(taskId); - return; - } - if ((gMain.heldKeys & DPAD_ANY) == DPAD_UP) - { - gUnknown_020391AA = DIR_SOUTH; - gSprites[gUnknown_020391A8].data[2] = 0; - gSprites[gUnknown_020391A8].data[3] = -2; - gTasks[taskId].data[1]--; - } - if ((gMain.heldKeys & DPAD_ANY) == DPAD_DOWN) - { - gUnknown_020391AA = DIR_NORTH; - gSprites[gUnknown_020391A8].data[2] = 0; - gSprites[gUnknown_020391A8].data[3] = 2; - gTasks[taskId].data[1]++; - } - if ((gMain.heldKeys & DPAD_ANY) == DPAD_LEFT) - { - gUnknown_020391AA = DIR_WEST; - gSprites[gUnknown_020391A8].data[2] = -2; - gSprites[gUnknown_020391A8].data[3] = 0; - gTasks[taskId].data[0]--; - } - if ((gMain.heldKeys & DPAD_ANY) == DPAD_RIGHT) - { - gUnknown_020391AA = DIR_EAST; - gSprites[gUnknown_020391A8].data[2] = 2; - gSprites[gUnknown_020391A8].data[3] = 0; - gTasks[taskId].data[0]++; - } - if (!sub_8100430() || !sub_810038C(taskId)) - { - sub_810045C(); - } - } - if (gUnknown_020391AA) - { - gSprites[gUnknown_020391A8].data[4]++; - gSprites[gUnknown_020391A8].data[4] &= 7; - } - if (!gTasks[taskId].data[10]) - { - if (gMain.newKeys & A_BUTTON) - { - gTasks[taskId].data[10] = A_BUTTON; - } - if (gMain.newKeys & B_BUTTON) - { - gTasks[taskId].data[10] = B_BUTTON; - } - } -} - -void sub_810065C(u8 taskId) -{ - Menu_EraseWindowRect(0, 0, 29, 19); - gSprites[gUnknown_020391A8].data[7] = 0; - gTasks[taskId].data[10] = 0; - gTasks[taskId].func = sub_8100494; -} - -void sub_81006A8(u8 taskId) -{ - if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) - { - sub_810065C(taskId); - } -} - -void sub_81006D0(struct UnkStruct_02038900 *unk_02038900) -{ - u16 i; - for (i=0; i<0x800; i++) - { - unk_02038900->image[i] = 0; - } - for (i=0; i<0x40; i++) - { - unk_02038900->tiles[i] = 0; - } -} - -void sub_810070C(u16 *a0, u16 a1) -{ - u16 i; - for (i=0; i<16; i++) - { - a0[i] = ((u16 *)gMapHeader.mapData->primaryTileset->palettes)[16 * a1 + i]; - } -} - -void sub_8100740(u8 *dest, u16 flags) -{ - u8 buffer[32]; - u16 mode; - u16 i; - mode = flags >> 10; - if (flags != 0) - { - flags &= 0x3ff; - } - for (i=0; i<32; i++) - { - buffer[i] = ((u8 *)gMapHeader.mapData->primaryTileset->tiles)[flags * 32 + i]; - } - switch (mode) - { - case 0: - for (i=0; i<32; i++) - { - dest[i] = buffer[i]; - } - break; - case 1: - for (i=0; i<8; i++) - { - dest[4*i] = (buffer[4*(i+1) - 1] >> 4) + ((buffer[4*(i+1) - 1] & 0xf) << 4); - dest[4*i + 1] = (buffer[4*(i+1) - 2] >> 4) + ((buffer[4*(i+1) - 2] & 0xf) << 4); - dest[4*i + 2] = (buffer[4*(i+1) - 3] >> 4) + ((buffer[4*(i+1) - 3] & 0xf) << 4); - dest[4*i + 3] = (buffer[4*(i+1) - 4] >> 4) + ((buffer[4*(i+1) - 4] & 0xf) << 4); - } - break; - case 2: - for (i=0; i<8; i++) - { - dest[4*i] = buffer[4*(7-i)]; - dest[4*i + 1] = buffer[4*(7-i) + 1]; - dest[4*i + 2] = buffer[4*(7-i) + 2]; - dest[4*i + 3] = buffer[4*(7-i) + 3]; - } - break; - case 3: - for (i=0; i<32; i++) - { - dest[i] = (buffer[31-i] >> 4) + ((buffer[31-i] & 0xf) << 4); - } - break; - } -} - -void sub_8100874(struct UnkStruct_02038900 *unk_02038900) -{ - u16 i; - for (i=0; i<0x40; i++) - sub_8100740(&unk_02038900->image[i * 32], unk_02038900->tiles[i]); -} - -u16 sub_810089C(u16 a0) -{ - return ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles)[a0] & 0xfff; -} - -const u8 Unknown_3EC660[] = {0, 1, 2, 3}; -const u8 Unknown_3EC664[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13}; -const u8 Unknown_3EC670[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; -const u8 Unknown_3EC680[] = {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21}; -const u8 Unknown_3EC68C[] = {0, 1, 2, 3, 4, 5, 6, 7}; -const u8 Unknown_3EC694[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; -const u8 Unknown_3EC6B4[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45}; -const u8 Unknown_3EC6D8[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29}; - -const u8 Unknown_3EC6F0[] = {0, 0, 0, 0}; -const u8 Unknown_3EC6F4[] = {0, 0, 1, 1, 0, 0, 1, 1}; -const u8 Unknown_3EC6FC[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2}; -const u8 Unknown_3EC708[] = {0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7}; -const u8 Unknown_3EC728[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3}; -const u8 Unknown_3EC738[] = {0, 0, 0, 0, 1, 1, 1, 1}; -const u8 Unknown_3EC740[] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2}; -const u8 Unknown_3EC74C[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7}; -const u8 Unknown_3EC76C[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8}; -const u8 Unknown_3EC790[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5}; - -const u8 Unknown_3EC7A8[] = {4, 5, 6, 7}; -const u8 Unknown_3EC7AC[] = {4, 5, 4, 5, 6, 7, 6, 7}; -const u8 Unknown_3EC7B4[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; -const u8 Unknown_3EC7C0[] = {4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7}; -const u8 Unknown_3EC7E0[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7}; -const u8 Unknown_3EC7F0[] = {4, 5, 6, 7, 4, 5, 6, 7}; -const u8 Unknown_3EC7F8[] = {4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7}; -const u8 Unknown_3EC804[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7}; -const u8 Unknown_3EC824[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; -const u8 Unknown_3EC848[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; - -const struct UnkStruct_803EC860 gUnknown_083EC860[] = { - {Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4}, - {Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8}, - {Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc}, - {Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20}, - {Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10}, - {Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8}, - {Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc}, - {Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20}, - {Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24}, - {Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18} -}; - -const struct UnkStruct_083EC900 gUnknown_083EC900[] = { - {0, 1, 0x78, 0x4e}, - {1, 2, 0x80, 0x4e}, - {1, 3, 0x90, 0x56}, - {1, 3, 0x90, 0x46}, - {0, 2, 0x80, 0x46}, - {2, 2, 0x78, 0x46}, - {2, 3, 0x80, 0x56}, - {2, 3, 0x80, 0x36}, - {0, 3, 0x90, 0x46}, - {1, 3, 0x90, 0x46} -}; - -const union AnimCmd gSpriteAnim_83EC928[] = { - ANIMCMD_FRAME(.imageValue = 0, .duration = 0), - ANIMCMD_END -}; - -const union AnimCmd *const gSpriteAnimTable_83EC930[] = { - gSpriteAnim_83EC928 -}; - -const struct SpriteFrameImage gSpriteImageTable_83EC934[] = { - {.data = gUnknown_02038900.image, .size = sizeof(gUnknown_02038900.image)} -}; - -const struct SpriteTemplate gSpriteTemplate_83EC93C = { - .tileTag = 0xffff, - .paletteTag = 3000, - .oam = &gUnknown_020391AC, - .anims = gSpriteAnimTable_83EC930, - .images = gSpriteImageTable_83EC934, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81009A8 -}; - -const struct SpritePalette gUnknown_083EC954 = {.data = (u16 *)&gUnknown_02038900.palette, .tag = 3000}; - -const struct YesNoFuncTable gUnknown_083EC95C = {.yesFunc = sub_81000C4, .noFunc = sub_810065C}; -const struct YesNoFuncTable gUnknown_083EC964 = {.yesFunc = sub_810026C, .noFunc = sub_810065C}; -const struct YesNoFuncTable gUnknown_083EC96C[] = { - {.yesFunc = sub_80FFAB0, .noFunc = sub_80FFB08}, - {.yesFunc = sub_8100F88, .noFunc = sub_8100FB4} -}; - -const u8 gUnknown_083EC97C[] = {4, 4, 4, 4, 0, 3, 3, 0}; -const u8 gUnknown_083EC984[] = {4, 4, 4, 4, 0, 4, 3, 0}; - -const u16 gUnknown_083EC98C[] = INCBIN_U16("graphics/unknown/83EC98C.gbapal"); -const u16 Unknown_3EC9AC[] = INCBIN_U16("graphics/unknown/83EC9AC.gbapal"); -const struct YesNoFuncTable gUnknown_083EC9CC = {.yesFunc = sub_810153C, .noFunc = sub_8100EEC}; -const struct YesNoFuncTable gUnknown_083EC9D4 = {.yesFunc = sub_8101590, .noFunc = sub_8100EEC}; -const u32 gSpriteImage_83EC9DC[] = INCBIN_U32("graphics/unknown_sprites/83EC9DC.4bpp"); -const struct SpritePalette gUnknown_083ECA5C = {.data = gUnknown_083EC98C, .tag = 8}; -const struct SpritePalette gUnknown_083ECA64 = {.data = Unknown_3EC9AC, .tag = 8}; -const struct OamData gOamData_83ECA6C = { - .size = 1, .priority = 1 -}; - -const union AnimCmd gSpriteAnim_83ECA74[] = { - ANIMCMD_FRAME(.imageValue = 0, .duration = 0), - ANIMCMD_END -}; - -const union AnimCmd *const gSpriteAnimTable_83ECA7C[] = { - gSpriteAnim_83ECA74 -}; - -const struct SpriteFrameImage gSpriteImageTable_83ECA80[] = { - obj_frame_tiles(gSpriteImage_83EC9DC) -}; - -const struct SpriteTemplate gSpriteTemplate_83ECA88 = { - .tileTag = 0xffff, - .paletteTag = 8, - .oam = &gOamData_83ECA6C, - .anims = gSpriteAnimTable_83ECA7C, - .images = gSpriteImageTable_83ECA80, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101698 -}; - -const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C}; - -u8 *const unref_label_083ECAA8[] = {gSharedMem}; - -void sub_81008BC(struct UnkStruct_02038900 *unk_02038900) -{ - u8 i; - u8 shape; - shape = unk_02038900->decoration->shape; - for (i=0; i<gUnknown_083EC860[shape].size; i++) - { - unk_02038900->tiles[gUnknown_083EC860[shape].tiles[i]] = sub_810089C(unk_02038900->decoration->tiles[gUnknown_083EC860[shape].y[i]] * 8 + gUnknown_083EC860[shape].x[i]); - } -} - -void sub_8100930(u8 decoShape) -{ - gUnknown_020391AC.y = 0; - gUnknown_020391AC.affineMode = 0; - gUnknown_020391AC.objMode = 0; - gUnknown_020391AC.mosaic = 0; - gUnknown_020391AC.bpp = 0; - gUnknown_020391AC.shape = gUnknown_083EC900[decoShape].shape; - gUnknown_020391AC.x = 0; - gUnknown_020391AC.matrixNum = 0; - gUnknown_020391AC.size = gUnknown_083EC900[decoShape].size; - gUnknown_020391AC.tileNum = 0; - gUnknown_020391AC.priority = 1; - gUnknown_020391AC.paletteNum = 0; -} - -void sub_81009A8(struct Sprite *sprite) -{ - sprite->data[2] = 0; - sprite->data[3] = 0; - sprite->data[4] = 0; - sprite->data[5] = 0; - sprite->data[6] = 0; - sprite->data[7] = 0; - sprite->callback = sub_81009C0; -} - -void sub_81009C0(struct Sprite *sprite) -{ - if (sprite->data[7] == 0) - { - if (sprite->data[6] < 15) - { - sprite->invisible = 0; - } else - { - sprite->invisible = 1; - } - sprite->data[6] = (sprite->data[6] + 1) & 0x1f; - } else - { - sprite->invisible = 0; - } -} - -void sub_8100A0C(u8 taskId) -{ - if (sub_8100D38(taskId) == 1) - { - FadeScreen(1, 0); - gTasks[taskId].data[2] = 0; - gTasks[taskId].func = sub_8100E70; - } else - { - DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecorInUse, sub_80FE428, 0); - } -} - -void sub_8100A60(u8 a0) -{ - ewram_1f000.items[a0] = 0; - ewram_1f000.pos[a0] = 0; -} - -void sub_8100A7C(void) -{ - u16 i; - gSpecialVar_0x8005 = 0; - gSpecialVar_Result = 0; - if (gSpecialVar_0x8004 == gUnknown_02039234) - { - gSpecialVar_Result = 1; - } else if (gDecorations[ewram_1f000.items[gUnknown_020391B4[gSpecialVar_0x8004].decorId]].permission == DECORPERM_SOLID_MAT) - { - gSpecialVar_0x8005 = gUnknown_020391B4[gSpecialVar_0x8004].flagId; - sub_8100A60(gUnknown_020391B4[gSpecialVar_0x8004].decorId); - for (i=0; i<gMapHeader.events->mapObjectCount; i++) - { - if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8005) - { - gSpecialVar_0x8006 = gMapHeader.events->mapObjects[i].localId; - break; - } - } - } -} - -void sub_8100B20(void) -{ - u8 i; - for (i=0; i<gMapHeader.events->mapObjectCount; i++) - { - if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8004) - { - gSpecialVar_0x8005 = gMapHeader.events->mapObjects[i].localId; - break; - } - } -} - -void sub_8100B6C(void) -{ - u8 i; - u8 j; - u8 k; - u8 x; - u8 y; - u8 permission; - for (i=0; i<gUnknown_02039234; i++) - { - permission = gDecorations[ewram_1f000.items[gUnknown_020391B4[i].decorId]].permission; - x = ewram_1f000.pos[gUnknown_020391B4[i].decorId] >> 4; - y = ewram_1f000.pos[gUnknown_020391B4[i].decorId] & 0xf; - if (permission != DECORPERM_SOLID_MAT) - { - if (ewram_1f000.items[gUnknown_020391B4[i].decorId] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(x + 7, y + 7) == 0x28c) - { - gUnknown_020391B4[i].height++; - } - for (j=0; j<gUnknown_020391B4[i].height; j++) - { - for (k=0; k<gUnknown_020391B4[i].width; k++) - { - MapGridSetMetatileEntryAt(x + 7 + k, y + 7 - j, ((u16 *)gMapHeader.mapData->map)[(x + k) + gMapHeader.mapData->width * (y - j)] | 0x3000); - } - } - sub_8100A60(gUnknown_020391B4[i].decorId); - } - } -} - -void sub_8100C88(u8 taskId) -{ - switch (gTasks[taskId].data[2]) - { - case 0: - sub_8100B6C(); - gTasks[taskId].data[2] = 1; - break; - case 1: - if (!gPaletteFade.active) - { - DrawWholeMapView(); - ScriptContext1_SetupScript(gUnknown_081A2F8A); - Menu_EraseWindowRect(0, 0, 29, 19); - gTasks[taskId].data[2] = 2; - } - break; - case 2: - ScriptContext2_Enable(); - sub_80FED90(taskId); - pal_fill_black(); - gTasks[taskId].data[2] = 3; - break; - case 3: - if (IsWeatherNotFadingIn() == TRUE) - { - gTasks[taskId].data[13] = -1; - DisplayItemMessageOnField(taskId, gSecretBaseText_DecorReturned, sub_81010F0, 0); - } - break; - } -} - -bool8 sub_8100D38(u8 taskId) -{ - u16 i; - for (i=0; i<ewram_1f000.size; i++) - { - if (ewram_1f000.items[i] != 0) - { - gTasks[taskId].data[13] = i; - return TRUE; - } - } - return FALSE; -} - -void SetUpPuttingAwayDecorationPlayerAvatar(void) -{ - player_get_direction_lower_nybble(); - Menu_EraseWindowRect(0, 0, 29, 19); - gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0]; - sub_81016C8(); - gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83ECA88, 0x78, 0x50, 0); - if (gSaveBlock2.playerGender == MALE) - { - gUnknown_020391A9 = AddPseudoFieldObject(0xc1, SpriteCallbackDummy, 0x88, 0x48, 0); - } else - { - gUnknown_020391A9 = AddPseudoFieldObject(0xc2, SpriteCallbackDummy, 0x88, 0x48, 0); - } - gSprites[gUnknown_020391A9].oam.priority = 1; - DestroySprite(&gSprites[gUnknown_020391A8]); - gUnknown_020391A8 = gUnknown_03004880.unk4; - gSprites[gUnknown_020391A8].oam.priority = 1; -} - -void sub_8100E70(u8 taskId) -{ - s16 *data; - data = gTasks[taskId].data; - switch (data[2]) - { - case 0: - if (!gPaletteFade.active) - { - sub_80FF0E0(taskId); - data[2] = 1; - data[6] = 1; - data[5] = 1; - Menu_DestroyCursor(); - } - break; - case 1: - SetUpPuttingAwayDecorationPlayerAvatar(); - pal_fill_black(); - data[2] = 2; - break; - case 2: - if (IsWeatherNotFadingIn() == TRUE) - { - data[12] = 1; - sub_8100EEC(taskId); - } - break; - } -} - -void sub_8100EEC(u8 taskId) -{ - Menu_EraseWindowRect(0, 0, 29, 19); - gSprites[gUnknown_020391A8].data[7] = 0; - gSprites[gUnknown_020391A8].invisible = 0; - gSprites[gUnknown_020391A8].callback = sub_8101698; - gSprites[gUnknown_020391A9].pos1.x = 0x88; - gSprites[gUnknown_020391A9].pos1.y = 0x48; - gTasks[taskId].data[10] = 0; - gTasks[taskId].func = sub_8100494; -} - -void sub_8100F88(u8 taskId) -{ - gTasks[taskId].data[10] = 0; - sub_810045C(); - sub_8101024(taskId); -} - -void sub_8100FB4(u8 taskId) -{ - gTasks[taskId].data[10] = 0; - sub_810045C(); - gSprites[gUnknown_020391A8].invisible = 0; - gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy; - DisplayItemMessageOnField(taskId, gSecretBaseText_StopPuttingAwayDecor, sub_810156C, 0); -} - -void sub_8101024(u8 taskId) -{ - u8 mtBehavior; - s16 *data; - sub_8101460(taskId); - if (gUnknown_02039234 != 0) - { - DisplayItemMessageOnField(taskId, gSecretBaseText_ReturnDecor, sub_8101518, 0); - } else - { - data = gTasks[taskId].data; - mtBehavior = MapGridGetMetatileBehaviorAt(data[0], data[1]); - if (MetatileBehavior_IsSecretBasePC(mtBehavior) == TRUE || sub_805738C(mtBehavior) == TRUE) - { - gSprites[gUnknown_020391A8].invisible = 0; - gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy; - DisplayItemMessageOnField(taskId, gSecretBaseText_StopPuttingAwayDecor, sub_810156C, 0); - } else - { - DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecor, sub_81010F0, 0); - } - } -} - -void sub_81010F0(u8 taskId) -{ - if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) - { - sub_8100EEC(taskId); - } -} - -void sub_8101118(u8 decorIdx, struct UnkStruct_020391B4 *unk_020391B4) -{ - if (gDecorations[decorIdx].shape == DECORSHAPE_1x1) - { - unk_020391B4->width = 1; - unk_020391B4->height = 1; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_2x1) - { - unk_020391B4->width = 2; - unk_020391B4->height = 1; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_3x1) - { - unk_020391B4->width = 3; - unk_020391B4->height = 1; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_4x2) - { - unk_020391B4->width = 4; - unk_020391B4->height = 2; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_2x2) - { - unk_020391B4->width = 2; - unk_020391B4->height = 2; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_1x2) - { - unk_020391B4->width = 1; - unk_020391B4->height = 2; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_1x3) - { - unk_020391B4->width = 1; - unk_020391B4->height = 3; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_2x4) - { - unk_020391B4->width = 2; - unk_020391B4->height = 4; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_3x3) - { - unk_020391B4->width = 3; - unk_020391B4->height = 3; - } else if (gDecorations[decorIdx].shape == DECORSHAPE_3x2) - { - unk_020391B4->width = 3; - unk_020391B4->height = 2; - } -} - -void sub_8101198(u8 x, u8 y) -{ - gSprites[gUnknown_020391A8].invisible = 1; - gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy; - gSprites[gUnknown_020391A9].pos1.x = 0x88 + x * 16; - gSprites[gUnknown_020391A9].pos1.y = 0x48 + y * 16; -} - -bool8 sub_8101200(u8 taskId, u8 decorIdx, struct UnkStruct_020391B4 *unk_020391B4) -{ - u8 x; - u8 y; - u8 xOff; - u8 yOff; - x = gTasks[taskId].data[0] - 7; - y = gTasks[taskId].data[1] - 7; - xOff = ewram_1f000.pos[decorIdx] >> 4; - yOff = ewram_1f000.pos[decorIdx] & 0xf; - if (ewram_1f000.items[decorIdx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28c) - { - unk_020391B4->height--; - } - if (x >= xOff && x < xOff + unk_020391B4->width && y > yOff - unk_020391B4->height && y <= yOff) - { - sub_8101198(unk_020391B4->width - (x - xOff + 1), yOff - y); - return TRUE; - } - return FALSE; -} - -void sub_81012A0(void) -{ - u8 xOff; - u8 yOff; - u16 i; - xOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] >> 4; - yOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] & 0xf; - for (i=0; i<0x40; i++) - { - if (gSaveBlock1.mapObjectTemplates[i].x == xOff && gSaveBlock1.mapObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1.mapObjectTemplates[i].flagId)) - { - gUnknown_020391B4[gUnknown_02039234].flagId = gSaveBlock1.mapObjectTemplates[i].flagId; - break; - } - } -} - -bool8 sub_8101340(u8 taskId) -{ - u16 i; - for (i=0; i<ewram_1f000.size; i++) - { - if (ewram_1f000.items[i] != 0) - { - if (gDecorations[ewram_1f000.items[i]].permission == DECORPERM_SOLID_MAT) - { - sub_8101118(ewram_1f000.items[i], gUnknown_020391B4); - if (sub_8101200(taskId, i, gUnknown_020391B4) == TRUE) - { - gUnknown_020391B4->decorId = i; - sub_81012A0(); - gUnknown_02039234 = 1; - return TRUE; - } - } - } - } - return FALSE; -} - -void sub_81013B8(u8 a0, u8 a1, u8 a2, u8 a3) -{ - u8 i; - u8 xOff; - u8 yOff; - u8 decorIdx; - for (i=0; i<ewram_1f000.size; i++) - { - decorIdx = ewram_1f000.items[i]; - xOff = ewram_1f000.pos[i] >> 4; - yOff = ewram_1f000.pos[i] & 0xf; - if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SOLID_MAT && a0 <= xOff && a1 <= yOff && a2 >= xOff && a3 >= yOff) - { - gUnknown_020391B4[gUnknown_02039234].decorId = i; - sub_81012A0(); - gUnknown_02039234++; - } - } -} - -#ifdef NONMATCHING -void sub_8101460(u8 taskId) -{ - u8 i; - u8 xOff; - u8 yOff; - gUnknown_02039234 = 0; - if (sub_8101340(taskId) != TRUE) - { - for (i=0; i<ewram_1f000.size; i++) - { - if (ewram_1f000.items[i] == 0) // This is using the wrong register! - { - continue; - } - sub_8101118(ewram_1f000.items[i], gUnknown_020391B4); - if (sub_8101200(taskId, i, gUnknown_020391B4) == TRUE) - { - gUnknown_020391B4[0].decorId = i; - gUnknown_02039234++; - break; - } - } - if (gUnknown_02039234 != 0) - { - xOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] >> 4; - yOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] & 0xf; - sub_81013B8(xOff, yOff - gUnknown_020391B4[0].height + 1, xOff + gUnknown_020391B4[0].width - 1, yOff); - } - } -} -#else -__attribute__((naked)) -void sub_8101460(u8 taskId) -{ - asm(".syntax unified\n" - "\tpush {r4-r7,lr}\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r4, _081014B8 @ =gUnknown_02039234\n" - "\tmovs r0, 0\n" - "\tstrb r0, [r4]\n" - "\tadds r0, r6, 0\n" - "\tbl sub_8101340\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x1\n" - "\tbeq _08101504\n" - "\tmovs r5, 0\n" - "\tldr r0, _081014BC @ =ewram_1f000\n" - "\tldrb r1, [r0, 0x8]\n" - "\tcmp r5, r1\n" - "\tbcs _081014D2\n" - "\tadds r7, r4, 0\n" - "_08101486:\n" - "\tldr r0, [r0]\n" - "\tadds r0, r5\n" - "\tldrb r1, [r0] @ compiler incorrectly uses r0 for this and the next instruction\n" - "\tcmp r1, 0\n" - "\tbeq _081014C4\n" - "\tldr r4, _081014C0 @ =gUnknown_020391B4\n" - "\tadds r0, r1, 0\n" - "\tadds r1, r4, 0\n" - "\tbl sub_8101118\n" - "\tadds r0, r6, 0\n" - "\tadds r1, r5, 0\n" - "\tadds r2, r4, 0\n" - "\tbl sub_8101200\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x1\n" - "\tbne _081014C4\n" - "\tstrb r5, [r4]\n" - "\tldrb r0, [r7]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r7]\n" - "\tb _081014D2\n" - "\t.align 2, 0\n" - "_081014B8: .4byte gUnknown_02039234\n" - "_081014BC: .4byte 0x201f000\n" - "_081014C0: .4byte gUnknown_020391B4\n" - "_081014C4:\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tldr r0, _0810150C @ =ewram_1f000\n" - "\tldrb r1, [r0, 0x8]\n" - "\tcmp r5, r1\n" - "\tbcc _08101486\n" - "_081014D2:\n" - "\tldr r0, _08101510 @ =gUnknown_02039234\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbeq _08101504\n" - "\tldr r0, _0810150C @ =ewram_1f000\n" - "\tldr r2, _08101514 @ =gUnknown_020391B4\n" - "\tldrb r1, [r2]\n" - "\tldr r0, [r0, 0x4]\n" - "\tadds r0, r1\n" - "\tldrb r1, [r0]\n" - "\tlsrs r0, r1, 4\n" - "\tmovs r3, 0xF\n" - "\tands r3, r1\n" - "\tldrb r1, [r2, 0x2]\n" - "\tsubs r1, r3, r1\n" - "\tadds r1, 0x1\n" - "\tlsls r1, 24\n" - "\tlsrs r1, 24\n" - "\tldrb r2, [r2, 0x1]\n" - "\tadds r2, r0\n" - "\tsubs r2, 0x1\n" - "\tlsls r2, 24\n" - "\tlsrs r2, 24\n" - "\tbl sub_81013B8\n" - "_08101504:\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0810150C: .4byte 0x201f000\n" - "_08101510: .4byte gUnknown_02039234\n" - "_08101514: .4byte gUnknown_020391B4\n" - ".syntax divided\n"); -} -#endif - -void sub_8101518(u8 taskId) -{ - DisplayYesNoMenu(20, 8, 1); - DoYesNoFuncWithChoice(taskId, &gUnknown_083EC9CC); -} - -void sub_810153C(u8 taskId) -{ - FadeScreen(1, 0); - gTasks[taskId].data[2] = 0; - gTasks[taskId].func = sub_8100C88; -} - -void sub_810156C(u8 taskId) -{ - DisplayYesNoMenu(20, 8, 1); - DoYesNoFuncWithChoice(taskId, &gUnknown_083EC9D4); -} - -void sub_8101590(u8 taskId) -{ - Menu_EraseWindowRect(0, 0, 29, 19); - sub_81015B0(taskId); -} - -void sub_81015B0(u8 taskId) -{ - FadeScreen(1, 0); - gTasks[taskId].data[2] = 0; - gTasks[taskId].func = sub_81015E0; -} - -void sub_81015E0(u8 taskId) -{ - switch (gTasks[taskId].data[2]) - { - case 0: - if (!gPaletteFade.active) - { - sub_80FF114(taskId); - gTasks[taskId].data[2] = 1; - } - break; - case 1: - sub_81016F4(); - gFieldCallback = sub_8101678; - SetMainCallback2(c2_exit_to_overworld_2_switch); - DestroyTask(taskId); - break; - } -} - -void sub_8101648(u8 taskId) -{ - if (IsWeatherNotFadingIn() == TRUE) - { - gTasks[taskId].func = Task_DecorationPCProcessMenuInput; - } -} - -void sub_8101678(void) -{ - pal_fill_black(); - Menu_DisplayDialogueFrame(); - sub_80FE220(); - CreateTask(sub_8101648, 8); -} - -void sub_8101698(struct Sprite *sprite) -{ - sprite->data[0] = (sprite->data[0] + 1) & 0x1f; - if (sprite->data[0] >= 16) - { - sprite->invisible = TRUE; - } else - { - sprite->invisible = FALSE; - } -} - -void sub_81016C8(void) -{ - if (gSaveBlock2.playerGender == MALE) - { - LoadSpritePalette(&gUnknown_083ECA5C); - } else - { - LoadSpritePalette(&gUnknown_083ECA64); - } -} - -void sub_81016F4(void) -{ - FreeSpritePaletteByTag(8); -} - -void sub_8101700(u8 taskId) -{ - if (!sub_81341D4()) - { - DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); - } else - { - gTasks[taskId].data[11] = 1; - gUnknown_020388F6 = 0; - sub_80FE5AC(taskId); - } -} - -void sub_8101750(u8 taskId) -{ - if (!sub_81341D4()) - { - DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); - } else - { - gTasks[taskId].data[11] = 2; - gUnknown_020388F6 = 0; - sub_80FE5AC(taskId); - } -} - -void sub_81017A0(u8 taskId) -{ - sub_80FEF74(); - sub_80FED1C(); - if (sub_80FEFA4() == TRUE) - { - StringCopy(gStringVar1, gDecorations[gUnknown_020388D0[gUnknown_020388F5]].name); - StringExpandPlaceholders(gStringVar4, gSecretBaseText_WillBeDiscarded); - DisplayItemMessageOnField(taskId, gStringVar4, sub_8101824, 0); - } else - { - DisplayItemMessageOnField(taskId, gSecretBaseText_DecorInUse, sub_80FEFF4, 0); - } -} - -void sub_8101824(u8 taskId) -{ - DisplayYesNoMenu(20, 8, 1); - DoYesNoFuncWithChoice(taskId, &gUnknown_083ECAA0); -} - -void sub_8101848(u8 taskId) -{ - Menu_EraseWindowRect(20, 8, 26, 14); - sub_8109A30(gUnknown_020388D0[gUnknown_020388F5]); - gUnknown_020388D0[gUnknown_020388F5] = DECOR_NONE; - sub_80FF098(taskId); - DisplayItemMessageOnField(taskId, gSecretBaseText_DecorThrownAway, sub_80FEFF4, 0); -} |