summaryrefslogtreecommitdiff
path: root/asm/big_shroomish_barboach.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/big_shroomish_barboach.s')
-rw-r--r--asm/big_shroomish_barboach.s522
1 files changed, 522 insertions, 0 deletions
diff --git a/asm/big_shroomish_barboach.s b/asm/big_shroomish_barboach.s
new file mode 100644
index 000000000..c5fe1bf07
--- /dev/null
+++ b/asm/big_shroomish_barboach.s
@@ -0,0 +1,522 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80C58C0
+sub_80C58C0: @ 80C58C0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r5, r0, 0
+ movs r1, 0
+ bl GetMonData
+ lsls r0, 16
+ str r0, [sp, 0x4]
+ lsrs r0, 16
+ str r0, [sp]
+ adds r0, r5, 0
+ movs r1, 0x27
+ bl GetMonData
+ adds r7, r0, 0
+ movs r6, 0xF
+ ands r7, r6
+ adds r0, r5, 0
+ movs r1, 0x28
+ bl GetMonData
+ mov r8, r0
+ mov r1, r8
+ ands r1, r6
+ mov r8, r1
+ adds r0, r5, 0
+ movs r1, 0x29
+ bl GetMonData
+ mov r9, r0
+ mov r3, r9
+ ands r3, r6
+ mov r9, r3
+ adds r0, r5, 0
+ movs r1, 0x2A
+ bl GetMonData
+ mov r10, r0
+ ands r0, r6
+ mov r10, r0
+ adds r0, r5, 0
+ movs r1, 0x2B
+ bl GetMonData
+ adds r4, r0, 0
+ ands r4, r6
+ adds r0, r5, 0
+ movs r1, 0x2C
+ bl GetMonData
+ adds r2, r0, 0
+ ands r2, r6
+ mov r1, r8
+ mov r3, r9
+ eors r1, r3
+ mov r8, r1
+ mov r0, r8
+ muls r0, r7
+ movs r1, 0xFF
+ ldr r3, [sp]
+ ands r3, r1
+ eors r0, r3
+ eors r4, r2
+ mov r1, r10
+ muls r1, r4
+ ldr r3, [sp, 0x4]
+ lsrs r2, r3, 24
+ eors r1, r2
+ lsls r0, 8
+ adds r0, r1
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C58C0
+
+ thumb_func_start sub_80C5964
+sub_80C5964: @ 80C5964
+ push {lr}
+ lsls r0, 16
+ lsrs r2, r0, 16
+ movs r1, 0x1
+ ldr r3, _080C5980 @ =gUnknown_083D180C
+_080C596E:
+ lsls r0, r1, 3
+ adds r0, r3
+ ldrh r0, [r0, 0x4]
+ cmp r2, r0
+ bcs _080C5984
+ subs r0, r1, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ b _080C5990
+ .align 2, 0
+_080C5980: .4byte gUnknown_083D180C
+_080C5984:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0xE
+ bls _080C596E
+ adds r0, r1, 0
+_080C5990:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C5964
+
+ thumb_func_start sub_80C5994
+sub_80C5994: @ 80C5994
+ push {r4-r7,lr}
+ sub sp, 0x8
+ adds r6, r1, 0
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r6, 16
+ lsrs r6, 16
+ bl SpeciesToNationalPokedexNum
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0
+ bl sub_8090D54
+ lsls r0, 16
+ lsrs r7, r0, 16
+ adds r0, r6, 0
+ bl sub_80C5964
+ lsls r0, 24
+ ldr r1, _080C5A04 @ =gUnknown_083D180C
+ lsrs r0, 21
+ adds r0, r1
+ ldrh r1, [r0]
+ str r1, [sp]
+ movs r2, 0
+ str r2, [sp, 0x4]
+ ldrb r2, [r0, 0x2]
+ movs r3, 0
+ ldrh r4, [r0, 0x4]
+ movs r5, 0
+ adds r0, r6, 0
+ movs r1, 0
+ subs r0, r4
+ sbcs r1, r5
+ bl __udivdi3
+ ldr r2, [sp]
+ ldr r3, [sp, 0x4]
+ adds r2, r0
+ adcs r3, r1
+ str r2, [sp]
+ str r3, [sp, 0x4]
+ adds r0, r7, 0
+ movs r1, 0
+ bl __muldi3
+ movs r2, 0xA
+ movs r3, 0
+ bl __udivdi3
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080C5A04: .4byte gUnknown_083D180C
+ thumb_func_end sub_80C5994
+
+ thumb_func_start sub_80C5A08
+sub_80C5A08: @ 80C5A08
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ adds r5, r1, 0
+ ldr r1, _080C5A78 @ =gUnknown_083D188C
+ mov r0, sp
+ movs r2, 0x2
+ bl memcpy
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 1
+ adds r0, r4, 0
+ bl __floatsidf
+ cmp r4, 0
+ bge _080C5A32
+ ldr r2, _080C5A7C @ =0x41f00000
+ ldr r3, _080C5A80 @ =0x00000000
+ bl __adddf3
+_080C5A32:
+ ldr r2, _080C5A84 @ =0x40396666
+ ldr r3, _080C5A88 @ =0x66666666
+ bl __divdf3
+ bl __fixunsdfsi
+ adds r5, r0, 0
+ movs r1, 0xA
+ bl __udivsi3
+ adds r1, r0, 0
+ adds r0, r6, 0
+ movs r2, 0
+ movs r3, 0x8
+ bl ConvertIntToDecimalStringN
+ adds r6, r0, 0
+ mov r1, sp
+ bl StringAppend
+ adds r6, r0, 0
+ adds r0, r5, 0
+ movs r1, 0xA
+ bl __umodsi3
+ adds r1, r0, 0
+ adds r0, r6, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl ConvertIntToDecimalStringN
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5A78: .4byte gUnknown_083D188C
+_080C5A7C: .4byte 0x41f00000
+_080C5A80: .4byte 0x00000000
+_080C5A84: .4byte 0x40396666
+_080C5A88: .4byte 0x66666666
+ thumb_func_end sub_80C5A08
+
+ thumb_func_start sub_80C5A8C
+sub_80C5A8C: @ 80C5A8C
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r7, r1, 0
+ lsls r0, 16
+ lsrs r6, r0, 16
+ ldr r1, _080C5AA4 @ =gScriptResult
+ ldrh r0, [r1]
+ cmp r0, 0xFF
+ bne _080C5AA8
+ movs r0, 0
+ b _080C5B12
+ .align 2, 0
+_080C5AA4: .4byte gScriptResult
+_080C5AA8:
+ ldrh r1, [r1]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _080C5AD0 @ =gPlayerParty
+ adds r5, r1, r0
+ adds r0, r5, 0
+ movs r1, 0x2D
+ bl GetMonData
+ cmp r0, 0x1
+ beq _080C5ACA
+ adds r0, r5, 0
+ movs r1, 0xB
+ bl GetMonData
+ cmp r0, r6
+ beq _080C5AD4
+_080C5ACA:
+ movs r0, 0x1
+ b _080C5B12
+ .align 2, 0
+_080C5AD0: .4byte gPlayerParty
+_080C5AD4:
+ mov r4, sp
+ adds r0, r5, 0
+ bl sub_80C58C0
+ strh r0, [r4]
+ mov r0, sp
+ ldrh r1, [r0]
+ adds r0, r6, 0
+ bl sub_80C5994
+ adds r5, r0, 0
+ ldrh r1, [r7]
+ adds r0, r6, 0
+ bl sub_80C5994
+ adds r4, r0, 0
+ ldr r0, _080C5B0C @ =gStringVar2
+ adds r1, r5, 0
+ bl sub_80C5A08
+ cmp r5, r4
+ bls _080C5B10
+ mov r0, sp
+ ldrh r0, [r0]
+ strh r0, [r7]
+ movs r0, 0x3
+ b _080C5B12
+ .align 2, 0
+_080C5B0C: .4byte gStringVar2
+_080C5B10:
+ movs r0, 0x2
+_080C5B12:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C5A8C
+
+ thumb_func_start sub_80C5B1C
+sub_80C5B1C: @ 80C5B1C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ lsls r4, 16
+ lsrs r4, 16
+ ldrh r1, [r5]
+ adds r0, r4, 0
+ bl sub_80C5994
+ adds r1, r0, 0
+ ldr r0, _080C5B58 @ =gStringVar3
+ bl sub_80C5A08
+ ldr r0, _080C5B5C @ =gStringVar1
+ movs r1, 0xB
+ muls r1, r4
+ ldr r2, _080C5B60 @ =gSpeciesNames
+ adds r1, r2
+ bl StringCopy
+ ldrh r1, [r5]
+ movs r0, 0x81
+ lsls r0, 8
+ cmp r1, r0
+ bne _080C5B6C
+ ldr r0, _080C5B64 @ =gStringVar2
+ ldr r1, _080C5B68 @ =gOtherText_Marco
+ bl StringCopy
+ b _080C5B74
+ .align 2, 0
+_080C5B58: .4byte gStringVar3
+_080C5B5C: .4byte gStringVar1
+_080C5B60: .4byte gSpeciesNames
+_080C5B64: .4byte gStringVar2
+_080C5B68: .4byte gOtherText_Marco
+_080C5B6C:
+ ldr r0, _080C5B7C @ =gStringVar2
+ ldr r1, _080C5B80 @ =gSaveBlock2
+ bl StringCopy
+_080C5B74:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5B7C: .4byte gStringVar2
+_080C5B80: .4byte gSaveBlock2
+ thumb_func_end sub_80C5B1C
+
+ thumb_func_start sub_80C5B84
+sub_80C5B84: @ 80C5B84
+ push {lr}
+ ldr r0, _080C5B94 @ =0x00004047
+ movs r1, 0x81
+ lsls r1, 8
+ bl VarSet
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5B94: .4byte 0x00004047
+ thumb_func_end sub_80C5B84
+
+ thumb_func_start sub_80C5B98
+sub_80C5B98: @ 80C5B98
+ push {lr}
+ ldr r0, _080C5BB0 @ =0x00004047
+ bl GetVarPointer
+ adds r1, r0, 0
+ movs r0, 0x99
+ lsls r0, 1
+ bl sub_80C5B1C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5BB0: .4byte 0x00004047
+ thumb_func_end sub_80C5B98
+
+ thumb_func_start sub_80C5BB4
+sub_80C5BB4: @ 80C5BB4
+ push {r4,lr}
+ ldr r0, _080C5BD4 @ =0x00004047
+ bl GetVarPointer
+ adds r1, r0, 0
+ ldr r4, _080C5BD8 @ =gScriptResult
+ movs r0, 0x99
+ lsls r0, 1
+ bl sub_80C5A8C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5BD4: .4byte 0x00004047
+_080C5BD8: .4byte gScriptResult
+ thumb_func_end sub_80C5BB4
+
+ thumb_func_start sub_80C5BDC
+sub_80C5BDC: @ 80C5BDC
+ push {lr}
+ ldr r0, _080C5BEC @ =0x0000404f
+ movs r1, 0x81
+ lsls r1, 8
+ bl VarSet
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5BEC: .4byte 0x0000404f
+ thumb_func_end sub_80C5BDC
+
+ thumb_func_start sub_80C5BF0
+sub_80C5BF0: @ 80C5BF0
+ push {lr}
+ ldr r0, _080C5C04 @ =0x0000404f
+ bl GetVarPointer
+ adds r1, r0, 0
+ ldr r0, _080C5C08 @ =0x00000143
+ bl sub_80C5B1C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5C04: .4byte 0x0000404f
+_080C5C08: .4byte 0x00000143
+ thumb_func_end sub_80C5BF0
+
+ thumb_func_start sub_80C5C0C
+sub_80C5C0C: @ 80C5C0C
+ push {r4,lr}
+ ldr r0, _080C5C2C @ =0x0000404f
+ bl GetVarPointer
+ adds r1, r0, 0
+ ldr r4, _080C5C30 @ =gScriptResult
+ ldr r0, _080C5C34 @ =0x00000143
+ bl sub_80C5A8C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5C2C: .4byte 0x0000404f
+_080C5C30: .4byte gScriptResult
+_080C5C34: .4byte 0x00000143
+ thumb_func_end sub_80C5C0C
+
+ thumb_func_start sub_80C5C38
+sub_80C5C38: @ 80C5C38
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ movs r7, 0
+ add r4, sp, 0x8
+ movs r0, 0x1
+ strb r0, [r4]
+ ldr r1, _080C5CC0 @ =gUnknown_083D188E
+ mov r0, sp
+ movs r2, 0x7
+ bl memcpy
+ mov r8, r4
+ cmp r6, 0xA
+ bhi _080C5CB2
+ cmp r5, 0x40
+ bhi _080C5CB2
+ ldr r0, _080C5CC4 @ =gSaveBlock1
+ ldr r1, _080C5CC8 @ =0x00003110
+ adds r0, r1
+ adds r0, r6, r0
+ strb r5, [r0]
+ movs r5, 0
+_080C5C70:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _080C5CCC @ =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ cmp r0, 0
+ beq _080C5CA2
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl GetMonData
+ cmp r0, 0
+ bne _080C5CA2
+ mov r1, sp
+ adds r0, r1, r6
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ mov r2, r8
+ bl SetMonData
+ movs r7, 0x1
+_080C5CA2:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _080C5C70
+ cmp r7, 0
+ beq _080C5CB2
+ ldr r0, _080C5CD0 @ =0x0000083b
+ bl FlagSet
+_080C5CB2:
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5CC0: .4byte gUnknown_083D188E
+_080C5CC4: .4byte gSaveBlock1
+_080C5CC8: .4byte 0x00003110
+_080C5CCC: .4byte gPlayerParty
+_080C5CD0: .4byte 0x0000083b
+ thumb_func_end sub_80C5C38
+
+ .align 2, 0 @ Don't pad with nop.