Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .org 0x3ecec
- Start:
- push {r4-r7, lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7, lr}
- add sp, -#0x2c
- add r6, r0, #0x0
- str r1, [sp, #0x4]
- str r2, [sp, #0x8]
- ldr r0, [sp, #0x4c]
- ldr r1, [sp, #0x50]
- ldr r2, [sp, #0x54]
- ldr r4, [sp, #0x58]
- lsl r3, r3, #0x10
- lsr r3, r3, #0x10
- str r3, [sp, #0xc]
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- lsl r1, r1, #0x18
- lsr r7, r1, #0x18
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
- str r2, [sp, #0x10]
- lsl r4, r4, #0x18
- lsr r4, r4, #0x18
- mov r5, #0x0
- cmp r3, #0x0
- bne CustomBP
- # x3ed24
- LoadBP:
- ldr r2, x02024020
- ldr r1, x08250c04
- ldr r3, [sp, #0x8]
- lsl r0, r3, #0x1
- add r0, r0, r3
- lsl r0, r0, #0x2
- add r0, r0, r1
- ldrb r0, [r0, #0x1]
- strh r0, [r2, #0x0]
- b EndBPLoad
- # x3ed40
- CustomBP
- ldr r0, 0x02024020
- strh r3, [r0, #0x0]
- # x3ed44
- EndBPLoad:
- cmp r7, #0x0
- bne CustomType
- # x3ed48
- LoadType:
- ldr r1, x08250c04
- ldr r7, [sp, #0x8]
- lsl r0, r7, #0x1
- add r0, r0, r7
- lsl r0, r0, #0x2
- add r0, r0, r1
- ldrb r0, [r0, #0x2]
- mov r9, r0
- b EndType
- # x3ed64
- CustomType:
- mov r0, #0x3f
- mov r9, r0
- mov r1, r9
- and r1, r7
- mov r9, r1
- # x3ed6e
- EndType:
- ldrh r7, [r6, #0x2]
- ldr r2, [sp, #0x4]
- ldrh r2, [r2, #0x4]
- str r2, [sp, #0x14]
- ldrh r3, [r6, #0x8]
- mov r8, r3
- ldr r0, [sp, #0x4]
- ldrh r0, [r0, #0xa]
- str r0 [sp, #0x18]
- ldrh r0, [r6, #0x2e]
- cmp r0, #0xaf
- bne LoadItems
- # x3ed84
- EnigmaBerry:
- #whocares
- # x3eda0
- LoadItems:
- ldrh r0, [r6, #0x2e]
- bl x9a924
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- mov r10, r0
- ldrh r0, [r6, #0x2e]
- bl x9a948
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x20]
- ldr r1, [sp, #0x4]
- ldrh r0, [r1, #0x2e]
- cmp r0, #0xaf
- bne LoadItems2
- # x3edc0
- EnigmaBerry2:
- ...Stuff
- b x3edfc
- # x3ede6
- LoadItems2:
- ldr r2, [sp, #0x4]
- ldrh r0, [r2, #0x2e]
- bl x9a924
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x1c]
- ldr r3, [sp, #0x4]
- ldrh r0, [r3, #0x2e]
- bl x9a948
- add r0, r6, #0x0
- add r0, #0x20
- ldrb r1, [r0, #0x0]
- str r0, [sp, #0x24]
- cmp r1, #0x25
- beq HugePower
- cmp r1, #0x4a
- bne BadgeBoosts
- # x3ee0c
- HugePower:
- lsl r0, r7, #0x11
- lsr r7, r0, #0x10
- # x3ee10
- BadgeBoosts:
- ldr r0, x02022b4c (battle type)
- ldr r0, [r0, #0x0]
- ldr r1, x802 (trainer tower or link battle)
- and r0, r1
- cmp r0, #0x0
- bne SkipBadgeBoosts
- # x3ee1c
- BoulderBadge:
- mov r0, #0x82
- lsl r0, r0, #0x4
- bl x6e6d0 (flag check)
- lsl r0, r0, #0x18
- cmp r0, #0x0
- beq BadgeBoostsTwo
- ldr r0, [sp, #0x10]
- bl x751c4
- lsl r0, r0, #0x18
- cmp r0, #0x0
- bne BadgeBoostsTwo
- mov r0, #0x6e
- mul r0, r7
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- # x3ee44
- BadgeBoostsTwo
- ldr r0, x02022b4c (trainer type)
- ldr r0, [r0, #0x0]
- ldr r1, x802 (trainer tower or link battle)
- and r0, r1
- cmp r0, #0x0
- bne SkipBadgeBoosts
- # x3ee50
- SoulBadge:
- ldr r0, x824
- bl x6e6d0 (flag check)
- lsl r0, r0, #0x18
- cmp r0, #0x0
- beq BadgeBoostsThree
- add r0, r4, #0x0
- bl x751c4
- lsl r0, #0x18
- cmp r0, #0x0
- bne BadgeBoostsThree
- mov r0, #0x6e
- ldr r1, [sp, #0x14]
- mul r0, r1
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x14]
- # x3ee7a
- BadgeBoostsThree:
- ldr x02022b4c (battle type)
- ldr r0, [r0, #0x0]
- ldr r1, x802 (trainer tower or link battle)
- and r0, r1
- cmp r0, #0x0
- bne SkipBadgeBoosts
- # x3ee86
- VolcanoBadge:
- ldr r0, x826
- bl x6e6d0 (flag check)
- lsl r0, r0, #0x18
- cmp r0, #0x0
- beq x3eeb2
- ldr r0, [sp, #0x10]
- bl x751c4
- lsl r0, r0, #0x18
- cmp r0, #0x0
- beq x3eeb2
- ldr r0, [sp, #0x10]
- mov r0, #0x6e
- mov r2, r8
- mul r2, r0
- add r0, r2, #0x0
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r8, r0
- # x3eeb2
- BadgeBoostsFour:
- ldr r0, x02022b4c (battle type)
- ldr r0, [r0, #0x0]
- ldr r1, x802 (trainer tower or link battle
- and r0, r1
- cmp r0, #0x0
- bne SkipBadgeBoosts
- #Yes, we did just do this same exact check four times.
- #Apparently Game Freak expected you to start a link
- #battle while damage calc was running.
- # x3eebe
- VolcanoBadgeSDef:
- ldr r0, x826
- bl x6e6d0 (flag check)
- lsl r0, #0x18
- cmp r0, r0, #0x0
- beq SkipBadgeBoosts
- add r0, r4, #0x0
- bl x751c4
- lsl r0, r0, #0x18
- cmp r0, #0x0
- bne SkipBadgeBoosts
- mov r0, #0x6e
- ldr r3, [sp, #0x18]
- mul r0, r3
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x18]
- # x3eee8
- SkipBadgeBoosts:
- TypeBoostingItemHandler:
- mov r2, #0x0
- ldr r4, x0825decc (table: maps types to type-boosting items)
- ldr r0, [sp, #0x4]
- add r0, #0x20
- str r0, [sp, #0x28]
- add r3, r4, #0x0
- CheckItem:
- lsl r1, r2, #0x1
- ldrb r0, [r3, #0x0]
- cmp r10, #0x0
- bne x3ef3c
- add r0, r4, #0x1
- add r0, r1, r0
- ldrb r0, [r0, #0x0]
- cmp r9, r0
- bne x3ef3c
- # x3ef06
- # If we're here, it's to apply the +N% boost the item gives.
- # This is done by increasing Attack or Special Attack, not BP.
- CheckMoveClass:
- mov r1, r9
- cmp r1, #0x8
- bhi TypeBoostingSpecial:
- b TypeBoostingPhysical
- # x3ef0e
- TypeBoostingSpecial
- ldr r0, [sp, #0x20]
- add r0, #0x64
- mov r2, r8
- mul r2, r0
- add r0, r2, #0x0
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r8, r0
- b EndTypeBoostingItems
- # x3edd4
- TypeBoostingPhysical:
- ldr r0, [sp, #0x20]
- add r0, #0x64
- mul r0, r7
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- b EndTypeBoostingItems
- # x3ef3c
- MoveToNextItem:
- add r3, #0x2
- add r2, #0x1
- cmp r2, #0x10
- bls EndTypeBoostingItems
- # x3ef44
- EndTypeBoostingItems:
- ChoiceBand:
- mov r3, r10
- cmp r3, #0x1d
- bne SoulDewSAtk
- mov r0, #0x96
- mul r0, r7
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- # x3ef58
- SoulDewSAtk:
- mov r0, r10
- cmp r0, #0x22
- bne x3ef90
- ldr r0, x02022b4c
- ldr r0, [r0, #0x0]
- mov r1, #0x80
- lsl r1, r1, #0x1
- and r0, r1
- cmp r0, #0x0
- bne x3ef90
- ldr r1, xfffffe69 (negative 407: 407 is latias's slot)
- add r0, r1, #0x0
- ldrh r2, [r6, #0x0]
- add r0, r0, r2
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0x1
- bhi x3ef90
- mov r0, #0x96
- mov r3, r8
- mul r3, r0
- add r0, r3, #0x0
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r8, r0
- # x3ef90
- SoulDewSDef:
- ldr r0, [sp, #0x1C]
- cmp r0, #0x22
- bne DeepSeaTooth
- ldr r0, x02022b4c
- ldr r0, [r0, #0x0]
- mov r1, #0x80
- lsl r1, r1, #0x01
- and r0, r1
- cmp r0, #0x0
- bne DeepSeaTooth
- ldr r1, xfffffe69 (negative 407: 407 is latias's slot)
- add r0, r1, #0x0
- ldr r2, [sp, #0x4]
- ldrh r2, [r2, #0x0]
- add r0, r0, r2
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0x1
- bhi DeepSeaTooth
- mov r0, #0x96
- ldr r3, [sp, #0x18]
- mul r0, r3
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x18]
- # x3efc8
- DeepSeaTooth:
- mov r0, r10
- cmp r0, #0x23
- bne DeepSeaScale
- ldrh r1, [r6, #0x0]
- ldr r0, x175 (clamperl)
- cmp r1, r0
- bne DeepSeaScale
- mov r1, r8
- lsl r0, r1 #0x11
- lsr r0, #0x10
- mov r8, r0
- # x3efde
- DeepSeaScale:
- ldr r2, [sp, #0x1c]
- cmp r2, #0x24
- bne LightBall
- ldr r3, [sp, #0x4]
- ldrh r1, [r3, #0x0]
- ldr r0, x175 (clamperl)
- cmp r1, r0
- bne LightBall
- ldr r1, [sp, #0x18]
- lsl r0, r1, #0x11
- lsr r0, r0, #0x10
- str r0, [sp, #0x18]
- # x3eff6 (jp: x3e762)
- LightBall:
- mov r2, r10
- cmp r2, #0x2d
- bne MetalPowder:
- ldrh r0, [r6, #0x0]
- cmp r0, #0x19 (pikachu)
- bne MetalPowder:
- mov r3, r8
- lsl r0, r3, #0x11
- lsr r0, r0, #0x10
- mov r8, r0
- # x3f00a (jp: x3e776)
- MetalPowder:
- ldr r0, [sp, #0x1c]
- cmp r0, #0x40
- bne ThickClub
- ldr r1, [sp, #0x4]
- ldrh r0, [r1, #0x0]
- cmp r0, #0x84 (ditto)
- bne ThickClub
- ldr r2, [sp, #0x14]
- lsl r0, r2, #0x11
- lsr r0, r0, #0x10
- str r0, [sp, #0x14]
- # x3f020 (jp: x3e78c)
- ThickClub:
- mov r3, r10
- cmp r3, #0x14
- bne x3f036
- ldrh r0, [r6, #0x0]
- sub r0, #0x68 (cubone)
- lsl r0, #0x10
- lsr r0, #0x10
- cmp r0, #0x1
- bhi x3f036
- lsl r0, r7, #0x11
- lsr r7, r0, #0x10
- # x3f036
- ThickFat:
- ldr r1, [sp, #0x28]
- ldrb r0, [r1, #0x0]
- cmp r0, #0x2f (thick fat)
- bne Hustle
- mov r2, r9
- cmp r2, #0xa (fire)
- beq ApplyThickFat
- cmp r2, #0xf (ice)
- bne Hustle
- # x3f048
- ApplyThickFat:
- mov r3, r8
- lsr r3, r3, #0x1
- mov r8, r3
- # x3f04e
- Hustle:
- ldr r0, [sp, #0x24]
- ldrb r4, [r0, #0x0]
- cmp r4, #0x37
- bne Plus
- mov r0, #0x96
- mul r0, r7
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- # x3f064
- Plus:
- cmp r4, #0x39
- bne Minus
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r0, #0xe
- mov r1, #0x0
- mov r2, #0x3a
- mov r3, #0x0
- bl x19f18 (look for ability among all combatants: minus)
- lsl r0, #0x18
- cmp r0, #0x0
- beq Minus
- mov r0, #0x96
- mov r1, r8
- mul r1, r0
- add r0, r1, #0x0
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r8, r0
- # x3f092
- Minus:
- ldr r2, [sp, #0x24]
- ldrb r0, [r2, #0x0]
- cmp r0, #0x3a
- bne Guts
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r0, #0xe
- mov r1, #0x0
- mov r2, #0x39
- mov r3, #0x0
- bl x19f18 (look for plus)
- lsl r0, r0, #0x18
- cmp r0, #0x0
- beq Guts
- mov r0, #0x96
- mov r3, r8
- mul r3, r0
- add r0, r3, #0x0
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r8, r0
- # x3f0c4
- Guts:
- ldr r1, [sp, #0x24]
- ldrb r0, [r1, #0x0]
- cmp r0, #0x3e
- bne MarvelScale
- ldr r0, [r6, #0x4c]
- cmp r0, #0x0
- beq MarvelScale
- mov r0, #0x96
- mul r0, r7
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- # x3f0e0
- MarvelScale:
- ldr r2, [sp, #0x28]
- ldrb r0, [r2, #0x0]
- cmp r0, #0x3f
- bne MudSport
- ldr r3, [sp, #0x4]
- ldr r0, [r3, #0x4c]
- cmp r0, #0x0
- beq MudSport
- mov r0, #0x96
- ldr r1, [sp, #0x14]
- mul r0, r1
- mov r1, #0x64
- bl x1e4018 (division)
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x14]
- # x3f102
- MudSport:
- mov r2, r9
- cmp r2, #0xd (electric)
- bne WaterSport
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r0, #0xe
- mov r1, #0x0
- mov r2, #0x0
- mov r3, #0xfd
- bl x19f18
- lsl r0, r0, #0x18
- cmp r0, #0x0
- beq WaterSport
- ldr r1, x02024020
- ldrh r0, [r1, #0x0]
- lsr r0, r0, #0x1
- strh r0, [r1, #0x0]
- # x3f126
- WaterSport:
- mov r3, r9
- cmp r3, #0xa
- bne x3f14a
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r0, #0xe
- mov r1, #0x0
- mov r2, #0x0
- mov r3, #0xfe
- bl x19f18
- lsl r0, r0, #0x18
- cmp r0, #0x0
- beq x3f14a
- ldr r1, x02024020
- ldrh r0, [r1, #0x0]
- lsr r0, r0, #0x1
- strh r0, [r1, #0x0]
- # x3f14a
- Overgrow:
- mov r0, r9
- cmp r0, #0xc (grass)
- bne Blaze
- ldr r1, [sp, #0x24]
- ldrb r0, [r1, #0x0]
- cmp r0, #0x41
- bne Blaze
- ldrh r0, [r6, #0x2c]
- mov r1, #0x3
- bl x1e460c
- ldrh r1, [r6, #0x28]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r1, r0
- bhi Blaze
- ldr r4, x02024020
- ldrh r1, r4, #0x0
- mov r0, #0x96
- mul r0, r1
- mov r1, #0x64
- bl x1e4018 (division)
- strh r0, [r4, #0x0]
- # x3f17a
- Blaze:
- mov r2, r9
- cmp r2, #0xa
- bne Torrent
- ldr r3, [sp, #0x24]
- ldrb r0, [r3, #0x0]
- cmp r0, #0x42
- bne Torrent
- ldrh r0, [r6, #0x2c]
- mov r1, #0x3
- bl x1e460c
- ldrh r1, [r6, #0x28]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r1, r0
- bhi Torrent
- ldr r4, x02024020
- ldrh r1, [r4, #0x0]
- mov r0, #0x96
- mul r0, r1
- mov r1, #0x64
- bl x1e4018 (division)
- strh r0, [r4, #0x0]
- #x3f1aa
- Torrent:
- mov r0, r9
- cmp r0, #0xb
- bne Swarm
- ldr r1, [sp, #0x24]
- ldrb r0, [r1, #0x0]
- cmp r0, #0x43
- bne Swarm
- ldrh r0, [r6, #0x2c]
- mov r1, #0x3
- bl x1e460dc
- ldrh r1, [r6, #0x28]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r1, r0
- bhi Swarm
- ldr r4, x02024020
- ldrh r1, [r4, #0x0]
- mov r0, #0x96
- mul r0, r1
- mov r1, #0x64
- bl x1e4018
- strh r0, [r4, #0x0]
- # x3f1da
- Swarm:
- mov r2, r9
- cmp r2, #0x6
- bne ExplosionDefHalving
- ...i'm skipping this
- it's literally the exact same as the last three >_>
- # x3f20a
- ExplosionDefHalving:
- ldr r2, x08250c04
- ldr r0, x02023d4a
- ldrh r1, [r0, #0x0]
- lsl r0, r1, #0x1
- add r0, r0, r1
- lsl r0, r0, #0x2
- add r0, r0, r2
- ldrb r0, [r0, #0x0]
- cmp r0, #0x7
- bne x3f224
- ldr r0, [sp, #0x14]
- lsr r0, r0, #0x1
- str r0, [sp, #0x14]
- # x3f224
- mov r1, r9
- cmp r1, #0x8
- bls CalculatePhysicalDamage
- b EndPhysicalDamage
- # x3f22c
- CalculatePhysicalDamage
- ldr r0, x02023d71 (critical hit marker)
- ldrb r1, [r0, #0x0]
- add r4, r0, #0x0
- cmp r1, #0x2
- bne PhysAtkNonCriticalJump
- mov r0, #0x19
- ldrh r0, [r6, r0]
- cmp r0, #0x6 (6 in this context means +0 stat modifier)
- ble x3f264
- ldr r2, x25dead (2spooky- stores meanings of stat modifiers)
- b x3f26e
- # x3f264
- add r5, r7, #0x0
- b x3f286
- # PhysAtkNonCriticalJump
- ldr r2, x25dead
- mov r0, #0x19
- ldrh r0, [r6, r0]
- # x3f26e
- lsl r0, r0, #0x1
- add r1, r0, r2
- ldrb r1, [r1, #0x0]
- add r5, r7, #0x0
- mul r5, r1
- add r2, #0x1
- add r0, r0, r2
- ldrb r1, [r0, #0x0]
- add r0, r5, #0x0
- bl x1e4018 (division)
- add r5, r0, #0x0
- # x3f286
- ldr r0, x02024020
- ldrh r0, [r0, #0x0]
- mul r5, r0
- add r0, r6, #0x0
- add r0, #0x2a
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1
- mov r1, #0x5
- bl x1e4018 (division)
- add r0, #0x2
- mul r5, r0
- ldrb r0, [r4, #0x0]
- cmp r0, #0x2 (crit check)
- bne PhysDefNonCriticalJump
- ldr r2, [sp, #0x4]
- mov r0, #0x1a
- ldrh r0, [r2, r0]
- cmp r0, #0x5
- bgt PhysDefCriticalModOverride:
- ldr r2, x25dead
- ldr r3, [sp, #0x4]
- mov r0, #0x1a
- ldrh r0, [r3, r0] (loads def modifier)
- b x3f2cc
- # x3f2c0
- PhysDefCriticalModOverride:
- ldr r3, [sp, #0x14]
- b x3f2e6
- # x3f2c4
- PhysDefNonCriticalJump:
- ldr r2, x25dead
- ldr r1, [sp, #0x4]
- mov r0, #0x1a
- ldrh r0, [r1, r0]
- # x3f2cc
- ApplyDefenseMod:
- lsl r0, r0, #0x1
- add r1, r0, r2
- ldrb r1, [r1, #0x0]
- ldr r7, [sp, #0x14]
- add r3, r7, #0x0
- mull r3, r1
- add r2, #0x1
- add r0, r0, r2
- ldrb r1, [r0, #0x0]
- add r0, r3, #0x0
- bl x1e4018 (division, alters defense by defmod)
- add r3, r0, #0x0
- # x3f2e6
- add r0, r5, #0x0
- add r1, r3, #0x0
- bl x1e4018 (division, alters damage by defense)
- add r5, r0, #0x0
- mov r1, #0x32
- bl x134018
- add r5, r0, #0x0
- BurnModifier:
- ldr r0, [r6, #0x4c]
- mov r1, #0x10
- and r0, r1
- cmp r0, #0x0
- beq x3f310
- ldr r1, [sp, #0x24]
- ldrb r0, [r1, #0x0]
- cmp r0, #0x3e (guts)
- beq x3f310
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r5, r0, #0x1
- # x3f310
- Reflect:
- mov r0, #0x1
- ldr r2, [sp, #0xc]
- and r0, r2
- cmp r0, #0x0
- beq x3f352
- ldrb r1, [r4, #0x0]
- cmp r1, #0x1 (crits ignore screens)
- bne x3f352
- ldr r0, x02022b4c (battle type)
- ldr r0, [r0, #0x0]
- and r0, r1 (r1 is a 1 (no crit) at this point- matches double battle flag)
- cmp r0, #0x0
- beq ApplyReflectSingles
- ApplyReflectDoubles:
- mov r0, #0x2
- bl x3f5b4
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x2
- bne ApplyReflectSingles (reflect gives full cover if only one mon is out)
- add r0, r5, #0x0
- mov r1, #0x3
- bl x1e4018
- lsl r5, r0, #0x1
- b x3f352
- # x3f34c
- ApplyReflectSingles:
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r5, r0, #0x1
- # x3f352
- SpreadMoves:
- ldr r0, x02022b4c
- ldr r0, [r0, #0x0]
- mov r0, #0x1
- and r0, r1
- cmp r0, #0x0
- beq x3f384
- ldr r0, x250c04
- ldr r3, [sp, #0x8]
- lsl r1, r3, #0x1
- add r1, r1, r3
- lsl r1, r1, #0x2
- add r, r1, r0
- ldrb r0, [r1, #0x6]
- cmp r0, #0x8
- bne x3f384
- mov r0, #0x2
- bl x3f5b4
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x2
- bne x3f384
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r5, r0, #0x1
- # x3f384
- cmp r5, #0x0
- bne EndPhysicalDamage
- mov r5, #0x1
- # x3f38a
- EndPhysicalDamage:
- mov r7, r9
- cmp r7, #0x9
- bne x3f392
- Handle???Type:
- mov r5, #0x0
- # x3f392
- mov r0, r9
- cmp r0, #0x9
- bhi CalculateSpecialDamage
- b END
- # x3f39a
- CalcluateSpecialDamage:
- ldr r0, x02023d71
- ldrb r1, [r0, #0x0]
- add r4, r0, #0x0
- cmp r1, #0x2 (crit)
- bne SpecialAttackNonCrit
- mov r0, #0x1c
- ldrh r0, [r6, r0]
- cmp r0, #0x6
- ble SpecialAttackCritOverride
- ldr r2, x25dead
- b ApplySpecialAttackModifier
- # x3f3c0
- SpecialAttackCritOverride:
- mov r5, r8
- b ApplyBP
- # x3f3c4
- SpecialAttackNonCrit:
- ldr r2, x25dead
- mov r0, #0x1c
- ldrh r0, [r6, r0]
- # x3f3ca
- ApplySpecialAttackModifier:
- lsl r0 r0, #0x1
- add r1, r0, r2
- ldrb r1, [r1, #0x0]
- mov r5, r8
- mul r5, r1
- add r2, #0x1
- add r0, r0, r2
- ldrb r1, [r0, #0x0]
- add r0, r5, #0x0
- bl x1e4018 (division)
- add r5, r0, #0x0
- # x3f3e2
- ApplyBP:
- ldr r0, x02024020
- ldrh r0, [r0, #0x0]
- mul r5, r0
- # x3f3e8
- ApplyLevel:
- add r0, r6, #0x0
- add r0, #0x2a
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1
- mov r1, #0x5
- bl x1e4018 (division)
- add r0, #0x2
- mul r5, r0
- # x3f3fa
- ApplySDefModifier:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x2
- bne SpecialDefNonCritical
- ldr r1, [sp, #0x4]
- mov r0, #0x1d
- ldrh r0, [r1, r0]
- cmp r0, #0x5
- bgt x3f418
- ldr r2, x25dead
- b x3f424
- # x3f418
- SpecialDefenseCritOverride:
- ldr r3, [sp, #0x18]
- b x3f43e
- # x3f41c
- SpecialDefenseNonCritical:
- ldr r2, x25dead
- ldr r7, [sp, #0x4]
- mov r0, #0x1d
- ldrh r0 [r7, r0]
- # x3f424
- lsl r0, r0, #0x1
- add r1, r0, r2
- ldrb r1, [r1, #0x0]
- ldr r6, [sp, #0x18]
- add r3, r6, #0x0
- mul r3, r1
- add r2, #0x1
- add r0, r0, r2
- ldrb r1, [r0, #0x0]
- add r0, r3, #0x0
- bl x1e4018
- add r3, r0, #0x0
- # x3f43e
- ApplySpecialDefense:
- add r0, r5, #0x0
- add r1, r3, #0x0
- bl x1e4018
- add r5, r0, #0x0
- mov r1, #0x32
- bl x1e4018
- add r5, r0, #0x0
- # x3f450
- LightScreen:
- mov r0, #0x2
- ldr r7, [sp, #0xc]
- and r0, r7
- cmp r0, #0x0
- beq x3f492
- ldrb r1, [r4, #0x0]
- cmp r1, #0x1 (crit)
- bne x3f492
- ldr r0, x02022b4c
- ldr r0, [r0, #0x0]
- and r0, r1 (r1 = 1 atm because of previous branch conditional)
- cmp r0, #0x0
- beq LightScreenSingles
- mov r0, #0x2
- bl x3f5b4
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x2
- bne LightScreenSingles (screen halves damage if only one mon alive)
- add r0, r5, #0x0
- mov r1, #0x3
- bl x1e4018 (division)
- lsl r5, r0, #0x1
- b x3f492
- # x3f48c
- LightScreenSingles:
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r5, r0, #0x1
- # x3f492
- SpreadMoves:
- ldr r0, x02022b4c
- ldr r0, [r0, #0x0]
- mov r1, #0x1
- and r0, r1
- cmp r0, #0x0
- beq x3f4c4
- ldr r0, x250c04
- ldr r2, [sp, #0x8]
- lsl r1, r2, #0x1
- add r1, r1, r2
- lsl r1, r1, #0x2
- add r1, r1, r0
- ldrb r0, [r1, #0x6]
- cmp r0, #0x8
- bne x3f4c4
- mov r0, #0x2
- bl x3f5b4
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x2
- bne x3f4c4
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r5, r0, #0x1
- # x3f4c4
- Weather:
- CloudNineAirLockChecks:
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r0, #0xe
- mov r1, #0x0
- mov r2, #0xd (cloud nine)
- mov r3, #0x0
- bl x19f18
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x0
- bne EndWeather
- str r0, [sp, #0x0]
- mov r0, #0xe
- mov r1, #0x0
- mov r2, #0x4d
- mov r3, #0x0
- bl x19f18
- lsl r0, #0x18
- cmp r0, #0x0
- bne EndWeather
- # x3f4f0
- Rain:
- ldr r2, x02023f1c
- ldrh r1, [r2, #0x0]
- mov r0, #0x1 (rain)
- and r0, r1
- add r4, r2, #0x0
- cmp r0, #0x0
- beq x3f52c
- mov r3, r9
- cmp r3, #0xa
- beq x3f518
- cmp r3, #0xb
- beq x3f520
- b x3f52c
- # x3f518
- FireInRain:
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r5, r0, #0x1
- b x3f52c
- # x3f520
- WaterInRain:
- lsl r0, r5, #0x4
- sub r0, r0, r5
- mov r1, #0xa
- bl x1e4018 (division)
- add r5, r0, #0x0
- # x3f52c
- Solarbeam:
- ldrh r1, [r4, #0x0]
- mov r0, #0x9f (all non-sun weathers)
- and r0, r1
- cmp r0, #0x0
- beq x3f544
- ldr r0, x02023d4a (move being used)
- ldrh r0, [r0, #0x0]
- cmp r0, #0x4c (solarbeam)
- bne x3f544
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r5, r0, #0x1
- # x3f544
- ldrh r1, [r4, #0x0]
- mov r0, #0x60 (sun)
- and r0, r1
- cmp r0, #0x0
- beq EndWeather
- mov r6, r9
- cmp r6, #0xa
- beq FireInRain
- cmp r6, #0xb
- beq WaterInRain
- b EndWeather
- # x3f560
- FireInRain:
- lsl r0, r5, #0x4
- sub r0, r0, r5
- mov r1, #0xa
- bl x1e4018 (division)
- add r5, r0, #0x0
- b EndWeather
- # x3f56e
- WaterInRain:
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r5, r0, #0x1
- # x3f574
- EndWeather:
- FlashFire:
- ldr r0, x02023ff4
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x4]
- ldr r7, [sp, #0x10]
- lsl r1, r7, #0x2
- add r0, r0, r1
- ldr r0, [r0, #0x0]
- mov r1, #0x1
- and r0, r1
- cmp r0, #0x0
- beq x3f59c
- mov r0, r9
- cmp r0, #0xa
- bne x3f59c
- lsl r0, r5, #0x4
- sub r0, r0, r5
- mov r1, #0xa
- bl x1e4018 (division)
- add r0, r0, #0x0
- # x3f59c
- END:
- add r0, r5, #0x2
- add sp, #0x2c
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-47}
- pop {r1}
- bx r1
Add Comment
Please, Sign In to add comment