summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-06-12 16:23:27 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-06-12 17:53:50 -0400
commit6e12ebdda862b77eb4d6afa6533e82373e5834ce (patch)
treea4c5251244b0b79c8833bc98f63ac121617738b7
parent09514ee0e6982c61d884682b4b747a4383f0d1b8 (diff)
Transfer pokemon .rodata to C
-rw-r--r--arm9/asm/pokemon_s.s102
-rw-r--r--arm9/src/pokemon.c96
2 files changed, 101 insertions, 97 deletions
diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s
index ab47775b..0371e142 100644
--- a/arm9/asm/pokemon_s.s
+++ b/arm9/asm/pokemon_s.s
@@ -4,103 +4,11 @@
.extern gGameLanguage
.extern gGameVersion
-
- .section .rodata
-
- .global sItemOdds
-sItemOdds: ; 0x020F7ECC
- .short 0x002D, 0x005F
- .short 0x0014, 0x0050
-
- .global sFriendshipModTable
-sFriendshipModTable: ; 0x020F7ED4
- .byte 5, 3, 2
- .byte 5, 3, 2
- .byte 1, 1, 0
- .byte 3, 2, 1
- .byte 1, 1, 0
- .byte 1, 1, 1
- .byte -1, -1, -1
- .byte -5, -5, -10
- .byte -5, -5, -10
- .byte 3, 2, 1
-
- .global sLegendaryMonsList
-sLegendaryMonsList: ; 0x020F7EF2
- .short SPECIES_MEWTWO
- .short SPECIES_MEW
- .short SPECIES_HO_OH
- .short SPECIES_LUGIA
- .short SPECIES_CELEBI
- .short SPECIES_KYOGRE
- .short SPECIES_GROUDON
- .short SPECIES_RAYQUAZA
- .short SPECIES_JIRACHI
- .short SPECIES_DEOXYS
- .short SPECIES_DIALGA
- .short SPECIES_PALKIA
- .short SPECIES_GIRATINA
- .short SPECIES_PHIONE
- .short SPECIES_MANAPHY
- .short SPECIES_DARKRAI
- .short SPECIES_SHAYMIN
- .short SPECIES_ARCEUS
-
- .global UNK_020F7F16
-UNK_020F7F16: ; 0x020F7F16
- .byte 0, 0, 0, 0, 0
- .byte 1, 0, 0, 0, -1
- .byte 1, 0, -1, 0, 0
- .byte 1, -1, 0, 0, 0
- .byte 1, 0, 0, -1, 0
- .byte -1, 0, 0, 0, 1
- .byte 0, 0, 0, 0, 0
- .byte 0, 0, -1, 0, 1
- .byte 0, -1, 0, 0, 1
- .byte 0, 0, 0, -1, 1
- .byte -1, 0, 1, 0, 0
- .byte 0, 0, 1, 0, -1
- .byte 0, 0, 0, 0, 0
- .byte 0, -1, 1, 0, 0
- .byte 0, 0, 1, -1, 0
- .byte -1, 1, 0, 0, 0
- .byte 0, 1, 0, 0, -1
- .byte 0, 1, -1, 0, 0
- .byte 0, 0, 0, 0, 0
- .byte 0, 1, 0, -1, 0
- .byte -1, 0, 0, 1, 0
- .byte 0, 0, 0, 1, -1
- .byte 0, 0, -1, 1, 0
- .byte 0, -1, 0, 1, 0
- .byte 0, 0, 0, 0, 0
-
- .global sNatureStatMods
-sNatureStatMods: ; 0x020F7F93
- .byte 0, 0, 0, 0, 0
- .byte 1, -1, 0, 0, 0
- .byte 1, 0, -1, 0, 0
- .byte 1, 0, 0, -1, 0
- .byte 1, 0, 0, 0, -1
- .byte -1, 1, 0, 0, 0
- .byte 0, 0, 0, 0, 0
- .byte 0, 1, -1, 0, 0
- .byte 0, 1, 0, -1, 0
- .byte 0, 1, 0, 0, -1
- .byte -1, 0, 1, 0, 0
- .byte 0, -1, 1, 0, 0
- .byte 0, 0, 0, 0, 0
- .byte 0, 0, 1, -1, 0
- .byte 0, 0, 1, 0, -1
- .byte -1, 0, 0, 1, 0
- .byte 0, -1, 0, 1, 0
- .byte 0, 0, -1, 1, 0
- .byte 0, 0, 0, 0, 0
- .byte 0, 0, 0, 1, -1
- .byte -1, 0, 0, 0, 1
- .byte 0, -1, 0, 0, 1
- .byte 0, 0, -1, 0, 1
- .byte 0, 0, 0, -1, 1
- .byte 0, 0, 0, 0, 0
+ .extern sItemOdds
+ .extern sFriendshipModTable
+ .extern sLegendaryMonsList
+ .extern UNK_020F7F16
+ .extern sNatureStatMods
.section .data
diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c
index 7905046d..591bf401 100644
--- a/arm9/src/pokemon.c
+++ b/arm9/src/pokemon.c
@@ -31,6 +31,102 @@ int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno);
< 8u)
#define CALC_UNOWN_LETTER(pid) ((u32)((((pid) & 0x3000000) >> 18) | (((pid) & 0x30000) >> 12) | (((pid) & 0x300) >> 6) | (((pid) & 0x3) >> 0)) % 28u)
+const u16 sItemOdds[2][2] = {
+ { 45, 95 },
+ { 20, 80 },
+};
+
+const s8 sFriendshipModTable[][3] = {
+ { 5, 3, 2 },
+ { 5, 3, 2 },
+ { 1, 1, 0 },
+ { 3, 2, 1 },
+ { 1, 1, 0 },
+ { 1, 1, 1 },
+ { -1, -1, -1 },
+ { -5, -5, -10 },
+ { -5, -5, -10 },
+ { 3, 2, 1 },
+};
+
+const u16 sLegendaryMonsList[] = {
+ SPECIES_MEWTWO,
+ SPECIES_MEW,
+ SPECIES_HO_OH,
+ SPECIES_LUGIA,
+ SPECIES_CELEBI,
+ SPECIES_KYOGRE,
+ SPECIES_GROUDON,
+ SPECIES_RAYQUAZA,
+ SPECIES_JIRACHI,
+ SPECIES_DEOXYS,
+ SPECIES_DIALGA,
+ SPECIES_PALKIA,
+ SPECIES_GIRATINA,
+ SPECIES_PHIONE,
+ SPECIES_MANAPHY,
+ SPECIES_DARKRAI,
+ SPECIES_SHAYMIN,
+ SPECIES_ARCEUS,
+};
+
+const s8 UNK_020F7F16[][5] = {
+ // Atk, Def, Spd, SpA, SpD
+ { 0, 0, 0, 0, 0},
+ { 1, 0, 0, 0, -1},
+ { 1, 0, -1, 0, 0},
+ { 1, -1, 0, 0, 0},
+ { 1, 0, 0, -1, 0},
+ { -1, 0, 0, 0, 1},
+ { 0, 0, 0, 0, 0},
+ { 0, 0, -1, 0, 1},
+ { 0, -1, 0, 0, 1},
+ { 0, 0, 0, -1, 1},
+ { -1, 0, 1, 0, 0},
+ { 0, 0, 1, 0, -1},
+ { 0, 0, 0, 0, 0},
+ { 0, -1, 1, 0, 0},
+ { 0, 0, 1, -1, 0},
+ { -1, 1, 0, 0, 0},
+ { 0, 1, 0, 0, -1},
+ { 0, 1, -1, 0, 0},
+ { 0, 0, 0, 0, 0},
+ { 0, 1, 0, -1, 0},
+ { -1, 0, 0, 1, 0},
+ { 0, 0, 0, 1, -1},
+ { 0, 0, -1, 1, 0},
+ { 0, -1, 0, 1, 0},
+ { 0, 0, 0, 0, 0},
+};
+
+const u8 sNatureStatMods[][5] = {
+ { 0, 0, 0, 0, 0 },
+ { 1, -1, 0, 0, 0 },
+ { 1, 0, -1, 0, 0 },
+ { 1, 0, 0, -1, 0 },
+ { 1, 0, 0, 0, -1 },
+ { -1, 1, 0, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 1, -1, 0, 0 },
+ { 0, 1, 0, -1, 0 },
+ { 0, 1, 0, 0, -1 },
+ { -1, 0, 1, 0, 0 },
+ { 0, -1, 1, 0, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 1, -1, 0 },
+ { 0, 0, 1, 0, -1 },
+ { -1, 0, 0, 1, 0 },
+ { 0, -1, 0, 1, 0 },
+ { 0, 0, -1, 1, 0 },
+ { 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 1, -1 },
+ { -1, 0, 0, 0, 1 },
+ { 0, -1, 0, 0, 1 },
+ { 0, 0, -1, 0, 1 },
+ { 0, 0, 0, -1, 1 },
+ { 0, 0, 0, 0, 0 },
+};
+
void ZeroMonData(struct Pokemon * pokemon)
{
MIi_CpuClearFast(0, pokemon, sizeof(struct Pokemon));