Port pokedex.c

This commit is contained in:
ultima-soul
2019-08-04 15:11:02 -07:00
parent 9ceff166bc
commit bbc7c6ccfc
16 changed files with 147 additions and 314 deletions
+1 -1
View File
@@ -30322,7 +30322,7 @@ _0802C8E8:
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl sub_8088E38
bl GetPokedexHeightWeight
ldrh r1, [r4]
lsls r0, 16
lsrs r0, 16
+2 -2
View File
@@ -51,7 +51,7 @@ start_menu_is_selected_item_valid: @ 80BD754
cmp r0, 0x15
bne _080BD76C
movs r0, 0
bl pokedex_count
bl GetNationalPokedexCount
lsls r0, 16
lsrs r0, 16
b _080BD782
@@ -1054,7 +1054,7 @@ sub_80BDE88: @ 80BDE88
ldr r1, [r4]
movs r0, 0
strh r0, [r1]
bl pokedex_count
bl GetNationalPokedexCount
lsls r0, 16
cmp r0, 0
beq _080BDEB0
+2 -2
View File
@@ -1504,13 +1504,13 @@ sub_800CF3C: @ 800CF3C
cmp r0, 0
beq _0800CF64
movs r0, 0x1
bl pokedex_count
bl GetNationalPokedexCount
b _0800CF6A
.align 2, 0
_0800CF60: .4byte 0x00000829
_0800CF64:
movs r0, 0x1
bl sub_8088EDC
bl GetKantoPokedexCount
_0800CF6A:
lsls r0, 16
lsrs r6, r0, 16
-282
View File
@@ -1,282 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_8088E20
sub_8088E20: @ 8088E20
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088E34 @ =gPokedexEntries
adds r0, r1
bx lr
.align 2, 0
_08088E34: .4byte gPokedexEntries
thumb_func_end sub_8088E20
thumb_func_start sub_8088E38
sub_8088E38: @ 8088E38
push {lr}
lsls r0, 16
lsrs r2, r0, 16
lsls r1, 24
lsrs r1, 24
cmp r1, 0
beq _08088E4E
cmp r1, 0x1
beq _08088E60
movs r0, 0x1
b _08088E6C
_08088E4E:
ldr r0, _08088E5C @ =gPokedexEntries
lsls r1, r2, 3
adds r1, r2
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0xC]
b _08088E6C
.align 2, 0
_08088E5C: .4byte gPokedexEntries
_08088E60:
ldr r0, _08088E70 @ =gPokedexEntries
lsls r1, r2, 3
adds r1, r2
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0xE]
_08088E6C:
pop {r1}
bx r1
.align 2, 0
_08088E70: .4byte gPokedexEntries
thumb_func_end sub_8088E38
thumb_func_start GetSetPokedexFlag
GetSetPokedexFlag: @ 8088E74
push {lr}
lsls r0, 16
lsrs r0, 16
lsls r1, 24
lsrs r1, 24
movs r2, 0
bl sub_8104AB0
lsls r0, 24
asrs r0, 24
pop {r1}
bx r1
thumb_func_end GetSetPokedexFlag
thumb_func_start pokedex_count
pokedex_count: @ 8088E8C
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
movs r0, 0
ldr r7, _08088EA4 @ =0x00000181
_08088E98:
cmp r6, 0
beq _08088EA8
cmp r6, 0x1
beq _08088EB2
adds r4, r0, 0x1
b _08088ECA
.align 2, 0
_08088EA4: .4byte 0x00000181
_08088EA8:
adds r4, r0, 0x1
lsls r0, r4, 16
lsrs r0, 16
movs r1, 0
b _08088EBA
_08088EB2:
adds r4, r0, 0x1
lsls r0, r4, 16
lsrs r0, 16
movs r1, 0x1
_08088EBA:
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088ECA
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
_08088ECA:
lsls r0, r4, 16
lsrs r0, 16
cmp r0, r7
bls _08088E98
adds r0, r5, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end pokedex_count
thumb_func_start sub_8088EDC
sub_8088EDC: @ 8088EDC
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
movs r0, 0
_08088EE6:
cmp r6, 0
beq _08088EF2
cmp r6, 0x1
beq _08088EFC
adds r4, r0, 0x1
b _08088F14
_08088EF2:
adds r4, r0, 0x1
lsls r0, r4, 16
lsrs r0, 16
movs r1, 0
b _08088F04
_08088EFC:
adds r4, r0, 0x1
lsls r0, r4, 16
lsrs r0, 16
movs r1, 0x1
_08088F04:
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088F14
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
_08088F14:
lsls r0, r4, 16
lsrs r0, 16
cmp r0, 0x96
bls _08088EE6
adds r0, r5, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8088EDC
thumb_func_start sub_8088F24
sub_8088F24: @ 8088F24
push {r4,lr}
movs r0, 0
_08088F28:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
bl HoennToNationalOrder
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088F48
movs r0, 0
b _08088F50
_08088F48:
adds r0, r4, 0
cmp r0, 0xC7
bls _08088F28
movs r0, 0x1
_08088F50:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8088F24
thumb_func_start sub_8088F58
sub_8088F58: @ 8088F58
push {r4,lr}
movs r0, 0
_08088F5C:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088F74
movs r0, 0
b _08088F7C
_08088F74:
adds r0, r4, 0
cmp r0, 0x95
bls _08088F5C
movs r0, 0x1
_08088F7C:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8088F58
thumb_func_start HasAllKantoMons
HasAllKantoMons: @ 8088F84
push {r4,r5,lr}
movs r0, 0
_08088F88:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088FD6
adds r0, r4, 0
cmp r0, 0x95
bls _08088F88
movs r0, 0x97
_08088FA4:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088FD6
adds r0, r4, 0
cmp r0, 0xF7
bls _08088FA4
movs r0, 0xFB
ldr r5, _08088FDC @ =0x0000017f
_08088FC2:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088FE0
_08088FD6:
movs r0, 0
b _08088FE8
.align 2, 0
_08088FDC: .4byte 0x0000017f
_08088FE0:
adds r0, r4, 0
cmp r0, r5
bls _08088FC2
movs r0, 0x1
_08088FE8:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end HasAllKantoMons
.align 2, 0 @ Don't pad with nop.
+1 -1
View File
@@ -128,7 +128,7 @@ GetMonSize: @ 80A0770
lsls r0, 16
lsrs r0, 16
movs r1, 0
bl sub_8088E38
bl GetPokedexHeightWeight
lsls r0, 16
lsrs r7, r0, 16
adds r0, r6, 0
+2 -2
View File
@@ -59,11 +59,11 @@ _080F8034:
cmp r0, 0
beq _080F8044
movs r0, 0x1
bl pokedex_count
bl GetNationalPokedexCount
b _080F804A
_080F8044:
movs r0, 0x1
bl sub_8088EDC
bl GetKantoPokedexCount
_080F804A:
adds r1, r0, 0
lsls r1, 16
+1 -1
View File
@@ -820,7 +820,7 @@ sub_806F3CC: @ 806F3CC
cmp r1, r0
bne _0806F408
movs r0, 0
bl pokedex_count
bl GetNationalPokedexCount
lsls r0, 16
cmp r0, 0
bne _0806F408
+7 -7
View File
@@ -973,7 +973,7 @@ _080897EE:
ldr r0, _08089890 @ =0x00000829
bl FlagGet
strb r0, [r5, 0x2]
bl sub_8088F24
bl HasAllHoennMons
strb r0, [r5, 0x3]
bl sub_808A0E0
strh r0, [r5, 0xC]
@@ -1062,7 +1062,7 @@ _080898BA:
mov r0, r8
strb r0, [r5, 0x1]
_080898BE:
bl sub_8088F58
bl HasAllKantoMons
lsls r0, 16
cmp r0, 0
beq _080898CE
@@ -1070,7 +1070,7 @@ _080898BE:
adds r0, 0x1
strb r0, [r5, 0x1]
_080898CE:
bl HasAllKantoMons
bl HasAllMons
lsls r0, 16
cmp r0, 0
beq _080898DE
@@ -1115,9 +1115,9 @@ _08089918:
movs r0, 0x1
strb r0, [r5, 0x1]
_0808991C:
bl sub_8088F58
strb r0, [r5, 0x3]
bl HasAllKantoMons
strb r0, [r5, 0x3]
bl HasAllMons
adds r6, r5, 0
adds r6, 0x4D
strb r0, [r6]
@@ -2043,11 +2043,11 @@ sub_808A0E0: @ 808A0E0
cmp r0, 0
bne _0808A0F2
movs r0, 0x1
bl sub_8088EDC
bl GetKantoPokedexCount
b _0808A0F8
_0808A0F2:
movs r0, 0x1
bl pokedex_count
bl GetNationalPokedexCount
_0808A0F8:
lsls r0, 16
lsrs r0, 16
@@ -16,7 +16,7 @@ CeladonCity_Condominiums_3F_EventScript_16C3ED:: @ 816C3ED
CeladonCity_Condominiums_3F_EventScript_16C3F6:: @ 816C3F6
lock
faceplayer
specialvar VAR_RESULT, sub_8088F58
specialvar VAR_RESULT, HasAllKantoMons
compare_var_to_value VAR_RESULT, 1
goto_if_eq EventScript_16C412
msgbox gUnknown_8196356
+2 -2
View File
@@ -344,7 +344,7 @@ gSpecials:: @ 815FD60
def_special sub_807F0B0
def_special nullsub_75
def_special nullsub_75
def_special sub_8088F58
def_special HasAllKantoMons
def_special sub_80CAD7C
def_special nullsub_75
def_special sub_80E759C
@@ -441,7 +441,7 @@ gSpecials:: @ 815FD60
def_special sub_8147594
def_special sub_80CD034
def_special sub_815D834
def_special HasAllKantoMons
def_special HasAllMons
def_special sub_80CD074
def_special sub_80CD098
def_special sub_811B15C
+5 -4
View File
@@ -2,11 +2,12 @@
#define GUARD_POKEDEX_H
#define KANTO_DEX_COUNT 151
#define HOENN_DEX_COUNT 202
#define NATIONAL_DEX_COUNT 386
enum
{
DEX_MODE_HOENN,
DEX_MODE_KANTO,
DEX_MODE_NATIONAL
};
@@ -37,11 +38,11 @@ void CopyMonCategoryText(u16 species, u8 *dst);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
u16 GetKantoPokedexCount(u8);
bool16 HasAllKantoMons(void);
bool16 HasAllMons(void);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
u16 pokedex_count(u8);
u16 GetNationalPokedexCount(u8);
u16 sub_80C0844(u8);
u16 sub_8088EDC(u8);
u16 GetKantoPokedexCount(u8);
#endif // GUARD_POKEDEX_H
-1
View File
@@ -129,7 +129,6 @@ SECTIONS {
src/scanline_effect.o(.text);
asm/option_menu.o(.text);
src/pokedex.o(.text);
asm/pokedex.o(.text);
asm/trainer_card.o(.text);
asm/pokemon_storage_system.o(.text);
asm/pokemon_icon.o(.text);
+2 -2
View File
@@ -132,7 +132,7 @@ static void Task_DiplomaInit(u8 taskId)
CopyToBgTilemapBuffer(1, gUnknown_84154E8, 0, 0);
break;
case 4:
if (HasAllKantoMons())
if (HasAllMons())
{
SetGpuReg(REG_OFFSET_BG1HOFS, 0x80 << 1);
}
@@ -265,7 +265,7 @@ static void DiplomaPrintText(void)
u32 width;
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
if (HasAllKantoMons())
if (HasAllMons())
{
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B68F);
}
+1 -1
View File
@@ -1247,7 +1247,7 @@ static bool8 sub_812B780(u8 id)
return FlagGet(FLAG_0x828);
case 4:
case 34:
if (sub_8088EDC(1) > 1)
if (GetKantoPokedexCount(1) > 1)
return TRUE;
return FALSE;
case 15:
+116 -1
View File
@@ -2,7 +2,122 @@
#include "pokedex.h"
#include "constants/species.h"
extern s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk);
ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
#include "data/pokemon/pokedex_text.h"
#include "data/pokemon/pokedex_entries.h"
#include "data/pokemon/pokedex_entries.h"
const u8 *sub_8088E20(u16 dexNum)
{
return gPokedexEntries[dexNum].categoryName;
}
u16 GetPokedexHeightWeight(u16 dexNum, u8 data)
{
switch (data)
{
case 0: // height
return gPokedexEntries[dexNum].height;
case 1: // weight
return gPokedexEntries[dexNum].weight;
default:
return 1;
}
}
s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID)
{
return sub_8104AB0(nationalDexNo, caseID, 0);
}
u16 GetNationalPokedexCount(u8 caseID)
{
u16 count = 0;
u16 i;
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
{
switch (caseID)
{
case FLAG_GET_SEEN:
if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
count++;
break;
case FLAG_GET_CAUGHT:
if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
count++;
break;
}
}
return count;
}
u16 GetKantoPokedexCount(u8 caseID)
{
u16 count = 0;
u16 i;
for (i = 0; i < KANTO_DEX_COUNT; i++)
{
switch (caseID)
{
case FLAG_GET_SEEN:
if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
count++;
break;
case FLAG_GET_CAUGHT:
if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
count++;
break;
}
}
return count;
}
bool16 HasAllHoennMons(void)
{
u16 i;
for (i = 0; i < HOENN_DEX_COUNT - 2; i++)
{
if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT))
return FALSE;
}
return TRUE;
}
bool8 HasAllKantoMons(void)
{
u16 i;
for (i = 0; i < KANTO_DEX_COUNT - 1; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return FALSE;
}
return TRUE;
}
u16 HasAllMons(void)
{
u16 i;
for (i = 0; i < NATIONAL_DEX_MEWTWO; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
}
for (i = NATIONAL_DEX_MEW; i < NATIONAL_DEX_TYRANITAR; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
}
for (i = NATIONAL_DEX_CELEBI; i < NATIONAL_DEX_RAYQUAZA; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return 0;
}
return 1;
}
+4 -4
View File
@@ -25,13 +25,13 @@ u16 Special_GetPokedexCount(void)
{
if (gSpecialVar_0x8004 == 0)
{
gSpecialVar_0x8005 = sub_8088EDC(0);
gSpecialVar_0x8006 = sub_8088EDC(1);
gSpecialVar_0x8005 = GetKantoPokedexCount(0);
gSpecialVar_0x8006 = GetKantoPokedexCount(1);
}
else
{
gSpecialVar_0x8005 = pokedex_count(0);
gSpecialVar_0x8006 = pokedex_count(1);
gSpecialVar_0x8005 = GetNationalPokedexCount(0);
gSpecialVar_0x8006 = GetNationalPokedexCount(1);
}
return sub_806E25C();
}