Advertisement
Doesnt

hazards

May 21st, 2014 (edited)
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.15 KB | None | 0 0
  1. This code hijacks regular spikes to function.
  2. x01/x02 = spikes
  3. x04/x08 = toxic spikes
  4. x10 = stealth rock
  5. x20 = sticky web
  6.  
  7. Hazards are ordered: t-spikes -> spikes -> sr -> web.
  8. This is consistent with gen 4 but not gen 5-6.
  9. Later gens activate them in the order the player uses them.
  10. (web is placed last to avoid wasting time if things die to sr/spikes)
  11.  
  12. First, to hijack regular spikes:
  13. x24EB8: 11 E0 (b 0x24ede)
  14. x24EF2: 1C E0 (b 0x24f2e)
  15. x24F36: 00 00 00 00
  16. x24F68: pointer to battle script
  17.  
  18. It'd *probably* be best to make the methods in a way that they could branch to each other seamlessly.
  19. However, I instead handled the bulk of this with a large battle script that uses 4 callasm calls.
  20. Also, I have no luck with BSP, so you're just getting raw hex. Sorry.
  21.  
  22. Also, this code assumes you aren't putting Immunity on a Poison-type.
  23. If you do, it won't be able to absorb Toxic Spikes. (also you're a jerk)
  24. Also also I took the very lazy road with Stealth Rock.
  25. It won't respect Inverse Battles or an edited type chart. Sorry.
  26.  
  27. There should be four blocks that are simply callasm() on the Hurt functions for each hazard.
  28. (also i inserted all of these close to the main code in freed ROM space)
  29. (you'll need to either do the same or define functions to existing ones. sorry 'bout that)
  30.  
  31. =============================================
  32. TSpikesHurt:
  33. =============================================
  34.  
  35. .org 0x2514D0
  36. push {lr}
  37. mov r0, #0x0
  38. bl 0x16e24
  39. mov r4, r0
  40. bl 0x751c4
  41.  
  42. ldr r1, .HalverStruct
  43. mov r2, #0xc
  44. mul r0, r2, r0
  45. add r0, r1, r0
  46. mov r5, r0
  47. ldrb r0, [r0, #0xa]
  48. mov r3, #0xc
  49. and r0, r3, r0
  50. lsr r0, #0x2
  51. ldr r1, .ActiveBSPointer
  52. cmp r0, #0x0
  53. beq SkipTSpikes
  54.  
  55.  
  56. mov r6, r0
  57. ldr r0, .BattleStruct
  58. mov r1, #0x58
  59. mul r1, r4, r1
  60. add r0, r1, r0
  61. add r0, r0, #0x20
  62. mov r7, r0
  63.  
  64. Ability:
  65. ldrb r1, [r7, #0x0]
  66. cmp r1, #0x1a
  67. beq SkipTSpikes
  68. cmp r1, #0x11
  69. beq SkipTSpikes
  70.  
  71. BirdCheck:
  72. ldrb r1, [r7, #0x1]
  73. ldrb r0, [r7, #0x2]
  74. cmp r0, #0x2
  75. beq SkipTSpikes
  76. cmp r1, #0x2
  77. beq SkipTSpikes
  78.  
  79. PoisonCheck:
  80. cmp r0, #0x3
  81. beq AbsorbTSpikes
  82. cmp r1, #0x3
  83. beq AbsorbTSpikes
  84.  
  85. SteelCheck:
  86. cmp r0, #0x8
  87. beq SkipTSpikes
  88. cmp r1, #0x8
  89. beq SkipTSpikes
  90.  
  91.  
  92. cmp r6, #0x1
  93. beq NormalTSpikes
  94. b HarshTSpikes
  95.  
  96.  
  97. SkipTSpikes:
  98. ldr r0, .SkipTSpikesBS
  99. ldr r1, .ActiveBSPointer
  100. str r0, [r1, #0x0]
  101. b End
  102.  
  103. NormalTSpikes:
  104. ldr r0, .NormalTSpikesBS
  105. ldr r1, .ActiveBSPointer
  106. str r0, [r1, #0x0]
  107. b End
  108.  
  109. HarshTSpikes:
  110. ldr r0, .HarshTSpikesBS
  111. ldr r1, .ActiveBSPointer
  112. str r0, [r1, #0x0]
  113. b End
  114.  
  115. AbsorbTSpikes:
  116. mov r0, r5
  117. ldrb r1, [r0, #0xa]
  118. mov r2, #0xf3
  119. and r1, r2, r1
  120. strb r1, [r0, #0xa]
  121. ldr r0, .AbsorbTSpikesBS
  122. ldr r1, .ActiveBSPointer
  123. str r0, [r1, #0x0]
  124.  
  125. End:
  126. pop {r0}
  127. bx r0
  128.  
  129. .align 2
  130.  
  131. .ActiveMon: .word 0x02023bc4
  132. .HalverStruct: .word 0x02023de4
  133. .ActiveBSPointer: .word 0x02023d74
  134. .SkipTSpikesBS: .word 0x08C8947B !!fix this
  135. .NormalTSpikesBS: .word 0x08C894AB !!fix this
  136. .HarshTSpikesBS: .word 0x08C894BB !!fix this
  137. .AbsorbTSpikesBS: .word 0x08C894CB !!fix this
  138. .BattleStruct: .word 0x02023be4
  139.  
  140. /////////////////////////////////////////////
  141.  
  142. SkipTSpikesBS should point to 5 bytes before a callasm on SpikesHurt.
  143. NormalTSpikesBS should point to 5 bytes before this:
  144. 2E 85 3E 02 02 02
  145. 16
  146. F8 (SpikesHurt)
  147. HarshTSpikesBS should point to 5 bytes before this:
  148. 2E 85 3E 02 02 06
  149. 16
  150. F8 (SpikesHurt)
  151. AbsorbTSpikesBS should point to 5 bytes before this:
  152. 10 (your "t-spikes disappeared" message ID)
  153. 12 40 00
  154. F8 (SpikesHurt)
  155.  
  156. =============================================
  157. SpikesHurt:
  158. =============================================
  159.  
  160. .org 0x251580
  161. push {lr}
  162. mov r0, #0x0
  163. bl 0x16e24
  164. ldr r4, .HurtBank
  165. strb r0, [r4, #0x0]
  166. mov r4, r0
  167. bl 0x751c4
  168.  
  169. ldr r1, .HalverStruct
  170. mov r2, #0xc
  171. mul r0, r2, r0
  172. add r0, r1, r0
  173. mov r5, r0
  174. ldrb r0, [r0, #0xa]
  175. mov r3, #0x3
  176. and r0, r3, r0
  177. cmp r0, #0x0
  178. beq SkipSpikes
  179. mov r6, r0
  180.  
  181. ldr r0, .BattleStruct
  182. mov r1, #0x58
  183. mul r1, r4, r1
  184. add r0, r1, r0
  185. add r0, #0x20
  186. mov r7, r0
  187.  
  188. Ability:
  189. ldrb r1, [r7, #0x0]
  190. cmp r1, #0x1a
  191. beq SkipSpikes
  192. cmp r1, #0x5d
  193. beq SkipSpikes
  194.  
  195. BirdCheck:
  196. ldrb r0, [r7, #0x1]
  197. ldrb r1, [r7, #0x2]
  198. cmp r0, #0x2
  199. beq SkipSpikes
  200. cmp r1, #0x2
  201. beq SkipSpikes
  202.  
  203. DamCalculate:
  204. ldrh r0, [r7, #0xc]
  205. mov r1, #0xa
  206. mov r2, r6
  207. add r2, r6, r2
  208. sub r1, r1, r2
  209. bl 0x1e4018
  210.  
  211. ldr r1, .DamageDealt
  212. str r0, [r1, #0x0]
  213. ldr r2, .ActiveBSPointer
  214. ldr r3, .SpikesDamageBS
  215. str r3, [r2, #0x0]
  216. b End
  217.  
  218. SkipSpikes:
  219. ldr r2, .ActiveBSPointer
  220. ldr r3, .SpikesSkipBS
  221. str r3, [r2, #0x0]
  222.  
  223. End:
  224. pop {r0}
  225. bx r0
  226.  
  227. .align 2
  228. .HurtBank: .word 0x02023fdb
  229. .HalverStruct: .word 0x02023de4
  230. .DamageDealt: .word 0x02023d50
  231. .ActiveBSPointer: .word 0x02023d74
  232. .BattleStruct: .word 0x02023be4
  233. .SpikesDamageBS: .word 0x08C894DB !!fix this
  234. .SpikesSkipBS: .word 0x08C8948B !!fix this
  235.  
  236. /////////////////////////////////////////////
  237.  
  238. SpikesSkipBS should point to 5 bytes before a callasm on SRHurt.
  239. SpikesDamageBS should point to 5 bytes before this:
  240. 0B 00
  241. 0C 00
  242. 41 2C 8D 1D 08
  243. 19 00 00 00 00 00 00
  244. 19 00 01 DF 8C 1D 08
  245. F8 (SRHurt)
  246.  
  247. =============================================
  248. SRHurt:
  249. =============================================
  250.  
  251. .org 0x251610
  252. push {lr}
  253. mov r0, #0x0
  254. bl 0x16e24
  255. mov r4, r0
  256. bl 0x751c4
  257.  
  258. ldr r1, .HalverStruct
  259. mov r2, #0xc
  260. mul r0, r2, r0
  261. add r0, r1, r0
  262. mov r5, r0
  263. ldrb r0, [r0, #0xa]
  264. mov r3, #0x10
  265. and r0, r3, r0
  266. cmp r0, #0x0
  267. beq SkipSR
  268. mov r6, r0
  269.  
  270. ldr r0, .BattleStruct
  271. mov r1, #0x58
  272. mul r1, r4, r1
  273. add r0, r1, r0
  274. add r0, #0x20
  275. mov r7, r0
  276.  
  277. Ability:
  278. ldrb r1, [r7, #0x0]
  279. cmp r1, #0x5d
  280. beq SkipSR
  281.  
  282.  
  283. mov r0, #0x8
  284. ldrb r1, [r7, #0x1]
  285. mov r2, #0x0
  286.  
  287. TypeMatchup:
  288. cmp r1, #0x1
  289. beq Resist
  290. cmp r1, #0x2
  291. beq Weak
  292. cmp r1, #0x4
  293. beq Resist
  294. cmp r1, #0x6
  295. beq Weak
  296. cmp r1, #0x8
  297. beq Resist
  298. cmp r1, #0xa
  299. beq Weak
  300. cmp r1, #0xf
  301. beq Weak
  302.  
  303. b TypeLoop
  304.  
  305. Resist:
  306. lsl r0, r0, #0x1
  307. b TypeLoop
  308.  
  309. Weak:
  310. lsr r0, r0, #0x1
  311.  
  312. TypeLoop:
  313. add r2, #0x1
  314. mov r3, r1
  315. ldrb r1, [r7, #0x2]
  316. cmp r1, r3
  317. beq EndTypeLoop
  318. cmp r2, #0x2
  319. bne TypeMatchup
  320.  
  321. EndTypeLoop:
  322. DamCalculate:
  323. mov r1, r0
  324. ldrh r0, [r7, #0xc]
  325. bl 0x1e4018
  326.  
  327. cmp r0, #0x0
  328. bne ApplyDamage
  329. mov r0, #0x1
  330.  
  331. ApplyDamage:
  332. ldr r1, .DamageDealt
  333. str r0, [r1, #0x0]
  334. ldr r2, .ActiveBSPointer
  335. ldr r3, .SRDamageBS
  336. str r3, [r2, #0x0]
  337. b End
  338.  
  339. SkipSR:
  340. ldr r2, .ActiveBSPointer
  341. ldr r3, .SRSkipBS
  342. str r3, [r2, #0x0]
  343.  
  344. End:
  345. pop {r0}
  346. bx r0
  347.  
  348. .align 2
  349.  
  350. .HalverStruct: .word 0x02023de4
  351. .DamageDealt: .word 0x02023d50
  352. .ActiveBSPointer: .word 0x02023d74
  353. .BattleStruct: .word 0x02023be4
  354. .SRDamageBS: .word 0x08C894FB !!fix this
  355. .SRSkipBS: .word 0x08C8949B !!fix this
  356.  
  357. /////////////////////////////////////////////
  358.  
  359. SRSkipBS should point to 5 bytes before a callasm to WebHurt.
  360. SRDamageBS should point to 5 bytes before this:
  361. 0B 00
  362. 0C 00
  363. 10 86 01
  364. 12 40 00
  365. 19 00 00 00 00 00 00
  366. 19 00 01 DF 8C 1D 08
  367. F8 (WebHurt)
  368.  
  369. =============================================
  370. WebHurt:
  371. =============================================
  372.  
  373. .org 0x2516C0
  374. push {lr}
  375. mov r0, #0x0
  376. bl 0x16e24
  377. mov r4, r0
  378. bl 0x751c4
  379.  
  380. ldr r1, .HalverStruct
  381. mov r2, #0xc
  382. mul r0, r2, r0
  383. add r0, r1, r0
  384. ldrb r0, [r0, #0xa]
  385. mov r3, #0x20
  386. and r0, r3, r0
  387. cmp r0, #0x0
  388. beq SkipWeb
  389.  
  390. ldr r0, .BattleStruct
  391. mov r1, #0x48
  392. mul r1, r4, r1
  393. add r0, r1, r0
  394. add r0, #0x20
  395. mov r7, r0
  396.  
  397. Ability:
  398. ldrb r1, [r7, #0x0]
  399. cmp r1, #0x1a
  400. beq SkipWeb
  401.  
  402. BirdCheck:
  403. ldrb r1, [r7, #0x1]
  404. ldrb r0, [r7, #0x2]
  405. cmp r1, #0x2
  406. beq SkipWeb
  407. cmp r0, #0x2
  408. beq SkipWeb
  409.  
  410.  
  411. ApplyWeb:
  412. ldr r2, .ActiveBSPointer
  413. ldr r3, .WebApplyBS
  414. str r3, [r2, #0x0]
  415. b End
  416.  
  417. SkipWeb:
  418. ldr r2, .ActiveBSPointer
  419. ldr r3, .WebSkipBS
  420. str r3, [r2, #0x0]
  421.  
  422. End:
  423. pop {r0}
  424. bx r0
  425.  
  426. .HalverStruct: .word 0x02023de4
  427. .BattleStruct: .word 0x02023be4
  428. .ActiveBSPointer: .word 0x02023d74
  429. .WebApplyBS: .word 0x08C8951B !!fix this
  430. .WebSkipBS: .word 0x08C8953B !!fix this
  431.  
  432. /////////////////////////////////////////////
  433.  
  434. WebApplyBS should point to 5 bytes before this:
  435. 10 ("caught in a web" message ID)
  436. 12 40 00
  437. 2E 85 3E 02 02 18
  438. 16
  439. 35 D0 3D 02 02 00 01 10 00
  440. 3C
  441. WebSkipBS should point to 5 bytes before this:
  442. 35 D0 3D 02 02 00 01 10 00
  443. 3C
  444.  
  445.  
  446.  
  447. .............................................
  448.  
  449. This gets the four hazards working properly.
  450. To make the moves function without memory editing, replace Spikes's script with this:
  451. 2A 00 4A 3D 02 02 MM MM XX XX XX XX
  452. 2A 00 4A 3D 02 02 NN NN YY YY YY YY
  453. 2A 00 4A 3D 02 02 OO OO ZZ ZZ ZZ ZZ
  454. 00
  455. F8 (LaySpikes)
  456. 02
  457. 03
  458. 09
  459. 0A
  460. 10 94 00
  461. 12 40 00
  462. 28 4E 69 1D 08
  463.  
  464. Where:
  465. MM MM is Toxic Spikes's move ID; XX XX XX XX points to its battle script
  466. NN NN is Stealth Rock's move ID; YY YY YY YY points to its battle script
  467. OO OO is Sticky Web's move ID; ZZ ZZ ZZ ZZ points to its battle script
  468.  
  469. At XX XX XX XX:
  470. 00
  471. F8 (LayToxicSpikes)
  472. 02
  473. 03
  474. 09
  475. 0A
  476. 10 ("poison spikes scattered" message ID)
  477. 12 40 00
  478. 28 4E 69 1D 08
  479.  
  480. ...and so on for the other two.
  481.  
  482.  
  483. =============================================
  484. LaySpikes
  485. =============================================
  486.  
  487. .org 0x251730
  488.  
  489. push {r4, lr}
  490. ldr r4, .ActiveBank
  491. ldrb r0, [r4, #0x0]
  492. bl 0x751c4
  493.  
  494. mov r1, #0x1
  495. eor r0, r1
  496. lsl r0, r0, #0x18
  497. lsr r0, r0, #0x18
  498. ldr r1, .HalverStruct
  499. lsl r2, r0, #0x1
  500. add r0, r2, r0
  501. lsl r0, r0, #0x2
  502. add r3, r0, r1
  503. ldrb r0, [r3, #0xa]
  504. mov r1, #0x3
  505. and r0, r1, r0
  506. cmp r0, #0x3
  507. bne LaySpikes
  508.  
  509. ldr r2, .Unknown
  510. ldrb r1, [r4, #0x0]
  511. lsl r0, r1, #0x2
  512. add r0, r0, r1
  513. lsl r0, r0, #0x2
  514. add r0, r0, r2
  515. ldrb r1, [r0, #0x0]
  516. mov r2, #0x20
  517. orr r1, r2
  518. strb r1, [r0, #0x0]
  519.  
  520. ldr r3, .ActiveBSPointer
  521. ldr r1, .FailAddr
  522. str r1, [r3, #0x0]
  523. b End
  524.  
  525.  
  526. LaySpikes:
  527. ldr r1, .HalverMarker
  528. add r1, r2, r1
  529. ldrh r2, [r1, #0x0]
  530. mov r0, #0x10
  531. orr r0, r2
  532. strh r0, [r1, #0x0]
  533.  
  534. ldrb r0, [r3, #0xa]
  535. add r0, #0x1
  536. strb r0, [r3, #0xa]
  537.  
  538. End:
  539. pop {r4}
  540. pop {r0}
  541. bx r0
  542.  
  543. .align 2
  544.  
  545. .ActiveBank: .word 0x02023d6b
  546. .HalverStruct: .word 0x02023de4
  547. .Unknown: .word 0x02023ecc
  548. .ActiveBSPointer: .word 0x02023d74
  549. .HalverMarker: .word 0x02023dde
  550. .FailAddr: .word 0x081D7DEB
  551.  
  552. =============================================
  553. LayTSpikes
  554. =============================================
  555.  
  556. .org 0x2517C0
  557.  
  558. push {r4, lr}
  559. ldr r4, .ActiveBank
  560. ldrb r0, [r4, #0x0]
  561. bl 0x751c4
  562.  
  563. mov r1, #0x1
  564. eor r0, r1
  565. lsl r0, r0, #0x18
  566. lsr r0, r0, #0x18
  567. ldr r1, .HalverStruct
  568. lsl r2, r0, #0x1
  569. add r0, r2, r0
  570. lsl r0, r0, #0x2
  571. add r3, r0, r1
  572. ldrb r0, [r3, #0xa]
  573. mov r1, #0xc
  574. and r0, r1, r0
  575. lsr r0, r0, #0x2
  576. cmp r0, #0x3
  577. bne LayTSpikes
  578.  
  579. ldr r2, .Unknown
  580. ldrb r1, [r4, #0x0]
  581. lsl r0, r1, #0x2
  582. add r0, r0, r1
  583. lsl r0, r0, #0x2
  584. add r0, r0, r2
  585. ldrb r1, [r0, #0x0]
  586. mov r2, #0x20
  587. orr r1, r2
  588. strb r1, [r0, #0x0]
  589.  
  590. ldr r3, .ActiveBSPointer
  591. ldr r1, .FailAddr
  592. str r1, [r3, #0x0]
  593. b End
  594.  
  595.  
  596. LayTSpikes:
  597. ldr r1, .HalverMarker
  598. add r1, r2, r1
  599. ldrh r2, [r1, #0x0]
  600. mov r0, #0x10
  601. orr r0, r2
  602. strh r0, [r1, #0x0]
  603.  
  604. ldrb r0, [r3, #0xa]
  605. mov r1, #0xc
  606. and r1, r0, r1
  607. lsr r1, r1, #0x2
  608. add r1, #0x1
  609. lsl r1, r1, #0x2
  610. orr r0, r0, r1
  611. strb r0, [r3, #0xa]
  612.  
  613. End:
  614. pop {r4}
  615. pop {r0}
  616. bx r0
  617.  
  618. .align 2
  619.  
  620. .ActiveBank: .word 0x02023d6b
  621. .HalverStruct: .word 0x02023de4
  622. .Unknown: .word 0x02023ecc
  623. .ActiveBSPointer: .word 0x02023d74
  624. .HalverMarker: .word 0x02023dde
  625. .FailAddr: .word 0x081D7DEB
  626.  
  627. =============================================
  628. LaySR
  629. =============================================
  630.  
  631. .org 0x251860
  632.  
  633. push {r4, lr}
  634. ldr r4, .ActiveBank
  635. ldrb r0, [r4, #0x0]
  636. bl 0x751c4
  637.  
  638. mov r1, #0x1
  639. eor r0, r1
  640. lsl r0, r0, #0x18
  641. lsr r0, r0, #0x18
  642. ldr r1, .HalverStruct
  643. lsl r2, r0, #0x1
  644. add r0, r2, r0
  645. lsl r0, r0, #0x2
  646. add r3, r0, r1
  647. ldrb r0, [r3, #0xa]
  648. mov r1, #0x10
  649. and r0, r1, r0
  650. cmp r0, #0x0
  651. beq LaySR
  652.  
  653. ldr r2, .Unknown
  654. ldrb r1, [r4, #0x0]
  655. lsl r0, r1, #0x2
  656. add r0, r0, r1
  657. lsl r0, r0, #0x2
  658. add r0, r0, r2
  659. ldrb r1, [r0, #0x0]
  660. mov r2, #0x20
  661. orr r1, r2
  662. strb r1, [r0, #0x0]
  663.  
  664. ldr r3, .ActiveBSPointer
  665. ldr r1, .FailAddr
  666. str r1, [r3, #0x0]
  667. b End
  668.  
  669.  
  670. LaySR:
  671. ldr r1, .HalverMarker
  672. add r1, r2, r1
  673. ldrh r2, [r1, #0x0]
  674. mov r0, #0x10
  675. orr r0, r2
  676. strh r0, [r1, #0x0]
  677.  
  678. ldrb r0, [r3, #0xa]
  679. mov r1, #0x10
  680. orr r0, r1, r0
  681. strb r0, [r3, #0xa]
  682.  
  683. End:
  684. pop {r4}
  685. pop {r0}
  686. bx r0
  687.  
  688.  
  689.  
  690. .ActiveBank: .word 0x02023d6b
  691. .HalverStruct: .word 0x02023de4
  692. .Unknown: .word 0x02023ecc
  693. .ActiveBSPointer: .word 0x02023d74
  694. .HalverMarker: .word 0x02023dde
  695. .FailAddr: .word 0x081D7DEB
  696.  
  697. =============================================
  698. LayWeb
  699. =============================================
  700.  
  701. .org 0x2518F0
  702.  
  703. push {r4, lr}
  704. ldr r4, .ActiveBank
  705. ldrb r0, [r4, #0x0]
  706. bl 0x751c4
  707.  
  708. mov r1, #0x1
  709. eor r0, r1
  710. lsl r0, r0, #0x18
  711. lsr r0, r0, #0x18
  712. ldr r1, .HalverStruct
  713. lsl r2, r0, #0x1
  714. add r0, r2, r0
  715. lsl r0, r0, #0x2
  716. add r3, r0, r1
  717. ldrb r0, [r3, #0xa]
  718. mov r1, #0x20
  719. and r0, r1, r0
  720. cmp r0, #0x0
  721. beq LayWeb
  722.  
  723. ldr r2, .Unknown
  724. ldrb r1, [r4, #0x0]
  725. lsl r0, r1, #0x2
  726. add r0, r0, r1
  727. lsl r0, r0, #0x2
  728. add r0, r0, r2
  729. ldrb r1, [r0, #0x0]
  730. mov r2, #0x20
  731. orr r1, r2
  732. strb r1, [r0, #0x0]
  733.  
  734. ldr r3, .ActiveBSPointer
  735. ldr r1, .FailAddr
  736. str r1, [r3, #0x0]
  737. b End
  738.  
  739.  
  740. LayWeb:
  741. ldr r1, .HalverMarker
  742. add r1, r2, r1
  743. ldrh r2, [r1, #0x0]
  744. mov r0, #0x10
  745. orr r0, r2
  746. strh r0, [r1, #0x0]
  747.  
  748. ldrb r0, [r3, #0xa]
  749. mov r1, #0x20
  750. orr r0, r1, r0
  751. strb r0, [r3, #0xa]
  752.  
  753. End:
  754. pop {r4}
  755. pop {r0}
  756. bx r0
  757.  
  758. .align 2
  759.  
  760. .ActiveBank: .word 0x02023d6b
  761. .HalverStruct: .word 0x02023de4
  762. .Unknown: .word 0x02023ecc
  763. .ActiveBSPointer: .word 0x02023d74
  764. .HalverMarker: .word 0x02023dde
  765. .FailAddr: .word 0x081D7DEB
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement