summaryrefslogtreecommitdiff
path: root/asm/braille_puzzles.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/braille_puzzles.s')
-rw-r--r--asm/braille_puzzles.s606
1 files changed, 606 insertions, 0 deletions
diff --git a/asm/braille_puzzles.s b/asm/braille_puzzles.s
new file mode 100644
index 000000000..f8f2683a6
--- /dev/null
+++ b/asm/braille_puzzles.s
@@ -0,0 +1,606 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start ShouldDoBrailleDigEffect
+ShouldDoBrailleDigEffect: @ 81473B8
+ push {lr}
+ ldr r0, _081473E8 @ =0x0000084f
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ bne _08147400
+ ldr r2, _081473EC @ =gSaveBlock1
+ ldrh r1, [r2, 0x4]
+ ldr r0, _081473F0 @ =0x00004718
+ cmp r1, r0
+ bne _08147400
+ ldr r1, [r2]
+ ldr r0, _081473F4 @ =0x0003000a
+ cmp r1, r0
+ beq _081473E4
+ ldr r0, _081473F8 @ =0x00030009
+ cmp r1, r0
+ beq _081473E4
+ ldr r0, _081473FC @ =0x0003000b
+ cmp r1, r0
+ bne _08147400
+_081473E4:
+ movs r0, 0x1
+ b _08147402
+ .align 2, 0
+_081473E8: .4byte 0x0000084f
+_081473EC: .4byte gSaveBlock1
+_081473F0: .4byte 0x00004718
+_081473F4: .4byte 0x0003000a
+_081473F8: .4byte 0x00030009
+_081473FC: .4byte 0x0003000b
+_08147400:
+ movs r0, 0
+_08147402:
+ pop {r1}
+ bx r1
+ thumb_func_end ShouldDoBrailleDigEffect
+
+ thumb_func_start DoBrailleDigEffect
+DoBrailleDigEffect: @ 8147408
+ push {lr}
+ ldr r2, _08147460 @ =0x0000022a
+ movs r0, 0x10
+ movs r1, 0x8
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147464 @ =0x0000022b
+ movs r0, 0x11
+ movs r1, 0x8
+ bl MapGridSetMetatileIdAt
+ movs r2, 0x8B
+ lsls r2, 2
+ movs r0, 0x12
+ movs r1, 0x8
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147468 @ =0x00000e32
+ movs r0, 0x10
+ movs r1, 0x9
+ bl MapGridSetMetatileIdAt
+ ldr r2, _0814746C @ =0x00000233
+ movs r0, 0x11
+ movs r1, 0x9
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147470 @ =0x00000e34
+ movs r0, 0x12
+ movs r1, 0x9
+ bl MapGridSetMetatileIdAt
+ bl DrawWholeMapView
+ movs r0, 0x14
+ bl PlaySE
+ ldr r0, _08147474 @ =0x0000084f
+ bl FlagSet
+ bl ScriptContext2_Disable
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08147460: .4byte 0x0000022a
+_08147464: .4byte 0x0000022b
+_08147468: .4byte 0x00000e32
+_0814746C: .4byte 0x00000233
+_08147470: .4byte 0x00000e34
+_08147474: .4byte 0x0000084f
+ thumb_func_end DoBrailleDigEffect
+
+ thumb_func_start CheckRelicanthWailord
+CheckRelicanthWailord: @ 8147478
+ push {r4,lr}
+ ldr r4, _081474B4 @ =gPlayerParty
+ adds r0, r4, 0
+ movs r1, 0x41
+ movs r2, 0
+ bl GetMonData
+ ldr r1, _081474B8 @ =0x0000017d
+ cmp r0, r1
+ bne _081474C0
+ bl CalculatePlayerPartyCount
+ ldr r0, _081474BC @ =gPlayerPartyCount
+ ldrb r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ adds r1, r4, 0
+ subs r1, 0x64
+ adds r0, r1
+ movs r1, 0x41
+ movs r2, 0
+ bl GetMonData
+ movs r1, 0x9D
+ lsls r1, 1
+ cmp r0, r1
+ bne _081474C0
+ movs r0, 0x1
+ b _081474C2
+ .align 2, 0
+_081474B4: .4byte gPlayerParty
+_081474B8: .4byte 0x0000017d
+_081474BC: .4byte gPlayerPartyCount
+_081474C0:
+ movs r0, 0
+_081474C2:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end CheckRelicanthWailord
+
+ thumb_func_start ShouldDoBrailleStrengthEffect
+ShouldDoBrailleStrengthEffect: @ 81474C8
+ push {lr}
+ movs r0, 0x85
+ lsls r0, 4
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ bne _0814750C
+ ldr r2, _081474FC @ =gSaveBlock1
+ ldrh r1, [r2, 0x4]
+ movs r0, 0xC3
+ lsls r0, 3
+ cmp r1, r0
+ bne _0814750C
+ ldr r1, [r2]
+ ldr r0, _08147500 @ =0x0017000a
+ cmp r1, r0
+ beq _081474F8
+ ldr r0, _08147504 @ =0x00170009
+ cmp r1, r0
+ beq _081474F8
+ ldr r0, _08147508 @ =0x0017000b
+ cmp r1, r0
+ bne _0814750C
+_081474F8:
+ movs r0, 0x1
+ b _0814750E
+ .align 2, 0
+_081474FC: .4byte gSaveBlock1
+_08147500: .4byte 0x0017000a
+_08147504: .4byte 0x00170009
+_08147508: .4byte 0x0017000b
+_0814750C:
+ movs r0, 0
+_0814750E:
+ pop {r1}
+ bx r1
+ thumb_func_end ShouldDoBrailleStrengthEffect
+
+ thumb_func_start DoBrailleStrengthEffect
+DoBrailleStrengthEffect: @ 8147514
+ push {lr}
+ movs r0, 0x28
+ bl FieldEffectActiveListRemove
+ ldr r2, _08147574 @ =0x0000022a
+ movs r0, 0xE
+ movs r1, 0x1A
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147578 @ =0x0000022b
+ movs r0, 0xF
+ movs r1, 0x1A
+ bl MapGridSetMetatileIdAt
+ movs r2, 0x8B
+ lsls r2, 2
+ movs r0, 0x10
+ movs r1, 0x1A
+ bl MapGridSetMetatileIdAt
+ ldr r2, _0814757C @ =0x00000e32
+ movs r0, 0xE
+ movs r1, 0x1B
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147580 @ =0x00000233
+ movs r0, 0xF
+ movs r1, 0x1B
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147584 @ =0x00000e34
+ movs r0, 0x10
+ movs r1, 0x1B
+ bl MapGridSetMetatileIdAt
+ bl DrawWholeMapView
+ movs r0, 0x14
+ bl PlaySE
+ movs r0, 0x85
+ lsls r0, 4
+ bl FlagSet
+ bl ScriptContext2_Disable
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08147574: .4byte 0x0000022a
+_08147578: .4byte 0x0000022b
+_0814757C: .4byte 0x00000e32
+_08147580: .4byte 0x00000233
+_08147584: .4byte 0x00000e34
+ thumb_func_end DoBrailleStrengthEffect
+
+ thumb_func_start ShouldDoBrailleFlyEffect
+ShouldDoBrailleFlyEffect: @ 8147588
+ push {lr}
+ ldr r0, _081475AC @ =0x00000852
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ bne _081475BC
+ ldr r2, _081475B0 @ =gSaveBlock1
+ ldrh r1, [r2, 0x4]
+ ldr r0, _081475B4 @ =0x00004418
+ cmp r1, r0
+ bne _081475BC
+ ldr r1, [r2]
+ ldr r0, _081475B8 @ =0x00190008
+ cmp r1, r0
+ bne _081475BC
+ movs r0, 0x1
+ b _081475BE
+ .align 2, 0
+_081475AC: .4byte 0x00000852
+_081475B0: .4byte gSaveBlock1
+_081475B4: .4byte 0x00004418
+_081475B8: .4byte 0x00190008
+_081475BC:
+ movs r0, 0
+_081475BE:
+ pop {r1}
+ bx r1
+ thumb_func_end ShouldDoBrailleFlyEffect
+
+ thumb_func_start DoBrailleFlyEffect
+DoBrailleFlyEffect: @ 81475C4
+ push {lr}
+ ldr r0, _081475D8 @ =gUnknown_0202FF84
+ ldr r1, _081475DC @ =gUnknown_03005CE0
+ ldrb r1, [r1]
+ str r1, [r0]
+ movs r0, 0x3C
+ bl FieldEffectStart
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081475D8: .4byte gUnknown_0202FF84
+_081475DC: .4byte gUnknown_03005CE0
+ thumb_func_end DoBrailleFlyEffect
+
+ thumb_func_start FldEff_UseFlyAncientTomb
+FldEff_UseFlyAncientTomb: @ 81475E0
+ push {lr}
+ bl oei_task_add
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08147604 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r2, _08147608 @ =UseFlyAncientTomb_Callback
+ lsrs r0, r2, 16
+ strh r0, [r1, 0x18]
+ strh r2, [r1, 0x1A]
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08147604: .4byte gTasks
+_08147608: .4byte UseFlyAncientTomb_Callback
+ thumb_func_end FldEff_UseFlyAncientTomb
+
+ thumb_func_start UseFlyAncientTomb_Callback
+UseFlyAncientTomb_Callback: @ 814760C
+ push {lr}
+ movs r0, 0x3C
+ bl FieldEffectActiveListRemove
+ bl UseFlyAncientTomb_Finish
+ pop {r0}
+ bx r0
+ thumb_func_end UseFlyAncientTomb_Callback
+
+ thumb_func_start UseFlyAncientTomb_Finish
+UseFlyAncientTomb_Finish: @ 814761C
+ push {lr}
+ ldr r2, _08147674 @ =0x0000022a
+ movs r0, 0xE
+ movs r1, 0x1A
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147678 @ =0x0000022b
+ movs r0, 0xF
+ movs r1, 0x1A
+ bl MapGridSetMetatileIdAt
+ movs r2, 0x8B
+ lsls r2, 2
+ movs r0, 0x10
+ movs r1, 0x1A
+ bl MapGridSetMetatileIdAt
+ ldr r2, _0814767C @ =0x00000e32
+ movs r0, 0xE
+ movs r1, 0x1B
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147680 @ =0x00000233
+ movs r0, 0xF
+ movs r1, 0x1B
+ bl MapGridSetMetatileIdAt
+ ldr r2, _08147684 @ =0x00000e34
+ movs r0, 0x10
+ movs r1, 0x1B
+ bl MapGridSetMetatileIdAt
+ bl DrawWholeMapView
+ movs r0, 0x14
+ bl PlaySE
+ ldr r0, _08147688 @ =0x00000852
+ bl FlagSet
+ bl ScriptContext2_Disable
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08147674: .4byte 0x0000022a
+_08147678: .4byte 0x0000022b
+_0814767C: .4byte 0x00000e32
+_08147680: .4byte 0x00000233
+_08147684: .4byte 0x00000e34
+_08147688: .4byte 0x00000852
+ thumb_func_end UseFlyAncientTomb_Finish
+
+ thumb_func_start DoBrailleWait
+DoBrailleWait: @ 814768C
+ push {lr}
+ ldr r0, _081476A8 @ =0x00000851
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ bne _081476A2
+ ldr r0, _081476AC @ =Task_BrailleWait
+ movs r1, 0x50
+ bl CreateTask
+_081476A2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081476A8: .4byte 0x00000851
+_081476AC: .4byte Task_BrailleWait
+ thumb_func_end DoBrailleWait
+
+ thumb_func_start Task_BrailleWait
+Task_BrailleWait: @ 81476B0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _081476D4 @ =gTasks + 0x8
+ adds r4, r0, r1
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bhi _0814776A
+ lsls r0, 2
+ ldr r1, _081476D8 @ =_081476DC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_081476D4: .4byte gTasks + 0x8
+_081476D8: .4byte _081476DC
+ .align 2, 0
+_081476DC:
+ .4byte _081476F0
+ .4byte _081476FE
+ .4byte _08147730
+ .4byte _08147748
+ .4byte _0814775A
+_081476F0:
+ movs r1, 0xE1
+ lsls r1, 5
+ adds r0, r1, 0
+ strh r0, [r4, 0x2]
+ movs r0, 0x1
+ strh r0, [r4]
+ b _0814776A
+_081476FE:
+ bl BrailleWait_CheckButtonPress
+ cmp r0, 0
+ beq _08147716
+ bl MenuZeroFillScreen
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x2
+ strh r0, [r4]
+ b _0814776A
+_08147716:
+ ldrh r0, [r4, 0x2]
+ subs r0, 0x1
+ strh r0, [r4, 0x2]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0814776A
+ bl MenuZeroFillScreen
+ movs r0, 0x3
+ strh r0, [r4]
+ movs r0, 0x1E
+ strh r0, [r4, 0x2]
+ b _0814776A
+_08147730:
+ bl BrailleWait_CheckButtonPress
+ cmp r0, 0
+ beq _08147748
+ bl sub_8064E2C
+ adds r0, r5, 0
+ bl DestroyTask
+ bl ScriptContext2_Disable
+ b _0814776A
+_08147748:
+ ldrh r0, [r4, 0x2]
+ subs r0, 0x1
+ strh r0, [r4, 0x2]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0814776A
+ movs r0, 0x4
+ strh r0, [r4]
+ b _0814776A
+_0814775A:
+ bl sub_8064E2C
+ ldr r0, _08147770 @ =gUnknown_0815EF19
+ bl ScriptContext1_SetupScript
+ adds r0, r5, 0
+ bl DestroyTask
+_0814776A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08147770: .4byte gUnknown_0815EF19
+ thumb_func_end Task_BrailleWait
+
+ thumb_func_start BrailleWait_CheckButtonPress
+BrailleWait_CheckButtonPress: @ 8147774
+ push {lr}
+ movs r1, 0xFF
+ ldr r0, _081477A4 @ =gSaveBlock2
+ ldrb r2, [r0, 0x13]
+ cmp r2, 0x1
+ bne _08147788
+ movs r3, 0xC0
+ lsls r3, 2
+ adds r0, r3, 0
+ orrs r1, r0
+_08147788:
+ cmp r2, 0x2
+ bne _08147794
+ movs r2, 0x80
+ lsls r2, 2
+ adds r0, r2, 0
+ orrs r1, r0
+_08147794:
+ ldr r0, _081477A8 @ =gMain
+ ldrh r0, [r0, 0x2E]
+ ands r1, r0
+ cmp r1, 0
+ bne _081477AC
+ movs r0, 0
+ b _081477AE
+ .align 2, 0
+_081477A4: .4byte gSaveBlock2
+_081477A8: .4byte gMain
+_081477AC:
+ movs r0, 0x1
+_081477AE:
+ pop {r1}
+ bx r1
+ thumb_func_end BrailleWait_CheckButtonPress
+
+ thumb_func_start DoSealedChamberShakingEffect1
+DoSealedChamberShakingEffect1: @ 81477B4
+ push {lr}
+ ldr r0, _081477E8 @ =SealedChamberShakingEffect
+ movs r1, 0x9
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _081477EC @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r0, 0
+ strh r0, [r1, 0xA]
+ strh r0, [r1, 0xC]
+ movs r0, 0x2
+ strh r0, [r1, 0x10]
+ movs r0, 0x5
+ strh r0, [r1, 0x12]
+ movs r0, 0x32
+ strh r0, [r1, 0x14]
+ movs r0, 0
+ bl SetCameraPanningCallback
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081477E8: .4byte SealedChamberShakingEffect
+_081477EC: .4byte gTasks
+ thumb_func_end DoSealedChamberShakingEffect1
+
+ thumb_func_start DoSealedChamberShakingEffect2
+DoSealedChamberShakingEffect2: @ 81477F0
+ push {lr}
+ ldr r0, _08147824 @ =SealedChamberShakingEffect
+ movs r1, 0x9
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08147828 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ movs r0, 0
+ strh r0, [r1, 0xA]
+ strh r0, [r1, 0xC]
+ movs r0, 0x3
+ strh r0, [r1, 0x10]
+ movs r0, 0x5
+ strh r0, [r1, 0x12]
+ movs r0, 0x2
+ strh r0, [r1, 0x14]
+ movs r0, 0
+ bl SetCameraPanningCallback
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08147824: .4byte SealedChamberShakingEffect
+_08147828: .4byte gTasks
+ thumb_func_end DoSealedChamberShakingEffect2
+
+ thumb_func_start SealedChamberShakingEffect
+SealedChamberShakingEffect: @ 814782C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0814788C @ =gTasks
+ adds r4, r0, r1
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ movs r2, 0x12
+ ldrsh r1, [r4, r2]
+ bl __modsi3
+ cmp r0, 0
+ bne _08147884
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x10]
+ negs r0, r0
+ strh r0, [r4, 0x10]
+ movs r0, 0x10
+ ldrsh r1, [r4, r0]
+ movs r0, 0
+ bl SetCameraPanning
+ movs r2, 0xC
+ ldrsh r1, [r4, r2]
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _08147884
+ adds r0, r5, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+ bl InstallCameraPanAheadCallback
+_08147884:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0814788C: .4byte gTasks
+ thumb_func_end SealedChamberShakingEffect
+
+ .align 2, 0 @ Don't pad with nop.