mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-09 18:06:33 -04:00
through task_intro_29
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user