diff options
author | YamaArashi <shadow962@live.com> | 2016-10-21 21:01:01 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-10-21 21:01:01 -0700 |
commit | d44bce863fe9b37b2a76eb6fff1d46c7ed0d0bfc (patch) | |
tree | 40c6b12707f3db80df9fdba26fb47a973d58330e | |
parent | 4f94633db0169f54019c2e2ad0a8d48b2232176f (diff) |
split out mori_debug_menu.s and trainer_see.s
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | asm/mori_debug_menu.s | 322 | ||||
-rw-r--r-- | asm/rom_807C828.s | 1423 | ||||
-rw-r--r-- | asm/trainer_see.s | 1119 | ||||
-rw-r--r-- | ld_script.txt | 2 |
5 files changed, 1444 insertions, 1424 deletions
@@ -57,7 +57,7 @@ asm/rom_806936C.o asm/clear_save_data_menu.o asm/rom_8148B8C.o \ asm/mystery_event_menu.o asm/save_failed_screen.o asm/rom_81473B8.o \ asm/berry_tag_screen.o asm/lottery_corner.o \ asm/battle_ai.o asm/trader.o asm/trainer_card.o asm/save_menu_util.o \ -asm/rom_8094928.o +asm/rom_8094928.o asm/mori_debug_menu.o asm/trainer_see.o DATA_ASM_OBJS := data/data2.o data/graphics.o data/sound_data.o \ data/event_scripts.o data/battle_anim_scripts.o \ diff --git a/asm/mori_debug_menu.s b/asm/mori_debug_menu.s new file mode 100644 index 000000000..fedafd198 --- /dev/null +++ b/asm/mori_debug_menu.s @@ -0,0 +1,322 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_8083D4C +sub_8083D4C: @ 8083D4C + push {lr} + ldr r0, _08083D60 + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08083D64 + movs r0, 0 + b _08083D6A + .align 2, 0 +_08083D60: .4byte gMain +_08083D64: + bl sub_8071C20 + movs r0, 0x1 +_08083D6A: + pop {r1} + bx r1 + thumb_func_end sub_8083D4C + + thumb_func_start MoriDebugMenu_SearchChild +MoriDebugMenu_SearchChild: @ 8083D70 + push {r4-r6,lr} + sub sp, 0x34 + ldr r0, _08083DE4 + movs r1, 0xB + bl GetMonData + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + adds r0, r4, 0 + bl sub_8041870 + adds r5, r0, 0 + lsls r5, 16 + lsrs r5, 16 + movs r6, 0xB + adds r1, r4, 0 + muls r1, r6 + ldr r4, _08083DE8 + adds r1, r4 + mov r0, sp + bl StringCopy + ldr r1, _08083DEC + mov r0, sp + bl StringAppend + adds r1, r5, 0 + muls r1, r6 + adds r1, r4 + mov r0, sp + bl StringAppend + ldr r1, _08083DF0 + mov r0, sp + bl StringAppend + bl MenuZeroFillScreen + movs r0, 0 + movs r1, 0xE + movs r2, 0x1E + movs r3, 0x13 + bl MenuDrawTextWindow + mov r0, sp + movs r1, 0x1 + movs r2, 0xF + bl MenuPrint + ldr r1, _08083DF4 + ldr r0, _08083DF8 + str r0, [r1] + movs r0, 0 + add sp, 0x34 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08083DE4: .4byte gPlayerParty +_08083DE8: .4byte gSpeciesNames +_08083DEC: .4byte gUnknown_0839B24D +_08083DF0: .4byte gUnknown_0839B255 +_08083DF4: .4byte gCallback_03004AE8 +_08083DF8: .4byte sub_8083D4C + thumb_func_end MoriDebugMenu_SearchChild + + thumb_func_start MoriDebugMenu_Egg +MoriDebugMenu_Egg: @ 8083DFC + push {lr} + ldr r0, _08083E24 + bl daycare_count_pokemon + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08083E1A + bl daycare_relationship_score_from_savegame + lsls r0, 24 + cmp r0, 0 + beq _08083E1A + bl sub_8041940 +_08083E1A: + bl sub_8071C20 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_08083E24: .4byte gSaveBlock1 + 0x2F9C + thumb_func_end MoriDebugMenu_Egg + + thumb_func_start MoriDebugMenu_MaleEgg +MoriDebugMenu_MaleEgg: @ 8083E28 + push {lr} + ldr r0, _08083E50 + bl daycare_count_pokemon + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08083E46 + bl daycare_relationship_score_from_savegame + lsls r0, 24 + cmp r0, 0 + beq _08083E46 + bl sub_8041950 +_08083E46: + bl sub_8071C20 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_08083E50: .4byte gSaveBlock1 + 0x2F9C + thumb_func_end MoriDebugMenu_MaleEgg + + thumb_func_start MoriDebugMenu_1000Steps +MoriDebugMenu_1000Steps: @ 8083E54 + push {lr} + movs r0, 0xFA + lsls r0, 2 + bl sub_8041790 + bl sub_8071C20 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end MoriDebugMenu_1000Steps + + thumb_func_start MoriDebugMenu_10000Steps +MoriDebugMenu_10000Steps: @ 8083E68 + push {lr} + ldr r0, _08083E7C + bl sub_8041790 + bl sub_8071C20 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_08083E7C: .4byte 0x00002710 + thumb_func_end MoriDebugMenu_10000Steps + + thumb_func_start MoriDebugMenu_MoveTutor +MoriDebugMenu_MoveTutor: @ 8083E80 + push {lr} + bl sub_8132670 + bl sub_8071C20 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end MoriDebugMenu_MoveTutor + + thumb_func_start MoriDebugMenu_BreedEgg +MoriDebugMenu_BreedEgg: @ 8083E90 + push {r4-r6,lr} + sub sp, 0x4 + movs r5, 0 + movs r6, 0 +_08083E98: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08083EE0 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + beq _08083EBC + mov r0, sp + strb r6, [r0] + adds r0, r4, 0 + movs r1, 0x20 + mov r2, sp + bl SetMonData +_08083EBC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08083E98 + ldr r0, _08083EE4 + ldr r1, _08083EE8 + adds r0, r1 + movs r1, 0xFD + strb r1, [r0] + bl sub_8071C20 + movs r0, 0x1 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08083EE0: .4byte gPlayerParty +_08083EE4: .4byte gSaveBlock1 +_08083EE8: .4byte 0x000030b6 + thumb_func_end MoriDebugMenu_BreedEgg + + thumb_func_start MoriDebugMenu_LongName +MoriDebugMenu_LongName: @ 8083EEC + push {lr} + ldr r0, _08083F04 + ldr r2, _08083F08 + movs r1, 0x2 + bl SetMonData + bl sub_8071C20 + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_08083F04: .4byte gPlayerParty +_08083F08: .4byte gUnknown_0839B257 + thumb_func_end MoriDebugMenu_LongName + + thumb_func_start MoriDebugMenu_PokeblockCase +MoriDebugMenu_PokeblockCase: @ 8083F0C + push {r4,lr} + movs r4, 0 +_08083F10: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_810CA6C + adds r4, 0x1 + cmp r4, 0x27 + ble _08083F10 + bl sub_8071C20 + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end MoriDebugMenu_PokeblockCase + + thumb_func_start MoriDebugMenuProcessInput +MoriDebugMenuProcessInput: @ 8083F2C + push {lr} + bl ProcessMenuInput + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x2 + negs r0, r0 + cmp r1, r0 + beq _08083F52 + adds r0, 0x1 + cmp r1, r0 + beq _08083F60 + ldr r2, _08083F58 + ldr r0, _08083F5C + lsls r1, 3 + adds r0, 0x4 + adds r1, r0 + ldr r0, [r1] + str r0, [r2] +_08083F52: + movs r0, 0 + b _08083F66 + .align 2, 0 +_08083F58: .4byte gCallback_03004AE8 +_08083F5C: .4byte gMoriDebugMenuActions +_08083F60: + bl sub_8071C20 + movs r0, 0x1 +_08083F66: + pop {r1} + bx r1 + thumb_func_end MoriDebugMenuProcessInput + + thumb_func_start InitMoriDebugMenu +InitMoriDebugMenu: @ 8083F6C + push {lr} + sub sp, 0x8 + bl MenuZeroFillScreen + movs r0, 0 + movs r1, 0 + movs r2, 0xA + movs r3, 0x13 + bl MenuDrawTextWindow + ldr r3, _08083FB0 + movs r0, 0x1 + movs r1, 0x1 + movs r2, 0x9 + bl PrintMenuItems + movs r0, 0 + str r0, [sp] + movs r0, 0x9 + str r0, [sp, 0x4] + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + movs r3, 0x9 + bl InitMenu + ldr r1, _08083FB4 + ldr r0, _08083FB8 + str r0, [r1] + movs r0, 0 + add sp, 0x8 + pop {r1} + bx r1 + .align 2, 0 +_08083FB0: .4byte gMoriDebugMenuActions +_08083FB4: .4byte gCallback_03004AE8 +_08083FB8: .4byte MoriDebugMenuProcessInput + thumb_func_end InitMoriDebugMenu + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom_807C828.s b/asm/rom_807C828.s index cedf8a16a..23ffed2a0 100644 --- a/asm/rom_807C828.s +++ b/asm/rom_807C828.s @@ -15271,1427 +15271,4 @@ _08083D44: .4byte word_3002910 _08083D48: .4byte gUnknown_0839B22C thumb_func_end unref_sub_8083CF0 - thumb_func_start sub_8083D4C -sub_8083D4C: @ 8083D4C - push {lr} - ldr r0, _08083D60 - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08083D64 - movs r0, 0 - b _08083D6A - .align 2, 0 -_08083D60: .4byte gMain -_08083D64: - bl sub_8071C20 - movs r0, 0x1 -_08083D6A: - pop {r1} - bx r1 - thumb_func_end sub_8083D4C - - thumb_func_start MoriDebugMenu_SearchChild -MoriDebugMenu_SearchChild: @ 8083D70 - push {r4-r6,lr} - sub sp, 0x34 - ldr r0, _08083DE4 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - bl sub_8041870 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - movs r6, 0xB - adds r1, r4, 0 - muls r1, r6 - ldr r4, _08083DE8 - adds r1, r4 - mov r0, sp - bl StringCopy - ldr r1, _08083DEC - mov r0, sp - bl StringAppend - adds r1, r5, 0 - muls r1, r6 - adds r1, r4 - mov r0, sp - bl StringAppend - ldr r1, _08083DF0 - mov r0, sp - bl StringAppend - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0xE - movs r2, 0x1E - movs r3, 0x13 - bl MenuDrawTextWindow - mov r0, sp - movs r1, 0x1 - movs r2, 0xF - bl MenuPrint - ldr r1, _08083DF4 - ldr r0, _08083DF8 - str r0, [r1] - movs r0, 0 - add sp, 0x34 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08083DE4: .4byte gPlayerParty -_08083DE8: .4byte gSpeciesNames -_08083DEC: .4byte gUnknown_0839B24D -_08083DF0: .4byte gUnknown_0839B255 -_08083DF4: .4byte gCallback_03004AE8 -_08083DF8: .4byte sub_8083D4C - thumb_func_end MoriDebugMenu_SearchChild - - thumb_func_start MoriDebugMenu_Egg -MoriDebugMenu_Egg: @ 8083DFC - push {lr} - ldr r0, _08083E24 - bl daycare_count_pokemon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08083E1A - bl daycare_relationship_score_from_savegame - lsls r0, 24 - cmp r0, 0 - beq _08083E1A - bl sub_8041940 -_08083E1A: - bl sub_8071C20 - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_08083E24: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end MoriDebugMenu_Egg - - thumb_func_start MoriDebugMenu_MaleEgg -MoriDebugMenu_MaleEgg: @ 8083E28 - push {lr} - ldr r0, _08083E50 - bl daycare_count_pokemon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08083E46 - bl daycare_relationship_score_from_savegame - lsls r0, 24 - cmp r0, 0 - beq _08083E46 - bl sub_8041950 -_08083E46: - bl sub_8071C20 - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_08083E50: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end MoriDebugMenu_MaleEgg - - thumb_func_start MoriDebugMenu_1000Steps -MoriDebugMenu_1000Steps: @ 8083E54 - push {lr} - movs r0, 0xFA - lsls r0, 2 - bl sub_8041790 - bl sub_8071C20 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MoriDebugMenu_1000Steps - - thumb_func_start MoriDebugMenu_10000Steps -MoriDebugMenu_10000Steps: @ 8083E68 - push {lr} - ldr r0, _08083E7C - bl sub_8041790 - bl sub_8071C20 - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_08083E7C: .4byte 0x00002710 - thumb_func_end MoriDebugMenu_10000Steps - - thumb_func_start MoriDebugMenu_MoveTutor -MoriDebugMenu_MoveTutor: @ 8083E80 - push {lr} - bl sub_8132670 - bl sub_8071C20 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end MoriDebugMenu_MoveTutor - - thumb_func_start MoriDebugMenu_BreedEgg -MoriDebugMenu_BreedEgg: @ 8083E90 - push {r4-r6,lr} - sub sp, 0x4 - movs r5, 0 - movs r6, 0 -_08083E98: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08083EE0 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08083EBC - mov r0, sp - strb r6, [r0] - adds r0, r4, 0 - movs r1, 0x20 - mov r2, sp - bl SetMonData -_08083EBC: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08083E98 - ldr r0, _08083EE4 - ldr r1, _08083EE8 - adds r0, r1 - movs r1, 0xFD - strb r1, [r0] - bl sub_8071C20 - movs r0, 0x1 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08083EE0: .4byte gPlayerParty -_08083EE4: .4byte gSaveBlock1 -_08083EE8: .4byte 0x000030b6 - thumb_func_end MoriDebugMenu_BreedEgg - - thumb_func_start MoriDebugMenu_LongName -MoriDebugMenu_LongName: @ 8083EEC - push {lr} - ldr r0, _08083F04 - ldr r2, _08083F08 - movs r1, 0x2 - bl SetMonData - bl sub_8071C20 - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_08083F04: .4byte gPlayerParty -_08083F08: .4byte gUnknown_0839B257 - thumb_func_end MoriDebugMenu_LongName - - thumb_func_start MoriDebugMenu_PokeblockCase -MoriDebugMenu_PokeblockCase: @ 8083F0C - push {r4,lr} - movs r4, 0 -_08083F10: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_810CA6C - adds r4, 0x1 - cmp r4, 0x27 - ble _08083F10 - bl sub_8071C20 - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end MoriDebugMenu_PokeblockCase - - thumb_func_start MoriDebugMenuProcessInput -MoriDebugMenuProcessInput: @ 8083F2C - push {lr} - bl ProcessMenuInput - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _08083F52 - adds r0, 0x1 - cmp r1, r0 - beq _08083F60 - ldr r2, _08083F58 - ldr r0, _08083F5C - lsls r1, 3 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] -_08083F52: - movs r0, 0 - b _08083F66 - .align 2, 0 -_08083F58: .4byte gCallback_03004AE8 -_08083F5C: .4byte gMoriDebugMenuActions -_08083F60: - bl sub_8071C20 - movs r0, 0x1 -_08083F66: - pop {r1} - bx r1 - thumb_func_end MoriDebugMenuProcessInput - - thumb_func_start InitMoriDebugMenu -InitMoriDebugMenu: @ 8083F6C - push {lr} - sub sp, 0x8 - bl MenuZeroFillScreen - movs r0, 0 - movs r1, 0 - movs r2, 0xA - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r3, _08083FB0 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x9 - bl PrintMenuItems - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x9 - bl InitMenu - ldr r1, _08083FB4 - ldr r0, _08083FB8 - str r0, [r1] - movs r0, 0 - add sp, 0x8 - pop {r1} - bx r1 - .align 2, 0 -_08083FB0: .4byte gMoriDebugMenuActions -_08083FB4: .4byte gCallback_03004AE8 -_08083FB8: .4byte MoriDebugMenuProcessInput - thumb_func_end InitMoriDebugMenu - - thumb_func_start CheckTrainers -CheckTrainers: @ 8083FBC - push {r4,r5,lr} - movs r4, 0 - ldr r5, _08083FEC -_08083FC2: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r1, r0, r5 - ldrb r0, [r1] - lsls r0, 31 - cmp r0, 0 - beq _08083FF0 - ldrb r0, [r1, 0x7] - cmp r0, 0x1 - beq _08083FDC - cmp r0, 0x3 - bne _08083FF0 -_08083FDC: - adds r0, r4, 0 - bl CheckTrainer - lsls r0, 24 - cmp r0, 0 - beq _08083FF0 - movs r0, 0x1 - b _08083FFC - .align 2, 0 -_08083FEC: .4byte gMapObjects -_08083FF0: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _08083FC2 - movs r0, 0 -_08083FFC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end CheckTrainers - - thumb_func_start CheckTrainer -CheckTrainer: @ 8084004 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r7, r4, 0 - adds r0, r4, 0 - bl GetFieldObjectScriptPointerByFieldObjectId - adds r6, r0, 0 - bl GetTrainerFlagFromScriptPointer - cmp r0, 0 - bne _08084034 - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r1, _08084038 - adds r5, r0, r1 - adds r0, r5, 0 - bl TrainerCanApproachPlayer - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0808403C -_08084034: - movs r0, 0 - b _08084052 - .align 2, 0 -_08084038: .4byte gMapObjects -_0808403C: - adds r0, r7, 0 - adds r1, r6, 0 - bl TrainerWantsBattle - subs r1, r4, 0x1 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_80842C8 - movs r0, 0x1 -_08084052: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckTrainer - - thumb_func_start TrainerCanApproachPlayer -TrainerCanApproachPlayer: @ 8084058 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r7, r0, 0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - ldrb r0, [r7, 0x7] - mov r8, r4 - cmp r0, 0x1 - bne _080840B8 - ldr r1, _080840B0 - ldrb r0, [r7, 0x18] - lsls r0, 28 - lsrs r0, 26 - subs r0, 0x4 - adds r0, r1 - ldrb r1, [r7, 0x1D] - mov r2, sp - movs r3, 0 - ldrsh r2, [r2, r3] - movs r5, 0 - ldrsh r3, [r4, r5] - ldr r4, [r0] - adds r0, r7, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r2, [r7, 0x18] - lsls r2, 28 - lsrs r2, 28 - adds r0, r7, 0 - adds r1, r6, 0 - bl CheckPathBetweenTrainerAndPlayer - lsls r0, 24 - lsrs r0, 24 - b _080840F8 - .align 2, 0 -_080840B0: .4byte gUnknown_0839B488 -_080840B4: - adds r0, r6, 0 - b _080840F8 -_080840B8: - movs r5, 0 -_080840BA: - ldr r0, _08084104 - lsls r4, r5, 2 - adds r4, r0 - ldrb r1, [r7, 0x1D] - mov r0, sp - movs r6, 0 - ldrsh r2, [r0, r6] - mov r0, r8 - movs r6, 0 - ldrsh r3, [r0, r6] - ldr r4, [r4] - adds r0, r7, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl CheckPathBetweenTrainerAndPlayer - lsls r0, 24 - cmp r0, 0 - bne _080840B4 - adds r5, r4, 0 - cmp r5, 0x3 - bls _080840BA - movs r0, 0 -_080840F8: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08084104: .4byte gUnknown_0839B488 - thumb_func_end TrainerCanApproachPlayer - - thumb_func_start IsTrainerInRangeSouth -IsTrainerInRangeSouth: @ 8084108 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r3, 16 - lsrs r5, r3, 16 - movs r1, 0x10 - ldrsh r0, [r4, r1] - lsls r2, 16 - asrs r2, 16 - cmp r0, r2 - bne _08084142 - lsls r0, r5, 16 - asrs r2, r0, 16 - ldrh r3, [r4, 0x12] - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r2, r0 - ble _08084142 - adds r1, r0, 0 - lsls r0, r6, 16 - asrs r0, 16 - adds r1, r0 - cmp r2, r1 - bgt _08084142 - subs r0, r5, r3 - lsls r0, 24 - lsrs r0, 24 - b _08084144 -_08084142: - movs r0, 0 -_08084144: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end IsTrainerInRangeSouth - - thumb_func_start IsTrainerInRangeNorth -IsTrainerInRangeNorth: @ 808414C - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r3, 16 - lsrs r5, r3, 16 - movs r1, 0x10 - ldrsh r0, [r4, r1] - lsls r2, 16 - asrs r2, 16 - cmp r0, r2 - bne _08084186 - lsls r0, r5, 16 - asrs r2, r0, 16 - ldrh r3, [r4, 0x12] - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r2, r0 - bge _08084186 - adds r1, r0, 0 - lsls r0, r6, 16 - asrs r0, 16 - subs r1, r0 - cmp r2, r1 - blt _08084186 - subs r0, r3, r5 - lsls r0, 24 - lsrs r0, 24 - b _08084188 -_08084186: - movs r0, 0 -_08084188: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end IsTrainerInRangeNorth - - thumb_func_start IsTrainerInRangeWest -IsTrainerInRangeWest: @ 8084190 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r5, r2, 16 - movs r1, 0x12 - ldrsh r0, [r4, r1] - lsls r3, 16 - asrs r3, 16 - cmp r0, r3 - bne _080841CA - lsls r0, r5, 16 - asrs r3, r0, 16 - ldrh r2, [r4, 0x10] - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - bge _080841CA - adds r1, r0, 0 - lsls r0, r6, 16 - asrs r0, 16 - subs r1, r0 - cmp r3, r1 - blt _080841CA - subs r0, r2, r5 - lsls r0, 24 - lsrs r0, 24 - b _080841CC -_080841CA: - movs r0, 0 -_080841CC: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end IsTrainerInRangeWest - - thumb_func_start IsTrainerInRangeEast -IsTrainerInRangeEast: @ 80841D4 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r5, r2, 16 - movs r1, 0x12 - ldrsh r0, [r4, r1] - lsls r3, 16 - asrs r3, 16 - cmp r0, r3 - bne _0808420E - lsls r0, r5, 16 - asrs r3, r0, 16 - ldrh r2, [r4, 0x10] - movs r1, 0x10 - ldrsh r0, [r4, r1] - cmp r3, r0 - ble _0808420E - adds r1, r0, 0 - lsls r0, r6, 16 - asrs r0, 16 - adds r1, r0 - cmp r3, r1 - bgt _0808420E - subs r0, r5, r2 - lsls r0, 24 - lsrs r0, 24 - b _08084210 -_0808420E: - movs r0, 0 -_08084210: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end IsTrainerInRangeEast - - thumb_func_start CheckPathBetweenTrainerAndPlayer -CheckPathBetweenTrainerAndPlayer: @ 8084218 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r7, r2, 24 - cmp r1, 0 - beq _080842B2 - ldrh r1, [r6, 0x10] - mov r0, sp - strh r1, [r0] - ldrh r0, [r6, 0x12] - mov r1, sp - adds r1, 0x2 - strh r0, [r1] - movs r4, 0 - mov r8, r1 - mov r5, r9 - subs r5, 0x1 - cmp r4, r5 - bgt _08084284 -_0808424C: - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - mov r3, r8 - movs r0, 0 - ldrsh r2, [r3, r0] - adds r0, r6, 0 - adds r3, r7, 0 - bl sub_8060024 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08084270 - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - bne _080842B2 -_08084270: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r7, 0 - mov r1, sp - mov r2, r8 - bl MoveCoords - cmp r4, r5 - ble _0808424C -_08084284: - ldrb r4, [r6, 0x19] - lsls r5, r4, 28 - lsrs r5, 28 - lsrs r4, 4 - movs r0, 0 - strb r0, [r6, 0x19] - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - mov r3, r8 - movs r0, 0 - ldrsh r2, [r3, r0] - adds r0, r6, 0 - adds r3, r7, 0 - bl npc_block_way - lsls r0, 24 - lsrs r1, r0, 24 - lsls r4, 4 - orrs r5, r4 - strb r5, [r6, 0x19] - cmp r1, 0x4 - beq _080842B6 -_080842B2: - movs r0, 0 - b _080842B8 -_080842B6: - mov r0, r9 -_080842B8: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckPathBetweenTrainerAndPlayer - - thumb_func_start sub_80842C8 -sub_80842C8: @ 80842C8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - ldr r0, _080842F4 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080842F8 - adds r1, r0 - lsrs r0, r5, 16 - strh r0, [r1, 0xA] - strh r5, [r1, 0xC] - strh r4, [r1, 0xE] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080842F4: .4byte sub_808433C -_080842F8: .4byte gTasks - thumb_func_end sub_80842C8 - - thumb_func_start sub_80842FC -sub_80842FC: @ 80842FC - push {r4-r6,lr} - adds r6, r0, 0 - ldr r5, _08084334 - adds r0, r5, 0 - bl FindTaskIdByFunc - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl SetTaskFuncWithFollowupFunc - ldr r1, _08084338 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x8] - adds r0, r4, 0 - bl _call_via_r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08084334: .4byte sub_808433C -_08084338: .4byte gTasks - thumb_func_end sub_80842FC - - thumb_func_start sub_808433C -sub_808433C: @ 808433C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _08084368 - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - lsls r5, r0, 16 - movs r1, 0xC - ldrsh r0, [r4, r1] - orrs r5, r0 - ldrb r0, [r5] - lsls r0, 31 - cmp r0, 0 - bne _0808436C - adds r0, r6, 0 - bl SwitchTaskToFollowupFunc - b _08084388 - .align 2, 0 -_08084368: .4byte gTasks -_0808436C: - ldr r7, _08084390 -_0808436E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r7 - ldr r3, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl _call_via_r3 - lsls r0, 24 - cmp r0, 0 - bne _0808436E -_08084388: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08084390: .4byte gUnknown_0839B498 - thumb_func_end sub_808433C - - thumb_func_start sub_8084394 -sub_8084394: @ 8084394 - movs r0, 0 - bx lr - thumb_func_end sub_8084394 - - thumb_func_start sub_8084398 -sub_8084398: @ 8084398 - push {r4,r5,lr} - adds r5, r1, 0 - adds r4, r2, 0 - ldr r1, _080843D8 - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - adds r0, r4, 0 - bl FieldObjectGetLocalIdAndMap - movs r0, 0 - bl FieldEffectStart - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080843D8: .4byte gUnknown_0202FF84 - thumb_func_end sub_8084398 - - thumb_func_start sub_80843DC -sub_80843DC: @ 80843DC - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - movs r0, 0 - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - beq _080843F2 - movs r0, 0 - b _08084414 -_080843F2: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - ldrb r0, [r5, 0x6] - subs r0, 0x39 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _08084408 - movs r0, 0x6 - strh r0, [r4, 0x8] -_08084408: - ldrb r0, [r5, 0x6] - cmp r0, 0x3F - bne _08084412 - movs r0, 0x8 - strh r0, [r4, 0x8] -_08084412: - movs r0, 0x1 -_08084414: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80843DC - - thumb_func_start sub_808441C -sub_808441C: @ 808441C - push {r4,r5,lr} - adds r5, r1, 0 - adds r4, r2, 0 - adds r0, r4, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - beq _0808443A - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _0808446E -_0808443A: - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08084460 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetGoSpeed0AnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - ldrh r0, [r5, 0xE] - subs r0, 0x1 - strh r0, [r5, 0xE] - b _0808446E -_08084460: - adds r0, r4, 0 - movs r1, 0x3E - bl FieldObjectSetSpecialAnim - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_0808446E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_808441C - - thumb_func_start sub_8084478 -sub_8084478: @ 8084478 - push {r4-r6,lr} - adds r6, r1, 0 - adds r5, r2, 0 - adds r0, r5, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - beq _08084496 - adds r0, r5, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _08084524 -_08084496: - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl npc_running_behaviour_by_direction - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl npc_set_running_behaviour_etc - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl npc_running_behaviour_by_direction - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_805C774 - adds r0, r5, 0 - bl sub_805C754 - ldr r0, _0808452C - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08084530 - adds r4, r0, r1 - adds r0, r4, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - beq _080844EE - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _08084524 -_080844EE: - bl sub_80597E8 - ldr r0, _0808452C - ldrb r0, [r0, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08084530 - adds r4, r0 - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetOppositeDirection - lsls r0, 24 - lsrs r0, 24 - bl GetFaceDirectionAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_08084524: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0808452C: .4byte gPlayerAvatar -_08084530: .4byte gMapObjects - thumb_func_end sub_8084478 - - thumb_func_start sub_8084534 -sub_8084534: @ 8084534 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08084570 - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08084574 - adds r4, r0, r1 - adds r0, r4, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - beq _08084560 - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _08084566 -_08084560: - adds r0, r5, 0 - bl SwitchTaskToFollowupFunc -_08084566: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08084570: .4byte gPlayerAvatar -_08084574: .4byte gMapObjects - thumb_func_end sub_8084534 - - thumb_func_start sub_8084578 -sub_8084578: @ 8084578 - push {r4,r5,lr} - adds r5, r1, 0 - adds r4, r2, 0 - adds r0, r4, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - beq _08084596 - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _080845A4 -_08084596: - adds r0, r4, 0 - movs r1, 0x59 - bl FieldObjectSetSpecialAnim - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_080845A4: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8084578 - - thumb_func_start sub_80845AC -sub_80845AC: @ 80845AC - push {r4,lr} - adds r4, r1, 0 - adds r0, r2, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _080845C0 - movs r0, 0x3 - strh r0, [r4, 0x8] -_080845C0: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80845AC - - thumb_func_start sub_80845C8 -sub_80845C8: @ 80845C8 - push {r4,r5,lr} - adds r5, r1, 0 - adds r4, r2, 0 - adds r0, r4, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - beq _080845E6 - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _080845F4 -_080845E6: - adds r0, r4, 0 - movs r1, 0x3E - bl FieldObjectSetSpecialAnim - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_080845F4: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80845C8 - - thumb_func_start sub_80845FC -sub_80845FC: @ 80845FC - push {r4,r5,lr} - adds r5, r1, 0 - adds r4, r2, 0 - adds r0, r4, 0 - bl FieldObjectCheckIfSpecialAnimFinishedOrInactive - lsls r0, 24 - cmp r0, 0 - beq _08084642 - ldr r2, _0808464C - movs r1, 0x10 - ldrsh r0, [r4, r1] - str r0, [r2] - movs r1, 0x12 - ldrsh r0, [r4, r1] - str r0, [r2, 0x4] - ldr r3, _08084650 - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - str r0, [r2, 0x8] - movs r0, 0x2 - str r0, [r2, 0xC] - movs r0, 0x31 - bl FieldEffectStart - strh r0, [r5, 0x10] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_08084642: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0808464C: .4byte gUnknown_0202FF84 -_08084650: .4byte gSprites - thumb_func_end sub_80845FC - - thumb_func_start sub_8084654 -sub_8084654: @ 8084654 - push {r4,r5,lr} - adds r5, r1, 0 - adds r4, r2, 0 - ldr r2, _080846C4 - movs r1, 0x10 - ldrsh r0, [r5, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x2B - ldrb r0, [r1] - cmp r0, 0x2 - bne _080846BC - ldrb r1, [r4, 0x3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x3] - ldrb r0, [r4] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x5] - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_806084C - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_080846BC: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080846C4: .4byte gSprites - thumb_func_end sub_8084654 - - thumb_func_start sub_80846C8 -sub_80846C8: @ 80846C8 - push {r4,lr} - adds r4, r1, 0 - movs r0, 0x31 - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - bne _080846DC - movs r0, 0x3 - strh r0, [r4, 0x8] -_080846DC: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80846C8 - - thumb_func_start sub_80846E4 -sub_80846E4: @ 80846E4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08084778 - adds r4, r0, r1 - adds r0, r4, 0 - adds r0, 0xA - mov r1, sp - bl LoadWordFromTwoHalfwords - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08084716 - ldr r0, [sp] - bl FieldObjectClearAnim - ldrh r0, [r4, 0x16] - adds r0, 0x1 - strh r0, [r4, 0x16] -_08084716: - ldr r1, _0808477C - movs r2, 0x8 - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r2, [sp] - ldr r3, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl _call_via_r3 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x3 - bne _08084780 - movs r0, 0x31 - bl FieldEffectActiveListContains - lsls r0, 24 - cmp r0, 0 - bne _08084780 - ldr r4, [sp] - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl npc_running_behaviour_by_direction - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl npc_set_running_behaviour_etc - ldr r4, [sp] - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl npc_running_behaviour_by_direction - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805C774 - adds r0, r5, 0 - bl DestroyTask - b _0808478A - .align 2, 0 -_08084778: .4byte gTasks -_0808477C: .4byte gUnknown_0839B4C8 -_08084780: - ldr r2, [sp] - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] -_0808478A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80846E4 - - thumb_func_start sub_8084794 -sub_8084794: @ 8084794 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080847C0 - movs r1, 0 - bl CreateTask - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080847C4 - adds r0, r1 - adds r0, 0x2 - adds r1, r4, 0 - bl StoreWordInTwoHalfwords - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080847C0: .4byte sub_80846E4 -_080847C4: .4byte gUnknown_03004B28 - thumb_func_end sub_8084794 - - thumb_func_start sub_80847C8 -sub_80847C8: @ 80847C8 - push {lr} - ldr r0, _080847D4 - bl sub_80842FC - pop {r0} - bx r0 - .align 2, 0 -_080847D4: .4byte sub_80847D8 - thumb_func_end sub_80847C8 - - thumb_func_start sub_80847D8 -sub_80847D8: @ 80847D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - bl EnableBothScriptContexts - pop {r0} - bx r0 - thumb_func_end sub_80847D8 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/trainer_see.s b/asm/trainer_see.s new file mode 100644 index 000000000..f7c7ef775 --- /dev/null +++ b/asm/trainer_see.s @@ -0,0 +1,1119 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start CheckTrainers +CheckTrainers: @ 8083FBC + push {r4,r5,lr} + movs r4, 0 + ldr r5, _08083FEC +_08083FC2: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _08083FF0 + ldrb r0, [r1, 0x7] + cmp r0, 0x1 + beq _08083FDC + cmp r0, 0x3 + bne _08083FF0 +_08083FDC: + adds r0, r4, 0 + bl CheckTrainer + lsls r0, 24 + cmp r0, 0 + beq _08083FF0 + movs r0, 0x1 + b _08083FFC + .align 2, 0 +_08083FEC: .4byte gMapObjects +_08083FF0: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08083FC2 + movs r0, 0 +_08083FFC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end CheckTrainers + + thumb_func_start CheckTrainer +CheckTrainer: @ 8084004 + push {r4-r7,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + adds r0, r4, 0 + bl GetFieldObjectScriptPointerByFieldObjectId + adds r6, r0, 0 + bl GetTrainerFlagFromScriptPointer + cmp r0, 0 + bne _08084034 + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, _08084038 + adds r5, r0, r1 + adds r0, r5, 0 + bl TrainerCanApproachPlayer + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0808403C +_08084034: + movs r0, 0 + b _08084052 + .align 2, 0 +_08084038: .4byte gMapObjects +_0808403C: + adds r0, r7, 0 + adds r1, r6, 0 + bl TrainerWantsBattle + subs r1, r4, 0x1 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_80842C8 + movs r0, 0x1 +_08084052: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CheckTrainer + + thumb_func_start TrainerCanApproachPlayer +TrainerCanApproachPlayer: @ 8084058 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + ldrb r0, [r7, 0x7] + mov r8, r4 + cmp r0, 0x1 + bne _080840B8 + ldr r1, _080840B0 + ldrb r0, [r7, 0x18] + lsls r0, 28 + lsrs r0, 26 + subs r0, 0x4 + adds r0, r1 + ldrb r1, [r7, 0x1D] + mov r2, sp + movs r3, 0 + ldrsh r2, [r2, r3] + movs r5, 0 + ldrsh r3, [r4, r5] + ldr r4, [r0] + adds r0, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r2, [r7, 0x18] + lsls r2, 28 + lsrs r2, 28 + adds r0, r7, 0 + adds r1, r6, 0 + bl CheckPathBetweenTrainerAndPlayer + lsls r0, 24 + lsrs r0, 24 + b _080840F8 + .align 2, 0 +_080840B0: .4byte gUnknown_0839B488 +_080840B4: + adds r0, r6, 0 + b _080840F8 +_080840B8: + movs r5, 0 +_080840BA: + ldr r0, _08084104 + lsls r4, r5, 2 + adds r4, r0 + ldrb r1, [r7, 0x1D] + mov r0, sp + movs r6, 0 + ldrsh r2, [r0, r6] + mov r0, r8 + movs r6, 0 + ldrsh r3, [r0, r6] + ldr r4, [r4] + adds r0, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r6, r0, 24 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r4, 0 + bl CheckPathBetweenTrainerAndPlayer + lsls r0, 24 + cmp r0, 0 + bne _080840B4 + adds r5, r4, 0 + cmp r5, 0x3 + bls _080840BA + movs r0, 0 +_080840F8: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08084104: .4byte gUnknown_0839B488 + thumb_func_end TrainerCanApproachPlayer + + thumb_func_start IsTrainerInRangeSouth +IsTrainerInRangeSouth: @ 8084108 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r3, 16 + lsrs r5, r3, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + lsls r2, 16 + asrs r2, 16 + cmp r0, r2 + bne _08084142 + lsls r0, r5, 16 + asrs r2, r0, 16 + ldrh r3, [r4, 0x12] + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r2, r0 + ble _08084142 + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + adds r1, r0 + cmp r2, r1 + bgt _08084142 + subs r0, r5, r3 + lsls r0, 24 + lsrs r0, 24 + b _08084144 +_08084142: + movs r0, 0 +_08084144: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end IsTrainerInRangeSouth + + thumb_func_start IsTrainerInRangeNorth +IsTrainerInRangeNorth: @ 808414C + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r3, 16 + lsrs r5, r3, 16 + movs r1, 0x10 + ldrsh r0, [r4, r1] + lsls r2, 16 + asrs r2, 16 + cmp r0, r2 + bne _08084186 + lsls r0, r5, 16 + asrs r2, r0, 16 + ldrh r3, [r4, 0x12] + movs r1, 0x12 + ldrsh r0, [r4, r1] + cmp r2, r0 + bge _08084186 + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + subs r1, r0 + cmp r2, r1 + blt _08084186 + subs r0, r3, r5 + lsls r0, 24 + lsrs r0, 24 + b _08084188 +_08084186: + movs r0, 0 +_08084188: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end IsTrainerInRangeNorth + + thumb_func_start IsTrainerInRangeWest +IsTrainerInRangeWest: @ 8084190 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + movs r1, 0x12 + ldrsh r0, [r4, r1] + lsls r3, 16 + asrs r3, 16 + cmp r0, r3 + bne _080841CA + lsls r0, r5, 16 + asrs r3, r0, 16 + ldrh r2, [r4, 0x10] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + bge _080841CA + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + subs r1, r0 + cmp r3, r1 + blt _080841CA + subs r0, r2, r5 + lsls r0, 24 + lsrs r0, 24 + b _080841CC +_080841CA: + movs r0, 0 +_080841CC: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end IsTrainerInRangeWest + + thumb_func_start IsTrainerInRangeEast +IsTrainerInRangeEast: @ 80841D4 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + movs r1, 0x12 + ldrsh r0, [r4, r1] + lsls r3, 16 + asrs r3, 16 + cmp r0, r3 + bne _0808420E + lsls r0, r5, 16 + asrs r3, r0, 16 + ldrh r2, [r4, 0x10] + movs r1, 0x10 + ldrsh r0, [r4, r1] + cmp r3, r0 + ble _0808420E + adds r1, r0, 0 + lsls r0, r6, 16 + asrs r0, 16 + adds r1, r0 + cmp r3, r1 + bgt _0808420E + subs r0, r5, r2 + lsls r0, 24 + lsrs r0, 24 + b _08084210 +_0808420E: + movs r0, 0 +_08084210: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end IsTrainerInRangeEast + + thumb_func_start CheckPathBetweenTrainerAndPlayer +CheckPathBetweenTrainerAndPlayer: @ 8084218 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r2, 24 + lsrs r7, r2, 24 + cmp r1, 0 + beq _080842B2 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r1, sp + adds r1, 0x2 + strh r0, [r1] + movs r4, 0 + mov r8, r1 + mov r5, r9 + subs r5, 0x1 + cmp r4, r5 + bgt _08084284 +_0808424C: + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + movs r0, 0 + ldrsh r2, [r3, r0] + adds r0, r6, 0 + adds r3, r7, 0 + bl sub_8060024 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08084270 + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + bne _080842B2 +_08084270: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r7, 0 + mov r1, sp + mov r2, r8 + bl MoveCoords + cmp r4, r5 + ble _0808424C +_08084284: + ldrb r4, [r6, 0x19] + lsls r5, r4, 28 + lsrs r5, 28 + lsrs r4, 4 + movs r0, 0 + strb r0, [r6, 0x19] + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + mov r3, r8 + movs r0, 0 + ldrsh r2, [r3, r0] + adds r0, r6, 0 + adds r3, r7, 0 + bl npc_block_way + lsls r0, 24 + lsrs r1, r0, 24 + lsls r4, 4 + orrs r5, r4 + strb r5, [r6, 0x19] + cmp r1, 0x4 + beq _080842B6 +_080842B2: + movs r0, 0 + b _080842B8 +_080842B6: + mov r0, r9 +_080842B8: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CheckPathBetweenTrainerAndPlayer + + thumb_func_start sub_80842C8 +sub_80842C8: @ 80842C8 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + ldr r0, _080842F4 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080842F8 + adds r1, r0 + lsrs r0, r5, 16 + strh r0, [r1, 0xA] + strh r5, [r1, 0xC] + strh r4, [r1, 0xE] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080842F4: .4byte sub_808433C +_080842F8: .4byte gTasks + thumb_func_end sub_80842C8 + + thumb_func_start sub_80842FC +sub_80842FC: @ 80842FC + push {r4-r6,lr} + adds r6, r0, 0 + ldr r5, _08084334 + adds r0, r5, 0 + bl FindTaskIdByFunc + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl SetTaskFuncWithFollowupFunc + ldr r1, _08084338 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + adds r0, r1 + movs r1, 0x1 + strh r1, [r0, 0x8] + adds r0, r4, 0 + bl _call_via_r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08084334: .4byte sub_808433C +_08084338: .4byte gTasks + thumb_func_end sub_80842FC + + thumb_func_start sub_808433C +sub_808433C: @ 808433C + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + ldr r1, _08084368 + adds r4, r0, r1 + movs r1, 0xA + ldrsh r0, [r4, r1] + lsls r5, r0, 16 + movs r1, 0xC + ldrsh r0, [r4, r1] + orrs r5, r0 + ldrb r0, [r5] + lsls r0, 31 + cmp r0, 0 + bne _0808436C + adds r0, r6, 0 + bl SwitchTaskToFollowupFunc + b _08084388 + .align 2, 0 +_08084368: .4byte gTasks +_0808436C: + ldr r7, _08084390 +_0808436E: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r7 + ldr r3, [r0] + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl _call_via_r3 + lsls r0, 24 + cmp r0, 0 + bne _0808436E +_08084388: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08084390: .4byte gUnknown_0839B498 + thumb_func_end sub_808433C + + thumb_func_start sub_8084394 +sub_8084394: @ 8084394 + movs r0, 0 + bx lr + thumb_func_end sub_8084394 + + thumb_func_start sub_8084398 +sub_8084398: @ 8084398 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + ldr r1, _080843D8 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl FieldObjectGetLocalIdAndMap + movs r0, 0 + bl FieldEffectStart + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080843D8: .4byte gUnknown_0202FF84 + thumb_func_end sub_8084398 + + thumb_func_start sub_80843DC +sub_80843DC: @ 80843DC + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + movs r0, 0 + bl FieldEffectActiveListContains + lsls r0, 24 + cmp r0, 0 + beq _080843F2 + movs r0, 0 + b _08084414 +_080843F2: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + ldrb r0, [r5, 0x6] + subs r0, 0x39 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08084408 + movs r0, 0x6 + strh r0, [r4, 0x8] +_08084408: + ldrb r0, [r5, 0x6] + cmp r0, 0x3F + bne _08084412 + movs r0, 0x8 + strh r0, [r4, 0x8] +_08084412: + movs r0, 0x1 +_08084414: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80843DC + + thumb_func_start sub_808441C +sub_808441C: @ 808441C + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _0808443A + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _0808446E +_0808443A: + movs r1, 0xE + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08084460 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetGoSpeed0AnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0xE] + subs r0, 0x1 + strh r0, [r5, 0xE] + b _0808446E +_08084460: + adds r0, r4, 0 + movs r1, 0x3E + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_0808446E: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808441C + + thumb_func_start sub_8084478 +sub_8084478: @ 8084478 + push {r4-r6,lr} + adds r6, r1, 0 + adds r5, r2, 0 + adds r0, r5, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _08084496 + adds r0, r5, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _08084524 +_08084496: + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl npc_running_behaviour_by_direction + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl npc_set_running_behaviour_etc + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl npc_running_behaviour_by_direction + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl sub_805C774 + adds r0, r5, 0 + bl sub_805C754 + ldr r0, _0808452C + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08084530 + adds r4, r0, r1 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080844EE + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _08084524 +_080844EE: + bl sub_80597E8 + ldr r0, _0808452C + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08084530 + adds r4, r0 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetOppositeDirection + lsls r0, 24 + lsrs r0, 24 + bl GetFaceDirectionAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_08084524: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0808452C: .4byte gPlayerAvatar +_08084530: .4byte gMapObjects + thumb_func_end sub_8084478 + + thumb_func_start sub_8084534 +sub_8084534: @ 8084534 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _08084570 + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08084574 + adds r4, r0, r1 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _08084560 + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _08084566 +_08084560: + adds r0, r5, 0 + bl SwitchTaskToFollowupFunc +_08084566: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08084570: .4byte gPlayerAvatar +_08084574: .4byte gMapObjects + thumb_func_end sub_8084534 + + thumb_func_start sub_8084578 +sub_8084578: @ 8084578 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _08084596 + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080845A4 +_08084596: + adds r0, r4, 0 + movs r1, 0x59 + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080845A4: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8084578 + + thumb_func_start sub_80845AC +sub_80845AC: @ 80845AC + push {r4,lr} + adds r4, r1, 0 + adds r0, r2, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080845C0 + movs r0, 0x3 + strh r0, [r4, 0x8] +_080845C0: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80845AC + + thumb_func_start sub_80845C8 +sub_80845C8: @ 80845C8 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080845E6 + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _080845F4 +_080845E6: + adds r0, r4, 0 + movs r1, 0x3E + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080845F4: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80845C8 + + thumb_func_start sub_80845FC +sub_80845FC: @ 80845FC + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r4, 0 + bl FieldObjectCheckIfSpecialAnimFinishedOrInactive + lsls r0, 24 + cmp r0, 0 + beq _08084642 + ldr r2, _0808464C + movs r1, 0x10 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, 0x12 + ldrsh r0, [r4, r1] + str r0, [r2, 0x4] + ldr r3, _08084650 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + str r0, [r2, 0x8] + movs r0, 0x2 + str r0, [r2, 0xC] + movs r0, 0x31 + bl FieldEffectStart + strh r0, [r5, 0x10] + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_08084642: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0808464C: .4byte gUnknown_0202FF84 +_08084650: .4byte gSprites + thumb_func_end sub_80845FC + + thumb_func_start sub_8084654 +sub_8084654: @ 8084654 + push {r4,r5,lr} + adds r5, r1, 0 + adds r4, r2, 0 + ldr r2, _080846C4 + movs r1, 0x10 + ldrsh r0, [r5, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x2B + ldrb r0, [r1] + cmp r0, 0x2 + bne _080846BC + ldrb r1, [r4, 0x3] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x3] + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x5] + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806084C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] +_080846BC: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080846C4: .4byte gSprites + thumb_func_end sub_8084654 + + thumb_func_start sub_80846C8 +sub_80846C8: @ 80846C8 + push {r4,lr} + adds r4, r1, 0 + movs r0, 0x31 + bl FieldEffectActiveListContains + lsls r0, 24 + cmp r0, 0 + bne _080846DC + movs r0, 0x3 + strh r0, [r4, 0x8] +_080846DC: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80846C8 + + thumb_func_start sub_80846E4 +sub_80846E4: @ 80846E4 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r5, r0, 0 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08084778 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0xA + mov r1, sp + bl LoadWordFromTwoHalfwords + movs r1, 0x16 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08084716 + ldr r0, [sp] + bl FieldObjectClearAnim + ldrh r0, [r4, 0x16] + adds r0, 0x1 + strh r0, [r4, 0x16] +_08084716: + ldr r1, _0808477C + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + ldr r2, [sp] + ldr r3, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl _call_via_r3 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x3 + bne _08084780 + movs r0, 0x31 + bl FieldEffectActiveListContains + lsls r0, 24 + cmp r0, 0 + bne _08084780 + ldr r4, [sp] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl npc_running_behaviour_by_direction + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl npc_set_running_behaviour_etc + ldr r4, [sp] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl npc_running_behaviour_by_direction + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805C774 + adds r0, r5, 0 + bl DestroyTask + b _0808478A + .align 2, 0 +_08084778: .4byte gTasks +_0808477C: .4byte gUnknown_0839B4C8 +_08084780: + ldr r2, [sp] + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] +_0808478A: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80846E4 + + thumb_func_start sub_8084794 +sub_8084794: @ 8084794 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _080847C0 + movs r1, 0 + bl CreateTask + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + ldr r1, _080847C4 + adds r0, r1 + adds r0, 0x2 + adds r1, r4, 0 + bl StoreWordInTwoHalfwords + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080847C0: .4byte sub_80846E4 +_080847C4: .4byte gUnknown_03004B28 + thumb_func_end sub_8084794 + + thumb_func_start sub_80847C8 +sub_80847C8: @ 80847C8 + push {lr} + ldr r0, _080847D4 + bl sub_80842FC + pop {r0} + bx r0 + .align 2, 0 +_080847D4: .4byte sub_80847D8 + thumb_func_end sub_80847C8 + + thumb_func_start sub_80847D8 +sub_80847D8: @ 80847D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl DestroyTask + bl EnableBothScriptContexts + pop {r0} + bx r0 + thumb_func_end sub_80847D8 + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 9c5b190c2..cda134bbb 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -80,6 +80,8 @@ SECTIONS { asm/rom5.o(.text); asm/title_screen.o(.text); asm/rom_807C828.o(.text); + asm/mori_debug_menu.o(.text); + asm/trainer_see.o(.text); asm/fldeff_emotion.o(.text); asm/wild_encounter.o(.text); asm/field_effect.o(.text); |