Advertisement
Squeetz

Breeding Extras

Oct 16th, 2018
524
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 1.94 KB | None | 0 0
  1. .thumb
  2.  
  3. .global BreedingExtras
  4.  
  5. .equ rom, 0x08000001
  6. .equ offset, 0xXXXXXX
  7.  
  8. .equ Macho_Brace, 0xB5
  9.  
  10. /*
  11. r0 = child ptr
  12. r1 = mother ptr (+0x8C for father ptr)
  13. */
  14.  
  15. .org 0x46100
  16.     ldr r0, jump
  17.     bx r0
  18.    
  19. .align 2
  20.     jump:   .word main + rom
  21.    
  22.    
  23. .org offset
  24. main:
  25.     mov r0, sp
  26.     mov r1, r5
  27.     bl extras
  28. return:
  29.     ldrb r0, [r6, #0x1]
  30.     mov r2, #0x8C
  31.     mov r1, r0
  32.     mul r1, r2
  33.     ldr r0, =(0x08046108|1)
  34.     bx r0
  35.    
  36. /*
  37. r4 = child ptr
  38. r5 = parent ptr
  39. r6 = current parent (0/1)
  40. r7 = counter for copyEVs
  41. sp = (for setattr)
  42.  
  43. First, inherit the mother's ball.
  44. Will inherit father's ball if the mother is a Blobbos (Ditto).
  45. Note: This may not work, ball is probably set somewhere else.
  46.  
  47. Second, inherit the mother's ability bit.
  48. Will inherit father's ability bit if the mother is a Blobbos.
  49.  
  50. Third, if a parent is holding the Macho Brace, inherit all EVs.
  51. */
  52.    
  53. extras:
  54.     push {r4-r7, lr}
  55.     sub sp, sp, #0x4
  56.     mov r6, #0x0
  57.     mov r7, r6
  58.     mov r4, r0
  59.     mov r5, r1
  60.     mov r0, r5
  61.     mov r1, #0x26
  62.     bl getattr
  63.     str r0, [sp]
  64.     mov r0, r4
  65.     mov r1, #0x26
  66.     mov r2, sp
  67.     bl setattr
  68.    
  69. copyability:
  70.     bl rand
  71.     lsr r0, r0, #0x8
  72.     cmp r0, #204            @80% of 256
  73.     bhi checkMachoBrace
  74.     mov r0, r5
  75.     mov r1, #0x2E
  76.     bl getattr
  77.     str r0, [sp]
  78.     mov r0, r4
  79.     mov r1, #0x2E
  80.     mov r2, sp
  81.     bl setattr
  82.    
  83. checkMachoBrace:
  84.     cmp r6, #0x2
  85.     beq end
  86.     mov r0, #0x8C
  87.     mul r0, r6
  88.     add r0, r0, r5
  89.     mov r1, #0xC
  90.     bl getattr
  91.     add r6, r6, #0x1
  92.     cmp r0, #Macho_Brace
  93.     bne checkMachoBrace
  94.     sub r6, r6, #0x1
  95. copyEVs:
  96.     mov r0, #0x8C
  97.     mul r0, r6
  98.     add r0, r0, r5
  99.     mov r1, #0x1A           @HP EV
  100.     add r1, r1, r7
  101.     bl getattr
  102.     str r0, [sp]
  103.     mov r0, r4
  104.     mov r1, #0x1A
  105.     add r1, r1, r7
  106.     mov r2, sp
  107.     bl setattr
  108.     add r7, r7, #0x1
  109.     cmp r7, #0x6
  110.     bne copyEVs
  111.    
  112. end:
  113.     add sp, sp, #0x4
  114.     pop {r4-r7}
  115.     pop {r0}
  116.     bx r0
  117.    
  118. getattr:
  119.     ldr r3, =(0x0803FBE8|1)
  120.     bx r3
  121.    
  122. setattr:
  123.     ldr r3, =(0x0804037C|1)
  124.     bx r3
  125.  
  126. rand:
  127.     ldr r0, =(0x08044EC8|1)
  128.     bx r0
  129.    
  130. .align 2
  131. .pool
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement