summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/scrcmd_17.s215
-rw-r--r--arm9/asm/unk_02038C78.s6
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/src/scrcmd_amity_square.c200
-rw-r--r--include/constants/accessories.h105
-rw-r--r--include/scrcmd.h7
7 files changed, 318 insertions, 223 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 94bf6e35..eb02cf99 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -171,7 +171,7 @@ Static arm9
Object scrcmd_coins.o
Object scrcmd_money.o
Object scrcmd_daycare.o
- Object scrcmd_17.o
+ Object scrcmd_amity_square.o
Object scrcmd_party.o
Object scrcmd_fossils.o
Object scrcmd_prizes.o
diff --git a/arm9/asm/scrcmd_17.s b/arm9/asm/scrcmd_17.s
deleted file mode 100644
index 794a16de..00000000
--- a/arm9/asm/scrcmd_17.s
+++ /dev/null
@@ -1,215 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F4494
-UNK_020F4494: ; 0x020F4494
- .byte 0x00, 0x00, 0x05, 0x00, 0x15, 0x00, 0x0B, 0x00, 0x1A, 0x00, 0x0D, 0x00, 0x19, 0x00, 0x1F, 0x00
- .byte 0x10, 0x00, 0x21, 0x00, 0x02, 0x00, 0x13, 0x00, 0x14, 0x00, 0x18, 0x00, 0x11, 0x00, 0x00, 0x00
- .byte 0x17, 0x00, 0x1D, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x09, 0x00, 0x03, 0x00, 0x0B, 0x00
- .byte 0x16, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x12, 0x00
- .byte 0x15, 0x00, 0x0D, 0x00, 0x1F, 0x00, 0x09, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x06, 0x00
- .byte 0x05, 0x00, 0x03, 0x00, 0x1A, 0x00, 0x13, 0x00, 0x14, 0x00, 0x01, 0x00, 0x07, 0x00, 0x10, 0x00
- .byte 0x16, 0x00, 0x0F, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x14, 0x00, 0x1D, 0x00, 0x04, 0x00
- .byte 0x08, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0A, 0x00
-
- .text
-
- thumb_func_start ScrCmd_Unk0215
-ScrCmd_Unk0215: ; 0x02044158
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205F54C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start ScrCmd_Unk0216
-ScrCmd_Unk0216: ; 0x0204416C
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205F55C
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk0217
-ScrCmd_Unk0217: ; 0x02044198
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- bl LCRandom
- mov r1, #0x64
- bl _s32_div_f
- lsl r0, r1, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0xf
- bhs _020441D6
- mov r0, #0x0
- b _02044218
-_020441D6:
- cmp r0, #0x1e
- bhs _020441DE
- mov r0, #0x1
- b _02044218
-_020441DE:
- cmp r0, #0x2d
- bhs _020441E6
- mov r0, #0x2
- b _02044218
-_020441E6:
- cmp r0, #0x3c
- bhs _020441EE
- mov r0, #0x3
- b _02044218
-_020441EE:
- cmp r0, #0x46
- bhs _020441F6
- mov r0, #0x4
- b _02044218
-_020441F6:
- cmp r0, #0x50
- bhs _020441FE
- mov r0, #0x5
- b _02044218
-_020441FE:
- cmp r0, #0x58
- bhs _02044206
- mov r0, #0x6
- b _02044218
-_02044206:
- cmp r0, #0x5d
- bhs _0204420E
- mov r0, #0x7
- b _02044218
-_0204420E:
- cmp r0, #0x62
- bhs _02044216
- mov r0, #0x8
- b _02044218
-_02044216:
- mov r0, #0x9
-_02044218:
- ldr r2, _020442B4 ; =0x0000011D
- cmp r5, r2
- bgt _02044244
- bge _02044290
- cmp r5, #0x27
- bgt _02044236
- cmp r5, #0x23
- blt _02044230
- beq _02044284
- cmp r5, #0x27
- beq _02044290
- b _0204429C
-_02044230:
- cmp r5, #0x19
- beq _02044294
- b _0204429C
-_02044236:
- cmp r5, #0x36
- bgt _0204423E
- beq _0204428C
- b _0204429C
-_0204423E:
- cmp r5, #0xff
- beq _02044288
- b _0204429C
-_02044244:
- add r1, r2, #0x0
- add r1, #0x8c
- cmp r5, r1
- bgt _0204426C
- add r1, r2, #0x0
- add r1, #0x8c
- cmp r5, r1
- bge _02044288
- add r1, r2, #0x0
- add r1, #0xf
- cmp r5, r1
- bgt _02044264
- add r2, #0xf
- cmp r5, r2
- beq _02044284
- b _0204429C
-_02044264:
- add r2, #0x84
- cmp r5, r2
- beq _0204428C
- b _0204429C
-_0204426C:
- add r1, r2, #0x0
- add r1, #0x8e
- cmp r5, r1
- bgt _0204427C
- add r2, #0x8e
- cmp r5, r2
- beq _02044298
- b _0204429C
-_0204427C:
- add r2, #0x9b
- cmp r5, r2
- beq _02044298
- b _0204429C
-_02044284:
- mov r2, #0x0
- b _0204429E
-_02044288:
- mov r2, #0x1
- b _0204429E
-_0204428C:
- mov r2, #0x2
- b _0204429E
-_02044290:
- mov r2, #0x3
- b _0204429E
-_02044294:
- mov r2, #0x4
- b _0204429E
-_02044298:
- mov r2, #0x5
- b _0204429E
-_0204429C:
- mov r2, #0x0
-_0204429E:
- add r3, r2, #0x0
- mov r1, #0x14
- mul r3, r1
- ldr r2, _020442B8 ; =UNK_020F4494
- lsl r1, r0, #0x1
- add r0, r2, r3
- ldrh r0, [r1, r0]
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- nop
-_020442B4: .word 0x0000011D
-_020442B8: .word UNK_020F4494
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index aea1dbf8..d33d8df2 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -682,9 +682,9 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_GetPartyMonNature
.word ScrCmd_FindPartyMonWithNature
.word ScrCmd_Unk0214
- .word ScrCmd_Unk0215
- .word ScrCmd_Unk0216
- .word ScrCmd_Unk0217
+ .word ScrCmd_ClearAmitySquareSteps
+ .word ScrCmd_CheckAmitySquareSteps
+ .word ScrCmd_GetAmitySquareAccessory
.word ScrCmd_Unk0218
.word ScrCmd_Unk0219
.word ScrCmd_Unk021A
diff --git a/arm9/global.inc b/arm9/global.inc
index b46f57ad..9b994394 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -3315,9 +3315,9 @@
.extern ScrCmd_Unk01A6
.extern ScrCmd_Unk01A7
.extern ScrCmd_Unk01AD
-.extern ScrCmd_Unk0215
-.extern ScrCmd_Unk0216
-.extern ScrCmd_Unk0217
+.extern ScrCmd_ClearAmitySquareSteps
+.extern ScrCmd_CheckAmitySquareSteps
+.extern ScrCmd_GetAmitySquareAccessory
.extern ScrCmd_GiveMon
.extern ScrCmd_GetPartyMonSpecies
.extern ScrCmd_CheckPartyMonOTID
diff --git a/arm9/src/scrcmd_amity_square.c b/arm9/src/scrcmd_amity_square.c
new file mode 100644
index 00000000..c957dec1
--- /dev/null
+++ b/arm9/src/scrcmd_amity_square.c
@@ -0,0 +1,200 @@
+#include "scrcmd.h"
+#include "constants/accessories.h"
+#include "constants/pokemon.h"
+#include "event_data.h"
+
+extern void FUN_0205F54C(struct ScriptState* state);
+extern u16 FUN_0205F55C(struct ScriptState* state);
+
+static const u16 sAmitySquarePossibleAccessoriesByPokemon[6][10] = {
+ { // Clefairy and Skitty
+ ACCESSORY_WHITE_FLUFF,
+ ACCESSORY_ORANGE_FLUFF,
+ ACCESSORY_WHITE_FEATHER,
+ ACCESSORY_MINI_PEBBLE,
+ ACCESSORY_SMALL_LEAF,
+ ACCESSORY_BLUE_SCALE,
+
+ ACCESSORY_WHITE_BEARD,
+ ACCESSORY_THIN_MUSHROOM,
+ ACCESSORY_BIG_SCALE,
+
+ ACCESSORY_STUMP
+ },
+
+ { // Torchic and Drifloon
+ ACCESSORY_PINK_FLUFF,
+ ACCESSORY_RED_FEATHER,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_BLACK_BEARD,
+ ACCESSORY_NARROW_SCALE,
+ ACCESSORY_WHITE_FLUFF,
+
+ ACCESSORY_WHITE_MOUSTACHE,
+ ACCESSORY_SHED_CLAW,
+ ACCESSORY_NARROW_LEAF,
+
+ ACCESSORY_PURPLE_SCALE
+ },
+
+ { // Psyduck and Pachirisu
+ ACCESSORY_SNAGGY_PEBBLE,
+ ACCESSORY_JAGGED_BOULDER,
+ ACCESSORY_BROWN_FLUFF,
+ ACCESSORY_MINI_PEBBLE,
+ ACCESSORY_BLACK_MOUSTACHE,
+ ACCESSORY_SHED_HORN,
+
+ ACCESSORY_NARROW_SCALE,
+ ACCESSORY_ROUND_PEBBLE,
+ ACCESSORY_GREEN_SCALE,
+
+ ACCESSORY_THICK_MUSHROOM
+ },
+
+ { // Jigglypuff and Shroomish
+ ACCESSORY_PINK_SCALE,
+ ACCESSORY_BLUE_FEATHER,
+ ACCESSORY_WHITE_FEATHER,
+ ACCESSORY_BLUE_SCALE,
+ ACCESSORY_THIN_MUSHROOM,
+ ACCESSORY_JAGGED_BOULDER,
+
+ ACCESSORY_WHITE_BEARD,
+ ACCESSORY_BLACK_BEARD,
+ ACCESSORY_BIG_LEAF,
+
+ ACCESSORY_ROUND_PEBBLE
+ },
+
+ { // Pikachu
+ ACCESSORY_ORANGE_FLUFF,
+ ACCESSORY_BROWN_FLUFF,
+ ACCESSORY_SMALL_LEAF,
+ ACCESSORY_RED_FEATHER,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_YELLOW_FLUFF,
+
+ ACCESSORY_GLITTER_BOULDER,
+ ACCESSORY_BIG_SCALE,
+ ACCESSORY_BLACK_MOUSTACHE,
+
+ ACCESSORY_PURPLE_SCALE
+ },
+
+ { // Buneary and Happiny
+ ACCESSORY_PINK_SCALE,
+ ACCESSORY_SHED_HORN,
+ ACCESSORY_PINK_FLUFF,
+ ACCESSORY_YELLOW_FEATHER,
+ ACCESSORY_SHED_CLAW,
+ ACCESSORY_BLACK_FLUFF,
+
+ ACCESSORY_SNAGGY_PEBBLE,
+ ACCESSORY_BIG_LEAF,
+ ACCESSORY_GREEN_SCALE,
+
+ ACCESSORY_BLACK_PEBBLE
+ },
+};
+
+THUMB_FUNC BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205F54C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = FUN_0205F55C(state);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 rand = (u16)(LCRandom() % 100);
+
+ u32 j;
+ if (rand < 15)
+ {
+ j = 0;
+ }
+ else if (rand < 30)
+ {
+ j = 1;
+ }
+ else if (rand < 45)
+ {
+ j = 2;
+ }
+ else if (rand < 60)
+ {
+ j = 3;
+ }
+ else if (rand < 70)
+ {
+ j = 4;
+ }
+ else if (rand < 80)
+ {
+ j = 5;
+ }
+ else if (rand < 88)
+ {
+ j = 6;
+ }
+ else if (rand < 93)
+ {
+ j = 7;
+ }
+ else if (rand < 98)
+ {
+ j = 8;
+ }
+ else
+ {
+ j = 9;
+ }
+
+ u32 i;
+ switch (species)
+ {
+ case SPECIES_CLEFAIRY:
+ case SPECIES_SKITTY:
+ i = 0;
+ break;
+ case SPECIES_TORCHIC:
+ case SPECIES_DRIFLOON:
+ i = 1;
+ break;
+ case SPECIES_PSYDUCK:
+ case SPECIES_PACHIRISU:
+ i = 2;
+ break;
+ case SPECIES_JIGGLYPUFF:
+ case SPECIES_SHROOMISH:
+ i = 3;
+ break;
+ case SPECIES_PIKACHU:
+ i = 4;
+ break;
+ case SPECIES_BUNEARY:
+ case SPECIES_HAPPINY:
+ i = 5;
+ break;
+ default:
+ i = 0;
+ break;
+ }
+
+ *ret_ptr = sAmitySquarePossibleAccessoriesByPokemon[i][j];
+ return FALSE;
+}
diff --git a/include/constants/accessories.h b/include/constants/accessories.h
new file mode 100644
index 00000000..907e12cb
--- /dev/null
+++ b/include/constants/accessories.h
@@ -0,0 +1,105 @@
+#ifndef POKEDIAMOND_CONSTANTS_ACCESSORIES_H
+#define POKEDIAMOND_CONSTANTS_ACCESSORIES_H
+
+#define ACCESSORY_WHITE_FLUFF 0
+#define ACCESSORY_YELLOW_FLUFF 1
+#define ACCESSORY_PINK_FLUFF 2
+#define ACCESSORY_BROWN_FLUFF 3
+#define ACCESSORY_BLACK_FLUFF 4
+#define ACCESSORY_ORANGE_FLUFF 5
+#define ACCESSORY_ROUND_PEBBLE 6
+#define ACCESSORY_GLITTER_BOULDER 7
+#define ACCESSORY_SNAGGY_PEBBLE 8
+#define ACCESSORY_JAGGED_BOULDER 9
+#define ACCESSORY_BLACK_PEBBLE 10
+#define ACCESSORY_MINI_PEBBLE 11
+#define ACCESSORY_PINK_SCALE 12
+#define ACCESSORY_BLUE_SCALE 13
+#define ACCESSORY_GREEN_SCALE 14
+#define ACCESSORY_PURPLE_SCALE 15
+#define ACCESSORY_BIG_SCALE 16
+#define ACCESSORY_NARROW_SCALE 17
+#define ACCESSORY_BLUE_FEATHER 18
+#define ACCESSORY_RED_FEATHER 19
+#define ACCESSORY_YELLOW_FEATHER 20
+#define ACCESSORY_WHITE_FEATHER 21
+#define ACCESSORY_BLACK_MOUSTACHE 22
+#define ACCESSORY_WHITE_MOUSTACHE 23
+#define ACCESSORY_BLACK_BEARD 24
+#define ACCESSORY_WHITE_BEARD 25
+#define ACCESSORY_SMALL_LEAF 26
+#define ACCESSORY_BIG_LEAF 27
+#define ACCESSORY_NARROW_LEAF 28
+#define ACCESSORY_SHED_CLAW 29
+#define ACCESSORY_SHED_HORN 30
+#define ACCESSORY_THIN_MUSHROOM 31
+#define ACCESSORY_THICK_MUSHROOM 32
+#define ACCESSORY_STUMP 33
+#define ACCESSORY_PRETTY_DEWDROP 34
+#define ACCESSORY_SNOW_CRYSTAL 35
+#define ACCESSORY_SPARKS 36
+#define ACCESSORY_SHIMMERING_FIRE 37
+#define ACCESSORY_MYSTIC_FIRE 38
+#define ACCESSORY_DETERMINATION 39
+#define ACCESSORY_PECULIAR_SPOON 40
+#define ACCESSORY_PUFFY_SMOKE 41
+#define ACCESSORY_POISON_EXTRACT 42
+#define ACCESSORY_WEALTHY_COIN 43
+#define ACCESSORY_EERIE_THING 44
+#define ACCESSORY_SPRING 45
+#define ACCESSORY_SEASHELL 46
+#define ACCESSORY_HUMMING_NOTE 47
+#define ACCESSORY_SHINY_POWDER 48
+#define ACCESSORY_GLITTER_POWDER 49
+#define ACCESSORY_RED_FLOWER 50
+#define ACCESSORY_PINK_FLOWER 51
+#define ACCESSORY_WHITE_FLOWER 52
+#define ACCESSORY_BLUE_FLOWER 53
+#define ACCESSORY_ORANGE_FLOWER 54
+#define ACCESSORY_YELLOW_FLOWER 55
+#define ACCESSORY_GOOGLY_SPECS 56
+#define ACCESSORY_BLACK_SPECS 57
+#define ACCESSORY_GORGEOUS_SPECS 58
+#define ACCESSORY_SWEET_CANDY 59
+#define ACCESSORY_CONFETTI 60
+#define ACCESSORY_COLORED_PARASOL 61
+#define ACCESSORY_OLD_UMBRELLA 62
+#define ACCESSORY_SPOTLIGHT 63
+#define ACCESSORY_CAPE 64
+#define ACCESSORY_STANDING_MIKE 65
+#define ACCESSORY_SURFBOARD 66
+#define ACCESSORY_CARPET 67
+#define ACCESSORY_RETRO_PIPE 68
+#define ACCESSORY_FLUFFY_BED 69
+#define ACCESSORY_MIRROR_BALL 70
+#define ACCESSORY_PHOTO_BOARD 71
+#define ACCESSORY_PINK_BARRETTE 72
+#define ACCESSORY_RED_BARRETTE 73
+#define ACCESSORY_BLUE_BARRETTE 74
+#define ACCESSORY_YELLOW_BARRETTE 75
+#define ACCESSORY_GREEN_BARRETTE 76
+#define ACCESSORY_PINK_BALLOON 77
+#define ACCESSORY_RED_BALLOONS 78
+#define ACCESSORY_BLUE_BALLOONS 79
+#define ACCESSORY_YELLOW_BALLOON 80
+#define ACCESSORY_GREEN_BALLOONS 81
+#define ACCESSORY_LACE_HEADDRESS 82
+#define ACCESSORY_TOP_HAT 83
+#define ACCESSORY_SILK_VEIL 84
+#define ACCESSORY_HEROIC_HEADBAND 85
+#define ACCESSORY_PROFESSOR_HAT 86
+#define ACCESSORY_FLOWER_STAGE 87
+#define ACCESSORY_GOLD_PEDESTAL 88
+#define ACCESSORY_GLASS_STAGE 89
+#define ACCESSORY_AWARD_PODIUM 90
+#define ACCESSORY_CUBE_STAGE 91
+#define ACCESSORY_TURTWIG_MASK 92
+#define ACCESSORY_CHIMCHAR_MASK 93
+#define ACCESSORY_PIPLUP_MASK 94
+#define ACCESSORY_BIG_TREE 95
+#define ACCESSORY_FLAG 96
+#define ACCESSORY_CROWN 97
+#define ACCESSORY_TIARA 98
+#define ACCESSORY_COMET 99
+
+#endif
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 5e28a4d0..8c89e230 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -249,7 +249,12 @@ BOOL ScrCmd_Unk01A6(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01A7(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx);
-//scrcmd_18.c
+//scrcmd_amity_square.c
+BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx);
+BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx);
+BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx);
+
+//scrcmd_party.c
BOOL ScrCmd_GiveMon(struct ScriptContext* ctx);
BOOL ScrCmd_GetPartyMonSpecies(struct ScriptContext* ctx);
BOOL ScrCmd_CheckPartyMonOTID(struct ScriptContext* ctx);