through task_intro_29

This commit is contained in:
PikalaxALT
2018-01-07 18:44:14 -05:00
parent aa023a5cb5
commit 92fa7570b9
3 changed files with 116 additions and 319 deletions
+1 -308
View File
@@ -5,313 +5,6 @@
.text
thumb_func_start sub_809658C
sub_809658C: @ 809658C
push {r4-r6,lr}
ldr r4, _080965F4 @ =gUnknown_02038478
ldr r0, [r4]
ldr r0, [r0]
cmp r0, 0
beq _080965A2
bl DestroySprite
ldr r1, [r4]
movs r0, 0
str r0, [r1]
_080965A2:
movs r5, 0
adds r6, r4, 0
_080965A6:
ldr r0, [r6]
lsls r4, r5, 2
adds r0, 0x4
adds r0, r4
ldr r0, [r0]
cmp r0, 0
beq _080965C2
bl DestroySprite
ldr r0, [r6]
adds r0, 0x4
adds r0, r4
movs r1, 0
str r1, [r0]
_080965C2:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x3
bls _080965A6
movs r5, 0
_080965CE:
ldr r0, _080965F4 @ =gUnknown_02038478
ldr r0, [r0]
lsls r1, r5, 2
adds r0, 0x20
adds r0, r1
ldr r0, [r0]
cmp r0, 0
beq _080965E2
bl DestroySprite
_080965E2:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x1
bls _080965CE
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080965F4: .4byte gUnknown_02038478
thumb_func_end sub_809658C
thumb_func_start sub_80965F8
sub_80965F8: @ 80965F8
push {lr}
ldr r2, _08096628 @ =gUnknown_02038478
ldr r1, [r2]
movs r0, 0x8F
lsls r0, 2
adds r1, r0
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
cmp r0, 0xD
bls _0809661E
ldr r0, [r2]
movs r1, 0x8F
lsls r1, 2
adds r0, r1
movs r1, 0
strb r1, [r0]
_0809661E:
bl sub_809665C
pop {r0}
bx r0
.align 2, 0
_08096628: .4byte gUnknown_02038478
thumb_func_end sub_80965F8
thumb_func_start sub_809662C
sub_809662C: @ 809662C
push {lr}
ldr r0, _08096644 @ =gUnknown_02038478
ldr r2, [r0]
movs r1, 0x8F
lsls r1, 2
adds r0, r2, r1
ldrb r0, [r0]
cmp r0, 0
beq _08096648
subs r1, r0, 0x1
b _0809664A
.align 2, 0
_08096644: .4byte gUnknown_02038478
_08096648:
movs r1, 0xD
_0809664A:
movs r3, 0x8F
lsls r3, 2
adds r0, r2, r3
strb r1, [r0]
bl sub_809665C
pop {r0}
bx r0
thumb_func_end sub_809662C
thumb_func_start sub_809665C
sub_809665C: @ 809665C
push {r4-r7,lr}
ldr r5, _080966B4 @ =gUnknown_02038478
ldr r0, [r5]
movs r4, 0x8F
lsls r4, 2
adds r0, r4
ldrb r0, [r0]
bl sub_8095ADC
lsls r0, 24
lsrs r7, r0, 24
ldr r2, _080966B8 @ =gStringVar1
movs r6, 0xFC
strb r6, [r2]
movs r0, 0x4
strb r0, [r2, 0x1]
movs r0, 0xF
strb r0, [r2, 0x2]
movs r0, 0x1
strb r0, [r2, 0x3]
movs r0, 0xE
strb r0, [r2, 0x4]
adds r2, 0x5
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
lsls r1, r0, 3
adds r1, r0
ldr r0, _080966BC @ =gPokemonStorage + 0x8344
adds r1, r0
adds r0, r2, 0
bl StringCopy
adds r2, r0, 0
movs r0, 0xFE
strb r0, [r2]
strb r6, [r2, 0x1]
movs r0, 0x11
strb r0, [r2, 0x2]
cmp r7, 0x9
bhi _080966C0
movs r0, 0x28
b _080966C2
.align 2, 0
_080966B4: .4byte gUnknown_02038478
_080966B8: .4byte gStringVar1
_080966BC: .4byte gPokemonStorage + 0x8344
_080966C0:
movs r0, 0x22
_080966C2:
strb r0, [r2, 0x3]
adds r2, 0x4
adds r0, r2, 0
adds r1, r7, 0
bl ConvertIntToDecimalString
adds r2, r0, 0
movs r0, 0xBA
strb r0, [r2]
movs r0, 0xA4
strb r0, [r2, 0x1]
movs r0, 0xA1
strb r0, [r2, 0x2]
movs r0, 0xFF
strb r0, [r2, 0x3]
ldr r0, _080966F0 @ =gStringVar1
movs r1, 0
movs r2, 0x1
bl sub_80966F4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080966F0: .4byte gStringVar1
thumb_func_end sub_809665C
thumb_func_start sub_80966F4
sub_80966F4: @ 80966F4
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x4
mov r8, r0
adds r5, r1, 0
adds r4, r2, 0
lsls r5, 16
lsrs r5, 16
lsls r4, 16
lsrs r4, 16
ldr r0, _08096764 @ =gUnknown_02038478
ldr r0, [r0]
movs r1, 0x90
lsls r1, 2
adds r0, r1
ldrh r0, [r0]
bl GetSpriteTileStartByTag
adds r6, r0, 0
lsls r6, 16
lsrs r6, 11
lsls r4, 8
ldr r2, _08096768 @ =0x06010000
adds r4, r2
adds r6, r4
lsls r5, 5
adds r6, r5
ldr r0, _0809676C @ =gUnknown_083B6DB8
ldr r5, [r0]
mov r1, sp
ldr r2, _08096770 @ =0x00001111
adds r0, r2, 0
strh r0, [r1]
ldr r4, _08096774 @ =0x040000d4
str r1, [r4]
str r5, [r4, 0x4]
ldr r0, _08096778 @ =0x81000200
str r0, [r4, 0x8]
ldr r0, [r4, 0x8]
ldr r0, _0809677C @ =gWindowConfig_81E6D38
adds r1, r5, 0
mov r2, r8
bl sub_8004E3C
str r5, [r4]
str r6, [r4, 0x4]
ldr r0, _08096780 @ =0x80000200
str r0, [r4, 0x8]
ldr r0, [r4, 0x8]
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08096764: .4byte gUnknown_02038478
_08096768: .4byte 0x06010000
_0809676C: .4byte gUnknown_083B6DB8
_08096770: .4byte 0x00001111
_08096774: .4byte 0x040000d4
_08096778: .4byte 0x81000200
_0809677C: .4byte gWindowConfig_81E6D38
_08096780: .4byte 0x80000200
thumb_func_end sub_80966F4
thumb_func_start sub_8096784
sub_8096784: @ 8096784
push {lr}
adds r1, r0, 0
ldrh r0, [r1, 0x30]
adds r0, 0x1
movs r2, 0
strh r0, [r1, 0x30]
lsls r0, 16
asrs r0, 16
cmp r0, 0x3
ble _080967B4
strh r2, [r1, 0x30]
ldrh r0, [r1, 0x2E]
ldrh r3, [r1, 0x24]
adds r0, r3
strh r0, [r1, 0x24]
ldrh r0, [r1, 0x32]
adds r0, 0x1
strh r0, [r1, 0x32]
lsls r0, 16
asrs r0, 16
cmp r0, 0x5
ble _080967B4
strh r2, [r1, 0x32]
strh r2, [r1, 0x24]
_080967B4:
pop {r0}
bx r0
thumb_func_end sub_8096784
thumb_func_start task_intro_29
task_intro_29: @ 80967B8
push {lr}
lsls r0, 24
lsrs r0, 24
ldr r1, _080967D0 @ =gUnknown_0203847D
strb r0, [r1]
ldr r1, _080967D4 @ =gSharedMem
strb r0, [r1, 0x5]
ldr r0, _080967D8 @ =sub_8096884
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_080967D0: .4byte gUnknown_0203847D
_080967D4: .4byte gSharedMem
_080967D8: .4byte sub_8096884
thumb_func_end task_intro_29
thumb_func_start sub_80967DC
sub_80967DC: @ 80967DC
ldr r0, _08096800 @ =REG_BG0HOFS
@@ -9960,7 +9653,7 @@ sub_809B62C: @ 809B62C
lsls r0, 24
lsrs r6, r0, 24
adds r0, r6, 0
bl sub_8095B24
bl GetIndexOfFirstEmptySpaceInBoxN
lsls r0, 16
lsrs r4, r0, 16
asrs r0, 16
+1
View File
@@ -28,6 +28,7 @@ extern u8 gSharedMem[];
#define ewram0_9(i) (u8 *)(ewram_addr + (i * 0x20))
#define ewram0_10 (*(struct UnknownPokenav0*)(gSharedMem + 0))
#define ewram0_11 (*(struct UnknownPokenav0_1*)(gSharedMem + 0))
#define ePokemonStorageSystem (*(struct PokemonStorageSystemData *)(gSharedMem + 0))
#define ewram4 (*(struct UnknownStruct8 *)(gSharedMem + 0x4))
#define ewram520 ((struct UnknownStruct7 *)(gSharedMem + 0x00520))
#define ewram520_2 (u8 *)(ewram_addr + 0x520)
+114 -11
View File
@@ -35,7 +35,7 @@ struct UnkPSSStruct_2002370 {
u32 unk_0014[3];
struct Sprite *unk_0020[2];
u8 filler_0028[0x214];
u8 unk_023c;
u8 curBox;
u8 unk_023d;
u8 unk_023e;
u16 unk_0240;
@@ -43,13 +43,15 @@ struct UnkPSSStruct_2002370 {
};
void StorageSystemCreatePrimaryMenu(u8 whichMenu);
void task_intro_29(u8 whichMenu);
void sub_80963D0(u8 a0);
void sub_80963D0(u8 curBox);
void sub_809658C(void);
void sub_80965F8(void);
void sub_809662C(void);
void sub_809665C(void);
void sub_80966F4(const u8 *sourceString, u16 x, u16 y);
void sub_8096784(struct Sprite *sprite);
void task_intro_29(u8 whichMenu);
void sub_8096884(void);
struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4);
const struct PSS_MenuStringPtrs gUnknown_083B600C[] = {
@@ -103,12 +105,15 @@ const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/bo
extern const struct StorageAction gUnknown_083B6DF4[];
extern const struct PokemonStorageSystemData *gUnknown_083B6DB4;
extern u8 *const gUnknown_083B6DB8;
EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
EWRAM_DATA u8 gUnknown_02038474;
EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478;
EWRAM_DATA u8 gUnknown_0203847C;
EWRAM_DATA u8 gUnknown_0203847D;
u8 sub_8095ADC(u8 boxId)
static u8 CountPokemonInBoxN(u8 boxId)
{
u16 i;
u16 count;
@@ -121,7 +126,7 @@ u8 sub_8095ADC(u8 boxId)
return count;
}
s16 sub_8095B24(u8 boxId)
s16 GetIndexOfFirstEmptySpaceInBoxN(u8 boxId)
{
u16 i;
@@ -561,9 +566,9 @@ void sub_8096310(void)
FreeSpriteTilesByTag(gUnknown_02038478->unk_0240 + 1);
}
void sub_809634C(u8 a0)
void sub_809634C(u8 curBox)
{
sub_80963D0(a0);
sub_80963D0(curBox);
}
void sub_809635C(void)
@@ -581,7 +586,7 @@ u8 sub_8096368(void)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
return gUnknown_02038478->unk_023c;
return gUnknown_02038478->curBox;
}
if (gMain.newKeys & DPAD_LEFT)
{
@@ -596,7 +601,7 @@ u8 sub_8096368(void)
return 200;
}
void sub_80963D0(u8 a0)
void sub_80963D0(u8 curBox)
{
u16 i;
u8 spriteId;
@@ -608,11 +613,11 @@ void sub_80963D0(u8 a0)
0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
};
gUnknown_02038478->unk_023c = a0;
gUnknown_02038478->curBox = curBox;
template.tileTag = gUnknown_02038478->unk_0240;
template.paletteTag = gUnknown_02038478->unk_0242;
spriteId = CreateSprite(&template, 0xa0, 0x60, 0);
spriteId = CreateSprite(&template, 0xA0, 0x60, 0);
gUnknown_02038478->unk_0000 = gSprites + spriteId;
oamData.shape = ST_OAM_V_RECTANGLE;
@@ -650,6 +655,104 @@ void sub_80963D0(u8 a0)
sub_809665C();
}
void sub_809658C(void)
{
u16 i;
if (gUnknown_02038478->unk_0000)
{
DestroySprite(gUnknown_02038478->unk_0000);
gUnknown_02038478->unk_0000 = NULL;
}
for (i = 0; i < 4; i++)
{
if (gUnknown_02038478->unk_0004[i])
{
DestroySprite(gUnknown_02038478->unk_0004[i]);
gUnknown_02038478->unk_0004[i] = NULL;
}
}
for (i = 0; i < 2; i++)
{
if (gUnknown_02038478->unk_0020[i])
DestroySprite(gUnknown_02038478->unk_0020[i]);
}
}
void sub_80965F8(void)
{
if (++gUnknown_02038478->curBox > 13)
gUnknown_02038478->curBox = 0;
sub_809665C();
}
void sub_809662C(void)
{
gUnknown_02038478->curBox = (gUnknown_02038478->curBox == 0 ? 13 : gUnknown_02038478->curBox - 1);
sub_809665C();
}
void sub_809665C(void)
{
u8 nPokemonInBox = CountPokemonInBoxN(gUnknown_02038478->curBox);
u8 *stringVar = gStringVar1;
stringVar[0] = EXT_CTRL_CODE_BEGIN;
stringVar[1] = 0x04; // EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW
stringVar[2] = 0x0F; // TEXT_COLOR_WHITE2
stringVar[3] = 0x01; // TEXT_COLOR_DARK_GREY
stringVar[4] = 0x0E; // TEXT_COLOR_LIGHT_BLUE
stringVar += 5;
stringVar = StringCopy(stringVar, gPokemonStorage.boxNames[gUnknown_02038478->curBox]);
stringVar[0] = CHAR_NEWLINE;
stringVar[1] = EXT_CTRL_CODE_BEGIN;
stringVar[2] = 0x11; // EXT_CTRL_CODE_CLEAR
if (nPokemonInBox < 10)
stringVar[3] = 0x28;
else
stringVar[3] = 0x22;
stringVar += 4;
stringVar = ConvertIntToDecimalString(stringVar, nPokemonInBox);
stringVar[0] = CHAR_SLASH;
stringVar[1] = CHAR_0 + 3;
stringVar[2] = CHAR_0 + 0;
stringVar[3] = EOS;
sub_80966F4(gStringVar1, 0, 1);
}
void sub_80966F4(const u8 *sourceString, u16 x, u16 y)
{
u16 *vdest = (u16 *)(BG_CHAR_ADDR(4) + (GetSpriteTileStartByTag(gUnknown_02038478->unk_0240) * 32) + y * 256 + x * 32);
u8 *tileBuff = gUnknown_083B6DB8;
DmaFill16(3, 0x1111, tileBuff, 0x400);
sub_8004E3C(&gWindowConfig_81E6D38, tileBuff, sourceString);
DmaCopy16(3, tileBuff, vdest, 0x400);
}
void sub_8096784(struct Sprite *sprite)
{
if (++sprite->data[1] > 3)
{
sprite->data[1] = 0;
sprite->pos2.x += sprite->data[0];
if (++sprite->data[2] > 5)
{
sprite->data[2] = 0;
sprite->pos2.x = 0;
}
}
}
void task_intro_29(u8 whichMenu)
{
gUnknown_0203847D = whichMenu;
ePokemonStorageSystem.unk_0005 = whichMenu;
SetMainCallback2(sub_8096884);
}
asm(".section .text.8098898");
void sub_8098898(u8 index) {