Advertisement
RETIREglitch

Technical writeup HoO Arceus route

Feb 5th, 2019
5,175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.83 KB | None | 0 0
  1. Since wrongwarps has been found and understood I had been wondering: is a faster Hall of Origin capture location route for Arceus possible?
  2.  
  3. I never attempted to make a faster one because any method I could think of would only save about 1500 steps. I needed some other section of ram that I could get to quickly that I could modify to give me a Pal Park map and a Hall Of Origin map. And I accomplished this using warpdata, coordinate data, two independent Wrong Warps and a Spear Pillar warp.
  4.  
  5. The new route is only 5551 steps, which is a 10 000 step improvement over the old route. It is also 1200 steps from startup, and allows for infinite captures with 'Jubilife City' as capture location. Therefore it's also the best shinyhunt route out there. It's also the first completely consistent route that works across all releases.
  6.  
  7. Here is a youtube video showing everything, if you'd like to follow along:
  8. https://www.youtube.com/watch?v=JrWct9U9rhM
  9.  
  10. Here are all the locations for [base] in all releases of D/P
  11. DS games have randomised RAM layouts. The RAM layout can have 64 patterns, and is assigned on booting of the game.
  12. Therefore all calculations for RAM offsets use [base], the value that shows the randomisation.
  13.  
  14. base = 0x02106FC0 US/EU
  15. base = 0x02107100 DE
  16. base = 0x02107140 FR
  17. base = 0x021070A0 IT
  18. base = 0x02108818 JP
  19. base = 0x021045C0 KR
  20. base = 0x02107160 ES
  21.  
  22. Expected knowledge is understanding the concepts in this Void Guide: https://forums.glitchcity.info/index.php?topic=8499.0
  23.  
  24. Route explanation:
  25.  
  26. All map IDs above 0x22E (558 in decimal), are forced to 3 due to an error handler.
  27.  
  28. When entering Poketch Co
  29. Map Id read from [base] + 22ADA = Matrix_center = 0008 = Poketch Co.
  30.  
  31. 1 S
  32. 17 W
  33. 22 S
  34.  
  35. use Bicycle (key item)
  36.  
  37. 32 N
  38. 415 W
  39. Map Id = over 558 => 0003 = Jubilife City
  40.  
  41. Save reset
  42. Map width 1x1 => 30x30
  43.  
  44. 380 E
  45. Explorer kit, back out of message
  46.  
  47. This writes current Map Id followed by X and Y coordinates at [Base] + 1488
  48. X = FFFF FFE1 but is written as 16 bit => FFE1
  49. Y= 0000 0000 but is written as 16 bit => 0000
  50.  
  51. 480 N
  52. 260 E
  53. Map Id = 0007 = Jubilife City top floor pokémoncenter.
  54.  
  55. Save reset
  56. Map width 30x30 => 1x1
  57.  
  58. 214 W
  59. 479 S
  60. X = 0000 000C
  61. Y = FFFF FFFF
  62.  
  63. graphic reload
  64. Y coordinate is underflowed, collision is now read from a different part of ram, and due to update orders we can move 2 tiles down if we run or move at full speed with bike, into a wall.
  65. Y = 0000 0001
  66.  
  67. graphic reload
  68. Y coordinate is positive, collision is fixed and we walk down into the room.
  69. Y= 0000 0003
  70. 3 W
  71.  
  72. talk to NPC from this spot
  73. Reset after the saving is done
  74. By talking to the Union Room npc, a Map Id and coordinate check is performed. If it matches, it overwrites data at [base] + 1488 with those values.
  75.  
  76. It will then warp you to them if you would reset the console. But since the check fails (we are at a wrong Y value) we will warp to our earlier written Explorer kit values at [Base] + 1488.
  77. X = FFE1
  78. Y = 0000
  79.  
  80. Since Explorer Kit is used in an Outdoor map
  81. Matrix id 1x1 => 30x30
  82.  
  83. X ram change (65505/32*2) = 4094 = 0FFE
  84. Y ram change (0/32*2*30) = 0 = 0000
  85.  
  86. We add 0FFE to [base] + 22ADA.
  87. This puts us at [base] + 23AD8.
  88. This us really close to warp coordinates, sprite coordinates, sprite Id's, events, flagdata,... which we will now abuse heavily.
  89.  
  90.  
  91. Register Town Map
  92. Town map will be used to refresh graphics, which will unload models in Fake Sinnoh that block our path
  93.  
  94. 100 E
  95. 320 S
  96.  
  97. We have reached warp coordinates, sprite coordinate, Id's, events, flags... which all get loaded when entering a Map.
  98. Since their written values are read as Map Id, you can chain entering Maps and writing new ones.
  99.  
  100. 32 E
  101. Map Id = 0002 = Underground
  102. Writes 0188 and 002D
  103.  
  104. 191 S
  105. 32 E
  106. 1 S
  107. Map Id = 0188 = route 221
  108. Writes 0132 , 0189 and 0028
  109.  
  110. 32 E
  111. 1 N
  112. 192 E
  113.  
  114.  
  115. Town Map
  116.  
  117. 65 S
  118. 96 E
  119. Map Id = 0028 = Canalave City Library - 03
  120. Writes 01D4
  121.  
  122. 1 N
  123. 128 W
  124.  
  125. Town Map
  126.  
  127. 8 W
  128. 14 N
  129.  
  130. Map ID = 01D4 = route 223
  131. X = FFFF 0138
  132. Y = 0000 0232
  133.  
  134. Explorer Kit
  135. Back out of message
  136.  
  137. Writes to [base] + 1488
  138. X = 0138
  139. Y = 0232
  140.  
  141. In the overworld, this equals to above the door of Eterna city's gym
  142.  
  143. 56 W
  144. Town Map
  145. 1 W
  146. 47 S
  147. Map Id = 0132 = Galactic HQ
  148. Clears a path through ram
  149. Writes 0010
  150.  
  151. 1 N
  152. 32 E
  153.  
  154. Town Map
  155.  
  156. 1 E
  157. 1 S (cutscene if first time entering)
  158. Map Id = 0189 = inside Pal Park
  159. Writes 00FB
  160.  
  161. 32 N
  162.  
  163. Town Map
  164.  
  165. 32 N
  166. 64 E (63 if cutscene played)
  167.  
  168. Town Map
  169.  
  170. 96 N
  171. 1 N
  172. Cutscene
  173.  
  174. Map Id = 00FB = outdoors Pal Park
  175. Grants the Pal Park menu with RETIRE function
  176.  
  177. 1 S
  178. 96 W
  179. Map Id = 0010 = Jubilife City Jubilife TV-06
  180. Writes 0006
  181.  
  182. 97 N
  183.  
  184. Map Id = 0006 = Jubilife City Pokemon Center
  185. Writes 0004
  186. +
  187. Map Id = 0004 = Jubilife City Mart
  188. Writes 0002
  189.  
  190. 1 W
  191. Go through map 0002 = Underground
  192. Writes 00B9
  193.  
  194. 1 E
  195. Go through 00B9 = Cynthia's room
  196. Mapscript runs to start battle
  197. Lose battle (except for dig, this is the fastest way to leave the void with the Pal Park menu without overwriting [base] + 1488)
  198.  
  199. We are now in a Pokémoncenter with the Pal Park menu
  200.  
  201. Take some strong Pokémon from a box
  202.  
  203. Walk up left elevator
  204. Mapscript pushes you into void
  205.  
  206. 4 W
  207. 15 N
  208. 6 E
  209.  
  210. graphic reload
  211. full speed south
  212. graphic reload
  213.  
  214. 2 S
  215. 2 E
  216. talk to NPC from this spot
  217. Reset after the saving is done
  218.  
  219. This is all the same as earlier, we warp to the values written earlier at [base] + 1488, above Eterna City Gym's door
  220.  
  221. Graphic reload
  222. 1 S
  223. enter warp
  224.  
  225. Map Id read from [base] + 22ADA = Matrixcenter = 0043 = Eterna City Gym
  226.  
  227. Has matrix ID 00DC
  228.  
  229. 1 S
  230. 243 E
  231. 332 N
  232. Map ID read from [base] + 22AD6 = Matrix ID
  233. = 00DC = Spear Pillar
  234. RETIRE
  235.  
  236. X = 0000 00FB
  237. Y = FFFF FEC1
  238.  
  239. When we pressed RETIRE we activated a cutscene that stores our
  240. Map id = 00DC
  241. X = 0000 00FB but is written as 16 bit => 00FB
  242. Y = FFFF FFC1 but is written as 16 bit => FFC1
  243.  
  244. And warps us back to the void of spear pillar and 16 bit equivalent of the coordinates. This does the following
  245.  
  246. X ram change: (251/32*2) = 14 = 000E
  247. Y ram change: (65217/32*2*2) = 8152 = 1FD8
  248.  
  249. We add 1FE6 to [base] + 22ADA.
  250. This puts us at [base] + 24AC0.
  251. This is really close to coordinate, warp, animation, sprite... data. (the thing is a mess)
  252. We will be abusing coordinates, and warpdata.
  253.  
  254. Writes 00FB = Outdoor Pal Park as the X value of a warp
  255.  
  256. 479 N
  257. 259 E
  258. Adds 0103 to 00FB => X = 01FE
  259. 64 N
  260. Enter X coordinate data = 01FE = Hall of Origin
  261.  
  262. --------------
  263. HoO Arceus runaway:
  264. --------------
  265. RETIRE (runaway)
  266. 1 N
  267. 3 S
  268. repeat until you capture an Arceus
  269. --------------
  270. 65 N
  271. Enter X value of warp = 00FB = Outdoor Pal Park
  272. RETIRE
  273.  
  274. --------------
  275. Jubilife Arceus infinite capture:
  276. 1 N
  277. --------------
  278. RETIRE (capture/runaway)
  279. 2 S
  280. repeat until you have captures all Arceus you’d like
  281. --------------
  282. 64 N
  283. Enter X value of warp = 00FB = Outdoor Pal Park
  284. RETIRE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement