diff options
Diffstat (limited to 'asm/braille_puzzles.s')
-rw-r--r-- | asm/braille_puzzles.s | 606 |
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. |