through sub_8104C2C
This commit is contained in:
@@ -5,241 +5,6 @@
|
||||
|
||||
.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
|
||||
sub_8104C64: @ 8104C64
|
||||
push {r4-r7,lr}
|
||||
|
||||
+2
-3
@@ -765,9 +765,8 @@ struct SaveBlock1
|
||||
/*0x3120*/ struct MEventBuffers mysteryEventBuffers;
|
||||
/*0x348C*/ u8 filler_348C[400];
|
||||
/*0x361C*/ struct RamScript ramScript;
|
||||
/*0x3A08*/ u8 filler3A08[12];
|
||||
/*0x3A14*/ u8 seen2[DEX_FLAGS_NO];
|
||||
/*0x3A48*/ u8 filler_3a48[4];
|
||||
/*0x3A08*/ u8 filler3A08[16];
|
||||
/*0x3A18*/ u8 seen2[DEX_FLAGS_NO];
|
||||
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
|
||||
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
|
||||
/*0x3A94*/ u8 filler3A94[0x204];
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
#define GUARD_POKEDEX_SCREEN_H
|
||||
|
||||
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
|
||||
|
||||
+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_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);
|
||||
u16 sub_8104BBC(u8 a0, u8 a1);
|
||||
void sub_8104C2C(const u8 *a0);
|
||||
u16 sub_8104BBC(u8 caseID, bool8 whichDex);
|
||||
void sub_8104C2C(const u8 *src);
|
||||
void sub_8104E90(void);
|
||||
void sub_8104F0C(u8 a0);
|
||||
void sub_8105058(u8 a0);
|
||||
@@ -666,7 +666,7 @@ void sub_810345C(void)
|
||||
|
||||
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 ret = NATIONAL_DEX_NONE;
|
||||
s32 i;
|
||||
@@ -677,7 +677,7 @@ u16 sub_8103518(u8 a0)
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
for (i = 0; i < NATIONAL_DEX_MEW; i++)
|
||||
for (i = 0; i < KANTO_DEX_COUNT; i++)
|
||||
{
|
||||
ndex_num = i + 1;
|
||||
seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
|
||||
@@ -729,7 +729,7 @@ u16 sub_8103518(u8 a0)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
|
||||
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||
{
|
||||
ndex_num = gUnknown_84442F6[i];
|
||||
if (ndex_num <= max_n)
|
||||
@@ -746,7 +746,7 @@ u16 sub_8103518(u8 a0)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
|
||||
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||
{
|
||||
ndex_num = gUnknown_84445FA[i];
|
||||
if (ndex_num <= max_n)
|
||||
@@ -763,7 +763,7 @@ u16 sub_8103518(u8 a0)
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
|
||||
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||
{
|
||||
ndex_num = i + 1;
|
||||
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_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