diff options
-rw-r--r-- | asm/code_80428A0.s | 1346 | ||||
-rw-r--r-- | asm/code_8044210.s | 1329 | ||||
-rw-r--r-- | include/dungeon_engine.h | 7 | ||||
-rwxr-xr-x | ld_script.txt | 2 | ||||
-rw-r--r-- | src/dungeon_capabilities_1.c | 3 | ||||
-rw-r--r-- | src/dungeon_engine.c | 13 |
6 files changed, 1353 insertions, 1347 deletions
diff --git a/asm/code_80428A0.s b/asm/code_80428A0.s index bb4e09e..5febc6a 100644 --- a/asm/code_80428A0.s +++ b/asm/code_80428A0.s @@ -2853,1348 +2853,4 @@ _080441E2: bx r1 thumb_func_end IsBossBattle - thumb_func_start IsFixedDungeon -IsFixedDungeon: - push {lr} - ldr r0, _08044200 - ldr r0, [r0] - ldr r1, _08044204 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x3F - bgt _08044208 - movs r0, 0 - b _0804420A - .align 2, 0 -_08044200: .4byte gDungeonGlobalData -_08044204: .4byte 0x00003a0e -_08044208: - movs r0, 0x1 -_0804420A: - pop {r1} - bx r1 - thumb_func_end IsFixedDungeon - - thumb_func_start sub_8044210 -sub_8044210: - push {lr} - ldr r0, _0804422C - ldr r0, [r0] - ldr r1, _08044230 - adds r0, r1 - ldrb r0, [r0] - subs r0, 0x4B - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x16 - bls _08044234 - movs r0, 0 - b _08044236 - .align 2, 0 -_0804422C: .4byte gDungeonGlobalData -_08044230: .4byte 0x00000644 -_08044234: - movs r0, 0x1 -_08044236: - pop {r1} - bx r1 - thumb_func_end sub_8044210 - - thumb_func_start RunDungeon -RunDungeon: - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080442C6 - bl sub_8044994 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080442C6 - adds r0, r4, 0 - bl xxx_dungeon_80442D0 - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080442C6 - cmp r4, 0 - beq _08044280 - bl sub_807E378 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080442C6 -_08044280: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080442C6 - bl sub_8044574 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080442C6 - bl sub_8044820 - bl sub_8044B28 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080442C6 - bl sub_8044AB4 - ldr r0, _080442CC - ldr r0, [r0] - movs r2, 0xCC - lsls r2, 3 - adds r1, r0, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x18 - bne _080442C6 - strh r4, [r1] -_080442C6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080442CC: .4byte gDungeonGlobalData - thumb_func_end RunDungeon - - thumb_func_start xxx_dungeon_80442D0 -xxx_dungeon_80442D0: - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - bl GetLeaderEntity - adds r5, r0, 0 - cmp r5, 0 - beq _0804431A - bl TriggerWeatherAbilities - adds r0, r5, 0 - bl GetMovementSpeed - ldr r3, _08044320 - ldr r1, _08044324 - ldr r1, [r1] - movs r2, 0xCC - lsls r2, 3 - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r1, 1 - movs r2, 0x32 - muls r0, r2 - adds r1, r0 - adds r1, r3 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0804431A - ldr r0, [r5, 0x70] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08044328 -_0804431A: - movs r0, 0 - b _0804444E - .align 2, 0 -_08044320: .4byte gSpeedTurns -_08044324: .4byte gDungeonGlobalData -_08044328: - bl GetLeaderEntity - adds r5, r0, 0 - cmp r5, 0 - beq _0804431A - movs r0, 0 - bl UseAttack - lsls r0, 24 - cmp r0, 0 - bne _0804435C - ldr r0, _08044388 - ldr r1, [r0] - ldr r2, _0804438C - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08044356 - ldr r3, _08044390 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0804435C -_08044356: - movs r0, 0xC - bl sub_803E46C -_0804435C: - ldr r0, [r5, 0x70] - adds r0, 0xF8 - movs r1, 0 - strb r1, [r0] - bl sub_8044B28 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _0804431A - ldr r0, _08044388 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xB8 - str r5, [r0] - adds r1, 0xBC - str r2, [r1] - cmp r7, 0 - beq _08044394 - movs r7, 0 - b _0804439A - .align 2, 0 -_08044388: .4byte gDungeonGlobalData -_0804438C: .4byte 0x0000066c -_08044390: .4byte 0x00000673 -_08044394: - adds r0, r5, 0 - bl TickStatusHeal -_0804439A: - bl sub_8044B28 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0804431A - adds r0, r5, 0 - bl sub_8071DA4 - ldr r6, _08044434 - ldr r1, [r6] - movs r0, 0x1 - strb r0, [r1, 0xF] - bl sub_805D8C8 - ldr r0, [r6] - strb r4, [r0, 0xF] - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _0804444C - adds r0, r5, 0 - bl sub_8072CF4 - bl sub_8086AC0 - movs r0, 0 - bl sub_8043ED0 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _0804444C - ldr r2, [r5, 0x70] - ldrh r1, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08044400 - subs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - movs r3, 0x80 - lsls r3, 7 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] -_08044400: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _0804444C - bl sub_8044454 - bl sub_8044B28 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0804444C - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xBC - ldr r1, [r0] - cmp r1, 0 - beq _08044438 - bl sub_805F02C - ldr r0, [r6] - adds r0, 0xBC - str r4, [r0] - movs r7, 0x1 - b _08044328 - .align 2, 0 -_08044434: .4byte gDungeonGlobalData -_08044438: - ldr r0, [r5, 0x70] - adds r0, 0xF8 - ldrb r0, [r0] - cmp r0, 0 - beq _0804444C - movs r3, 0xCC - lsls r3, 3 - adds r0, r2, r3 - strh r1, [r0] - b _08044328 -_0804444C: - movs r0, 0x1 -_0804444E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end xxx_dungeon_80442D0 - - thumb_func_start sub_8044454 -sub_8044454: - push {r4-r6,lr} - ldr r0, _080444E8 - ldr r1, [r0] - ldrb r0, [r1, 0xE] - cmp r0, 0 - beq _080444E2 - movs r0, 0 - strb r0, [r1, 0xE] - movs r6, 0 -_08044466: - ldr r0, _080444E8 - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _080444EC - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080444DC - ldr r5, [r4, 0x70] - ldrh r0, [r5] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080444DC - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080444E2 - adds r0, r4, 0 - bl TickStatusHeal - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080444DC - adds r0, r4, 0 - bl sub_8071DA4 - adds r0, r4, 0 - movs r1, 0 - bl DecideAction - adds r0, r4, 0 - bl sub_8072CF4 - bl sub_8086AC0 - movs r0, 0 - bl sub_8043ED0 - ldrh r0, [r5] - ldr r2, _080444F0 - adds r1, r2, 0 - ands r0, r1 - movs r2, 0x80 - lsls r2, 7 - adds r1, r2, 0 - orrs r0, r1 - strh r0, [r5] -_080444DC: - adds r6, 0x1 - cmp r6, 0x13 - ble _08044466 -_080444E2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080444E8: .4byte gDungeonGlobalData -_080444EC: .4byte 0x000135cc -_080444F0: .4byte 0x00007fff - thumb_func_end sub_8044454 - - thumb_func_start sub_80444F4 -sub_80444F4: - push {r4-r6,lr} - adds r6, r0, 0 - bl GetLeaderEntity - cmp r6, r0 - bne _08044566 - ldr r0, _0804456C - ldr r1, [r0] - ldrb r0, [r1, 0xE] - cmp r0, 0 - beq _08044566 - movs r0, 0 - strb r0, [r1, 0xE] - movs r5, 0 -_08044510: - ldr r0, _0804456C - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _08044570 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08044560 - cmp r6, r4 - beq _08044560 - ldr r0, [r4, 0x70] - ldrh r0, [r0] - movs r2, 0x80 - lsls r2, 8 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08044560 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _08044566 - adds r0, r4, 0 - movs r1, 0 - bl DecideAction - adds r0, r4, 0 - bl sub_8072CF4 - bl sub_8086AC0 - movs r0, 0 - bl sub_8043ED0 -_08044560: - adds r5, 0x1 - cmp r5, 0x13 - ble _08044510 -_08044566: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804456C: .4byte gDungeonGlobalData -_08044570: .4byte 0x000135cc - thumb_func_end sub_80444F4 - - thumb_func_start sub_8044574 -sub_8044574: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x44 - bl GetLeaderEntity - mov r10, r0 - movs r7, 0 - mov r0, sp - adds r0, 0x4 - str r0, [sp, 0x40] - ldr r1, _08044634 - mov r9, r1 -_08044592: - mov r2, r9 - ldr r0, [r2] - lsls r1, r7, 2 - ldr r3, _08044638 - adds r0, r3 - adds r0, r1 - ldr r5, [r0] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080446A4 - ldr r6, [r5, 0x70] - mov r8, r6 - ldrb r0, [r6, 0x7] - cmp r0, 0 - bne _080446A4 - bl sub_8044B28 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080446AC - mov r1, r9 - ldr r0, [r1] - adds r0, 0xB8 - str r5, [r0] - bl TriggerWeatherAbilities - movs r2, 0xA2 - lsls r2, 1 - adds r0, r6, r2 - strb r4, [r0] - adds r0, r5, 0 - bl GetMovementSpeed - mov r3, r9 - ldr r1, [r3] - movs r2, 0xCC - lsls r2, 3 - adds r1, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - lsls r1, 1 - movs r2, 0x32 - muls r0, r2 - adds r1, r0 - ldr r0, _0804463C - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080446A4 - movs r3, 0xA4 - lsls r3, 1 - adds r0, r6, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _080446A4 - ldrh r1, [r6] - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080446A4 - movs r3, 0x80 - lsls r3, 7 - adds r0, r3, 0 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08044644 - ldr r2, _08044640 - adds r0, r2, 0 - ands r0, r1 - strh r0, [r6] - b _080446A4 - .align 2, 0 -_08044634: .4byte gDungeonGlobalData -_08044638: .4byte 0x0001357c -_0804463C: .4byte gSpeedTurns -_08044640: .4byte 0x0000bfff -_08044644: - ldr r1, _08044668 - add r1, r8 - strb r0, [r1] - adds r0, r5, 0 - bl TickStatusHeal - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080446A4 - adds r0, r5, 0 - bl sub_8071DA4 - movs r4, 0 - b _0804466E - .align 2, 0 -_08044668: .4byte 0x00000145 -_0804466C: - adds r4, 0x1 -_0804466E: - cmp r4, 0x2 - bgt _080446A4 - adds r0, r5, 0 - movs r1, 0 - bl DecideAction - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080446A4 - adds r0, r5, 0 - bl sub_8072CF4 - lsls r0, 24 - cmp r0, 0 - beq _080446A4 - bl sub_8086AC0 - movs r0, 0 - bl sub_8043ED0 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _0804466C -_080446A4: - adds r7, 0x1 - cmp r7, 0x3 - bgt _080446AC - b _08044592 -_080446AC: - movs r0, 0 - mov r8, r0 -_080446B0: - adds r0, 0x1 - mov r9, r0 - add r2, sp, 0x8 - ldr r1, [sp, 0x40] - mov r0, sp - movs r7, 0x2 -_080446BC: - mov r3, r8 - str r3, [r0] - str r2, [r1] - adds r2, 0x8 - adds r1, 0x8 - adds r0, 0x8 - subs r7, 0x1 - cmp r7, 0 - bge _080446BC - str r3, [sp, 0x18] - str r3, [sp, 0x1C] - movs r7, 0 -_080446D4: - ldr r0, _08044710 - ldr r0, [r0] - lsls r1, r7, 2 - ldr r2, _08044714 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08044760 - ldr r1, [r4, 0x70] - movs r3, 0xA2 - lsls r3, 1 - adds r2, r1, r3 - ldrb r0, [r2] - cmp r0, 0 - beq _08044760 - ldrb r0, [r1, 0x7] - cmp r0, 0 - beq _08044718 - adds r3, 0x1 - adds r0, r1, r3 - mov r1, r8 - strb r1, [r0] - strb r1, [r2] - b _08044760 - .align 2, 0 -_08044710: .4byte gDungeonGlobalData -_08044714: .4byte 0x0001357c -_08044718: - mov r2, r10 - movs r3, 0x4 - ldrsh r1, [r2, r3] - movs r2, 0x4 - ldrsh r0, [r4, r2] - subs r2, r1, r0 - cmp r2, 0 - bge _0804472A - negs r2, r2 -_0804472A: - mov r3, r10 - movs r0, 0x6 - ldrsh r1, [r3, r0] - movs r3, 0x6 - ldrsh r0, [r4, r3] - subs r1, r0 - cmp r1, 0 - bge _0804473C - negs r1, r1 -_0804473C: - cmp r1, r2 - bge _08044742 - adds r1, r2, 0 -_08044742: - cmp r1, 0x2 - ble _08044748 - movs r1, 0x2 -_08044748: - add r3, sp, 0x20 - lsls r0, r7, 3 - adds r3, r0 - str r4, [r3] - add r2, sp, 0x24 - adds r2, r0 - lsls r1, 3 - ldr r0, [sp, 0x40] - adds r1, r0, r1 - ldr r0, [r1] - str r0, [r2] - str r3, [r1] -_08044760: - adds r7, 0x1 - cmp r7, 0x3 - ble _080446D4 - mov r5, sp - movs r6, 0 -_0804476A: - ldr r4, [r5] - cmp r4, 0 - beq _080447A0 - ldr r1, [r4, 0x70] - ldr r3, _08044814 - adds r2, r1, r3 - movs r0, 0x1 - strb r0, [r2] - movs r2, 0xA2 - lsls r2, 1 - adds r0, r1, r2 - strb r6, [r0] - adds r0, r4, 0 - movs r1, 0x1 - bl DecideAction - adds r0, r4, 0 - bl sub_8072CF4 - bl sub_8086AC0 - movs r0, 0 - bl sub_8043ED0 - adds r0, r4, 0 - bl EntityExists -_080447A0: - ldr r5, [r5, 0x4] - cmp r5, 0 - bne _0804476A - mov r0, r9 - cmp r0, 0x2 - ble _080446B0 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _08044802 - movs r7, 0 -_080447B8: - ldr r0, _08044818 - ldr r0, [r0] - lsls r1, r7, 2 - ldr r3, _0804481C - adds r0, r3 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080447FC - ldr r0, [r4, 0x70] - movs r1, 0xA2 - lsls r1, 1 - adds r5, r0, r1 - ldrb r0, [r5] - cmp r0, 0 - beq _080447FC - adds r0, r4, 0 - bl sub_8074094 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080447FC - adds r0, r4, 0 - bl sub_8071DA4 - movs r0, 0 - strb r0, [r5] -_080447FC: - adds r7, 0x1 - cmp r7, 0x3 - ble _080447B8 -_08044802: - add sp, 0x44 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08044814: .4byte 0x00000145 -_08044818: .4byte gDungeonGlobalData -_0804481C: .4byte 0x0001357c - thumb_func_end sub_8044574 - - thumb_func_start sub_8044820 -sub_8044820: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r7, 0 - ldr r0, _08044830 - mov r8, r0 - b _080448FC - .align 2, 0 -_08044830: .4byte gSpeedTurns -_08044834: - ldr r4, [r5, 0x70] - ldr r0, [r6] - adds r0, 0xB8 - str r5, [r0] - bl TriggerWeatherAbilities - ldrh r2, [r4] - movs r1, 0x80 - lsls r1, 8 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - bne _080448FA - movs r1, 0x80 - lsls r1, 7 - adds r0, r1, 0 - ands r0, r2 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _0804486C - ldr r1, _08044868 - adds r0, r1, 0 - ands r0, r2 - strh r0, [r4] - b _080448FA - .align 2, 0 -_08044868: .4byte 0x0000bfff -_0804486C: - movs r2, 0xA2 - lsls r2, 1 - adds r0, r4, r2 - strb r1, [r0] - adds r0, r5, 0 - bl GetMovementSpeed - ldr r1, [r6] - movs r2, 0xCC - lsls r2, 3 - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r1, 1 - movs r2, 0x32 - muls r0, r2 - adds r1, r0 - add r1, r8 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080448FA - movs r1, 0xA4 - lsls r1, 1 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080448FA - ldrh r1, [r4] - ldr r2, _08044984 - adds r0, r2, 0 - ands r1, r0 - movs r0, 0 - strh r1, [r4] - ldr r2, _08044988 - adds r1, r4, r2 - strb r0, [r1] - adds r0, r5, 0 - bl TickStatusHeal - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080448FA - adds r0, r5, 0 - bl sub_8071DA4 - adds r0, r5, 0 - movs r1, 0 - bl DecideAction - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _08044924 - adds r0, r5, 0 - bl sub_8072CF4 - bl sub_8086AC0 - movs r0, 0 - bl sub_8043ED0 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _08044924 -_080448FA: - adds r7, 0x1 -_080448FC: - cmp r7, 0xF - bgt _08044924 - ldr r6, _0804498C - ldr r0, [r6] - lsls r1, r7, 2 - ldr r2, _08044990 - adds r0, r2 - adds r0, r1 - ldr r5, [r0] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080448FA - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _08044834 -_08044924: - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _0804497A - movs r7, 0 -_08044930: - ldr r0, _0804498C - ldr r0, [r0] - lsls r1, r7, 2 - ldr r2, _08044990 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08044974 - ldr r0, [r4, 0x70] - movs r1, 0xA2 - lsls r1, 1 - adds r5, r0, r1 - ldrb r0, [r5] - cmp r0, 0 - beq _08044974 - adds r0, r4, 0 - bl sub_8074094 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08044974 - adds r0, r4, 0 - bl sub_8071DA4 - movs r0, 0 - strb r0, [r5] -_08044974: - adds r7, 0x1 - cmp r7, 0xF - ble _08044930 -_0804497A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08044984: .4byte 0x00003fff -_08044988: .4byte 0x00000145 -_0804498C: .4byte gDungeonGlobalData -_08044990: .4byte 0x0001358c - thumb_func_end sub_8044820 - - thumb_func_start sub_8044994 -sub_8044994: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _08044A94 - ldr r4, _08044A98 - ldr r0, [r4] - movs r2, 0xCC - lsls r2, 3 - adds r0, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r0, 1 - adds r1, 0x32 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08044A8A - bl sub_8071B48 - ldr r0, [r4] - ldr r2, _08044A9C - adds r0, r2 - movs r2, 0 - strb r2, [r0] - ldr r0, [r4] - ldr r3, _08044AA0 - adds r0, r3 - strb r2, [r0] - ldr r0, [r4] - ldr r1, _08044AA4 - adds r0, r1 - strb r2, [r0] - ldr r0, [r4] - adds r3, 0x2 - adds r0, r3 - strb r2, [r0] - ldr r0, [r4] - ldr r3, _08044AA8 - adds r1, r0, r3 - str r2, [r1] - ldr r1, _08044AAC - adds r0, r1 - movs r1, 0x2 - str r1, [r0] - mov r8, r2 - adds r7, r4, 0 -_080449F2: - ldr r0, [r7] - mov r2, r8 - lsls r1, r2, 2 - ldr r3, _08044AB0 - adds r0, r3 - adds r0, r1 - ldr r5, [r0] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08044A7A - ldr r0, [r5, 0x70] - adds r4, r0, 0 - movs r0, 0xA4 - lsls r0, 1 - adds r1, r4, r0 - movs r0, 0 - strb r0, [r1] - ldrb r0, [r4, 0x6] - movs r6, 0x1 - cmp r0, 0 - beq _08044A24 - movs r6, 0 -_08044A24: - adds r0, r5, 0 - movs r1, 0x32 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08044A46 - ldr r1, [r7] - ldr r2, _08044AA8 - adds r0, r1, r2 - str r5, [r0] - ldr r3, _08044AAC - adds r1, r3 - adds r0, r4, 0 - adds r0, 0x98 - ldr r0, [r0] - str r0, [r1] -_08044A46: - adds r0, r5, 0 - movs r1, 0x3F - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08044A60 - ldr r0, [r7] - ldr r1, _08044AA4 - adds r0, r1 - adds r0, r6 - movs r1, 0x1 - strb r1, [r0] -_08044A60: - adds r0, r5, 0 - movs r1, 0x38 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08044A7A - ldr r0, [r7] - ldr r2, _08044A9C - adds r0, r2 - adds r0, r6 - movs r1, 0x1 - strb r1, [r0] -_08044A7A: - movs r3, 0x1 - add r8, r3 - mov r0, r8 - cmp r0, 0x13 - ble _080449F2 - movs r0, 0 - bl sub_8043ED0 -_08044A8A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08044A94: .4byte gSpeedTurns -_08044A98: .4byte gDungeonGlobalData -_08044A9C: .4byte 0x000037f8 -_08044AA0: .4byte 0x000037f9 -_08044AA4: .4byte 0x000037fa -_08044AA8: .4byte 0x00017b2c -_08044AAC: .4byte 0x00017b38 -_08044AB0: .4byte 0x000135cc - thumb_func_end sub_8044994 - - thumb_func_start sub_8044AB4 -sub_8044AB4: - push {r4,lr} - ldr r1, _08044ADC - ldr r0, _08044AE0 - ldr r0, [r0] - movs r2, 0xCC - lsls r2, 3 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r0, 0x1 - lsls r0, 1 - adds r1, 0x32 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08044B1A - movs r4, 0 - b _08044AE6 - .align 2, 0 -_08044ADC: .4byte gSpeedTurns -_08044AE0: .4byte gDungeonGlobalData -_08044AE4: - adds r4, 0x1 -_08044AE6: - cmp r4, 0x13 - bgt _08044B08 - ldr r0, _08044B20 - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _08044B24 - adds r0, r2 - adds r0, r1 - ldr r0, [r0] - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08044AE4 - movs r0, 0 - bl UseAttack -_08044B08: - movs r0, 0x1 - movs r1, 0 - bl sub_807EAA0 - bl sub_8086AC0 - movs r0, 0 - bl sub_8043ED0 -_08044B1A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08044B20: .4byte gDungeonGlobalData -_08044B24: .4byte 0x000135cc - thumb_func_end sub_8044AB4 - - thumb_func_start sub_8044B28 -sub_8044B28: - push {r4,lr} - ldr r4, _08044B48 - ldr r0, [r4] - ldrb r0, [r0, 0x4] - cmp r0, 0 - bne _08044B76 - bl GetLeaderEntity - cmp r0, 0 - bne _08044B50 - ldr r0, [r4] - ldr r1, _08044B4C - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - b _08044B76 - .align 2, 0 -_08044B48: .4byte gDungeonGlobalData -_08044B4C: .4byte 0x00000654 -_08044B50: - ldr r0, [r4] - ldrb r2, [r0, 0x2] - cmp r2, 0x1 - bne _08044B68 - ldr r2, _08044B64 - adds r1, r0, r2 - movs r0, 0x2 - strb r0, [r1] - b _08044B76 - .align 2, 0 -_08044B64: .4byte 0x00000654 -_08044B68: - cmp r2, 0x2 - beq _08044B70 - movs r0, 0 - b _08044B78 -_08044B70: - ldr r1, _08044B80 - adds r0, r1 - strb r2, [r0] -_08044B76: - movs r0, 0x1 -_08044B78: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08044B80: .4byte 0x00000654 - thumb_func_end sub_8044B28 - - thumb_func_start sub_8044B84 -sub_8044B84: - push {lr} - ldr r0, _08044B9C - ldr r0, [r0] - ldrb r0, [r0, 0x10] - cmp r0, 0 - bne _08044BA0 - bl sub_8044B28 - lsls r0, 24 - lsrs r0, 24 - b _08044BA2 - .align 2, 0 -_08044B9C: .4byte gDungeonGlobalData -_08044BA0: - movs r0, 0x1 -_08044BA2: - pop {r1} - bx r1 - thumb_func_end sub_8044B84 - - thumb_func_start sub_8044BA8 -sub_8044BA8: - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r4, 0x26 - bne _08044BCC - bl sub_8043D10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08044BCC - ldr r0, _08044BC8 - b _08044C02 - .align 2, 0 -_08044BC8: .4byte gUnknown_80F91EC -_08044BCC: - ldr r1, _08044BEC - lsls r0, r4, 3 - adds r4, r0, r1 - ldr r0, [r4] - ldr r1, _08044BF0 - bl strcmp - cmp r0, 0 - beq _08044BE0 - movs r0, 0x1 -_08044BE0: - lsls r0, 24 - cmp r0, 0 - beq _08044BF4 - ldr r0, [r4] - b _08044C04 - .align 2, 0 -_08044BEC: .4byte gUnknown_80F7C50 -_08044BF0: .4byte gUnknown_80F697C -_08044BF4: - ldr r4, _08044C0C - adds r0, r5, 0 - bl GetItemCategory - lsls r0, 3 - adds r4, 0x4 - adds r0, r4 -_08044C02: - ldr r0, [r0] -_08044C04: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08044C0C: .4byte gActions - thumb_func_end sub_8044BA8 - - thumb_func_start sub_8044C10 -sub_8044C10: - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8083654 - adds r2, r0, 0 - adds r1, r2, 0 - adds r1, 0x44 - movs r3, 0 - movs r0, 0 - strh r0, [r1] - cmp r4, 0 - beq _08044C44 - adds r0, r2, 0 - adds r0, 0x48 - strb r3, [r0] - adds r0, 0x8 - strb r3, [r0] - adds r1, 0x14 - ldr r0, _08044C4C - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x1 - negs r0, r0 - strh r0, [r1] -_08044C44: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08044C4C: .4byte 0x0000ffff - thumb_func_end sub_8044C10 - - thumb_func_start sub_8044C50 -sub_8044C50: - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl sub_8083654 - adds r2, r0, 0 - adds r0, 0x44 - movs r1, 0 - strh r4, [r0] - adds r0, 0x4 - strb r1, [r0] - adds r0, 0x8 - strb r1, [r0] - adds r1, r2, 0 - adds r1, 0x58 - ldr r0, _08044C84 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x1 - negs r0, r0 - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08044C84: .4byte 0x0000ffff - thumb_func_end sub_8044C50 - - thumb_func_start ResetAction -ResetAction: - movs r2, 0 - movs r1, 0 - strh r1, [r0] - strb r2, [r0, 0x4] - strb r2, [r0, 0xC] - bx lr - thumb_func_end ResetAction - - .align 2, 0 + .align 2, 0
\ No newline at end of file diff --git a/asm/code_8044210.s b/asm/code_8044210.s new file mode 100644 index 0000000..282af3b --- /dev/null +++ b/asm/code_8044210.s @@ -0,0 +1,1329 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8044210 +sub_8044210: + push {lr} + ldr r0, _0804422C + ldr r0, [r0] + ldr r1, _08044230 + adds r0, r1 + ldrb r0, [r0] + subs r0, 0x4B + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x16 + bls _08044234 + movs r0, 0 + b _08044236 + .align 2, 0 +_0804422C: .4byte gDungeonGlobalData +_08044230: .4byte 0x00000644 +_08044234: + movs r0, 0x1 +_08044236: + pop {r1} + bx r1 + thumb_func_end sub_8044210 + + thumb_func_start RunDungeon +RunDungeon: + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080442C6 + bl sub_8044994 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080442C6 + adds r0, r4, 0 + bl xxx_dungeon_80442D0 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080442C6 + cmp r4, 0 + beq _08044280 + bl sub_807E378 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080442C6 +_08044280: + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080442C6 + bl sub_8044574 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080442C6 + bl sub_8044820 + bl sub_8044B28 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080442C6 + bl sub_8044AB4 + ldr r0, _080442CC + ldr r0, [r0] + movs r2, 0xCC + lsls r2, 3 + adds r1, r0, r2 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x18 + bne _080442C6 + strh r4, [r1] +_080442C6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080442CC: .4byte gDungeonGlobalData + thumb_func_end RunDungeon + + thumb_func_start xxx_dungeon_80442D0 +xxx_dungeon_80442D0: + push {r4-r7,lr} + lsls r0, 24 + lsrs r7, r0, 24 + bl GetLeaderEntity + adds r5, r0, 0 + cmp r5, 0 + beq _0804431A + bl TriggerWeatherAbilities + adds r0, r5, 0 + bl GetMovementSpeed + ldr r3, _08044320 + ldr r1, _08044324 + ldr r1, [r1] + movs r2, 0xCC + lsls r2, 3 + adds r1, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + lsls r1, 1 + movs r2, 0x32 + muls r0, r2 + adds r1, r0 + adds r1, r3 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _0804431A + ldr r0, [r5, 0x70] + movs r1, 0xA4 + lsls r1, 1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08044328 +_0804431A: + movs r0, 0 + b _0804444E + .align 2, 0 +_08044320: .4byte gSpeedTurns +_08044324: .4byte gDungeonGlobalData +_08044328: + bl GetLeaderEntity + adds r5, r0, 0 + cmp r5, 0 + beq _0804431A + movs r0, 0 + bl UseAttack + lsls r0, 24 + cmp r0, 0 + bne _0804435C + ldr r0, _08044388 + ldr r1, [r0] + ldr r2, _0804438C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08044356 + ldr r3, _08044390 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0804435C +_08044356: + movs r0, 0xC + bl sub_803E46C +_0804435C: + ldr r0, [r5, 0x70] + adds r0, 0xF8 + movs r1, 0 + strb r1, [r0] + bl sub_8044B28 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + bne _0804431A + ldr r0, _08044388 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xB8 + str r5, [r0] + adds r1, 0xBC + str r2, [r1] + cmp r7, 0 + beq _08044394 + movs r7, 0 + b _0804439A + .align 2, 0 +_08044388: .4byte gDungeonGlobalData +_0804438C: .4byte 0x0000066c +_08044390: .4byte 0x00000673 +_08044394: + adds r0, r5, 0 + bl TickStatusHeal +_0804439A: + bl sub_8044B28 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0804431A + adds r0, r5, 0 + bl sub_8071DA4 + ldr r6, _08044434 + ldr r1, [r6] + movs r0, 0x1 + strb r0, [r1, 0xF] + bl sub_805D8C8 + ldr r0, [r6] + strb r4, [r0, 0xF] + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _0804444C + adds r0, r5, 0 + bl sub_8072CF4 + bl sub_8086AC0 + movs r0, 0 + bl sub_8043ED0 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _0804444C + ldr r2, [r5, 0x70] + ldrh r1, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08044400 + subs r3, 0x1 + adds r0, r3, 0 + ands r0, r1 + movs r3, 0x80 + lsls r3, 7 + adds r1, r3, 0 + orrs r0, r1 + strh r0, [r2] +_08044400: + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _0804444C + bl sub_8044454 + bl sub_8044B28 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _0804444C + ldr r2, [r6] + adds r0, r2, 0 + adds r0, 0xBC + ldr r1, [r0] + cmp r1, 0 + beq _08044438 + bl sub_805F02C + ldr r0, [r6] + adds r0, 0xBC + str r4, [r0] + movs r7, 0x1 + b _08044328 + .align 2, 0 +_08044434: .4byte gDungeonGlobalData +_08044438: + ldr r0, [r5, 0x70] + adds r0, 0xF8 + ldrb r0, [r0] + cmp r0, 0 + beq _0804444C + movs r3, 0xCC + lsls r3, 3 + adds r0, r2, r3 + strh r1, [r0] + b _08044328 +_0804444C: + movs r0, 0x1 +_0804444E: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end xxx_dungeon_80442D0 + + thumb_func_start sub_8044454 +sub_8044454: + push {r4-r6,lr} + ldr r0, _080444E8 + ldr r1, [r0] + ldrb r0, [r1, 0xE] + cmp r0, 0 + beq _080444E2 + movs r0, 0 + strb r0, [r1, 0xE] + movs r6, 0 +_08044466: + ldr r0, _080444E8 + ldr r0, [r0] + lsls r1, r6, 2 + ldr r2, _080444EC + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080444DC + ldr r5, [r4, 0x70] + ldrh r0, [r5] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _080444DC + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080444E2 + adds r0, r4, 0 + bl TickStatusHeal + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080444DC + adds r0, r4, 0 + bl sub_8071DA4 + adds r0, r4, 0 + movs r1, 0 + bl DecideAction + adds r0, r4, 0 + bl sub_8072CF4 + bl sub_8086AC0 + movs r0, 0 + bl sub_8043ED0 + ldrh r0, [r5] + ldr r2, _080444F0 + adds r1, r2, 0 + ands r0, r1 + movs r2, 0x80 + lsls r2, 7 + adds r1, r2, 0 + orrs r0, r1 + strh r0, [r5] +_080444DC: + adds r6, 0x1 + cmp r6, 0x13 + ble _08044466 +_080444E2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080444E8: .4byte gDungeonGlobalData +_080444EC: .4byte 0x000135cc +_080444F0: .4byte 0x00007fff + thumb_func_end sub_8044454 + + thumb_func_start sub_80444F4 +sub_80444F4: + push {r4-r6,lr} + adds r6, r0, 0 + bl GetLeaderEntity + cmp r6, r0 + bne _08044566 + ldr r0, _0804456C + ldr r1, [r0] + ldrb r0, [r1, 0xE] + cmp r0, 0 + beq _08044566 + movs r0, 0 + strb r0, [r1, 0xE] + movs r5, 0 +_08044510: + ldr r0, _0804456C + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _08044570 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08044560 + cmp r6, r4 + beq _08044560 + ldr r0, [r4, 0x70] + ldrh r0, [r0] + movs r2, 0x80 + lsls r2, 8 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _08044560 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _08044566 + adds r0, r4, 0 + movs r1, 0 + bl DecideAction + adds r0, r4, 0 + bl sub_8072CF4 + bl sub_8086AC0 + movs r0, 0 + bl sub_8043ED0 +_08044560: + adds r5, 0x1 + cmp r5, 0x13 + ble _08044510 +_08044566: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0804456C: .4byte gDungeonGlobalData +_08044570: .4byte 0x000135cc + thumb_func_end sub_80444F4 + + thumb_func_start sub_8044574 +sub_8044574: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x44 + bl GetLeaderEntity + mov r10, r0 + movs r7, 0 + mov r0, sp + adds r0, 0x4 + str r0, [sp, 0x40] + ldr r1, _08044634 + mov r9, r1 +_08044592: + mov r2, r9 + ldr r0, [r2] + lsls r1, r7, 2 + ldr r3, _08044638 + adds r0, r3 + adds r0, r1 + ldr r5, [r0] + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080446A4 + ldr r6, [r5, 0x70] + mov r8, r6 + ldrb r0, [r6, 0x7] + cmp r0, 0 + bne _080446A4 + bl sub_8044B28 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _080446AC + mov r1, r9 + ldr r0, [r1] + adds r0, 0xB8 + str r5, [r0] + bl TriggerWeatherAbilities + movs r2, 0xA2 + lsls r2, 1 + adds r0, r6, r2 + strb r4, [r0] + adds r0, r5, 0 + bl GetMovementSpeed + mov r3, r9 + ldr r1, [r3] + movs r2, 0xCC + lsls r2, 3 + adds r1, r2 + movs r3, 0 + ldrsh r1, [r1, r3] + lsls r1, 1 + movs r2, 0x32 + muls r0, r2 + adds r1, r0 + ldr r0, _0804463C + adds r1, r0 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080446A4 + movs r3, 0xA4 + lsls r3, 1 + adds r0, r6, r3 + ldrb r0, [r0] + cmp r0, 0 + bne _080446A4 + ldrh r1, [r6] + movs r2, 0x80 + lsls r2, 8 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _080446A4 + movs r3, 0x80 + lsls r3, 7 + adds r0, r3, 0 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + beq _08044644 + ldr r2, _08044640 + adds r0, r2, 0 + ands r0, r1 + strh r0, [r6] + b _080446A4 + .align 2, 0 +_08044634: .4byte gDungeonGlobalData +_08044638: .4byte 0x0001357c +_0804463C: .4byte gSpeedTurns +_08044640: .4byte 0x0000bfff +_08044644: + ldr r1, _08044668 + add r1, r8 + strb r0, [r1] + adds r0, r5, 0 + bl TickStatusHeal + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080446A4 + adds r0, r5, 0 + bl sub_8071DA4 + movs r4, 0 + b _0804466E + .align 2, 0 +_08044668: .4byte 0x00000145 +_0804466C: + adds r4, 0x1 +_0804466E: + cmp r4, 0x2 + bgt _080446A4 + adds r0, r5, 0 + movs r1, 0 + bl DecideAction + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _080446A4 + adds r0, r5, 0 + bl sub_8072CF4 + lsls r0, 24 + cmp r0, 0 + beq _080446A4 + bl sub_8086AC0 + movs r0, 0 + bl sub_8043ED0 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + beq _0804466C +_080446A4: + adds r7, 0x1 + cmp r7, 0x3 + bgt _080446AC + b _08044592 +_080446AC: + movs r0, 0 + mov r8, r0 +_080446B0: + adds r0, 0x1 + mov r9, r0 + add r2, sp, 0x8 + ldr r1, [sp, 0x40] + mov r0, sp + movs r7, 0x2 +_080446BC: + mov r3, r8 + str r3, [r0] + str r2, [r1] + adds r2, 0x8 + adds r1, 0x8 + adds r0, 0x8 + subs r7, 0x1 + cmp r7, 0 + bge _080446BC + str r3, [sp, 0x18] + str r3, [sp, 0x1C] + movs r7, 0 +_080446D4: + ldr r0, _08044710 + ldr r0, [r0] + lsls r1, r7, 2 + ldr r2, _08044714 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08044760 + ldr r1, [r4, 0x70] + movs r3, 0xA2 + lsls r3, 1 + adds r2, r1, r3 + ldrb r0, [r2] + cmp r0, 0 + beq _08044760 + ldrb r0, [r1, 0x7] + cmp r0, 0 + beq _08044718 + adds r3, 0x1 + adds r0, r1, r3 + mov r1, r8 + strb r1, [r0] + strb r1, [r2] + b _08044760 + .align 2, 0 +_08044710: .4byte gDungeonGlobalData +_08044714: .4byte 0x0001357c +_08044718: + mov r2, r10 + movs r3, 0x4 + ldrsh r1, [r2, r3] + movs r2, 0x4 + ldrsh r0, [r4, r2] + subs r2, r1, r0 + cmp r2, 0 + bge _0804472A + negs r2, r2 +_0804472A: + mov r3, r10 + movs r0, 0x6 + ldrsh r1, [r3, r0] + movs r3, 0x6 + ldrsh r0, [r4, r3] + subs r1, r0 + cmp r1, 0 + bge _0804473C + negs r1, r1 +_0804473C: + cmp r1, r2 + bge _08044742 + adds r1, r2, 0 +_08044742: + cmp r1, 0x2 + ble _08044748 + movs r1, 0x2 +_08044748: + add r3, sp, 0x20 + lsls r0, r7, 3 + adds r3, r0 + str r4, [r3] + add r2, sp, 0x24 + adds r2, r0 + lsls r1, 3 + ldr r0, [sp, 0x40] + adds r1, r0, r1 + ldr r0, [r1] + str r0, [r2] + str r3, [r1] +_08044760: + adds r7, 0x1 + cmp r7, 0x3 + ble _080446D4 + mov r5, sp + movs r6, 0 +_0804476A: + ldr r4, [r5] + cmp r4, 0 + beq _080447A0 + ldr r1, [r4, 0x70] + ldr r3, _08044814 + adds r2, r1, r3 + movs r0, 0x1 + strb r0, [r2] + movs r2, 0xA2 + lsls r2, 1 + adds r0, r1, r2 + strb r6, [r0] + adds r0, r4, 0 + movs r1, 0x1 + bl DecideAction + adds r0, r4, 0 + bl sub_8072CF4 + bl sub_8086AC0 + movs r0, 0 + bl sub_8043ED0 + adds r0, r4, 0 + bl EntityExists +_080447A0: + ldr r5, [r5, 0x4] + cmp r5, 0 + bne _0804476A + mov r0, r9 + cmp r0, 0x2 + ble _080446B0 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _08044802 + movs r7, 0 +_080447B8: + ldr r0, _08044818 + ldr r0, [r0] + lsls r1, r7, 2 + ldr r3, _0804481C + adds r0, r3 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080447FC + ldr r0, [r4, 0x70] + movs r1, 0xA2 + lsls r1, 1 + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, 0 + beq _080447FC + adds r0, r4, 0 + bl sub_8074094 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080447FC + adds r0, r4, 0 + bl sub_8071DA4 + movs r0, 0 + strb r0, [r5] +_080447FC: + adds r7, 0x1 + cmp r7, 0x3 + ble _080447B8 +_08044802: + add sp, 0x44 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08044814: .4byte 0x00000145 +_08044818: .4byte gDungeonGlobalData +_0804481C: .4byte 0x0001357c + thumb_func_end sub_8044574 + + thumb_func_start sub_8044820 +sub_8044820: + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r7, 0 + ldr r0, _08044830 + mov r8, r0 + b _080448FC + .align 2, 0 +_08044830: .4byte gSpeedTurns +_08044834: + ldr r4, [r5, 0x70] + ldr r0, [r6] + adds r0, 0xB8 + str r5, [r0] + bl TriggerWeatherAbilities + ldrh r2, [r4] + movs r1, 0x80 + lsls r1, 8 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _080448FA + movs r1, 0x80 + lsls r1, 7 + adds r0, r1, 0 + ands r0, r2 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _0804486C + ldr r1, _08044868 + adds r0, r1, 0 + ands r0, r2 + strh r0, [r4] + b _080448FA + .align 2, 0 +_08044868: .4byte 0x0000bfff +_0804486C: + movs r2, 0xA2 + lsls r2, 1 + adds r0, r4, r2 + strb r1, [r0] + adds r0, r5, 0 + bl GetMovementSpeed + ldr r1, [r6] + movs r2, 0xCC + lsls r2, 3 + adds r1, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + lsls r1, 1 + movs r2, 0x32 + muls r0, r2 + adds r1, r0 + add r1, r8 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _080448FA + movs r1, 0xA4 + lsls r1, 1 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080448FA + ldrh r1, [r4] + ldr r2, _08044984 + adds r0, r2, 0 + ands r1, r0 + movs r0, 0 + strh r1, [r4] + ldr r2, _08044988 + adds r1, r4, r2 + strb r0, [r1] + adds r0, r5, 0 + bl TickStatusHeal + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080448FA + adds r0, r5, 0 + bl sub_8071DA4 + adds r0, r5, 0 + movs r1, 0 + bl DecideAction + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _08044924 + adds r0, r5, 0 + bl sub_8072CF4 + bl sub_8086AC0 + movs r0, 0 + bl sub_8043ED0 + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _08044924 +_080448FA: + adds r7, 0x1 +_080448FC: + cmp r7, 0xF + bgt _08044924 + ldr r6, _0804498C + ldr r0, [r6] + lsls r1, r7, 2 + ldr r2, _08044990 + adds r0, r2 + adds r0, r1 + ldr r5, [r0] + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _080448FA + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + beq _08044834 +_08044924: + bl sub_8044B28 + lsls r0, 24 + cmp r0, 0 + bne _0804497A + movs r7, 0 +_08044930: + ldr r0, _0804498C + ldr r0, [r0] + lsls r1, r7, 2 + ldr r2, _08044990 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08044974 + ldr r0, [r4, 0x70] + movs r1, 0xA2 + lsls r1, 1 + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, 0 + beq _08044974 + adds r0, r4, 0 + bl sub_8074094 + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08044974 + adds r0, r4, 0 + bl sub_8071DA4 + movs r0, 0 + strb r0, [r5] +_08044974: + adds r7, 0x1 + cmp r7, 0xF + ble _08044930 +_0804497A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08044984: .4byte 0x00003fff +_08044988: .4byte 0x00000145 +_0804498C: .4byte gDungeonGlobalData +_08044990: .4byte 0x0001358c + thumb_func_end sub_8044820 + + thumb_func_start sub_8044994 +sub_8044994: + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _08044A94 + ldr r4, _08044A98 + ldr r0, [r4] + movs r2, 0xCC + lsls r2, 3 + adds r0, r2 + movs r3, 0 + ldrsh r0, [r0, r3] + lsls r0, 1 + adds r1, 0x32 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _08044A8A + bl sub_8071B48 + ldr r0, [r4] + ldr r2, _08044A9C + adds r0, r2 + movs r2, 0 + strb r2, [r0] + ldr r0, [r4] + ldr r3, _08044AA0 + adds r0, r3 + strb r2, [r0] + ldr r0, [r4] + ldr r1, _08044AA4 + adds r0, r1 + strb r2, [r0] + ldr r0, [r4] + adds r3, 0x2 + adds r0, r3 + strb r2, [r0] + ldr r0, [r4] + ldr r3, _08044AA8 + adds r1, r0, r3 + str r2, [r1] + ldr r1, _08044AAC + adds r0, r1 + movs r1, 0x2 + str r1, [r0] + mov r8, r2 + adds r7, r4, 0 +_080449F2: + ldr r0, [r7] + mov r2, r8 + lsls r1, r2, 2 + ldr r3, _08044AB0 + adds r0, r3 + adds r0, r1 + ldr r5, [r0] + adds r0, r5, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08044A7A + ldr r0, [r5, 0x70] + adds r4, r0, 0 + movs r0, 0xA4 + lsls r0, 1 + adds r1, r4, r0 + movs r0, 0 + strb r0, [r1] + ldrb r0, [r4, 0x6] + movs r6, 0x1 + cmp r0, 0 + beq _08044A24 + movs r6, 0 +_08044A24: + adds r0, r5, 0 + movs r1, 0x32 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _08044A46 + ldr r1, [r7] + ldr r2, _08044AA8 + adds r0, r1, r2 + str r5, [r0] + ldr r3, _08044AAC + adds r1, r3 + adds r0, r4, 0 + adds r0, 0x98 + ldr r0, [r0] + str r0, [r1] +_08044A46: + adds r0, r5, 0 + movs r1, 0x3F + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _08044A60 + ldr r0, [r7] + ldr r1, _08044AA4 + adds r0, r1 + adds r0, r6 + movs r1, 0x1 + strb r1, [r0] +_08044A60: + adds r0, r5, 0 + movs r1, 0x38 + bl HasAbility + lsls r0, 24 + cmp r0, 0 + beq _08044A7A + ldr r0, [r7] + ldr r2, _08044A9C + adds r0, r2 + adds r0, r6 + movs r1, 0x1 + strb r1, [r0] +_08044A7A: + movs r3, 0x1 + add r8, r3 + mov r0, r8 + cmp r0, 0x13 + ble _080449F2 + movs r0, 0 + bl sub_8043ED0 +_08044A8A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08044A94: .4byte gSpeedTurns +_08044A98: .4byte gDungeonGlobalData +_08044A9C: .4byte 0x000037f8 +_08044AA0: .4byte 0x000037f9 +_08044AA4: .4byte 0x000037fa +_08044AA8: .4byte 0x00017b2c +_08044AAC: .4byte 0x00017b38 +_08044AB0: .4byte 0x000135cc + thumb_func_end sub_8044994 + + thumb_func_start sub_8044AB4 +sub_8044AB4: + push {r4,lr} + ldr r1, _08044ADC + ldr r0, _08044AE0 + ldr r0, [r0] + movs r2, 0xCC + lsls r2, 3 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r0, 0x1 + lsls r0, 1 + adds r1, 0x32 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _08044B1A + movs r4, 0 + b _08044AE6 + .align 2, 0 +_08044ADC: .4byte gSpeedTurns +_08044AE0: .4byte gDungeonGlobalData +_08044AE4: + adds r4, 0x1 +_08044AE6: + cmp r4, 0x13 + bgt _08044B08 + ldr r0, _08044B20 + ldr r0, [r0] + lsls r1, r4, 2 + ldr r2, _08044B24 + adds r0, r2 + adds r0, r1 + ldr r0, [r0] + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08044AE4 + movs r0, 0 + bl UseAttack +_08044B08: + movs r0, 0x1 + movs r1, 0 + bl sub_807EAA0 + bl sub_8086AC0 + movs r0, 0 + bl sub_8043ED0 +_08044B1A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08044B20: .4byte gDungeonGlobalData +_08044B24: .4byte 0x000135cc + thumb_func_end sub_8044AB4 + + thumb_func_start sub_8044B28 +sub_8044B28: + push {r4,lr} + ldr r4, _08044B48 + ldr r0, [r4] + ldrb r0, [r0, 0x4] + cmp r0, 0 + bne _08044B76 + bl GetLeaderEntity + cmp r0, 0 + bne _08044B50 + ldr r0, [r4] + ldr r1, _08044B4C + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + b _08044B76 + .align 2, 0 +_08044B48: .4byte gDungeonGlobalData +_08044B4C: .4byte 0x00000654 +_08044B50: + ldr r0, [r4] + ldrb r2, [r0, 0x2] + cmp r2, 0x1 + bne _08044B68 + ldr r2, _08044B64 + adds r1, r0, r2 + movs r0, 0x2 + strb r0, [r1] + b _08044B76 + .align 2, 0 +_08044B64: .4byte 0x00000654 +_08044B68: + cmp r2, 0x2 + beq _08044B70 + movs r0, 0 + b _08044B78 +_08044B70: + ldr r1, _08044B80 + adds r0, r1 + strb r2, [r0] +_08044B76: + movs r0, 0x1 +_08044B78: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08044B80: .4byte 0x00000654 + thumb_func_end sub_8044B28 + + thumb_func_start sub_8044B84 +sub_8044B84: + push {lr} + ldr r0, _08044B9C + ldr r0, [r0] + ldrb r0, [r0, 0x10] + cmp r0, 0 + bne _08044BA0 + bl sub_8044B28 + lsls r0, 24 + lsrs r0, 24 + b _08044BA2 + .align 2, 0 +_08044B9C: .4byte gDungeonGlobalData +_08044BA0: + movs r0, 0x1 +_08044BA2: + pop {r1} + bx r1 + thumb_func_end sub_8044B84 + + thumb_func_start sub_8044BA8 +sub_8044BA8: + push {r4,r5,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + cmp r4, 0x26 + bne _08044BCC + bl sub_8043D10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08044BCC + ldr r0, _08044BC8 + b _08044C02 + .align 2, 0 +_08044BC8: .4byte gUnknown_80F91EC +_08044BCC: + ldr r1, _08044BEC + lsls r0, r4, 3 + adds r4, r0, r1 + ldr r0, [r4] + ldr r1, _08044BF0 + bl strcmp + cmp r0, 0 + beq _08044BE0 + movs r0, 0x1 +_08044BE0: + lsls r0, 24 + cmp r0, 0 + beq _08044BF4 + ldr r0, [r4] + b _08044C04 + .align 2, 0 +_08044BEC: .4byte gUnknown_80F7C50 +_08044BF0: .4byte gUnknown_80F697C +_08044BF4: + ldr r4, _08044C0C + adds r0, r5, 0 + bl GetItemCategory + lsls r0, 3 + adds r4, 0x4 + adds r0, r4 +_08044C02: + ldr r0, [r0] +_08044C04: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08044C0C: .4byte gActions + thumb_func_end sub_8044BA8 + + thumb_func_start sub_8044C10 +sub_8044C10: + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl sub_8083654 + adds r2, r0, 0 + adds r1, r2, 0 + adds r1, 0x44 + movs r3, 0 + movs r0, 0 + strh r0, [r1] + cmp r4, 0 + beq _08044C44 + adds r0, r2, 0 + adds r0, 0x48 + strb r3, [r0] + adds r0, 0x8 + strb r3, [r0] + adds r1, 0x14 + ldr r0, _08044C4C + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x1 + negs r0, r0 + strh r0, [r1] +_08044C44: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08044C4C: .4byte 0x0000ffff + thumb_func_end sub_8044C10 + + thumb_func_start sub_8044C50 +sub_8044C50: + push {r4,lr} + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sub_8083654 + adds r2, r0, 0 + adds r0, 0x44 + movs r1, 0 + strh r4, [r0] + adds r0, 0x4 + strb r1, [r0] + adds r0, 0x8 + strb r1, [r0] + adds r1, r2, 0 + adds r1, 0x58 + ldr r0, _08044C84 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0x1 + negs r0, r0 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08044C84: .4byte 0x0000ffff + thumb_func_end sub_8044C50 + + thumb_func_start ResetAction +ResetAction: + movs r2, 0 + movs r1, 0 + strh r1, [r0] + strb r2, [r0, 0x4] + strb r2, [r0, 0xC] + bx lr + thumb_func_end ResetAction + + .align 2, 0 diff --git a/include/dungeon_engine.h b/include/dungeon_engine.h new file mode 100644 index 0000000..f987b11 --- /dev/null +++ b/include/dungeon_engine.h @@ -0,0 +1,7 @@ +#ifndef GUARD_DUNGEON_ENGINE_H +#define GUARD_DUNGEON_ENGINE_H + +// 0x441E8 +bool8 IsFixedDungeon(); + +#endif diff --git a/ld_script.txt b/ld_script.txt index cca6013..4390af2 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -186,6 +186,8 @@ SECTIONS { asm/code_8041AD0.o(.text); src/code_80428A0.o(.text); asm/code_80428A0.o(.text); + src/dungeon_engine.o(.text); + asm/code_8044210.o(.text); src/dungeon_action.o(.text); asm/code_8044CC8.o(.text); src/dungeon_util.o(.text); diff --git a/src/dungeon_capabilities_1.c b/src/dungeon_capabilities_1.c index c4eb53e..bbe48bc 100644 --- a/src/dungeon_capabilities_1.c +++ b/src/dungeon_capabilities_1.c @@ -7,6 +7,7 @@ #include "charge_move.h" #include "dungeon_ai.h" #include "dungeon_capabilities.h" +#include "dungeon_engine.h" #include "dungeon_items.h" #include "dungeon_map_access.h" #include "dungeon_movement.h" @@ -16,8 +17,6 @@ const u8 gDirectionBitMasks[] = {0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80}; -extern bool8 IsFixedDungeon(); - static inline bool8 JoinLocationCannotUseItems(struct DungeonEntityData *pokemonData) { if (pokemonData->joinLocation == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON) diff --git a/src/dungeon_engine.c b/src/dungeon_engine.c new file mode 100644 index 0000000..dd25441 --- /dev/null +++ b/src/dungeon_engine.c @@ -0,0 +1,13 @@ +#include "global.h" +#include "dungeon_engine.h" +#include "constants/dungeon.h" +#include "dungeon_global_data.h" + +bool8 IsFixedDungeon() +{ + if (gDungeonGlobalData->tileset > DUNGEON_OUT_ON_RESCUE) + { + return TRUE; + } + return FALSE; +} |