summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-10 21:33:54 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-10 21:33:54 -0500
commite44c0f897d2d02f153d5adf139be3bac25e1ee93 (patch)
tree1576169b9c437f34fee74d303ca64956d2a28a6b
parente0726bf8d6af39f287c65ad22ce192988e8468bb (diff)
through sub_809960C
-rw-r--r--asm/pokemon_storage_system.s429
-rw-r--r--src/pokemon/pokemon_storage_system_3.c145
2 files changed, 144 insertions, 430 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index a794269eb..2f7caa703 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,435 +5,6 @@
.text
- thumb_func_start sub_8099388
-sub_8099388: @ 8099388
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- strh r1, [r2, 0x30]
- cmp r1, 0
- bne _0809939C
- movs r3, 0x68
- movs r4, 0x40
- b _080993AE
-_0809939C:
- movs r3, 0x98
- subs r1, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 19
- movs r1, 0x80
- lsls r1, 13
- adds r0, r1
- lsrs r4, r0, 16
-_080993AE:
- ldrh r0, [r2, 0x20]
- lsls r0, 3
- strh r0, [r2, 0x32]
- ldrh r0, [r2, 0x22]
- lsls r0, 3
- strh r0, [r2, 0x34]
- lsls r1, r3, 3
- movs r3, 0x32
- ldrsh r0, [r2, r3]
- subs r0, r1, r0
- cmp r0, 0
- bge _080993C8
- adds r0, 0x7
-_080993C8:
- asrs r0, 3
- strh r0, [r2, 0x36]
- lsls r0, r4, 16
- asrs r0, 13
- movs r3, 0x34
- ldrsh r1, [r2, r3]
- subs r0, r1
- cmp r0, 0
- bge _080993DC
- adds r0, 0x7
-_080993DC:
- asrs r0, 3
- strh r0, [r2, 0x38]
- movs r0, 0x8
- strh r0, [r2, 0x3A]
- ldr r0, _080993F0 @ =sub_80993F4
- str r0, [r2, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080993F0: .4byte sub_80993F4
- thumb_func_end sub_8099388
-
- thumb_func_start sub_80993F4
-sub_80993F4: @ 80993F4
- push {r4,lr}
- adds r3, r0, 0
- ldrh r2, [r3, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08099424
- ldrh r0, [r3, 0x36]
- ldrh r4, [r3, 0x32]
- adds r0, r4
- strh r0, [r3, 0x32]
- ldrh r1, [r3, 0x38]
- ldrh r4, [r3, 0x34]
- adds r1, r4
- strh r1, [r3, 0x34]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r3, 0x20]
- lsls r1, 16
- asrs r1, 19
- strh r1, [r3, 0x22]
- subs r0, r2, 0x1
- strh r0, [r3, 0x3A]
- b _08099468
-_08099424:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _08099434
- movs r0, 0x68
- strh r0, [r3, 0x20]
- movs r0, 0x40
- b _08099446
-_08099434:
- movs r0, 0x98
- strh r0, [r3, 0x20]
- movs r4, 0x30
- ldrsh r1, [r3, r4]
- subs r1, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, 0x10
-_08099446:
- strh r0, [r3, 0x22]
- ldr r0, _08099470 @ =SpriteCallbackDummy
- str r0, [r3, 0x1C]
- ldr r0, _08099474 @ =gPokemonStorageSystemPtr
- ldr r2, [r0]
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r1, 2
- ldr r4, _08099478 @ =0x00001038
- adds r0, r2, r4
- adds r0, r1
- str r3, [r0]
- ldr r0, _0809947C @ =0x00001171
- adds r2, r0
- ldrb r0, [r2]
- subs r0, 0x1
- strb r0, [r2]
-_08099468:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099470: .4byte SpriteCallbackDummy
-_08099474: .4byte gPokemonStorageSystemPtr
-_08099478: .4byte 0x00001038
-_0809947C: .4byte 0x00001171
- thumb_func_end sub_80993F4
-
- thumb_func_start sub_8099480
-sub_8099480: @ 8099480
- push {r4,lr}
- ldr r0, _080994A0 @ =gPokemonStorageSystemPtr
- ldr r0, [r0]
- ldr r1, _080994A4 @ =0x00001034
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- beq _08099498
- bl sub_8099BE0
- movs r0, 0
- str r0, [r4]
-_08099498:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080994A0: .4byte gPokemonStorageSystemPtr
-_080994A4: .4byte 0x00001034
- thumb_func_end sub_8099480
-
- thumb_func_start sub_80994A8
-sub_80994A8: @ 80994A8
- push {r4-r6,lr}
- movs r3, 0
- ldr r1, _080994FC @ =gPokemonStorageSystemPtr
- ldr r1, [r1]
- ldr r2, _08099500 @ =0x00001038
- adds r5, r1, r2
- lsls r0, 16
- asrs r4, r0, 16
- movs r6, 0x5
- negs r6, r6
-_080994BC:
- lsls r0, r3, 2
- adds r2, r5, r0
- ldr r1, [r2]
- cmp r1, 0
- beq _0809950E
- ldrh r0, [r1, 0x22]
- adds r0, r4, r0
- strh r0, [r1, 0x22]
- ldr r2, [r2]
- ldrh r1, [r2, 0x26]
- ldrh r0, [r2, 0x22]
- adds r1, r0
- adds r0, r2, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 13
- adds r0, r1
- lsrs r0, 16
- cmp r0, 0xC0
- bls _08099504
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _0809950E
- .align 2, 0
-_080994FC: .4byte gPokemonStorageSystemPtr
-_08099500: .4byte 0x00001038
-_08099504:
- adds r2, 0x3E
- ldrb r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- strb r0, [r2]
-_0809950E:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _080994BC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80994A8
-
- thumb_func_start sub_8099520
-sub_8099520: @ 8099520
- push {r4,lr}
- lsls r0, 24
- ldr r1, _08099544 @ =gPokemonStorageSystemPtr
- ldr r1, [r1]
- lsrs r0, 22
- ldr r2, _08099548 @ =0x00001038
- adds r1, r2
- adds r4, r1, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _0809953E
- bl sub_8099BE0
- movs r0, 0
- str r0, [r4]
-_0809953E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099544: .4byte gPokemonStorageSystemPtr
-_08099548: .4byte 0x00001038
- thumb_func_end sub_8099520
-
- thumb_func_start sub_809954C
-sub_809954C: @ 809954C
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, _0809957C @ =gPokemonStorageSystemPtr
- ldr r0, [r0]
- ldr r1, _08099580 @ =0x00001038
- adds r6, r0, r1
-_08099558:
- lsls r0, r5, 2
- adds r4, r6, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _0809956A
- bl sub_8099BE0
- movs r0, 0
- str r0, [r4]
-_0809956A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08099558
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809957C: .4byte gPokemonStorageSystemPtr
-_08099580: .4byte 0x00001038
- thumb_func_end sub_809954C
-
- thumb_func_start sub_8099584
-sub_8099584: @ 8099584
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r5, r1, 0
- cmp r4, 0
- bne _080995B4
- ldr r3, _080995AC @ =gPokemonStorageSystemPtr
- ldr r0, [r3]
- ldr r5, _080995B0 @ =0x00001034
- adds r2, r0, r5
- lsls r1, 2
- adds r5, 0x4
- adds r0, r5
- adds r0, r1
- ldr r1, [r0]
- str r1, [r2]
- str r4, [r0]
- b _080995D0
- .align 2, 0
-_080995AC: .4byte gPokemonStorageSystemPtr
-_080995B0: .4byte 0x00001034
-_080995B4:
- cmp r4, 0x1
- bne _080995F4
- ldr r3, _080995FC @ =gPokemonStorageSystemPtr
- ldr r0, [r3]
- ldr r1, _08099600 @ =0x00001034
- adds r2, r0, r1
- lsls r1, r5, 2
- ldr r4, _08099604 @ =0x00001050
- adds r0, r4
- adds r0, r1
- ldr r1, [r0]
- str r1, [r2]
- movs r1, 0
- str r1, [r0]
-_080995D0:
- ldr r2, [r3]
- ldr r5, _08099600 @ =0x00001034
- adds r2, r5
- ldr r1, [r2]
- ldr r0, _08099608 @ =sub_80999C4
- str r0, [r1, 0x1C]
- ldr r3, [r2]
- ldrb r1, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r0, [r2]
- adds r0, 0x43
- movs r1, 0x7
- strb r1, [r0]
-_080995F4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080995FC: .4byte gPokemonStorageSystemPtr
-_08099600: .4byte 0x00001034
-_08099604: .4byte 0x00001050
-_08099608: .4byte sub_80999C4
- thumb_func_end sub_8099584
-
- thumb_func_start sub_809960C
-sub_809960C: @ 809960C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- cmp r0, 0xE
- bne _08099654
- ldr r4, _08099648 @ =gPokemonStorageSystemPtr
- ldr r0, [r4]
- lsls r1, r6, 2
- ldr r2, _0809964C @ =0x00001038
- adds r3, r0, r2
- adds r3, r1
- ldr r1, _08099650 @ =0x00001034
- adds r0, r1
- ldr r2, [r0]
- str r2, [r3]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r3]
- adds r0, 0x43
- movs r1, 0xB
- strb r1, [r0]
- b _0809968A
- .align 2, 0
-_08099648: .4byte gPokemonStorageSystemPtr
-_0809964C: .4byte 0x00001038
-_08099650: .4byte 0x00001034
-_08099654:
- ldr r5, _080996A0 @ =gPokemonStorageSystemPtr
- ldr r0, [r5]
- lsls r1, r6, 2
- ldr r2, _080996A4 @ =0x00001050
- adds r3, r0, r2
- adds r3, r1
- ldr r1, _080996A8 @ =0x00001034
- adds r0, r1
- ldr r2, [r0]
- str r2, [r3]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r4, [r3]
- adds r0, r6, 0
- movs r1, 0x6
- bl __umodsi3
- movs r1, 0x12
- subs r1, r0
- adds r4, 0x43
- strb r1, [r4]
- adds r4, r5, 0
-_0809968A:
- ldr r1, [r4]
- ldr r2, _080996A8 @ =0x00001034
- adds r1, r2
- ldr r2, [r1]
- ldr r0, _080996AC @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
- movs r0, 0
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080996A0: .4byte gPokemonStorageSystemPtr
-_080996A4: .4byte 0x00001050
-_080996A8: .4byte 0x00001034
-_080996AC: .4byte SpriteCallbackDummy
- thumb_func_end sub_809960C
-
thumb_func_start sub_80996B0
sub_80996B0: @ 80996B0
push {r4,lr}
diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c
index 230e9445b..28b9e2655 100644
--- a/src/pokemon/pokemon_storage_system_3.c
+++ b/src/pokemon/pokemon_storage_system_3.c
@@ -13,7 +13,8 @@
// Static ROM declarations
void sub_8098E68(struct Sprite *sprite);
-void sub_8099388(struct Sprite *sprite, u16 a0);
+void sub_8099388(struct Sprite *sprite, u16 a1);
+void sub_80993F4(struct Sprite *sprite);
void sub_80999C4(struct Sprite *sprite);
struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 a2, s16 a3, u8 a4, u8 a5);
void sub_8099BE0(struct Sprite *sprite);
@@ -310,3 +311,145 @@ u8 sub_8099374(void)
{
return gPokemonStorageSystemPtr->unk_1171;
}
+
+void sub_8099388(struct Sprite *sprite, u16 a1)
+{
+ s16 r3;
+ s16 r4;
+
+ sprite->data[1] = a1;
+ if (a1 == 0)
+ {
+ r3 = 0x68;
+ r4 = 0x40;
+ }
+ else
+ {
+ r3 = 0x98;
+ r4 = 24 * (a1 - 1) + 0x10;
+ }
+ sprite->data[2] = sprite->pos1.x << 3;
+ sprite->data[3] = sprite->pos1.y << 3;
+ sprite->data[4] = (r3 * 8 - sprite->data[2]) / 8;
+ sprite->data[5] = (r4 * 8 - sprite->data[3]) / 8;
+ sprite->data[6] = 8;
+ sprite->callback = sub_80993F4;
+}
+
+void sub_80993F4(struct Sprite *sprite)
+{
+ if (sprite->data[6])
+ {
+ sprite->data[2] += sprite->data[4];
+ sprite->data[3] += sprite->data[5];
+ sprite->pos1.x = sprite->data[2] >> 3;
+ sprite->pos1.y = sprite->data[3] >> 3;
+ sprite->data[6]--;
+ }
+ else
+ {
+ if (sprite->data[1] == 0)
+ {
+ sprite->pos1.x = 0x68;
+ sprite->pos1.y = 0x40;
+ }
+ else
+ {
+ sprite->pos1.x = 0x98;
+ sprite->pos1.y = (sprite->data[1] - 1) * 24 + 0x10;
+ }
+ sprite->callback = SpriteCallbackDummy;
+ gPokemonStorageSystemPtr->unk_1038[sprite->data[1]] = sprite;
+ gPokemonStorageSystemPtr->unk_1171--;
+ }
+}
+
+void sub_8099480(void)
+{
+ if (gPokemonStorageSystemPtr->unk_1034)
+ {
+ sub_8099BE0(gPokemonStorageSystemPtr->unk_1034);
+ gPokemonStorageSystemPtr->unk_1034 = NULL;
+ }
+}
+
+void sub_80994A8(s16 y)
+{
+ u16 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1038[i])
+ {
+ s16 yy;
+ gPokemonStorageSystemPtr->unk_1038[i]->pos1.y += y;
+ yy = gPokemonStorageSystemPtr->unk_1038[i]->pos1.y + gPokemonStorageSystemPtr->unk_1038[i]->pos2.y + gPokemonStorageSystemPtr->unk_1038[i]->centerToCornerVecY;
+ if (yy < -0x10 || yy > 0xb0)
+ gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE;
+ else
+ gPokemonStorageSystemPtr->unk_1038[i]->invisible = FALSE;
+ }
+ }
+}
+
+void sub_8099520(u8 a0)
+{
+ if (gPokemonStorageSystemPtr->unk_1038[a0])
+ {
+ sub_8099BE0(gPokemonStorageSystemPtr->unk_1038[a0]);
+ gPokemonStorageSystemPtr->unk_1038[a0] = NULL;
+ }
+}
+
+void sub_809954C(void)
+{
+ u16 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1038[i])
+ {
+ sub_8099BE0(gPokemonStorageSystemPtr->unk_1038[i]);
+ gPokemonStorageSystemPtr->unk_1038[i] = NULL;
+ }
+ }
+}
+
+void sub_8099584(u8 a0, u8 a1)
+{
+ if (a0 == 0)
+ {
+ gPokemonStorageSystemPtr->unk_1034 = gPokemonStorageSystemPtr->unk_1038[a1];
+ gPokemonStorageSystemPtr->unk_1038[a1] = NULL;
+ }
+ else if (a0 == 1)
+ {
+ gPokemonStorageSystemPtr->unk_1034 = gPokemonStorageSystemPtr->unk_1050[a1];
+ gPokemonStorageSystemPtr->unk_1050[a1] = NULL;
+ }
+ else
+ {
+ return;
+ }
+ gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4;
+ gPokemonStorageSystemPtr->unk_1034->oam.priority = 1;
+ gPokemonStorageSystemPtr->unk_1034->subpriority = 7;
+}
+
+void sub_809960C(u8 a0, u8 a1)
+{
+ if (a0 == 14)
+ {
+ gPokemonStorageSystemPtr->unk_1038[a1] = gPokemonStorageSystemPtr->unk_1034;
+ gPokemonStorageSystemPtr->unk_1038[a1]->oam.priority = 1;
+ gPokemonStorageSystemPtr->unk_1038[a1]->subpriority = 11;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_1050[a1] = gPokemonStorageSystemPtr->unk_1034;
+ gPokemonStorageSystemPtr->unk_1050[a1]->oam.priority = 2;
+ gPokemonStorageSystemPtr->unk_1050[a1]->subpriority = 18 - (a1 % 6);
+ }
+ gPokemonStorageSystemPtr->unk_1034->callback = SpriteCallbackDummy;
+ gPokemonStorageSystemPtr->unk_1034 = NULL;
+}