Advertisement
nmarkro

postgame bingo asm

Jan 4th, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.55 KB | None | 0 0
  1. input equ input.gba
  2. fspace equ 0x7FFBD0
  3.  
  4. .gba
  5. .open input,output.gba,8000000h
  6.  
  7. .org fspace+8000000h
  8. .align 2
  9.  
  10. writeStoryFlags:
  11. ;set all the story flags to just after beating alpha
  12. ldr r0,=flags ;r0 = addr for flags
  13. ldr r1,=2000030h ;r1 = addr for flags in ram
  14. mov r2,0B0h ;r2 = # of 2byte writes
  15. swi 0Bh ;call memcopy
  16.  
  17. bx lr ;return
  18.  
  19. writeEmails:
  20. ;give the player all the relevant emails
  21. ldr r0,=emails ;r0 = addr for emails
  22.  
  23. ldr r1,=2000250h ;r1 = addr for emails in ram
  24. mov r2,03h ;r2 = # of 2byte writes
  25. swi 0Bh ;call memcopy
  26. add r2,r2,r2 ;r2 *= 2
  27. add r0,r0,r2 ;r0 = r0 + r2 offset r0 by r2
  28.  
  29. ldr r1,=2000260h ;r1 = addr for emails in ram
  30. mov r2,03h ;r2 = # of 2byte writes
  31. swi 0Bh ;call memcopy
  32. add r2,r2,r2 ;r2 *= 2
  33. add r0,r0,r2 ;r0 = r0 + r2 offset r0 by r2
  34.  
  35. ldr r1,=20051A0h ;r1 = addr for emails in ram
  36. mov r2,12h ;r2 = # of 2byte writes
  37. swi 0Bh ;call memcopy
  38.  
  39. ldr r0,=200157Ch ;r0 = addr for # of emails in ram
  40. mov r1,24h ;r1 = # of emails emails
  41. strb r1,[r0] ;write r1 in the r0 addr
  42.  
  43. bx lr ;return
  44.  
  45. writeJobs:
  46. ;give the player all the jobs
  47. ldr r0,=jobs ;r0 = addr for jobs
  48.  
  49. ldr r1,=2001B70h ;r1 = addr for jobs in ram
  50. mov r2,0Dh ;r2 = # of 2byte writes
  51. swi 0Bh ;call memcopy
  52. add r2,r2,r2 ;r2 *= 2
  53. add r0,r0,r2 ;r0 = r0 + r2 offset r0 by r2
  54.  
  55. ldr r1,=20002C0h ;r1 = addr for jobs in ram
  56. mov r2,02h ;r2 = # of 2byte writes
  57. swi 0Bh ;call memcopy
  58.  
  59. ldr r0,=20013D0h ;r1 = addr for # of jobs in ram
  60. mov r1,19h ;r1 = # of jobs
  61. strb r1,[r0] ;write r1 in the r0 addr
  62.  
  63. bx lr ;return
  64.  
  65. writeNaviCust:
  66. ;give the player the Alpha, EnergyCharge, Press, & BlackMind NCP (story related parts)
  67. ldr r2,=navicust ;r2 = addr for navicust pointers
  68.  
  69. mov r1,1h ;r1 = value to write
  70. mov r3,4h ;r3 = # of navicust pointers
  71.  
  72. @@writeloop: ;loop to write r1 to the pointers
  73. ldr r0,[r2] ;r0 = pointer at r2
  74. strb r1,[r0] ;write r1 at the pointer
  75. add r2,4h ;r2 += 4h offset r2 by 4
  76. sub r3,1h ;r3 -= 1h
  77. bne @@writeloop ;keep looping if r3 != 0
  78.  
  79. bx lr ;return
  80.  
  81. writeKeyItems:
  82. ;give the player all the keyitems needed to beat Alpha
  83. ldr r2,=keyitems ;r2 = addr for keyitem pointers
  84.  
  85. mov r1,1h ;r1 = value to write
  86. mov r3,16h ;r3 = # of keyitem pointers
  87.  
  88. @@writeloop: ;loop to write r1 to the pointers
  89. ldr r0,[r2] ;r0 = pointer at r2
  90. strb r1,[r0] ;write r1 at the pointer
  91. add r2,4h ;r2 += 4h offset r2 by 4
  92. sub r3,1h ;r3 -= 1h
  93. bne @@writeloop ;keep looping if r3 != 0
  94.  
  95. bx lr ;return
  96.  
  97. writeArea:
  98. ;set the area to Lans Room
  99. ldr r0,=2001884h ;r0 = addr for area?
  100. mov r1,0h ;r1 = area?
  101. strb r1,[r0] ;write r1 into r0
  102.  
  103. ldr r0,=2001885h ;r0 = addr for subarea?
  104. mov r1,3h ;r1 = subarea?
  105. strb r1,[r0] ;write r1 into r0
  106.  
  107. bx lr ;return
  108.  
  109. writeStyle:
  110. ;randomly set the player's starting style
  111. push lr ;push return addr (r14)
  112.  
  113. ldr r1,=02001896h ;r1 = addr for ? reject style?
  114. mov r0,00h ;r0 = ?
  115. strb r0,[r1] ;write r0 in r1
  116.  
  117. ldr r4,=styles ;r4 = mem addr for styles
  118.  
  119. ldr r7,=080016A3h ;r7 = mem addr for RNG function
  120. mov r14,r15 ;move PC into LR so that we can return here
  121. bx r7 ;call RNG
  122.  
  123. mov r1,1Ch ;r1 = 1Ch # of styles
  124. swi 6h ;r0 div r1
  125.  
  126. ldrb r0,[r4,r1] ;r0 = byte at [r4 + r1]
  127. ldr r1,=02001894h ;r1 = addr for style
  128. strb r0,[r1] ;store style
  129.  
  130. ;ldr r1,=02001881h ;r1 = addr for currently equipped style
  131. ;strb r0,[r1] ;store equipped style
  132.  
  133. pop r15 ;return
  134.  
  135. writeProgress:
  136. ;set the progress byte to post-Alpha
  137. ldr r1,=02001886h ;r1 = progress byte addr
  138. mov r0,79h ;r0 = progress value
  139. strb r0,[r1] ;write r0 into r1
  140.  
  141. bx lr ;return
  142.  
  143. writeFolders:
  144. ;Give the player Folder2 & the Extra Folder after pressing new game
  145. push lr ;push return addr (r14)
  146.  
  147. ;load parameters for setfolder function for extrafolder (idk which ones I actually need lmao)
  148. ldr r0,=0x0000000A ;extrafolder id?
  149. ;ldr r1,=0x00000034
  150. ;ldr r2,=0x08026D34
  151. ;ldr r3,=0x00000002
  152. ;ldr r4,=0x02026CA8
  153. ldr r5,=0x02009480
  154. ldr r6,=0x0000FC00
  155. ;ldr r7,=0x080287BC
  156.  
  157. ;call setfolder function
  158. ldr r4,=080019E9h ;r4 = setfolder(?) function
  159. mov r14,r15 ;move PC into LR so that we can return here
  160. bx r4 ;call setfolder(?) function
  161.  
  162. ;load parameters for setfolder function for folder2 (idk which ones I actually need lmao)
  163. ldr r0,=0x00000001 ;folder2 id?
  164. ;ldr r1,=0xFFFFFFBF
  165. ;ldr r2,=0x0200027D
  166. ;ldr r3,=0x020045F0
  167. ;ldr r4,=0x00000000
  168. ldr r5,=0x02009DB0
  169. ldr r6,=0x0000FC00
  170. ;ldr r7,=0x080004C0
  171.  
  172. ;call setfolder function
  173. ldr r4,=080019E9h ;r4 = setfolder(?) function
  174. mov r14,r15 ;move PC into LR so that we can return here
  175. bx r4 ;call setfolder(?) function
  176.  
  177. ;return
  178. pop r15 ;return
  179.  
  180. giveStoryChips:
  181. ;give the player Roll R & LavaStage T which are normally given in story events
  182. push lr ;push return addr (r14)
  183.  
  184. mov r0,0DBh ;r0 = 0xDB chip id for roll
  185. mov r1,11h ;r1 = 0x11 r code
  186. mov r2,1h ;r2 = 1 only give the player 1 copy
  187.  
  188. ldr r3,=08011281h ;r3 = givechip(?) function
  189. mov r14,r15 ;move PC into LR so that we can return here
  190. bx r3 ;call givechip(?) function
  191.  
  192. mov r0,0B3h ;r0 = 0xB3 chip id for lavastage
  193. mov r1,13h ;r1 = 0x13 t code
  194. mov r2,1h ;r2 = 1 only give the player 1 copy
  195.  
  196. ldr r3,=08011281h ;r3 = givechip(?) function
  197. mov r14,r15 ;move PC into LR so that we can return here
  198. bx r3 ;call givechip(?) function
  199.  
  200. pop r15 ;return
  201.  
  202. customRoutine:
  203. push r0-r3
  204.  
  205. bl writeStoryFlags
  206. bl writeEmails
  207. bl writeJobs
  208. bl writeNaviCust
  209. bl writeKeyItems
  210. bl writeArea
  211. bl writeStyle
  212. bl writeProgress
  213. bl writeFolders
  214. bl giveStoryChips
  215.  
  216. pop r0-r7,r15
  217.  
  218. .pool
  219.  
  220. flags:
  221. .db 0xE2,0x06,0x78,0x18,0x23,0x00,0x00,0x00,0x03,0xFF,0xFE,0x58,0x00,0x00,0x00,0x00
  222. .db 0x06,0x88,0x0C,0x03,0xF9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x1F
  223. .db 0xF1,0x11,0x11,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00
  224. .db 0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  225. .db 0x9D,0x0A,0x40,0x01,0x08,0x98,0x00,0x43,0x73,0x08,0x00,0x40,0x3F,0xFF,0xFF,0xF8
  226. .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  227. .db 0xFC,0x2F,0x09,0xF9,0xFF,0xFD,0x7F,0xBF,0x7F,0xD0,0x00,0x00,0x00,0x00,0x00,0x00
  228. .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  229. .db 0x00,0xFD,0xCF,0xFA,0xFF,0xFF,0xFF,0xFA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  230. .db 0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  231. .db 0x7F,0xDF,0xFF,0xA1,0xEF,0xFF,0xB6,0xFD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  232. .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  233. .db 0x8F,0xFF,0x0F,0xFF,0xFF,0x1F,0xFF,0xC0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  234. .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  235. .db 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xF8,0x00,0x00,0x00,0x00,0x00
  236. .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  237. .db 0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  238. .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  239. .db 0x01,0xFF,0xFF,0xFF,0xF2,0x7E,0xFC,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  240. .db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  241. .db 0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0xF7,0xEF,0x81,0xE0,0x00,0x00,0x00,0x00,0x00,0x00
  242. .db 0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x00,0x00,0x40,0x00
  243.  
  244. .pool
  245.  
  246. emails:
  247. .db 0xff,0xff,0xff,0xff,0xe8,0x40
  248. .db 0xff,0xff,0xff,0xfd,0xe8,0x40
  249. .db 0x00,0x01,0x02,0x03,0x1F,0x04,0x29,0x05,0x21,0x06,0x07,0x08,0x09,0x0A,0x0B
  250. .db 0x20,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x22,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x1C
  251. .db 0x19,0x1A,0x1B,0x1D,0x1E,0x80
  252.  
  253. .pool
  254.  
  255. jobs:
  256. .db 0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x00,0x01,0x02,0x03,0x0D,0x0E,0x0F
  257. .db 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x40
  258. .db 0xFF,0xFF,0xFF,0x80
  259.  
  260. .pool
  261.  
  262. navicust:
  263. .word 0x2001AD0,0x02001AD4,0x02001AD9,0x02001B38
  264.  
  265. keyitems:
  266. .word 0x20019C3,0x20019CA,0x20019CE,0x20019D0,0x20019D2,0x20019D5,0x20019D7,0x20019DB,0x20019DC,0x20019DD,0x20019DE,0x20019DF,0x20019E0,0x20019E1,0x20019E2,0x20019E3,0x20019E4,0x20019E5,0x2001A1C,0x2001A1D,0x2001A1E,0x2001A1F
  267.  
  268. styles:
  269. .db 0x09,0x0A,0x0B,0x0C,0x11,0x12,0x13,0x14,0x19,0x1A,0x1B,0x1C,0x21,0x22,0x23,0x24,0x29,0x2A,0x2B,0x2C,0x31,0x32,0x33,0x34,0x39,0x3A,0x3B,0x3C
  270.  
  271. .align 4
  272. .pool
  273. .org 8004680h
  274. mainHook:
  275. ;Set main hook that triggers when you press new game
  276. ldr r0,=customRoutine|1b
  277. bx r0
  278.  
  279. .align 4
  280. .pool
  281. .org 8015C7Ah
  282. ;next style change happens in 15 fights (7 * 2 + 1)
  283. mov r2,07h
  284.  
  285. ;spawn time trials early
  286. .org 080AB014h
  287. .db 0x80,0x21
  288.  
  289. .org 080AB031h
  290. .db 0x80,0x21
  291.  
  292. .org 080AB04Eh
  293. .db 0x80,0x21
  294.  
  295. .org 080AB06Bh
  296. .db 0x80,0x21
  297.  
  298. .org 080AB088h
  299. .db 0x80,0x21
  300.  
  301. .org 080AB0A5h
  302. .db 0x80,0x21
  303.  
  304. .org 080AB0C2h
  305. .db 0x80,0x21
  306.  
  307. .org 080AB47Ah
  308. .db 0x80,0x21
  309.  
  310. .org 080AB497h
  311. .db 0x80,0x21
  312.  
  313. .org 080AB4B4h
  314. .db 0x80,0x21
  315.  
  316. .org 080AB4D1h
  317. .db 0x80,0x21
  318.  
  319. .org 080AB91Eh
  320. .db 0x80,0x21
  321.  
  322. .org 080AB93Bh
  323. .db 0x80,0x21
  324.  
  325. .org 080AB958h
  326. .db 0x80,0x21
  327.  
  328. .org 080AAEE6h
  329. mov r0, 21h
  330. mov r1, 80h
  331.  
  332. .org 080AAF06h
  333. mov r0, 21h
  334. mov r1, 80h
  335.  
  336. ;enable secret area jack out
  337. .org 080AAD32h
  338. mov r0,0h
  339. .org 080AB1B8h
  340. mov r0,0h
  341. .org 080AB5CEh
  342. mov r0,0h
  343.  
  344. .close
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement