.text
.align 2.text
.align 2
.thumb
.thumb_func
.global typechangeabilities
BufferAbility:
mov r0, r6
add r0, #0x20
ldrb r1, [r0]
NormalCheck:
mov r0, r10
cmp r0, #0x0
bne NormalizeCheck
FightingCheck:
cmp r1, #0xC1
bne FlyingCheck
Fighting:
mov r0, #0x1
b StoreType
FlyingCheck:
cmp r1, #0xB9
bne PoisonCheck
Flying:
mov r0, #0x2
b StoreType
PoisonCheck:
cmp r1, #0xC2
bne GroundCheck
Poison:
mov r0, #0x3
b StoreType
GroundCheck:
cmp r1, #0xC3
bne RockCheck
Ground:
mov r0, #0x4
b StoreType
RockCheck:
cmp r1, #0xC4
bne BugCheck
Rock:
mov r0, #0x5
b StoreType
BugCheck:
cmp r1, #0xC5
bne GhostCheck
Bug:
mov r0, #0x6
b StoreType
GhostCheck:
cmp r1, #0xC6
bne SteelCheck
Ghost:
mov r0, #0x7
b StoreType
SteelCheck:
cmp r1, #0xC7
bne FireCheck
Steel:
mov r0, #0x8
b StoreType
FireCheck:
cmp r1, #0xC8
bne WaterCheck
Fire:
mov r0, #0xA
b StoreType
WaterCheck:
cmp r1, #0xC9
bne GrassCheck
Water:
mov r0, #0xB
b StoreType
GrassCheck:
cmp r1, #0xCA
bne ElectricCheck
Grass:
mov r0, #0xC
b StoreType
ElectricCheck:
cmp r1, #0xCB
bne PsychicCheck
Electric:
mov r0, #0xD
b StoreType
PsychicCheck:
cmp r1, #0xCC
bne IceCheck
Psychic:
mov r0, #0xE
b StoreType
IceCheck:
cmp r1, #0xAF
bne DragonCheck
Ice:
mov r0, #0xF
b StoreType
DragonCheck:
cmp r1, #0xCD
bne DarkCheck
Dragon:
mov r0, #0x10
b StoreType
DarkCheck:
cmp r1, #0xCE
bne FairyCheck
Dark:
mov r0, #0x11
b StoreType
FairyCheck:
cmp r1, #0xB7
bne BirdCheck
Fairy:
mov r0, #0x12
b StoreType
BirdCheck:
cmp r1, #0xCF
bne LightCheck
Bird:
mov r0, #0x13
b StoreType
LightCheck:
cmp r1, #0xD0
bne ChaosCheck
Light:
mov r0, #0x14
b StoreType
ChaosCheck:
cmp r1, #0xD1
bne MysticCheck
Chaos:
mov r0, #0x15
b StoreType
MysticCheck:
cmp r1, #0xD2
bne Return
Mystic:
mov r0, #0x16
b StoreType
Boost:
push {r0-r1}
mov r0, r8
mov r1, #0xA7
mul r0, r1
lsr r0, #0x7
mov r8, r0
mul r7, r1
lsr r7, #0x7
pop {r0-r1}
b StoreType
NormalizeCheck:
cmp r1, #0x61
bne Return
Normalize:
mov r0, #0x0
StoreType:
mov r10, r0
ldr r0, .ChangeTypeLoc
ldr r1, [r0]
add r1, #0x13
ldrb r2, [r1]
cmp r2, #0x0
bne Return
mov r2, r10
strb r2, [r1]
Return:
ldr r0, [sp, #0x4]
ldrh r0, [r0, #0xA]
str r0, [sp, #0x18]
ldrh r0, [r6, #0x2E]
cmp r0, #0xAF
bne NoEnigmaBerry
ldr r1, .return
bx r1
NoEnigmaBerry:
ldr r0, .return2
bx r0
.align 2
.ChangeTypeLoc: .word 0x02023FE8
.return: .word 0x0803ED87
.return2: .word 0x0803EDA1