through sub_8104C2C
This commit is contained in:
@@ -5,241 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_8104AB0
|
|
||||||
sub_8104AB0: @ 8104AB0
|
|
||||||
push {r4-r7,lr}
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r3, r0, 16
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r5, r1, 24
|
|
||||||
adds r7, r5, 0
|
|
||||||
lsls r2, 24
|
|
||||||
cmp r2, 0
|
|
||||||
beq _08104ACA
|
|
||||||
adds r0, r3, 0
|
|
||||||
bl SpeciesToNationalPokedexNum
|
|
||||||
adds r3, r0, 0
|
|
||||||
_08104ACA:
|
|
||||||
subs r0, r3, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r3, r0, 16
|
|
||||||
lsrs r0, 19
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
movs r0, 0x7
|
|
||||||
ands r3, r0
|
|
||||||
movs r0, 0x80
|
|
||||||
lsls r0, 17
|
|
||||||
lsls r0, r3
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
movs r0, 0
|
|
||||||
mov r12, r0
|
|
||||||
cmp r5, 0x1
|
|
||||||
beq _08104B14
|
|
||||||
cmp r5, 0x1
|
|
||||||
bgt _08104AF4
|
|
||||||
cmp r5, 0
|
|
||||||
beq _08104AFE
|
|
||||||
b _08104BB0
|
|
||||||
_08104AF4:
|
|
||||||
cmp r7, 0x2
|
|
||||||
beq _08104B68
|
|
||||||
cmp r7, 0x3
|
|
||||||
beq _08104BA0
|
|
||||||
b _08104BB0
|
|
||||||
_08104AFE:
|
|
||||||
ldr r0, _08104B10 @ =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
adds r0, 0x5C
|
|
||||||
adds r0, r4
|
|
||||||
ldrb r1, [r0]
|
|
||||||
ands r1, r6
|
|
||||||
cmp r1, 0
|
|
||||||
beq _08104BB0
|
|
||||||
b _08104B34
|
|
||||||
.align 2, 0
|
|
||||||
_08104B10: .4byte gSaveBlock2Ptr
|
|
||||||
_08104B14:
|
|
||||||
ldr r0, _08104B5C @ =gSaveBlock2Ptr
|
|
||||||
ldr r2, [r0]
|
|
||||||
adds r0, r2, 0
|
|
||||||
adds r0, 0x28
|
|
||||||
adds r0, r4
|
|
||||||
ldrb r1, [r0]
|
|
||||||
ands r1, r6
|
|
||||||
cmp r1, 0
|
|
||||||
beq _08104BB0
|
|
||||||
adds r0, r2, 0
|
|
||||||
adds r0, 0x5C
|
|
||||||
adds r0, r4
|
|
||||||
ldrb r0, [r0]
|
|
||||||
ands r0, r6
|
|
||||||
cmp r1, r0
|
|
||||||
bne _08104BB0
|
|
||||||
_08104B34:
|
|
||||||
ldr r0, _08104B60 @ =gSaveBlock1Ptr
|
|
||||||
ldr r2, [r0]
|
|
||||||
movs r3, 0xBF
|
|
||||||
lsls r3, 3
|
|
||||||
adds r0, r2, r3
|
|
||||||
adds r0, r4
|
|
||||||
ldrb r0, [r0]
|
|
||||||
ands r0, r6
|
|
||||||
cmp r1, r0
|
|
||||||
bne _08104BB0
|
|
||||||
ldr r3, _08104B64 @ =0x00003a18
|
|
||||||
adds r0, r2, r3
|
|
||||||
adds r0, r4
|
|
||||||
ldrb r0, [r0]
|
|
||||||
ands r0, r6
|
|
||||||
cmp r1, r0
|
|
||||||
bne _08104BB0
|
|
||||||
movs r0, 0x1
|
|
||||||
mov r12, r0
|
|
||||||
b _08104BB0
|
|
||||||
.align 2, 0
|
|
||||||
_08104B5C: .4byte gSaveBlock2Ptr
|
|
||||||
_08104B60: .4byte gSaveBlock1Ptr
|
|
||||||
_08104B64: .4byte 0x00003a18
|
|
||||||
_08104B68:
|
|
||||||
ldr r0, _08104B94 @ =gSaveBlock2Ptr
|
|
||||||
ldr r1, [r0]
|
|
||||||
adds r1, 0x5C
|
|
||||||
adds r1, r4
|
|
||||||
ldrb r2, [r1]
|
|
||||||
adds r0, r6, 0
|
|
||||||
orrs r0, r2
|
|
||||||
strb r0, [r1]
|
|
||||||
ldr r3, _08104B98 @ =gSaveBlock1Ptr
|
|
||||||
ldr r1, [r3]
|
|
||||||
movs r0, 0xBF
|
|
||||||
lsls r0, 3
|
|
||||||
adds r1, r0
|
|
||||||
adds r1, r4
|
|
||||||
ldrb r2, [r1]
|
|
||||||
adds r0, r6, 0
|
|
||||||
orrs r0, r2
|
|
||||||
strb r0, [r1]
|
|
||||||
ldr r1, [r3]
|
|
||||||
ldr r3, _08104B9C @ =0x00003a18
|
|
||||||
adds r1, r3
|
|
||||||
b _08104BA6
|
|
||||||
.align 2, 0
|
|
||||||
_08104B94: .4byte gSaveBlock2Ptr
|
|
||||||
_08104B98: .4byte gSaveBlock1Ptr
|
|
||||||
_08104B9C: .4byte 0x00003a18
|
|
||||||
_08104BA0:
|
|
||||||
ldr r0, _08104BB8 @ =gSaveBlock2Ptr
|
|
||||||
ldr r1, [r0]
|
|
||||||
adds r1, 0x28
|
|
||||||
_08104BA6:
|
|
||||||
adds r1, r4
|
|
||||||
ldrb r2, [r1]
|
|
||||||
adds r0, r6, 0
|
|
||||||
orrs r0, r2
|
|
||||||
strb r0, [r1]
|
|
||||||
_08104BB0:
|
|
||||||
mov r0, r12
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08104BB8: .4byte gSaveBlock2Ptr
|
|
||||||
thumb_func_end sub_8104AB0
|
|
||||||
|
|
||||||
thumb_func_start sub_8104BBC
|
|
||||||
sub_8104BBC: @ 8104BBC
|
|
||||||
push {r4-r7,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r6, r0, 24
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r1, 24
|
|
||||||
movs r5, 0
|
|
||||||
cmp r1, 0
|
|
||||||
beq _08104BD2
|
|
||||||
cmp r1, 0x1
|
|
||||||
beq _08104BF8
|
|
||||||
b _08104C1E
|
|
||||||
_08104BD2:
|
|
||||||
movs r0, 0
|
|
||||||
_08104BD4:
|
|
||||||
adds r0, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r6, 0
|
|
||||||
movs r2, 0
|
|
||||||
bl sub_8104AB0
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08104BF0
|
|
||||||
adds r0, r5, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r5, r0, 16
|
|
||||||
_08104BF0:
|
|
||||||
adds r0, r4, 0
|
|
||||||
cmp r0, 0x96
|
|
||||||
bls _08104BD4
|
|
||||||
b _08104C1E
|
|
||||||
_08104BF8:
|
|
||||||
movs r0, 0
|
|
||||||
ldr r7, _08104C28 @ =0x00000181
|
|
||||||
_08104BFC:
|
|
||||||
adds r0, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r4, r0, 16
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r6, 0
|
|
||||||
movs r2, 0
|
|
||||||
bl sub_8104AB0
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08104C18
|
|
||||||
adds r0, r5, 0x1
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r5, r0, 16
|
|
||||||
_08104C18:
|
|
||||||
adds r0, r4, 0
|
|
||||||
cmp r0, r7
|
|
||||||
bls _08104BFC
|
|
||||||
_08104C1E:
|
|
||||||
adds r0, r5, 0
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_08104C28: .4byte 0x00000181
|
|
||||||
thumb_func_end sub_8104BBC
|
|
||||||
|
|
||||||
thumb_func_start sub_8104C2C
|
|
||||||
sub_8104C2C: @ 8104C2C
|
|
||||||
push {r4,lr}
|
|
||||||
sub sp, 0x8
|
|
||||||
adds r4, r0, 0
|
|
||||||
movs r0, 0
|
|
||||||
adds r1, r4, 0
|
|
||||||
movs r2, 0
|
|
||||||
bl GetStringWidth
|
|
||||||
movs r1, 0x14
|
|
||||||
negs r1, r1
|
|
||||||
adds r3, r1, 0
|
|
||||||
subs r3, r0
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r3, 24
|
|
||||||
movs r0, 0x2
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0x4
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
movs r0, 0x1
|
|
||||||
movs r1, 0
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl sub_81047C8
|
|
||||||
add sp, 0x8
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_8104C2C
|
|
||||||
|
|
||||||
thumb_func_start sub_8104C64
|
thumb_func_start sub_8104C64
|
||||||
sub_8104C64: @ 8104C64
|
sub_8104C64: @ 8104C64
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
|
|||||||
+2
-3
@@ -765,9 +765,8 @@ struct SaveBlock1
|
|||||||
/*0x3120*/ struct MEventBuffers mysteryEventBuffers;
|
/*0x3120*/ struct MEventBuffers mysteryEventBuffers;
|
||||||
/*0x348C*/ u8 filler_348C[400];
|
/*0x348C*/ u8 filler_348C[400];
|
||||||
/*0x361C*/ struct RamScript ramScript;
|
/*0x361C*/ struct RamScript ramScript;
|
||||||
/*0x3A08*/ u8 filler3A08[12];
|
/*0x3A08*/ u8 filler3A08[16];
|
||||||
/*0x3A14*/ u8 seen2[DEX_FLAGS_NO];
|
/*0x3A18*/ u8 seen2[DEX_FLAGS_NO];
|
||||||
/*0x3A48*/ u8 filler_3a48[4];
|
|
||||||
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
|
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
|
||||||
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
|
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
|
||||||
/*0x3A94*/ u8 filler3A94[0x204];
|
/*0x3A94*/ u8 filler3A94[0x204];
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
#define GUARD_POKEDEX_SCREEN_H
|
#define GUARD_POKEDEX_SCREEN_H
|
||||||
|
|
||||||
void CB2_OpenPokedexFromStartMenu(void);
|
void CB2_OpenPokedexFromStartMenu(void);
|
||||||
s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk);
|
s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, bool8 indexIsSpecies);
|
||||||
|
|
||||||
#endif //GUARD_POKEDEX_SCREEN_H
|
#endif //GUARD_POKEDEX_SCREEN_H
|
||||||
|
|||||||
+84
-7
@@ -101,8 +101,8 @@ void sub_81047B0(u8 *windowId_p);
|
|||||||
void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
|
void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
|
||||||
void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx);
|
void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx);
|
||||||
void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y);
|
void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y);
|
||||||
u16 sub_8104BBC(u8 a0, u8 a1);
|
u16 sub_8104BBC(u8 caseID, bool8 whichDex);
|
||||||
void sub_8104C2C(const u8 *a0);
|
void sub_8104C2C(const u8 *src);
|
||||||
void sub_8104E90(void);
|
void sub_8104E90(void);
|
||||||
void sub_8104F0C(u8 a0);
|
void sub_8104F0C(u8 a0);
|
||||||
void sub_8105058(u8 a0);
|
void sub_8105058(u8 a0);
|
||||||
@@ -666,7 +666,7 @@ void sub_810345C(void)
|
|||||||
|
|
||||||
u16 sub_8103518(u8 a0)
|
u16 sub_8103518(u8 a0)
|
||||||
{
|
{
|
||||||
s32 max_n = IsNationalPokedexEnabled() ? NATIONAL_DEX_DEOXYS : NATIONAL_DEX_MEW;
|
s32 max_n = IsNationalPokedexEnabled() ? NATIONAL_DEX_COUNT : KANTO_DEX_COUNT;
|
||||||
u16 ndex_num;
|
u16 ndex_num;
|
||||||
u16 ret = NATIONAL_DEX_NONE;
|
u16 ret = NATIONAL_DEX_NONE;
|
||||||
s32 i;
|
s32 i;
|
||||||
@@ -677,7 +677,7 @@ u16 sub_8103518(u8 a0)
|
|||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
for (i = 0; i < NATIONAL_DEX_MEW; i++)
|
for (i = 0; i < KANTO_DEX_COUNT; i++)
|
||||||
{
|
{
|
||||||
ndex_num = i + 1;
|
ndex_num = i + 1;
|
||||||
seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
|
seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
|
||||||
@@ -729,7 +729,7 @@ u16 sub_8103518(u8 a0)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
|
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||||
{
|
{
|
||||||
ndex_num = gUnknown_84442F6[i];
|
ndex_num = gUnknown_84442F6[i];
|
||||||
if (ndex_num <= max_n)
|
if (ndex_num <= max_n)
|
||||||
@@ -746,7 +746,7 @@ u16 sub_8103518(u8 a0)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
|
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||||
{
|
{
|
||||||
ndex_num = gUnknown_84445FA[i];
|
ndex_num = gUnknown_84445FA[i];
|
||||||
if (ndex_num <= max_n)
|
if (ndex_num <= max_n)
|
||||||
@@ -763,7 +763,7 @@ u16 sub_8103518(u8 a0)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
|
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||||
{
|
{
|
||||||
ndex_num = i + 1;
|
ndex_num = i + 1;
|
||||||
seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
|
seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
|
||||||
@@ -1690,3 +1690,80 @@ void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y)
|
|||||||
sub_81047C8(windowId, fontId, gUnknown_8415FFF, x, y, 0);
|
sub_81047C8(windowId, fontId, gUnknown_8415FFF, x, y, 0);
|
||||||
sub_8104880(windowId, fontId, dexNum, x + 9, y, 0);
|
sub_8104880(windowId, fontId, dexNum, x + 9, y, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, bool8 indexIsSpecies)
|
||||||
|
{
|
||||||
|
u8 index;
|
||||||
|
u8 bit;
|
||||||
|
u8 mask;
|
||||||
|
s8 retVal;
|
||||||
|
|
||||||
|
if (indexIsSpecies)
|
||||||
|
nationalDexNo = SpeciesToNationalPokedexNum(nationalDexNo);
|
||||||
|
|
||||||
|
nationalDexNo--;
|
||||||
|
index = nationalDexNo / 8;
|
||||||
|
bit = nationalDexNo % 8;
|
||||||
|
mask = 1 << bit;
|
||||||
|
retVal = 0;
|
||||||
|
switch (caseID)
|
||||||
|
{
|
||||||
|
case FLAG_GET_SEEN:
|
||||||
|
if (gSaveBlock2Ptr->pokedex.seen[index] & mask)
|
||||||
|
{
|
||||||
|
if ((gSaveBlock2Ptr->pokedex.seen[index] & mask) == (gSaveBlock1Ptr->seen1[index] & mask)
|
||||||
|
&& (gSaveBlock2Ptr->pokedex.seen[index] & mask) == (gSaveBlock1Ptr->seen2[index] & mask))
|
||||||
|
retVal = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FLAG_GET_CAUGHT:
|
||||||
|
if (gSaveBlock2Ptr->pokedex.owned[index] & mask)
|
||||||
|
{
|
||||||
|
if ((gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock2Ptr->pokedex.seen[index] & mask)
|
||||||
|
&& (gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock1Ptr->seen1[index] & mask)
|
||||||
|
&& (gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock1Ptr->seen2[index] & mask))
|
||||||
|
retVal = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FLAG_SET_SEEN:
|
||||||
|
gSaveBlock2Ptr->pokedex.seen[index] |= mask;
|
||||||
|
gSaveBlock1Ptr->seen1[index] |= mask;
|
||||||
|
gSaveBlock1Ptr->seen2[index] |= mask;
|
||||||
|
break;
|
||||||
|
case FLAG_SET_CAUGHT:
|
||||||
|
gSaveBlock2Ptr->pokedex.owned[index] |= mask;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
u16 sub_8104BBC(u8 caseID, bool8 whichDex)
|
||||||
|
{
|
||||||
|
u16 count = 0;
|
||||||
|
u16 i;
|
||||||
|
|
||||||
|
switch (whichDex)
|
||||||
|
{
|
||||||
|
case 0: // Kanto
|
||||||
|
for (i = 0; i < KANTO_DEX_COUNT; i++)
|
||||||
|
{
|
||||||
|
if (sub_8104AB0(i + 1, caseID, FALSE))
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1: // National
|
||||||
|
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||||
|
{
|
||||||
|
if (sub_8104AB0(i + 1, caseID, FALSE))
|
||||||
|
count++;
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8104C2C(const u8 *src)
|
||||||
|
{
|
||||||
|
sub_81047C8(1, 0, src, 236 - GetStringWidth(0, src, 0), 2, 4);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user