diff options
| -rw-r--r-- | asm/pokemon_3.s | 108 | ||||
| -rw-r--r-- | src/pokemon_3.c | 36 | 
2 files changed, 36 insertions, 108 deletions
| diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s index 897c87ca9..7596de54f 100644 --- a/asm/pokemon_3.s +++ b/asm/pokemon_3.s @@ -6,114 +6,6 @@  	.text -	thumb_func_start TryIncrementMonLevel -TryIncrementMonLevel: @ 8040300 -	push {r4-r6,lr} -	sub sp, 0x4 -	adds r6, r0, 0 -	movs r1, 0xB -	movs r2, 0 -	bl GetMonData -	adds r4, r0, 0 -	lsls r4, 16 -	lsrs r4, 16 -	adds r0, r6, 0 -	movs r1, 0x38 -	movs r2, 0 -	bl GetMonData -	adds r0, 0x1 -	mov r1, sp -	strb r0, [r1] -	adds r0, r6, 0 -	movs r1, 0x19 -	movs r2, 0 -	bl GetMonData -	ldr r5, _08040358 @ =gExperienceTables -	mov r1, sp -	ldrb r2, [r1] -	lsls r2, 2 -	ldr r3, _0804035C @ =gBaseStats -	lsls r1, r4, 3 -	subs r1, r4 -	lsls r1, 2 -	adds r1, r3 -	ldrb r3, [r1, 0x13] -	movs r1, 0xCA -	lsls r1, 1 -	muls r1, r3 -	adds r2, r1 -	adds r2, r5 -	ldr r1, [r2] -	cmp r0, r1 -	bhi _08040360 -	movs r0, 0 -	b _0804036C -	.align 2, 0 -_08040358: .4byte gExperienceTables -_0804035C: .4byte gBaseStats -_08040360: -	adds r0, r6, 0 -	movs r1, 0x38 -	mov r2, sp -	bl SetMonData -	movs r0, 0x1 -_0804036C: -	add sp, 0x4 -	pop {r4-r6} -	pop {r1} -	bx r1 -	thumb_func_end TryIncrementMonLevel - -	thumb_func_start CanMonLearnTMHM -CanMonLearnTMHM: @ 8040374 -	push {r4,r5,lr} -	lsls r1, 24 -	lsrs r4, r1, 24 -	adds r5, r4, 0 -	movs r1, 0x41 -	movs r2, 0 -	bl GetMonData -	lsls r0, 16 -	lsrs r1, r0, 16 -	adds r3, r1, 0 -	movs r0, 0xCE -	lsls r0, 1 -	cmp r1, r0 -	bne _08040396 -	movs r0, 0 -	b _080403C2 -_08040396: -	cmp r4, 0x1F -	bls _080403B4 -	adds r0, r4, 0 -	subs r0, 0x20 -	movs r2, 0x1 -	lsls r2, r0 -	ldr r0, _080403B0 @ =gTMHMLearnsets -	lsls r1, 3 -	adds r0, 0x4 -	adds r1, r0 -	ldr r0, [r1] -	ands r0, r2 -	b _080403C2 -	.align 2, 0 -_080403B0: .4byte gTMHMLearnsets -_080403B4: -	movs r1, 0x1 -	lsls r1, r5 -	ldr r2, _080403C8 @ =gTMHMLearnsets -	lsls r0, r3, 3 -	adds r0, r2 -	ldr r0, [r0] -	ands r0, r1 -_080403C2: -	pop {r4,r5} -	pop {r1} -	bx r1 -	.align 2, 0 -_080403C8: .4byte gTMHMLearnsets -	thumb_func_end CanMonLearnTMHM -  	thumb_func_start sub_80403CC  sub_80403CC: @ 80403CC  	push {r4-r7,lr} diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 9f13e0e1c..857eb5935 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -82,6 +82,8 @@ extern u16 gTrainerBattleOpponent;  extern u16 gBattleTypeFlags;  extern struct BaseStats gBaseStats[];  extern u32 gBitTable[]; +extern u32 gExperienceTables[8][101]; +extern u32 gTMHMLearnsets[][2];  extern u8 gUnknown_082082F8[];  extern u8 gUnknown_083FFDB3[]; @@ -977,3 +979,37 @@ void PartySpreadPokerus(struct Pokemon *party)          }      }  } + +bool8 TryIncrementMonLevel(struct Pokemon *mon) +{ +    u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); +    u8 nextLevel = GetMonData(mon, MON_DATA_LEVEL, 0) + 1; +    if (GetMonData(mon, MON_DATA_EXP, 0) > gExperienceTables[gBaseStats[species].growthRate][nextLevel]) +    { +        SetMonData(mon, MON_DATA_LEVEL, &nextLevel); +        return TRUE; +    } +    else +    { +        return FALSE; +    } +} + +u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm) +{ +    u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); +    if (species == SPECIES_EGG) +    { +        return 0; +    } +    else if (tm < 32) +    { +        u32 mask = 1 << tm; +        return gTMHMLearnsets[species][0] & mask; +    } +    else +    { +        u32 mask = 1 << (tm - 32); +        return gTMHMLearnsets[species][1] & mask; +    } +} | 
