Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .thumb
- .global BreedingIVs
- .equ rand, 0x44EC8
- .equ mod, 0x1E4684
- .equ getattr, 0x3FD44
- .equ setattr, 0x4037C
- .equ Destiny_Knot, 0x5A
- /*
- Note: This routine is shorter than the one in the base game and can be pasted over the original.
- r4 = current parent (0/1)
- r5 = counter
- r6 = IV NOT to copy #1
- r7 = IV NOT to copy #2
- r8 = parent ptr (+0x8C for father)
- r9 = child ptr
- sp = for r2 setattr
- sp+4 = IV NOT to copy #3
- */
- .org 0x45AC0
- push {r4-r7, lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, sp, #0x8
- mov r9, r0
- mov r8, r1
- mov r4, #0x0
- mov r5, r4
- mov r7, r5
- str r7, [sp, #0x4]
- randomizeAll:
- bl rand
- mov r1, #0x20
- bl mod
- str r0, [sp]
- mov r0, r9
- mov r1, #0x27 @HP IV
- add r1, r1, r4
- mov r2, sp
- bl setattr
- add r4, r4, #0x1
- cmp r4, #0x6
- bne randomizeAll
- mov r4, #0x0
- checkdestinyknot:
- mov r0, #0x8C
- mul r0, r4
- add r0, r8
- mov r1, #0xC
- bl getattr
- cmp r0, #Destiny_Knot
- beq destinyknot
- add r4, #0x1
- cmp r4, #0x2
- bne checkdestinyknot
- nodestinyknot:
- mov r4, #0x0
- IVLoop:
- bl rand
- mov r1, #0x6
- bl mod
- add r0, r0, #0x1
- dupecheck:
- cmp r0, r6 @if same as IV backup 1
- beq IVLoop
- cmp r0, r7 @if same as IV backup 2
- beq IVLoop
- ldr r1, [sp, #0x4]
- cmp r0, r1 @if same as IV backup 3
- beq IVLoop
- storecheck:
- cmp r6, #0x0
- bne storecheck_2
- mov r6, r0
- b IVLoop
- storecheck_2:
- cmp r7, #0x0
- bne storecheck_3
- mov r7, r0
- b IVLoop
- storecheck_3:
- ldr r1, [sp, #0x4]
- cmp r1, #0x0
- bne NormalLoop
- str r0, [sp, #0x4]
- b IVLoop
- NormalLoop:
- str r0, [sp]
- mov r0, #0x8C
- mul r0, r4
- add r0, r8
- mov r1, #0x26
- ldr r2, [sp]
- add r1, r1, r2
- bl getattr
- ldr r2, [sp]
- str r0, [sp]
- mov r0, r9
- mov r1, #0x26
- add r1, r1, r2
- mov r2, sp
- bl setattr
- cmp r4, #0x1
- beq Normal_Next_3
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq Normal_Next_2
- mov r1, #0x0
- str r1, [sp, #0x4]
- b NormalLoop
- Normal_Next_2:
- mov r4, #0x1
- mov r0, r7
- mov r7, #0x0
- b NormalLoop
- Normal_Next_3:
- cmp r6, #0x0
- beq end
- mov r0, r6
- mov r6, #0x0
- b NormalLoop
- destinyknot:
- bl rand
- mov r1, #6
- bl mod
- add r0, r0, #0x1 @1-index
- mov r7, r0 @r7 = IV NOT to inherit
- destinyloop:
- add r5, r5, #0x1
- cmp r5, r7
- beq skipdestinyIV
- mov r0, #0x8C
- mul r0, r4
- add r0, r8
- mov r1, #0x26 @HP IV (-1)
- add r1, r1, r5
- bl getattr
- str r0, [sp]
- mov r0, r9
- mov r1, #0x26
- add r1, r1, r5
- mov r2, sp
- bl setattr
- skipdestinyIV:
- cmp r5, #0x6
- bne destinyloop
- destinynext:
- mov r0, #0x1
- eor r4, r0
- mov r0, #0x8C
- mul r0, r4
- add r0, r8
- mov r1, #0x26
- add r1, r1, r7
- bl getattr
- str r0, [sp]
- mov r0, r9
- mov r1, #0x26
- add r1, r1, r7
- mov r2, sp
- bl setattr
- end:
- add sp, sp, #0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement