summaryrefslogtreecommitdiff
path: root/asm/berry_fix_program.s
diff options
context:
space:
mode:
authorsceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-16 23:54:22 -0800
committersceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-16 23:54:22 -0800
commit670fef77ac4d9116d5fdc28c0da40622919a062b (patch)
tree61c0e925f059404473826ac775305ba5e2706ab1 /asm/berry_fix_program.s
first commit
Diffstat (limited to 'asm/berry_fix_program.s')
-rw-r--r--asm/berry_fix_program.s344
1 files changed, 344 insertions, 0 deletions
diff --git a/asm/berry_fix_program.s b/asm/berry_fix_program.s
new file mode 100644
index 000000000..c0bb99e39
--- /dev/null
+++ b/asm/berry_fix_program.s
@@ -0,0 +1,344 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_815F6E0
+sub_815F6E0: @ 815F6E0
+ push {r4-r6,lr}
+ movs r6, 0x80
+ lsls r6, 19
+ movs r2, 0
+ strh r2, [r6]
+ ldr r1, _0815F73C @ =0x04000010
+ strh r2, [r1]
+ adds r1, 0x2
+ strh r2, [r1]
+ adds r1, 0x3E
+ strh r2, [r1]
+ ldr r5, _0815F740 @ =gUnknown_847A890
+ lsls r4, r0, 1
+ adds r4, r0
+ lsls r4, 2
+ adds r0, r4, r5
+ ldr r0, [r0]
+ movs r1, 0xC0
+ lsls r1, 19
+ bl LZ77UnCompVram
+ adds r0, r5, 0x4
+ adds r0, r4, r0
+ ldr r0, [r0]
+ ldr r1, _0815F744 @ =0x0600f800
+ bl LZ77UnCompVram
+ adds r5, 0x8
+ adds r4, r5
+ ldr r0, [r4]
+ movs r1, 0xA0
+ lsls r1, 19
+ movs r4, 0x80
+ lsls r4, 1
+ adds r2, r4, 0
+ bl CpuSet
+ ldr r1, _0815F748 @ =0x04000008
+ movs r2, 0xF8
+ lsls r2, 5
+ adds r0, r2, 0
+ strh r0, [r1]
+ strh r4, [r6]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815F73C: .4byte 0x04000010
+_0815F740: .4byte gUnknown_847A890
+_0815F744: .4byte 0x0600f800
+_0815F748: .4byte 0x04000008
+ thumb_func_end sub_815F6E0
+
+ thumb_func_start sub_815F74C
+sub_815F74C: @ 815F74C
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r0, _0815F7C4 @ =0x0000ffff
+ bl sub_8000B94
+ movs r0, 0x1
+ bl sub_8000B68
+ bl m4aSoundVSyncOff
+ movs r0, 0
+ bl sub_80006F4
+ movs r4, 0
+ str r4, [sp]
+ ldr r0, _0815F7C8 @ =0x040000d4
+ mov r1, sp
+ str r1, [r0]
+ movs r1, 0xC0
+ lsls r1, 19
+ str r1, [r0, 0x4]
+ ldr r1, _0815F7CC @ =0x85006000
+ str r1, [r0, 0x8]
+ ldr r1, [r0, 0x8]
+ str r4, [sp]
+ mov r1, sp
+ str r1, [r0]
+ movs r1, 0xA0
+ lsls r1, 19
+ str r1, [r0, 0x4]
+ ldr r1, _0815F7D0 @ =0x85000100
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ bl sub_8006B10
+ bl sub_80773BC
+ bl sub_8087E64
+ ldr r0, _0815F7D4 @ =gUnknown_3005ECC
+ strb r4, [r0]
+ ldr r0, _0815F7D8 @ =sub_815F7F0
+ movs r1, 0
+ bl sub_807741C
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0815F7DC @ =gUnknown_3005090
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ strh r4, [r1, 0x8]
+ ldr r0, _0815F7E0 @ =sub_815F7E4
+ bl sub_8000544
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815F7C4: .4byte 0x0000ffff
+_0815F7C8: .4byte 0x040000d4
+_0815F7CC: .4byte 0x85006000
+_0815F7D0: .4byte 0x85000100
+_0815F7D4: .4byte gUnknown_3005ECC
+_0815F7D8: .4byte sub_815F7F0
+_0815F7DC: .4byte gUnknown_3005090
+_0815F7E0: .4byte sub_815F7E4
+ thumb_func_end sub_815F74C
+
+ thumb_func_start sub_815F7E4
+sub_815F7E4: @ 815F7E4
+ push {lr}
+ bl sub_8077578
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815F7E4
+
+ thumb_func_start sub_815F7F0
+sub_815F7F0: @ 815F7F0
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _0815F818 @ =gUnknown_3005098
+ adds r5, r0, r1
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ cmp r0, 0xA
+ bls _0815F80C
+ b _0815F9A6
+_0815F80C:
+ lsls r0, 2
+ ldr r1, _0815F81C @ =_0815F820
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0815F818: .4byte gUnknown_3005098
+_0815F81C: .4byte _0815F820
+ .align 2, 0
+_0815F820:
+ .4byte _0815F84C
+ .4byte _0815F856
+ .4byte _0815F874
+ .4byte _0815F9A6
+ .4byte _0815F890
+ .4byte _0815F8C8
+ .4byte _0815F934
+ .4byte _0815F96A
+ .4byte _0815F96E
+ .4byte _0815F98C
+ .4byte _0815F996
+_0815F84C:
+ movs r0, 0x5
+ bl sub_815F6E0
+ movs r0, 0x1
+ b _0815F9A4
+_0815F856:
+ ldr r0, _0815F870 @ =gUnknown_30030F0
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0815F864
+ b _0815F9A6
+_0815F864:
+ movs r0, 0
+ bl sub_815F6E0
+ movs r0, 0x2
+ b _0815F9A4
+ .align 2, 0
+_0815F870: .4byte gUnknown_30030F0
+_0815F874:
+ ldr r0, _0815F88C @ =gUnknown_30030F0
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0815F882
+ b _0815F9A6
+_0815F882:
+ movs r0, 0x1
+ bl sub_815F6E0
+ movs r0, 0x4
+ b _0815F9A4
+ .align 2, 0
+_0815F88C: .4byte gUnknown_30030F0
+_0815F890:
+ ldr r0, _0815F8B4 @ =gUnknown_3005EF0
+ ldr r1, _0815F8B8 @ =gMultiBootProgram_BerryGlitchFix_Start
+ str r1, [r0]
+ ldr r2, _0815F8BC @ =gUnknown_3005EF8
+ ldr r0, _0815F8C0 @ =gMultiBootProgram_BerryGlitchFix_End
+ subs r0, r1
+ str r0, [r2]
+ ldr r0, _0815F8C4 @ =gUnknown_3005F00
+ str r1, [r0, 0x28]
+ adds r1, r0, 0
+ adds r1, 0x4B
+ movs r4, 0
+ strb r4, [r1]
+ bl sub_800BC20
+ strh r4, [r5, 0x2]
+ movs r0, 0x5
+ b _0815F9A4
+ .align 2, 0
+_0815F8B4: .4byte gUnknown_3005EF0
+_0815F8B8: .4byte gMultiBootProgram_BerryGlitchFix_Start
+_0815F8BC: .4byte gUnknown_3005EF8
+_0815F8C0: .4byte gMultiBootProgram_BerryGlitchFix_End
+_0815F8C4: .4byte gUnknown_3005F00
+_0815F8C8:
+ ldr r0, _0815F910 @ =gUnknown_3005F00
+ ldrb r6, [r0, 0x18]
+ adds r4, r0, 0
+ cmp r6, 0
+ bne _0815F920
+ ldr r0, [r4, 0x1C]
+ ldr r1, _0815F914 @ =0x00020200
+ ands r0, r1
+ cmp r0, r1
+ bne _0815F920
+ ldrh r0, [r5, 0x2]
+ adds r0, 0x1
+ strh r0, [r5, 0x2]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xB4
+ ble _0815F924
+ movs r0, 0x2
+ bl sub_815F6E0
+ ldr r0, _0815F918 @ =gUnknown_3005EF0
+ ldr r1, [r0]
+ adds r1, 0xC0
+ ldr r0, _0815F91C @ =gUnknown_3005EF8
+ ldr r2, [r0]
+ subs r2, 0xC0
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r3, 0x4
+ bl sub_800C0BC
+ strh r6, [r5, 0x2]
+ movs r0, 0x6
+ b _0815F9A4
+ .align 2, 0
+_0815F910: .4byte gUnknown_3005F00
+_0815F914: .4byte 0x00020200
+_0815F918: .4byte gUnknown_3005EF0
+_0815F91C: .4byte gUnknown_3005EF8
+_0815F920:
+ movs r0, 0
+ strh r0, [r5, 0x2]
+_0815F924:
+ adds r0, r4, 0
+ bl sub_800BC5C
+ ldr r1, _0815F930 @ =gUnknown_3005EF4
+ str r0, [r1]
+ b _0815F9A6
+ .align 2, 0
+_0815F930: .4byte gUnknown_3005EF4
+_0815F934:
+ ldr r4, _0815F954 @ =gUnknown_3005F00
+ adds r0, r4, 0
+ bl sub_800BC5C
+ ldr r1, _0815F958 @ =gUnknown_3005EF4
+ str r0, [r1]
+ adds r0, r4, 0
+ bl sub_800C180
+ cmp r0, 0
+ beq _0815F95C
+ movs r0, 0x3
+ bl sub_815F6E0
+ movs r0, 0x7
+ b _0815F9A4
+ .align 2, 0
+_0815F954: .4byte gUnknown_3005F00
+_0815F958: .4byte gUnknown_3005EF4
+_0815F95C:
+ ldrb r1, [r4, 0x1E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _0815F9A6
+ movs r0, 0x9
+ b _0815F9A4
+_0815F96A:
+ movs r0, 0x8
+ b _0815F9A4
+_0815F96E:
+ ldr r0, _0815F988 @ =gUnknown_30030F0
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0815F9A6
+ adds r0, r2, 0
+ bl sub_8077508
+ bl sub_80008D8
+ b _0815F9A6
+ .align 2, 0
+_0815F988: .4byte gUnknown_30030F0
+_0815F98C:
+ movs r0, 0x4
+ bl sub_815F6E0
+ movs r0, 0xA
+ b _0815F9A4
+_0815F996:
+ ldr r0, _0815F9B0 @ =gUnknown_30030F0
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0815F9A6
+ movs r0, 0
+_0815F9A4:
+ strh r0, [r5]
+_0815F9A6:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815F9B0: .4byte gUnknown_30030F0
+ thumb_func_end sub_815F7F0
+
+ .align 2, 0 @ Don't pad with nop.