diff options
Diffstat (limited to 'arm9')
| -rw-r--r-- | arm9/asm/pokemon_s.s | 173 | ||||
| -rw-r--r-- | arm9/asm/unk_020377F0.s | 2 | ||||
| -rw-r--r-- | arm9/asm/unk_0206F3FC.s | 2 | ||||
| -rw-r--r-- | arm9/asm/unk_02072548.s | 2 | ||||
| -rw-r--r-- | arm9/asm/unk_0207550C.s | 2 | ||||
| -rw-r--r-- | arm9/asm/unk_020842DC.s | 2 | ||||
| -rw-r--r-- | arm9/global.inc | 2 | ||||
| -rw-r--r-- | arm9/modules/11/asm/module_11.s | 2 | ||||
| -rw-r--r-- | arm9/modules/80/asm/module_80.s | 4 | ||||
| -rw-r--r-- | arm9/src/pokemon.c | 86 | 
10 files changed, 94 insertions, 183 deletions
| diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 7cd8fca4..706b19f4 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -23,177 +23,8 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8  	.extern BoxMonIsShiny -	thumb_func_start FUN_02069038 -FUN_02069038: ; 0x02069038 -	push {r3-r7, lr} -	sub sp, #0x28 -	add r4, r0, #0x0 -	add r6, r2, #0x0 -	add r5, r3, #0x0 -	mov r3, #0x1c -	add r0, sp, #0x8 -	add r7, r1, #0x0 -	str r3, [sp, #0x0] -	add r0, #0x2 -	mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM -	mov r2, #0x0 -	mul r3, r6 -	bl ReadFromNarcMemberByIdPair -	cmp r5, #0x2 -	bne _0206906C -	add r1, sp, #0x4 -	mov r0, #0x6 -	ldrsb r0, [r1, r0] -	strh r0, [r1, #0x0] -	ldrb r0, [r1, #0x7] -	strh r0, [r1, #0x2] -	ldr r0, [sp, #0x44] -	strb r0, [r1, #0x4] -	b _02069096 -_0206906C: -	ldr r0, [sp, #0x40] -	lsl r0, r0, #0x18 -	lsr r0, r0, #0x18 -	bl FUN_02014C3C -	add r5, r0, #0x0 -	cmp r5, #0x3 -	blt _02069080 -	bl ErrorHandling -_02069080: -	lsl r2, r5, #0x1 -	add r0, sp, #0xc -	ldrsb r1, [r0, r2] -	add r0, sp, #0x4 -	strh r1, [r0, #0x0] -	add r1, sp, #0xc -	add r1, #0x1 -	ldrb r1, [r1, r2] -	strh r1, [r0, #0x2] -	ldr r1, [sp, #0x44] -	strb r1, [r0, #0x4] -_02069096: -	ldr r3, [sp, #0x48] -	add r0, r4, #0x0 -	lsl r3, r3, #0x18 -	add r1, r7, #0x0 -	add r2, sp, #0x4 -	lsr r3, r3, #0x18 -	bl FUN_02014C54 -	add sp, #0x28 -	pop {r3-r7, pc} -	.balign 4 - -	thumb_func_start FUN_020690AC -FUN_020690AC: ; 0x020690AC -	mov r2, #0x3c -	strh r2, [r0, #0x0] -	lsl r1, r1, #0x1 -	strh r1, [r0, #0x2] -	add r1, r1, #0x1 -	strh r1, [r0, #0x4] -	mov r1, #0x0 -	strh r1, [r0, #0x6] -	strb r1, [r0, #0x8] -	str r1, [r0, #0xc] -	bx lr -	.balign 4 - -	thumb_func_start FUN_020690C4 -FUN_020690C4: ; 0x020690C4 -	mov r0, #0xec -	bx lr - -	thumb_func_start FUN_020690C8 -FUN_020690C8: ; 0x020690C8 -	mov r0, #0x88 -	bx lr - -	thumb_func_start FUN_020690CC -FUN_020690CC: ; 0x020690CC -	ldr r3, _020690D0 ; =FUN_020690D4 -	bx r3 -	.balign 4 -_020690D0: .word FUN_020690D4 - -	thumb_func_start FUN_020690D4 -FUN_020690D4: ; 0x020690D4 -	push {r3, lr} -	mov r1, #0x70 -	mov r2, #0x0 -	bl GetBoxMonData -	lsl r0, r0, #0x18 -	lsr r0, r0, #0x18 -	pop {r3, pc} - -	thumb_func_start FUN_020690E4 -FUN_020690E4: ; 0x020690E4 -	bx lr -	.balign 4 - -	thumb_func_start FUN_020690E8 -FUN_020690E8: ; 0x020690E8 -	push {r3-r5, lr} -	sub sp, #0x8 -	mov r1, #0x5 -	mov r2, #0x0 -	add r4, r0, #0x0 -	bl GetMonData -	lsl r0, r0, #0x10 -	lsr r5, r0, #0x10 -	add r0, r4, #0x0 -	mov r1, #0xa0 -	mov r2, #0x0 -	bl GetMonData -	add r1, r0, #0x1 -	add r0, sp, #0x0 -	strb r1, [r0, #0x0] -	add r0, r4, #0x0 -	mov r1, #0x8 -	mov r2, #0x0 -	bl GetMonData -	str r0, [sp, #0x4] -	add r0, r5, #0x0 -	mov r1, #0x15 -	bl GetMonBaseStat -	mov r1, #0x64 -	add r5, r0, #0x0 -	bl GetExpByGrowthRateAndLevel -	ldr r1, [sp, #0x4] -	cmp r1, r0 -	bls _02069138 -	str r0, [sp, #0x4] -	add r0, r4, #0x0 -	mov r1, #0x8 -	add r2, sp, #0x4 -	bl SetMonData -_02069138: -	add r0, sp, #0x0 -	ldrb r1, [r0, #0x0] -	cmp r1, #0x64 -	bls _02069146 -	add sp, #0x8 -	mov r0, #0x0 -	pop {r3-r5, pc} -_02069146: -	add r0, r5, #0x0 -	bl GetExpByGrowthRateAndLevel -	ldr r1, [sp, #0x4] -	cmp r1, r0 -	blo _02069162 -	add r0, r4, #0x0 -	mov r1, #0xa0 -	add r2, sp, #0x0 -	bl SetMonData -	add sp, #0x8 -	mov r0, #0x1 -	pop {r3-r5, pc} -_02069162: -	mov r0, #0x0 -	add sp, #0x8 -	pop {r3-r5, pc} - -	thumb_func_start FUN_02069168 -FUN_02069168: ; 0x02069168 +	thumb_func_start GetMonEvolution +GetMonEvolution: ; 0x02069168  	push {r4-r7, lr}  	sub sp, #0x44  	add r7, r1, #0x0 diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index 0c8fe8c6..3959856b 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -1594,7 +1594,7 @@ _020382F6:  	mov r0, #0x0  	mov r2, #0x1  	lsr r3, r3, #0x10 -	bl FUN_02069168 +	bl GetMonEvolution  	str r0, [sp, #0x20]  	cmp r0, #0x0  	beq _02038380 diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index 984a657d..05ed529d 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -5436,7 +5436,7 @@ _02071E5A:  	str r0, [sp, #0x0]  	ldrh r3, [r3, #0x24]  	mov r0, #0x0 -	bl FUN_02069168 +	bl GetMonEvolution  	ldr r1, _02071F1C ; =0x000005A4  	ldr r2, [r5, r1]  	strh r0, [r2, #0x38] diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index 8b491bc6..ca80e1db 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -1219,7 +1219,7 @@ _02072E98:  	ldr r3, [r5, r3]  	mov r2, #0x3  	ldrh r3, [r3, #0x24] -	bl FUN_02069168 +	bl GetMonEvolution  	cmp r0, #0x0  	bne _02072ED0  	add r0, r5, #0x0 diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index ca869d5a..dfbddd58 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -2260,7 +2260,7 @@ _02076814:  	ldr r0, [r1, #0x0]  	add r1, r5, #0x0  	lsr r3, r3, #0x10 -	bl FUN_02069168 +	bl GetMonEvolution  	ldr r1, _02076878 ; =0x000005A4  	ldr r2, [r4, r1]  	strh r0, [r2, #0x38] diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s index fa59f95c..a1b65c4a 100644 --- a/arm9/asm/unk_020842DC.s +++ b/arm9/asm/unk_020842DC.s @@ -175,7 +175,7 @@ _0208443A:  	ldr r3, [sp, #0x4]  	add r1, r6, #0x0  	mov r2, #0x3 -	bl FUN_02069168 +	bl GetMonEvolution  	cmp r0, #0x0  	beq _02084464  	add r0, r4, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index c033aa3e..0dc52bc5 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4764,7 +4764,7 @@  .extern FUN_020690D4
  .extern FUN_020690E4
  .extern FUN_020690E8
 -.extern FUN_02069168
 +.extern GetMonEvolution
  .extern ReadFromPersonalPmsNarc
  .extern GetEggSpecies
  .extern FUN_02069698
 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index f8a593a1..2a3e4f64 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -6911,7 +6911,7 @@ _02230D9C:  	ldr r0, [r5, #4]
  	mov r2, #0
  	lsr r3, r3, #0x10
 -	bl FUN_02069168
 +	bl GetMonEvolution
  	str r0, [sp, #4]
  	cmp r0, #0
  	bne _02230DD0
 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 8b553253..52e2cc5f 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -17443,7 +17443,7 @@ _02235FDE:  	add r1, r7, #0  	mov r2, #1  	lsr r3, r3, #0x10 -	bl FUN_02069168 +	bl GetMonEvolution  	str r0, [sp, #0x24]  	cmp r0, #0  	beq _02236052 @@ -17534,7 +17534,7 @@ _022360B6:  	add r1, r7, #0  	mov r2, #1  	lsr r3, r3, #0x10 -	bl FUN_02069168 +	bl GetMonEvolution  	str r0, [sp, #0x28]  	cmp r0, #0  	beq _02236118 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index f6875b10..0a2e160c 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -2388,7 +2388,87 @@ void FUN_02068FE0(struct SomeDrawPokemonStruct * a0, u16 a1, int a2)  void FUN_02069010(void * dest, int a1)  { -    u8 buffer[28]; -    ReadFromNarcMemberByIdPair(buffer, NARC_POKETOOL_POKEANM_POKEANM, 0, 28 * a1, 28); -    MI_CpuCopy8(buffer + 8, dest, 20); +    struct Pokeanm buffer; +    ReadFromNarcMemberByIdPair(&buffer, NARC_POKETOOL_POKEANM_POKEANM, 0, 28 * a1, 28); +    MI_CpuCopy8(buffer.unk8, dest, 20); +} + +void FUN_02069038(u32 a0, u32 a1, u32 a2, s32 a3, u32 a4, u32 a5, u32 a6) +{ +    struct UnkStruct_02069038 sp4; +    ReadFromNarcMemberByIdPair(&sp4.anim, NARC_POKETOOL_POKEANM_POKEANM, 0, a2 * 28, 28); +    if (a3 == 2) +    { +        sp4.unk0 = sp4.anim.unk0[0].unk0; +        sp4.unk2 = sp4.anim.unk0[0].unk1; +        sp4.unk4 = a5; +    } +    else +    { +        a3 = FUN_02014C3C(a4); +        GF_ASSERT(a3 < 3); +        sp4.unk0 = sp4.anim.unk0[a3 + 1].unk0; +        sp4.unk2 = sp4.anim.unk0[a3 + 1].unk1; +        sp4.unk4 = a5; +    } +    FUN_02014C54(a0, a1, &sp4, a6); +} + +void FUN_020690AC(struct SomeDrawPokemonStruct * a0, u32 a1) +{ +    a0->unk0 = 60; +    a0->unk2 = a1 * 2; +    a0->unk4 = a1 * 2 + 1; +    a0->unk6 = 0; +    a0->unk8 = 0; +    a0->unkC = 0; +} + +u32 FUN_020690C4(void) +{ +    return sizeof(struct Pokemon); +} + +u32 FUN_020690C8(void) +{ +    return sizeof(struct BoxPokemon); +} + +u8 FUN_020690D4(struct BoxPokemon * boxmon); + +u8 FUN_020690CC(struct Pokemon * pokemon) +{ +    return FUN_020690D4(&pokemon->box); +} + +u8 FUN_020690D4(struct BoxPokemon * boxmon) +{ +    return GetBoxMonData(boxmon, MON_DATA_FORME, NULL); +} + +void FUN_020690E4(void) +{ + +} + +BOOL FUN_020690E8(struct Pokemon * pokemon) +{ +    u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); +    u8 level = GetMonData(pokemon, MON_DATA_LEVEL, NULL) + 1; +    u32 exp = GetMonData(pokemon, MON_DATA_EXPERIENCE, NULL); +    u32 growthrate = GetMonBaseStat(species, BASE_GROWTH_RATE); +    u32 maxexp = GetExpByGrowthRateAndLevel(growthrate, 100); +    if (exp > maxexp) +    { +        exp = maxexp; +        SetMonData(pokemon, MON_DATA_EXPERIENCE, &exp); +    } +    if (level > 100) +        return FALSE; +    if (exp >= GetExpByGrowthRateAndLevel(growthrate, level)) +    { +        SetMonData(pokemon, MON_DATA_LEVEL, &level); +        return TRUE; +    } +    return FALSE;  } | 
