Advertisement
Bond697

Pokemon Colo Bonus Disc Multiboot ROM (Partial) Disassembly

Oct 5th, 2011
718
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 10.94 KB | None | 0 0
  1.     .text
  2.     .align  2
  3.     .code   32
  4.     .arm
  5.  
  6.  
  7. entry:
  8. 020000C0 E3A00012 mov     r0,#0x12
  9. 020000C4 E129F000 msr     cpsr_fc,r0
  10. 020000C8 E59FD028 ldr     r13,=#0x3007FA0
  11. 020000CC E3A0001F mov     r0,#0x1F
  12. 020000D0 E129F000 msr     cpsr_fc,r0
  13. 020000D4 E59FD018 ldr     r13,=#0x3007E60
  14. 020000D8 E59F101C ldr     r1,=#0x3007FFC
  15. 020000DC E28F0020 add     r0,=#0x2000104
  16. 020000E0 E5810000 str     r0,[r1]
  17. 020000E4 E59F1014 ldr     r1,=#0x2000241
  18. 020000E8 E1A0E00F mov     r14,r15
  19. 020000EC E12FFF11 bx      r1
  20. 020000F0 EAFFFFF2 b       #0x20000C0
  21.  
  22. .pool
  23. 020000F4 03007E60
  24. 020000F8 03007FA0
  25. 020000FC 03007FFC
  26. 02000100 02000241
  27.  
  28.  
  29. irq handler:
  30. 02000104 E3A03301 mov     r3,#0x4000000
  31. 02000108 E2833C02 add     r3,r3,#0x200
  32. 0200010C E5932000 ldr     r2,[r3]
  33. 02000110 E1D310B8 ldrh    r1,[r3,#0x8]
  34. 02000114 E14F0000 mrs     r0,spsr
  35. 02000118 E92D400F stmfd   r13!,{r0-r3,r14}
  36. 0200011C E3A00001 mov     r0,#0x1
  37. 02000120 E1C300B8 strh    r0,[r3,#0x8]
  38. 02000124 E0021822 and     r1,r2,r2,lsr #0x10
  39. 02000128 E3A0C000 mov     r12,#0x0
  40. 0200012C E2110080 ands    r0,r1,#0x80
  41. 02000130 1A000027 bne     #0x20001D4
  42. 02000134 E28CC004 add     r12,r12,#0x4
  43. 02000138 E2110001 ands    r0,r1,#0x1
  44. 0200013C 1A000024 bne     #0x20001D4
  45. 02000140 E28CC004 add     r12,r12,#0x4
  46. 02000144 E2110002 ands    r0,r1,#0x2
  47. 02000148 1A000021 bne     #0x20001D4
  48. 0200014C E28CC004 add     r12,r12,#0x4
  49. 02000150 E2110004 ands    r0,r1,#0x4
  50. 02000154 1A00001E bne     #0x20001D4
  51. 02000158 E28CC004 add     r12,r12,#0x4
  52. 0200015C E2110008 ands    r0,r1,#0x8
  53. 02000160 1A00001B bne     #0x20001D4
  54. 02000164 E28CC004 add     r12,r12,#0x4
  55. 02000168 E2110010 ands    r0,r1,#0x10
  56. 0200016C 1A000018 bne     #0x20001D4
  57. 02000170 E28CC004 add     r12,r12,#0x4
  58. 02000174 E2110020 ands    r0,r1,#0x20
  59. 02000178 1A000015 bne     #0x20001D4
  60. 0200017C E28CC004 add     r12,r12,#0x4
  61. 02000180 E2110040 ands    r0,r1,#0x40
  62. 02000184 1A000012 bne     #0x20001D4
  63. 02000188 E28CC004 add     r12,r12,#0x4
  64. 0200018C E2110C01 ands    r0,r1,#0x100
  65. 02000190 1A00000F bne     #0x20001D4
  66. 02000194 E28CC004 add     r12,r12,#0x4
  67. 02000198 E2110C02 ands    r0,r1,#0x200
  68. 0200019C 1A00000C bne     #0x20001D4
  69. 020001A0 E28CC004 add     r12,r12,#0x4
  70. 020001A4 E2110B01 ands    r0,r1,#0x400
  71. 020001A8 1A000009 bne     #0x20001D4
  72. 020001AC E28CC004 add     r12,r12,#0x4
  73. 020001B0 E2110B02 ands    r0,r1,#0x800
  74. 020001B4 1A000006 bne     #0x20001D4
  75. 020001B8 E28CC004 add     r12,r12,#0x4
  76. 020001BC E2110A01 ands    r0,r1,#0x1000
  77. 020001C0 1A000003 bne     #0x20001D4
  78. 020001C4 E28CC004 add     r12,r12,#0x4
  79. 020001C8 E2110A02 ands    r0,r1,#0x2000
  80. 020001CC 1543017C strneb  r0,[r3,-#0x17C]
  81. 020001D0 1AFFFFFE bne     #0x20001D0
  82. 020001D4 E1C300B2 strh    r0,[r3,#0x2]
  83. 020001D8 E3A01D83 mov     r1,#0x20C0
  84. 020001DC E1C22000 bic     r2,r2,r0
  85. 020001E0 E0011002 and     r1,r1,r2
  86. 020001E4 E1C310B0 strh    r1,[r3]
  87. 020001E8 E10F3000 mrs     r3,cpsr
  88. 020001EC E3C330DF bic     r3,r3,#0xDF
  89. 020001F0 E383301F orr     r3,r3,#0x1F
  90. 020001F4 E129F003 msr     cpsr_fc,r3
  91. 020001F8 E59F1038 ldr     r1,=#0x2014390
  92. 020001FC E081100C add     r1,r1,r12
  93. 02000200 E5910000 ldr     r0,[r1]
  94. 02000204 E92D4000 stmfd   r13!,{r14}
  95. 02000208 E28FE000 add     r14,=#0x2000210
  96. 0200020C E12FFF10 bx      r0
  97. 02000210 E8BD4000 ldmfd   r13!,{r14}
  98. 02000214 E10F3000 mrs     r3,cpsr
  99. 02000218 E3C330DF bic     r3,r3,#0xDF
  100. 0200021C E3833092 orr     r3,r3,#0x92
  101. 02000220 E129F003 msr     cpsr_fc,r3
  102. 02000224 E8BD400F ldmfd   r13!,{r0-r3,r14}
  103. 02000228 E1C320B0 strh    r2,[r3]
  104. 0200022C E1C310B8 strh    r1,[r3,#0x8]
  105. 02000230 E169F000 msr     spsr_fc,r0
  106. 02000234 E12FFF1E bx      r14
  107.  
  108. .pool
  109. 02000238 02014390    
  110.  
  111.  
  112.     .text
  113.     .align 2
  114.     .code   16
  115.     .thumb
  116.  
  117.  
  118. 0200023C 4770     bx      r14
  119. 0200023E 0000     lsl     r0,r0,#0x0(padding)
  120.  
  121. agbMain:
  122. 02000240 B510     push    {r4,r14}
  123. 02000242 4C0F     ldr     r4,=#0x3000130
  124. 02000244 490F     ldr     r1,=#0x4000208    // IME
  125. 02000246 2000     mov     r0,#0x0
  126. 02000248 8008     strh    r0,[r1]       // IME = 0, turn off interrupts
  127. 0200024A 20FC     mov     r0,#0xFC      // pass 0xFC to 0x20002A0 as an argument
  128. 0200024C F000F828 bl      #0x20002A0
  129. 02000250 490D     ldr     r1,=#0x4000204    // cart waitstate control
  130. 02000252 4A0E     ldr     r2,=#0x45B4
  131. 02000254 1C10     mov     r0,r2         // waitstate control = 0x45b4
  132. 02000256 8008     strh    r0,[r1]       // set waitstates, prefetch buffer
  133. 02000258 4A0D     ldr     r2,=#0x40000D4    // DMA3 source
  134. 0200025A 480E     ldr     r0,=#0x20143C8    // use this as DMA3 source
  135. 0200025C 6010     str     r0,[r2]       // set DMA3 src
  136. 0200025E 20C0     mov     r0,#0xC0      // r0 = 0xC
  137. 02000260 0480     lsl     r0,r0,#0x12       // r0 = 0x3000000
  138. 02000262 6050     str     r0,[r2,#0x4]      // DMA3 dest = 0x3000000
  139. 02000264 480C     ldr     r0,=#0x30001C4   
  140. 02000266 490D     ldr     r1,=#0x3000000
  141. 02000268 1A40     sub     r0,r0,r1      // r0 = r0-r1 = 0x1C4
  142. 0200026A 0FC1     lsr     r1,r0,#0x1F       // r1 = 0
  143. 0200026C 1840     add     r0,r0,r1     
  144. 0200026E 1040     asr     r0,r0,#0x1
  145. 02000270 2180     mov     r1,#0x80
  146. 02000272 0609     lsl     r1,r1,#0x18
  147. 02000274 4308     orr     r0,r1
  148. 02000276 6090     str     r0,[r2,#0x8]
  149. 02000278 6890     ldr     r0,[r2,#0x8]
  150. 0200027A F000F81B bl      #0x20002B4
  151. 0200027E E7FE     b       #0x200027E
  152.  
  153. .pool
  154. 02000280 0130    
  155. 02000282 0300    
  156. (0x03000130)
  157.  
  158. 02000284 0208    
  159. 02000286 0400  
  160. (0x04000208)
  161.  
  162. 02000288 0204    
  163. 0200028A 0400    
  164. (0x04000204)
  165.  
  166. 0200028C 45B4    
  167. 0200028E 0000    
  168. (0x030045B4)
  169.  
  170. 02000290 00D4    
  171. 02000292 0400    
  172. (0x040000D4)
  173.  
  174. 02000294 43C8
  175. 02000296 0201    
  176. (0x020143C8)
  177.  
  178. 02000298 01C4    
  179. 0200029A 0300    
  180. (0x030001C4)
  181.  
  182. 0200029C 0000    
  183. 0200029E 0300    
  184. (0x03000000)
  185.  
  186.  
  187. 020002A0 DF01     swi     #0x1    ;RegisterRamReset
  188. 020002A2 4770     bx      r14
  189.  
  190. 020002A4 4700     bx      r0
  191. 020002A6 46C0     nop
  192.  
  193. 020002A8 4708     bx      r1
  194. 020002AA 46C0     nop
  195.  
  196. 020002AC 4710     bx      r2
  197. 020002AE 46C0     nop
  198.  
  199. 020002B0 4718     bx      r3
  200. 020002B2 46C0     nop
  201.  
  202. 020002B4 4720     bx      r4
  203. 020002B6 46C0     nop
  204.  
  205. 020002B8 4728     bx      r5
  206. 020002BA 46C0     nop
  207.  
  208. 020002BC 4730     bx      r6
  209. 020002BE 46C0     nop
  210.  
  211. 020002C0 4738     bx      r7
  212. 020002C2 46C0     nop
  213.  
  214. 020002C4 4740     bx      r8
  215. 020002C6 46C0     nop
  216.  
  217. 020002C8 4748     bx      r9
  218. 020002CA 46C0     nop
  219.  
  220. 020002CC 4750     bx      r10
  221. 020002CE 46C0     nop
  222.  
  223. 020002D0 4758     bx      r11
  224. 020002D2 46C0     nop
  225.  
  226. 020002D4 4760     bx      r12
  227. 020002D6 46C0     nop
  228.  
  229. 020002D8 4768     bx      r13
  230. 020002DA 46C0     nop
  231.  
  232. 020002DC 4770     bx      r14
  233. 020002DE 46C0     nop
  234. 020002E0 0000     lsl     r0,r0,#0x0(padding)
  235.  
  236.  
  237.     .text
  238.     .align 2
  239.     .code   32
  240.     .arm
  241.  
  242.  
  243. 020143C8 E1A0C00D mov     r12,r13
  244. 020143CC E92DDFF0 stmfd   r13!,{r4-r12,r14,r15}
  245. 020143D0 E24CB004 sub     r11,r12,#0x4
  246. 020143D4 E1A07000 mov     r7,r0
  247. 020143D8 E4973004 ldr     r3,[r7],#0x4
  248. 020143DC E1A0E001 mov     r14,r1
  249. 020143E0 E08E9443 add     r9,r14,r3,asr #0x8
  250. 020143E4 E15E0009 cmp     r14,r9
  251. 020143E8 2A000040 bcs     #0x20144F0
  252. 020143EC E3A08EFF mov     r8,#0xFF0
  253. 020143F0 E288800F add     r8,r8,#0xF
  254. 020143F4 E3A05080 mov     r5,#0x80
  255. 020143F8 E4D7A001 ldrb    r10,[r7],#0x1
  256. 020143FC E11A0005 tst     r10,r5
  257. 02014400 0A000033 beq     #0x20144D4
  258. 02014404 E4D73001 ldrb    r3,[r7],#0x1
  259. 02014408 E4D71001 ldrb    r1,[r7],#0x1
  260. 0201440C E24E0001 sub     r0,r14,#0x1
  261. 02014410 E1811403 orr     r1,r1,r3,lsl #0x8
  262. 02014414 E0013008 and     r3,r1,r8
  263. 02014418 E0630000 rsb     r0,r3,r0
  264. 0201441C E18E2000 orr     r2,r14,r0
  265. 02014420 E3120001 tst     r2,#0x1
  266. 02014424 E1A01641 mov     r1,r1,asr #0xC
  267. 02014428 E2810003 add     r0,r1,#0x3
  268. 0201442C 1A00000F bne     #0x2014470
  269. 02014430 E1A0C141 mov     r12,r1,asr #0x2
  270. 02014434 E35C0000 cmp     r12,#0x0
  271. 02014438 E2014002 and     r4,r1,#0x2
  272. 0201443C E2016001 and     r6,r1,#0x1
  273. 02014440 E1A010A5 mov     r1,r5,lsr #0x1
  274. 02014444 0A000005 beq     #0x2014460
  275. 02014448 E0D030B2 ldrh    r3,[r0],#0x2
  276. 0201444C E0CE30B2 strh    r3,[r14],#0x2
  277. 02014450 E0D030B2 ldrh    r3,[r0],#0x2
  278. 02014454 E0CE30B2 strh    r3,[r14],#0x2
  279. 02014458 E25CC001 subs    r12,r12,#0x1
  280. 0201445C 1AFFFFF9 bne     #0x2014448
  281. 02014460 E3540000 cmp     r4,#0x0
  282. 02014464 10D030B2 ldrneh  r3,[r0],#0x2
  283. 02014468 10CE30B2 strneh  r3,[r14],#0x2
  284. 0201446C EA000014 b       #0x20144C4
  285. 02014470 E1A0C141 mov     r12,r1,asr #0x2
  286. 02014474 E35C0000 cmp     r12,#0x0
  287. 02014478 E2014002 and     r4,r1,#0x2
  288. 0201447C E2016001 and     r6,r1,#0x1
  289. 02014480 E1A010A5 mov     r1,r5,lsr #0x1
  290. 02014484 0A000009 beq     #0x20144B0
  291. 02014488 E4D03001 ldrb    r3,[r0],#0x1
  292. 0201448C E4CE3001 strb    r3,[r14],#0x1
  293. 02014490 E4D02001 ldrb    r2,[r0],#0x1
  294. 02014494 E4CE2001 strb    r2,[r14],#0x1
  295. 02014498 E4D03001 ldrb    r3,[r0],#0x1
  296. 0201449C E4CE3001 strb    r3,[r14],#0x1
  297. 020144A0 E4D02001 ldrb    r2,[r0],#0x1
  298. 020144A4 E4CE2001 strb    r2,[r14],#0x1
  299. 020144A8 E25CC001 subs    r12,r12,#0x1
  300. 020144AC 1AFFFFF5 bne     #0x2014488
  301. 020144B0 E3540000 cmp     r4,#0x0
  302. 020144B4 14D03001 ldrneb  r3,[r0],#0x1
  303. 020144B8 14CE3001 strneb  r3,[r14],#0x1
  304. 020144BC 14D02001 ldrneb  r2,[r0],#0x1
  305. 020144C0 14CE2001 strneb  r2,[r14],#0x1
  306. 020144C4 E3560000 cmp     r6,#0x0
  307. 020144C8 0A000004 beq     #0x20144E0
  308. 020144CC E5D03000 ldrb    r3,[r0]
  309. 020144D0 EA000001 b       #0x20144DC
  310. 020144D4 E4D73001 ldrb    r3,[r7],#0x1
  311. 020144D8 E1A010A5 mov     r1,r5,lsr #0x1
  312. 020144DC E4CE3001 strb    r3,[r14],#0x1
  313. 020144E0 E21150FF ands    r5,r1,#0xFF
  314. 020144E4 1AFFFFC4 bne     #0x20143FC
  315. 020144E8 E15E0009 cmp     r14,r9
  316. 020144EC 3AFFFFC0 bcc     #0x20143F4
  317. 020144F0 E91B6FF0 ldmdb   r11,{r4-r11,r13,r14}
  318. 020144F4 E12FFF1E bx      r14
  319.  
  320. 020144F8 E1A0C00D mov     r12,r13
  321. 020144FC E92DD830 stmfd   r13!,{r4,r5,r11,r12,r14,r15}
  322. 02014500 E3A030AC mov     r3,#0xAC
  323. 02014504 E2833402 add     r3,r3,#0x2000000
  324. 02014508 E3A01000 mov     r1,#0x0
  325. 0201450C E59F2068 ldr     r2,=#0x2014384
  326. 02014510 E24CB004 sub     r11,r12,#0x4
  327. 02014514 E59FC064 ldr     r12,=#0x20003E0
  328. 02014518 E3A05402 mov     r5,#0x2000000
  329. 0201451C E5934000 ldr     r4,[r3]
  330. 02014520 E06C2002 rsb     r2,r12,r2
  331. 02014524 E2620402 rsb     r0,r2,#0x2000000
  332. 02014528 E2800BFF add     r0,r0,#0x3FC00
  333. 0201452C E280C003 add     r12,r0,#0x3
  334. 02014530 E1510002 cmp     r1,r2
  335. 02014534 AA000004 bge     #0x201454C
  336. 02014538 E7DC3001 ldrb    r3,[r12,r1]
  337. 0201453C E7C03001 strb    r3,[r0,r1]
  338. 02014540 E2811001 add     r1,r1,#0x1
  339. 02014544 E1510002 cmp     r1,r2
  340. 02014548 BAFFFFFA blt     #0x2014538
  341. 0201454C E3A03F82 mov     r3,#0x208
  342. 02014550 E2833301 add     r3,r3,#0x4000000
  343. 02014554 E3A02000 mov     r2,#0x0
  344. 02014558 E1C320B0 strh    r2,[r3]
  345. 0201455C E3A01402 mov     r1,#0x2000000
  346. 02014560 EBFFFF98 bl      #0x20143C8
  347. 02014564 E3A030AC mov     r3,#0xAC
  348. 02014568 E2833402 add     r3,r3,#0x2000000
  349. 0201456C E5834000 str     r4,[r3]
  350. 02014570 E1A0E00F mov     r14,r15
  351. 02014574 E12FFF15 bx      r5
  352. 02014578 EA000001 b       #0x2014584
  353.  
  354. .pool
  355. 0201457C 02014384    
  356. 02014580 020003E0  
  357.  
  358.  
  359. 02014584 E91B6830 ldmdb   r11,{r4,r5,r11,r13,r14}
  360. 02014588 E12FFF1E bx      r14
  361.  
  362.  
  363. .data
  364. 0201458C 53595346 "FSYS" - begin/end file system?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement