Doesnt

damage

Oct 16th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.21 KB | None | 0 0
  1. .org 0x3ecec
  2. Start:
  3. push {r4-r7, lr}
  4. mov r7, r10
  5. mov r6, r9
  6. mov r5, r8
  7. push {r5-r7, lr}
  8. add sp, -#0x2c
  9. add r6, r0, #0x0
  10. str r1, [sp, #0x4]
  11. str r2, [sp, #0x8]
  12. ldr r0, [sp, #0x4c]
  13. ldr r1, [sp, #0x50]
  14. ldr r2, [sp, #0x54]
  15. ldr r4, [sp, #0x58]
  16. lsl r3, r3, #0x10
  17. lsr r3, r3, #0x10
  18. str r3, [sp, #0xc]
  19. lsl r0, r0, #0x10
  20. lsr r3, r0, #0x10
  21. lsl r1, r1, #0x18
  22. lsr r7, r1, #0x18
  23. lsl r2, r2, #0x18
  24. lsr r2, r2, #0x18
  25. str r2, [sp, #0x10]
  26. lsl r4, r4, #0x18
  27. lsr r4, r4, #0x18
  28. mov r5, #0x0
  29. cmp r3, #0x0
  30. bne CustomBP
  31.  
  32. # x3ed24
  33. LoadBP:
  34. ldr r2, x02024020
  35. ldr r1, x08250c04
  36. ldr r3, [sp, #0x8]
  37. lsl r0, r3, #0x1
  38. add r0, r0, r3
  39. lsl r0, r0, #0x2
  40. add r0, r0, r1
  41. ldrb r0, [r0, #0x1]
  42. strh r0, [r2, #0x0]
  43. b EndBPLoad
  44.  
  45. # x3ed40
  46. CustomBP
  47. ldr r0, 0x02024020
  48. strh r3, [r0, #0x0]
  49.  
  50. # x3ed44
  51. EndBPLoad:
  52. cmp r7, #0x0
  53. bne CustomType
  54.  
  55. # x3ed48
  56. LoadType:
  57. ldr r1, x08250c04
  58. ldr r7, [sp, #0x8]
  59. lsl r0, r7, #0x1
  60. add r0, r0, r7
  61. lsl r0, r0, #0x2
  62. add r0, r0, r1
  63. ldrb r0, [r0, #0x2]
  64. mov r9, r0
  65. b EndType
  66.  
  67. # x3ed64
  68. CustomType:
  69. mov r0, #0x3f
  70. mov r9, r0
  71. mov r1, r9
  72. and r1, r7
  73. mov r9, r1
  74.  
  75. # x3ed6e
  76. EndType:
  77. ldrh r7, [r6, #0x2]
  78. ldr r2, [sp, #0x4]
  79. ldrh r2, [r2, #0x4]
  80. str r2, [sp, #0x14]
  81. ldrh r3, [r6, #0x8]
  82. mov r8, r3
  83. ldr r0, [sp, #0x4]
  84. ldrh r0, [r0, #0xa]
  85. str r0 [sp, #0x18]
  86. ldrh r0, [r6, #0x2e]
  87. cmp r0, #0xaf
  88. bne LoadItems
  89.  
  90. # x3ed84
  91. EnigmaBerry:
  92. #whocares
  93.  
  94. # x3eda0
  95. LoadItems:
  96. ldrh r0, [r6, #0x2e]
  97. bl x9a924
  98. lsl r0, r0, #0x18
  99. lsr r0, r0, #0x18
  100. mov r10, r0
  101. ldrh r0, [r6, #0x2e]
  102. bl x9a948
  103. lsl r0, r0, #0x18
  104. lsr r0, r0, #0x18
  105. str r0, [sp, #0x20]
  106. ldr r1, [sp, #0x4]
  107. ldrh r0, [r1, #0x2e]
  108. cmp r0, #0xaf
  109. bne LoadItems2
  110.  
  111. # x3edc0
  112. EnigmaBerry2:
  113. ...Stuff
  114. b x3edfc
  115.  
  116.  
  117.  
  118. # x3ede6
  119. LoadItems2:
  120. ldr r2, [sp, #0x4]
  121. ldrh r0, [r2, #0x2e]
  122. bl x9a924
  123. lsl r0, r0, #0x18
  124. lsr r0, r0, #0x18
  125. str r0, [sp, #0x1c]
  126. ldr r3, [sp, #0x4]
  127. ldrh r0, [r3, #0x2e]
  128. bl x9a948
  129. add r0, r6, #0x0
  130. add r0, #0x20
  131. ldrb r1, [r0, #0x0]
  132. str r0, [sp, #0x24]
  133. cmp r1, #0x25
  134. beq HugePower
  135. cmp r1, #0x4a
  136. bne BadgeBoosts
  137.  
  138. # x3ee0c
  139. HugePower:
  140. lsl r0, r7, #0x11
  141. lsr r7, r0, #0x10
  142.  
  143. # x3ee10
  144. BadgeBoosts:
  145. ldr r0, x02022b4c (battle type)
  146. ldr r0, [r0, #0x0]
  147. ldr r1, x802 (trainer tower or link battle)
  148. and r0, r1
  149. cmp r0, #0x0
  150. bne SkipBadgeBoosts
  151.  
  152. # x3ee1c
  153. BoulderBadge:
  154. mov r0, #0x82
  155. lsl r0, r0, #0x4
  156. bl x6e6d0 (flag check)
  157. lsl r0, r0, #0x18
  158. cmp r0, #0x0
  159. beq BadgeBoostsTwo
  160. ldr r0, [sp, #0x10]
  161. bl x751c4
  162. lsl r0, r0, #0x18
  163. cmp r0, #0x0
  164. bne BadgeBoostsTwo
  165. mov r0, #0x6e
  166. mul r0, r7
  167. mov r1, #0x64
  168. bl x1e4018 (division)
  169. lsl r0, r0, #0x10
  170. lsr r7, r0, #0x10
  171.  
  172. # x3ee44
  173. BadgeBoostsTwo
  174. ldr r0, x02022b4c (trainer type)
  175. ldr r0, [r0, #0x0]
  176. ldr r1, x802 (trainer tower or link battle)
  177. and r0, r1
  178. cmp r0, #0x0
  179. bne SkipBadgeBoosts
  180.  
  181. # x3ee50
  182. SoulBadge:
  183. ldr r0, x824
  184. bl x6e6d0 (flag check)
  185. lsl r0, r0, #0x18
  186. cmp r0, #0x0
  187. beq BadgeBoostsThree
  188. add r0, r4, #0x0
  189. bl x751c4
  190. lsl r0, #0x18
  191. cmp r0, #0x0
  192. bne BadgeBoostsThree
  193. mov r0, #0x6e
  194. ldr r1, [sp, #0x14]
  195. mul r0, r1
  196. mov r1, #0x64
  197. bl x1e4018 (division)
  198. lsl r0, r0, #0x10
  199. lsr r0, r0, #0x10
  200. str r0, [sp, #0x14]
  201.  
  202. # x3ee7a
  203. BadgeBoostsThree:
  204. ldr x02022b4c (battle type)
  205. ldr r0, [r0, #0x0]
  206. ldr r1, x802 (trainer tower or link battle)
  207. and r0, r1
  208. cmp r0, #0x0
  209. bne SkipBadgeBoosts
  210.  
  211. # x3ee86
  212. VolcanoBadge:
  213. ldr r0, x826
  214. bl x6e6d0 (flag check)
  215. lsl r0, r0, #0x18
  216. cmp r0, #0x0
  217. beq x3eeb2
  218. ldr r0, [sp, #0x10]
  219. bl x751c4
  220. lsl r0, r0, #0x18
  221. cmp r0, #0x0
  222. beq x3eeb2
  223. ldr r0, [sp, #0x10]
  224. mov r0, #0x6e
  225. mov r2, r8
  226. mul r2, r0
  227. add r0, r2, #0x0
  228. mov r1, #0x64
  229. bl x1e4018 (division)
  230. lsl r0, r0, #0x10
  231. lsr r0, r0, #0x10
  232. mov r8, r0
  233.  
  234. # x3eeb2
  235. BadgeBoostsFour:
  236. ldr r0, x02022b4c (battle type)
  237. ldr r0, [r0, #0x0]
  238. ldr r1, x802 (trainer tower or link battle
  239. and r0, r1
  240. cmp r0, #0x0
  241. bne SkipBadgeBoosts
  242. #Yes, we did just do this same exact check four times.
  243. #Apparently Game Freak expected you to start a link
  244. #battle while damage calc was running.
  245.  
  246. # x3eebe
  247. VolcanoBadgeSDef:
  248. ldr r0, x826
  249. bl x6e6d0 (flag check)
  250. lsl r0, #0x18
  251. cmp r0, r0, #0x0
  252. beq SkipBadgeBoosts
  253. add r0, r4, #0x0
  254. bl x751c4
  255. lsl r0, r0, #0x18
  256. cmp r0, #0x0
  257. bne SkipBadgeBoosts
  258. mov r0, #0x6e
  259. ldr r3, [sp, #0x18]
  260. mul r0, r3
  261. mov r1, #0x64
  262. bl x1e4018 (division)
  263. lsl r0, r0, #0x10
  264. lsr r0, r0, #0x10
  265. str r0, [sp, #0x18]
  266.  
  267. # x3eee8
  268. SkipBadgeBoosts:
  269. TypeBoostingItemHandler:
  270. mov r2, #0x0
  271. ldr r4, x0825decc (table: maps types to type-boosting items)
  272. ldr r0, [sp, #0x4]
  273. add r0, #0x20
  274. str r0, [sp, #0x28]
  275. add r3, r4, #0x0
  276.  
  277. CheckItem:
  278. lsl r1, r2, #0x1
  279. ldrb r0, [r3, #0x0]
  280. cmp r10, #0x0
  281. bne x3ef3c
  282.  
  283. add r0, r4, #0x1
  284. add r0, r1, r0
  285. ldrb r0, [r0, #0x0]
  286. cmp r9, r0
  287. bne x3ef3c
  288.  
  289. # x3ef06
  290. # If we're here, it's to apply the +N% boost the item gives.
  291. # This is done by increasing Attack or Special Attack, not BP.
  292. CheckMoveClass:
  293. mov r1, r9
  294. cmp r1, #0x8
  295. bhi TypeBoostingSpecial:
  296. b TypeBoostingPhysical
  297.  
  298. # x3ef0e
  299. TypeBoostingSpecial
  300. ldr r0, [sp, #0x20]
  301. add r0, #0x64
  302. mov r2, r8
  303. mul r2, r0
  304. add r0, r2, #0x0
  305. mov r1, #0x64
  306. bl x1e4018 (division)
  307. lsl r0, r0, #0x10
  308. lsr r0, r0, #0x10
  309. mov r8, r0
  310. b EndTypeBoostingItems
  311.  
  312. # x3edd4
  313. TypeBoostingPhysical:
  314. ldr r0, [sp, #0x20]
  315. add r0, #0x64
  316. mul r0, r7
  317. mov r1, #0x64
  318. bl x1e4018 (division)
  319. lsl r0, r0, #0x10
  320. lsr r7, r0, #0x10
  321. b EndTypeBoostingItems
  322.  
  323.  
  324. # x3ef3c
  325. MoveToNextItem:
  326. add r3, #0x2
  327. add r2, #0x1
  328. cmp r2, #0x10
  329. bls EndTypeBoostingItems
  330.  
  331.  
  332. # x3ef44
  333. EndTypeBoostingItems:
  334. ChoiceBand:
  335. mov r3, r10
  336. cmp r3, #0x1d
  337. bne SoulDewSAtk
  338. mov r0, #0x96
  339. mul r0, r7
  340. mov r1, #0x64
  341. bl x1e4018 (division)
  342. lsl r0, r0, #0x10
  343. lsr r7, r0, #0x10
  344.  
  345. # x3ef58
  346. SoulDewSAtk:
  347. mov r0, r10
  348. cmp r0, #0x22
  349. bne x3ef90
  350. ldr r0, x02022b4c
  351. ldr r0, [r0, #0x0]
  352. mov r1, #0x80
  353. lsl r1, r1, #0x1
  354. and r0, r1
  355. cmp r0, #0x0
  356. bne x3ef90
  357. ldr r1, xfffffe69 (negative 407: 407 is latias's slot)
  358. add r0, r1, #0x0
  359. ldrh r2, [r6, #0x0]
  360. add r0, r0, r2
  361. lsl r0, r0, #0x10
  362. lsr r0, r0, #0x10
  363. cmp r0, #0x1
  364. bhi x3ef90
  365. mov r0, #0x96
  366. mov r3, r8
  367. mul r3, r0
  368. add r0, r3, #0x0
  369. mov r1, #0x64
  370. bl x1e4018 (division)
  371. lsl r0, r0, #0x10
  372. lsr r0, r0, #0x10
  373. mov r8, r0
  374.  
  375. # x3ef90
  376. SoulDewSDef:
  377. ldr r0, [sp, #0x1C]
  378. cmp r0, #0x22
  379. bne DeepSeaTooth
  380. ldr r0, x02022b4c
  381. ldr r0, [r0, #0x0]
  382. mov r1, #0x80
  383. lsl r1, r1, #0x01
  384. and r0, r1
  385. cmp r0, #0x0
  386. bne DeepSeaTooth
  387. ldr r1, xfffffe69 (negative 407: 407 is latias's slot)
  388. add r0, r1, #0x0
  389. ldr r2, [sp, #0x4]
  390. ldrh r2, [r2, #0x0]
  391. add r0, r0, r2
  392. lsl r0, r0, #0x10
  393. lsr r0, r0, #0x10
  394. cmp r0, #0x1
  395. bhi DeepSeaTooth
  396. mov r0, #0x96
  397. ldr r3, [sp, #0x18]
  398. mul r0, r3
  399. mov r1, #0x64
  400. bl x1e4018 (division)
  401. lsl r0, r0, #0x10
  402. lsr r0, r0, #0x10
  403. str r0, [sp, #0x18]
  404.  
  405. # x3efc8
  406. DeepSeaTooth:
  407. mov r0, r10
  408. cmp r0, #0x23
  409. bne DeepSeaScale
  410. ldrh r1, [r6, #0x0]
  411. ldr r0, x175 (clamperl)
  412. cmp r1, r0
  413. bne DeepSeaScale
  414. mov r1, r8
  415. lsl r0, r1 #0x11
  416. lsr r0, #0x10
  417. mov r8, r0
  418.  
  419. # x3efde
  420. DeepSeaScale:
  421. ldr r2, [sp, #0x1c]
  422. cmp r2, #0x24
  423. bne LightBall
  424. ldr r3, [sp, #0x4]
  425. ldrh r1, [r3, #0x0]
  426. ldr r0, x175 (clamperl)
  427. cmp r1, r0
  428. bne LightBall
  429. ldr r1, [sp, #0x18]
  430. lsl r0, r1, #0x11
  431. lsr r0, r0, #0x10
  432. str r0, [sp, #0x18]
  433.  
  434. # x3eff6 (jp: x3e762)
  435. LightBall:
  436. mov r2, r10
  437. cmp r2, #0x2d
  438. bne MetalPowder:
  439. ldrh r0, [r6, #0x0]
  440. cmp r0, #0x19 (pikachu)
  441. bne MetalPowder:
  442. mov r3, r8
  443. lsl r0, r3, #0x11
  444. lsr r0, r0, #0x10
  445. mov r8, r0
  446.  
  447. # x3f00a (jp: x3e776)
  448. MetalPowder:
  449. ldr r0, [sp, #0x1c]
  450. cmp r0, #0x40
  451. bne ThickClub
  452. ldr r1, [sp, #0x4]
  453. ldrh r0, [r1, #0x0]
  454. cmp r0, #0x84 (ditto)
  455. bne ThickClub
  456. ldr r2, [sp, #0x14]
  457. lsl r0, r2, #0x11
  458. lsr r0, r0, #0x10
  459. str r0, [sp, #0x14]
  460.  
  461. # x3f020 (jp: x3e78c)
  462. ThickClub:
  463. mov r3, r10
  464. cmp r3, #0x14
  465. bne x3f036
  466. ldrh r0, [r6, #0x0]
  467. sub r0, #0x68 (cubone)
  468. lsl r0, #0x10
  469. lsr r0, #0x10
  470. cmp r0, #0x1
  471. bhi x3f036
  472. lsl r0, r7, #0x11
  473. lsr r7, r0, #0x10
  474.  
  475. # x3f036
  476. ThickFat:
  477. ldr r1, [sp, #0x28]
  478. ldrb r0, [r1, #0x0]
  479. cmp r0, #0x2f (thick fat)
  480. bne Hustle
  481. mov r2, r9
  482. cmp r2, #0xa (fire)
  483. beq ApplyThickFat
  484. cmp r2, #0xf (ice)
  485. bne Hustle
  486.  
  487. # x3f048
  488. ApplyThickFat:
  489. mov r3, r8
  490. lsr r3, r3, #0x1
  491. mov r8, r3
  492.  
  493. # x3f04e
  494. Hustle:
  495. ldr r0, [sp, #0x24]
  496. ldrb r4, [r0, #0x0]
  497. cmp r4, #0x37
  498. bne Plus
  499. mov r0, #0x96
  500. mul r0, r7
  501. mov r1, #0x64
  502. bl x1e4018 (division)
  503. lsl r0, r0, #0x10
  504. lsr r7, r0, #0x10
  505.  
  506. # x3f064
  507. Plus:
  508. cmp r4, #0x39
  509. bne Minus
  510. mov r0, #0x0
  511. str r0, [sp, #0x0]
  512. mov r0, #0xe
  513. mov r1, #0x0
  514. mov r2, #0x3a
  515. mov r3, #0x0
  516. bl x19f18 (look for ability among all combatants: minus)
  517. lsl r0, #0x18
  518. cmp r0, #0x0
  519. beq Minus
  520. mov r0, #0x96
  521. mov r1, r8
  522. mul r1, r0
  523. add r0, r1, #0x0
  524. mov r1, #0x64
  525. bl x1e4018 (division)
  526. lsl r0, r0, #0x10
  527. lsr r0, r0, #0x10
  528. mov r8, r0
  529.  
  530. # x3f092
  531. Minus:
  532. ldr r2, [sp, #0x24]
  533. ldrb r0, [r2, #0x0]
  534. cmp r0, #0x3a
  535. bne Guts
  536. mov r0, #0x0
  537. str r0, [sp, #0x0]
  538. mov r0, #0xe
  539. mov r1, #0x0
  540. mov r2, #0x39
  541. mov r3, #0x0
  542. bl x19f18 (look for plus)
  543. lsl r0, r0, #0x18
  544. cmp r0, #0x0
  545. beq Guts
  546. mov r0, #0x96
  547. mov r3, r8
  548. mul r3, r0
  549. add r0, r3, #0x0
  550. mov r1, #0x64
  551. bl x1e4018 (division)
  552. lsl r0, r0, #0x10
  553. lsr r0, r0, #0x10
  554. mov r8, r0
  555.  
  556. # x3f0c4
  557. Guts:
  558. ldr r1, [sp, #0x24]
  559. ldrb r0, [r1, #0x0]
  560. cmp r0, #0x3e
  561. bne MarvelScale
  562. ldr r0, [r6, #0x4c]
  563. cmp r0, #0x0
  564. beq MarvelScale
  565. mov r0, #0x96
  566. mul r0, r7
  567. mov r1, #0x64
  568. bl x1e4018 (division)
  569. lsl r0, r0, #0x10
  570. lsr r7, r0, #0x10
  571.  
  572. # x3f0e0
  573. MarvelScale:
  574. ldr r2, [sp, #0x28]
  575. ldrb r0, [r2, #0x0]
  576. cmp r0, #0x3f
  577. bne MudSport
  578. ldr r3, [sp, #0x4]
  579. ldr r0, [r3, #0x4c]
  580. cmp r0, #0x0
  581. beq MudSport
  582. mov r0, #0x96
  583. ldr r1, [sp, #0x14]
  584. mul r0, r1
  585. mov r1, #0x64
  586. bl x1e4018 (division)
  587. lsl r0, r0, #0x10
  588. lsr r0, r0, #0x10
  589. str r0, [sp, #0x14]
  590.  
  591. # x3f102
  592. MudSport:
  593. mov r2, r9
  594. cmp r2, #0xd (electric)
  595. bne WaterSport
  596. mov r0, #0x0
  597. str r0, [sp, #0x0]
  598. mov r0, #0xe
  599. mov r1, #0x0
  600. mov r2, #0x0
  601. mov r3, #0xfd
  602. bl x19f18
  603. lsl r0, r0, #0x18
  604. cmp r0, #0x0
  605. beq WaterSport
  606. ldr r1, x02024020
  607. ldrh r0, [r1, #0x0]
  608. lsr r0, r0, #0x1
  609. strh r0, [r1, #0x0]
  610.  
  611.  
  612. # x3f126
  613. WaterSport:
  614. mov r3, r9
  615. cmp r3, #0xa
  616. bne x3f14a
  617. mov r0, #0x0
  618. str r0, [sp, #0x0]
  619. mov r0, #0xe
  620. mov r1, #0x0
  621. mov r2, #0x0
  622. mov r3, #0xfe
  623. bl x19f18
  624. lsl r0, r0, #0x18
  625. cmp r0, #0x0
  626. beq x3f14a
  627. ldr r1, x02024020
  628. ldrh r0, [r1, #0x0]
  629. lsr r0, r0, #0x1
  630. strh r0, [r1, #0x0]
  631.  
  632. # x3f14a
  633. Overgrow:
  634. mov r0, r9
  635. cmp r0, #0xc (grass)
  636. bne Blaze
  637. ldr r1, [sp, #0x24]
  638. ldrb r0, [r1, #0x0]
  639. cmp r0, #0x41
  640. bne Blaze
  641. ldrh r0, [r6, #0x2c]
  642. mov r1, #0x3
  643. bl x1e460c
  644. ldrh r1, [r6, #0x28]
  645. lsl r0, r0, #0x10
  646. lsr r0, r0, #0x10
  647. cmp r1, r0
  648. bhi Blaze
  649. ldr r4, x02024020
  650. ldrh r1, r4, #0x0
  651. mov r0, #0x96
  652. mul r0, r1
  653. mov r1, #0x64
  654. bl x1e4018 (division)
  655. strh r0, [r4, #0x0]
  656.  
  657. # x3f17a
  658. Blaze:
  659. mov r2, r9
  660. cmp r2, #0xa
  661. bne Torrent
  662. ldr r3, [sp, #0x24]
  663. ldrb r0, [r3, #0x0]
  664. cmp r0, #0x42
  665. bne Torrent
  666. ldrh r0, [r6, #0x2c]
  667. mov r1, #0x3
  668. bl x1e460c
  669. ldrh r1, [r6, #0x28]
  670. lsl r0, r0, #0x10
  671. lsr r0, r0, #0x10
  672. cmp r1, r0
  673. bhi Torrent
  674. ldr r4, x02024020
  675. ldrh r1, [r4, #0x0]
  676. mov r0, #0x96
  677. mul r0, r1
  678. mov r1, #0x64
  679. bl x1e4018 (division)
  680. strh r0, [r4, #0x0]
  681.  
  682. #x3f1aa
  683. Torrent:
  684. mov r0, r9
  685. cmp r0, #0xb
  686. bne Swarm
  687. ldr r1, [sp, #0x24]
  688. ldrb r0, [r1, #0x0]
  689. cmp r0, #0x43
  690. bne Swarm
  691. ldrh r0, [r6, #0x2c]
  692. mov r1, #0x3
  693. bl x1e460dc
  694. ldrh r1, [r6, #0x28]
  695. lsl r0, r0, #0x10
  696. lsr r0, r0, #0x10
  697. cmp r1, r0
  698. bhi Swarm
  699. ldr r4, x02024020
  700. ldrh r1, [r4, #0x0]
  701. mov r0, #0x96
  702. mul r0, r1
  703. mov r1, #0x64
  704. bl x1e4018
  705. strh r0, [r4, #0x0]
  706.  
  707. # x3f1da
  708. Swarm:
  709. mov r2, r9
  710. cmp r2, #0x6
  711. bne ExplosionDefHalving
  712. ...i'm skipping this
  713. it's literally the exact same as the last three >_>
  714.  
  715. # x3f20a
  716. ExplosionDefHalving:
  717. ldr r2, x08250c04
  718. ldr r0, x02023d4a
  719. ldrh r1, [r0, #0x0]
  720. lsl r0, r1, #0x1
  721. add r0, r0, r1
  722. lsl r0, r0, #0x2
  723. add r0, r0, r2
  724. ldrb r0, [r0, #0x0]
  725. cmp r0, #0x7
  726. bne x3f224
  727. ldr r0, [sp, #0x14]
  728. lsr r0, r0, #0x1
  729. str r0, [sp, #0x14]
  730.  
  731. # x3f224
  732. mov r1, r9
  733. cmp r1, #0x8
  734. bls CalculatePhysicalDamage
  735. b EndPhysicalDamage
  736.  
  737.  
  738. # x3f22c
  739. CalculatePhysicalDamage
  740. ldr r0, x02023d71 (critical hit marker)
  741. ldrb r1, [r0, #0x0]
  742. add r4, r0, #0x0
  743. cmp r1, #0x2
  744. bne PhysAtkNonCriticalJump
  745. mov r0, #0x19
  746. ldrh r0, [r6, r0]
  747. cmp r0, #0x6 (6 in this context means +0 stat modifier)
  748. ble x3f264
  749. ldr r2, x25dead (2spooky- stores meanings of stat modifiers)
  750. b x3f26e
  751.  
  752. # x3f264
  753. add r5, r7, #0x0
  754. b x3f286
  755.  
  756. # PhysAtkNonCriticalJump
  757. ldr r2, x25dead
  758. mov r0, #0x19
  759. ldrh r0, [r6, r0]
  760.  
  761. # x3f26e
  762. lsl r0, r0, #0x1
  763. add r1, r0, r2
  764. ldrb r1, [r1, #0x0]
  765. add r5, r7, #0x0
  766. mul r5, r1
  767. add r2, #0x1
  768. add r0, r0, r2
  769. ldrb r1, [r0, #0x0]
  770. add r0, r5, #0x0
  771. bl x1e4018 (division)
  772. add r5, r0, #0x0
  773.  
  774. # x3f286
  775. ldr r0, x02024020
  776. ldrh r0, [r0, #0x0]
  777. mul r5, r0
  778. add r0, r6, #0x0
  779. add r0, #0x2a
  780. ldrb r0, [r0, #0x0]
  781. lsl r0, r0, #0x1
  782. mov r1, #0x5
  783. bl x1e4018 (division)
  784. add r0, #0x2
  785. mul r5, r0
  786. ldrb r0, [r4, #0x0]
  787. cmp r0, #0x2 (crit check)
  788. bne PhysDefNonCriticalJump
  789. ldr r2, [sp, #0x4]
  790. mov r0, #0x1a
  791. ldrh r0, [r2, r0]
  792. cmp r0, #0x5
  793. bgt PhysDefCriticalModOverride:
  794. ldr r2, x25dead
  795. ldr r3, [sp, #0x4]
  796. mov r0, #0x1a
  797. ldrh r0, [r3, r0] (loads def modifier)
  798. b x3f2cc
  799.  
  800. # x3f2c0
  801. PhysDefCriticalModOverride:
  802. ldr r3, [sp, #0x14]
  803. b x3f2e6
  804.  
  805. # x3f2c4
  806. PhysDefNonCriticalJump:
  807. ldr r2, x25dead
  808. ldr r1, [sp, #0x4]
  809. mov r0, #0x1a
  810. ldrh r0, [r1, r0]
  811.  
  812. # x3f2cc
  813. ApplyDefenseMod:
  814. lsl r0, r0, #0x1
  815. add r1, r0, r2
  816. ldrb r1, [r1, #0x0]
  817. ldr r7, [sp, #0x14]
  818. add r3, r7, #0x0
  819. mull r3, r1
  820. add r2, #0x1
  821. add r0, r0, r2
  822. ldrb r1, [r0, #0x0]
  823. add r0, r3, #0x0
  824. bl x1e4018 (division, alters defense by defmod)
  825. add r3, r0, #0x0
  826.  
  827. # x3f2e6
  828. add r0, r5, #0x0
  829. add r1, r3, #0x0
  830. bl x1e4018 (division, alters damage by defense)
  831. add r5, r0, #0x0
  832. mov r1, #0x32
  833. bl x134018
  834. add r5, r0, #0x0
  835.  
  836. BurnModifier:
  837. ldr r0, [r6, #0x4c]
  838. mov r1, #0x10
  839. and r0, r1
  840. cmp r0, #0x0
  841. beq x3f310
  842. ldr r1, [sp, #0x24]
  843. ldrb r0, [r1, #0x0]
  844. cmp r0, #0x3e (guts)
  845. beq x3f310
  846. lsr r0, r5, #0x1f
  847. add r0, r5, r0
  848. asr r5, r0, #0x1
  849.  
  850. # x3f310
  851. Reflect:
  852. mov r0, #0x1
  853. ldr r2, [sp, #0xc]
  854. and r0, r2
  855. cmp r0, #0x0
  856. beq x3f352
  857. ldrb r1, [r4, #0x0]
  858. cmp r1, #0x1 (crits ignore screens)
  859. bne x3f352
  860. ldr r0, x02022b4c (battle type)
  861. ldr r0, [r0, #0x0]
  862. and r0, r1 (r1 is a 1 (no crit) at this point- matches double battle flag)
  863. cmp r0, #0x0
  864. beq ApplyReflectSingles
  865. ApplyReflectDoubles:
  866. mov r0, #0x2
  867. bl x3f5b4
  868. lsl r0, r0, #0x18
  869. lsr r0, r0, #0x18
  870. cmp r0, #0x2
  871. bne ApplyReflectSingles (reflect gives full cover if only one mon is out)
  872. add r0, r5, #0x0
  873. mov r1, #0x3
  874. bl x1e4018
  875. lsl r5, r0, #0x1
  876. b x3f352
  877.  
  878. # x3f34c
  879. ApplyReflectSingles:
  880. lsr r0, r5, #0x1f
  881. add r0, r5, r0
  882. asr r5, r0, #0x1
  883.  
  884. # x3f352
  885. SpreadMoves:
  886. ldr r0, x02022b4c
  887. ldr r0, [r0, #0x0]
  888. mov r0, #0x1
  889. and r0, r1
  890. cmp r0, #0x0
  891. beq x3f384
  892. ldr r0, x250c04
  893. ldr r3, [sp, #0x8]
  894. lsl r1, r3, #0x1
  895. add r1, r1, r3
  896. lsl r1, r1, #0x2
  897. add r, r1, r0
  898. ldrb r0, [r1, #0x6]
  899. cmp r0, #0x8
  900. bne x3f384
  901. mov r0, #0x2
  902. bl x3f5b4
  903. lsl r0, r0, #0x18
  904. lsr r0, r0, #0x18
  905. cmp r0, #0x2
  906. bne x3f384
  907. lsr r0, r5, #0x1f
  908. add r0, r5, r0
  909. asr r5, r0, #0x1
  910.  
  911. # x3f384
  912. cmp r5, #0x0
  913. bne EndPhysicalDamage
  914. mov r5, #0x1
  915.  
  916. # x3f38a
  917. EndPhysicalDamage:
  918. mov r7, r9
  919. cmp r7, #0x9
  920. bne x3f392
  921. Handle???Type:
  922. mov r5, #0x0
  923.  
  924. # x3f392
  925. mov r0, r9
  926. cmp r0, #0x9
  927. bhi CalculateSpecialDamage
  928. b END
  929.  
  930. # x3f39a
  931. CalcluateSpecialDamage:
  932. ldr r0, x02023d71
  933. ldrb r1, [r0, #0x0]
  934. add r4, r0, #0x0
  935. cmp r1, #0x2 (crit)
  936. bne SpecialAttackNonCrit
  937. mov r0, #0x1c
  938. ldrh r0, [r6, r0]
  939. cmp r0, #0x6
  940. ble SpecialAttackCritOverride
  941. ldr r2, x25dead
  942. b ApplySpecialAttackModifier
  943.  
  944. # x3f3c0
  945. SpecialAttackCritOverride:
  946. mov r5, r8
  947. b ApplyBP
  948.  
  949.  
  950. # x3f3c4
  951. SpecialAttackNonCrit:
  952. ldr r2, x25dead
  953. mov r0, #0x1c
  954. ldrh r0, [r6, r0]
  955.  
  956. # x3f3ca
  957. ApplySpecialAttackModifier:
  958. lsl r0 r0, #0x1
  959. add r1, r0, r2
  960. ldrb r1, [r1, #0x0]
  961. mov r5, r8
  962. mul r5, r1
  963. add r2, #0x1
  964. add r0, r0, r2
  965. ldrb r1, [r0, #0x0]
  966. add r0, r5, #0x0
  967. bl x1e4018 (division)
  968. add r5, r0, #0x0
  969.  
  970. # x3f3e2
  971. ApplyBP:
  972. ldr r0, x02024020
  973. ldrh r0, [r0, #0x0]
  974. mul r5, r0
  975.  
  976. # x3f3e8
  977. ApplyLevel:
  978. add r0, r6, #0x0
  979. add r0, #0x2a
  980. ldrb r0, [r0, #0x0]
  981. lsl r0, r0, #0x1
  982. mov r1, #0x5
  983. bl x1e4018 (division)
  984. add r0, #0x2
  985. mul r5, r0
  986.  
  987. # x3f3fa
  988. ApplySDefModifier:
  989. ldrb r0, [r4, #0x0]
  990. cmp r0, #0x2
  991. bne SpecialDefNonCritical
  992. ldr r1, [sp, #0x4]
  993. mov r0, #0x1d
  994. ldrh r0, [r1, r0]
  995. cmp r0, #0x5
  996. bgt x3f418
  997. ldr r2, x25dead
  998. b x3f424
  999.  
  1000. # x3f418
  1001. SpecialDefenseCritOverride:
  1002. ldr r3, [sp, #0x18]
  1003. b x3f43e
  1004.  
  1005. # x3f41c
  1006. SpecialDefenseNonCritical:
  1007. ldr r2, x25dead
  1008. ldr r7, [sp, #0x4]
  1009. mov r0, #0x1d
  1010. ldrh r0 [r7, r0]
  1011.  
  1012. # x3f424
  1013. lsl r0, r0, #0x1
  1014. add r1, r0, r2
  1015. ldrb r1, [r1, #0x0]
  1016. ldr r6, [sp, #0x18]
  1017. add r3, r6, #0x0
  1018. mul r3, r1
  1019. add r2, #0x1
  1020. add r0, r0, r2
  1021. ldrb r1, [r0, #0x0]
  1022. add r0, r3, #0x0
  1023. bl x1e4018
  1024. add r3, r0, #0x0
  1025.  
  1026.  
  1027. # x3f43e
  1028. ApplySpecialDefense:
  1029. add r0, r5, #0x0
  1030. add r1, r3, #0x0
  1031. bl x1e4018
  1032. add r5, r0, #0x0
  1033. mov r1, #0x32
  1034. bl x1e4018
  1035. add r5, r0, #0x0
  1036.  
  1037. # x3f450
  1038. LightScreen:
  1039. mov r0, #0x2
  1040. ldr r7, [sp, #0xc]
  1041. and r0, r7
  1042. cmp r0, #0x0
  1043. beq x3f492
  1044. ldrb r1, [r4, #0x0]
  1045. cmp r1, #0x1 (crit)
  1046. bne x3f492
  1047. ldr r0, x02022b4c
  1048. ldr r0, [r0, #0x0]
  1049. and r0, r1 (r1 = 1 atm because of previous branch conditional)
  1050. cmp r0, #0x0
  1051. beq LightScreenSingles
  1052. mov r0, #0x2
  1053. bl x3f5b4
  1054. lsl r0, r0, #0x18
  1055. lsr r0, r0, #0x18
  1056. cmp r0, #0x2
  1057. bne LightScreenSingles (screen halves damage if only one mon alive)
  1058. add r0, r5, #0x0
  1059. mov r1, #0x3
  1060. bl x1e4018 (division)
  1061. lsl r5, r0, #0x1
  1062. b x3f492
  1063.  
  1064. # x3f48c
  1065. LightScreenSingles:
  1066. lsr r0, r5, #0x1f
  1067. add r0, r5, r0
  1068. asr r5, r0, #0x1
  1069.  
  1070. # x3f492
  1071. SpreadMoves:
  1072. ldr r0, x02022b4c
  1073. ldr r0, [r0, #0x0]
  1074. mov r1, #0x1
  1075. and r0, r1
  1076. cmp r0, #0x0
  1077. beq x3f4c4
  1078. ldr r0, x250c04
  1079. ldr r2, [sp, #0x8]
  1080. lsl r1, r2, #0x1
  1081. add r1, r1, r2
  1082. lsl r1, r1, #0x2
  1083. add r1, r1, r0
  1084. ldrb r0, [r1, #0x6]
  1085. cmp r0, #0x8
  1086. bne x3f4c4
  1087. mov r0, #0x2
  1088. bl x3f5b4
  1089. lsl r0, r0, #0x18
  1090. lsr r0, r0, #0x18
  1091. cmp r0, #0x2
  1092. bne x3f4c4
  1093. lsr r0, r5, #0x1f
  1094. add r0, r5, r0
  1095. asr r5, r0, #0x1
  1096.  
  1097.  
  1098. # x3f4c4
  1099. Weather:
  1100. CloudNineAirLockChecks:
  1101. mov r0, #0x0
  1102. str r0, [sp, #0x0]
  1103. mov r0, #0xe
  1104. mov r1, #0x0
  1105. mov r2, #0xd (cloud nine)
  1106. mov r3, #0x0
  1107. bl x19f18
  1108. lsl r0, r0, #0x18
  1109. lsr r0, r0, #0x18
  1110. cmp r0, #0x0
  1111. bne EndWeather
  1112. str r0, [sp, #0x0]
  1113. mov r0, #0xe
  1114. mov r1, #0x0
  1115. mov r2, #0x4d
  1116. mov r3, #0x0
  1117. bl x19f18
  1118. lsl r0, #0x18
  1119. cmp r0, #0x0
  1120. bne EndWeather
  1121.  
  1122. # x3f4f0
  1123. Rain:
  1124. ldr r2, x02023f1c
  1125. ldrh r1, [r2, #0x0]
  1126. mov r0, #0x1 (rain)
  1127. and r0, r1
  1128. add r4, r2, #0x0
  1129. cmp r0, #0x0
  1130. beq x3f52c
  1131. mov r3, r9
  1132. cmp r3, #0xa
  1133. beq x3f518
  1134. cmp r3, #0xb
  1135. beq x3f520
  1136. b x3f52c
  1137.  
  1138. # x3f518
  1139. FireInRain:
  1140. lsr r0, r5, #0x1f
  1141. add r0, r5, r0
  1142. asr r5, r0, #0x1
  1143. b x3f52c
  1144.  
  1145. # x3f520
  1146. WaterInRain:
  1147. lsl r0, r5, #0x4
  1148. sub r0, r0, r5
  1149. mov r1, #0xa
  1150. bl x1e4018 (division)
  1151. add r5, r0, #0x0
  1152.  
  1153. # x3f52c
  1154. Solarbeam:
  1155. ldrh r1, [r4, #0x0]
  1156. mov r0, #0x9f (all non-sun weathers)
  1157. and r0, r1
  1158. cmp r0, #0x0
  1159. beq x3f544
  1160. ldr r0, x02023d4a (move being used)
  1161. ldrh r0, [r0, #0x0]
  1162. cmp r0, #0x4c (solarbeam)
  1163. bne x3f544
  1164. lsr r0, r5, #0x1f
  1165. add r0, r5, r0
  1166. asr r5, r0, #0x1
  1167.  
  1168. # x3f544
  1169. ldrh r1, [r4, #0x0]
  1170. mov r0, #0x60 (sun)
  1171. and r0, r1
  1172. cmp r0, #0x0
  1173. beq EndWeather
  1174. mov r6, r9
  1175. cmp r6, #0xa
  1176. beq FireInRain
  1177. cmp r6, #0xb
  1178. beq WaterInRain
  1179. b EndWeather
  1180.  
  1181. # x3f560
  1182. FireInRain:
  1183. lsl r0, r5, #0x4
  1184. sub r0, r0, r5
  1185. mov r1, #0xa
  1186. bl x1e4018 (division)
  1187. add r5, r0, #0x0
  1188. b EndWeather
  1189.  
  1190. # x3f56e
  1191. WaterInRain:
  1192. lsr r0, r5, #0x1f
  1193. add r0, r5, r0
  1194. asr r5, r0, #0x1
  1195.  
  1196. # x3f574
  1197. EndWeather:
  1198. FlashFire:
  1199. ldr r0, x02023ff4
  1200. ldr r0, [r0, #0x0]
  1201. ldr r0, [r0, #0x4]
  1202. ldr r7, [sp, #0x10]
  1203. lsl r1, r7, #0x2
  1204. add r0, r0, r1
  1205. ldr r0, [r0, #0x0]
  1206. mov r1, #0x1
  1207. and r0, r1
  1208. cmp r0, #0x0
  1209. beq x3f59c
  1210. mov r0, r9
  1211. cmp r0, #0xa
  1212. bne x3f59c
  1213. lsl r0, r5, #0x4
  1214. sub r0, r0, r5
  1215. mov r1, #0xa
  1216. bl x1e4018 (division)
  1217. add r0, r0, #0x0
  1218.  
  1219. # x3f59c
  1220. END:
  1221. add r0, r5, #0x2
  1222. add sp, #0x2c
  1223. pop {r3-r5}
  1224. mov r8, r3
  1225. mov r9, r4
  1226. mov r10, r5
  1227. pop {r4-47}
  1228. pop {r1}
  1229. bx r1
Add Comment
Please, Sign In to add comment