mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 07:28:17 -05:00
Merge pull request #101 from SethBarberee/decomp_mar_2022
Decomp March - April 2022
This commit is contained in:
commit
6c229b03f9
|
|
@ -5,155 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_801C8C4
|
||||
sub_801C8C4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
adds r4, r0, 0
|
||||
adds r6, r1, 0
|
||||
mov r9, r2
|
||||
mov r10, r3
|
||||
bl sub_801CF14
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801C8E4
|
||||
movs r0, 0
|
||||
b _0801C9D0
|
||||
_0801C8E4:
|
||||
ldr r5, _0801C9E0
|
||||
ldr r0, [r5]
|
||||
cmp r0, 0
|
||||
bne _0801C8F6
|
||||
ldr r0, _0801C9E4
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
_0801C8F6:
|
||||
ldr r0, [r5]
|
||||
str r4, [r0]
|
||||
bl sub_801CF94
|
||||
ldr r0, [r5]
|
||||
movs r4, 0x9D
|
||||
lsls r4, 3
|
||||
adds r1, r0, r4
|
||||
str r6, [r1]
|
||||
ldr r1, _0801C9E8
|
||||
mov r8, r1
|
||||
adds r2, r0, r1
|
||||
lsls r1, r6, 1
|
||||
adds r1, r6
|
||||
lsls r1, 3
|
||||
movs r7, 0x9E
|
||||
lsls r7, 3
|
||||
adds r1, r7
|
||||
adds r1, r0, r1
|
||||
str r1, [r2]
|
||||
adds r0, r7
|
||||
bl sub_8006518
|
||||
ldr r1, [r5]
|
||||
adds r4, r1, r4
|
||||
ldr r2, [r4]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, r7
|
||||
ldr r0, _0801C9EC
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldr r2, [r5]
|
||||
mov r1, r8
|
||||
adds r0, r2, r1
|
||||
ldr r1, [r0]
|
||||
movs r3, 0xAA
|
||||
lsls r3, 3
|
||||
adds r0, r2, r3
|
||||
str r0, [r1, 0x14]
|
||||
mov r4, r9
|
||||
cmp r4, 0
|
||||
beq _0801C96C
|
||||
movs r1, 0x9D
|
||||
lsls r1, 3
|
||||
adds r0, r2, r1
|
||||
ldr r1, [r0]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
subs r3, 0x58
|
||||
adds r1, r2, r3
|
||||
adds r1, r0
|
||||
ldr r0, [r4]
|
||||
str r0, [r1]
|
||||
_0801C96C:
|
||||
ldr r0, [r5]
|
||||
add r0, r8
|
||||
ldr r0, [r0]
|
||||
mov r1, r10
|
||||
bl sub_8012D08
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r5]
|
||||
adds r0, r7
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r4, [r5]
|
||||
ldr r0, _0801C9F0
|
||||
adds r4, r0
|
||||
bl sub_801CE58
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
mov r2, r10
|
||||
adds r3, r6, 0
|
||||
bl sub_8013818
|
||||
ldr r0, _0801C9F4
|
||||
ldr r4, [r5]
|
||||
ldr r1, [r0]
|
||||
ldr r0, [r4]
|
||||
cmp r1, r0
|
||||
bne _0801C9C6
|
||||
ldr r0, _0801C9F8
|
||||
ldrh r1, [r0]
|
||||
ldr r2, _0801C9FC
|
||||
adds r0, r4, r2
|
||||
strh r1, [r0]
|
||||
ldr r0, _0801CA00
|
||||
ldrh r1, [r0]
|
||||
ldr r3, _0801CA04
|
||||
adds r0, r4, r3
|
||||
strh r1, [r0]
|
||||
ldr r1, _0801C9F0
|
||||
adds r0, r4, r1
|
||||
bl sub_8013984
|
||||
_0801C9C6:
|
||||
bl sub_801CC38
|
||||
bl sub_801CCD8
|
||||
movs r0, 0x1
|
||||
_0801C9D0:
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0801C9E0: .4byte gUnknown_203B244
|
||||
_0801C9E4: .4byte 0x00000554
|
||||
_0801C9E8: .4byte 0x000004ec
|
||||
_0801C9EC: .4byte gUnknown_80DBE54
|
||||
_0801C9F0: .4byte 0x000004b4
|
||||
_0801C9F4: .4byte gUnknown_203B248
|
||||
_0801C9F8: .4byte gUnknown_203B24C
|
||||
_0801C9FC: .4byte 0x000004cc
|
||||
_0801CA00: .4byte gUnknown_203B24E
|
||||
_0801CA04: .4byte 0x000004d2
|
||||
thumb_func_end sub_801C8C4
|
||||
|
||||
thumb_func_start sub_801CA08
|
||||
sub_801CA08:
|
||||
push {r4-r6,lr}
|
||||
|
|
|
|||
|
|
@ -5,86 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_801DAC0
|
||||
sub_801DAC0:
|
||||
ldr r0, _0801DAD8
|
||||
ldr r1, [r0]
|
||||
ldrh r2, [r1, 0x1E]
|
||||
ldrh r0, [r1, 0x1C]
|
||||
adds r3, r0, 0
|
||||
muls r3, r2
|
||||
adds r0, r3, 0
|
||||
ldrh r1, [r1, 0x18]
|
||||
adds r0, r1
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0801DAD8: .4byte gUnknown_203B258
|
||||
thumb_func_end sub_801DAC0
|
||||
|
||||
thumb_func_start sub_801DADC
|
||||
sub_801DADC:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
ldr r5, _0801DB08
|
||||
ldr r0, [r5]
|
||||
movs r1, 0xE5
|
||||
strh r1, [r0, 0x22]
|
||||
bl sub_8013984
|
||||
bl sub_801DB54
|
||||
bl sub_801DBD4
|
||||
cmp r4, 0
|
||||
beq _0801DB02
|
||||
ldr r0, [r5]
|
||||
bl AddMenuCursorSprite
|
||||
_0801DB02:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801DB08: .4byte gUnknown_203B258
|
||||
thumb_func_end sub_801DADC
|
||||
|
||||
thumb_func_start sub_801DB0C
|
||||
sub_801DB0C:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _0801DB4C
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0801DB46
|
||||
ldr r0, [r2, 0x34]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0801DB50
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0801DB46:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801DB4C: .4byte gUnknown_203B258
|
||||
_0801DB50: .4byte gUnknown_80DBF70
|
||||
thumb_func_end sub_801DB0C
|
||||
|
||||
thumb_func_start sub_801DB54
|
||||
sub_801DB54:
|
||||
push {r4,lr}
|
||||
|
|
|
|||
|
|
@ -5178,8 +5178,8 @@ _0803F984:
|
|||
bx r0
|
||||
thumb_func_end sub_803F878
|
||||
|
||||
thumb_func_start sub_803F994
|
||||
sub_803F994:
|
||||
thumb_func_start GetCameraXPos
|
||||
GetCameraXPos:
|
||||
ldr r0, _0803F9A8
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0803F9AC
|
||||
|
|
@ -5192,10 +5192,10 @@ sub_803F994:
|
|||
.align 2, 0
|
||||
_0803F9A8: .4byte gDungeonGlobalData
|
||||
_0803F9AC: .4byte 0x000181e8
|
||||
thumb_func_end sub_803F994
|
||||
thumb_func_end GetCameraXPos
|
||||
|
||||
thumb_func_start sub_803F9B0
|
||||
sub_803F9B0:
|
||||
thumb_func_start GetCameraYPos
|
||||
GetCameraYPos:
|
||||
ldr r0, _0803F9C4
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0803F9C8
|
||||
|
|
@ -5208,7 +5208,7 @@ sub_803F9B0:
|
|||
.align 2, 0
|
||||
_0803F9C4: .4byte gDungeonGlobalData
|
||||
_0803F9C8: .4byte 0x000181e8
|
||||
thumb_func_end sub_803F9B0
|
||||
thumb_func_end GetCameraYPos
|
||||
|
||||
thumb_func_start sub_803F9CC
|
||||
sub_803F9CC:
|
||||
|
|
|
|||
|
|
@ -5,317 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start CanSee_2
|
||||
CanSee_2:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08045A58
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08045A58
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x20
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08045A58
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0x1
|
||||
bne _08045A5C
|
||||
ldr r0, [r5]
|
||||
cmp r0, 0x1
|
||||
bne _08045A4E
|
||||
adds r0, r5, 0
|
||||
bl CanSeeInvisible
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08045A48
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _08045A58
|
||||
_08045A48:
|
||||
ldr r0, [r5, 0x70]
|
||||
adds r0, 0xE8
|
||||
b _08045A52
|
||||
_08045A4E:
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0xE4
|
||||
_08045A52:
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _08045A5C
|
||||
_08045A58:
|
||||
movs r0, 0
|
||||
b _08045A68
|
||||
_08045A5C:
|
||||
adds r0, r5, 0x4
|
||||
adds r1, r4, 0x4
|
||||
bl InSameRoom_3
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
_08045A68:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end CanSee_2
|
||||
|
||||
thumb_func_start sub_8045A70
|
||||
sub_8045A70:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08045AA4
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08045AA4
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x20
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08045AA4
|
||||
adds r0, r5, 0x4
|
||||
adds r1, r4, 0x4
|
||||
bl InSameRoom_2
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
b _08045AA6
|
||||
_08045AA4:
|
||||
movs r0, 0
|
||||
_08045AA6:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8045A70
|
||||
|
||||
thumb_func_start sub_8045AAC
|
||||
sub_8045AAC:
|
||||
push {lr}
|
||||
adds r0, 0x4
|
||||
bl InSameRoom_2
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8045AAC
|
||||
|
||||
thumb_func_start InSameRoom
|
||||
InSameRoom:
|
||||
push {lr}
|
||||
adds r0, 0x4
|
||||
bl InSameRoom_3
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end InSameRoom
|
||||
|
||||
thumb_func_start sub_8045ACC
|
||||
sub_8045ACC:
|
||||
push {r4-r7,lr}
|
||||
movs r6, 0
|
||||
movs r5, 0
|
||||
ldr r7, _08045B50
|
||||
_08045AD4:
|
||||
ldr r0, [r7]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08045B54
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08045AFA
|
||||
ldr r0, [r7]
|
||||
lsls r1, r6, 2
|
||||
ldr r2, _08045B58
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
str r4, [r0]
|
||||
adds r6, 0x1
|
||||
_08045AFA:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _08045AD4
|
||||
movs r5, 0
|
||||
ldr r7, _08045B50
|
||||
_08045B04:
|
||||
ldr r0, [r7]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08045B5C
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08045B2A
|
||||
ldr r0, [r7]
|
||||
lsls r1, r6, 2
|
||||
ldr r2, _08045B58
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
str r4, [r0]
|
||||
adds r6, 0x1
|
||||
_08045B2A:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0xF
|
||||
ble _08045B04
|
||||
cmp r6, 0x13
|
||||
bgt _08045B4A
|
||||
ldr r4, _08045B50
|
||||
ldr r3, _08045B58
|
||||
movs r2, 0
|
||||
_08045B3A:
|
||||
ldr r0, [r4]
|
||||
lsls r1, r6, 2
|
||||
adds r0, r3
|
||||
adds r0, r1
|
||||
str r2, [r0]
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x13
|
||||
ble _08045B3A
|
||||
_08045B4A:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08045B50: .4byte gDungeonGlobalData
|
||||
_08045B54: .4byte 0x0001357c
|
||||
_08045B58: .4byte 0x000135cc
|
||||
_08045B5C: .4byte 0x0001358c
|
||||
thumb_func_end sub_8045ACC
|
||||
|
||||
thumb_func_start sub_8045B60
|
||||
sub_8045B60:
|
||||
push {r4,lr}
|
||||
adds r3, r0, 0
|
||||
movs r2, 0
|
||||
ldr r0, _08045B78
|
||||
ldr r0, [r0]
|
||||
ldr r4, _08045B7C
|
||||
adds r1, r0, r4
|
||||
_08045B6E:
|
||||
ldr r0, [r1]
|
||||
cmp r3, r0
|
||||
bne _08045B80
|
||||
adds r0, r2, 0
|
||||
b _08045B8C
|
||||
.align 2, 0
|
||||
_08045B78: .4byte gDungeonGlobalData
|
||||
_08045B7C: .4byte 0x0001357c
|
||||
_08045B80:
|
||||
adds r1, 0x4
|
||||
adds r2, 0x1
|
||||
cmp r2, 0x3
|
||||
ble _08045B6E
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_08045B8C:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8045B60
|
||||
|
||||
thumb_func_start SetMessageArgument
|
||||
SetMessageArgument:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
adds r6, r2, 0
|
||||
adds r0, r4, 0
|
||||
bl GetEntityType
|
||||
cmp r0, 0x2
|
||||
beq _08045BD2
|
||||
cmp r0, 0x2
|
||||
bhi _08045BB0
|
||||
cmp r0, 0x1
|
||||
beq _08045BB6
|
||||
b _08045BE2
|
||||
_08045BB0:
|
||||
cmp r0, 0x3
|
||||
beq _08045BC2
|
||||
b _08045BE2
|
||||
_08045BB6:
|
||||
ldr r1, [r4, 0x70]
|
||||
adds r0, r5, 0
|
||||
adds r2, r6, 0
|
||||
bl SetMessageArgument_2
|
||||
b _08045BEC
|
||||
_08045BC2:
|
||||
adds r0, r4, 0
|
||||
bl sub_8045110
|
||||
adds r1, r0, 0
|
||||
adds r0, r5, 0
|
||||
bl sub_8045BF8
|
||||
b _08045BEC
|
||||
_08045BD2:
|
||||
adds r0, r4, 0
|
||||
bl sub_804510C
|
||||
ldrb r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl GetTrapName
|
||||
b _08045BEC
|
||||
_08045BE2:
|
||||
ldr r0, _08045BF4
|
||||
ldr r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl strcpy
|
||||
_08045BEC:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08045BF4: .4byte gUnknown_80FE6F4
|
||||
thumb_func_end SetMessageArgument
|
||||
|
||||
thumb_func_start sub_8045BF8
|
||||
sub_8045BF8:
|
||||
push {lr}
|
||||
ldr r2, _08045C04
|
||||
bl sub_8090E14
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08045C04: .4byte gUnknown_80F699C
|
||||
thumb_func_end sub_8045BF8
|
||||
|
||||
thumb_func_start sub_8045C08
|
||||
sub_8045C08:
|
||||
push {lr}
|
||||
ldr r2, _08045C14
|
||||
bl sub_8090E14
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08045C14: .4byte gUnknown_80F69A8
|
||||
thumb_func_end sub_8045C08
|
||||
|
||||
thumb_func_start sub_8045C18
|
||||
sub_8045C18:
|
||||
push {lr}
|
||||
ldr r2, _08045C24
|
||||
bl sub_8090E14
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08045C24: .4byte gUnknown_80F6990
|
||||
thumb_func_end sub_8045C18
|
||||
|
||||
thumb_func_start sub_8045C28
|
||||
sub_8045C28:
|
||||
push {r4-r7,lr}
|
||||
|
|
@ -2427,4 +2116,4 @@ _08046CA8: .4byte 0x0000052c
|
|||
_08046CAC: .4byte 0x0000048c
|
||||
thumb_func_end sub_804687C
|
||||
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -5,582 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8046CE4
|
||||
sub_8046CE4:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r0, 0x64
|
||||
bl DungeonRandomCapped
|
||||
adds r1, r0, 0
|
||||
movs r2, 0
|
||||
ldr r3, _08046D04
|
||||
_08046CF6:
|
||||
lsls r0, r1, 2
|
||||
adds r0, r3
|
||||
ldr r0, [r0]
|
||||
cmp r0, r5
|
||||
bgt _08046D08
|
||||
strb r1, [r4, 0x1]
|
||||
b _08046D18
|
||||
.align 2, 0
|
||||
_08046D04: .4byte gUnknown_810A3F0
|
||||
_08046D08:
|
||||
lsrs r0, r1, 31
|
||||
adds r0, r1, r0
|
||||
asrs r1, r0, 1
|
||||
adds r2, 0x1
|
||||
cmp r2, 0xC7
|
||||
ble _08046CF6
|
||||
movs r0, 0x1
|
||||
strb r0, [r4, 0x1]
|
||||
_08046D18:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8046CE4
|
||||
|
||||
thumb_func_start sub_8046D20
|
||||
sub_8046D20:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _08046D5C
|
||||
ldr r0, [r4]
|
||||
ldrb r5, [r0, 0x8]
|
||||
bl sub_8046D70
|
||||
ldr r1, [r4]
|
||||
strb r0, [r1, 0x8]
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x8]
|
||||
cmp r0, 0x1
|
||||
bne _08046D64
|
||||
cmp r5, 0
|
||||
bne _08046D64
|
||||
ldr r0, _08046D60
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8052B8C
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0x1
|
||||
bne _08046D64
|
||||
ldr r0, [r4]
|
||||
strb r1, [r0, 0x4]
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x2
|
||||
strb r0, [r1, 0x11]
|
||||
b _08046D68
|
||||
.align 2, 0
|
||||
_08046D5C: .4byte gDungeonGlobalData
|
||||
_08046D60: .4byte gUnknown_80FA408
|
||||
_08046D64:
|
||||
bl sub_8046D8C
|
||||
_08046D68:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8046D20
|
||||
|
||||
thumb_func_start sub_8046D70
|
||||
sub_8046D70:
|
||||
push {lr}
|
||||
ldr r0, _08046D84
|
||||
ldr r0, [r0]
|
||||
ldr r1, _08046D88
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
movs r0, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08046D84: .4byte gDungeonGlobalData
|
||||
_08046D88: .4byte 0x0000068a
|
||||
thumb_func_end sub_8046D70
|
||||
|
||||
thumb_func_start sub_8046D8C
|
||||
sub_8046D8C:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
movs r6, 0
|
||||
ldr r5, _08046EDC
|
||||
movs r4, 0
|
||||
_08046D96:
|
||||
movs r7, 0
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
str r0, [sp]
|
||||
str r0, [sp, 0x4]
|
||||
str r0, [sp, 0x8]
|
||||
movs r3, 0
|
||||
ldr r2, [r5]
|
||||
_08046DA6:
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08046DC8
|
||||
ldrb r0, [r2, 0x2]
|
||||
cmp r0, 0x79
|
||||
bne _08046DB8
|
||||
str r3, [sp]
|
||||
_08046DB8:
|
||||
ldrb r0, [r2, 0x2]
|
||||
cmp r0, 0x77
|
||||
bne _08046DC0
|
||||
str r3, [sp, 0x4]
|
||||
_08046DC0:
|
||||
ldrb r0, [r2, 0x2]
|
||||
cmp r0, 0x78
|
||||
bne _08046DC8
|
||||
str r3, [sp, 0x8]
|
||||
_08046DC8:
|
||||
adds r2, 0x4
|
||||
adds r3, 0x1
|
||||
cmp r3, 0x13
|
||||
ble _08046DA6
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0
|
||||
blt _08046E1E
|
||||
ldr r0, [sp, 0x4]
|
||||
cmp r0, 0
|
||||
blt _08046E1E
|
||||
ldr r0, [sp, 0x8]
|
||||
cmp r0, 0
|
||||
blt _08046E1E
|
||||
movs r7, 0x1
|
||||
movs r6, 0x1
|
||||
lsls r1, 2
|
||||
ldr r0, [r5]
|
||||
adds r1, r0
|
||||
strb r4, [r1, 0x2]
|
||||
strb r4, [r1, 0x1]
|
||||
strb r4, [r1]
|
||||
ldr r0, [sp, 0x4]
|
||||
lsls r0, 2
|
||||
ldr r1, [r5]
|
||||
adds r0, r1
|
||||
strb r4, [r0, 0x2]
|
||||
strb r4, [r0, 0x1]
|
||||
strb r4, [r0]
|
||||
ldr r0, [sp, 0x8]
|
||||
lsls r0, 2
|
||||
ldr r1, [r5]
|
||||
adds r0, r1
|
||||
strb r4, [r0, 0x2]
|
||||
strb r4, [r0, 0x1]
|
||||
strb r4, [r0]
|
||||
ldr r1, [sp]
|
||||
lsls r1, 2
|
||||
ldr r0, [r5]
|
||||
adds r0, r1
|
||||
movs r1, 0x7A
|
||||
movs r2, 0
|
||||
bl xxx_init_itemslot_8090A8C
|
||||
_08046E1E:
|
||||
cmp r7, 0
|
||||
bne _08046D96
|
||||
bl FillInventoryGaps
|
||||
cmp r6, 0
|
||||
beq _08046ED4
|
||||
bl GetLeaderEntity
|
||||
adds r4, r0, 0
|
||||
ldr r0, _08046EE0
|
||||
bl sub_80855E4
|
||||
ldr r6, _08046EE4
|
||||
ldr r0, [r6]
|
||||
ldr r5, _08046EE8
|
||||
adds r0, r5
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r0, _08046EEC
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl PrintFieldMessage
|
||||
movs r0, 0x3C
|
||||
movs r1, 0x41
|
||||
bl sub_803E708
|
||||
ldr r0, _08046EF0
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl PrintFieldMessage
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x4
|
||||
movs r2, 0xA
|
||||
movs r3, 0
|
||||
bl sub_80869E4
|
||||
adds r0, r4, 0
|
||||
adds r0, 0xC
|
||||
movs r1, 0x86
|
||||
lsls r1, 1
|
||||
movs r2, 0
|
||||
bl sub_80416E0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xD7
|
||||
bl sub_80421C0
|
||||
movs r0, 0x3C
|
||||
movs r1, 0x41
|
||||
bl sub_803E708
|
||||
ldr r0, _08046EF4
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _08046EF8
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl PrintFieldMessage
|
||||
movs r0, 0xA
|
||||
movs r1, 0x41
|
||||
bl sub_803E708
|
||||
movs r0, 0xD4
|
||||
bl PlaySoundEffect
|
||||
ldr r0, _08046EFC
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl PrintFieldMessage
|
||||
movs r0, 0xA
|
||||
movs r1, 0x41
|
||||
bl sub_803E708
|
||||
movs r0, 0x1
|
||||
bl sub_804178C
|
||||
ldr r0, [r6]
|
||||
adds r0, r5
|
||||
strb r7, [r0]
|
||||
bl sub_8040A84
|
||||
_08046ED4:
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08046EDC: .4byte gTeamInventory_203B460
|
||||
_08046EE0: .4byte sub_80861A8
|
||||
_08046EE4: .4byte gDungeonGlobalData
|
||||
_08046EE8: .4byte 0x0001356c
|
||||
_08046EEC: .4byte gUnknown_810531C
|
||||
_08046EF0: .4byte gUnknown_8105360
|
||||
_08046EF4: .4byte gAvailablePokemonNames
|
||||
_08046EF8: .4byte gUnknown_81053A8
|
||||
_08046EFC: .4byte gUnknown_8105434
|
||||
thumb_func_end sub_8046D8C
|
||||
|
||||
thumb_func_start sub_8046F00
|
||||
sub_8046F00:
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
ldrb r0, [r4, 0x2]
|
||||
bl GetItemType
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x5
|
||||
bne _08046F7C
|
||||
ldrb r0, [r4, 0x2]
|
||||
bl GetItemMove
|
||||
lsls r0, 16
|
||||
lsrs r7, r0, 16
|
||||
ldrb r0, [r4, 0x2]
|
||||
bl IsHMItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08046F6E
|
||||
movs r6, 0
|
||||
_08046F2A:
|
||||
ldr r0, _08046F74
|
||||
ldr r0, [r0]
|
||||
lsls r1, r6, 2
|
||||
ldr r2, _08046F78
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08046F68
|
||||
ldr r0, [r4, 0x70]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r0, r2]
|
||||
adds r0, r7, 0
|
||||
bl CanMonLearnMove
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
bl CannotMove
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08046F64
|
||||
movs r5, 0
|
||||
_08046F64:
|
||||
cmp r5, 0
|
||||
bne _08046F7C
|
||||
_08046F68:
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x3
|
||||
ble _08046F2A
|
||||
_08046F6E:
|
||||
movs r0, 0
|
||||
b _08046F7E
|
||||
.align 2, 0
|
||||
_08046F74: .4byte gDungeonGlobalData
|
||||
_08046F78: .4byte 0x0001357c
|
||||
_08046F7C:
|
||||
movs r0, 0x1
|
||||
_08046F7E:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8046F00
|
||||
|
||||
thumb_func_start sub_8046F84
|
||||
sub_8046F84:
|
||||
push {r4-r7,lr}
|
||||
adds r7, r0, 0
|
||||
movs r5, 0
|
||||
ldr r4, _08047000
|
||||
movs r6, 0x1
|
||||
movs r3, 0
|
||||
_08046F90:
|
||||
lsls r1, r5, 2
|
||||
ldr r0, [r4]
|
||||
adds r2, r0, r1
|
||||
ldrb r1, [r2]
|
||||
adds r0, r6, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08046FAE
|
||||
ldrb r0, [r2]
|
||||
ands r0, r7
|
||||
cmp r0, 0
|
||||
beq _08046FAE
|
||||
strb r3, [r2, 0x2]
|
||||
strb r3, [r2, 0x1]
|
||||
strb r3, [r2]
|
||||
_08046FAE:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x13
|
||||
ble _08046F90
|
||||
bl FillInventoryGaps
|
||||
movs r5, 0
|
||||
movs r6, 0
|
||||
_08046FBC:
|
||||
ldr r0, _08047004
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08047008
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08046FF4
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r2, r0, 0
|
||||
adds r2, 0x60
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08046FF4
|
||||
ldrb r0, [r2]
|
||||
ands r0, r7
|
||||
cmp r0, 0
|
||||
beq _08046FF4
|
||||
strb r6, [r2, 0x2]
|
||||
strb r6, [r2, 0x1]
|
||||
strb r6, [r2]
|
||||
_08046FF4:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _08046FBC
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08047000: .4byte gTeamInventory_203B460
|
||||
_08047004: .4byte gDungeonGlobalData
|
||||
_08047008: .4byte 0x0001357c
|
||||
thumb_func_end sub_8046F84
|
||||
|
||||
thumb_func_start sub_804700C
|
||||
sub_804700C:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
ldr r4, _08047078
|
||||
_08047012:
|
||||
lsls r1, r5, 2
|
||||
ldr r0, [r4]
|
||||
adds r2, r0, r1
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0804702C
|
||||
adds r0, r2, 0
|
||||
movs r1, 0x46
|
||||
movs r2, 0
|
||||
bl xxx_init_itemslot_8090A8C
|
||||
_0804702C:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x13
|
||||
ble _08047012
|
||||
bl FillInventoryGaps
|
||||
movs r5, 0
|
||||
_08047038:
|
||||
ldr r0, _0804707C
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08047080
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0804706C
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r2, r0, 0
|
||||
adds r2, 0x60
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0804706C
|
||||
adds r0, r2, 0
|
||||
movs r1, 0x46
|
||||
movs r2, 0
|
||||
bl xxx_init_itemslot_8090A8C
|
||||
_0804706C:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _08047038
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08047078: .4byte gTeamInventory_203B460
|
||||
_0804707C: .4byte gDungeonGlobalData
|
||||
_08047080: .4byte 0x0001357c
|
||||
thumb_func_end sub_804700C
|
||||
|
||||
thumb_func_start sub_8047084
|
||||
sub_8047084:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
movs r5, 0
|
||||
ldr r0, _080470E8
|
||||
ldr r2, [r0]
|
||||
movs r3, 0x1
|
||||
_08047090:
|
||||
ldrb r1, [r2]
|
||||
adds r0, r3, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080470A2
|
||||
ldrb r0, [r2]
|
||||
ands r0, r6
|
||||
cmp r0, 0
|
||||
bne _080470E2
|
||||
_080470A2:
|
||||
adds r2, 0x4
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x13
|
||||
ble _08047090
|
||||
bl FillInventoryGaps
|
||||
movs r5, 0
|
||||
_080470B0:
|
||||
ldr r0, _080470EC
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _080470F0
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080470F4
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r2, r0, 0
|
||||
adds r2, 0x60
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080470F4
|
||||
ldrb r0, [r2]
|
||||
ands r0, r6
|
||||
cmp r0, 0
|
||||
beq _080470F4
|
||||
_080470E2:
|
||||
movs r0, 0x1
|
||||
b _080470FC
|
||||
.align 2, 0
|
||||
_080470E8: .4byte gTeamInventory_203B460
|
||||
_080470EC: .4byte gDungeonGlobalData
|
||||
_080470F0: .4byte 0x0001357c
|
||||
_080470F4:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _080470B0
|
||||
movs r0, 0
|
||||
_080470FC:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8047084
|
||||
|
||||
thumb_func_start sub_8047104
|
||||
sub_8047104:
|
||||
push {r4-r6,lr}
|
||||
movs r6, 0
|
||||
movs r5, 0
|
||||
_0804710A:
|
||||
ldr r0, _08047154
|
||||
lsls r1, r6, 2
|
||||
ldr r0, [r0]
|
||||
adds r4, r0, r1
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08047142
|
||||
ldrb r0, [r4, 0x2]
|
||||
cmp r0, 0x69
|
||||
bne _08047132
|
||||
adds r0, r4, 0
|
||||
bl GetMoneyValue
|
||||
bl AddToTeamMoney
|
||||
strb r5, [r4, 0x2]
|
||||
strb r5, [r4, 0x1]
|
||||
strb r5, [r4]
|
||||
_08047132:
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08047142
|
||||
strb r5, [r4, 0x2]
|
||||
strb r5, [r4, 0x1]
|
||||
strb r5, [r4]
|
||||
_08047142:
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x13
|
||||
ble _0804710A
|
||||
bl FillInventoryGaps
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08047154: .4byte gTeamInventory_203B460
|
||||
thumb_func_end sub_8047104
|
||||
|
||||
thumb_func_start sub_8047158
|
||||
sub_8047158:
|
||||
push {r4-r6,lr}
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ _0804B16A:
|
|||
beq _0804B17E
|
||||
movs r0, 0x2
|
||||
movs r1, 0x9
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x2
|
||||
movs r1, 0x8
|
||||
|
|
@ -214,12 +214,12 @@ _0804B16A:
|
|||
_0804B17E:
|
||||
movs r0, 0x2
|
||||
movs r1, 0x5
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x2
|
||||
movs r1, 0x4
|
||||
_0804B18C:
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
cmp r5, 0x6
|
||||
bgt _0804B19A
|
||||
|
|
@ -1145,11 +1145,11 @@ _0804B8B4:
|
|||
subs r5, 0x3
|
||||
movs r0, 0x5
|
||||
adds r1, r4, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r8, r0
|
||||
movs r0, 0x4
|
||||
adds r1, r5, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r6, r0, 0
|
||||
mov r2, r8
|
||||
subs r4, r2
|
||||
|
|
@ -1279,12 +1279,12 @@ _0804B9F4:
|
|||
subs r4, r3
|
||||
subs r4, 0x3
|
||||
adds r1, r0, r1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
adds r4, r6, r4
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
strh r5, [r7]
|
||||
adds r0, r5, 0x1
|
||||
|
|
@ -1756,11 +1756,11 @@ _0804BDD8:
|
|||
subs r5, 0x3
|
||||
movs r0, 0x5
|
||||
adds r1, r4, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r8, r0
|
||||
movs r0, 0x4
|
||||
adds r1, r5, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r6, r0, 0
|
||||
mov r0, r8
|
||||
subs r4, r0
|
||||
|
|
@ -1887,12 +1887,12 @@ _0804BF00:
|
|||
subs r4, r3
|
||||
subs r4, 0x3
|
||||
adds r1, r0, r1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
add r4, r8
|
||||
mov r0, r8
|
||||
adds r1, r4, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
strh r5, [r7]
|
||||
adds r0, r5, 0x1
|
||||
|
|
@ -3308,11 +3308,11 @@ _0804CA3C:
|
|||
subs r5, 0x3
|
||||
movs r0, 0xA
|
||||
adds r1, r4, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r8, r0
|
||||
movs r0, 0x10
|
||||
adds r1, r5, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r6, r0, 0
|
||||
mov r0, r8
|
||||
subs r4, r0
|
||||
|
|
@ -3528,13 +3528,13 @@ _0804CC52:
|
|||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x4
|
||||
ldrsh r1, [r4, r2]
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r7, r0, 0
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r4, r3]
|
||||
movs r2, 0x6
|
||||
ldrsh r1, [r4, r2]
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r6, r0, 0
|
||||
movs r0, 0x4
|
||||
bl DungeonRandomCapped
|
||||
|
|
@ -4474,11 +4474,11 @@ _0804D352:
|
|||
_0804D35A:
|
||||
movs r0, 0x5
|
||||
adds r1, r4, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r6, r0, 0
|
||||
movs r0, 0x4
|
||||
mov r1, r8
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
movs r1, 0x1
|
||||
adds r0, r6, 0
|
||||
|
|
@ -4663,14 +4663,14 @@ _0804D4BA:
|
|||
adds r1, r5, r4
|
||||
subs r1, r3
|
||||
str r2, [sp, 0x30]
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
ldr r1, [sp, 0x18]
|
||||
adds r0, r1, r6
|
||||
add r1, r8
|
||||
ldr r2, [sp, 0x30]
|
||||
subs r1, r2
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
strh r5, [r7]
|
||||
adds r0, r5, 0x1
|
||||
|
|
@ -5398,7 +5398,7 @@ _0804D9E0:
|
|||
movs r3, 0x4
|
||||
ldrsh r1, [r4, r3]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r9, r0
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r4, r1]
|
||||
|
|
@ -5406,7 +5406,7 @@ _0804D9E0:
|
|||
movs r2, 0x6
|
||||
ldrsh r1, [r4, r2]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
b _0804DA1A
|
||||
.align 2, 0
|
||||
|
|
@ -5433,7 +5433,7 @@ _0804DA1A:
|
|||
movs r3, 0x4
|
||||
ldrsh r1, [r6, r3]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r2, r0, 0
|
||||
b _0804DA44
|
||||
_0804DA40:
|
||||
|
|
@ -5481,7 +5481,7 @@ _0804DA74:
|
|||
movs r2, 0x24
|
||||
ldrsh r1, [r5, r2]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r2, r0, 0
|
||||
b _0804DAA0
|
||||
_0804DA9C:
|
||||
|
|
@ -5530,7 +5530,7 @@ _0804DAD4:
|
|||
movs r2, 0x6
|
||||
ldrsh r1, [r7, r2]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r3, r0, 0
|
||||
b _0804DAFE
|
||||
_0804DAFA:
|
||||
|
|
@ -5578,7 +5578,7 @@ _0804DB2E:
|
|||
movs r3, 0x6
|
||||
ldrsh r1, [r1, r3]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r3, r0, 0
|
||||
b _0804DB5C
|
||||
_0804DB56:
|
||||
|
|
@ -7121,7 +7121,7 @@ _0804E63C:
|
|||
movs r2, 0x4
|
||||
ldrsh r1, [r4, r2]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
str r0, [sp, 0x24]
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r4, r3]
|
||||
|
|
@ -7129,7 +7129,7 @@ _0804E63C:
|
|||
movs r5, 0x6
|
||||
ldrsh r1, [r4, r5]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
ldr r0, [sp, 0x20]
|
||||
cmp r0, 0
|
||||
|
|
@ -7153,7 +7153,7 @@ _0804E63C:
|
|||
movs r2, 0x4
|
||||
ldrsh r1, [r4, r2]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r4, r3]
|
||||
|
|
@ -7161,7 +7161,7 @@ _0804E63C:
|
|||
movs r2, 0x6
|
||||
ldrsh r1, [r4, r2]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
b _0804E6AC
|
||||
.align 2, 0
|
||||
_0804E6A4: .4byte 0xfffffe20
|
||||
|
|
@ -7217,7 +7217,7 @@ _0804E6DC:
|
|||
movs r4, 0x24
|
||||
ldrsh r1, [r6, r4]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
movs r1, 0x22
|
||||
ldrsh r0, [r6, r1]
|
||||
|
|
@ -7225,7 +7225,7 @@ _0804E6DC:
|
|||
movs r2, 0x26
|
||||
ldrsh r1, [r6, r2]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
b _0804E728
|
||||
_0804E724:
|
||||
movs r3, 0x20
|
||||
|
|
@ -7276,14 +7276,14 @@ _0804E758:
|
|||
movs r2, 0x4
|
||||
ldrsh r1, [r7, r2]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r7, r3]
|
||||
adds r0, 0x1
|
||||
movs r4, 0x6
|
||||
ldrsh r1, [r7, r4]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r3, r0, 0
|
||||
b _0804E79E
|
||||
_0804E79A:
|
||||
|
|
@ -7335,7 +7335,7 @@ _0804E7C8:
|
|||
movs r4, 0x4
|
||||
ldrsh r1, [r2, r4]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r1, r8
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r1, r2]
|
||||
|
|
@ -7343,7 +7343,7 @@ _0804E7C8:
|
|||
movs r3, 0x6
|
||||
ldrsh r1, [r1, r3]
|
||||
subs r1, 0x1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r3, r0, 0
|
||||
b _0804E818
|
||||
_0804E812:
|
||||
|
|
@ -9728,7 +9728,7 @@ _0804F9EC:
|
|||
_0804F9FC:
|
||||
adds r0, r2, 0x2
|
||||
subs r1, r3, 0x3
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
movs r5, 0x2
|
||||
ldrsh r0, [r7, r5]
|
||||
|
|
@ -9736,7 +9736,7 @@ _0804F9FC:
|
|||
movs r2, 0x6
|
||||
ldrsh r1, [r7, r2]
|
||||
subs r1, 0x3
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r10, r0
|
||||
movs r3, 0
|
||||
ldrsh r0, [r7, r3]
|
||||
|
|
@ -9744,7 +9744,7 @@ _0804F9FC:
|
|||
movs r5, 0x4
|
||||
ldrsh r1, [r7, r5]
|
||||
subs r1, 0x3
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r9, r0
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r7, r1]
|
||||
|
|
@ -9752,7 +9752,7 @@ _0804F9FC:
|
|||
movs r2, 0x6
|
||||
ldrsh r1, [r7, r2]
|
||||
subs r1, 0x3
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r6, r0, 0
|
||||
ldr r1, _0804FA94
|
||||
ldr r0, [r1]
|
||||
|
|
@ -10631,7 +10631,7 @@ _08050092:
|
|||
beq _080500FA
|
||||
subs r0, r4, 0x2
|
||||
adds r1, r4, 0x2
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
bgt _080500BC
|
||||
|
|
@ -10708,7 +10708,7 @@ _08050128:
|
|||
beq _0805018E
|
||||
subs r0, r4, 0x2
|
||||
adds r1, r4, 0x2
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
ble _0805018E
|
||||
|
|
@ -10800,7 +10800,7 @@ _080501E4:
|
|||
bl __divsi3
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0x5
|
||||
bgt _08050208
|
||||
|
|
@ -10933,7 +10933,7 @@ _080502F0:
|
|||
mov r2, r10
|
||||
ldrb r1, [r2, 0x10]
|
||||
lsrs r0, r1, 1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
ble _08050356
|
||||
|
|
@ -11107,7 +11107,7 @@ sub_8050438:
|
|||
cmp r1, 0
|
||||
ble _08050478
|
||||
lsrs r0, r1, 1
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r7, r0, 0
|
||||
cmp r7, 0
|
||||
bgt _0805047A
|
||||
|
|
@ -11346,7 +11346,7 @@ _08050608:
|
|||
bl __divsi3
|
||||
adds r1, r0, 0
|
||||
adds r0, r5, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r7, r0, 0
|
||||
cmp r7, 0
|
||||
bne _0805063E
|
||||
|
|
@ -11495,7 +11495,7 @@ _08050746:
|
|||
str r0, [sp, 0x78]
|
||||
movs r0, 0x2
|
||||
movs r1, 0x36
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r9, r0
|
||||
movs r2, 0
|
||||
str r2, [sp, 0x6C]
|
||||
|
|
@ -11934,11 +11934,11 @@ _08050A98:
|
|||
bgt _08050AC2
|
||||
movs r0, 0
|
||||
movs r1, 0x38
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r9, r0
|
||||
movs r0, 0
|
||||
movs r1, 0x20
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r8, r0
|
||||
mov r0, r9
|
||||
subs r0, 0x1
|
||||
|
|
@ -12689,11 +12689,11 @@ _08051020:
|
|||
beq _0805108C
|
||||
adds r0, r3, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r6, r0, 0
|
||||
adds r0, r5, 0
|
||||
adds r1, r7, 0
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
movs r1, 0x1
|
||||
adds r0, r6, 0
|
||||
|
|
@ -12858,7 +12858,7 @@ _08051162:
|
|||
adds r1, r5, r4
|
||||
subs r1, r3
|
||||
str r2, [sp, 0x34]
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r5, r0, 0
|
||||
ldr r2, [sp, 0x34]
|
||||
mov r1, r10
|
||||
|
|
@ -12866,7 +12866,7 @@ _08051162:
|
|||
adds r1, r7
|
||||
mov r2, r8
|
||||
subs r1, r2
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
strh r5, [r6]
|
||||
adds r0, r5, 0x1
|
||||
|
|
@ -13512,7 +13512,7 @@ sub_8051654:
|
|||
subs r1, r0
|
||||
subs r1, 0x2
|
||||
movs r0, 0x3
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r8, r0
|
||||
cmp r0, 0x2
|
||||
bgt _0805167C
|
||||
|
|
@ -13524,7 +13524,7 @@ _0805167C:
|
|||
subs r1, r0
|
||||
subs r1, 0x2
|
||||
movs r0, 0x3
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r9, r0
|
||||
cmp r0, 0x2
|
||||
bgt _08051694
|
||||
|
|
@ -13533,7 +13533,7 @@ _0805167C:
|
|||
_08051694:
|
||||
movs r0, 0x2
|
||||
movs r1, 0x4
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
mov r10, r0
|
||||
movs r5, 0
|
||||
cmp r5, r10
|
||||
|
|
|
|||
|
|
@ -4259,7 +4259,7 @@ _08054968:
|
|||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_8057A0C
|
||||
bl PainSplitMoveAction
|
||||
bl _080554BA
|
||||
_08054978:
|
||||
adds r0, r7, 0
|
||||
|
|
@ -5694,7 +5694,7 @@ _080554E6:
|
|||
b _08055530
|
||||
_08055510:
|
||||
mov r0, r8
|
||||
bl sub_8057088
|
||||
bl MoveCausesPaused
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08055530
|
||||
|
|
@ -9149,41 +9149,4 @@ _08057060:
|
|||
_0805706C: .4byte gUnknown_203B438
|
||||
thumb_func_end sub_8056F80
|
||||
|
||||
thumb_func_start sub_8057070
|
||||
sub_8057070:
|
||||
push {lr}
|
||||
bl GetMoveHitCount
|
||||
cmp r0, 0
|
||||
bne _08057082
|
||||
movs r0, 0x2
|
||||
movs r1, 0x6
|
||||
bl sub_808411C
|
||||
_08057082:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8057070
|
||||
|
||||
thumb_func_start sub_8057088
|
||||
sub_8057088:
|
||||
push {lr}
|
||||
ldrh r1, [r0, 0x2]
|
||||
cmp r1, 0xEE
|
||||
beq _080570A4
|
||||
cmp r1, 0xEF
|
||||
beq _080570A4
|
||||
cmp r1, 0xF2
|
||||
beq _080570A4
|
||||
movs r0, 0x88
|
||||
lsls r0, 1
|
||||
cmp r1, r0
|
||||
beq _080570A4
|
||||
movs r0, 0
|
||||
b _080570A6
|
||||
_080570A4:
|
||||
movs r0, 0x1
|
||||
_080570A6:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8057088
|
||||
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -248,41 +248,4 @@ _08057302:
|
|||
bx r1
|
||||
thumb_func_end sub_805727C
|
||||
|
||||
thumb_func_start sub_8057308
|
||||
sub_8057308:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0805731C
|
||||
movs r0, 0
|
||||
b _08057340
|
||||
_0805731C:
|
||||
cmp r4, 0
|
||||
bne _08057324
|
||||
movs r0, 0x1
|
||||
b _08057340
|
||||
_08057324:
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x26
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08057336
|
||||
adds r0, r4, 0
|
||||
b _08057338
|
||||
_08057336:
|
||||
lsls r0, r4, 1
|
||||
_08057338:
|
||||
bl RollPercentChance_2
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
_08057340:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8057308
|
||||
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -5,482 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8057A0C
|
||||
sub_8057A0C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, 0
|
||||
adds r6, r1, 0
|
||||
ldr r2, [r5, 0x70]
|
||||
mov r8, r2
|
||||
ldr r0, [r6, 0x70]
|
||||
adds r3, r0, 0
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r2, r1]
|
||||
movs r4, 0xE
|
||||
ldrsh r1, [r3, r4]
|
||||
adds r0, r1
|
||||
lsrs r1, r0, 31
|
||||
adds r0, r1
|
||||
asrs r0, 1
|
||||
strh r0, [r2, 0xE]
|
||||
strh r0, [r3, 0xE]
|
||||
movs r7, 0xE
|
||||
ldrsh r1, [r2, r7]
|
||||
ldrh r4, [r2, 0x10]
|
||||
movs r7, 0x10
|
||||
ldrsh r0, [r2, r7]
|
||||
cmp r1, r0
|
||||
ble _08057A42
|
||||
strh r4, [r2, 0xE]
|
||||
_08057A42:
|
||||
movs r0, 0xE
|
||||
ldrsh r1, [r3, r0]
|
||||
ldrh r2, [r3, 0x10]
|
||||
movs r4, 0x10
|
||||
ldrsh r0, [r3, r4]
|
||||
cmp r1, r0
|
||||
ble _08057A52
|
||||
strh r2, [r3, 0xE]
|
||||
_08057A52:
|
||||
ldr r4, _08057A90
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
adds r4, 0x50
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
mov r1, r8
|
||||
adds r1, 0xFB
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
bne _08057A78
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
_08057A78:
|
||||
ldr r0, _08057A94
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_80522F4
|
||||
movs r0, 0x1
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057A90: .4byte gAvailablePokemonNames
|
||||
_08057A94: .4byte gUnknown_80FC7EC
|
||||
thumb_func_end sub_8057A0C
|
||||
|
||||
thumb_func_start TormentMoveAction
|
||||
TormentMoveAction:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x10
|
||||
mov r10, r0
|
||||
mov r8, r1
|
||||
ldr r0, [r1, 0x70]
|
||||
str r0, [sp, 0x8]
|
||||
movs r1, 0
|
||||
str r1, [sp, 0xC]
|
||||
movs r1, 0x8C
|
||||
lsls r1, 1
|
||||
adds r4, r0, r1
|
||||
adds r5, r4, 0
|
||||
movs r0, 0x10
|
||||
mov r9, r0
|
||||
movs r7, 0x3
|
||||
_08057ABE:
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08057B12
|
||||
movs r6, 0x20
|
||||
movs r0, 0x20
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08057B04
|
||||
mov r0, r9
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08057B12
|
||||
ldr r0, _08057AFC
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl sub_80928C0
|
||||
ldr r0, _08057B00
|
||||
ldr r2, [r0]
|
||||
mov r0, r10
|
||||
mov r1, r8
|
||||
bl sub_80522F4
|
||||
ldrb r0, [r4]
|
||||
orrs r0, r6
|
||||
strb r0, [r4]
|
||||
movs r1, 0x1
|
||||
str r1, [sp, 0xC]
|
||||
b _08057B12
|
||||
.align 2, 0
|
||||
_08057AFC: .4byte gUnknown_202DE58
|
||||
_08057B00: .4byte gUnknown_80FCFBC
|
||||
_08057B04:
|
||||
mov r0, r9
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08057B12
|
||||
movs r0, 0xDF
|
||||
ands r0, r1
|
||||
strb r0, [r4]
|
||||
_08057B12:
|
||||
adds r4, 0x8
|
||||
adds r5, 0x8
|
||||
subs r7, 0x1
|
||||
cmp r7, 0
|
||||
bge _08057ABE
|
||||
ldr r0, [sp, 0x8]
|
||||
movs r1, 0x9C
|
||||
lsls r1, 1
|
||||
adds r4, r0, r1
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x20
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08057B6C
|
||||
movs r0, 0x10
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08057B7A
|
||||
movs r1, 0xB0
|
||||
lsls r1, 1
|
||||
mov r0, sp
|
||||
bl InitPokemonMove
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x20
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
movs r0, 0x1
|
||||
str r0, [sp, 0xC]
|
||||
ldr r0, _08057B64
|
||||
mov r1, sp
|
||||
movs r2, 0
|
||||
bl sub_80928C0
|
||||
ldr r0, _08057B68
|
||||
ldr r2, [r0]
|
||||
mov r0, r10
|
||||
mov r1, r8
|
||||
bl sub_80522F4
|
||||
b _08057B7A
|
||||
.align 2, 0
|
||||
_08057B64: .4byte gUnknown_202DE58
|
||||
_08057B68: .4byte gUnknown_80FCFBC
|
||||
_08057B6C:
|
||||
movs r0, 0x10
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08057B7A
|
||||
movs r0, 0xDF
|
||||
ands r0, r1
|
||||
strb r0, [r4]
|
||||
_08057B7A:
|
||||
ldr r1, [sp, 0xC]
|
||||
cmp r1, 0
|
||||
beq _08057B90
|
||||
ldr r1, [sp, 0x8]
|
||||
adds r1, 0xC0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x1
|
||||
bne _08057B9C
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
b _08057B9C
|
||||
_08057B90:
|
||||
ldr r0, _08057BB0
|
||||
ldr r2, [r0]
|
||||
mov r0, r10
|
||||
mov r1, r8
|
||||
bl sub_80522F4
|
||||
_08057B9C:
|
||||
ldr r0, [sp, 0xC]
|
||||
add sp, 0x10
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057BB0: .4byte gUnknown_80FCFE4
|
||||
thumb_func_end TormentMoveAction
|
||||
|
||||
thumb_func_start sub_8057BB4
|
||||
sub_8057BB4:
|
||||
push {lr}
|
||||
movs r2, 0x1
|
||||
movs r3, 0x1
|
||||
bl sub_80779F0
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8057BB4
|
||||
|
||||
thumb_func_start sub_8057BC4
|
||||
sub_8057BC4:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8077AE4
|
||||
ldr r0, _08057BE8
|
||||
ldr r2, [r0]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r3, 0x2
|
||||
bl sub_8077084
|
||||
movs r0, 0x1
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057BE8: .4byte gUnknown_8106A4C
|
||||
thumb_func_end sub_8057BC4
|
||||
|
||||
thumb_func_start sub_8057BEC
|
||||
sub_8057BEC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x4
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r7, r2, 0
|
||||
adds r6, r3, 0
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
adds r0, r4, 0
|
||||
bl IsSleeping
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08057C48
|
||||
movs r3, 0x80
|
||||
lsls r3, 1
|
||||
str r6, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
adds r2, r7, 0
|
||||
bl sub_8055640
|
||||
cmp r0, 0
|
||||
beq _08057C54
|
||||
movs r1, 0x1
|
||||
mov r8, r1
|
||||
ldr r0, _08057C44
|
||||
movs r1, 0
|
||||
ldrsh r2, [r0, r1]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_805727C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08057C54
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl sub_80776C0
|
||||
b _08057C54
|
||||
.align 2, 0
|
||||
_08057C44: .4byte gUnknown_80F4E0A
|
||||
_08057C48:
|
||||
ldr r0, _08057C64
|
||||
ldr r2, [r0]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_80522F4
|
||||
_08057C54:
|
||||
mov r0, r8
|
||||
add sp, 0x4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057C64: .4byte gUnknown_80FC734
|
||||
thumb_func_end sub_8057BEC
|
||||
|
||||
thumb_func_start sub_8057C68
|
||||
sub_8057C68:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
ldr r2, _08057C84
|
||||
ldr r2, [r2]
|
||||
movs r3, 0x1
|
||||
str r3, [sp]
|
||||
movs r3, 0x40
|
||||
bl sub_8077434
|
||||
movs r0, 0x1
|
||||
add sp, 0x4
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057C84: .4byte gUnknown_8106A4C
|
||||
thumb_func_end sub_8057C68
|
||||
|
||||
thumb_func_start sub_8057C88
|
||||
sub_8057C88:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
adds r5, r0, 0
|
||||
adds r6, r1, 0
|
||||
movs r7, 0
|
||||
movs r4, 0x80
|
||||
lsls r4, 1
|
||||
str r3, [sp]
|
||||
adds r3, r4, 0
|
||||
bl sub_8055640
|
||||
cmp r0, 0
|
||||
beq _08057CC2
|
||||
movs r7, 0x1
|
||||
ldr r0, _08057CCC
|
||||
movs r1, 0
|
||||
ldrsh r2, [r0, r1]
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_805727C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08057CC2
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
movs r2, 0
|
||||
bl sub_80776C0
|
||||
_08057CC2:
|
||||
adds r0, r7, 0
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057CCC: .4byte gUnknown_80F4DF6
|
||||
thumb_func_end sub_8057C88
|
||||
|
||||
thumb_func_start sub_8057CD0
|
||||
sub_8057CD0:
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
adds r6, r1, 0
|
||||
mov r8, r2
|
||||
adds r5, r3, 0
|
||||
bl GetWeather
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r1, _08057D18
|
||||
adds r1, r0, r1
|
||||
ldrb r2, [r1]
|
||||
ldr r1, _08057D1C
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
str r0, [sp]
|
||||
str r5, [sp, 0x4]
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
mov r3, r8
|
||||
bl sub_80556BC
|
||||
cmp r0, 0
|
||||
beq _08057D0A
|
||||
movs r0, 0x1
|
||||
_08057D0A:
|
||||
add sp, 0x8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057D18: .4byte gUnknown_80F51E4
|
||||
_08057D1C: .4byte gUnknown_80F51EC
|
||||
thumb_func_end sub_8057CD0
|
||||
|
||||
thumb_func_start sub_8057D20
|
||||
sub_8057D20:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r7, 0
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0xC0
|
||||
ldrb r0, [r0]
|
||||
movs r6, 0x80
|
||||
lsls r6, 1
|
||||
cmp r0, 0x9
|
||||
bne _08057D3C
|
||||
movs r6, 0x80
|
||||
lsls r6, 2
|
||||
_08057D3C:
|
||||
str r3, [sp]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_8055640
|
||||
cmp r0, 0
|
||||
beq _08057D6E
|
||||
movs r7, 0x1
|
||||
ldr r0, _08057D78
|
||||
movs r1, 0
|
||||
ldrsh r2, [r0, r1]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_805727C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08057D6E
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x3B
|
||||
movs r3, 0
|
||||
bl sub_80768DC
|
||||
_08057D6E:
|
||||
adds r0, r7, 0
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057D78: .4byte gUnknown_80F4E08
|
||||
thumb_func_end sub_8057D20
|
||||
|
||||
thumb_func_start sub_8057D7C
|
||||
sub_8057D7C:
|
||||
push {lr}
|
||||
sub sp, 0x8
|
||||
ldr r2, _08057D98
|
||||
ldr r2, [r2]
|
||||
movs r3, 0x1
|
||||
str r3, [sp]
|
||||
str r3, [sp, 0x4]
|
||||
movs r3, 0x2
|
||||
bl sub_8076F80
|
||||
movs r0, 0x1
|
||||
add sp, 0x8
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08057D98: .4byte gUnknown_8106A50
|
||||
thumb_func_end sub_8057D7C
|
||||
|
||||
thumb_func_start sub_8057D9C
|
||||
sub_8057D9C:
|
||||
push {r4-r7,lr}
|
||||
|
|
@ -2467,7 +1991,7 @@ sub_8058C48:
|
|||
movs r1, 0xC0
|
||||
lsls r1, 1
|
||||
movs r0, 0x80
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r3, r0, 0
|
||||
ldr r0, [r4, 0x70]
|
||||
ldrb r0, [r0, 0x9]
|
||||
|
|
@ -9599,378 +9123,4 @@ sub_805C1BC:
|
|||
_0805C1E0: .4byte gUnknown_80F4F80
|
||||
thumb_func_end sub_805C1BC
|
||||
|
||||
thumb_func_start sub_805C1E4
|
||||
sub_805C1E4:
|
||||
push {lr}
|
||||
ldr r2, _0805C1F4
|
||||
ldr r2, [r2]
|
||||
bl sub_80522F4
|
||||
movs r0, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0805C1F4: .4byte gUnknown_80FD454
|
||||
thumb_func_end sub_805C1E4
|
||||
|
||||
thumb_func_start sub_805C1F8
|
||||
sub_805C1F8:
|
||||
push {lr}
|
||||
movs r2, 0x1
|
||||
bl sub_8077BB4
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C1F8
|
||||
|
||||
thumb_func_start sub_805C208
|
||||
sub_805C208:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x1C
|
||||
adds r7, r0, 0
|
||||
mov r9, r1
|
||||
adds r6, r2, 0
|
||||
mov r8, r3
|
||||
movs r5, 0
|
||||
add r0, sp, 0x18
|
||||
strb r5, [r0]
|
||||
ldr r0, [r1, 0x70]
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r0, r1]
|
||||
bl GetSizeOrbDmg
|
||||
mov r10, r0
|
||||
adds r0, r6, 0
|
||||
bl GetMoveType
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
adds r0, r6, 0
|
||||
mov r1, r8
|
||||
bl sub_8057600
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
add r1, sp, 0x18
|
||||
str r1, [sp]
|
||||
str r4, [sp, 0x4]
|
||||
str r0, [sp, 0x8]
|
||||
str r5, [sp, 0xC]
|
||||
movs r0, 0x1
|
||||
str r0, [sp, 0x10]
|
||||
str r5, [sp, 0x14]
|
||||
adds r0, r7, 0
|
||||
mov r1, r9
|
||||
mov r2, r10
|
||||
movs r3, 0x1
|
||||
bl sub_806F370
|
||||
add r1, sp, 0x18
|
||||
movs r2, 0
|
||||
adds r0, r1, 0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0805C270
|
||||
movs r2, 0x1
|
||||
_0805C270:
|
||||
strb r2, [r1]
|
||||
add r0, sp, 0x18
|
||||
ldrb r0, [r0]
|
||||
add sp, 0x1C
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C208
|
||||
|
||||
thumb_func_start sub_805C288
|
||||
sub_805C288:
|
||||
push {lr}
|
||||
ldr r2, _0805C29C
|
||||
movs r3, 0
|
||||
ldrsh r2, [r2, r3]
|
||||
movs r3, 0
|
||||
bl sub_8078A58
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0805C29C: .4byte gUnknown_80F4FC6
|
||||
thumb_func_end sub_805C288
|
||||
|
||||
thumb_func_start sub_805C2A0
|
||||
sub_805C2A0:
|
||||
push {lr}
|
||||
bl sub_807DC68
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C2A0
|
||||
|
||||
thumb_func_start FillInOrbAction
|
||||
FillInOrbAction:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
sub sp, 0x4
|
||||
mov r8, r0
|
||||
adds r7, r1, 0
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
ldr r5, [r7, 0x70]
|
||||
bl IsBossBattle
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0805C2DC
|
||||
ldr r0, _0805C2D8
|
||||
ldr r1, [r0]
|
||||
mov r0, r8
|
||||
bl SendMessage
|
||||
movs r0, 0
|
||||
b _0805C3CA
|
||||
.align 2, 0
|
||||
_0805C2D8: .4byte gUnknown_80FD0B8
|
||||
_0805C2DC:
|
||||
ldr r4, _0805C3A0
|
||||
adds r3, r5, 0
|
||||
adds r3, 0x46
|
||||
ldrb r0, [r3]
|
||||
lsls r0, 2
|
||||
adds r0, r4
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r7, 0x4]
|
||||
adds r0, r1
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r2, _0805C3A4
|
||||
ldr r1, [sp]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
ldrb r0, [r3]
|
||||
lsls r0, 2
|
||||
adds r0, r4
|
||||
ldrh r0, [r0, 0x2]
|
||||
ldrh r2, [r7, 0x6]
|
||||
adds r0, r2
|
||||
lsls r0, 16
|
||||
ldr r2, _0805C3A8
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r4, sp
|
||||
mov r0, sp
|
||||
bl sub_8042A54
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
bl GetMapTile_2
|
||||
adds r2, r0, 0
|
||||
ldrh r1, [r2]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0x2
|
||||
bne _0805C36C
|
||||
ldr r0, _0805C3AC
|
||||
ands r0, r1
|
||||
movs r1, 0x1
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
movs r5, 0x1
|
||||
negs r5, r5
|
||||
mov r6, sp
|
||||
_0805C344:
|
||||
movs r4, 0x1
|
||||
negs r4, r4
|
||||
_0805C348:
|
||||
movs r1, 0
|
||||
ldrsh r0, [r6, r1]
|
||||
adds r0, r4
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r6, r2]
|
||||
adds r1, r5
|
||||
bl sub_80498A8
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x1
|
||||
ble _0805C348
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x1
|
||||
ble _0805C344
|
||||
movs r0, 0x1
|
||||
mov r9, r0
|
||||
bl sub_806CF60
|
||||
_0805C36C:
|
||||
movs r5, 0
|
||||
_0805C36E:
|
||||
movs r4, 0
|
||||
adds r6, r5, 0x1
|
||||
_0805C372:
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_8049BB0
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x37
|
||||
ble _0805C372
|
||||
adds r5, r6, 0
|
||||
cmp r5, 0x1F
|
||||
ble _0805C36E
|
||||
mov r1, r9
|
||||
cmp r1, 0
|
||||
beq _0805C3B4
|
||||
mov r0, sp
|
||||
bl sub_8042A64
|
||||
ldr r0, _0805C3B0
|
||||
ldr r2, [r0]
|
||||
mov r0, r8
|
||||
adds r1, r7, 0
|
||||
bl sub_80522F4
|
||||
b _0805C3C0
|
||||
.align 2, 0
|
||||
_0805C3A0: .4byte gAdjacentTileOffsets
|
||||
_0805C3A4: .4byte 0xffff0000
|
||||
_0805C3A8: .4byte 0x0000ffff
|
||||
_0805C3AC: .4byte 0x0000fffc
|
||||
_0805C3B0: .4byte gUnknown_80FD0B4
|
||||
_0805C3B4:
|
||||
ldr r0, _0805C3D8
|
||||
ldr r2, [r0]
|
||||
mov r0, r8
|
||||
adds r1, r7, 0
|
||||
bl sub_80522F4
|
||||
_0805C3C0:
|
||||
bl sub_8040A84
|
||||
bl sub_8049ED4
|
||||
mov r0, r9
|
||||
_0805C3CA:
|
||||
add sp, 0x4
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0805C3D8: .4byte gUnknown_80FD0B8
|
||||
thumb_func_end FillInOrbAction
|
||||
|
||||
thumb_func_start sub_805C3DC
|
||||
sub_805C3DC:
|
||||
push {lr}
|
||||
ldr r0, [r1, 0x70]
|
||||
ldrb r0, [r0, 0x6]
|
||||
movs r2, 0x1
|
||||
cmp r0, 0
|
||||
beq _0805C3EA
|
||||
movs r2, 0x2
|
||||
_0805C3EA:
|
||||
adds r0, r1, 0x4
|
||||
movs r1, 0x14
|
||||
bl sub_807FC3C
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C3DC
|
||||
|
||||
thumb_func_start sub_805C3F8
|
||||
sub_805C3F8:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x8
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r0, [r4, 0x4]
|
||||
str r0, [sp, 0x4]
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0xA4
|
||||
ldrb r1, [r0]
|
||||
cmp r1, 0
|
||||
bne _0805C442
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x20
|
||||
strb r1, [r0]
|
||||
movs r0, 0
|
||||
bl sub_803D73C
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
mov r0, sp
|
||||
movs r2, 0
|
||||
bl sub_8045C28
|
||||
add r1, sp, 0x4
|
||||
adds r0, r5, 0
|
||||
mov r2, sp
|
||||
bl sub_80464C8
|
||||
movs r1, 0x86
|
||||
lsls r1, 2
|
||||
adds r0, r4, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_8068FE0
|
||||
movs r0, 0x1
|
||||
b _0805C450
|
||||
_0805C442:
|
||||
ldr r0, _0805C458
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
movs r0, 0
|
||||
_0805C450:
|
||||
add sp, 0x8
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0805C458: .4byte gUnknown_80FF678
|
||||
thumb_func_end sub_805C3F8
|
||||
|
||||
thumb_func_start sub_805C45C
|
||||
sub_805C45C:
|
||||
push {lr}
|
||||
bl sub_807F43C
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C45C
|
||||
|
||||
thumb_func_start sub_805C468
|
||||
sub_805C468:
|
||||
push {lr}
|
||||
bl sub_8078F50
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C468
|
||||
|
||||
thumb_func_start sub_805C474
|
||||
sub_805C474:
|
||||
push {lr}
|
||||
bl sub_8077E4C
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C474
|
||||
|
||||
thumb_func_start sub_805C480
|
||||
sub_805C480:
|
||||
push {lr}
|
||||
bl sub_8079570
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C480
|
||||
|
||||
thumb_func_start sub_805C48C
|
||||
sub_805C48C:
|
||||
push {lr}
|
||||
bl sub_80795C4
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805C48C
|
||||
|
||||
.align 2, 0
|
||||
|
|
@ -505,7 +505,7 @@ _0805DCCC:
|
|||
movs r1, 0x14
|
||||
bl SetAction
|
||||
mov r0, r10
|
||||
bl sub_8045B60
|
||||
bl GetTeamMemberEntityIndex
|
||||
mov r1, r8
|
||||
adds r1, 0x48
|
||||
strb r0, [r1]
|
||||
|
|
@ -11139,7 +11139,7 @@ _080632BC:
|
|||
beq _080632DE
|
||||
_080632CC:
|
||||
mov r0, r8
|
||||
bl sub_8045B60
|
||||
bl GetTeamMemberEntityIndex
|
||||
adds r2, r0, 0
|
||||
adds r0, r7, 0
|
||||
adds r1, r6, 0
|
||||
|
|
@ -11202,7 +11202,7 @@ _0806334A:
|
|||
cmp r0, 0
|
||||
beq _08063384
|
||||
mov r0, r8
|
||||
bl sub_8045B60
|
||||
bl GetTeamMemberEntityIndex
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
bl sub_80637A4
|
||||
|
|
@ -24560,4 +24560,4 @@ _08069D6C:
|
|||
bx r0
|
||||
thumb_func_end sub_8069D4C
|
||||
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -192,120 +192,4 @@ _08071380:
|
|||
bx r1
|
||||
thumb_func_end CanMoveForward
|
||||
|
||||
thumb_func_start IsAtJunction
|
||||
IsAtJunction:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r0, [r4, 0x70]
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r0, r1]
|
||||
bl GetCrossableTerrain
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
bl IsFixedDungeon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080713E2
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x3
|
||||
beq _080713E0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x9
|
||||
bl HasItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080713E0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xC
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080713D2
|
||||
movs r5, 0x2
|
||||
b _080713E2
|
||||
_080713D2:
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xD
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080713E2
|
||||
_080713E0:
|
||||
movs r5, 0x3
|
||||
_080713E2:
|
||||
cmp r5, 0x3
|
||||
bne _08071408
|
||||
ldr r4, [r4, 0x70]
|
||||
movs r0, 0x64
|
||||
bl DungeonRandomCapped
|
||||
movs r1, 0xFD
|
||||
lsls r1, 1
|
||||
adds r2, r4, r1
|
||||
ldrh r1, [r2]
|
||||
adds r1, r0
|
||||
strh r1, [r2]
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
cmp r1, 0xC7
|
||||
ble _08071458
|
||||
movs r0, 0
|
||||
strh r0, [r2]
|
||||
b _08071468
|
||||
_08071408:
|
||||
ldr r1, _0807145C
|
||||
ldr r0, _08071460
|
||||
ldr r0, [r0]
|
||||
ldr r2, _08071464
|
||||
adds r0, r2
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _08071432
|
||||
cmp r5, 0x1
|
||||
bne _08071432
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x14
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08071432
|
||||
movs r5, 0
|
||||
_08071432:
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x6
|
||||
ldrsh r1, [r4, r2]
|
||||
bl GetMapTile_1
|
||||
adds r0, 0xA
|
||||
adds r0, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x54
|
||||
beq _08071468
|
||||
cmp r0, 0x51
|
||||
beq _08071468
|
||||
cmp r0, 0x45
|
||||
beq _08071468
|
||||
cmp r0, 0x15
|
||||
beq _08071468
|
||||
cmp r0, 0x55
|
||||
beq _08071468
|
||||
_08071458:
|
||||
movs r0, 0
|
||||
b _0807146A
|
||||
.align 2, 0
|
||||
_0807145C: .4byte gDungeonWaterType
|
||||
_08071460: .4byte gDungeonGlobalData
|
||||
_08071464: .4byte 0x00003a0e
|
||||
_08071468:
|
||||
movs r0, 0x1
|
||||
_0807146A:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end IsAtJunction
|
||||
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -1,54 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start CheckRunAwayVisualFlag
|
||||
CheckRunAwayVisualFlag:
|
||||
push {r4-r7,lr}
|
||||
adds r5, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r7, r1, 24
|
||||
ldr r4, [r5, 0x70]
|
||||
adds r6, r4, 0
|
||||
ldrb r0, [r4, 0x7]
|
||||
cmp r0, 0
|
||||
bne _08071590
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x2B
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08071590
|
||||
movs r2, 0
|
||||
movs r1, 0x10
|
||||
ldrsh r0, [r4, r1]
|
||||
lsrs r1, r0, 31
|
||||
adds r0, r1
|
||||
movs r3, 0xE
|
||||
ldrsh r1, [r4, r3]
|
||||
asrs r0, 1
|
||||
cmp r1, r0
|
||||
bgt _08071576
|
||||
movs r2, 0x1
|
||||
_08071576:
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x4
|
||||
bl SetVisualFlags
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r7, 0
|
||||
beq _08071590
|
||||
cmp r0, 0
|
||||
beq _08071590
|
||||
adds r0, r5, 0
|
||||
bl ShowVisualFlags
|
||||
_08071590:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end CheckRunAwayVisualFlag
|
||||
|
||||
.align 2, 0
|
||||
|
|
@ -5,72 +5,5 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_807167C
|
||||
sub_807167C:
|
||||
push {lr}
|
||||
ldr r2, [r0, 0x70]
|
||||
ldr r1, [r1, 0x70]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xA4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _080716D2
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4A
|
||||
beq _0807169A
|
||||
cmp r0, 0x47
|
||||
bne _0807169E
|
||||
_0807169A:
|
||||
movs r0, 0x1
|
||||
b _080716A0
|
||||
_0807169E:
|
||||
movs r0, 0
|
||||
_080716A0:
|
||||
cmp r0, 0
|
||||
bne _080716D2
|
||||
ldrb r0, [r2, 0x8]
|
||||
cmp r0, 0
|
||||
bne _080716D2
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xA4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _080716D2
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4A
|
||||
beq _080716C2
|
||||
cmp r0, 0x47
|
||||
bne _080716C6
|
||||
_080716C2:
|
||||
movs r0, 0x1
|
||||
b _080716C8
|
||||
_080716C6:
|
||||
movs r0, 0
|
||||
_080716C8:
|
||||
cmp r0, 0
|
||||
bne _080716D2
|
||||
ldrb r0, [r1, 0x8]
|
||||
cmp r0, 0
|
||||
beq _080716D6
|
||||
_080716D2:
|
||||
movs r0, 0x2
|
||||
b _080716E4
|
||||
_080716D6:
|
||||
ldrb r0, [r2, 0x6]
|
||||
ldrb r1, [r1, 0x6]
|
||||
cmp r0, r1
|
||||
bne _080716E2
|
||||
movs r0, 0
|
||||
b _080716E4
|
||||
_080716E2:
|
||||
movs r0, 0x1
|
||||
_080716E4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_807167C
|
||||
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -7237,7 +7237,7 @@ _0807ACB4:
|
|||
ldr r1, _0807AD78
|
||||
movs r4, 0
|
||||
ldrsh r1, [r1, r4]
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r7, r0, 0
|
||||
cmp r7, r8
|
||||
blt _0807ACCC
|
||||
|
|
@ -9183,4 +9183,4 @@ sub_807BB78:
|
|||
bx lr
|
||||
thumb_func_end sub_807BB78
|
||||
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -4,120 +4,6 @@
|
|||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_807E5AC
|
||||
sub_807E5AC:
|
||||
push {lr}
|
||||
ldr r0, _0807E5DC
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0807E5E0
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x8
|
||||
bne _0807E5C6
|
||||
movs r0, 0x8
|
||||
bl DungeonRandomCapped
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
_0807E5C6:
|
||||
bl sub_807E5E4
|
||||
bl TriggerWeatherAbilities
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
bl sub_807EAA0
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0807E5DC: .4byte gDungeonGlobalData
|
||||
_0807E5E0: .4byte 0x0001c578
|
||||
thumb_func_end sub_807E5AC
|
||||
|
||||
thumb_func_start sub_807E5E4
|
||||
sub_807E5E4:
|
||||
push {r4-r6,lr}
|
||||
ldr r3, _0807E674
|
||||
ldr r1, [r3]
|
||||
ldr r2, _0807E678
|
||||
adds r1, r2
|
||||
movs r4, 0
|
||||
strb r0, [r1]
|
||||
ldr r0, [r3]
|
||||
adds r2, r0, r2
|
||||
ldrb r1, [r2]
|
||||
ldr r2, _0807E67C
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
ldr r0, [r3]
|
||||
ldr r1, _0807E680
|
||||
adds r0, r1
|
||||
strb r4, [r0]
|
||||
movs r2, 0
|
||||
adds r4, r3, 0
|
||||
ldr r6, _0807E684
|
||||
movs r1, 0
|
||||
ldr r5, _0807E688
|
||||
_0807E610:
|
||||
ldr r0, [r4]
|
||||
adds r0, r6
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, r5
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
cmp r2, 0x7
|
||||
ble _0807E610
|
||||
ldr r0, [r3]
|
||||
ldr r2, _0807E68C
|
||||
adds r0, r2
|
||||
movs r2, 0
|
||||
movs r1, 0x9
|
||||
strb r1, [r0]
|
||||
ldr r0, [r3]
|
||||
ldr r1, _0807E690
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
ldr r0, [r3]
|
||||
adds r1, 0x1
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
movs r6, 0xBE
|
||||
lsls r6, 1
|
||||
ldr r5, _0807E694
|
||||
movs r4, 0xBF
|
||||
lsls r4, 1
|
||||
_0807E64C:
|
||||
ldr r0, [r3]
|
||||
lsls r1, r2, 2
|
||||
adds r0, r1
|
||||
adds r0, r6
|
||||
strb r2, [r0]
|
||||
ldr r0, [r3]
|
||||
adds r0, r1
|
||||
adds r0, r5
|
||||
strb r2, [r0]
|
||||
ldr r0, [r3]
|
||||
adds r0, r1
|
||||
adds r0, r4
|
||||
strb r2, [r0]
|
||||
adds r2, 0x1
|
||||
cmp r2, 0xFF
|
||||
ble _0807E64C
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0807E674: .4byte gDungeonGlobalData
|
||||
_0807E678: .4byte 0x0000e265
|
||||
_0807E67C: .4byte 0x0000e264
|
||||
_0807E680: .4byte 0x0000e279
|
||||
_0807E684: .4byte 0x0000e267
|
||||
_0807E688: .4byte 0x0000e26f
|
||||
_0807E68C: .4byte 0x0000e266
|
||||
_0807E690: .4byte 0x0000e277
|
||||
_0807E694: .4byte 0x0000017d
|
||||
thumb_func_end sub_807E5E4
|
||||
|
||||
thumb_func_start sub_807E698
|
||||
sub_807E698:
|
||||
|
|
@ -2118,7 +2004,7 @@ _0807F64E:
|
|||
_0807F654:
|
||||
ldr r0, [r4]
|
||||
ldr r1, [r4, 0x8]
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r2, _0807F6A0
|
||||
|
|
@ -2128,7 +2014,7 @@ _0807F654:
|
|||
str r1, [r6]
|
||||
ldr r0, [r4, 0x4]
|
||||
ldr r1, [r4, 0xC]
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
lsls r0, 16
|
||||
ldrh r1, [r6]
|
||||
orrs r1, r0
|
||||
|
|
@ -2851,39 +2737,4 @@ _0807FC34: .4byte 0x000001ff
|
|||
_0807FC38: .4byte 0x000181ea
|
||||
thumb_func_end sub_807FA9C
|
||||
|
||||
thumb_func_start sub_807FC3C
|
||||
sub_807FC3C:
|
||||
push {r4-r7,lr}
|
||||
ldr r6, _0807FC70
|
||||
ldr r4, [r6]
|
||||
ldrh r5, [r0]
|
||||
ldr r7, _0807FC74
|
||||
adds r3, r4, r7
|
||||
strh r5, [r3]
|
||||
ldrh r3, [r0, 0x2]
|
||||
ldr r5, _0807FC78
|
||||
adds r0, r4, r5
|
||||
strh r3, [r0]
|
||||
adds r7, 0x4
|
||||
adds r4, r7
|
||||
strb r1, [r4]
|
||||
ldr r0, [r6]
|
||||
ldr r1, _0807FC7C
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
ldr r0, [r6]
|
||||
subs r5, 0x6
|
||||
adds r0, r5
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0807FC70: .4byte gDungeonGlobalData
|
||||
_0807FC74: .4byte 0x00013574
|
||||
_0807FC78: .4byte 0x00013576
|
||||
_0807FC7C: .4byte 0x00013579
|
||||
thumb_func_end sub_807FC3C
|
||||
|
||||
.align 2, 0
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_808411C
|
||||
sub_808411C:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
cmp r5, r4
|
||||
beq _0808413C
|
||||
cmp r5, r4
|
||||
blt _08084134
|
||||
subs r0, r5, r4
|
||||
bl DungeonRandomCapped
|
||||
adds r0, r4
|
||||
b _0808413C
|
||||
_08084134:
|
||||
subs r0, r4, r5
|
||||
bl DungeonRandomCapped
|
||||
adds r0, r5
|
||||
_0808413C:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_808411C
|
||||
|
||||
.align 2, 0
|
||||
|
|
@ -15,7 +15,7 @@ sub_808417C:
|
|||
ldrsh r0, [r1, r2]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r1, r2]
|
||||
bl sub_808411C
|
||||
bl DungeonRandomRange
|
||||
adds r4, r0, 0
|
||||
adds r0, r5, 0
|
||||
bl EntityExists
|
||||
|
|
|
|||
|
|
@ -309,7 +309,7 @@ _080854C0:
|
|||
cmp r5, 0x3
|
||||
ble _08085490
|
||||
movs r0, 0x2
|
||||
bl sub_8085680
|
||||
bl GetEntityFromClientType
|
||||
_080854CC:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
|
|
@ -550,8 +550,8 @@ _08085678: .4byte gDungeonGlobalData
|
|||
_0808567C: .4byte 0x0001358c
|
||||
thumb_func_end sub_808563C
|
||||
|
||||
thumb_func_start sub_8085680
|
||||
sub_8085680:
|
||||
thumb_func_start GetEntityFromClientType
|
||||
GetEntityFromClientType:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
|
|
@ -588,7 +588,7 @@ _080856C0:
|
|||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8085680
|
||||
thumb_func_end GetEntityFromClientType
|
||||
|
||||
thumb_func_start sub_80856C8
|
||||
sub_80856C8:
|
||||
|
|
|
|||
|
|
@ -5,40 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8085B0C
|
||||
sub_8085B0C:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x1C
|
||||
adds r5, r0, 0
|
||||
ldr r1, _08085B48
|
||||
mov r0, sp
|
||||
movs r2, 0x19
|
||||
bl memcpy
|
||||
mov r0, sp
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08085B3E
|
||||
mov r4, sp
|
||||
_08085B26:
|
||||
ldrb r1, [r4]
|
||||
adds r0, r5, 0
|
||||
bl SetFacingDirection
|
||||
movs r0, 0x6
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r4, 0x1
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _08085B26
|
||||
_08085B3E:
|
||||
add sp, 0x1C
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08085B48: .4byte gUnknown_8107358
|
||||
thumb_func_end sub_8085B0C
|
||||
|
||||
thumb_func_start sub_8085B4C
|
||||
sub_8085B4C:
|
||||
push {r4-r6,lr}
|
||||
|
|
@ -180,8 +146,8 @@ _08085C4C: .4byte gAdjacentTileOffsets
|
|||
_08085C50: .4byte gUnknown_202F3D8
|
||||
thumb_func_end sub_8085B80
|
||||
|
||||
thumb_func_start sub_8085C54
|
||||
sub_8085C54:
|
||||
thumb_func_start SetDungeonBGColorRGB
|
||||
SetDungeonBGColorRGB:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
|
|
@ -482,7 +448,7 @@ _08085E88: .4byte 0xffff0000
|
|||
_08085E8C: .4byte gUnknown_202EE8C
|
||||
_08085E90: .4byte gUnknown_202ECA4
|
||||
_08085E94: .4byte 0x000181e4
|
||||
thumb_func_end sub_8085C54
|
||||
thumb_func_end SetDungeonBGColorRGB
|
||||
|
||||
thumb_func_start sub_8085E98
|
||||
sub_8085E98:
|
||||
|
|
|
|||
|
|
@ -108,18 +108,18 @@ TeamMeaniesPreFightDialogue:
|
|||
adds r4, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x10
|
||||
bl sub_80858AC
|
||||
bl ShiftCameraToPosition
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08087048: .4byte gUnknown_8100DB0
|
||||
_0808704C: .4byte gUnknown_8100E64
|
||||
_08087050: .4byte gUnknown_8100E88
|
||||
_08087054: .4byte gUnknown_8100F14
|
||||
_08087058: .4byte gUnknown_8101004
|
||||
_0808705C: .4byte gUnknown_8101050
|
||||
_08087060: .4byte gUnknown_81010D0
|
||||
_08087048: .4byte gTeamMeaniesPreFightDialogue_1
|
||||
_0808704C: .4byte gTeamMeaniesPreFightDialogue_2
|
||||
_08087050: .4byte gTeamMeaniesPreFightDialogue_3
|
||||
_08087054: .4byte gTeamMeaniesPreFightDialogue_4
|
||||
_08087058: .4byte gTeamMeaniesPreFightDialogue_5
|
||||
_0808705C: .4byte gTeamMeaniesPreFightDialogue_6
|
||||
_08087060: .4byte gTeamMeaniesPreFightDialogue_7
|
||||
thumb_func_end TeamMeaniesPreFightDialogue
|
||||
|
||||
thumb_func_start TeamMeaniesReFightDialogue
|
||||
|
|
@ -186,17 +186,17 @@ TeamMeaniesReFightDialogue:
|
|||
adds r4, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x10
|
||||
bl sub_80858AC
|
||||
bl ShiftCameraToPosition
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08087118: .4byte gUnknown_8101164
|
||||
_0808711C: .4byte gUnknown_8100E64
|
||||
_08087120: .4byte gUnknown_8101240
|
||||
_08087124: .4byte gUnknown_8101310
|
||||
_08087128: .4byte gUnknown_810137C
|
||||
_0808712C: .4byte gUnknown_8101408
|
||||
_08087118: .4byte gTeamMeaniesReFightDialogue_1
|
||||
_0808711C: .4byte gTeamMeaniesPreFightDialogue_2
|
||||
_08087120: .4byte gTeamMeaniesReFightDialogue_2
|
||||
_08087124: .4byte gTeamMeaniesReFightDialogue_3
|
||||
_08087128: .4byte gTeamMeaniesReFightDialogue_4
|
||||
_0808712C: .4byte gTeamMeaniesReFightDialogue_5
|
||||
thumb_func_end TeamMeaniesReFightDialogue
|
||||
|
||||
thumb_func_start sub_8087130
|
||||
|
|
@ -219,13 +219,13 @@ sub_8087144:
|
|||
push {r6,r7}
|
||||
sub sp, 0xF0
|
||||
movs r0, 0x5
|
||||
bl sub_8085680
|
||||
bl GetEntityFromClientType
|
||||
adds r7, r0, 0
|
||||
movs r0, 0x6
|
||||
bl sub_8085680
|
||||
bl GetEntityFromClientType
|
||||
mov r8, r0
|
||||
movs r0, 0x7
|
||||
bl sub_8085680
|
||||
bl GetEntityFromClientType
|
||||
mov r9, r0
|
||||
ldr r1, _080871E0
|
||||
mov r0, sp
|
||||
|
|
@ -324,7 +324,7 @@ sub_8087230:
|
|||
bl xxx_call_GetLeaderEntity
|
||||
adds r6, r0, 0
|
||||
movs r0, 0x8
|
||||
bl sub_8085680
|
||||
bl GetEntityFromClientType
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x72
|
||||
bl sub_8083E88
|
||||
|
|
@ -370,7 +370,7 @@ sub_808729C:
|
|||
bl xxx_call_GetLeaderEntity
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x8
|
||||
bl sub_8085680
|
||||
bl GetEntityFromClientType
|
||||
adds r4, r0, 0
|
||||
bl sub_80854D4
|
||||
movs r0, 0x4
|
||||
|
|
@ -471,7 +471,7 @@ ZapdosPreFightDialogue:
|
|||
bl GetPartnerEntity
|
||||
adds r6, r0, 0
|
||||
movs r0, 0x8
|
||||
bl sub_8085680
|
||||
bl GetEntityFromClientType
|
||||
str r0, [sp, 0x68]
|
||||
bl sub_8086448
|
||||
movs r0, 0xA
|
||||
|
|
@ -513,7 +513,7 @@ ZapdosPreFightDialogue:
|
|||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r0, 0x3
|
||||
bl sub_808775C
|
||||
bl ZapdosScreenFlash
|
||||
bl sub_8083F14
|
||||
movs r0, 0xED
|
||||
lsls r0, 1
|
||||
|
|
@ -660,21 +660,21 @@ _0808752A:
|
|||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r0, 0x3
|
||||
bl sub_808775C
|
||||
bl ZapdosScreenFlash
|
||||
ldr r0, _080875B4
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r0, 0x1
|
||||
bl sub_808775C
|
||||
bl ZapdosScreenFlash
|
||||
ldr r0, _080875B8
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r0, 0x2
|
||||
bl sub_808775C
|
||||
bl ZapdosScreenFlash
|
||||
ldr r0, _080875BC
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
|
|
@ -687,7 +687,7 @@ _0808752A:
|
|||
bl SetupBossFightHP
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x10
|
||||
bl sub_80858AC
|
||||
bl ShiftCameraToPosition
|
||||
add sp, 0x70
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ JirachiWish:
|
|||
push {r5-r7}
|
||||
sub sp, 0x78
|
||||
movs r0, 0x1A
|
||||
bl sub_8085680
|
||||
bl GetEntityFromClientType
|
||||
adds r6, r0, 0
|
||||
ldr r0, _0808B82C
|
||||
ldr r1, _0808B830
|
||||
|
|
@ -468,7 +468,7 @@ _0808B9F8:
|
|||
ldr r0, _0808BA70
|
||||
bl DisplayDungeonDialogue
|
||||
adds r0, r6, 0
|
||||
bl sub_808BC20
|
||||
bl JirachiSpinEffect
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
|
|
@ -507,8 +507,8 @@ _0808BA70: .4byte gUnknown_81058E0
|
|||
_0808BA74: .4byte gUnknown_810593C
|
||||
thumb_func_end JirachiWish
|
||||
|
||||
thumb_func_start JirachiPreFightDialogue1
|
||||
JirachiPreFightDialogue1:
|
||||
thumb_func_start JirachiReFightDialogue
|
||||
JirachiReFightDialogue:
|
||||
push {lr}
|
||||
ldr r0, _0808BA94
|
||||
bl HasRecruitedMon
|
||||
|
|
@ -521,16 +521,16 @@ JirachiPreFightDialogue1:
|
|||
b _0808BAA0
|
||||
.align 2, 0
|
||||
_0808BA94: .4byte 0x0000019d
|
||||
_0808BA98: .4byte gUnknown_8105E14
|
||||
_0808BA98: .4byte gJirachiReFightDialogue_1
|
||||
_0808BA9C:
|
||||
bl JirachiPreFightDialogue
|
||||
_0808BAA0:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end JirachiPreFightDialogue1
|
||||
thumb_func_end JirachiReFightDialogue
|
||||
|
||||
thumb_func_start sub_808BAA4
|
||||
sub_808BAA4:
|
||||
thumb_func_start JirachiWishGrantFlash
|
||||
JirachiWishGrantFlash:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
ldr r0, _0808BB34
|
||||
|
|
@ -546,7 +546,7 @@ _0808BAB8:
|
|||
adds r1, r4, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x1
|
||||
bl sub_8085C54
|
||||
bl SetDungeonBGColorRGB
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
subs r4, 0xA
|
||||
|
|
@ -563,7 +563,7 @@ _0808BADE:
|
|||
adds r1, r4, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x1
|
||||
bl sub_8085C54
|
||||
bl SetDungeonBGColorRGB
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
subs r4, 0xA
|
||||
|
|
@ -580,7 +580,7 @@ _0808BB04:
|
|||
adds r1, r4, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x1
|
||||
bl sub_8085C54
|
||||
bl SetDungeonBGColorRGB
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
subs r4, 0xA
|
||||
|
|
@ -597,7 +597,7 @@ _0808BB04:
|
|||
.align 2, 0
|
||||
_0808BB34: .4byte 0x000002c1
|
||||
_0808BB38: .4byte gUnknown_202EDC8
|
||||
thumb_func_end sub_808BAA4
|
||||
thumb_func_end JirachiWishGrantFlash
|
||||
|
||||
thumb_func_start sub_808BB3C
|
||||
sub_808BB3C:
|
||||
|
|
|
|||
|
|
@ -1026,29 +1026,4 @@ _080196FA:
|
|||
bx r0
|
||||
thumb_func_end sub_8019660
|
||||
|
||||
thumb_func_start sub_8019700
|
||||
sub_8019700:
|
||||
ldr r0, _08019724
|
||||
ldr r1, [r0]
|
||||
movs r3, 0
|
||||
ldr r0, _08019728
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x34]
|
||||
movs r0, 0x5
|
||||
str r0, [r1, 0x38]
|
||||
movs r2, 0x1
|
||||
ldr r0, _0801972C
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x3C]
|
||||
movs r0, 0x6
|
||||
str r0, [r1, 0x40]
|
||||
str r3, [r1, 0x44]
|
||||
str r2, [r1, 0x48]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08019724: .4byte gUnknown_203B210
|
||||
_08019728: .4byte gUnknown_80D4920
|
||||
_0801972C: .4byte gUnknown_80D4928
|
||||
thumb_func_end sub_8019700
|
||||
|
||||
.align 2,0
|
||||
|
|
|
|||
1556
asm/wonder_mail_2.s
1556
asm/wonder_mail_2.s
File diff suppressed because it is too large
Load Diff
759
asm/wonder_mail_802C860.s
Normal file
759
asm/wonder_mail_802C860.s
Normal file
|
|
@ -0,0 +1,759 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_802CAA4
|
||||
sub_802CAA4:
|
||||
push {r4-r7,lr}
|
||||
movs r7, 0
|
||||
ldr r5, _0802CAC8
|
||||
ldr r0, [r5]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl GetJobSlotInfo
|
||||
adds r4, r0, 0
|
||||
ldr r2, [r5]
|
||||
ldr r0, [r2]
|
||||
cmp r0, 0
|
||||
bne _0802CB26
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0x5
|
||||
beq _0802CACC
|
||||
cmp r0, 0x6
|
||||
beq _0802CB10
|
||||
b _0802CB26
|
||||
.align 2, 0
|
||||
_0802CAC8: .4byte gUnknown_203B2F0
|
||||
_0802CACC:
|
||||
movs r0, 0x86
|
||||
lsls r0, 1
|
||||
adds r1, r2, r0
|
||||
ldr r0, _0802CAFC
|
||||
str r0, [r1]
|
||||
adds r0, r4, 0
|
||||
bl sub_809693C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802CAEE
|
||||
ldrb r0, [r4, 0x4]
|
||||
bl sub_80A2824
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802CB00
|
||||
_0802CAEE:
|
||||
ldr r0, [r5]
|
||||
movs r1, 0x88
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
b _0802CB0A
|
||||
.align 2, 0
|
||||
_0802CAFC: .4byte gUnknown_80DFD70
|
||||
_0802CB00:
|
||||
ldr r0, [r5]
|
||||
movs r1, 0x88
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
movs r1, 0x2
|
||||
_0802CB0A:
|
||||
str r1, [r0]
|
||||
adds r7, 0x1
|
||||
b _0802CB26
|
||||
_0802CB10:
|
||||
movs r0, 0x86
|
||||
lsls r0, 1
|
||||
adds r1, r2, r0
|
||||
ldr r0, _0802CB9C
|
||||
str r0, [r1]
|
||||
movs r0, 0x88
|
||||
lsls r0, 1
|
||||
adds r1, r2, r0
|
||||
movs r0, 0x3
|
||||
str r0, [r1]
|
||||
movs r7, 0x1
|
||||
_0802CB26:
|
||||
ldr r4, _0802CBA0
|
||||
ldr r6, [r4]
|
||||
lsls r1, r7, 3
|
||||
movs r0, 0x86
|
||||
lsls r0, 1
|
||||
adds r3, r6, r0
|
||||
adds r2, r3, r1
|
||||
ldr r0, _0802CBA4
|
||||
ldr r0, [r0]
|
||||
str r0, [r2]
|
||||
movs r0, 0x88
|
||||
lsls r0, 1
|
||||
adds r5, r6, r0
|
||||
adds r1, r5, r1
|
||||
movs r0, 0x4
|
||||
str r0, [r1]
|
||||
adds r7, 0x1
|
||||
lsls r1, r7, 3
|
||||
adds r2, r3, r1
|
||||
ldr r0, _0802CBA8
|
||||
ldr r0, [r0]
|
||||
str r0, [r2]
|
||||
adds r1, r5, r1
|
||||
movs r0, 0x7
|
||||
str r0, [r1]
|
||||
adds r7, 0x1
|
||||
lsls r1, r7, 3
|
||||
adds r3, r1
|
||||
movs r0, 0
|
||||
str r0, [r3]
|
||||
adds r1, r5, r1
|
||||
movs r0, 0x1
|
||||
str r0, [r1]
|
||||
movs r3, 0
|
||||
mov r12, r4
|
||||
cmp r3, r7
|
||||
bge _0802CB8C
|
||||
adds r4, r6, 0
|
||||
adds r1, r5, 0
|
||||
movs r5, 0x1
|
||||
negs r5, r5
|
||||
_0802CB78:
|
||||
ldr r2, [r1]
|
||||
cmp r2, r5
|
||||
beq _0802CB84
|
||||
ldr r0, [r4, 0x68]
|
||||
cmp r2, r0
|
||||
beq _0802CB94
|
||||
_0802CB84:
|
||||
adds r1, 0x8
|
||||
adds r3, 0x1
|
||||
cmp r3, r7
|
||||
blt _0802CB78
|
||||
_0802CB8C:
|
||||
mov r0, r12
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x7
|
||||
str r0, [r1, 0x68]
|
||||
_0802CB94:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802CB9C: .4byte gUnknown_80DFD7C
|
||||
_0802CBA0: .4byte gUnknown_203B2F0
|
||||
_0802CBA4: .4byte gUnknown_80D494C
|
||||
_0802CBA8: .4byte gUnknown_80D4970
|
||||
thumb_func_end sub_802CAA4
|
||||
|
||||
thumb_func_start sub_802CBAC
|
||||
sub_802CBAC:
|
||||
ldr r0, _0802CBF4
|
||||
ldr r0, [r0]
|
||||
mov r12, r0
|
||||
movs r3, 0
|
||||
movs r1, 0xA6
|
||||
lsls r1, 1
|
||||
add r1, r12
|
||||
ldr r0, _0802CBF8
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
movs r1, 0xA8
|
||||
lsls r1, 1
|
||||
add r1, r12
|
||||
movs r0, 0x5
|
||||
str r0, [r1]
|
||||
movs r2, 0x1
|
||||
movs r1, 0xAA
|
||||
lsls r1, 1
|
||||
add r1, r12
|
||||
ldr r0, _0802CBFC
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
movs r1, 0xAC
|
||||
lsls r1, 1
|
||||
add r1, r12
|
||||
movs r0, 0x6
|
||||
str r0, [r1]
|
||||
movs r0, 0xAE
|
||||
lsls r0, 1
|
||||
add r0, r12
|
||||
str r3, [r0]
|
||||
movs r0, 0xB0
|
||||
lsls r0, 1
|
||||
add r0, r12
|
||||
str r2, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0802CBF4: .4byte gUnknown_203B2F0
|
||||
_0802CBF8: .4byte gUnknown_80D4920
|
||||
_0802CBFC: .4byte gUnknown_80D4928
|
||||
thumb_func_end sub_802CBAC
|
||||
|
||||
thumb_func_start sub_802CC00
|
||||
sub_802CC00:
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl sub_802C598
|
||||
cmp r0, 0x4
|
||||
bhi _0802CC6A
|
||||
lsls r0, 2
|
||||
ldr r1, _0802CC18
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802CC18: .4byte _0802CC1C
|
||||
.align 2, 0
|
||||
_0802CC1C:
|
||||
.4byte _0802CC6A
|
||||
.4byte _0802CC6A
|
||||
.4byte _0802CC60
|
||||
.4byte _0802CC30
|
||||
.4byte _0802CC48
|
||||
_0802CC30:
|
||||
bl sub_802C620
|
||||
ldr r1, _0802CC44
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0xC]
|
||||
movs r0, 0x2
|
||||
bl sub_802C910
|
||||
b _0802CC6A
|
||||
.align 2, 0
|
||||
_0802CC44: .4byte gUnknown_203B2F0
|
||||
_0802CC48:
|
||||
bl sub_802C620
|
||||
ldr r1, _0802CC5C
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0xC]
|
||||
movs r0, 0x4
|
||||
bl sub_802C910
|
||||
b _0802CC6A
|
||||
.align 2, 0
|
||||
_0802CC5C: .4byte gUnknown_203B2F0
|
||||
_0802CC60:
|
||||
bl sub_802C688
|
||||
movs r0, 0x5
|
||||
bl sub_802C910
|
||||
_0802CC6A:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802CC00
|
||||
|
||||
thumb_func_start sub_802CC70
|
||||
sub_802CC70:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_802C598
|
||||
ldr r4, _0802CCB4
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802CCA0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0802CCA0
|
||||
ldr r0, [r4]
|
||||
str r1, [r0, 0x68]
|
||||
_0802CCA0:
|
||||
ldr r0, [sp]
|
||||
subs r0, 0x1
|
||||
cmp r0, 0x6
|
||||
bhi _0802CD2E
|
||||
lsls r0, 2
|
||||
ldr r1, _0802CCB8
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802CCB4: .4byte gUnknown_203B2F0
|
||||
_0802CCB8: .4byte _0802CCBC
|
||||
.align 2, 0
|
||||
_0802CCBC:
|
||||
.4byte _0802CD28
|
||||
.4byte _0802CCD8
|
||||
.4byte _0802CCF4
|
||||
.4byte _0802CD18
|
||||
.4byte _0802CD2E
|
||||
.4byte _0802CD2E
|
||||
.4byte _0802CD20
|
||||
_0802CCD8:
|
||||
ldr r0, _0802CCEC
|
||||
bl PlaySound
|
||||
ldr r0, _0802CCF0
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl GetJobSlotInfo
|
||||
movs r1, 0x6
|
||||
b _0802CD06
|
||||
.align 2, 0
|
||||
_0802CCEC: .4byte 0x00000133
|
||||
_0802CCF0: .4byte gUnknown_203B2F0
|
||||
_0802CCF4:
|
||||
ldr r0, _0802CD10
|
||||
bl PlaySound
|
||||
ldr r0, _0802CD14
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl GetJobSlotInfo
|
||||
movs r1, 0x5
|
||||
_0802CD06:
|
||||
strb r1, [r0]
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
b _0802CD2E
|
||||
.align 2, 0
|
||||
_0802CD10: .4byte 0x00000133
|
||||
_0802CD14: .4byte gUnknown_203B2F0
|
||||
_0802CD18:
|
||||
movs r0, 0x3
|
||||
bl sub_802C910
|
||||
b _0802CD2E
|
||||
_0802CD20:
|
||||
movs r0, 0x4
|
||||
bl sub_802C910
|
||||
b _0802CD2E
|
||||
_0802CD28:
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
_0802CD2E:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802CC70
|
||||
|
||||
thumb_func_start sub_802CD38
|
||||
sub_802CD38:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_802C598
|
||||
ldr r4, _0802CD78
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x6C
|
||||
bl sub_8012FD8
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xBC
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802CD66
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xBC
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
_0802CD66:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x5
|
||||
beq _0802CD88
|
||||
cmp r0, 0x5
|
||||
bgt _0802CD7C
|
||||
cmp r0, 0x1
|
||||
beq _0802CD80
|
||||
b _0802CDB0
|
||||
.align 2, 0
|
||||
_0802CD78: .4byte gUnknown_203B2F0
|
||||
_0802CD7C:
|
||||
cmp r0, 0x6
|
||||
bne _0802CDB0
|
||||
_0802CD80:
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
b _0802CDB0
|
||||
_0802CD88:
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0xC]
|
||||
bl sub_8096C3C
|
||||
bl sub_8096C80
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802CDAA
|
||||
bl sub_802C688
|
||||
movs r0, 0x5
|
||||
bl sub_802C910
|
||||
b _0802CDB0
|
||||
_0802CDAA:
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
_0802CDB0:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802CD38
|
||||
|
||||
thumb_func_start sub_802CDB8
|
||||
sub_802CDB8:
|
||||
push {lr}
|
||||
bl sub_802DEE0
|
||||
cmp r0, 0x1
|
||||
bls _0802CDD0
|
||||
cmp r0, 0x3
|
||||
bhi _0802CDD0
|
||||
bl sub_802DF24
|
||||
movs r0, 0x1
|
||||
bl sub_802C910
|
||||
_0802CDD0:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802CDB8
|
||||
|
||||
thumb_func_start sub_802CDD4
|
||||
sub_802CDD4:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
ldr r4, _0802CE54
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _0802CDEA
|
||||
movs r0, 0xA0
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
_0802CDEA:
|
||||
ldr r0, [r4]
|
||||
str r5, [r0, 0x34]
|
||||
lsls r1, r5, 1
|
||||
adds r1, r5
|
||||
lsls r1, 3
|
||||
adds r1, 0x3C
|
||||
adds r1, r0, r1
|
||||
str r1, [r0, 0x38]
|
||||
adds r0, 0x3C
|
||||
bl sub_8006518
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r1, 0x34]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0802CE58
|
||||
ldm r0!, {r2,r3,r6}
|
||||
stm r1!, {r2,r3,r6}
|
||||
ldm r0!, {r2,r3,r6}
|
||||
stm r1!, {r2,r3,r6}
|
||||
ldr r1, [r4]
|
||||
ldr r0, [r1, 0x38]
|
||||
adds r1, 0x9C
|
||||
str r1, [r0, 0x14]
|
||||
movs r1, 0x4
|
||||
bl sub_8012D34
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x5
|
||||
movs r2, 0x4
|
||||
adds r3, r5, 0
|
||||
bl sub_8013848
|
||||
bl sub_802CF5C
|
||||
bl sub_802CFD0
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0802CE54: .4byte gUnknown_203B2F4
|
||||
_0802CE58: .4byte gUnknown_80DFDA4
|
||||
thumb_func_end sub_802CDD4
|
||||
|
||||
thumb_func_start sub_802CE5C
|
||||
sub_802CE5C:
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802CE74
|
||||
ldr r0, _0802CE70
|
||||
ldr r0, [r0]
|
||||
bl sub_8013660
|
||||
movs r0, 0
|
||||
b _0802CEB4
|
||||
.align 2, 0
|
||||
_0802CE70: .4byte gUnknown_203B2F4
|
||||
_0802CE74:
|
||||
ldr r4, _0802CE90
|
||||
ldr r0, [r4]
|
||||
bl GetKeyPress
|
||||
cmp r0, 0x1
|
||||
beq _0802CE94
|
||||
cmp r0, 0x2
|
||||
bne _0802CE98
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _0802CEB4
|
||||
.align 2, 0
|
||||
_0802CE90: .4byte gUnknown_203B2F4
|
||||
_0802CE94:
|
||||
movs r0, 0x3
|
||||
b _0802CEB4
|
||||
_0802CE98:
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x1
|
||||
bl sub_80138B8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802CEAA
|
||||
movs r0, 0
|
||||
b _0802CEB4
|
||||
_0802CEAA:
|
||||
bl sub_802CF5C
|
||||
bl sub_802CFD0
|
||||
movs r0, 0x1
|
||||
_0802CEB4:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802CE5C
|
||||
|
||||
thumb_func_start sub_802CEBC
|
||||
sub_802CEBC:
|
||||
ldr r0, _0802CED4
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1E
|
||||
ldrsh r2, [r1, r0]
|
||||
movs r3, 0x1C
|
||||
ldrsh r0, [r1, r3]
|
||||
muls r0, r2
|
||||
ldrb r1, [r1, 0x18]
|
||||
adds r0, r1
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0802CED4: .4byte gUnknown_203B2F4
|
||||
thumb_func_end sub_802CEBC
|
||||
|
||||
thumb_func_start sub_802CED8
|
||||
sub_802CED8:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r5, _0802CF10
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_800641C
|
||||
ldr r0, [r5]
|
||||
bl sub_8013984
|
||||
bl sub_802CF5C
|
||||
bl sub_802CFD0
|
||||
cmp r4, 0
|
||||
beq _0802CF0A
|
||||
ldr r0, [r5]
|
||||
bl AddMenuCursorSprite
|
||||
_0802CF0A:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802CF10: .4byte gUnknown_203B2F4
|
||||
thumb_func_end sub_802CED8
|
||||
|
||||
thumb_func_start sub_802CF14
|
||||
sub_802CF14:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _0802CF54
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0802CF4E
|
||||
ldr r0, [r2, 0x34]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x3C
|
||||
ldr r0, _0802CF58
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0802CF4E:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802CF54: .4byte gUnknown_203B2F4
|
||||
_0802CF58: .4byte gUnknown_80DFD8C
|
||||
thumb_func_end sub_802CF14
|
||||
|
||||
thumb_func_start sub_802CF5C
|
||||
sub_802CF5C:
|
||||
push {r4,lr}
|
||||
ldr r4, _0802CFCC
|
||||
ldr r0, [r4]
|
||||
ldrh r1, [r0, 0x20]
|
||||
adds r0, 0x9C
|
||||
movs r2, 0
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
ldrh r1, [r0, 0x1E]
|
||||
adds r0, 0x9D
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x9E
|
||||
movs r1, 0xC
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x9F
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, 0x18
|
||||
bl sub_8009614
|
||||
adds r0, 0x2
|
||||
lsls r0, 16
|
||||
ldr r2, [r4]
|
||||
ldr r3, [r2, 0x34]
|
||||
lsls r1, r3, 1
|
||||
adds r1, r3
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x4A
|
||||
asrs r3, r0, 16
|
||||
lsrs r0, 16
|
||||
strh r0, [r1]
|
||||
ldr r1, [r2, 0x34]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r2, r0
|
||||
adds r3, 0x2
|
||||
adds r2, 0x4C
|
||||
strh r3, [r2]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x3C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802CFCC: .4byte gUnknown_203B2F4
|
||||
thumb_func_end sub_802CF5C
|
||||
|
||||
thumb_func_start sub_802CFD0
|
||||
sub_802CFD0:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x60
|
||||
ldr r6, _0802D02C
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_8008C54
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073B8
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x1E
|
||||
ldrsh r4, [r0, r1]
|
||||
lsls r4, 3
|
||||
adds r5, r4, 0
|
||||
adds r5, 0xA
|
||||
ldr r2, _0802D030
|
||||
ldr r3, [r0, 0x34]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
adds r4, 0x4
|
||||
ldr r1, [r6]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x9E
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 3
|
||||
adds r5, r4, r0
|
||||
movs r0, 0x1E
|
||||
ldrsh r2, [r1, r0]
|
||||
adds r2, 0x1
|
||||
movs r0, 0x7
|
||||
str r0, [sp]
|
||||
ldr r0, [r1, 0x34]
|
||||
str r0, [sp, 0x4]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
movs r3, 0x2
|
||||
bl sub_8012BC4
|
||||
movs r5, 0
|
||||
b _0802D076
|
||||
.align 2, 0
|
||||
_0802D02C: .4byte gUnknown_203B2F4
|
||||
_0802D030: .4byte gUnknown_80DFDBC
|
||||
_0802D034:
|
||||
ldr r0, [r6]
|
||||
movs r2, 0x1E
|
||||
ldrsh r1, [r0, r2]
|
||||
movs r2, 0x1C
|
||||
ldrsh r0, [r0, r2]
|
||||
muls r0, r1
|
||||
adds r0, r5
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_803B344
|
||||
adds r4, r0, 0
|
||||
ldr r0, [r6]
|
||||
ldr r1, [r0, 0x34]
|
||||
str r1, [sp, 0x8]
|
||||
adds r1, r5, 0
|
||||
bl sub_8013800
|
||||
str r0, [sp, 0x50]
|
||||
adds r0, r4, 0
|
||||
add r1, sp, 0x8
|
||||
bl sub_803B35C
|
||||
mov r1, sp
|
||||
adds r1, 0x4B
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4, 0x14]
|
||||
str r0, [sp, 0x54]
|
||||
add r0, sp, 0x8
|
||||
bl sub_803B6D4
|
||||
adds r5, 0x1
|
||||
_0802D076:
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r5, r0
|
||||
blt _0802D034
|
||||
ldr r0, _0802D094
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073E0
|
||||
add sp, 0x60
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802D094: .4byte gUnknown_203B2F4
|
||||
thumb_func_end sub_802CFD0
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -271,6 +271,7 @@ ARG_POKEMON_7 = 24 6D 37 @ $m7
|
|||
ARG_POKEMON_8 = 24 6D 38 @ $m8
|
||||
ARG_MOVE_ITEM_0 = 24 69 30 @ $i0
|
||||
ARG_MOVE_ITEM_1 = 24 69 31 @ $i1
|
||||
ARG_FRIEND_AREA = 24 68 @ $h
|
||||
|
||||
@ TEXT MACROS
|
||||
@
|
||||
|
|
|
|||
|
|
@ -1676,7 +1676,7 @@ gUnknown_80D7A44:
|
|||
.global gUnknown_80D7C94
|
||||
gUnknown_80D7C94:
|
||||
.string " Sssnore...\n"
|
||||
.string "{COLOR_1 GREEN}$h{END_COLOR_TEXT_1}...?\n"
|
||||
.string "{COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}...?\n"
|
||||
.string "I can{APOSTROPHE}t get that Friend Area...{EXTRA_MSG}"
|
||||
.string " Zzz... Zzz...\n"
|
||||
.string "Sorry...\0"
|
||||
|
|
@ -1685,7 +1685,7 @@ gUnknown_80D7C94:
|
|||
.global gUnknown_80D7CE8
|
||||
gUnknown_80D7CE8:
|
||||
.string " Zzz... Hunh...?\n"
|
||||
.string "{COLOR_1 GREEN}$h{END_COLOR_TEXT_1}...?\n"
|
||||
.string "{COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}...?\n"
|
||||
.string "I don{APOSTROPHE}t know... I{APOSTROPHE}ll check...{EXTRA_MSG}"
|
||||
.string " Sssnore...\n"
|
||||
.string "I{APOSTROPHE}ll have it for sale...\n"
|
||||
|
|
@ -1696,14 +1696,14 @@ gUnknown_80D7CE8:
|
|||
gUnknown_80D7D64:
|
||||
.string " Sssnore...\n"
|
||||
.string "You can already go...\n"
|
||||
.string "Friend Area {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}...\0"
|
||||
.string "Friend Area {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}...\0"
|
||||
.align 2, 0
|
||||
|
||||
.global gUnknown_80D7DA0
|
||||
gUnknown_80D7DA0:
|
||||
.string " Dwee... Kwoo...\n"
|
||||
.string "{COLOR_1 CYAN}{ARG_POKEMON_0}{END_COLOR_TEXT_1}{APOSTROPHE}s Friend Area...\n"
|
||||
.string "Zzz... {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}...\0"
|
||||
.string "Zzz... {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}...\0"
|
||||
.align 2, 0
|
||||
|
||||
.global gUnknown_80D7DE0
|
||||
|
|
@ -1748,10 +1748,10 @@ gUnknown_80D7ED0:
|
|||
.global gUnknown_80D7F10
|
||||
gUnknown_80D7F10:
|
||||
.string " Grats... Zzz...{WAIT_PRESS}\n"
|
||||
.string "You can go to {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}...{EXTRA_MSG}"
|
||||
.string "You can go to {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}...{EXTRA_MSG}"
|
||||
.string " Dwee... Sssnore...\n"
|
||||
.string "Make friends with Pokémon in...\n"
|
||||
.string "{COLOR_1 GREEN}$h{END_COLOR_TEXT_1}...\0"
|
||||
.string "{COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}...\0"
|
||||
.align 2, 0
|
||||
|
||||
.global gUnknown_80D7F7C
|
||||
|
|
@ -1767,7 +1767,7 @@ gUnknown_80D7F7C:
|
|||
|
||||
.global gUnknown_80D8000
|
||||
gUnknown_80D8000:
|
||||
.string " Kwoo? {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}?\n"
|
||||
.string " Kwoo? {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}?\n"
|
||||
.string "That{APOSTROPHE}s {COLOR_1 CYAN}$d0{END_COLOR_TEXT_1} {POKE}...\n"
|
||||
.string "OK?\0"
|
||||
.align 2, 0
|
||||
|
|
@ -1836,14 +1836,14 @@ gUnknown_80D8104:
|
|||
|
||||
.global gUnknown_80D8420
|
||||
gUnknown_80D8420:
|
||||
.string " {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}?\n"
|
||||
.string " {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}?\n"
|
||||
.string "I can{APOSTROPHE}t get that Friend Area for you.{WAIT_PRESS}\n"
|
||||
.string "I{APOSTROPHE}m really sorry.\0"
|
||||
.align 2, 0
|
||||
|
||||
.global gUnknown_80D8468
|
||||
gUnknown_80D8468:
|
||||
.string " {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}?\n"
|
||||
.string " {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}?\n"
|
||||
.string "I don{APOSTROPHE}t know much about it at all.{WAIT_PRESS}\n"
|
||||
.string "I{APOSTROPHE}ll check up on it.{EXTRA_MSG}"
|
||||
.string " I{APOSTROPHE}ll add it to the Friend\n"
|
||||
|
|
@ -1853,13 +1853,13 @@ gUnknown_80D8468:
|
|||
.global gUnknown_80D84F8
|
||||
gUnknown_80D84F8:
|
||||
.string " You can already go to the\n"
|
||||
.string "Friend Area {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}.\0"
|
||||
.string "Friend Area {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}.\0"
|
||||
.align 2, 0
|
||||
|
||||
.global gUnknown_80D8528
|
||||
gUnknown_80D8528:
|
||||
.string " {COLOR_1 CYAN}{ARG_POKEMON_0}{END_COLOR_TEXT_1}{APOSTROPHE}s Friend Area\n"
|
||||
.string "is {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}.\0"
|
||||
.string "is {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}.\0"
|
||||
.align 2, 0
|
||||
|
||||
.global gUnknown_80D8550
|
||||
|
|
@ -1903,10 +1903,10 @@ gUnknown_80D8644:
|
|||
.global gUnknown_80D8674
|
||||
gUnknown_80D8674:
|
||||
.string " Congratulations!{WAIT_PRESS}\n"
|
||||
.string "You can go to {COLOR_1 GREEN}$h{END_COLOR_TEXT_1} now!{EXTRA_MSG}"
|
||||
.string "You can go to {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1} now!{EXTRA_MSG}"
|
||||
.string " You can recruit\n"
|
||||
.string "Pokémon that live in the Friend Area\n"
|
||||
.string "{COLOR_1 GREEN}$h{END_COLOR_TEXT_1}.\0"
|
||||
.string "{COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}.\0"
|
||||
.align 2, 0
|
||||
|
||||
.global gUnknown_80D86E4
|
||||
|
|
@ -1918,7 +1918,7 @@ gUnknown_80D86E4:
|
|||
|
||||
.global gUnknown_80D8738
|
||||
gUnknown_80D8738:
|
||||
.string " {COLOR_1 GREEN}$h{END_COLOR_TEXT_1}?\n"
|
||||
.string " {COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}?\n"
|
||||
.string "That will be {COLOR_1 CYAN}$d0{END_COLOR_TEXT_1} {POKE}.\n"
|
||||
.string "Is that OK?\0"
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -1,141 +1,5 @@
|
|||
.section .rodata
|
||||
|
||||
.global gUnknown_80DFCE4
|
||||
gUnknown_80DFCE4: @ 80DFCE4
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFCFC
|
||||
gUnknown_80DFCFC: @ 80DFCFC
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x06, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x02, 0x00
|
||||
.byte 0x18, 0x00, 0x0e, 0x00
|
||||
.byte 0x0e, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFD14
|
||||
gUnknown_80DFD14: @ 80DFD14
|
||||
.string "Job List\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
|
||||
.global gUnknown_80DFD28
|
||||
gUnknown_80DFD28: @ 80DFD28
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFD40
|
||||
gUnknown_80DFD40: @ 80DFD40
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x04, 0x00, 0x00, 0x00
|
||||
.byte 0x15, 0x00, 0x06, 0x00
|
||||
.byte 0x07, 0x00, 0x03, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFD58
|
||||
gUnknown_80DFD58: @ 80DFD58
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x04, 0x00, 0x00, 0x00
|
||||
.byte 0x15, 0x00, 0x0f, 0x00
|
||||
.byte 0x06, 0x00, 0x03, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFD70
|
||||
gUnknown_80DFD70: @ 80DFD70
|
||||
.string "Take Job\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DFD7C
|
||||
gUnknown_80DFD7C: @ 80DFD7C
|
||||
.string "Suspend\0"
|
||||
.string "pksdir0\0"
|
||||
|
||||
.global gUnknown_80DFD8C
|
||||
gUnknown_80DFD8C: @ 80DFD8C
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFDA4
|
||||
gUnknown_80DFDA4: @ 80DFDA4
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x06, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x02, 0x00
|
||||
.byte 0x18, 0x00, 0x0e, 0x00
|
||||
.byte 0x0e, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFDBC
|
||||
gUnknown_80DFDBC: @ 80DFDBC
|
||||
.string "RESCUE EVENT\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
|
||||
.global gUnknown_80DFDD4
|
||||
gUnknown_80DFDD4: @ 80DFDD4
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x03, 0x00
|
||||
.byte 0x07, 0x00, 0x03, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFE04
|
||||
gUnknown_80DFE04: @ 80DFE04
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x15, 0x00, 0x06, 0x00
|
||||
.byte 0x07, 0x00, 0x03, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DFE1C
|
||||
gUnknown_80DFE1C: @ 80DFE1C
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x15, 0x00, 0x0f, 0x00
|
||||
.byte 0x07, 0x00, 0x03, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x15, 0x00, 0x0f, 0x00
|
||||
.byte 0x06, 0x00, 0x03, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
#include "text/wonder_mail_3.inc"
|
||||
|
||||
.global gUnknown_80E016C
|
||||
gUnknown_80E016C: @ 80E016C
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
#include "text/wonder_mail_complete.inc"
|
||||
|
||||
.global gUnknown_80E0248
|
||||
gUnknown_80E0248: @ 80E0248
|
||||
|
|
@ -145,6 +9,9 @@ gUnknown_80E0248: @ 80E0248
|
|||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global UnkData_80E0260
|
||||
UnkData_80E0260:
|
||||
.byte 0x01, 0x00, 0x12, 0x00
|
||||
|
||||
.global gUnknown_80E0264
|
||||
|
|
@ -154,9 +21,9 @@ gUnknown_80E0264: @ 80E0264
|
|||
.byte 0x02, 0x00, 0x02, 0x00
|
||||
.byte 0x1a, 0x00, 0x10, 0x00
|
||||
.byte 0x10, 0x00, 0x00, 0x00
|
||||
.byte 0x60, 0x02, 0x0e, 0x08
|
||||
.byte 0x70, 0x6b, 0x73, 0x64
|
||||
.byte 0x69, 0x72, 0x30, 0x00
|
||||
.4byte UnkData_80E0260
|
||||
|
||||
.string "pksdir0\0"
|
||||
|
||||
.global gUnknown_80E0284
|
||||
gUnknown_80E0284: @ 80E0284
|
||||
|
|
@ -351,32 +218,32 @@ gUnknown_80E0484: @ 80E0484
|
|||
gUnknown_80E04B4: @ 80E04B4
|
||||
.string " As your reward{COMMA} you can\n"
|
||||
.string "now go to the Friend Area\n"
|
||||
.string "{COLOR_1 GREEN}$h{END_COLOR_TEXT_1}!\0"
|
||||
.string "{COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}!\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E04F4
|
||||
gUnknown_80E04F4: @ 80E04F4
|
||||
.string "#+...Oh~2c wait~2c sorry.#P"
|
||||
.string "#+You already have the \n"
|
||||
.string "#+#C4$h Friend Area#R.#P"
|
||||
.string "#+I~27m sorry that my reward is\n"
|
||||
.string "#+something you already have.#P"
|
||||
.string "#+In its place~2c #CN$m0#R~2c\n"
|
||||
.string "#+you can have #CG1~2c000#R {POKE}.\0"
|
||||
.align 2, 0
|
||||
.string "{CENTER_ALIGN}...Oh{COMMA} wait{COMMA} sorry.{EXTRA_MSG}"
|
||||
.string "{CENTER_ALIGN}You already have the \n"
|
||||
.string "{CENTER_ALIGN}{COLOR_1 GREEN}{ARG_FRIEND_AREA} Friend Area{END_COLOR_TEXT_1}.{EXTRA_MSG}"
|
||||
.string "{CENTER_ALIGN}I{APOSTROPHE}m sorry that my reward is\n"
|
||||
.string "{CENTER_ALIGN}something you already have.{EXTRA_MSG}"
|
||||
.string "{CENTER_ALIGN}In its place{COMMA} {COLOR_1 YELLOW_5}{ARG_POKEMON_0}{END_COLOR_TEXT_1}{COMMA}\n"
|
||||
.string "{CENTER_ALIGN}you can have {COLOR_1 LIGHT_BLUE_2}1{COMMA}000{END_COLOR_TEXT_1} {POKE}.\0"
|
||||
.align 2, 0
|
||||
|
||||
.global gUnknown_80E05C0
|
||||
gUnknown_80E05C0: @ 80E05C0
|
||||
.string "{CENTER_ALIGN}{COLOR_1 YELLOW_5}{ARG_POKEMON_0}{END_COLOR_TEXT_1} gained access\n"
|
||||
.string "{CENTER_ALIGN}to the Friend Area\n"
|
||||
.string "{CENTER_ALIGN}{COLOR_1 GREEN}$h{END_COLOR_TEXT_1}.\0"
|
||||
.string "{CENTER_ALIGN}{COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E05FC
|
||||
gUnknown_80E05FC: @ 80E05FC
|
||||
.string "{CENTER_ALIGN}{COLOR_1 YELLOW_5}{ARG_POKEMON_0}{END_COLOR_TEXT_1}{APOSTROPHE}s team gained access\n"
|
||||
.string "{CENTER_ALIGN}to the Friend Area\n"
|
||||
.string "{CENTER_ALIGN}{COLOR_1 GREEN}$h{END_COLOR_TEXT_1}.\0"
|
||||
.string "{CENTER_ALIGN}{COLOR_1 GREEN}{ARG_FRIEND_AREA}{END_COLOR_TEXT_1}.\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80E0640
|
||||
|
|
|
|||
1183
data/data_80F59C8.s
1183
data/data_80F59C8.s
File diff suppressed because it is too large
Load Diff
|
|
@ -1,57 +0,0 @@
|
|||
gUnknown_80DFE4C:: @ 80DFE4C
|
||||
.string "Are you sure you want to replace the\n"
|
||||
.string "old {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} with the new one?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DFE9C:: @ 80DFE9C
|
||||
.string "This {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} has already been\n"
|
||||
.string "received.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DFED0:: @ 80DFED0
|
||||
.string "This {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} has already been\n"
|
||||
.string "received.\n"
|
||||
.string "You may not receive the same one again.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DFF2C:: @ 80DFF2C
|
||||
.string "Only {COLOR_1 LIGHT_BLUE_2}one piece{END_COLOR_TEXT_1} of {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} can be held.\n"
|
||||
.string "Please receive it after completing any\n"
|
||||
.string "rescue mission in progress.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80DFFA4:: @ 80DFFA4
|
||||
.string "The rescue team has quicksaved in\n"
|
||||
.string "a dungeon with a mission in progress.\n"
|
||||
.string "Please complete the mission first.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80E0010:: @ 80E0010
|
||||
.string "The rescue team has quicksaved in\n"
|
||||
.string "a dungeon with a mission in progress.\n"
|
||||
.string "Mail cannot be deleted now.\0"
|
||||
gUnknown_80E0074:: @ 80E0074
|
||||
.string "Received the {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1}!\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80E0094:: @ 80E0094
|
||||
.string "Only {COLOR_1 LIGHT_BLUE_2}one piece{END_COLOR_TEXT_1} of {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} can be held.\n"
|
||||
.string "Is it OK to replace the old {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1}\n"
|
||||
.string "with the new one?\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80E0108:: @ 80E0108
|
||||
.string "Your {COLOR_1 LIGHT_BLUE_2}Job List{END_COLOR_TEXT_1} is full.\n"
|
||||
.string "Please select and delete unwanted mail.\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80E014C:: @ 80E014C
|
||||
.string "New Mail\0"
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_80E0158:: @ 80E0158
|
||||
.string "Old Mail\0"
|
||||
.align 2, 0
|
||||
|
||||
.string "pksdir0\0"
|
||||
.align 2, 0
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
gWonderMailClientThanksForRescuingMe:: @ 80E0184
|
||||
.string " Thank you for rescuing me!\0"
|
||||
.align 2, 0
|
||||
|
||||
gWonderMailClientThanksForRescuingThem:: @ 80E01A0
|
||||
.string " Thank you for rescuing\n"
|
||||
.string "{COLOR_1 CYAN}{ARG_POKEMON_1}{END_COLOR_TEXT_1}!\0"
|
||||
.align 2, 0
|
||||
|
||||
gWonderMailClientEscorted:: @ 80E01C4
|
||||
.string " Thank you for escorting me\n"
|
||||
.string "to {COLOR_1 CYAN}{ARG_POKEMON_1}{END_COLOR_TEXT_1}! \0"
|
||||
.align 2, 0
|
||||
|
||||
gWonderMailClientItemDelivered1:: @ 80E01F0
|
||||
.string " Thank you for delivering\n"
|
||||
.string "the {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1}!\0"
|
||||
.align 2, 0
|
||||
|
||||
gWonderMailClientItemDelivered2:: @ 80E0218
|
||||
.string " Thank you for getting me\n"
|
||||
.string "the {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1}!\0"
|
||||
.align 2, 0
|
||||
|
||||
.string "pksdir0\0"
|
||||
.align 2, 0
|
||||
|
|
@ -3,7 +3,12 @@
|
|||
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
bool8 IsAtJunction(struct DungeonEntity *pokemon);
|
||||
bool8 ShouldAvoidFirstHit(struct DungeonEntity *pokemon, bool8 forceAvoid);
|
||||
bool8 ShouldAvoidEnemies(struct DungeonEntity *pokemon);
|
||||
bool8 ShouldAvoidEnemiesAndShowEffect(struct DungeonEntity *pokemon, bool8 showRunAwayEffect);
|
||||
void CheckRunAwayVisualFlag(struct DungeonEntity *pokemon, bool8 showRunAwayEffect);
|
||||
u8 CanTarget(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, bool8 ignoreInvisible, bool8 checkPetrified);
|
||||
u8 sub_807167C(struct DungeonEntity * pokemon, struct DungeonEntity * target);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef GUARD_DUNGEON_AI_TARGETING_2_H
|
||||
#define GUARD_DUNGEON_AI_TARGETING_2_H
|
||||
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
u8 CanTarget(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, bool8 ignoreInvisible, bool8 checkPetrified);
|
||||
|
||||
#endif
|
||||
|
|
@ -217,7 +217,7 @@ struct DungeonEntityData
|
|||
u8 fill1F5;
|
||||
/* 0x1F6 */ bool8 notMoving;
|
||||
u8 fill1F7[0x1FA - 0x1F7];
|
||||
/* 0x1FA */ u8 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction.
|
||||
/* 0x1FA */ s16 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction.
|
||||
/* 0x1FC */ u16 expGainedInTurn; // Used to accumulate experience when multiple enemies are defeated in one turn.
|
||||
/* 0x200 */ u32 statusSprites;
|
||||
u32 unk204;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,13 @@
|
|||
|
||||
extern struct DungeonGlobalData *gDungeonGlobalData;
|
||||
|
||||
struct DungeonGlobalData_sub
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
};
|
||||
|
||||
struct DungeonGlobalData
|
||||
{
|
||||
u8 unk0;
|
||||
|
|
@ -23,7 +30,8 @@ struct DungeonGlobalData
|
|||
u8 unk4;
|
||||
u8 fill5[0x7 - 0x5];
|
||||
u8 unk7;
|
||||
u8 fill8[0xF - 0x8];
|
||||
u8 unk8;
|
||||
u8 fill9[0xF - 0x9];
|
||||
/* 0xF */ bool8 inputAllowed; // Whether the game is currently accepting input. Set to false while action animations play.
|
||||
u8 fill10;
|
||||
u8 unk11;
|
||||
|
|
@ -31,7 +39,9 @@ struct DungeonGlobalData
|
|||
u8 unk16D;
|
||||
u8 fill16E[0x179 - 0x16E];
|
||||
/* 0x179 */ bool8 pokemonExposed; // True if a Pokémon on the floor has the Exposed status.
|
||||
u8 fill17A[0x645 - 0x17A];
|
||||
u8 fill17A[0x17C - 0x17A];
|
||||
struct DungeonGlobalData_sub unk17C[0x100];
|
||||
/* 0x57C */ u8 fill57C[0x645 - 0x57c];
|
||||
/* 0x645 */ u8 floorNumber;
|
||||
u8 fill646[0x65C - 0x646];
|
||||
u8 unk65C;
|
||||
|
|
@ -44,7 +54,9 @@ struct DungeonGlobalData
|
|||
u8 fill66C[0x671 - 0x66C];
|
||||
/* 0x671 */ bool8 monsterHouseActive;
|
||||
/* 0x672 */ u8 unk672;
|
||||
u8 fill673[0x363C - 0x673];
|
||||
u8 fill673[0x68A - 0x673];
|
||||
/* 0x68A */ u8 unk68A;
|
||||
u8 fill68B[0x363C - 0x68B];
|
||||
/* 0x363C */ u8 expYieldRankings[NUM_SPECIES];
|
||||
u8 fill37E3[0x37FC - 0x37D9];
|
||||
/* 0x37FC */ bool8 decoyActive;
|
||||
|
|
@ -59,17 +71,17 @@ struct DungeonGlobalData
|
|||
s16 unkE23E;
|
||||
u8 fillE240[0xE264 - 0xE240];
|
||||
/* 0xE264 */ u8 weather; // Uses the weather constants in weather.h.
|
||||
u8 unkE265;
|
||||
u8 unkE265; // Uses the weather constants in weather.h
|
||||
/* 0xE266 */ u8 weatherDamageTimer; // Timer for applying sandstorm/hail damage periodically.
|
||||
u8 fillE266[0xE26B - 0xE267];
|
||||
u8 unkE267[0xE26B - 0xE267];
|
||||
u8 unkE26B;
|
||||
u8 weatherTurnsLeft;
|
||||
u8 fillE26D[0xE270 - 0xE26D];
|
||||
/* 0xE270 */ u8 startingWeather; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather.
|
||||
u8 fillE271[0xE277 - 0xE271];
|
||||
u8 fillE26D[0xE26F - 0xE26D];
|
||||
/* 0xE26F */ u8 startingWeather[8]; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather.
|
||||
/* 0xE277 */ u8 mudSportTurnsLeft;
|
||||
/* 0xE278 */ u8 waterSportTurnsLeft;
|
||||
u8 fillE279[0xE8C0 - 0xE279];
|
||||
/* 0xE279 */ u8 unkE279;
|
||||
u8 fillE27A[0xE8C0 - 0xE27A];
|
||||
/* 0xE8C0 */ struct MapTile* mapTilePointers[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X];
|
||||
u8 fill104C0[0x104C4 - 0x104C0];
|
||||
/* 0x104C4 */ struct MapRoom roomData[MAX_ROOM_COUNT];
|
||||
|
|
@ -79,7 +91,14 @@ struct DungeonGlobalData
|
|||
/* 0x10884 */ struct Position roomExits[MAX_ROOM_COUNT][32]; // Arrays of room exits for each room.
|
||||
u8 fill11444[0x1356C - 0x11484];
|
||||
u8 unk1356C;
|
||||
u8 fill1356D[0x1357C - 0x1356D];
|
||||
u8 fill1356D[0x13570 - 0x1356D];
|
||||
/* 0x13570 */ u8 unk13570;
|
||||
u8 fill13571[0x13574 - 0x13571];
|
||||
/* 0x13574 */ u16 unk13574;
|
||||
/* 0x13576 */ u16 unk13576;
|
||||
/* 0x13578 */ u8 unk13578;
|
||||
/* 0x13579 */ u8 unk13579;
|
||||
u8 fill1357A[0x1357C - 0x1357A];
|
||||
/* 0x1357C */ struct DungeonEntity *teamPokemon[MAX_TEAM_MEMBERS];
|
||||
/* 0x1358C */ struct DungeonEntity *wildPokemon[DUNGEON_MAX_WILD_POKEMON];
|
||||
/* 0x135CC */ struct DungeonEntity *allPokemon[DUNGEON_MAX_POKEMON]; // Contains both team and wild Pokémon
|
||||
|
|
@ -101,6 +120,8 @@ struct DungeonGlobalData
|
|||
/* 0x18210 */ bool8 displayCrossEyed; // Displays Substitute and flower sprites when the player has the Cross-Eyed status.
|
||||
u8 fill18211[0x18217 - 0x18211];
|
||||
u8 unk18217;
|
||||
u8 fill18218[0x1C578 - 0x18218];
|
||||
u8 unk1C578;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,5 +3,7 @@
|
|||
|
||||
s32 DungeonRandom(void);
|
||||
s32 DungeonRandomCapped(s32 cap);
|
||||
|
||||
s32 DungeonRandomRange(s32 low, s32 high);
|
||||
bool8 RollPercentChance(s32 percentChance);
|
||||
bool8 RollPercentChance_2(s32 percentChance);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef GUARD_DUNGEON_RANDOM_1_H
|
||||
#define GUARD_DUNGEON_RANDOM_1_H
|
||||
|
||||
bool8 RollPercentChance(s32 percentChance);
|
||||
|
||||
#endif
|
||||
|
|
@ -12,5 +12,6 @@ u32 GetEntityType(struct DungeonEntity *entity);
|
|||
struct DungeonEntityData *GetTrapData(struct DungeonEntity *entity);
|
||||
struct ItemSlot *GetItemData(struct DungeonEntity *entity);
|
||||
struct MapTile *GetMapTileForDungeonEntity_2(struct DungeonEntity *entity);
|
||||
struct ItemSlot *GetItemData_1(struct DungeonEntity *entity);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4,5 +4,6 @@
|
|||
#include "dungeon_entity.h"
|
||||
|
||||
bool8 IsMovingClient(struct DungeonEntity *entity);
|
||||
void ShiftCameraToPosition(struct Position32 *posStruct, s32 cameraSteps);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4,5 +4,9 @@
|
|||
#include "dungeon_entity.h"
|
||||
|
||||
bool8 CanSee(struct DungeonEntity *entity, struct DungeonEntity *targetEntity);
|
||||
bool8 CanSee_2(struct DungeonEntity *entity, struct DungeonEntity *targetEntity);
|
||||
bool8 sub_8045A70(struct DungeonEntity *entity, struct DungeonEntity *targetEntity);
|
||||
bool8 sub_8045AAC(struct DungeonEntity *entity, struct Position *pos);
|
||||
bool8 InSameRoom(struct DungeonEntity *entity, struct Position *pos);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ void FillInventoryGaps();
|
|||
bool8 AddHeldItemToInventory(struct HeldItem* slot);
|
||||
bool8 IsNotMoneyOrUsedTMItem(u8 id);
|
||||
s32 FindItemInInventory(u8 itemIndex);
|
||||
bool8 IsHMItem(u8 id);
|
||||
|
||||
|
||||
void RestoreHeldItem(struct unkStruct_8094924*, struct HeldItem*);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ void InitZeroedPPPokemonMove(struct PokemonMove *move, u16 moveID);
|
|||
s16 GetMoveTargetingFlags(struct PokemonMove *move, u32 isAI);
|
||||
u8 GetMoveType(struct PokemonMove *move);
|
||||
u8 GetMoveWeight(struct PokemonMove *move);
|
||||
u8 GetMoveHitCount(struct PokemonMove *move);
|
||||
u32 GetMoveHitCount(struct PokemonMove *move);
|
||||
s32 GetMovePower(struct PokemonMove *move);
|
||||
s32 GetMoveAccuracy(struct PokemonMove *move, u32 accuracyType);
|
||||
u32 GetMoveMaxPP(struct PokemonMove *move);
|
||||
|
|
|
|||
|
|
@ -193,6 +193,7 @@ void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32
|
|||
void PeekPokemonItem(s16 index_, struct HeldItem* item);
|
||||
void GivePokemonItem(s16 index_, struct HeldItem* item);
|
||||
bool8 IsPokemonRenamed(struct PokemonStruct* pokemon);
|
||||
bool8 CanMonLearnMove(u16 moveID, s16 _species);
|
||||
|
||||
u8 *GetCategoryString(s16 index);
|
||||
u8 GetPokemonSize(s16 index);
|
||||
|
|
@ -204,7 +205,7 @@ u8 GetUnk1B(s16 index);
|
|||
bool8 GetIsMoving(s16 index);
|
||||
u8 GetUnk1D(s16 index);
|
||||
u16 GetLowKickDmg(s16 index);
|
||||
u16 GetSizeOrbDmg(s16 index);
|
||||
u32 GetSizeOrbDmg(s16 index);
|
||||
u8 GetFriendArea(s16 index);
|
||||
u16 GetBaseHP(s16 index);
|
||||
bool8 IsToolboxEnabled(s16 index);
|
||||
|
|
|
|||
|
|
@ -126,6 +126,8 @@ SECTIONS {
|
|||
src/thank_you_wonder_mail.o(.text);
|
||||
src/wonder_mail_2.o(.text);
|
||||
asm/wonder_mail_2.o(.text);
|
||||
src/wonder_mail_2_1.o(.text);
|
||||
asm/wonder_mail_802C860.o(.text);
|
||||
src/wonder_mail_3.o(.text);
|
||||
asm/wonder_mail_3.o(.text);
|
||||
src/wonder_mail_802DF88.o(.text);
|
||||
|
|
@ -193,6 +195,7 @@ SECTIONS {
|
|||
src/dungeon_util.o(.text);
|
||||
asm/code_80450F8.o(.text);
|
||||
src/dungeon_visibility.o(.text);
|
||||
src/code_8045A00.o(.text);
|
||||
asm/code_8045A00.o(.text);
|
||||
src/dungeon_items.o(.text);
|
||||
asm/code_8046CE4.o(.text);
|
||||
|
|
@ -232,9 +235,6 @@ SECTIONS {
|
|||
src/dungeon_ai_targeting.o(.text);
|
||||
asm/code_8071214.o(.text);
|
||||
src/dungeon_ai_targeting_1.o(.text);
|
||||
asm/code_8071518.o(.text);
|
||||
src/dungeon_ai_targeting_2.o(.text);
|
||||
asm/code_807167C.o(.text);
|
||||
src/dungeon_pokemon_attributes.o(.text);
|
||||
asm/code_80718D8.o(.text);
|
||||
src/dungeon_ai_items.o(.text);
|
||||
|
|
@ -250,14 +250,13 @@ SECTIONS {
|
|||
asm/code_807CD9C.o(.text);
|
||||
src/weather.o(.text);
|
||||
asm/code_807E5AC.o(.text);
|
||||
src/code_807E5AC.o(.text);
|
||||
src/trap.o(.text);
|
||||
asm/code_807FCD4.o(.text);
|
||||
src/code_8083288.o(.text);
|
||||
src/dungeon_range.o(.text);
|
||||
asm/code_808333C.o(.text);
|
||||
src/dungeon_random.o(.text);
|
||||
asm/code_808411C.o(.text);
|
||||
src/dungeon_random_1.o(.text);
|
||||
asm/code_808417C.o(.text);
|
||||
src/code_80848F0.o(.text);
|
||||
asm/code_80848F0.o(.text);
|
||||
|
|
@ -413,6 +412,9 @@ SECTIONS {
|
|||
src/wonder_mail.o(.rodata);
|
||||
src/thank_you_wonder_mail.o(.rodata);
|
||||
src/wonder_mail_2.o(.rodata);
|
||||
src/wonder_mail_2_1.o(.rodata);
|
||||
src/wonder_mail_3.o(.rodata);
|
||||
src/wonder_mail_802DF88.o(.rodata);
|
||||
data/data_80DED44.o(.rodata);
|
||||
src/post_office_guide.o(.rodata);
|
||||
data/data_80E1F30.o(.rodata);
|
||||
|
|
@ -448,7 +450,7 @@ SECTIONS {
|
|||
data/data_8106FB5.o(.rodata);
|
||||
src/dungeon_ai_targeting.o(.rodata);
|
||||
data/data_8106FDD.o(.rodata);
|
||||
src/dungeon_ai_targeting_2.o(.rodata);
|
||||
src/dungeon_ai_targeting_1.o(.rodata);
|
||||
data/data_8107010.o(.rodata);
|
||||
src/friend_area.o(.rodata);
|
||||
data/data_810AC60.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,14 @@ extern s16 sub_8097838();
|
|||
extern s16 sub_8097870();
|
||||
extern s32 sub_80977B8();
|
||||
extern s32 sub_80977F8();
|
||||
extern void xxx_call_draw_string(s32, u32, u8 *, u32, u32);
|
||||
extern void xxx_call_draw_string(s32, u32, const u8 *, u32, u32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
|
||||
extern void xxx_format_and_draw(u32, u32, const char *, u32, u32);
|
||||
const u8 *GetAdventureLogLine(u8 index);
|
||||
extern s32 sub_8013800(void *, s32);
|
||||
extern u32 gUnknown_202DE30;
|
||||
|
||||
u32 CreateAdventureLogScreen(u32 param_1)
|
||||
|
|
@ -202,14 +209,13 @@ void sub_8032084(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
// Mostly matches except around the switch
|
||||
#ifdef NONMATCHING
|
||||
void DisplayAdventureLog(void)
|
||||
{
|
||||
s32 counter;
|
||||
s32 r4; // r4
|
||||
s32 r6; // r6
|
||||
u8 temp;
|
||||
s32 v1, v2, v3, v4, v5, v6;
|
||||
|
||||
sub_8008C54(gAdventureLog->unk34);
|
||||
sub_80073B8(gAdventureLog->unk34);
|
||||
|
|
@ -229,27 +235,38 @@ void DisplayAdventureLog(void)
|
|||
if(sub_8097710(temp)){
|
||||
switch(temp) {
|
||||
case 0xc:
|
||||
gUnknown_202DE30 = sub_80978B8();
|
||||
v1 = sub_80978B8();
|
||||
gUnknown_202DE30 = (s16)v1;
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
|
||||
break;
|
||||
case 7:
|
||||
gUnknown_202DE30 = sub_8097880();
|
||||
v2 = sub_8097880();
|
||||
gUnknown_202DE30 = (s16)v2;
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
|
||||
break;
|
||||
case 0xb:
|
||||
gUnknown_202DE30 = sub_8097838();
|
||||
v3 = sub_8097838();
|
||||
gUnknown_202DE30 = (s16)v3;
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
|
||||
break;
|
||||
case 8:
|
||||
gUnknown_202DE30 = sub_80977B8();
|
||||
v4 = sub_80977B8();
|
||||
gUnknown_202DE30 = v4;
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
|
||||
break;
|
||||
case 9:
|
||||
gUnknown_202DE30 = sub_80977F8();
|
||||
v5 = sub_80977F8();
|
||||
gUnknown_202DE30 = v5;
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
|
||||
break;
|
||||
case 10:
|
||||
gUnknown_202DE30 = sub_8097870();
|
||||
break;
|
||||
v6 = sub_8097870();
|
||||
gUnknown_202DE30 = (s16)v6;
|
||||
// fallthrough
|
||||
default:
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
|
||||
break;
|
||||
}
|
||||
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -259,171 +276,3 @@ void DisplayAdventureLog(void)
|
|||
}
|
||||
sub_80073E0(gAdventureLog->unk34);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void DisplayAdventureLog(void)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tsub sp, 0x8\n"
|
||||
"\tldr r5, _08032158\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tldr r0, [r0, 0x34]\n"
|
||||
"\tbl sub_8008C54\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tldr r0, [r0, 0x34]\n"
|
||||
"\tbl sub_80073B8\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r1, 0x1E\n"
|
||||
"\tldrsh r4, [r0, r1]\n"
|
||||
"\tlsls r4, 3\n"
|
||||
"\tadds r6, r4, 0\n"
|
||||
"\tadds r6, 0xA\n"
|
||||
"\tldr r2, _0803215C\n"
|
||||
"\tldr r3, [r0, 0x34]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"\tadds r4, 0x4\n"
|
||||
"\tldr r1, [r5]\n"
|
||||
"\tadds r0, r1, 0\n"
|
||||
"\tadds r0, 0x9E\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r6, r4, r0\n"
|
||||
"\tmovs r0, 0x1E\n"
|
||||
"\tldrsh r2, [r1, r0]\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tmovs r0, 0x7\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tldr r0, [r1, 0x34]\n"
|
||||
"\tstr r0, [sp, 0x4]\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tmovs r3, 0x1\n"
|
||||
"\tbl sub_8012BC4\n"
|
||||
"\tmovs r7, 0\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tb _0803223A\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08032158: .4byte gAdventureLog\n"
|
||||
"_0803215C: .4byte gAdventureLogHeaderText\n"
|
||||
"_08032160:\n"
|
||||
"\tldr r5, _08032194\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tmovs r2, 0x1E\n"
|
||||
"\tldrsh r1, [r0, r2]\n"
|
||||
"\tmovs r2, 0x1C\n"
|
||||
"\tldrsh r0, [r0, r2]\n"
|
||||
"\tmuls r0, r1\n"
|
||||
"\tadds r0, r7\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r6, r0, 24\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl sub_8097710\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r4, r0, 24\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbeq _0803221C\n"
|
||||
"\tsubs r0, r6, 0x7\n"
|
||||
"\tcmp r0, 0x5\n"
|
||||
"\tbhi _080321EC\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tldr r1, _08032198\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmov pc, r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08032194: .4byte gAdventureLog\n"
|
||||
"_08032198: .4byte _0803219C\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0803219C:\n"
|
||||
"\t.4byte _080321BA\n"
|
||||
"\t.4byte _080321C6\n"
|
||||
"\t.4byte _080321D4\n"
|
||||
"\t.4byte _080321E0\n"
|
||||
"\t.4byte _080321C0\n"
|
||||
"\t.4byte _080321B4\n"
|
||||
"_080321B4:\n"
|
||||
"\tbl sub_80978B8\n"
|
||||
"\tb _080321E4\n"
|
||||
"_080321BA:\n"
|
||||
"\tbl sub_8097880\n"
|
||||
"\tb _080321E4\n"
|
||||
"_080321C0:\n"
|
||||
"\tbl sub_8097838\n"
|
||||
"\tb _080321E4\n"
|
||||
"_080321C6:\n"
|
||||
"\tbl sub_80977B8\n"
|
||||
"\tldr r1, _080321D0\n"
|
||||
"\tb _080321EA\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_080321D0: .4byte gUnknown_202DE30\n"
|
||||
"_080321D4:\n"
|
||||
"\tbl sub_80977F8\n"
|
||||
"\tldr r1, _080321DC\n"
|
||||
"\tb _080321EA\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_080321DC: .4byte gUnknown_202DE30\n"
|
||||
"_080321E0:\n"
|
||||
"\tbl sub_8097870\n"
|
||||
"_080321E4:\n"
|
||||
"\tldr r1, _08032214\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tasrs r0, 16\n"
|
||||
"_080321EA:\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"_080321EC:\n"
|
||||
"\tldr r4, _08032218\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r1, r7, 0\n"
|
||||
"\tbl sub_8013800\n"
|
||||
"\tadds r5, r0, 0\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tbl GetAdventureLogLine\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r3, [r0, 0x34]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tadds r1, r5, 0\n"
|
||||
"\tbl xxx_format_and_draw\n"
|
||||
"\tb _08032234\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08032214: .4byte gUnknown_202DE30\n"
|
||||
"_08032218: .4byte gAdventureLog\n"
|
||||
"_0803221C:\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tadds r1, r7, 0\n"
|
||||
"\tbl sub_8013800\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tldr r2, _08032254\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tldr r3, [r0, 0x34]\n"
|
||||
"\tstr r4, [sp]\n"
|
||||
"\tmovs r0, 0x8\n"
|
||||
"\tbl xxx_call_draw_string\n"
|
||||
"_08032234:\n"
|
||||
"\tadds r7, 0x1\n"
|
||||
"\tldr r0, _08032258\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"_0803223A:\n"
|
||||
"\tmovs r1, 0x1A\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tcmp r7, r0\n"
|
||||
"\tblt _08032160\n"
|
||||
"\tldr r0, _08032258\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tldr r0, [r0, 0x34]\n"
|
||||
"\tbl sub_80073E0\n"
|
||||
"\tadd sp, 0x8\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08032254: .4byte gUnknown_80E2030\n"
|
||||
"_08032258: .4byte gAdventureLog");
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
|
||||
#include "constants/move_id.h"
|
||||
#include "constants/status.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "moves.h"
|
||||
|
||||
struct MultiTurnChargeMove
|
||||
{
|
||||
|
|
@ -39,6 +41,26 @@ const u32 gMultiTurnChargingStatuses[10] = {
|
|||
|
||||
ALIGNED(4) const char chargingStatusFill[] = "pksdir0";
|
||||
|
||||
u32 sub_8057070(struct PokemonMove *move)
|
||||
{
|
||||
u32 hitCount;
|
||||
hitCount = GetMoveHitCount(move);
|
||||
if(hitCount == 0)
|
||||
return DungeonRandomRange(2, 6);
|
||||
else
|
||||
return hitCount;
|
||||
}
|
||||
|
||||
bool8 MoveCausesPaused(struct PokemonMove *move)
|
||||
{
|
||||
if(move->moveID == MOVE_FRENZY_PLANT) return TRUE;
|
||||
if(move->moveID == MOVE_HYDRO_CANNON) return TRUE;
|
||||
if(move->moveID == MOVE_HYPER_BEAM) return TRUE;
|
||||
if(move->moveID == MOVE_BLAST_BURN) return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MoveMatchesChargingStatus(struct DungeonEntity *pokemon, struct PokemonMove *move)
|
||||
{
|
||||
if (!EntityExists(pokemon))
|
||||
|
|
@ -99,4 +121,4 @@ bool8 IsCharging(struct DungeonEntity *pokemon, bool8 checkCharge)
|
|||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,12 +24,46 @@ struct unkStruct_203B240
|
|||
u32 unk90;
|
||||
};
|
||||
|
||||
struct unkStruct_203B244
|
||||
{
|
||||
// size: 0x554
|
||||
u32 unk0;
|
||||
u8 fill4[0x4B4 - 0x4];
|
||||
u32 unk4B4;
|
||||
u8 fill4B8[0x4CC - 0x4B8];
|
||||
u16 unk4CC;
|
||||
u16 unk4CE;
|
||||
u16 unk4D0;
|
||||
u16 unk4D2;
|
||||
u8 fill4D4[0x4E8 - 0x4D4];
|
||||
u32 unk4E8;
|
||||
struct UnkTextStruct2 * unk4EC;
|
||||
struct UnkTextStruct2 unk4F0[4];
|
||||
u8 unk550[4];
|
||||
};
|
||||
|
||||
extern const struct UnkTextStruct2 gUnknown_80DBE54;
|
||||
|
||||
extern struct unkStruct_203B244 *gUnknown_203B244;
|
||||
extern struct unkStruct_203B240 *gUnknown_203B240;
|
||||
extern u32 gUnknown_203B248;
|
||||
extern u16 gUnknown_203B24C;
|
||||
extern u16 gUnknown_203B24E;
|
||||
|
||||
extern char gUnknown_80DBE2C[]; // {ARG_MOVE_ITEM_0}
|
||||
extern char gUnknown_80DBE30[]; // {ARG_POKEMON_0}
|
||||
extern u8 gUnknown_202DE58[0x58];
|
||||
extern u8 gAvailablePokemonNames[0x58];
|
||||
|
||||
extern bool8 sub_801CF14(u32);
|
||||
extern void sub_8012D08(struct UnkTextStruct2 *, u32);
|
||||
extern void sub_8013818(u32 *, u32, u32, u32);
|
||||
extern u32 sub_801CE58(void);
|
||||
extern void sub_8013984(void *);
|
||||
extern void sub_801CC38(void);
|
||||
extern void sub_801CCD8(void);
|
||||
extern void sub_801CF94(void);
|
||||
|
||||
|
||||
extern void ResetSprites(u32);
|
||||
extern void sub_801317C(u32 *);
|
||||
|
|
@ -204,3 +238,38 @@ void sub_801C848(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_801C8C4(s32 param_1, s32 param_2, struct UnkTextStruct2_sub *param_3, u32 param_4)
|
||||
{
|
||||
if (sub_801CF14(param_1)) {
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_203B244 == NULL) {
|
||||
gUnknown_203B244 = MemoryAlloc(sizeof(struct unkStruct_203B244), 8);
|
||||
}
|
||||
gUnknown_203B244->unk0 = param_1;
|
||||
sub_801CF94();
|
||||
gUnknown_203B244->unk4E8 = param_2;
|
||||
gUnknown_203B244->unk4EC = &gUnknown_203B244->unk4F0[param_2];
|
||||
sub_8006518(gUnknown_203B244->unk4F0);
|
||||
gUnknown_203B244->unk4F0[gUnknown_203B244->unk4E8] = gUnknown_80DBE54;
|
||||
gUnknown_203B244->unk4EC->unk14 = gUnknown_203B244->unk550;
|
||||
if (param_3 != NULL) {
|
||||
gUnknown_203B244->unk4F0[gUnknown_203B244->unk4E8].unk08 = *param_3;
|
||||
}
|
||||
sub_8012D08(gUnknown_203B244->unk4EC, param_4);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B244->unk4F0,1,1);
|
||||
sub_8013818(&gUnknown_203B244->unk4B4, sub_801CE58(), param_4, param_2);
|
||||
if (gUnknown_203B248 == gUnknown_203B244->unk0) {
|
||||
gUnknown_203B244->unk4CC = gUnknown_203B24C;
|
||||
gUnknown_203B244->unk4D2 = gUnknown_203B24E;
|
||||
sub_8013984(&gUnknown_203B244->unk4B4);
|
||||
}
|
||||
sub_801CC38();
|
||||
sub_801CCD8();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,13 @@ struct unkStruct_203B258
|
|||
// size: 0xA0
|
||||
u8 fill0[0x14];
|
||||
u32 unk14;
|
||||
u8 fill18[0x34 - 0x18];
|
||||
u16 unk18;
|
||||
u16 unk1A;
|
||||
u16 unk1C;
|
||||
u16 unk1E;
|
||||
u16 unk20;
|
||||
u16 unk22;
|
||||
u8 unk24[0x34 - 0x24];
|
||||
u32 unk34;
|
||||
struct UnkTextStruct2 *unk38;
|
||||
struct UnkTextStruct2 unk3C[4];
|
||||
|
|
@ -24,6 +30,7 @@ struct unkStruct_203B258
|
|||
|
||||
extern struct unkStruct_203B258 *gUnknown_203B258;
|
||||
extern struct UnkTextStruct2 gUnknown_80DBF88;
|
||||
extern struct UnkTextStruct2 gUnknown_80DBF70;
|
||||
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern void sub_8013878(void *, s32);
|
||||
|
|
@ -32,6 +39,8 @@ extern u32 GetKeyPress(void *);
|
|||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_801DB54();
|
||||
extern void sub_801DBD4();
|
||||
extern void sub_8013984(void *);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
|
||||
extern u32 sub_801BF48(void);
|
||||
extern void sub_801BF98(void);
|
||||
|
|
@ -403,3 +412,33 @@ u32 sub_801DA78(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
s16 sub_801DAC0(void)
|
||||
{
|
||||
return (gUnknown_203B258->unk1E * gUnknown_203B258->unk1C) + gUnknown_203B258->unk18;
|
||||
}
|
||||
|
||||
void sub_801DADC(u32 r0)
|
||||
{
|
||||
u8 r0_u8;
|
||||
r0_u8 = r0;
|
||||
|
||||
gUnknown_203B258->unk22 = 0xE5;
|
||||
sub_8013984(gUnknown_203B258);
|
||||
sub_801DB54();
|
||||
sub_801DBD4();
|
||||
if(r0_u8)
|
||||
AddMenuCursorSprite(gUnknown_203B258);
|
||||
}
|
||||
|
||||
void sub_801DB0C(void)
|
||||
{
|
||||
if(gUnknown_203B258 != NULL)
|
||||
{
|
||||
gUnknown_203B258->unk3C[gUnknown_203B258->unk34] = gUnknown_80DBF70;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B258->unk3C, 1, 1);
|
||||
MemoryFree(gUnknown_203B258);
|
||||
gUnknown_203B258 = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
92
src/code_8045A00.c
Normal file
92
src/code_8045A00.c
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
#include "global.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_util.h"
|
||||
|
||||
extern u8 *gUnknown_80FE6F4[];
|
||||
extern struct unkStruct_8090F58 gUnknown_80F699C;
|
||||
extern struct unkStruct_8090F58 gUnknown_80F69A8;
|
||||
extern struct unkStruct_8090F58 gUnknown_80F6990;
|
||||
|
||||
extern struct DungeonEntityData* GetTrapData_1(struct DungeonEntity *entity);
|
||||
extern void SetMessageArgument_2(u8 *, struct DungeonEntityData *, u32);
|
||||
extern void GetTrapName(u8 *, u8);
|
||||
|
||||
void sub_8045BF8(u8 *, struct ItemSlot *);
|
||||
|
||||
void sub_8045ACC(void)
|
||||
{
|
||||
struct DungeonEntity *uVar2;
|
||||
s32 index;
|
||||
s32 pokeCount;
|
||||
|
||||
pokeCount = 0;
|
||||
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
uVar2 = gDungeonGlobalData->teamPokemon[index];
|
||||
if (EntityExists(uVar2)) {
|
||||
gDungeonGlobalData->allPokemon[pokeCount] = uVar2;
|
||||
pokeCount++;
|
||||
}
|
||||
}
|
||||
|
||||
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++)
|
||||
{
|
||||
uVar2 = gDungeonGlobalData->wildPokemon[index];
|
||||
if (EntityExists(uVar2)) {
|
||||
gDungeonGlobalData->allPokemon[pokeCount] = uVar2;
|
||||
pokeCount++;
|
||||
}
|
||||
}
|
||||
for (; pokeCount < DUNGEON_MAX_POKEMON; pokeCount++) {
|
||||
gDungeonGlobalData->allPokemon[pokeCount] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
s32 GetTeamMemberEntityIndex(struct DungeonEntity *entity)
|
||||
{
|
||||
struct DungeonEntity *uVar2;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
uVar2 = gDungeonGlobalData->teamPokemon[index];
|
||||
if (entity == uVar2)
|
||||
return index;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void SetMessageArgument(char *buffer, struct DungeonEntity *entity, u32 param_3)
|
||||
{
|
||||
switch(GetEntityType(entity))
|
||||
{
|
||||
case ENTITY_POKEMON:
|
||||
SetMessageArgument_2(buffer, entity->entityData, param_3);
|
||||
break;
|
||||
case ENTITY_ITEM:
|
||||
sub_8045BF8(buffer, GetItemData_1(entity));
|
||||
break;
|
||||
case ENTITY_TRAP:
|
||||
GetTrapName(buffer, *((u8 *)GetTrapData_1(entity)));
|
||||
break;
|
||||
default:
|
||||
strcpy(buffer, *gUnknown_80FE6F4);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8045BF8(u8 *buffer, struct ItemSlot *item)
|
||||
{
|
||||
sub_8090E14(buffer, item, &gUnknown_80F699C);
|
||||
}
|
||||
|
||||
void sub_8045C08(u8 *buffer, struct ItemSlot *item)
|
||||
{
|
||||
sub_8090E14(buffer, item, &gUnknown_80F69A8);
|
||||
}
|
||||
|
||||
void sub_8045C18(u8 *buffer, struct ItemSlot *item)
|
||||
{
|
||||
sub_8090E14(buffer, item, &gUnknown_80F6990);
|
||||
}
|
||||
|
|
@ -6,68 +6,69 @@
|
|||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "friend_area.h"
|
||||
#include "map.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
|
||||
extern struct DungeonEntity *sub_8085680(u32);
|
||||
extern struct DungeonEntity *GetEntityFromClientType(u32);
|
||||
extern char gUnknown_202E038[0x50];
|
||||
extern u32 gUnknown_202EDC8;
|
||||
|
||||
extern u32 gUnknown_81062A8;
|
||||
extern u32 gUnknown_8106074;
|
||||
extern u32 gUnknown_81060BC;
|
||||
extern u32 gUnknown_8106104;
|
||||
extern u32 gUnknown_8106140;
|
||||
extern u32 gUnknown_8106214;
|
||||
extern u32 gUnknown_8106244;
|
||||
extern u32 gUnknown_810627C;
|
||||
extern u32 gKyogrePreFightDialogue_8;
|
||||
extern u32 gKyogrePreFightDialogue_1;
|
||||
extern u32 gKyogrePreFightDialogue_2;
|
||||
extern u32 gKyogrePreFightDialogue_3;
|
||||
extern u32 gKyogrePreFightDialogue_4;
|
||||
extern u32 gKyogrePreFightDialogue_5;
|
||||
extern u32 gKyogrePreFightDialogue_6;
|
||||
extern u32 gKyogrePreFightDialogue_7;
|
||||
extern u32 gUnknown_810697C;
|
||||
extern u64 gUnknown_8107544[];
|
||||
extern u32 gUnknown_8106778;
|
||||
extern u32 gUnknown_81067BC;
|
||||
extern u32 gUnknown_81067E0;
|
||||
extern u32 gUnknown_8106834;
|
||||
extern u32 gUnknown_810688C;
|
||||
extern u32 gUnknown_81068D0;
|
||||
extern u32 gUnknown_8106918;
|
||||
extern u32 gUnknown_8106934;
|
||||
extern u32 gMedichamRescueDialogue_1;
|
||||
extern u32 gMedichamRescueDialogue_2;
|
||||
extern u32 gMedichamRescueDialogue_3;
|
||||
extern u32 gMedichamRescueDialogue_4;
|
||||
extern u32 gSmeargleRescueDialogue_1;
|
||||
extern u32 gSmeargleRescueDialogue_2;
|
||||
extern u32 gSmeargleRescueDialogue_3;
|
||||
extern u32 gSmeargleRescueDialogue_4;
|
||||
extern u32 gUnknown_8106720;
|
||||
|
||||
extern u32 gUnknown_810663C;
|
||||
extern u32 gUnknown_81063D0;
|
||||
extern u32 gUnknown_8106400;
|
||||
extern u32 gUnknown_810643C;
|
||||
extern u32 gUnknown_8106468;
|
||||
extern u32 gUnknown_810648C;
|
||||
extern u32 gUnknown_81064BC;
|
||||
extern u32 gUnknown_8106500;
|
||||
extern u32 gUnknown_8106534;
|
||||
extern u32 gUnknown_8106560;
|
||||
extern u32 gCelebiJoinDialogue_10;
|
||||
extern u32 gCelebiJoinDialogue_1;
|
||||
extern u32 gCelebiJoinDialogue_2;
|
||||
extern u32 gCelebiJoinDialogue_3;
|
||||
extern u32 gCelebiJoinDialogue_4;
|
||||
extern u32 gCelebiJoinDialogue_5;
|
||||
extern u32 gCelebiJoinDialogue_6;
|
||||
extern u32 gCelebiJoinDialogue_7;
|
||||
extern u32 gCelebiJoinDialogue_8;
|
||||
extern u32 gCelebiJoinDialogue_9;
|
||||
extern u32 *gPtrPurityForestAllowCelebiToJoinText;
|
||||
extern u32 gPurityForestAllowCelebiToJoinPrompt;
|
||||
extern u32 *gPtrPurityForestRefuseCelebiConfirmText;
|
||||
extern u32 gPurityForestRefuseCelebiConfirmPrompt;
|
||||
extern u32 gUnknown_81062B4;
|
||||
extern u32 gUnknown_81062E8;
|
||||
extern u32 gUnknown_8106368;
|
||||
extern u32 gUnknown_8106390;
|
||||
extern u32 gUnknown_81063C4;
|
||||
extern u32 gUnknown_8106068;
|
||||
extern u32 gUnknown_8105E88;
|
||||
extern u32 gUnknown_8105EF8;
|
||||
extern u32 gUnknown_8105F38;
|
||||
extern u32 gUnknown_8105F74;
|
||||
extern u32 gUnknown_8105FA0;
|
||||
extern u32 gUnknown_8105FD8;
|
||||
extern u32 gUnknown_8106024;
|
||||
extern u32 gDeoxysPreFightDialogue_1;
|
||||
extern u32 gDeoxysPreFightDialogue_2;
|
||||
extern u32 gDeoxysPreFightDialogue_3;
|
||||
extern u32 gDeoxysPreFightDialogue_4;
|
||||
extern u32 gDeoxysPreFightDialogue_5;
|
||||
extern u32 gLugiaPreFightDialogue_8;
|
||||
extern u32 gLugiaPreFightDialogue_1;
|
||||
extern u32 gLugiaPreFightDialogue_2;
|
||||
extern u32 gLugiaPreFightDialogue_3;
|
||||
extern u32 gLugiaPreFightDialogue_4;
|
||||
extern u32 gLugiaPreFightDialogue_5;
|
||||
extern u32 gLugiaPreFightDialogue_6;
|
||||
extern u32 gLugiaPreFightDialogue_7;
|
||||
|
||||
extern u32 gUnknown_81058C4;
|
||||
extern u32 gUnknown_81058A8;
|
||||
extern u8 sub_800E9A8(u32);
|
||||
extern void sub_800DC14(u32);
|
||||
extern void sub_808BAA4();
|
||||
extern void JirachiWishGrantFlash();
|
||||
|
||||
extern void sub_8086A3C(struct DungeonEntity *r0);
|
||||
extern void sub_8083E88(u32);
|
||||
|
|
@ -105,16 +106,15 @@ extern void sub_80861D4(struct DungeonEntity *, u32, u32);
|
|||
extern void sub_806FDF4(struct DungeonEntity *, struct DungeonEntity *, struct DungeonEntity **);
|
||||
extern u32 sub_80861F8(u32, struct DungeonEntity *, u32);
|
||||
extern void sub_8083ED8(u32);
|
||||
extern u32 sub_803F994();
|
||||
extern s32 sub_803F9B0();
|
||||
extern s32 GetCameraXPos();
|
||||
extern s32 GetCameraYPos();
|
||||
extern void sub_803F878(u32, s32);
|
||||
extern void SetupBossFightHP(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_8085C54(u32, u32, u32, u32, u32);
|
||||
extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32);
|
||||
extern void sub_803E9D0(void);
|
||||
extern void DeoxysScreenFlash(void);
|
||||
extern void sub_8085EB0();
|
||||
extern void sub_808563C(void *);
|
||||
extern void sub_80858AC(u32 *, u32);
|
||||
|
||||
void SetupDeoxysFightHP(struct DungeonEntity *r0);
|
||||
void sub_808C550(void);
|
||||
|
|
@ -126,8 +126,8 @@ void sub_808C360(void);
|
|||
void KyogreScreenFlash();
|
||||
|
||||
void sub_808C0CC();
|
||||
void sub_808BFA0();
|
||||
void sub_808C02C();
|
||||
void LugiaScreenFlash();
|
||||
void LugiaScreenFlash2();
|
||||
extern void sub_80861B8(struct DungeonEntity *, u32, u32);
|
||||
|
||||
void nullsub_99();
|
||||
|
|
@ -146,14 +146,14 @@ void sub_808BBA8(struct DungeonEntity *param_1)
|
|||
sub_806BFC0(param_1->entityData,0);
|
||||
}
|
||||
|
||||
void sub_808BBB8(struct DungeonEntity *param_1)
|
||||
void JirachiDropInEffect(struct DungeonEntity *jirachiEntity)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
|
||||
sub_80861F8(0x1b,param_1,0);
|
||||
sub_8086A54(param_1);
|
||||
sub_80861B8(param_1,0xe,0);
|
||||
sub_80861F8(0x1b,jirachiEntity,0);
|
||||
sub_8086A54(jirachiEntity);
|
||||
sub_80861B8(jirachiEntity,0xe,0);
|
||||
iVar1 = 0xa000;
|
||||
iVar2 = 0x200;
|
||||
PlaySoundEffect(0x1f8);
|
||||
|
|
@ -163,44 +163,44 @@ void sub_808BBB8(struct DungeonEntity *param_1)
|
|||
iVar2 = 0x100;
|
||||
}
|
||||
if (iVar1 < 0) break;
|
||||
param_1->entityData->unk174 = iVar1;
|
||||
jirachiEntity->entityData->unk174 = iVar1;
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
param_1->entityData->unk174 = 0;
|
||||
jirachiEntity->entityData->unk174 = 0;
|
||||
}
|
||||
|
||||
void sub_808BC20(struct DungeonEntity * param_1)
|
||||
void JirachiSpinEffect(struct DungeonEntity * jirachiEntity)
|
||||
{
|
||||
s32 uVar1;
|
||||
|
||||
PlaySoundEffect(0x298);
|
||||
for(uVar1 = 0; uVar1 < 0x19; uVar1++){
|
||||
SetFacingDirection(param_1,uVar1 & DIRECTION_MASK);
|
||||
for(uVar1 = 0; uVar1 < 25; uVar1++){
|
||||
SetFacingDirection(jirachiEntity, uVar1 & DIRECTION_MASK);
|
||||
sub_803E708(3,0x46);
|
||||
}
|
||||
param_1->entityData->unk15E = 1;
|
||||
jirachiEntity->entityData->unk15E = 1;
|
||||
PlaySoundEffect(0x27f);
|
||||
sub_80861F8(99,param_1,1);
|
||||
sub_80861F8(99,jirachiEntity,1);
|
||||
}
|
||||
|
||||
void JirachiWishGrantDialogue(struct DungeonEntity *param_1)
|
||||
void JirachiWishGrantDialogue(struct DungeonEntity *jirachiEntity)
|
||||
{
|
||||
u32 uVar2;
|
||||
|
||||
param_1->entityData->unk15D = 1;
|
||||
jirachiEntity->entityData->unk15D = 1;
|
||||
// Nnnnnnnnnn!
|
||||
DisplayDungeonDialogue(&gUnknown_81058A8);
|
||||
PlaySoundEffect(0x375);
|
||||
sub_80861F8(0x67,param_1,1);
|
||||
sub_80861F8(0x67,jirachiEntity,1);
|
||||
PlaySoundEffect(0x2a8);
|
||||
uVar2 = sub_80861F8(0x68,param_1,0);
|
||||
uVar2 = sub_80861F8(0x68,jirachiEntity,0);
|
||||
// Taaaaaaaah!
|
||||
DisplayDungeonDialogue(&gUnknown_81058C4);
|
||||
if (sub_800E9A8(uVar2) != 0) {
|
||||
sub_800DC14(uVar2);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
sub_808BAA4();
|
||||
JirachiWishGrantFlash();
|
||||
}
|
||||
|
||||
void sub_808BCE4(void)
|
||||
|
|
@ -272,7 +272,7 @@ void sub_808BDEC(void)
|
|||
struct DungeonEntity * LugiaEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
LugiaEntity = sub_8085680(0x1b);
|
||||
LugiaEntity = GetEntityFromClientType(0x1b);
|
||||
sub_8083F14();
|
||||
sub_80854D4();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
|
|
@ -303,89 +303,89 @@ void LugiaPreFightDialogue(void)
|
|||
struct DungeonEntity * LugiaEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
LugiaEntity = sub_8085680(0x1b);
|
||||
LugiaEntity = GetEntityFromClientType(0x1b);
|
||||
if (HasRecruitedMon(SPECIES_LUGIA)) {
|
||||
sub_8086448();
|
||||
sub_80866C4(&gUnknown_8106068);
|
||||
sub_80866C4(&gLugiaPreFightDialogue_8);
|
||||
}
|
||||
else {
|
||||
sub_8083F14();
|
||||
sub_8086448();
|
||||
DisplayDungeonDialogue(&gUnknown_8105E88);
|
||||
DisplayDungeonDialogue(&gLugiaPreFightDialogue_1);
|
||||
sub_8083EA8(0x23,0x3c);
|
||||
sub_808C0CC();
|
||||
DisplayDungeonDialogue(&gUnknown_8105EF8);
|
||||
sub_808BFA0();
|
||||
DisplayDungeonDialogue(&gUnknown_8105F38);
|
||||
DisplayDungeonDialogue(&gLugiaPreFightDialogue_2);
|
||||
LugiaScreenFlash();
|
||||
DisplayDungeonDialogue(&gLugiaPreFightDialogue_3);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8105F74);
|
||||
DisplayDungeonDialogue(&gLugiaPreFightDialogue_4);
|
||||
PlaySoundEffect(0x1f8);
|
||||
sub_80861D4(LugiaEntity,0xd,0);
|
||||
sub_803E708(0x2b,0x46);
|
||||
sub_80861B8(LugiaEntity,0,0);
|
||||
DisplayDungeonDialogue(&gUnknown_8105FA0);
|
||||
sub_808BFA0();
|
||||
DisplayDungeonDialogue(&gUnknown_8105FD8);
|
||||
sub_808C02C();
|
||||
sub_8085C54(0xffffff06,0xffffff06,0xffffff06,1,0);
|
||||
DisplayDungeonDialogue(&gLugiaPreFightDialogue_5);
|
||||
LugiaScreenFlash();
|
||||
DisplayDungeonDialogue(&gLugiaPreFightDialogue_6);
|
||||
LugiaScreenFlash2();
|
||||
SetDungeonBGColorRGB(0xffffff06,0xffffff06,0xffffff06,1,0);
|
||||
sub_8083F14();
|
||||
sub_80861D4(LugiaEntity,7,0);
|
||||
DisplayDungeonDialogue(&gUnknown_8106024);
|
||||
sub_808BFA0();
|
||||
DisplayDungeonDialogue(&gLugiaPreFightDialogue_7);
|
||||
LugiaScreenFlash();
|
||||
SetupBossFightHP(LugiaEntity,800,0x20);
|
||||
sub_8083E88(0x23);
|
||||
sub_80858AC(&LeaderEntity->posPixel.x,0x10);
|
||||
ShiftCameraToPosition(&LeaderEntity->posPixel,0x10);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_808BFA0(void)
|
||||
void LugiaScreenFlash(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
PlaySoundEffect(0x1f6);
|
||||
for(iVar1 = 250; iVar1 > 149; iVar1 -= 10){
|
||||
sub_8085C54(0,0,iVar1,1,1);
|
||||
SetDungeonBGColorRGB(0,0,iVar1,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
for(iVar1 = 250; iVar1 > 199; iVar1 -= 10){
|
||||
sub_8085C54(0,iVar1,iVar1,1,1);
|
||||
SetDungeonBGColorRGB(0,iVar1,iVar1,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10){
|
||||
sub_8085C54(0,0,iVar1,1,1);
|
||||
SetDungeonBGColorRGB(0,0,iVar1,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
sub_8085EB0();
|
||||
}
|
||||
|
||||
void sub_808C02C(void)
|
||||
void LugiaScreenFlash2(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
PlaySoundEffect(0x1f6);
|
||||
|
||||
for(iVar1 = 0; iVar1 < 200; iVar1 += 100){
|
||||
sub_8085C54(iVar1,iVar1,iVar1,1,0);
|
||||
SetDungeonBGColorRGB(iVar1,iVar1,iVar1,1,0);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
|
||||
for(iVar1 = 200; iVar1 >= 0; iVar1 -= 100){
|
||||
sub_8085C54(iVar1,iVar1,iVar1,1,0);
|
||||
SetDungeonBGColorRGB(iVar1,iVar1,iVar1,1,0);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
|
||||
sub_803E708(4,0x46);
|
||||
|
||||
for(iVar1 = 0; iVar1 < 200; iVar1 += 100){
|
||||
sub_8085C54(iVar1,iVar1,iVar1,1,0);
|
||||
SetDungeonBGColorRGB(iVar1,iVar1,iVar1,1,0);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
|
||||
for(iVar1 = 200; iVar1 >= 0; iVar1 -= 100){
|
||||
sub_8085C54(iVar1,iVar1,iVar1,1,0);
|
||||
SetDungeonBGColorRGB(iVar1,iVar1,iVar1,1,0);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
|
||||
|
|
@ -396,11 +396,11 @@ void sub_808C02C(void)
|
|||
void sub_808C0CC(void)
|
||||
{
|
||||
gUnknown_202EDC8 = 0x1f;
|
||||
sub_8085C54(0,0,0,1,1);
|
||||
SetDungeonBGColorRGB(0,0,0,1,1);
|
||||
sub_803E9D0();
|
||||
sub_803E46C(0x46);
|
||||
gDungeonGlobalData->unk7 = 0;
|
||||
sub_808BFA0();
|
||||
LugiaScreenFlash();
|
||||
}
|
||||
|
||||
void sub_808C10C(void)
|
||||
|
|
@ -412,7 +412,7 @@ void sub_808C10C(void)
|
|||
s32 iVar2;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
KyogreEntity = sub_8085680(0x1c);
|
||||
KyogreEntity = GetEntityFromClientType(0x1c);
|
||||
sub_8083F14();
|
||||
sub_80854D4();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
|
|
@ -424,8 +424,8 @@ void sub_808C10C(void)
|
|||
SetFacingDirection(KyogreEntity, DIRECTION_SOUTH);
|
||||
}
|
||||
sub_8085860(LeaderEntity->posWorld.x,LeaderEntity->posWorld.y);
|
||||
uVar3 = sub_803F994();
|
||||
iVar2 = sub_803F9B0();
|
||||
uVar3 = GetCameraXPos();
|
||||
iVar2 = GetCameraYPos();
|
||||
sub_803F878(uVar3,iVar2 + -0x1000);
|
||||
CopySpeciesNametoBuffer(gUnknown_202E038,SPECIES_KYOGRE);
|
||||
// TODO: gUnknown_202E088 doesn't match but gUnknown_202E038 + 0x50 does
|
||||
|
|
@ -446,45 +446,45 @@ void KyogrePreFightDialogue(void)
|
|||
struct DungeonEntity *KyogreEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
KyogreEntity = sub_8085680(0x1c);
|
||||
KyogreEntity = GetEntityFromClientType(0x1c);
|
||||
sub_8083F14();
|
||||
if (HasRecruitedMon(SPECIES_KYOGRE)) {
|
||||
sub_8083EA8(0x23,0x3c);
|
||||
SpriteLookAroundEffect(LeaderEntity);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_81062A8);
|
||||
DisplayDungeonDialogue(&gKyogrePreFightDialogue_8);
|
||||
sub_803E708(10,0x46);
|
||||
gDungeonGlobalData->unk2 = 1;
|
||||
}
|
||||
else {
|
||||
DisplayDungeonDialogue(&gUnknown_8106074);
|
||||
DisplayDungeonDialogue(&gKyogrePreFightDialogue_1);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_81060BC);
|
||||
DisplayDungeonDialogue(&gKyogrePreFightDialogue_2);
|
||||
sub_803E708(10,0x46);
|
||||
nullsub_99();
|
||||
sub_803E708(10,0x46);
|
||||
// Gwwwwwooooooooh
|
||||
DisplayDungeonDialogue(&gUnknown_8106104);
|
||||
DisplayDungeonDialogue(&gKyogrePreFightDialogue_3);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8083EA8(0x23,0x3c);
|
||||
sub_808C360();
|
||||
// My duels against {ARG_POKEMON_3} (Groudon) left us both exhausted
|
||||
DisplayDungeonDialogue(&gUnknown_8106140);
|
||||
DisplayDungeonDialogue(&gKyogrePreFightDialogue_4);
|
||||
KyogreScreenFlash();
|
||||
// I am {ARG_POKEMON_2} (Kyogre)!
|
||||
// The lord of the sea!
|
||||
DisplayDungeonDialogue(&gUnknown_8106214);
|
||||
DisplayDungeonDialogue(&gKyogrePreFightDialogue_5);
|
||||
KyogreScreenFlash();
|
||||
// Witness the destructive force of my waves!
|
||||
DisplayDungeonDialogue(&gUnknown_8106244);
|
||||
DisplayDungeonDialogue(&gKyogrePreFightDialogue_6);
|
||||
KyogreScreenFlash();
|
||||
// Marvel at my awesome
|
||||
// power!
|
||||
DisplayDungeonDialogue(&gUnknown_810627C);
|
||||
DisplayDungeonDialogue(&gKyogrePreFightDialogue_7);
|
||||
sub_803E708(10,0x46);
|
||||
SetupBossFightHP(KyogreEntity,600,0xb);
|
||||
sub_8083E88(0x23);
|
||||
sub_80858AC(&LeaderEntity->posPixel.x,0x10);
|
||||
ShiftCameraToPosition(&LeaderEntity->posPixel,0x10);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -498,17 +498,17 @@ void KyogreScreenFlash(void)
|
|||
|
||||
PlaySoundEffect(0x1f8);
|
||||
for(iVar1 = 250; iVar1 > 149; iVar1 -= 10){
|
||||
sub_8085C54(0,0,iVar1,1,1);
|
||||
SetDungeonBGColorRGB(0,0,iVar1,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
for(iVar1 = 250; iVar1 > 199; iVar1 -= 10){
|
||||
sub_8085C54(0,iVar1,iVar1,1,1);
|
||||
SetDungeonBGColorRGB(0,iVar1,iVar1,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10){
|
||||
sub_8085C54(0,0,iVar1,1,1);
|
||||
SetDungeonBGColorRGB(0,0,iVar1,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
|
|
@ -518,7 +518,7 @@ void KyogreScreenFlash(void)
|
|||
void sub_808C360(void)
|
||||
{
|
||||
gUnknown_202EDC8 = 0x1f;
|
||||
sub_8085C54(0,0,0,1,1);
|
||||
SetDungeonBGColorRGB(0,0,0,1,1);
|
||||
sub_803E9D0();
|
||||
sub_803E46C(0x46);
|
||||
gDungeonGlobalData->unk7 = 0;
|
||||
|
|
@ -562,20 +562,20 @@ void DeoxysPreFightDialogue(void)
|
|||
if (HasRecruitedMon(SPECIES_DEOXYS_NORMAL)) {
|
||||
// There appears to be no one here.
|
||||
// It's impossible to go any further
|
||||
sub_80866C4(&gUnknown_81063C4);
|
||||
sub_80866C4(&gDeoxysPreFightDialogue_5);
|
||||
}
|
||||
else {
|
||||
DisplayDungeonDialogue(&gUnknown_81062B4);
|
||||
DisplayDungeonDialogue(&gDeoxysPreFightDialogue_1);
|
||||
sub_8083EA8(0x1a,0x3c);
|
||||
sub_808C550();
|
||||
DisplayDungeonDialogue(&gUnknown_81062E8);
|
||||
DisplayDungeonDialogue(&gDeoxysPreFightDialogue_2);
|
||||
DeoxysScreenFlash();
|
||||
DisplayDungeonDialogue(&gUnknown_8106368);
|
||||
DisplayDungeonDialogue(&gDeoxysPreFightDialogue_3);
|
||||
DeoxysScreenFlash();
|
||||
DisplayDungeonDialogue(&gUnknown_8106390);
|
||||
DisplayDungeonDialogue(&gDeoxysPreFightDialogue_4);
|
||||
sub_803E708(10,0x46);
|
||||
sub_808563C(SetupDeoxysFightHP);
|
||||
sub_80858AC(&LeaderEntity->posPixel.x,0x10);
|
||||
ShiftCameraToPosition(&LeaderEntity->posPixel,0x10);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -585,17 +585,17 @@ void DeoxysScreenFlash(void)
|
|||
|
||||
PlaySoundEffect(0x2c1);
|
||||
for(iVar1 = 250; iVar1 > 149; iVar1 -= 10){
|
||||
sub_8085C54(iVar1,0,0,1,1);
|
||||
SetDungeonBGColorRGB(iVar1,0,0,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
for(iVar1 = 250; iVar1 > 199; iVar1 -= 10){
|
||||
sub_8085C54(iVar1,iVar1,0,1,1);
|
||||
SetDungeonBGColorRGB(iVar1,iVar1,0,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
for(iVar1 = 250; iVar1 >= 0; iVar1 -= 10){
|
||||
sub_8085C54(iVar1,0,0,1,1);
|
||||
SetDungeonBGColorRGB(iVar1,0,0,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_803E708(10,0x46);
|
||||
|
|
@ -605,7 +605,7 @@ void DeoxysScreenFlash(void)
|
|||
void sub_808C550(void)
|
||||
{
|
||||
gUnknown_202EDC8 = 0x1f;
|
||||
sub_8085C54(0,0,0,1,1);
|
||||
SetDungeonBGColorRGB(0,0,0,1,1);
|
||||
sub_803E9D0();
|
||||
sub_803E46C(0x46);
|
||||
gDungeonGlobalData->unk7 = 0;
|
||||
|
|
@ -636,14 +636,14 @@ void sub_808C5C0(void)
|
|||
s32 iVar2;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
CelebiEntity = sub_8085680(0x1e);
|
||||
CelebiEntity = GetEntityFromClientType(0x1e);
|
||||
sub_8083E88(0x7f);
|
||||
sub_80854D4();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
SetFacingDirection(CelebiEntity, DIRECTION_SOUTH);
|
||||
sub_8085860(LeaderEntity->posWorld.x,LeaderEntity->posWorld.y);
|
||||
uVar3 = sub_803F994();
|
||||
iVar2 = sub_803F9B0();
|
||||
uVar3 = GetCameraXPos();
|
||||
iVar2 = GetCameraYPos();
|
||||
sub_803F878(uVar3,iVar2 + 0xfffff000);
|
||||
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_CELEBI);
|
||||
}
|
||||
|
|
@ -662,14 +662,14 @@ void CelebiJoinDialogue(void)
|
|||
struct DungeonEntity *CelebiEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
CelebiEntity = sub_8085680(0x1e);
|
||||
CelebiEntity = GetEntityFromClientType(0x1e);
|
||||
if ((HasRecruitedMon(SPECIES_CELEBI)) || (sub_806FD18(CelebiEntity) == '\0'))
|
||||
{
|
||||
sub_8068FE0(local_1c,0x21c,0);
|
||||
SpriteLookAroundEffect(LeaderEntity);
|
||||
sub_803E708(10,0x46);
|
||||
// .........
|
||||
DisplayDungeonDialogue(&gUnknown_810663C);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_10);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -678,14 +678,14 @@ void CelebiJoinDialogue(void)
|
|||
sub_80862BC(LeaderEntity);
|
||||
sub_803E708(10,0x46);
|
||||
// Oh? There's someone there.
|
||||
DisplayDungeonDialogue(&gUnknown_81063D0);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_1);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086598();
|
||||
sub_8086598();
|
||||
sub_8086598();
|
||||
sub_8086598();
|
||||
// The Time-Traveling Pokemon {ARG_POKEMON_2} (Celebi)!
|
||||
DisplayDungeonDialogue(&gUnknown_8106400);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_2);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_806CDD4(CelebiEntity,10,DIRECTION_SOUTH);
|
||||
sub_803E708(0x14,0x46);
|
||||
|
|
@ -693,7 +693,7 @@ void CelebiJoinDialogue(void)
|
|||
sub_803E708(4,0x46);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_806CDD4(CelebiEntity,10,DIRECTION_SOUTH);
|
||||
DisplayDungeonDialogue(&gUnknown_810643C);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_3);
|
||||
sub_803E708(10,0x46);
|
||||
state = 0;
|
||||
do {
|
||||
|
|
@ -721,11 +721,11 @@ void CelebiJoinDialogue(void)
|
|||
sub_803E708(0x1a,0x46);
|
||||
PlaySoundEffect(0x1d5);
|
||||
sub_803E708(0x1c,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8106468);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_4);
|
||||
sub_803E708(10,0x46);
|
||||
sub_806FDF4(LeaderEntity,CelebiEntity,&CelebiEntity);
|
||||
sub_8083E88(0x7f);
|
||||
DisplayDungeonDialogue(&gUnknown_810648C);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_5);
|
||||
sub_803E708(10,0x46);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_80861D4(CelebiEntity,0xd,0);
|
||||
|
|
@ -734,7 +734,7 @@ void CelebiJoinDialogue(void)
|
|||
sub_803E708(0x1a,0x46);
|
||||
PlaySoundEffect(0x1d5);
|
||||
sub_803E708(0x1b,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_81064BC);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_6);
|
||||
sub_803E708(10,0x46);
|
||||
state = 2;
|
||||
}
|
||||
|
|
@ -754,15 +754,15 @@ void CelebiJoinDialogue(void)
|
|||
else
|
||||
{
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8106500);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_7);
|
||||
sub_80861F8(0x3e,CelebiEntity,1);
|
||||
sub_803E708(0x18,0x46);
|
||||
sub_80861F8(0x3e,CelebiEntity,1);
|
||||
sub_803E708(0xe,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8106534);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_8);
|
||||
sub_803E708(10,0x46);
|
||||
sub_808C8E0(CelebiEntity);
|
||||
DisplayDungeonDialogue(&gUnknown_8106560);
|
||||
DisplayDungeonDialogue(&gCelebiJoinDialogue_9);
|
||||
sub_803E708(10,0x46);
|
||||
state = 2;
|
||||
}
|
||||
|
|
@ -786,7 +786,7 @@ void CelebiJoinDialogue(void)
|
|||
"\tbl xxx_call_GetLeaderEntity\n"
|
||||
"\tadds r7, r0, 0\n"
|
||||
"\tmovs r0, 0x1E\n"
|
||||
"\tbl sub_8085680\n"
|
||||
"\tbl GetEntityFromClientType\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tmovs r0, 0x8A\n"
|
||||
"\tlsls r0, 1\n"
|
||||
|
|
@ -814,7 +814,7 @@ void CelebiJoinDialogue(void)
|
|||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tb _0808C8AC\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808C67C: .4byte gUnknown_810663C\n"
|
||||
"_0808C67C: .4byte gCelebiJoinDialogue_10\n"
|
||||
"_0808C680:\n"
|
||||
"\tadds r0, r7, 0\n"
|
||||
"\tbl SpriteLookAroundEffect\n"
|
||||
|
|
@ -876,10 +876,10 @@ void CelebiJoinDialogue(void)
|
|||
"_0808C718:\n"
|
||||
"\tb _0808C8A6\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808C71C: .4byte gUnknown_81063D0\n"
|
||||
"_0808C720: .4byte gUnknown_8106400\n"
|
||||
"_0808C71C: .4byte gCelebiJoinDialogue_1\n"
|
||||
"_0808C720: .4byte gCelebiJoinDialogue_2\n"
|
||||
"_0808C724: .4byte 0x000001c7\n"
|
||||
"_0808C728: .4byte gUnknown_810643C\n"
|
||||
"_0808C728: .4byte gCelebiJoinDialogue_3\n"
|
||||
"_0808C72C: .4byte 0x000001d5\n"
|
||||
"_0808C730:\n"
|
||||
"\tldr r5, _0808C75C\n"
|
||||
|
|
@ -973,9 +973,9 @@ void CelebiJoinDialogue(void)
|
|||
"\tldr r0, _0808C820\n"
|
||||
"\tb _0808C898\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808C818: .4byte gUnknown_8106468\n"
|
||||
"_0808C81C: .4byte gUnknown_810648C\n"
|
||||
"_0808C820: .4byte gUnknown_81064BC\n"
|
||||
"_0808C818: .4byte gCelebiJoinDialogue_4\n"
|
||||
"_0808C81C: .4byte gCelebiJoinDialogue_5\n"
|
||||
"_0808C820: .4byte gCelebiJoinDialogue_6\n"
|
||||
"_0808C824:\n"
|
||||
"movs r0, 0x1\n"
|
||||
"b _0808C8A6\n"
|
||||
|
|
@ -1053,9 +1053,9 @@ void CelebiJoinDialogue(void)
|
|||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808C8D0: .4byte gUnknown_8106500\n"
|
||||
"_0808C8D4: .4byte gUnknown_8106534\n"
|
||||
"_0808C8D8: .4byte gUnknown_8106560\n"
|
||||
"_0808C8D0: .4byte gCelebiJoinDialogue_7\n"
|
||||
"_0808C8D4: .4byte gCelebiJoinDialogue_8\n"
|
||||
"_0808C8D8: .4byte gCelebiJoinDialogue_9\n"
|
||||
"_0808C8DC: .4byte gDungeonGlobalData");
|
||||
}
|
||||
#endif
|
||||
|
|
@ -1123,7 +1123,7 @@ void sub_808C9C4(void)
|
|||
struct DungeonEntity *MedichamEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
MedichamEntity = sub_8085680(7);
|
||||
MedichamEntity = GetEntityFromClientType(7);
|
||||
sub_8083E88(0x72);
|
||||
sub_80854D4();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
|
|
@ -1139,16 +1139,16 @@ void MedichamRescueDialogue(void)
|
|||
struct DungeonEntity *MedichamEntity;
|
||||
s32 counter;
|
||||
|
||||
MedichamEntity = sub_8085680(7);
|
||||
MedichamEntity = GetEntityFromClientType(7);
|
||||
SpriteLookAroundEffect(MedichamEntity);
|
||||
sub_803E708(0xA, 0x46);
|
||||
// Oh my I can't seem to find a way out...
|
||||
DisplayDungeonDialogue(&gUnknown_8106778);
|
||||
DisplayDungeonDialogue(&gMedichamRescueDialogue_1);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_80869E4(MedichamEntity, 4, 2, 4);
|
||||
sub_803E708(0xA, 0x46);
|
||||
// What am I to do...?
|
||||
DisplayDungeonDialogue(&gUnknown_81067BC);
|
||||
DisplayDungeonDialogue(&gMedichamRescueDialogue_2);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_8086448();
|
||||
sub_8086598();
|
||||
|
|
@ -1156,7 +1156,7 @@ void MedichamRescueDialogue(void)
|
|||
sub_80862BC(MedichamEntity);
|
||||
sub_803E708(0x20, 0x46);
|
||||
sub_80869E4(MedichamEntity, 4, 2, 0);
|
||||
DisplayDungeonDialogue(&gUnknown_81067E0);
|
||||
DisplayDungeonDialogue(&gMedichamRescueDialogue_3);
|
||||
sub_803E708(0xA, 0x46);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_806CDD4(MedichamEntity, 0xA, DIRECTION_SOUTH);
|
||||
|
|
@ -1170,7 +1170,7 @@ void MedichamRescueDialogue(void)
|
|||
// I am so lucky
|
||||
//
|
||||
// There appears to be no one here
|
||||
DisplayDungeonDialogue(&gUnknown_8106834);
|
||||
DisplayDungeonDialogue(&gMedichamRescueDialogue_4);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_806CDD4(MedichamEntity, 0, DIRECTION_SOUTH);
|
||||
for(counter = 0x17; counter >= 0; counter--)
|
||||
|
|
@ -1192,7 +1192,7 @@ void sub_808CB5C(void)
|
|||
struct DungeonEntity *MedichamEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
MedichamEntity = sub_8085680(7);
|
||||
MedichamEntity = GetEntityFromClientType(7);
|
||||
sub_8083E88(0x72);
|
||||
sub_80854D4();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
|
|
@ -1211,7 +1211,7 @@ void sub_808CBB0(void)
|
|||
struct DungeonEntity *SmeargleEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
SmeargleEntity = sub_8085680(0x1F);
|
||||
SmeargleEntity = GetEntityFromClientType(0x1F);
|
||||
sub_8083E88(0x72);
|
||||
sub_80854D4();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
|
|
@ -1227,19 +1227,19 @@ void SmeargleRescueDialogue(void)
|
|||
struct DungeonEntity *SmeargleEntity;
|
||||
s32 counter;
|
||||
|
||||
SmeargleEntity = sub_8085680(0x1F);
|
||||
SmeargleEntity = GetEntityFromClientType(0x1F);
|
||||
SpriteLookAroundEffect(SmeargleEntity);
|
||||
sub_803E708(0xA, 0x46);
|
||||
// Ohhh...
|
||||
// I've lost my bearings
|
||||
DisplayDungeonDialogue(&gUnknown_810688C);
|
||||
DisplayDungeonDialogue(&gSmeargleRescueDialogue_1);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_80869E4(SmeargleEntity, 4, 2, 4);
|
||||
sub_803E708(0xA, 0x46);
|
||||
// I can't get out...
|
||||
// I'm hungry...
|
||||
// I'm in trouble
|
||||
DisplayDungeonDialogue(&gUnknown_81068D0);
|
||||
DisplayDungeonDialogue(&gSmeargleRescueDialogue_2);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_8086448();
|
||||
sub_8086598();
|
||||
|
|
@ -1248,7 +1248,7 @@ void SmeargleRescueDialogue(void)
|
|||
sub_803E708(0x20, 0x46);
|
||||
sub_80869E4(SmeargleEntity, 4, 2, 0);
|
||||
// Oh! You are?
|
||||
DisplayDungeonDialogue(&gUnknown_8106918);
|
||||
DisplayDungeonDialogue(&gSmeargleRescueDialogue_3);
|
||||
sub_803E708(0xA, 0x46);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_806CDD4(SmeargleEntity, 0xA, DIRECTION_SOUTH);
|
||||
|
|
@ -1260,7 +1260,7 @@ void SmeargleRescueDialogue(void)
|
|||
sub_803E708(0x14, 0x46);
|
||||
// Did you maybe come to rescue me?
|
||||
// Am I glad to see you
|
||||
DisplayDungeonDialogue(&gUnknown_8106934);
|
||||
DisplayDungeonDialogue(&gSmeargleRescueDialogue_4);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_806CDD4(SmeargleEntity, 0, DIRECTION_SOUTH);
|
||||
for(counter = 0x17; counter >= 0; counter--)
|
||||
|
|
@ -1283,7 +1283,7 @@ void sub_808CD44(void)
|
|||
struct DungeonEntity *SmeargleEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
SmeargleEntity = sub_8085680(0x1F);
|
||||
SmeargleEntity = GetEntityFromClientType(0x1F);
|
||||
sub_8083E88(0x72);
|
||||
sub_80854D4();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
|
|
|
|||
|
|
@ -1,66 +1,97 @@
|
|||
#include "global.h"
|
||||
#include "constants/status.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "moves.h"
|
||||
#include "status_checks_1.h"
|
||||
#include "weather.h"
|
||||
|
||||
extern u32 gUnknown_80FCF74;
|
||||
extern u32 gUnknown_80FCF80;
|
||||
extern u16 gUnknown_80F4F42;
|
||||
extern u8 gUnknown_202DE58[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
|
||||
extern u32 gUnknown_8106A50;
|
||||
extern u32 gUnknown_8106A4C;
|
||||
extern s16 gUnknown_80F4DB6;
|
||||
extern u16 gUnknown_80F4F42;
|
||||
extern u32 gUnknown_80FAC88;
|
||||
extern u8 *gUnknown_80FD018[];
|
||||
extern u8 *gUnknown_80FCFBC[];
|
||||
extern u8 *gUnknown_80FCFE4[];
|
||||
extern u32 gUnknown_8106A4C;
|
||||
extern s16 gUnknown_80F4DF6;
|
||||
extern s16 gUnknown_80F4E0A;
|
||||
extern u8 gUnknown_80F51E4[];
|
||||
extern u32 gUnknown_80F51EC[];
|
||||
extern u8 *gUnknown_80FC734[];
|
||||
extern u8 *gUnknown_80FC7EC[];
|
||||
extern u8 *gUnknown_80FCF74[];
|
||||
extern u8 *gUnknown_80FCF80[];
|
||||
extern u32 gUnknown_8106A50;
|
||||
extern s16 gUnknown_80F4E08;
|
||||
|
||||
struct unkStruct_80928C0
|
||||
{
|
||||
u32 unk0;
|
||||
s32 unk4;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
};
|
||||
|
||||
void sub_80928C0(u8 *buffer, struct PokemonMove *move, struct unkStruct_80928C0 *param_3);
|
||||
|
||||
extern void sub_80775DC(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32);
|
||||
extern void sub_80768DC(struct DungeonEntity *, struct DungeonEntity *, u32, u32);
|
||||
extern void sub_80772C0(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32, u32);
|
||||
extern u8 sub_807EAA0(u32, u32);
|
||||
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u32);
|
||||
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, const char[]);
|
||||
extern void sub_8079F20(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32);
|
||||
|
||||
extern void sub_8077434(struct DungeonEntity *r0, struct DungeonEntity *r1, u32 , u32, u32);
|
||||
extern s32 sub_80556BC(struct DungeonEntity *, struct DungeonEntity *, u8, u32, u32, u32);
|
||||
extern u8 sub_805727C(struct DungeonEntity *, struct DungeonEntity *, s16);
|
||||
extern u32 sub_8055640(struct DungeonEntity *, struct DungeonEntity *, u32, u32, u32);
|
||||
extern void sub_80779F0(struct DungeonEntity *, struct DungeonEntity *, u32, u32);
|
||||
extern void sub_8078968(struct DungeonEntity *r0, struct DungeonEntity *r1);
|
||||
extern void sub_8079618(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32, u32);
|
||||
|
||||
extern void sub_8077AE4(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32);
|
||||
extern void sub_8077084(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32, u32);
|
||||
extern u8 sub_80776C0(struct DungeonEntity *, struct DungeonEntity *, u8);
|
||||
|
||||
extern void sub_8076F80(struct DungeonEntity *, struct DungeonEntity *, u32, u32, u32, u32);
|
||||
extern void sub_806F370(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
|
||||
|
||||
|
||||
|
||||
extern u32 gUnknown_80FD018;
|
||||
extern s16 sub_8057600(void*, u32);
|
||||
|
||||
bool32 sub_8057824(struct DungeonEntity *param_1, struct DungeonEntity *param_2)
|
||||
bool32 sub_8057824(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
// Lower evasion?
|
||||
sub_80775DC(param_1,param_2,gUnknown_8106A50,1);
|
||||
sub_80775DC(pokemon,target,gUnknown_8106A50,1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_805783C(struct DungeonEntity *param_1, struct DungeonEntity *param_2)
|
||||
bool32 sub_805783C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
// Lower attack?
|
||||
sub_80772C0(param_1,param_2,gUnknown_8106A4C,0x80,1);
|
||||
sub_80772C0(pokemon,target,gUnknown_8106A4C,0x80,1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_805785C(struct DungeonEntity *param_1, struct DungeonEntity *param_2)
|
||||
bool32 sub_805785C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
gDungeonGlobalData->unkE26B = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == '\0') {
|
||||
if (sub_807EAA0(1,0) == 0) {
|
||||
// The weather remains unchanged
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FCF74);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCF74);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_80578A4(struct DungeonEntity *param_1, struct DungeonEntity *param_2)
|
||||
bool32 sub_80578A4(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
gDungeonGlobalData->weatherTurnsLeft = gUnknown_80F4F42;
|
||||
if (sub_807EAA0(1,0) == '\0') {
|
||||
if (sub_807EAA0(1,0) == 0) {
|
||||
// The weather remains unchanged
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FCF80);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCF80);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -71,48 +102,231 @@ bool32 sub_80578EC(struct DungeonEntity *r0, struct DungeonEntity *r1)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_80578FC(struct DungeonEntity *param_1, struct DungeonEntity *param_2, u32 param_3, u32 param_4)
|
||||
bool32 sub_80578FC(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 param_3, u32 param_4)
|
||||
{
|
||||
bool32 uVar3;
|
||||
|
||||
uVar3 = 0;
|
||||
if (sub_8055640(param_1, param_2, param_3, 0x80 << 1, param_4) != 0) {
|
||||
uVar3 = FALSE;
|
||||
if (sub_8055640(pokemon, target, param_3, 0x100, param_4) != 0) {
|
||||
uVar3 = TRUE;
|
||||
if (sub_805727C(param_1,param_2, gUnknown_80F4DB6) != '\0') {
|
||||
sub_80779F0(param_1, param_2, 1, 0);
|
||||
if (sub_805727C(pokemon,target, gUnknown_80F4DB6) != 0) {
|
||||
sub_80779F0(pokemon, target, 1, 0);
|
||||
}
|
||||
}
|
||||
return uVar3;
|
||||
}
|
||||
|
||||
bool32 sub_8057948(struct DungeonEntity *param_1, struct DungeonEntity *param_2)
|
||||
bool32 sub_8057948(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8078968(param_1, param_2);
|
||||
sub_8078968(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_8057954(struct DungeonEntity *param_1, struct DungeonEntity *param_2, u32 param_3)
|
||||
bool32 sub_8057954(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 param_3)
|
||||
{
|
||||
// {ARG_POKEMON_0} is enraged
|
||||
sub_8079618(param_1,param_2,0xc,param_3,gUnknown_80FAC88);
|
||||
sub_8079618(pokemon,target,0xc,param_3,gUnknown_80FAC88);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_8057974(struct DungeonEntity *param_1, struct DungeonEntity *param_2, struct PokemonMove *param_3, u32 param_4)
|
||||
bool32 sub_8057974(struct DungeonEntity *pokemon, struct DungeonEntity *target, struct PokemonMove *param_3, u32 param_4)
|
||||
{
|
||||
s32 newHP;
|
||||
u8 local_24;
|
||||
bool8 local_24;
|
||||
|
||||
newHP = param_2->entityData->HP / 2;
|
||||
local_24 = 0;
|
||||
newHP = target->entityData->HP / 2;
|
||||
local_24 = FALSE;
|
||||
if (newHP != 0) {
|
||||
sub_806F370(param_1,param_2,newHP,1,&local_24,GetMoveType(param_3),sub_8057600(param_3,param_4),0,1,0);
|
||||
sub_806F370(pokemon,target,newHP,1,&local_24,GetMoveType(param_3),sub_8057600(param_3,param_4),0,1,0);
|
||||
local_24 = local_24 == 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// The target's HP can't be halved anymore
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FD018);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FD018);
|
||||
}
|
||||
return local_24;
|
||||
}
|
||||
|
||||
bool8 PainSplitMoveAction(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
s32 newHP;
|
||||
struct DungeonEntityData *iVar2;
|
||||
struct DungeonEntityData *iVar3;
|
||||
struct DungeonEntityData *iVar4;
|
||||
struct DungeonEntityData *iVar5;
|
||||
|
||||
// Need copies for some reason to match..
|
||||
iVar3 = (pokemon->entityData);
|
||||
iVar4 = iVar3;
|
||||
iVar2 = (target->entityData);
|
||||
iVar5 = iVar2;
|
||||
|
||||
newHP = ((iVar3->HP + iVar2->HP) / 2);
|
||||
iVar3->HP = newHP;
|
||||
iVar5->HP = newHP;
|
||||
if (iVar3->HP > iVar3->maxHP) {
|
||||
iVar3->HP = iVar3->maxHP;
|
||||
}
|
||||
if (iVar5->HP > iVar5->maxHP) {
|
||||
iVar5->HP = iVar5->maxHP;
|
||||
}
|
||||
SetMessageArgument(gAvailablePokemonNames,pokemon,0);
|
||||
SetMessageArgument(gAvailablePokemonNames + 0x50,target,0);
|
||||
if (iVar4->unkFB == 0) {
|
||||
iVar4->unkFB = 1;
|
||||
}
|
||||
// $m0 and $m1 shared their HP
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC7EC);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 TormentMoveAction(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
struct PokemonMove *movePtr;
|
||||
s32 iVar4;
|
||||
struct PokemonMove struggleMove;
|
||||
struct DungeonEntityData *entityData;
|
||||
bool8 isTormented;
|
||||
|
||||
entityData = target->entityData;
|
||||
isTormented = FALSE;
|
||||
|
||||
for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++)
|
||||
{
|
||||
movePtr = &entityData->moves[iVar4];
|
||||
if ((movePtr->moveFlags & MOVE_FLAG_EXISTS) != 0) {
|
||||
if ((movePtr->moveFlags & MOVE_FLAG_DISABLED) == 0) {
|
||||
if ((movePtr->moveFlags & MOVE_FLAG_LAST_USED) != 0) {
|
||||
sub_80928C0(gUnknown_202DE58,movePtr,0);
|
||||
// $i0 was tormented
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCFBC);
|
||||
movePtr->moveFlags |= MOVE_FLAG_DISABLED;
|
||||
isTormented = TRUE;
|
||||
}
|
||||
}
|
||||
else if ((movePtr->moveFlags & MOVE_FLAG_LAST_USED) == 0) {
|
||||
movePtr->moveFlags &= ~(MOVE_FLAG_DISABLED);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if ((entityData->struggleMoveFlags & MOVE_FLAG_DISABLED) == 0) {
|
||||
if ((entityData->struggleMoveFlags & MOVE_FLAG_LAST_USED) != 0) {
|
||||
InitPokemonMove(&struggleMove, MOVE_STRUGGLE);
|
||||
entityData->struggleMoveFlags |= MOVE_FLAG_DISABLED;
|
||||
isTormented = TRUE;
|
||||
sub_80928C0(gUnknown_202DE58,&struggleMove,0);
|
||||
// $i0 was tormented
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCFBC);
|
||||
}
|
||||
}
|
||||
else if ((entityData->struggleMoveFlags & MOVE_FLAG_LAST_USED) == 0) {
|
||||
entityData->struggleMoveFlags &= ~(MOVE_FLAG_DISABLED);
|
||||
}
|
||||
if (isTormented)
|
||||
{
|
||||
if(entityData->chargingStatus == CHARGING_STATUS_BIDE) {
|
||||
entityData->chargingStatus = CHARGING_STATUS_NONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// The target couldn't be tormented
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCFE4);
|
||||
}
|
||||
return isTormented;
|
||||
}
|
||||
|
||||
bool8 sub_8057BB4(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_80779F0(pokemon, target, 1, 1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8057BC4(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8077AE4(pokemon, target, 1);
|
||||
sub_8077084(pokemon, target, gUnknown_8106A4C, 2);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8057BEC(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 param_3, u32 param_4)
|
||||
{
|
||||
bool8 uVar3;
|
||||
|
||||
uVar3 = FALSE;
|
||||
if (IsSleeping(pokemon)) {
|
||||
if (sub_8055640(pokemon,target,param_3,0x100,param_4) != 0) {
|
||||
uVar3 = TRUE;
|
||||
if (sub_805727C(pokemon,target,gUnknown_80F4E0A) != 0) {
|
||||
sub_80776C0(pokemon,target,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC734);
|
||||
}
|
||||
return uVar3;
|
||||
}
|
||||
|
||||
bool8 sub_8057C68(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8077434(pokemon, target, gUnknown_8106A4C, 0x40, 1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8057C88(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 param_3, u32 param_4)
|
||||
{
|
||||
u8 uVar3;
|
||||
|
||||
uVar3 = FALSE;
|
||||
if (sub_8055640(pokemon, target, param_3, 0x100, param_4) != 0) {
|
||||
uVar3 = TRUE;
|
||||
if (sub_805727C(pokemon,target,gUnknown_80F4DF6) != 0) {
|
||||
sub_80776C0(pokemon,target,0);
|
||||
}
|
||||
}
|
||||
return uVar3;
|
||||
}
|
||||
|
||||
s32 sub_8057CD0(struct DungeonEntity * pokemon, struct DungeonEntity * target, u32 param_3, u32 param_4)
|
||||
{
|
||||
u32 uVar1;
|
||||
s32 iVar2;
|
||||
|
||||
uVar1 = GetWeather(pokemon);
|
||||
iVar2 = sub_80556BC(pokemon,target,gUnknown_80F51E4[uVar1],param_3,
|
||||
gUnknown_80F51EC[uVar1],param_4);
|
||||
if (iVar2 != 0) {
|
||||
iVar2 = 1;
|
||||
}
|
||||
return iVar2;
|
||||
}
|
||||
|
||||
bool8 sub_8057D20(struct DungeonEntity * pokemon, struct DungeonEntity * target, u32 param_3, u32 param_4)
|
||||
{
|
||||
u32 uVar3;
|
||||
bool8 uVar4;
|
||||
u8 chargeStatus;
|
||||
|
||||
uVar4 = FALSE;
|
||||
chargeStatus = target->entityData->chargingStatus;
|
||||
uVar3 = 0x100;
|
||||
if (chargeStatus == CHARGING_STATUS_DIVE) {
|
||||
uVar3 = 0x200;
|
||||
}
|
||||
if (sub_8055640(pokemon,target,param_3,uVar3,param_4) != 0) {
|
||||
uVar4 = TRUE;
|
||||
if (sub_805727C(pokemon,target,gUnknown_80F4E08) != 0) {
|
||||
sub_80768DC(pokemon,target,0x3b,0);
|
||||
}
|
||||
}
|
||||
return uVar4;
|
||||
}
|
||||
|
||||
bool8 sub_8057D7C(struct DungeonEntity * param_1, struct DungeonEntity * param_2)
|
||||
{
|
||||
sub_8076F80(param_1, param_2, gUnknown_8106A50, 2, 1, 1);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
1282
src/code_8057824_1.c
1282
src/code_8057824_1.c
File diff suppressed because it is too large
Load Diff
11
src/code_807E5AC.c
Normal file
11
src/code_807E5AC.c
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#include "global.h"
|
||||
#include "dungeon_global_data.h"
|
||||
|
||||
void sub_807FC3C(struct Position *param_1, u32 param_2, u32 param_3)
|
||||
{
|
||||
gDungeonGlobalData->unk13574 = param_1->x;
|
||||
gDungeonGlobalData->unk13576 = param_1->y;
|
||||
gDungeonGlobalData->unk13578 = param_2;
|
||||
gDungeonGlobalData->unk13579 = param_3;
|
||||
gDungeonGlobalData->unk13570 = 1;
|
||||
}
|
||||
|
|
@ -30,18 +30,18 @@ extern void sub_80897F0();
|
|||
extern void sub_8089878();
|
||||
extern void sub_80898E4();
|
||||
extern void MewtwoPreFightDialogue();
|
||||
extern void MewtwoPreFightDialogue1();
|
||||
extern void MewtwoReFightDialogue();
|
||||
extern void EnteiPreFightDialogue();
|
||||
extern void EnteiPreFightDialogue1();
|
||||
extern void EnteiPreFightDialogue2();
|
||||
extern void EnteiReFightDialogue();
|
||||
extern void EnteiPostStoryPreFightDialogue();
|
||||
extern void RaikouPreFightDialogue();
|
||||
extern void RaikouPreFightDialogue1();
|
||||
extern void RaikouPreFightDialogue2();
|
||||
extern void RaikouReFightDialogue();
|
||||
extern void RaikouPostStoryPreFightDialogue();
|
||||
extern void SuicunePreFightDialogue();
|
||||
extern void SuicunePreFightDialogue1();
|
||||
extern void SuicunePreFightDialogue2();
|
||||
extern void SuicuneReFightDialogue();
|
||||
extern void SuicunePostStoryPreFightDialogue();
|
||||
extern void HoOhPreFightDialogue();
|
||||
extern void HoOhPreFightDialogue1();
|
||||
extern void HoOhReFightDialogue();
|
||||
extern void LatiosPreFightDialogue();
|
||||
extern void LatiosReFightDialogue();
|
||||
extern void sub_808AC3C();
|
||||
|
|
@ -49,7 +49,7 @@ extern void RegirockPreFightDialogue();
|
|||
extern void RegicePreFightDialogue();
|
||||
extern void RegisteelPreFightDialogue();
|
||||
extern void JirachiPreFightDialogue();
|
||||
extern void JirachiPreFightDialogue1();
|
||||
extern void JirachiReFightDialogue();
|
||||
extern void LugiaPreFightDialogue();
|
||||
extern void KyogrePreFightDialogue();
|
||||
extern void DeoxysPreFightDialogue();
|
||||
|
|
@ -418,40 +418,40 @@ void DisplayPreFightDialogue(void)
|
|||
MewtwoPreFightDialogue();
|
||||
break;
|
||||
case 0x1f:
|
||||
MewtwoPreFightDialogue1();
|
||||
MewtwoReFightDialogue();
|
||||
break;
|
||||
case 0x20:
|
||||
EnteiPreFightDialogue();
|
||||
break;
|
||||
case 0x21:
|
||||
EnteiPreFightDialogue1();
|
||||
EnteiReFightDialogue();
|
||||
break;
|
||||
case 0x22:
|
||||
EnteiPreFightDialogue2();
|
||||
EnteiPostStoryPreFightDialogue();
|
||||
break;
|
||||
case 0x23:
|
||||
RaikouPreFightDialogue();
|
||||
break;
|
||||
case 0x24:
|
||||
RaikouPreFightDialogue1();
|
||||
RaikouReFightDialogue();
|
||||
break;
|
||||
case 0x25:
|
||||
RaikouPreFightDialogue2();
|
||||
RaikouPostStoryPreFightDialogue();
|
||||
break;
|
||||
case 0x26:
|
||||
SuicunePreFightDialogue();
|
||||
break;
|
||||
case 0x27:
|
||||
SuicunePreFightDialogue1();
|
||||
SuicuneReFightDialogue();
|
||||
break;
|
||||
case 0x28:
|
||||
SuicunePreFightDialogue2();
|
||||
SuicunePostStoryPreFightDialogue();
|
||||
break;
|
||||
case 0x29:
|
||||
HoOhPreFightDialogue();
|
||||
break;
|
||||
case 0x2a:
|
||||
HoOhPreFightDialogue1();
|
||||
HoOhReFightDialogue();
|
||||
break;
|
||||
case 0x2b:
|
||||
LatiosPreFightDialogue();
|
||||
|
|
@ -475,7 +475,7 @@ void DisplayPreFightDialogue(void)
|
|||
JirachiPreFightDialogue();
|
||||
break;
|
||||
case 0x32:
|
||||
JirachiPreFightDialogue1();
|
||||
JirachiReFightDialogue();
|
||||
break;
|
||||
case 0x33:
|
||||
LugiaPreFightDialogue();
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ void sub_80869E4(struct DungeonEntity *r0, u32, u8, s8);
|
|||
extern void sub_80859F0(u32);
|
||||
extern void sub_803E46C(u32);
|
||||
extern void sub_803E9D0(void);
|
||||
extern void sub_8085C54(u32, u32, u32, u32, u32);
|
||||
extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32);
|
||||
extern void PlaySoundEffect(u32);
|
||||
extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
|
||||
void SpriteLookAroundEffect(struct DungeonEntity *r0);
|
||||
|
|
@ -36,8 +36,8 @@ extern u32 gUnknown_202EDC8;
|
|||
extern void sub_8085EB0(void);
|
||||
extern void sub_803E748(void);
|
||||
extern void sub_80855E4(void *);
|
||||
extern u32 sub_803F994(void);
|
||||
extern u32 sub_803F9B0(void);
|
||||
extern s32 GetCameraXPos(void);
|
||||
extern s32 GetCameraYPos(void);
|
||||
extern void sub_803F878(u32, u32);
|
||||
extern void sub_8086384(struct DungeonEntity *r0);
|
||||
extern void sub_8085930(u32);
|
||||
|
|
@ -156,8 +156,8 @@ void sub_8086448(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 < 0x38; iVar1++)
|
||||
{
|
||||
retVar = sub_803F994();
|
||||
retVar2 = sub_803F9B0();
|
||||
retVar = GetCameraXPos();
|
||||
retVar2 = GetCameraYPos();
|
||||
retVar2 += (0x80 << 1);
|
||||
sub_803F878(retVar, retVar2);
|
||||
sub_80855E4(sub_8086410);
|
||||
|
|
@ -201,9 +201,9 @@ void sub_8086500(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 < 0x48; iVar1++)
|
||||
{
|
||||
retVar = sub_803F994();
|
||||
retVar = GetCameraXPos();
|
||||
retVar += (0x80 << 1);
|
||||
retVar2 = sub_803F9B0();
|
||||
retVar2 = GetCameraYPos();
|
||||
sub_803F878(retVar, retVar2);
|
||||
sub_80855E4(sub_8086434);
|
||||
sub_803E46C(0x46);
|
||||
|
|
@ -221,9 +221,9 @@ void sub_808654C(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 < 0x78; iVar1++)
|
||||
{
|
||||
retVar = sub_803F994();
|
||||
retVar = GetCameraXPos();
|
||||
retVar += (0x80 << 1);
|
||||
retVar2 = sub_803F9B0();
|
||||
retVar2 = GetCameraYPos();
|
||||
sub_803F878(retVar, retVar2);
|
||||
sub_80855E4(sub_8086434);
|
||||
sub_803E46C(0x46);
|
||||
|
|
@ -241,8 +241,8 @@ void sub_8086598(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 < 0x18; iVar1++)
|
||||
{
|
||||
retVar = sub_803F994();
|
||||
retVar2 = sub_803F9B0();
|
||||
retVar = GetCameraXPos();
|
||||
retVar2 = GetCameraYPos();
|
||||
sub_803F878(retVar, retVar2 + (0xffffff00));
|
||||
sub_80855E4(sub_8086410);
|
||||
sub_803E46C(0x46);
|
||||
|
|
@ -260,8 +260,8 @@ void sub_80865E8(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 < 0xC; iVar1++)
|
||||
{
|
||||
retVar = sub_803F994();
|
||||
retVar2 = sub_803F9B0();
|
||||
retVar = GetCameraXPos();
|
||||
retVar2 = GetCameraYPos();
|
||||
sub_803F878(retVar, retVar2 + (0x80 << 2));
|
||||
sub_80855E4(sub_8086424);
|
||||
sub_80855E4(sub_8086424);
|
||||
|
|
@ -280,8 +280,8 @@ void sub_808663C(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 < 0x10; iVar1++)
|
||||
{
|
||||
retVar = sub_803F994();
|
||||
retVar2 = sub_803F9B0();
|
||||
retVar = GetCameraXPos();
|
||||
retVar2 = GetCameraYPos();
|
||||
sub_803F878(retVar, retVar2 + (0x80 << 2));
|
||||
sub_80855E4(sub_8086424);
|
||||
sub_80855E4(sub_8086424);
|
||||
|
|
@ -323,7 +323,7 @@ void sub_80866FC(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 >= -0xFA; iVar1 -= 0xA)
|
||||
{
|
||||
sub_8085C54(iVar1, iVar1, iVar1, 1, 0);
|
||||
SetDungeonBGColorRGB(iVar1, iVar1, iVar1, 1, 0);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
}
|
||||
|
|
@ -339,7 +339,7 @@ void sub_8086738(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 < 0xFA; iVar1 += 0xA)
|
||||
{
|
||||
sub_8085C54(iVar1, iVar1, iVar1, 1, 0);
|
||||
SetDungeonBGColorRGB(iVar1, iVar1, iVar1, 1, 0);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
}
|
||||
|
|
@ -350,7 +350,7 @@ void sub_8086764(void)
|
|||
|
||||
for(iVar1 = 0xFA; iVar1 >= 0; iVar1 -= 5)
|
||||
{
|
||||
sub_8085C54(iVar1, iVar1, iVar1, 1, 0);
|
||||
SetDungeonBGColorRGB(iVar1, iVar1, iVar1, 1, 0);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
sub_8085EB0();
|
||||
|
|
@ -364,7 +364,7 @@ void sub_8086794(void)
|
|||
|
||||
for(iVar1 = 0; iVar1 < 0xC8; iVar1++)
|
||||
{
|
||||
sub_8085C54(0, 0, 0, 1, 0);
|
||||
SetDungeonBGColorRGB(0, 0, 0, 1, 0);
|
||||
sub_803E9D0();
|
||||
sub_803E46C(0x46);
|
||||
if((iVar1 & 3) == 0)
|
||||
|
|
|
|||
|
|
@ -3,11 +3,12 @@
|
|||
#include "dungeon_entity.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "pokemon.h"
|
||||
#include "dungeon_util_1.h"
|
||||
|
||||
extern void LoadIQSkills(struct DungeonEntity *);
|
||||
extern struct DungeonEntity *GetPartnerEntity();
|
||||
extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
|
||||
extern struct DungeonEntity *sub_8085680(u32);
|
||||
extern struct DungeonEntity *GetEntityFromClientType(u32);
|
||||
extern void SetDefaultIQSkills(u8 *param_1, u8 param_2);
|
||||
extern void sub_8097FF8(void);
|
||||
extern u8 sub_8044B28(void);
|
||||
|
|
@ -21,7 +22,6 @@ extern void sub_80855E4(void *);
|
|||
extern void sub_8085860(s32 r0, u32 r1);
|
||||
extern void sub_8068FE0(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_8097FA8(u32);
|
||||
extern void sub_80858AC(void *, u32);
|
||||
extern void DisplayDungeonDialogue(u8 *);
|
||||
extern void sub_806CDD4(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_80869E4(struct DungeonEntity *, u32, u32, u32);
|
||||
|
|
@ -35,25 +35,18 @@ extern void sub_8086A54(struct DungeonEntity *);
|
|||
extern void PlaySoundEffect(u32);
|
||||
extern void sub_808563C(void *);
|
||||
|
||||
// X / Y Coords??
|
||||
struct subStruct_Skarmory
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
};
|
||||
|
||||
extern u8 gUnknown_8100768;
|
||||
extern u8 gUnknown_8100798;
|
||||
extern u8 gUnknown_8100820;
|
||||
extern u8 gUnknown_8100844;
|
||||
extern u8 gUnknown_8100880;
|
||||
extern u8 gUnknown_8100928;
|
||||
extern u8 gUnknown_8100A04;
|
||||
extern u8 gUnknown_8100B80;
|
||||
extern u8 gUnknown_8100BC0;
|
||||
extern u8 gUnknown_8100C90;
|
||||
extern u8 gUnknown_8100CBC;
|
||||
extern u8 gUnknown_8100CDC;
|
||||
extern u8 gSkarmoryPreFightDialogue_1;
|
||||
extern u8 gSkarmoryPreFightDialogue_2;
|
||||
extern u8 gSkarmoryPreFightDialogue_3;
|
||||
extern u8 gSkarmoryPreFightDialogue_4;
|
||||
extern u8 gSkarmoryPreFightDialogue_5;
|
||||
extern u8 gSkarmoryPreFightDialogue_6;
|
||||
extern u8 gSkarmoryPreFightDialogue_7;
|
||||
extern u8 gSkarmoryPreFightDialogue_8;
|
||||
extern u8 gSkarmoryPreFightDialogue_9;
|
||||
extern u8 gSkarmoryReFightDialogue_1;
|
||||
extern u8 gSkarmoryReFightDialogue_2;
|
||||
extern u8 gSkarmoryReFightDialogue_3;
|
||||
extern u8 gUnknown_8100D3C;
|
||||
|
||||
void sub_8086A3C(struct DungeonEntity *param_1)
|
||||
|
|
@ -119,8 +112,8 @@ void sub_8086B14(void)
|
|||
struct DungeonEntity * SkarmoryEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
DiglettEntity = sub_8085680(4);
|
||||
SkarmoryEntity = sub_8085680(3);
|
||||
DiglettEntity = GetEntityFromClientType(4);
|
||||
SkarmoryEntity = GetEntityFromClientType(3);
|
||||
sub_8083E88(0x72);
|
||||
sub_8085374();
|
||||
sub_80854D4();
|
||||
|
|
@ -140,8 +133,8 @@ void sub_8086B94(void)
|
|||
struct DungeonEntity * SkarmoryEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
DiglettEntity = sub_8085680(4);
|
||||
SkarmoryEntity = sub_8085680(3);
|
||||
DiglettEntity = GetEntityFromClientType(4);
|
||||
SkarmoryEntity = GetEntityFromClientType(3);
|
||||
|
||||
sub_8068FE0(SkarmoryEntity,0x21c,0);
|
||||
sub_8068FE0(DiglettEntity,0x21c,0);
|
||||
|
|
@ -165,13 +158,13 @@ void SkarmoryPreFightDialogue(void)
|
|||
struct DungeonEntity * DiglettEntity;
|
||||
struct DungeonEntity * SkarmoryEntity;
|
||||
|
||||
struct subStruct_Skarmory local_1c;
|
||||
struct subStruct_Skarmory local_20;
|
||||
struct Position32 local_1c;
|
||||
struct Position32 local_20;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity(); // Player
|
||||
PartnerEntity = GetPartnerEntity(); // Partner
|
||||
DiglettEntity = sub_8085680(4); // Diglett
|
||||
SkarmoryEntity = sub_8085680(3); // Skarmory
|
||||
DiglettEntity = GetEntityFromClientType(4); // Diglett
|
||||
SkarmoryEntity = GetEntityFromClientType(3); // Skarmory
|
||||
|
||||
local_1c.x = DiglettEntity->posPixel.x;
|
||||
local_1c.y = DiglettEntity->posPixel.y + 0x3000;
|
||||
|
|
@ -184,62 +177,62 @@ void SkarmoryPreFightDialogue(void)
|
|||
sub_80862BC(PartnerEntity);
|
||||
sub_803E708(0x20,0x46);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8100768);
|
||||
sub_80858AC(&local_1c,0x40);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_1);
|
||||
ShiftCameraToPosition(&local_1c,0x40);
|
||||
sub_803E708(0x40,0x46);
|
||||
sub_80858AC(&local_20,0x30);
|
||||
DisplayDungeonDialogue(&gUnknown_8100798);
|
||||
ShiftCameraToPosition(&local_20,0x30);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_2);
|
||||
sub_803E708(10,0x46);
|
||||
DiglettEntity->entityData->unk15D = 1;
|
||||
sub_80858AC(&local_1c,0x30);
|
||||
DisplayDungeonDialogue(&gUnknown_8100820); // Diglett: ...I...\nI'm scared.
|
||||
ShiftCameraToPosition(&local_1c,0x30);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_3); // Diglett: ...I...\nI'm scared.
|
||||
sub_803E708(10,0x46);
|
||||
sub_80858AC(&local_20,0x20);
|
||||
ShiftCameraToPosition(&local_20,0x20);
|
||||
sub_803E708(0x20,0x46);
|
||||
sub_8086E74(SkarmoryEntity);
|
||||
DisplayDungeonDialogue(&gUnknown_8100844); // Skarmory: You!\nWhat do you think you're doing here?!
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_4); // Skarmory: You!\nWhat do you think you're doing here?!
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8100880);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_5);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8100928);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_6);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8100A04);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_7);
|
||||
sub_803E708(10,0x46);
|
||||
sub_806CDD4(SkarmoryEntity,0xd,0);
|
||||
DisplayDungeonDialogue(&gUnknown_8100B80);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_8);
|
||||
sub_803E708(10,0x46);
|
||||
sub_80869E4(PartnerEntity,4,1,2);
|
||||
sub_80869E4(LeaderEntity,4,2,6);
|
||||
DisplayDungeonDialogue(&gUnknown_8100BC0);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_9);
|
||||
sub_80869E4(PartnerEntity,4,2,4);
|
||||
sub_80869E4(LeaderEntity,4,1,4);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8083E88(0xb);
|
||||
sub_80858AC(&LeaderEntity->posPixel.x,0x10);
|
||||
ShiftCameraToPosition(&LeaderEntity->posPixel,0x10);
|
||||
}
|
||||
|
||||
void SkarmoryReFightDialogue(void)
|
||||
{
|
||||
struct DungeonEntity * LeaderEntity;
|
||||
struct DungeonEntity * SkarmoryEntity;
|
||||
struct subStruct_Skarmory local_14;
|
||||
struct Position32 local_14;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
SkarmoryEntity = sub_8085680(3);
|
||||
SkarmoryEntity = GetEntityFromClientType(3);
|
||||
local_14.x = SkarmoryEntity->posPixel.x;
|
||||
local_14.y = SkarmoryEntity->posPixel.y + 0x2000;
|
||||
sub_8086448();
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086E74(SkarmoryEntity);
|
||||
sub_80858AC(&local_14,0x10);
|
||||
DisplayDungeonDialogue(&gUnknown_8100C90);
|
||||
ShiftCameraToPosition(&local_14,0x10);
|
||||
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_1);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8100CBC);
|
||||
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_2);
|
||||
sub_803E708(10,0x46);
|
||||
sub_806CDD4(SkarmoryEntity,0xd,0);
|
||||
DisplayDungeonDialogue(&gUnknown_8100CDC);
|
||||
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_3);
|
||||
sub_803E708(10,0x46);
|
||||
sub_80858AC(&LeaderEntity->posPixel.x,0x10);
|
||||
ShiftCameraToPosition(&LeaderEntity->posPixel,0x10);
|
||||
sub_8083E88(0xb);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,13 +13,11 @@
|
|||
#include "dungeon_action.h"
|
||||
#include "dungeon_ai_targeting.h"
|
||||
#include "dungeon_ai_targeting_1.h"
|
||||
#include "dungeon_ai_targeting_2.h"
|
||||
#include "dungeon_capabilities_1.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_random_1.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_visibility.h"
|
||||
#include "move_util.h"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "constants/status.h"
|
||||
#include "constants/targeting.h"
|
||||
#include "dungeon_ai_targeting_2.h"
|
||||
#include "dungeon_ai_targeting_1.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util.h"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
#include "dungeon_ai_attack.h"
|
||||
#include "dungeon_ai_item_weight.h"
|
||||
#include "dungeon_ai_items.h"
|
||||
#include "dungeon_ai_targeting_2.h"
|
||||
#include "dungeon_ai_targeting_1.h"
|
||||
#include "dungeon_capabilities.h"
|
||||
#include "dungeon_capabilities_1.h"
|
||||
#include "dungeon_entity.h"
|
||||
|
|
@ -17,7 +17,6 @@
|
|||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_random_1.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_visibility.h"
|
||||
#include "item.h"
|
||||
|
|
|
|||
|
|
@ -2,11 +2,102 @@
|
|||
#include "dungeon_ai_targeting_1.h"
|
||||
|
||||
#include "constants/ability.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "constants/iq_skill.h"
|
||||
#include "constants/status.h"
|
||||
#include "constants/tactic.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "constants/targeting.h"
|
||||
|
||||
extern void CheckRunAwayVisualFlag(struct DungeonEntity *, bool8 showRunAwayEffect);
|
||||
#include "dungeon_engine.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_movement.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "tile_types.h"
|
||||
|
||||
|
||||
extern u8 gDungeonWaterType[];
|
||||
|
||||
extern bool8 SetVisualFlags(struct DungeonEntityData *, u32, bool8);
|
||||
extern void ShowVisualFlags(struct DungeonEntity *r0);
|
||||
|
||||
const u8 gTargetingData[3][2][2][2] = {
|
||||
{
|
||||
{
|
||||
{TARGET_CAPABILITY_CANNOT_ATTACK, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET},
|
||||
{TARGET_CAPABILITY_CAN_TARGET, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET}
|
||||
},
|
||||
{
|
||||
{TARGET_CAPABILITY_CAN_TARGET, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET},
|
||||
{TARGET_CAPABILITY_CANNOT_ATTACK, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET}
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
{TARGET_CAPABILITY_CANNOT_ATTACK, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET},
|
||||
{TARGET_CAPABILITY_CAN_TARGET, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET}
|
||||
},
|
||||
{
|
||||
{TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET, TARGET_CAPABILITY_CAN_TARGET},
|
||||
{TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET, TARGET_CAPABILITY_CAN_TARGET}
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
{TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET, TARGET_CAPABILITY_CAN_TARGET},
|
||||
{TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET, TARGET_CAPABILITY_CAN_TARGET}
|
||||
},
|
||||
{
|
||||
{TARGET_CAPABILITY_CAN_TARGET, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET},
|
||||
{TARGET_CAPABILITY_CANNOT_ATTACK, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
bool8 IsAtJunction(struct DungeonEntity *pokemon)
|
||||
{
|
||||
char cVar2;
|
||||
u32 crossableTerrain;
|
||||
struct MapTile *mapTile;
|
||||
struct DungeonEntityData *iVar7;
|
||||
|
||||
crossableTerrain = GetCrossableTerrain(pokemon->entityData->entityID);
|
||||
if (!IsFixedDungeon()) {
|
||||
if ((pokemon->entityData->transformStatus == TRANSFORM_STATUS_MOBILE) || (HasItem(pokemon, ITEM_ID_MOBILE_SCARF))) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
}
|
||||
else if (HasIQSkill(pokemon, IQ_SKILL_ALL_TERRAIN_HIKER)) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
|
||||
}
|
||||
else if (HasIQSkill(pokemon, IQ_SKILL_SUPER_MOBILE)) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
}
|
||||
}
|
||||
if (crossableTerrain == CROSSABLE_TERRAIN_WALL) {
|
||||
iVar7 = pokemon->entityData;
|
||||
iVar7->mobileTurnTimer += DungeonRandomCapped(100);
|
||||
if (iVar7->mobileTurnTimer < 200) {
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
iVar7->mobileTurnTimer = 0;
|
||||
}
|
||||
else {
|
||||
if ((gDungeonWaterType[gDungeonGlobalData->tileset] == DUNGEON_WATER_TYPE_LAVA)
|
||||
&& (crossableTerrain == CROSSABLE_TERRAIN_LIQUID)
|
||||
&& (HasIQSkill(pokemon, IQ_SKILL_LAVA_EVADER))) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_REGULAR;
|
||||
}
|
||||
mapTile = GetMapTile_1(pokemon->posWorld.x, pokemon->posWorld.y);
|
||||
cVar2 = mapTile->canMoveAdjacent[crossableTerrain];
|
||||
if ((cVar2 != 0x54) && (cVar2 != 0x51) && (cVar2 != 0x45) && (cVar2 != 0x15) && (cVar2 != 0x55)) return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 ShouldAvoidFirstHit(struct DungeonEntity *pokemon, bool8 forceAvoid)
|
||||
{
|
||||
|
|
@ -60,3 +151,128 @@ bool8 ShouldAvoidEnemiesAndShowEffect(struct DungeonEntity *pokemon, bool8 showR
|
|||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void CheckRunAwayVisualFlag(struct DungeonEntity *pokemon, bool8 showRunAwayEffect)
|
||||
{
|
||||
bool8 cVar1;
|
||||
struct DungeonEntityData *iVar2;
|
||||
struct DungeonEntityData *iVar3;
|
||||
|
||||
iVar2 = pokemon->entityData;
|
||||
iVar3 = iVar2;
|
||||
|
||||
if (((!iVar2->isLeader) && HasAbility(pokemon,ABILITY_RUN_AWAY) &&
|
||||
(cVar1 = SetVisualFlags(iVar3,4,iVar2->HP <= iVar2->maxHP / 2), showRunAwayEffect)) &&
|
||||
(cVar1)) {
|
||||
ShowVisualFlags(pokemon);
|
||||
}
|
||||
}
|
||||
|
||||
u8 CanTarget(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, bool8 ignoreInvisible, bool8 checkPetrified)
|
||||
{
|
||||
struct DungeonEntityData *pokemonData = pokemon->entityData;
|
||||
struct DungeonEntityData *targetData = targetPokemon->entityData;
|
||||
u8 targetingDecoy;
|
||||
u8 pokemonTargetingDecoy;
|
||||
bool8 pokemonIsEnemy;
|
||||
bool8 targetIsEnemy;
|
||||
bool8 targetIsDecoy;
|
||||
if (pokemon == targetPokemon)
|
||||
{
|
||||
return TARGET_CAPABILITY_CANNOT_ATTACK;
|
||||
}
|
||||
if (pokemonData->shopkeeperMode == SHOPKEEPER_FRIENDLY ||
|
||||
targetData->shopkeeperMode == SHOPKEEPER_FRIENDLY ||
|
||||
pokemonData->clientType == CLIENT_TYPE_DONT_MOVE ||
|
||||
targetData->clientType == CLIENT_TYPE_DONT_MOVE ||
|
||||
pokemonData->clientType == CLIENT_TYPE_CLIENT ||
|
||||
targetData->clientType == CLIENT_TYPE_CLIENT ||
|
||||
(checkPetrified && !pokemonData->isEnemy && targetData->immobilizeStatus == IMMOBILIZE_STATUS_PETRIFIED) ||
|
||||
(!ignoreInvisible && targetData->transformStatus == TRANSFORM_STATUS_INVISIBLE && !CanSeeInvisible(pokemon)))
|
||||
{
|
||||
return TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET;
|
||||
}
|
||||
pokemonTargetingDecoy = pokemonData->targetingDecoy;
|
||||
targetingDecoy = TARGETING_DECOY_NONE;
|
||||
if (pokemonTargetingDecoy != TARGETING_DECOY_NONE)
|
||||
{
|
||||
targetingDecoy = TARGETING_DECOY_WILD;
|
||||
if (pokemonTargetingDecoy == TARGETING_DECOY_TEAM)
|
||||
{
|
||||
targetingDecoy = TARGETING_DECOY_TEAM;
|
||||
}
|
||||
}
|
||||
if (pokemonData->shopkeeperMode != SHOPKEEPER_NONE)
|
||||
{
|
||||
pokemonIsEnemy = FALSE;
|
||||
if (pokemonData->shopkeeperMode == SHOPKEEPER_AGGRESSIVE_TO_PLAYER)
|
||||
{
|
||||
pokemonIsEnemy = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pokemonIsEnemy = pokemonData->isEnemy ? TRUE : FALSE;
|
||||
}
|
||||
if (targetData->shopkeeperMode != SHOPKEEPER_NONE)
|
||||
{
|
||||
targetIsEnemy = FALSE;
|
||||
if (targetData->shopkeeperMode == SHOPKEEPER_AGGRESSIVE_TO_PLAYER)
|
||||
{
|
||||
targetIsEnemy = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
targetIsEnemy = targetData->isEnemy ? TRUE : FALSE;
|
||||
}
|
||||
targetIsDecoy = FALSE;
|
||||
if (targetData->waitingStatus == WAITING_STATUS_DECOY)
|
||||
{
|
||||
targetIsDecoy = TRUE;
|
||||
}
|
||||
return gTargetingData[targetingDecoy][pokemonIsEnemy][targetIsEnemy][targetIsDecoy];
|
||||
}
|
||||
|
||||
static inline bool8 JoinLocationCannotUseItems_1(struct DungeonEntityData *pokemonData)
|
||||
{
|
||||
if (pokemonData->joinLocation == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
if (pokemonData->joinLocation == DUNGEON_RESCUE_TEAM_BASE)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_807167C(struct DungeonEntity * pokemon, struct DungeonEntity * target)
|
||||
{
|
||||
bool8 bVar1;
|
||||
struct DungeonEntityData * iVar3;
|
||||
struct DungeonEntityData * iVar4;
|
||||
|
||||
iVar4 = pokemon->entityData;
|
||||
iVar3 = target->entityData;
|
||||
if (iVar4->clientType != CLIENT_TYPE_CLIENT) {
|
||||
bVar1 = JoinLocationCannotUseItems_1(iVar4);
|
||||
if (!bVar1 && (iVar4->shopkeeperMode == SHOPKEEPER_NONE) && (iVar3->clientType != CLIENT_TYPE_CLIENT)) {
|
||||
bVar1 = JoinLocationCannotUseItems_1(iVar3);
|
||||
if (bVar1 || (iVar3->shopkeeperMode != SHOPKEEPER_NONE)) {
|
||||
error:
|
||||
return TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((iVar4->isEnemy) != (iVar3->isEnemy)) {
|
||||
return TARGET_CAPABILITY_CAN_TARGET;
|
||||
}
|
||||
else {
|
||||
return TARGET_CAPABILITY_CANNOT_ATTACK;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
goto error;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,105 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "dungeon_ai_targeting_2.h"
|
||||
|
||||
#include "constants/status.h"
|
||||
#include "constants/targeting.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
|
||||
const u8 gTargetingData[3][2][2][2] = {
|
||||
{
|
||||
{
|
||||
{TARGET_CAPABILITY_CANNOT_ATTACK, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET},
|
||||
{TARGET_CAPABILITY_CAN_TARGET, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET}
|
||||
},
|
||||
{
|
||||
{TARGET_CAPABILITY_CAN_TARGET, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET},
|
||||
{TARGET_CAPABILITY_CANNOT_ATTACK, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET}
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
{TARGET_CAPABILITY_CANNOT_ATTACK, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET},
|
||||
{TARGET_CAPABILITY_CAN_TARGET, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET}
|
||||
},
|
||||
{
|
||||
{TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET, TARGET_CAPABILITY_CAN_TARGET},
|
||||
{TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET, TARGET_CAPABILITY_CAN_TARGET}
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
{TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET, TARGET_CAPABILITY_CAN_TARGET},
|
||||
{TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET, TARGET_CAPABILITY_CAN_TARGET}
|
||||
},
|
||||
{
|
||||
{TARGET_CAPABILITY_CAN_TARGET, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET},
|
||||
{TARGET_CAPABILITY_CANNOT_ATTACK, TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
u8 CanTarget(struct DungeonEntity *pokemon, struct DungeonEntity *targetPokemon, bool8 ignoreInvisible, bool8 checkPetrified)
|
||||
{
|
||||
struct DungeonEntityData *pokemonData = pokemon->entityData;
|
||||
struct DungeonEntityData *targetData = targetPokemon->entityData;
|
||||
u8 targetingDecoy;
|
||||
u8 pokemonTargetingDecoy;
|
||||
bool8 pokemonIsEnemy;
|
||||
bool8 targetIsEnemy;
|
||||
bool8 targetIsDecoy;
|
||||
if (pokemon == targetPokemon)
|
||||
{
|
||||
return TARGET_CAPABILITY_CANNOT_ATTACK;
|
||||
}
|
||||
if (pokemonData->shopkeeperMode == SHOPKEEPER_FRIENDLY ||
|
||||
targetData->shopkeeperMode == SHOPKEEPER_FRIENDLY ||
|
||||
pokemonData->clientType == CLIENT_TYPE_DONT_MOVE ||
|
||||
targetData->clientType == CLIENT_TYPE_DONT_MOVE ||
|
||||
pokemonData->clientType == CLIENT_TYPE_CLIENT ||
|
||||
targetData->clientType == CLIENT_TYPE_CLIENT ||
|
||||
(checkPetrified && !pokemonData->isEnemy && targetData->immobilizeStatus == IMMOBILIZE_STATUS_PETRIFIED) ||
|
||||
(!ignoreInvisible && targetData->transformStatus == TRANSFORM_STATUS_INVISIBLE && !CanSeeInvisible(pokemon)))
|
||||
{
|
||||
return TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET;
|
||||
}
|
||||
pokemonTargetingDecoy = pokemonData->targetingDecoy;
|
||||
targetingDecoy = TARGETING_DECOY_NONE;
|
||||
if (pokemonTargetingDecoy != TARGETING_DECOY_NONE)
|
||||
{
|
||||
targetingDecoy = TARGETING_DECOY_WILD;
|
||||
if (pokemonTargetingDecoy == TARGETING_DECOY_TEAM)
|
||||
{
|
||||
targetingDecoy = TARGETING_DECOY_TEAM;
|
||||
}
|
||||
}
|
||||
if (pokemonData->shopkeeperMode != SHOPKEEPER_NONE)
|
||||
{
|
||||
pokemonIsEnemy = FALSE;
|
||||
if (pokemonData->shopkeeperMode == SHOPKEEPER_AGGRESSIVE_TO_PLAYER)
|
||||
{
|
||||
pokemonIsEnemy = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pokemonIsEnemy = pokemonData->isEnemy ? TRUE : FALSE;
|
||||
}
|
||||
if (targetData->shopkeeperMode != SHOPKEEPER_NONE)
|
||||
{
|
||||
targetIsEnemy = FALSE;
|
||||
if (targetData->shopkeeperMode == SHOPKEEPER_AGGRESSIVE_TO_PLAYER)
|
||||
{
|
||||
targetIsEnemy = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
targetIsEnemy = targetData->isEnemy ? TRUE : FALSE;
|
||||
}
|
||||
targetIsDecoy = FALSE;
|
||||
if (targetData->waitingStatus == WAITING_STATUS_DECOY)
|
||||
{
|
||||
targetIsDecoy = TRUE;
|
||||
}
|
||||
return gTargetingData[targetingDecoy][pokemonIsEnemy][targetIsEnemy][targetIsDecoy];
|
||||
}
|
||||
|
|
@ -1,6 +1,38 @@
|
|||
#include "global.h"
|
||||
#include "dungeon_items.h"
|
||||
|
||||
#include "dungeon_capabilities.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "team_inventory.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
extern s32 gUnknown_810A3F0[];
|
||||
extern u8 *gUnknown_80FA408[];
|
||||
extern u8 *gUnknown_810531C[];
|
||||
extern u8 *gUnknown_8105360[];
|
||||
extern u8 *gUnknown_81053A8[];
|
||||
extern u8 *gUnknown_8105434[];
|
||||
|
||||
extern u8 sub_8046D70(void);
|
||||
extern s32 sub_8052B8C(u32, u8 *, u32);
|
||||
extern struct DungeonEntity *GetLeaderEntity(void);
|
||||
extern void sub_80861A8(void);
|
||||
extern void PrintFieldMessage(u32, u8 *, u32);
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern void sub_80869E4(struct DungeonEntity *, u32, u32, u32);
|
||||
extern void sub_80416E0(struct Position32 *r0, u32, u32);
|
||||
extern void SetMessageArgument(u8 *r0, struct DungeonEntity *r1, u32);
|
||||
extern void sub_80421C0(struct DungeonEntity *, u32);
|
||||
extern void sub_80855E4(void *);
|
||||
extern void PlaySoundEffect(u32);
|
||||
extern void sub_804178C(u32);
|
||||
extern void sub_8040A84(void);
|
||||
|
||||
void MusicBoxCreation(void);
|
||||
|
||||
bool8 HasItem(struct DungeonEntity *pokemon, u8 itemIndex)
|
||||
{
|
||||
// Weird assignment to fix a regswap.
|
||||
|
|
@ -19,3 +51,459 @@ bool8 HasItem(struct DungeonEntity *pokemon, u8 itemIndex)
|
|||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8046CE4(u8 *param_1,s32 param_2)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
|
||||
iVar1 = DungeonRandomCapped(100);
|
||||
for(iVar2 = 0; iVar2 < 200; iVar2++)
|
||||
{
|
||||
if (gUnknown_810A3F0[iVar1] <= param_2) {
|
||||
param_1[1] = iVar1;
|
||||
return;
|
||||
}
|
||||
iVar1 = iVar1 / 2;
|
||||
}
|
||||
param_1[1] = 1;
|
||||
}
|
||||
|
||||
void sub_8046D20(void)
|
||||
{
|
||||
u8 cVar1;
|
||||
|
||||
cVar1 = gDungeonGlobalData->unk8;
|
||||
gDungeonGlobalData->unk8 = sub_8046D70();
|
||||
if (((gDungeonGlobalData->unk8 == 1) && (cVar1 == 0)) &&
|
||||
(sub_8052B8C(0, *gUnknown_80FA408, 1) == 1)) {
|
||||
gDungeonGlobalData->unk4 = 1;
|
||||
gDungeonGlobalData->unk11 = 2;
|
||||
}
|
||||
else {
|
||||
MusicBoxCreation();
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_8046D70(void)
|
||||
{
|
||||
if(gDungeonGlobalData->unk68A)
|
||||
return 0;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void MusicBoxCreation(void)
|
||||
{
|
||||
bool8 musicBoxOnce;
|
||||
bool8 createMusicBox;
|
||||
struct ItemSlot *pbVar3; // r2
|
||||
s32 iVar4;
|
||||
struct DungeonEntity *entity;
|
||||
|
||||
s32 indexes[3];
|
||||
|
||||
createMusicBox = FALSE;
|
||||
do {
|
||||
musicBoxOnce = FALSE;
|
||||
indexes[0] = -1;
|
||||
indexes[1] = -1;
|
||||
indexes[2] = -1;
|
||||
|
||||
for(iVar4 = 0, pbVar3 = &gTeamInventory_203B460->teamItems[iVar4]; iVar4 < 20; pbVar3++, iVar4++)
|
||||
{
|
||||
if (pbVar3->itemFlags & ITEM_FLAG_EXISTS) {
|
||||
if (pbVar3->itemIndex == ITEM_ID_ROCK_PART) {
|
||||
indexes[0] = iVar4;
|
||||
}
|
||||
if (pbVar3->itemIndex == ITEM_ID_ICE_PART) {
|
||||
indexes[1] = iVar4;
|
||||
}
|
||||
if (pbVar3->itemIndex == ITEM_ID_STEEL_PART) {
|
||||
indexes[2] = iVar4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((indexes[0] >= 0) && (indexes[1] >= 0) && (indexes[2] >= 0)) {
|
||||
|
||||
// NOTE: doesn't match here.. tried to register pin but still not perfect
|
||||
register struct ItemSlot *pbVar4 asm("r1");
|
||||
register struct ItemSlot *pbVar5 asm("r0");
|
||||
|
||||
musicBoxOnce = TRUE;
|
||||
createMusicBox = TRUE;
|
||||
|
||||
// clear out each of the parts
|
||||
pbVar4 = &gTeamInventory_203B460->teamItems[indexes[0]];
|
||||
pbVar4->itemIndex = 0;
|
||||
pbVar4->numItems = 0;
|
||||
pbVar4->itemFlags = 0;
|
||||
|
||||
pbVar5 = &gTeamInventory_203B460->teamItems[indexes[1]];
|
||||
pbVar5->itemIndex = 0;
|
||||
pbVar5->numItems = 0;
|
||||
pbVar5->itemFlags = 0;
|
||||
|
||||
pbVar5 = &gTeamInventory_203B460->teamItems[indexes[2]];
|
||||
pbVar5->itemIndex = 0;
|
||||
pbVar5->numItems = 0;
|
||||
pbVar5->itemFlags = 0;
|
||||
|
||||
// init the music box
|
||||
xxx_init_itemslot_8090A8C(&gTeamInventory_203B460->teamItems[indexes[0]], ITEM_ID_MUSIC_BOX, 0);
|
||||
}
|
||||
} while (musicBoxOnce);
|
||||
|
||||
FillInventoryGaps();
|
||||
|
||||
if (createMusicBox) {
|
||||
entity = GetLeaderEntity();
|
||||
sub_80855E4(sub_80861A8);
|
||||
gDungeonGlobalData->unk1356C = 1;
|
||||
PrintFieldMessage(0,*gUnknown_810531C,1);
|
||||
sub_803E708(0x3c,0x41);
|
||||
PrintFieldMessage(0,*gUnknown_8105360,1);
|
||||
sub_80869E4(entity,4,10,0);
|
||||
sub_80416E0(&entity->posPixel,0x10c,0);
|
||||
sub_80421C0(entity,0xd7);
|
||||
sub_803E708(0x3c,0x41);
|
||||
SetMessageArgument(gAvailablePokemonNames,entity,0);
|
||||
PrintFieldMessage(0,*gUnknown_81053A8,1);
|
||||
sub_803E708(10,0x41);
|
||||
PlaySoundEffect(0xd4);
|
||||
PrintFieldMessage(0,*gUnknown_8105434,1);
|
||||
sub_803E708(10,0x41);
|
||||
sub_804178C(1);
|
||||
gDungeonGlobalData->unk1356C = 0;
|
||||
sub_8040A84();
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void MusicBoxCreation(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4-r7,lr}\n"
|
||||
"\tsub sp, 0xC\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldr r5, _08046EDC\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"_08046D96:\n"
|
||||
"\tmovs r7, 0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tnegs r0, r0\n"
|
||||
"\tstr r0, [sp]\n"
|
||||
"\tstr r0, [sp, 0x4]\n"
|
||||
"\tstr r0, [sp, 0x8]\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tldr r2, [r5]\n"
|
||||
"_08046DA6:\n"
|
||||
"\tldrb r1, [r2]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08046DC8\n"
|
||||
"\tldrb r0, [r2, 0x2]\n"
|
||||
"\tcmp r0, 0x79\n"
|
||||
"\tbne _08046DB8\n"
|
||||
"\tstr r3, [sp]\n"
|
||||
"_08046DB8:\n"
|
||||
"\tldrb r0, [r2, 0x2]\n"
|
||||
"\tcmp r0, 0x77\n"
|
||||
"\tbne _08046DC0\n"
|
||||
"\tstr r3, [sp, 0x4]\n"
|
||||
"_08046DC0:\n"
|
||||
"\tldrb r0, [r2, 0x2]\n"
|
||||
"\tcmp r0, 0x78\n"
|
||||
"\tbne _08046DC8\n"
|
||||
"\tstr r3, [sp, 0x8]\n"
|
||||
"_08046DC8:\n"
|
||||
"\tadds r2, 0x4\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"\tcmp r3, 0x13\n"
|
||||
"\tble _08046DA6\n"
|
||||
"\tldr r1, [sp]\n"
|
||||
"\tcmp r1, 0\n"
|
||||
"\tblt _08046E1E\n"
|
||||
"\tldr r0, [sp, 0x4]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tblt _08046E1E\n"
|
||||
"\tldr r0, [sp, 0x8]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tblt _08046E1E\n"
|
||||
"\tmovs r7, 0x1\n"
|
||||
"\tmovs r6, 0x1\n"
|
||||
"\tlsls r1, 2\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tstrb r4, [r1, 0x2]\n"
|
||||
"\tstrb r4, [r1, 0x1]\n"
|
||||
"\tstrb r4, [r1]\n"
|
||||
"\tldr r0, [sp, 0x4]\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tldr r1, [r5]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r4, [r0, 0x2]\n"
|
||||
"\tstrb r4, [r0, 0x1]\n"
|
||||
"\tstrb r4, [r0]\n"
|
||||
"\tldr r0, [sp, 0x8]\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tldr r1, [r5]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r4, [r0, 0x2]\n"
|
||||
"\tstrb r4, [r0, 0x1]\n"
|
||||
"\tstrb r4, [r0]\n"
|
||||
"\tldr r1, [sp]\n"
|
||||
"\tlsls r1, 2\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r1, 0x7A\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl xxx_init_itemslot_8090A8C\n"
|
||||
"_08046E1E:\n"
|
||||
"\tcmp r7, 0\n"
|
||||
"\tbne _08046D96\n"
|
||||
"\tbl FillInventoryGaps\n"
|
||||
"\tcmp r6, 0\n"
|
||||
"\tbeq _08046ED4\n"
|
||||
"\tbl GetLeaderEntity\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tldr r0, _08046EE0\n"
|
||||
"\tbl sub_80855E4\n"
|
||||
"\tldr r6, _08046EE4\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tldr r5, _08046EE8\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, _08046EEC\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl PrintFieldMessage\n"
|
||||
"\tmovs r0, 0x3C\n"
|
||||
"\tmovs r1, 0x41\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tldr r0, _08046EF0\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl PrintFieldMessage\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0x4\n"
|
||||
"\tmovs r2, 0xA\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tbl sub_80869E4\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tadds r0, 0xC\n"
|
||||
"\tmovs r1, 0x86\n"
|
||||
"\tlsls r1, 1\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl sub_80416E0\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tmovs r1, 0xD7\n"
|
||||
"\tbl sub_80421C0\n"
|
||||
"\tmovs r0, 0x3C\n"
|
||||
"\tmovs r1, 0x41\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tldr r0, _08046EF4\n"
|
||||
"\tadds r1, r4, 0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl SetMessageArgument\n"
|
||||
"\tldr r0, _08046EF8\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl PrintFieldMessage\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x41\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tmovs r0, 0xD4\n"
|
||||
"\tbl PlaySoundEffect\n"
|
||||
"\tldr r0, _08046EFC\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl PrintFieldMessage\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x41\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tbl sub_804178C\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tstrb r7, [r0]\n"
|
||||
"\tbl sub_8040A84\n"
|
||||
"_08046ED4:\n"
|
||||
"\tadd sp, 0xC\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08046EDC: .4byte gTeamInventory_203B460\n"
|
||||
"_08046EE0: .4byte sub_80861A8\n"
|
||||
"_08046EE4: .4byte gDungeonGlobalData\n"
|
||||
"_08046EE8: .4byte 0x0001356c\n"
|
||||
"_08046EEC: .4byte gUnknown_810531C\n"
|
||||
"_08046EF0: .4byte gUnknown_8105360\n"
|
||||
"_08046EF4: .4byte gAvailablePokemonNames\n"
|
||||
"_08046EF8: .4byte gUnknown_81053A8\n"
|
||||
"_08046EFC: .4byte gUnknown_8105434"
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool8 sub_8046F00(struct ItemSlot *item)
|
||||
{
|
||||
bool8 canLearnMove;
|
||||
bool8 cannotMove;
|
||||
u16 moveID;
|
||||
struct DungeonEntity *entity;
|
||||
s32 index;
|
||||
|
||||
if (GetItemType(item->itemIndex) == ITEM_TYPE_TM) {
|
||||
moveID = GetItemMove(item->itemIndex);
|
||||
if (!IsHMItem(item->itemIndex)) {
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity = gDungeonGlobalData->teamPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
canLearnMove = CanMonLearnMove(moveID, entity->entityData->entityID);
|
||||
cannotMove = CannotMove(entity, FALSE);
|
||||
if (cannotMove) {
|
||||
canLearnMove = FALSE;
|
||||
}
|
||||
if (canLearnMove) return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8046F84(s32 itemFlag)
|
||||
{
|
||||
struct ItemSlot *item;
|
||||
struct DungeonEntity *entity;
|
||||
struct DungeonEntityData *entityData;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < INVENTORY_SIZE; index++)
|
||||
{
|
||||
item = &gTeamInventory_203B460->teamItems[index];
|
||||
if ((item->itemFlags & ITEM_FLAG_EXISTS) && (item->itemFlags & itemFlag)) {
|
||||
item->itemIndex = 0;
|
||||
item->numItems = 0;
|
||||
item->itemFlags = 0;
|
||||
}
|
||||
}
|
||||
FillInventoryGaps();
|
||||
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
entity = gDungeonGlobalData->teamPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
entityData = entity->entityData;
|
||||
item = &entityData->heldItem;
|
||||
if ((item->itemFlags & ITEM_FLAG_EXISTS) && (item->itemFlags & itemFlag)) {
|
||||
item->itemIndex = 0;
|
||||
item->numItems = 0;
|
||||
item->itemFlags = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804700C(void)
|
||||
{
|
||||
struct ItemSlot *item;
|
||||
struct DungeonEntity *entity;
|
||||
struct DungeonEntityData *entityData;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < INVENTORY_SIZE; index++)
|
||||
{
|
||||
item = &gTeamInventory_203B460->teamItems[index];
|
||||
if ((item->itemFlags & ITEM_FLAG_EXISTS)) {
|
||||
xxx_init_itemslot_8090A8C(item, ITEM_ID_PLAIN_SEED, 0);
|
||||
}
|
||||
}
|
||||
FillInventoryGaps();
|
||||
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity = gDungeonGlobalData->teamPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
entityData = entity->entityData;
|
||||
item = &entityData->heldItem;
|
||||
if ((item->itemFlags & ITEM_FLAG_EXISTS)) {
|
||||
xxx_init_itemslot_8090A8C(item, ITEM_ID_PLAIN_SEED, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8047084(s32 itemFlag)
|
||||
{
|
||||
struct ItemSlot *item;
|
||||
struct DungeonEntity *entity;
|
||||
struct DungeonEntityData *entityData;
|
||||
s32 index;
|
||||
|
||||
// NEED THIS ORDERING TO MATCH
|
||||
index = 0;
|
||||
item = &gTeamInventory_203B460->teamItems[index];
|
||||
|
||||
for(index = 0; index < INVENTORY_SIZE; item++, index++)
|
||||
{
|
||||
if ((item->itemFlags & ITEM_FLAG_EXISTS) && (item->itemFlags & itemFlag)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
FillInventoryGaps();
|
||||
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity = gDungeonGlobalData->teamPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
entityData = entity->entityData;
|
||||
item = &entityData->heldItem;
|
||||
if ((item->itemFlags & ITEM_FLAG_EXISTS) && (item->itemFlags & itemFlag)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8047104(void)
|
||||
{
|
||||
struct ItemSlot *item;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < INVENTORY_SIZE; index++)
|
||||
{
|
||||
item = &gTeamInventory_203B460->teamItems[index];
|
||||
if (item->itemFlags & ITEM_FLAG_EXISTS)
|
||||
{
|
||||
if(item->itemIndex == ITEM_ID_POKE)
|
||||
{
|
||||
AddToTeamMoney(GetMoneyValue(item));
|
||||
item->itemIndex = 0;
|
||||
item->numItems = 0;
|
||||
item->itemFlags = 0;
|
||||
}
|
||||
if(item->itemFlags & ITEM_FLAG_FOR_SALE)
|
||||
{
|
||||
item->itemIndex = 0;
|
||||
item->numItems = 0;
|
||||
item->itemFlags = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
FillInventoryGaps();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,3 +18,36 @@ s32 DungeonRandomCapped(s32 cap)
|
|||
{
|
||||
return (((DungeonRandom() & 0xFFFF) * cap) >> 16) & 0xFFFF;
|
||||
}
|
||||
|
||||
s32 DungeonRandomRange(s32 low, s32 high)
|
||||
{
|
||||
if(low == high)
|
||||
return low;
|
||||
else if(low < high)
|
||||
{
|
||||
return (DungeonRandomCapped(high - low) + low);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (DungeonRandomCapped(low - high) + high);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 RollPercentChance(s32 percentChance)
|
||||
{
|
||||
if (DungeonRandomCapped(100) < percentChance)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 RollPercentChance_2(s32 percentChance)
|
||||
{
|
||||
if (DungeonRandomCapped(100) < percentChance)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "dungeon_random_1.h"
|
||||
|
||||
#include "dungeon_random.h"
|
||||
|
||||
bool8 RollPercentChance(s32 percentChance)
|
||||
{
|
||||
if (DungeonRandomCapped(100) < percentChance)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 RollPercentChance_2(s32 percentChance)
|
||||
{
|
||||
if (DungeonRandomCapped(100) < percentChance)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -43,14 +43,14 @@ struct ItemSlot* GetItemData(struct DungeonEntity *entity)
|
|||
return (struct ItemSlot *)entity->entityData;
|
||||
}
|
||||
|
||||
struct DungeonEntityData* sub_804510C(struct DungeonEntity *entity)
|
||||
struct DungeonEntityData* GetTrapData_1(struct DungeonEntity *entity)
|
||||
{
|
||||
return entity->entityData;
|
||||
}
|
||||
|
||||
struct DungeonEntityData* sub_8045110(struct DungeonEntity *entity)
|
||||
struct ItemSlot* GetItemData_1(struct DungeonEntity *entity)
|
||||
{
|
||||
return entity->entityData;
|
||||
return (struct ItemSlot*)entity->entityData;
|
||||
}
|
||||
|
||||
struct MapTile* GetMapTileForDungeonEntity_1(struct DungeonEntity *entity)
|
||||
|
|
|
|||
|
|
@ -6,13 +6,16 @@
|
|||
#include "dungeon_util.h"
|
||||
#include "random.h"
|
||||
|
||||
extern const u8 gUnknown_8107358[25];
|
||||
|
||||
extern void sub_806CE68(struct DungeonEntity *, s32);
|
||||
|
||||
extern s32 sub_803F994(void);
|
||||
extern s32 sub_803F9B0(void);
|
||||
extern s32 GetCameraXPos(void);
|
||||
extern s32 GetCameraYPos(void);
|
||||
extern void sub_803F4A0(u32);
|
||||
extern void sub_803F878(s32, s32);
|
||||
extern void sub_803E46C(u32);
|
||||
extern void sub_803E708(u32, u32);
|
||||
|
||||
void sub_8085860(s32 x, s32 y)
|
||||
{
|
||||
|
|
@ -27,28 +30,28 @@ void sub_8085890(s32 x, s32 y)
|
|||
sub_803F878(x, y);
|
||||
}
|
||||
|
||||
void sub_80858AC(s32 *param_1, s32 param_2)
|
||||
void ShiftCameraToPosition(struct Position32 *posStruct, s32 cameraSteps)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
s32 iVar3;
|
||||
s32 iVar4;
|
||||
s32 XPos;
|
||||
s32 YPos;
|
||||
s32 XIncrement;
|
||||
s32 YIncrement;
|
||||
|
||||
iVar1 = sub_803F994();
|
||||
iVar2 = sub_803F9B0();
|
||||
iVar3 = (param_1[0] - iVar1) / param_2;
|
||||
iVar4 = (param_1[1] - iVar2) / param_2;
|
||||
XPos = GetCameraXPos();
|
||||
YPos = GetCameraYPos();
|
||||
XIncrement = (posStruct->x - XPos) / cameraSteps;
|
||||
YIncrement = (posStruct->y - YPos) / cameraSteps;
|
||||
sub_803F4A0(0);
|
||||
if (0 < param_2) {
|
||||
if (0 < cameraSteps) {
|
||||
do {
|
||||
iVar1 += iVar3;
|
||||
iVar2 += iVar4;
|
||||
sub_803F878(iVar1,iVar2);
|
||||
XPos += XIncrement;
|
||||
YPos += YIncrement;
|
||||
sub_803F878(XPos,YPos);
|
||||
sub_803E46C(0x46);
|
||||
param_2--;
|
||||
} while (param_2 != 0);
|
||||
cameraSteps--;
|
||||
} while (cameraSteps != 0);
|
||||
}
|
||||
sub_803F878(param_1[0],param_1[1]);
|
||||
sub_803F878(posStruct->x,posStruct->y);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
|
||||
|
|
@ -168,3 +171,18 @@ bool8 IsMovingClient(struct DungeonEntity *pokemon)
|
|||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8085B0C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
s32 index;
|
||||
u8 local_28 [25];
|
||||
|
||||
index = 0;
|
||||
|
||||
memcpy(local_28, gUnknown_8107358, 25);
|
||||
while (local_28[index] != 0) {
|
||||
SetFacingDirection(pokemon, local_28[index]);
|
||||
sub_803E708(6,0x46);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#include "dungeon_range.h"
|
||||
#include "dungeon_util.h"
|
||||
|
||||
extern bool8 InSameRoom_3(struct Position *pos1, struct Position *pos2);
|
||||
|
||||
bool8 CanSee(struct DungeonEntity *entity, struct DungeonEntity *targetEntity)
|
||||
{
|
||||
if (!EntityExists(entity) || !EntityExists(targetEntity) || !targetEntity->visible)
|
||||
|
|
@ -32,3 +34,50 @@ bool8 CanSee(struct DungeonEntity *entity, struct DungeonEntity *targetEntity)
|
|||
}
|
||||
return InSameRoom_2(&entity->posWorld, &targetEntity->posWorld);
|
||||
}
|
||||
|
||||
bool8 CanSee_2(struct DungeonEntity *entity, struct DungeonEntity *targetEntity)
|
||||
{
|
||||
if (!EntityExists(entity) || !EntityExists(targetEntity) || !targetEntity->visible)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (targetEntity->entityType == ENTITY_POKEMON)
|
||||
{
|
||||
if (entity->entityType == ENTITY_POKEMON)
|
||||
{
|
||||
if (!CanSeeInvisible(entity) && targetEntity->entityData->transformStatus == TRANSFORM_STATUS_INVISIBLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (entity->entityData->eyesightStatus == EYESIGHT_STATUS_BLINKER)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (targetEntity->entityData->transformStatus == TRANSFORM_STATUS_INVISIBLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return InSameRoom_3(&entity->posWorld, &targetEntity->posWorld);
|
||||
}
|
||||
|
||||
bool8 sub_8045A70(struct DungeonEntity *entity, struct DungeonEntity *targetEntity)
|
||||
{
|
||||
if (EntityExists(entity) && EntityExists(targetEntity) && targetEntity->visible)
|
||||
{
|
||||
return InSameRoom_2(&entity->posWorld, &targetEntity->posWorld);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8045AAC(struct DungeonEntity *entity, struct Position *pos)
|
||||
{
|
||||
return InSameRoom_2(&entity->posWorld, pos);
|
||||
}
|
||||
|
||||
bool8 InSameRoom(struct DungeonEntity *entity, struct Position *pos)
|
||||
{
|
||||
return InSameRoom_3(&entity->posWorld, pos);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -175,11 +175,10 @@ void sub_8017C7C(void)
|
|||
sub_8099690(0);
|
||||
if(!IsNotMoneyOrUsedTMItem(gUnknown_203B208->unkC.itemIndex))
|
||||
UpdateKangaskhanStorageState(9);
|
||||
else if(!sub_801ADA0(gUnknown_203B208->unk10))
|
||||
UpdateKangaskhanStorageState(0xA);
|
||||
else
|
||||
if(!sub_801ADA0(gUnknown_203B208->unk10))
|
||||
UpdateKangaskhanStorageState(0xA);
|
||||
else
|
||||
UpdateKangaskhanStorageState(0x11);
|
||||
UpdateKangaskhanStorageState(0x11);
|
||||
break;
|
||||
case 6:
|
||||
sub_8099690(0);
|
||||
|
|
@ -209,13 +208,10 @@ void sub_8017D24(void)
|
|||
sub_801CBB8();
|
||||
UpdateKangaskhanStorageState(6);
|
||||
}
|
||||
else if(IsThrowableItem(gUnknown_203B208->unkC.itemIndex))
|
||||
UpdateKangaskhanStorageState(0x18);
|
||||
else
|
||||
{
|
||||
if(IsThrowableItem(gUnknown_203B208->unkC.itemIndex))
|
||||
UpdateKangaskhanStorageState(0x18);
|
||||
else
|
||||
UpdateKangaskhanStorageState(0x1B);
|
||||
}
|
||||
UpdateKangaskhanStorageState(0x1B);
|
||||
break;
|
||||
case 6:
|
||||
UpdateKangaskhanStorageState(0x1A);
|
||||
|
|
|
|||
|
|
@ -9,10 +9,16 @@
|
|||
#include "code_800D090.h"
|
||||
|
||||
extern struct unkStruct_203B210 *gUnknown_203B210;
|
||||
extern u16 gUnknown_203B218;
|
||||
extern u16 gUnknown_203B220;
|
||||
extern u16 gUnknown_203B228;
|
||||
extern u16 gUnknown_203B22A;
|
||||
extern u8 gUnknown_80DB8E4[];
|
||||
extern u8 gUnknown_80DB8EC[];
|
||||
extern u8 gUnknown_80DB92C[];
|
||||
extern u8 gUnknown_80DB934[];
|
||||
extern u8 *gUnknown_80D4920[];
|
||||
extern u8 *gUnknown_80D4928[];
|
||||
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
void UpdateKecleonStoreState(u32);
|
||||
|
|
@ -90,9 +96,8 @@ extern struct UnkTextStruct2 gUnknown_80DB8CC;
|
|||
extern struct UnkTextStruct2 gUnknown_80DB8B4;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB8FC;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB944;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB95C;
|
||||
extern const struct UnkTextStruct2 gUnknown_80DB914;
|
||||
extern u16 gUnknown_203B218;
|
||||
extern u16 gUnknown_203B220;
|
||||
extern void sub_801A430(void);
|
||||
extern void sub_801A4A4(void);
|
||||
extern void sub_8013984(u8 *);
|
||||
|
|
@ -100,9 +105,6 @@ extern void sub_801A064(void);
|
|||
extern void sub_801A0D8(void);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
extern u8 sub_801A37C(void);
|
||||
extern u16 gUnknown_203B228;
|
||||
extern u16 gUnknown_203B22A;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB95C;
|
||||
|
||||
extern void sub_801A010(void);
|
||||
extern void sub_801A3DC(void);
|
||||
|
|
@ -114,6 +116,23 @@ extern void xxx_fill_inv_unk250_gaps_8091AA8(void);
|
|||
|
||||
u32 sub_8019D8C(void);
|
||||
|
||||
void sub_8019700(void)
|
||||
{
|
||||
u32 menuAction;
|
||||
struct unkStruct_203B210 *preload;
|
||||
u8 *nullText;
|
||||
|
||||
preload = gUnknown_203B210;
|
||||
nullText = NULL;
|
||||
preload->unk34[0].text = *gUnknown_80D4920;
|
||||
preload->unk34[0].menuAction = 5;
|
||||
menuAction = 1;
|
||||
preload->unk34[1].text = *gUnknown_80D4928;
|
||||
preload->unk34[1].menuAction = 6;
|
||||
preload->unk34[2].text = nullText;
|
||||
preload->unk34[2].menuAction = menuAction;
|
||||
}
|
||||
|
||||
void sub_8019730(void)
|
||||
{
|
||||
s32 local_8;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,25 @@
|
|||
#include "global.h"
|
||||
#include "move_util.h"
|
||||
|
||||
#include "constants/ability.h"
|
||||
#include "constants/move_id.h"
|
||||
#include "constants/status.h"
|
||||
#include "moves.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_random.h"
|
||||
|
||||
bool8 sub_8057308(struct DungeonEntity *pokemon, s32 chance)
|
||||
{
|
||||
if(!EntityExists(pokemon))
|
||||
return FALSE;
|
||||
if(chance == 0)
|
||||
return TRUE;
|
||||
if(HasAbility(pokemon, ABILITY_SERENE_GRACE))
|
||||
return RollPercentChance_2(chance * 2);
|
||||
else
|
||||
return RollPercentChance_2(chance);
|
||||
}
|
||||
|
||||
bool8 IsMoveIndexUsable(struct DungeonEntity *pokemon, s32 moveIndex, bool8 hasPPChecker)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ u8 GetMoveWeight(struct PokemonMove *move)
|
|||
return gMovesData[move->moveID].weight;
|
||||
}
|
||||
|
||||
u8 GetMoveHitCount(struct PokemonMove *move)
|
||||
u32 GetMoveHitCount(struct PokemonMove *move)
|
||||
{
|
||||
return gMovesData[move->moveID].hitCount;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -373,7 +373,7 @@ u16 GetLowKickDmg(s16 index)
|
|||
return gMonsterParameters[index].lowkick_dmg;
|
||||
}
|
||||
|
||||
u16 GetSizeOrbDmg(s16 index)
|
||||
u32 GetSizeOrbDmg(s16 index)
|
||||
{
|
||||
return gMonsterParameters[index].sizeorb_dmg;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +1,66 @@
|
|||
#include "global.h"
|
||||
#include "status_checker.h"
|
||||
|
||||
#include "code_80521D0.h"
|
||||
#include "constants/move_id.h"
|
||||
#include "constants/status.h"
|
||||
#include "constants/type.h"
|
||||
#include "constants/weather.h"
|
||||
#include "dungeon_engine.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_visibility.h"
|
||||
#include "map.h"
|
||||
#include "moves.h"
|
||||
#include "number_util.h"
|
||||
#include "pokemon.h"
|
||||
#include "status_checks_1.h"
|
||||
#include "tile_types.h"
|
||||
#include "trap.h"
|
||||
#include "weather.h"
|
||||
|
||||
extern void sub_807F43C(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8078F50(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8077E4C(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8079570(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_80795C4(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_807DC68(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8077BB4(struct DungeonEntity *, struct DungeonEntity *, u8);
|
||||
extern void sub_8078A58(struct DungeonEntity *, struct DungeonEntity *, s16, u32);
|
||||
|
||||
extern u32 sub_803D73C(u32);
|
||||
extern void sub_8045C28(struct ItemSlot *, u8 , u8 *);
|
||||
extern void sub_80464C8(struct DungeonEntity *, struct Position *, struct ItemSlot *);
|
||||
extern void sub_8068FE0(struct DungeonEntity *, u32, struct DungeonEntity *r2);
|
||||
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, const char []);
|
||||
extern void sub_806F370(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
extern void sub_807FC3C(struct Position *, u32, u32);
|
||||
extern void sub_8042A64(struct Position *);
|
||||
extern void sub_8040A84(void);
|
||||
extern void sub_8049ED4(void);
|
||||
extern void sub_80498A8(s32, s32);
|
||||
extern void sub_806CF60();
|
||||
extern void sub_8042A54(struct Position *);
|
||||
extern void sub_8049BB0(s32, s32);
|
||||
extern s16 sub_8057600(void*, u32);
|
||||
|
||||
extern u8 *gUnknown_80FF678[];
|
||||
extern u8 *gUnknown_80FD0B8[];
|
||||
extern u8 *gUnknown_80FD0B4[];
|
||||
extern u8 *gUnknown_80FD454[];
|
||||
extern s16 gUnknown_80F4FC6;
|
||||
|
||||
struct Position_Alt
|
||||
{
|
||||
union PositionAlt
|
||||
{
|
||||
struct Position norm;
|
||||
u32 full_bits;
|
||||
} temp;
|
||||
};
|
||||
|
||||
// Array indices correspond to the current dungeon tileset.
|
||||
const u8 gDungeonCamouflageTypes[76] = {
|
||||
TYPE_WATER,
|
||||
|
|
@ -98,6 +141,156 @@ const u8 gDungeonCamouflageTypes[76] = {
|
|||
TYPE_ROCK
|
||||
};
|
||||
|
||||
bool8 sub_805C1E4(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_80522F4(pokemon, target, *gUnknown_80FD454);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_805C1F8(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8077BB4(pokemon, target, 1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805C208(struct DungeonEntity *param_1,struct DungeonEntity *param_2,struct PokemonMove *param_3,u32 param_4)
|
||||
{
|
||||
u32 uVar3;
|
||||
u8 local_24;
|
||||
|
||||
local_24 = 0;
|
||||
uVar3 = GetSizeOrbDmg(param_2->entityData->transformSpecies);
|
||||
sub_806F370(param_1,param_2,uVar3,1,&local_24,GetMoveType(param_3),sub_8057600(param_3,param_4),0,1,0);
|
||||
|
||||
local_24 = local_24 == 0;
|
||||
return local_24;
|
||||
}
|
||||
|
||||
bool8 sub_805C288(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8078A58(pokemon, target, gUnknown_80F4FC6, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805C2A0(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_807DC68(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 FillInOrbAction(struct DungeonEntity *pokemon,struct DungeonEntity *target)
|
||||
{
|
||||
struct MapTile *tileToFill;
|
||||
struct DungeonEntityData *iVar5;
|
||||
int y;
|
||||
bool8 filledInTile;
|
||||
int x;
|
||||
u16 cast_x;
|
||||
u32 cast_y;
|
||||
struct Position_Alt tileCoords;
|
||||
|
||||
filledInTile = FALSE;
|
||||
iVar5 = target->entityData;
|
||||
if (IsBossBattle()) {
|
||||
SendMessage(pokemon,*gUnknown_80FD0B8);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Calculate the coordinates of the tile in front of the user
|
||||
cast_x = target->posWorld.x + gAdjacentTileOffsets[iVar5->action.facingDir].x;
|
||||
tileCoords.temp.full_bits = (tileCoords.temp.full_bits & 0xffff0000) | cast_x;
|
||||
|
||||
cast_y = ((u16)(target->posWorld.y + gAdjacentTileOffsets[iVar5->action.facingDir].y)) << 0x10;
|
||||
tileCoords.temp.full_bits = (tileCoords.temp.full_bits & 0x0000ffff) | cast_y;
|
||||
|
||||
sub_8042A54((struct Position *)&tileCoords);
|
||||
tileToFill = GetMapTile_2(tileCoords.temp.norm.x,tileCoords.temp.norm.y);
|
||||
if ((tileToFill->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)) == TILE_TYPE_LIQUID) {
|
||||
tileToFill->tileType = (tileToFill->tileType & ~(TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)) | TILE_TYPE_FLOOR;
|
||||
|
||||
for(y = -1; y < 2; y++)
|
||||
for(x = -1; x < 2; x++)
|
||||
sub_80498A8(tileCoords.temp.norm.x + x, tileCoords.temp.norm.y + y);
|
||||
filledInTile = TRUE;
|
||||
sub_806CF60();
|
||||
}
|
||||
|
||||
for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++)
|
||||
for(x = 0; x < DUNGEON_MAX_SIZE_X; x++)
|
||||
sub_8049BB0(x,y);
|
||||
|
||||
if (filledInTile) {
|
||||
sub_8042A64((struct Position *)&tileCoords);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FD0B4);
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FD0B8);
|
||||
}
|
||||
sub_8040A84();
|
||||
sub_8049ED4();
|
||||
return filledInTile;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_805C3DC(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
u32 var;
|
||||
var = (target->entityData->isEnemy ? 2 : 1);
|
||||
sub_807FC3C(&target->posWorld, 0x14, var);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805C3F8(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
struct ItemSlot stack;
|
||||
struct Position posStruct = target->posWorld;
|
||||
|
||||
if(target->entityData->clientType != CLIENT_TYPE_NONE)
|
||||
{
|
||||
sub_80522F4(pokemon, target, *gUnknown_80FF678);
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
target->visible = FALSE;
|
||||
sub_8045C28(&stack, sub_803D73C(0), 0);
|
||||
sub_80464C8(pokemon, &posStruct, &stack);
|
||||
sub_8068FE0(target, 0x218, pokemon);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_805C45C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_807F43C(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805C468(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8078F50(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805C474(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8077E4C(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805C480(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8079570(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805C48C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_80795C4(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct PokemonMove *move)
|
||||
{
|
||||
struct DungeonEntityData *pokemonData = pokemon->entityData;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,11 @@
|
|||
#include "constants/weather.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_random.h"
|
||||
|
||||
extern void TriggerWeatherAbilities(void);
|
||||
extern void sub_807EAA0(u32, u32);
|
||||
void sub_807E5E4(u8);
|
||||
|
||||
u8 GetWeather(struct DungeonEntity* pokemon)
|
||||
{
|
||||
|
|
@ -14,3 +19,39 @@ u8 GetWeather(struct DungeonEntity* pokemon)
|
|||
}
|
||||
return gDungeonGlobalData->weather;
|
||||
}
|
||||
|
||||
void sub_807E5AC(void)
|
||||
{
|
||||
u8 weather;
|
||||
weather = gDungeonGlobalData->unk1C578;
|
||||
if(weather == WEATHER_RANDOM)
|
||||
weather = DungeonRandomCapped(WEATHER_RANDOM);
|
||||
sub_807E5E4(weather);
|
||||
TriggerWeatherAbilities();
|
||||
sub_807EAA0(0, 1);
|
||||
}
|
||||
|
||||
void sub_807E5E4(u8 weather)
|
||||
{
|
||||
int index;
|
||||
u8 *preload;
|
||||
|
||||
gDungeonGlobalData->unkE265 = weather;
|
||||
gDungeonGlobalData->weather = gDungeonGlobalData->unkE265;
|
||||
gDungeonGlobalData->unkE279 = 0;
|
||||
for(index = 0; index < 8; index++) {
|
||||
gDungeonGlobalData->unkE267[index] = 0;
|
||||
gDungeonGlobalData->startingWeather[index] = 0;
|
||||
}
|
||||
preload = &gDungeonGlobalData->weatherDamageTimer;
|
||||
index = 0;
|
||||
*preload = 9;
|
||||
gDungeonGlobalData->mudSportTurnsLeft = 0;
|
||||
gDungeonGlobalData->waterSportTurnsLeft = 0;
|
||||
for(index = 0; index < 0x100; index++)
|
||||
{
|
||||
gDungeonGlobalData->unk17C[index].unk0 = index;
|
||||
gDungeonGlobalData->unk17C[index].unk1 = index;
|
||||
gDungeonGlobalData->unk17C[index].unk2 = index;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
523
src/wonder_mail_2_1.c
Normal file
523
src/wonder_mail_2_1.c
Normal file
|
|
@ -0,0 +1,523 @@
|
|||
#include "global.h"
|
||||
#include "constants/mailbox.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
|
||||
|
||||
struct unkStruct_203B2E8
|
||||
{
|
||||
// size: 0xA8
|
||||
u8 unk0[MAX_ACCEPTED_JOBS];
|
||||
u32 unk8;
|
||||
u8 fillC[0x20 - 0xC];
|
||||
s16 unk20;
|
||||
s16 unk22;
|
||||
s16 unk24;
|
||||
s16 unk26;
|
||||
u16 unk28;
|
||||
u16 unk2A;
|
||||
u16 unk2C;
|
||||
u8 fill2E[0x3C - 0x2E];
|
||||
u32 unk3C;
|
||||
struct UnkTextStruct2 *unk40;
|
||||
struct UnkTextStruct2 unk44[4];
|
||||
u8 unkA4[4];
|
||||
};
|
||||
|
||||
struct unkStruct_203B2F0
|
||||
{
|
||||
// size: 0x1FC
|
||||
u32 unk0;
|
||||
u32 state;
|
||||
u8 unk8[0xC - 0x8];
|
||||
u8 unkC;
|
||||
u8 fillD[0x10 - 0xD];
|
||||
u32 unk10;
|
||||
u8 fill14[0x68 - 0x14];
|
||||
u32 unk68;
|
||||
u8 fill6C[0xBC - 0x6C];
|
||||
u8 unkBC[0x10C - 0xBC];
|
||||
struct MenuItem unk10C[8];
|
||||
struct MenuItem unk14C[8];
|
||||
u8 fill18C[0x19C - 0x18C];
|
||||
struct UnkTextStruct2 unk19C[4];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B2F0 *gUnknown_203B2F0;
|
||||
extern struct unkStruct_203B2E8* gUnknown_203B2E8;
|
||||
extern struct unkStruct_203B2E8* gUnknown_203B2E0;
|
||||
|
||||
u16 gUnknown_203B2EC;
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFCE4 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFCFC =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x18, 0x0E,
|
||||
0x0E, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const u8 gUnknown_80DFD14[] = "Job List";
|
||||
static const u8 wonder_mail_fill[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFD28 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFD40 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x06, 0x00,
|
||||
0x07, 0x03,
|
||||
0x03, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFD58 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x0f, 0x00,
|
||||
0x06, 0x03,
|
||||
0x03, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const u8 gUnknown_80DFD70[] = "Take Job";
|
||||
const u8 gUnknown_80DFD7C[] = "Suspend";
|
||||
static const u8 wonder_mail_fill0[] = "pksdir0";
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFD8C =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFDA4 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x02, 0x00,
|
||||
0x18, 0x0e,
|
||||
0x0e, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const u8 gUnknown_80DFDBC[] = "RESCUE EVENT";
|
||||
static const u8 wonder_mail_fill1[] = "pksdir0";
|
||||
|
||||
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
|
||||
extern void sub_802CAA4(void);
|
||||
extern u8 IsJobSlotEmpty(u8);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_8013C68(u32 *);
|
||||
extern void sub_80073E0(u32);
|
||||
extern struct WonderMail* GetJobSlotInfo(u8);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern void sub_803B35C(void *, u32 *);
|
||||
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
|
||||
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
|
||||
extern void sub_803B6D4(u32 *);
|
||||
|
||||
extern void sub_8013984(u32 *);
|
||||
extern void sub_802C6DC(void);
|
||||
extern void sub_802C750(void);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern s32 GetKeyPress(void *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013660(void *);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
extern void sub_8012D34(struct UnkTextStruct2 *, u32);
|
||||
extern bool8 sub_809658C(u8);
|
||||
extern void sub_802C910(u32);
|
||||
extern void sub_802CC00(void);
|
||||
extern void sub_802CC70(void);
|
||||
extern void sub_802CD38(void);
|
||||
extern void sub_802CDB8(void);
|
||||
extern void sub_802C928(void);
|
||||
extern void sub_802C9D8(void);
|
||||
extern void sub_8012D60(u8 *, struct MenuItem *, u32, u16 *, u32, u32);
|
||||
extern void sub_802DE84(u32 *);
|
||||
extern void sub_8012EA4(u8 *, u32);
|
||||
extern void sub_802CBAC(void);
|
||||
|
||||
s32 CountAcceptedJobs(void);
|
||||
bool8 HasNoAcceptedJobs(void);
|
||||
|
||||
s32 sub_802C474(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 counter = 0;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
if(!sub_809658C(index))
|
||||
{
|
||||
gUnknown_203B2E0->unk0[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
return counter;
|
||||
}
|
||||
|
||||
bool8 sub_802C4A4(void)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
if(!sub_809658C(index))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3)
|
||||
{
|
||||
if (HasNoAcceptedJobs()) {
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B2E8 = MemoryAlloc(sizeof(struct unkStruct_203B2E8),8);
|
||||
gUnknown_203B2E8->unk3C = param_1;
|
||||
gUnknown_203B2E8->unk40 = &gUnknown_203B2E8->unk44[param_1];
|
||||
sub_8006518(gUnknown_203B2E8->unk44);
|
||||
|
||||
gUnknown_203B2E8->unk44[gUnknown_203B2E8->unk3C] = gUnknown_80DFCFC;
|
||||
|
||||
gUnknown_203B2E8->unk40->unk14 = gUnknown_203B2E8->unkA4;
|
||||
if (param_2 != NULL) {
|
||||
gUnknown_203B2E8->unk44[gUnknown_203B2E8->unk3C].unk08 = *param_2;
|
||||
}
|
||||
sub_8012D34(gUnknown_203B2E8->unk40,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E8->unk44,1,1);
|
||||
sub_8013848(&gUnknown_203B2E8->unk8,CountAcceptedJobs(),param_3,param_1);
|
||||
gUnknown_203B2E8->unk20 = gUnknown_203B2EC;
|
||||
sub_8013984(&gUnknown_203B2E8->unk8);
|
||||
sub_802C6DC();
|
||||
sub_802C750();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802C598(u8 param_1)
|
||||
{
|
||||
if (param_1 == '\0') {
|
||||
sub_8013660(&gUnknown_203B2E8->unk8);
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
switch(GetKeyPress(&gUnknown_203B2E8->unk8))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
break;
|
||||
}
|
||||
if (sub_80138B8(&gUnknown_203B2E8->unk8, 1) != '\0') {
|
||||
sub_802C6DC();
|
||||
sub_802C750();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_802C620(void)
|
||||
{
|
||||
return gUnknown_203B2E8->unk0[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + gUnknown_203B2E8->unk20];
|
||||
}
|
||||
|
||||
void sub_802C640(u32 r0)
|
||||
{
|
||||
u8 r0_u8;
|
||||
r0_u8 = r0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E8->unk44, 0, 0);
|
||||
gUnknown_203B2E8->unk2A = CountAcceptedJobs();
|
||||
sub_8013984(&gUnknown_203B2E8->unk8);
|
||||
sub_802C6DC();
|
||||
sub_802C750();
|
||||
if(r0_u8)
|
||||
AddMenuCursorSprite(&gUnknown_203B2E8->unk8);
|
||||
}
|
||||
|
||||
void sub_802C688(void)
|
||||
{
|
||||
if(gUnknown_203B2E8 != NULL)
|
||||
{
|
||||
gUnknown_203B2EC = gUnknown_203B2E8->unk20;
|
||||
gUnknown_203B2E8->unk44[gUnknown_203B2E8->unk3C] = gUnknown_80DFCE4;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E8->unk44, 1, 1);
|
||||
MemoryFree(gUnknown_203B2E8);
|
||||
gUnknown_203B2E8 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_802C6DC(void)
|
||||
{
|
||||
asm_unified("\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0802C74C\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldrh r1, [r0, 0x28]\n"
|
||||
"\tadds r0, 0xA4\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldrh r1, [r0, 0x26]\n"
|
||||
"\tadds r0, 0xA5\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA6\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xA7\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0x22\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0x18\n"
|
||||
"\tbl sub_8009614\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tldr r3, [r2, 0x3C]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x52\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x3C]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x54\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x44\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0802C74C: .4byte gUnknown_203B2E8");
|
||||
|
||||
}
|
||||
|
||||
void sub_802C750(void)
|
||||
{
|
||||
struct WonderMail *uVar1;
|
||||
int iVar2;
|
||||
s32 r4;
|
||||
s32 r5;
|
||||
u32 auStack104 [18];
|
||||
u32 uStack32[4];
|
||||
|
||||
sub_8008C54(gUnknown_203B2E8->unk3C);
|
||||
sub_80073B8(gUnknown_203B2E8->unk3C);
|
||||
r4 = gUnknown_203B2E8->unk26 * 8;
|
||||
r5 = r4;
|
||||
r5 += 10;
|
||||
xxx_call_draw_string(r5,0,gUnknown_80DFD14,gUnknown_203B2E8->unk3C,0); // "Job List"
|
||||
r4 += 4;
|
||||
r5 = r4 + gUnknown_203B2E8->unkA4[2] * 8;
|
||||
sub_8012BC4(r5,0,gUnknown_203B2E8->unk26 + 1,2,7,gUnknown_203B2E8->unk3C);
|
||||
iVar2 = 0;
|
||||
|
||||
if(( iVar2 < gUnknown_203B2E8->unk22))
|
||||
do
|
||||
{
|
||||
uVar1 = GetJobSlotInfo(gUnknown_203B2E8->unk0[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + iVar2]);
|
||||
auStack104[0] = gUnknown_203B2E8->unk3C;
|
||||
uStack32[0] = sub_8013800(&gUnknown_203B2E8->unk8,iVar2);
|
||||
sub_803B35C(uVar1,auStack104);
|
||||
sub_803B6D4(auStack104);
|
||||
iVar2++;
|
||||
} while( iVar2 < gUnknown_203B2E8->unk22);
|
||||
sub_80073E0(gUnknown_203B2E8->unk3C);
|
||||
}
|
||||
|
||||
s32 CountAcceptedJobs(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 counter = 0;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
if(!IsJobSlotEmpty(index))
|
||||
{
|
||||
gUnknown_203B2E8->unk0[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
return counter;
|
||||
}
|
||||
|
||||
bool8 HasNoAcceptedJobs(void)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
|
||||
{
|
||||
if(!IsJobSlotEmpty(index))
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802C860(u32 r0)
|
||||
{
|
||||
if(HasNoAcceptedJobs())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203B2F0 = MemoryAlloc(sizeof(struct unkStruct_203B2F0), 0x8);
|
||||
gUnknown_203B2F0->unk68 = 0;
|
||||
gUnknown_203B2F0->unk0 = r0;
|
||||
sub_802C910(0);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802C898(void)
|
||||
{
|
||||
switch(gUnknown_203B2F0->state)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
sub_802CC00();
|
||||
break;
|
||||
case 2:
|
||||
sub_802CC70();
|
||||
break;
|
||||
case 3:
|
||||
sub_802CD38();
|
||||
break;
|
||||
case 4:
|
||||
sub_802CDB8();
|
||||
break;
|
||||
case 5:
|
||||
default:
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_802C8F4(void)
|
||||
{
|
||||
if(gUnknown_203B2F0 != NULL)
|
||||
{
|
||||
MemoryFree(gUnknown_203B2F0);
|
||||
gUnknown_203B2F0 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802C910(u32 newState)
|
||||
{
|
||||
gUnknown_203B2F0->state = newState;
|
||||
sub_802C928();
|
||||
sub_802C9D8();
|
||||
}
|
||||
|
||||
void sub_802C928(void)
|
||||
{
|
||||
s32 index;
|
||||
sub_8006518(gUnknown_203B2F0->unk19C);
|
||||
switch(gUnknown_203B2F0->state)
|
||||
{
|
||||
case 2:
|
||||
sub_802CAA4();
|
||||
gUnknown_203B2F0->unk19C[2] = gUnknown_80DFD40;
|
||||
sub_8012CAC(&gUnknown_203B2F0->unk19C[2], gUnknown_203B2F0->unk10C);
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B2F0->unk19C[3] = gUnknown_80DFD58;
|
||||
break;
|
||||
default:
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
gUnknown_203B2F0->unk19C[index] = gUnknown_80DFD28;
|
||||
}
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2F0->unk19C, 1, 1);
|
||||
}
|
||||
|
||||
void sub_802C9D8(void)
|
||||
{
|
||||
switch(gUnknown_203B2F0->state)
|
||||
{
|
||||
case 0:
|
||||
sub_802C4C8(0, 0, 4);
|
||||
break;
|
||||
case 1:
|
||||
sub_802C640(1);
|
||||
break;
|
||||
case 2:
|
||||
sub_802C750();
|
||||
sub_8012D60(gUnknown_203B2F0->fill6C, gUnknown_203B2F0->unk10C, 0, 0, gUnknown_203B2F0->unk68, 2);
|
||||
break;
|
||||
case 3:
|
||||
sub_802CBAC();
|
||||
sub_802C750();
|
||||
sub_8012EA4(gUnknown_203B2F0->fill6C, 0);
|
||||
sub_8012D60(gUnknown_203B2F0->unkBC, gUnknown_203B2F0->unk14C, 0, 0, 6, 3);
|
||||
break;
|
||||
case 4:
|
||||
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F0->unkC), &gUnknown_203B2F0->unk10);
|
||||
gUnknown_203B2F0->unk10 = 3;
|
||||
sub_802DE84(&gUnknown_203B2F0->unk10);
|
||||
break;
|
||||
case 5:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -45,9 +45,103 @@ struct unkStruct_203B2F8
|
|||
u32 unk1E4;
|
||||
};
|
||||
extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
|
||||
extern struct UnkTextStruct2 gUnknown_80DFE04;
|
||||
extern struct UnkTextStruct2 gUnknown_80DFE1C;
|
||||
extern struct UnkTextStruct2 gUnknown_80DFDD4;
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFDD4 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
// Unused
|
||||
const struct UnkTextStruct2 gUnknown_80DFDEC =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x03, 0x00,
|
||||
0x07, 0x03,
|
||||
0x03, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFE04 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x06, 0x00,
|
||||
0x07, 0x03,
|
||||
0x03, 0x00,
|
||||
NULL
|
||||
};
|
||||
const struct UnkTextStruct2 gUnknown_80DFE1C =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x0f, 0x00,
|
||||
0x07, 0x03,
|
||||
0x03, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
// Unused
|
||||
const struct UnkTextStruct2 gUnknown_80DFE34 =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x0f, 0x00,
|
||||
0x06, 0x03,
|
||||
0x03, 0x00,
|
||||
NULL
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFE4C[] = _(
|
||||
"Are you sure you want to replace the\n"
|
||||
"old {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} with the new one?");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFE9C[] = _(
|
||||
"This {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} has already been\n"
|
||||
"received.");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFED0[] = _(
|
||||
"This {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} has already been\n"
|
||||
"received.\n"
|
||||
"You may not receive the same one again.");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFF2C[] = _(
|
||||
"Only {COLOR_1 LIGHT_BLUE_2}one piece{END_COLOR_TEXT_1} of {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} can be held.\n"
|
||||
"Please receive it after completing any\n"
|
||||
"rescue mission in progress.");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80DFFA4[] =
|
||||
"The rescue team has quicksaved in\n"
|
||||
"a dungeon with a mission in progress.\n"
|
||||
"Please complete the mission first.";
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E0010[] =
|
||||
"The rescue team has quicksaved in\n"
|
||||
"a dungeon with a mission in progress.\n"
|
||||
"Mail cannot be deleted now.";
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E0074[] = _(
|
||||
"Received the {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1}!");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E0094[] = _(
|
||||
"Only {COLOR_1 LIGHT_BLUE_2}one piece{END_COLOR_TEXT_1} of {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1} can be held.\n"
|
||||
"Is it OK to replace the old {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1}\n"
|
||||
"with the new one?");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E0108[] = _(
|
||||
"Your {COLOR_1 LIGHT_BLUE_2}Job List{END_COLOR_TEXT_1} is full.\n"
|
||||
"Please select and delete unwanted mail.");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E014C[] = "New Mail";
|
||||
ALIGNED(4) const u8 gUnknown_80E0158[] = "Old Mail";
|
||||
static const u8 wonder_mail_3_fill[] = "pksdir0";
|
||||
|
||||
|
||||
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
|
||||
extern void sub_802D63C(void);
|
||||
extern void sub_802D5A4(void);
|
||||
|
|
@ -66,15 +160,6 @@ extern void sub_802DA84();
|
|||
extern void sub_802D1B8();
|
||||
extern void sub_802D2A8();
|
||||
|
||||
extern u8 gUnknown_80E0010[];
|
||||
extern u8 gUnknown_80DFFA4[];
|
||||
extern u8 gUnknown_80DFF2C[];
|
||||
extern u8 gUnknown_80DFED0[];
|
||||
extern u8 gUnknown_80DFE9C[];
|
||||
extern u8 gUnknown_80DFE4C[];
|
||||
extern u8 gUnknown_80E0108[];
|
||||
extern u8 gUnknown_80E0094[];
|
||||
extern u8 gUnknown_80E0074[];
|
||||
|
||||
extern u8 sub_80968B0(void *);
|
||||
extern u8 sub_8096F50(void *);
|
||||
|
|
@ -95,7 +180,7 @@ extern void sub_8097418(u32, u32);
|
|||
extern void sub_802D690(void);
|
||||
extern void sub_8096C80(void);
|
||||
extern void sub_8096D24(void);
|
||||
extern void sub_80141B4(u8 *, u32, u32, u32);
|
||||
extern void sub_80141B4(const u8 *, u32, u32, u32);
|
||||
extern void sub_8012D60(u8 *, struct MenuItem *, u32, u16 *, u32, u32);
|
||||
extern u8 *sub_8096DE8(void);
|
||||
extern void sub_8096A78(struct unkSubStruct_203B2F8 *);
|
||||
|
|
@ -208,128 +293,119 @@ void sub_802D2A8(void)
|
|||
{
|
||||
|
||||
switch(gUnknown_203B2F8->state) {
|
||||
case 0:
|
||||
if (sub_80968B0(gUnknown_203B2F8->unkC) != 0) {
|
||||
sub_802D1A0(3);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sub_8096F50(gUnknown_203B2F8->unkC) != 0) {
|
||||
sub_802D1A0(4);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) && (sub_8096C08(&gUnknown_203B2F8->unk10) != 0)) {
|
||||
if (sub_802DAA8() != 0) {
|
||||
sub_802D1A0(9);
|
||||
}
|
||||
else {
|
||||
sub_802D1A0(5);
|
||||
}
|
||||
case 0:
|
||||
if (sub_80968B0(gUnknown_203B2F8->unkC) != 0) {
|
||||
sub_802D1A0(3);
|
||||
}
|
||||
else {
|
||||
if (GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS) {
|
||||
else if (sub_8096F50(gUnknown_203B2F8->unkC) != 0) {
|
||||
sub_802D1A0(4);
|
||||
}
|
||||
else if ((gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) && (sub_8096C08(&gUnknown_203B2F8->unk10) != 0)) {
|
||||
if (sub_802DAA8() != 0) {
|
||||
sub_802D1A0(9);
|
||||
}
|
||||
else {
|
||||
sub_802D1A0(5);
|
||||
}
|
||||
}
|
||||
else if (GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS) {
|
||||
if (sub_802DADC() != 0) {
|
||||
sub_802D1A0(10);
|
||||
}
|
||||
else {
|
||||
sub_802D1A0(6);
|
||||
sub_802D1A0(6);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_802D1A0(8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sub_802D73C();
|
||||
sub_8014248(gUnknown_80DFE4C,0,gUnknown_203B2F8->unk70,gUnknown_203B2F8->unk158,0,4,0,0,0);
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80DFE9C,0,0,0x101);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80DFED0,0,0,0x101);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80DFF2C,0,0,0x101);
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80DFFA4,0,0,0x101);
|
||||
break;
|
||||
case 7:
|
||||
gUnknown_203B2F8->unk4 = 0xc;
|
||||
sub_80141B4(gUnknown_80E0010,0,0,0x101);
|
||||
break;
|
||||
case 8:
|
||||
gUnknown_203B2F8->unk8 = 1;
|
||||
sub_8096A78(gUnknown_203B2F8->unkC);
|
||||
sub_8096C80();
|
||||
sub_8096D24();
|
||||
if (gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) {
|
||||
MemoryCopy8(sub_8096DD8(),gUnknown_203B2F8->unkC->unk14,0x28);
|
||||
MemoryCopy8(sub_8096DE8(),gUnknown_203B2F8->unkC->unk18,0x78);
|
||||
}
|
||||
switch(gUnknown_203B2F8->unkC->wonderMail.dungeon)
|
||||
{
|
||||
// NOTE: subtract 1 from each of the case as the input??
|
||||
case DUNGEON_ODDITY_CAVE: // 0x2B
|
||||
sub_8097418(0x2A, 1);
|
||||
break;
|
||||
case DUNGEON_REMAINS_ISLAND:
|
||||
sub_8097418(0x2B, 1);
|
||||
break;
|
||||
case DUNGEON_MARVELOUS_SEA:
|
||||
sub_8097418(0x2C, 1);
|
||||
break;
|
||||
case DUNGEON_FANTASY_STRAIT: // 0x2E
|
||||
sub_8097418(0x2D, 1);
|
||||
break;
|
||||
}
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80E0074,0,0,0x101);
|
||||
break;
|
||||
case 9:
|
||||
sub_802D690();
|
||||
sub_8014248(gUnknown_80E0094,0,gUnknown_203B2F8->unk74,gUnknown_203B2F8->unk158,0,4,0,0,0);
|
||||
break;
|
||||
case 10:
|
||||
gUnknown_203B2F8->unk4 = 0xb;
|
||||
sub_80141B4(gUnknown_80E0108,0,0,0x101);
|
||||
break;
|
||||
case 0xb:
|
||||
sub_802C4C8(0,0,4);
|
||||
break;
|
||||
case 0xc:
|
||||
sub_802C640(1);
|
||||
break;
|
||||
case 0xd:
|
||||
sub_802C750();
|
||||
sub_8012D60(gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198,
|
||||
gUnknown_203B2F8->unk6C,2);
|
||||
break;
|
||||
case 0xe:
|
||||
sub_802C750();
|
||||
sub_8012EA4(gUnknown_203B2F8->unk78,0);
|
||||
sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
|
||||
break;
|
||||
case 0xf:
|
||||
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
|
||||
gUnknown_203B2F8->unk14 = 3;
|
||||
sub_802DE84(&gUnknown_203B2F8->unk14);
|
||||
break;
|
||||
case 0x10:
|
||||
sub_803B35C(gUnknown_203B2F8->unkC,&gUnknown_203B2F8->unk14);
|
||||
gUnknown_203B2F8->unk14 = 3;
|
||||
gUnknown_203B2F8->unk58 = 0;
|
||||
gUnknown_203B2F8->unk64 = gUnknown_203B2F8->unkC->unk18;
|
||||
sub_802DE84(&gUnknown_203B2F8->unk14);
|
||||
else
|
||||
sub_802D1A0(8);
|
||||
break;
|
||||
case 1:
|
||||
sub_802D73C();
|
||||
sub_8014248(gUnknown_80DFE4C,0,gUnknown_203B2F8->unk70,gUnknown_203B2F8->unk158,0,4,0,0,0);
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80DFE9C,0,0,0x101);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80DFED0,0,0,0x101);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80DFF2C,0,0,0x101);
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80DFFA4,0,0,0x101);
|
||||
break;
|
||||
case 7:
|
||||
gUnknown_203B2F8->unk4 = 0xc;
|
||||
sub_80141B4(gUnknown_80E0010,0,0,0x101);
|
||||
break;
|
||||
case 8:
|
||||
gUnknown_203B2F8->unk8 = 1;
|
||||
sub_8096A78(gUnknown_203B2F8->unkC);
|
||||
sub_8096C80();
|
||||
sub_8096D24();
|
||||
if (gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) {
|
||||
MemoryCopy8(sub_8096DD8(),gUnknown_203B2F8->unkC->unk14,0x28);
|
||||
MemoryCopy8(sub_8096DE8(),gUnknown_203B2F8->unkC->unk18,0x78);
|
||||
}
|
||||
switch(gUnknown_203B2F8->unkC->wonderMail.dungeon)
|
||||
{
|
||||
// NOTE: subtract 1 from each of the case as the input??
|
||||
case DUNGEON_ODDITY_CAVE: // 0x2B
|
||||
sub_8097418(0x2A, 1);
|
||||
break;
|
||||
case DUNGEON_REMAINS_ISLAND:
|
||||
sub_8097418(0x2B, 1);
|
||||
break;
|
||||
case DUNGEON_MARVELOUS_SEA:
|
||||
sub_8097418(0x2C, 1);
|
||||
break;
|
||||
case DUNGEON_FANTASY_STRAIT: // 0x2E
|
||||
sub_8097418(0x2D, 1);
|
||||
break;
|
||||
}
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
sub_80141B4(gUnknown_80E0074,0,0,0x101);
|
||||
break;
|
||||
case 9:
|
||||
sub_802D690();
|
||||
sub_8014248(gUnknown_80E0094,0,gUnknown_203B2F8->unk74,gUnknown_203B2F8->unk158,0,4,0,0,0);
|
||||
break;
|
||||
case 10:
|
||||
gUnknown_203B2F8->unk4 = 0xb;
|
||||
sub_80141B4(gUnknown_80E0108,0,0,0x101);
|
||||
break;
|
||||
case 0xb:
|
||||
sub_802C4C8(0,0,4);
|
||||
break;
|
||||
case 0xc:
|
||||
sub_802C640(1);
|
||||
break;
|
||||
case 0xd:
|
||||
sub_802C750();
|
||||
sub_8012D60(gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198,
|
||||
gUnknown_203B2F8->unk6C,2);
|
||||
break;
|
||||
case 0xe:
|
||||
sub_802C750();
|
||||
sub_8012EA4(gUnknown_203B2F8->unk78,0);
|
||||
sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
|
||||
break;
|
||||
case 0xf:
|
||||
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
|
||||
gUnknown_203B2F8->unk14 = 3;
|
||||
sub_802DE84(&gUnknown_203B2F8->unk14);
|
||||
break;
|
||||
case 0x10:
|
||||
sub_803B35C(gUnknown_203B2F8->unkC,&gUnknown_203B2F8->unk14);
|
||||
gUnknown_203B2F8->unk14 = 3;
|
||||
gUnknown_203B2F8->unk58 = 0;
|
||||
gUnknown_203B2F8->unk64 = gUnknown_203B2F8->unkC->unk18;
|
||||
sub_802DE84(&gUnknown_203B2F8->unk14);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,43 +43,68 @@ struct unkStruct_203B300
|
|||
};
|
||||
|
||||
extern struct unkStruct_203B300 *gUnknown_203B300;
|
||||
extern u8 gUnknown_202E5D8[];
|
||||
extern u8 gUnknown_202E1C8[];
|
||||
extern u8 gUnknown_202DE58[];
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80E016C =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
NULL
|
||||
};
|
||||
extern struct UnkTextStruct2 gUnknown_80E0248;
|
||||
extern struct UnkTextStruct2 gUnknown_80E0264;
|
||||
extern struct UnkTextStruct2 gUnknown_80E016C;
|
||||
|
||||
ALIGNED(4) const u8 gWonderMailClientThanksForRescuingMe[] = " Thank you for rescuing me!";
|
||||
|
||||
ALIGNED(4) const u8 gWonderMailClientThanksForRescuingThem[] = _(
|
||||
" Thank you for rescuing\n"
|
||||
"{COLOR_1 CYAN}{ARG_POKEMON_1}{END_COLOR_TEXT_1}!");
|
||||
|
||||
ALIGNED(4) const u8 gWonderMailClientEscorted[] = _(
|
||||
" Thank you for escorting me\n"
|
||||
"to {COLOR_1 CYAN}{ARG_POKEMON_1}{END_COLOR_TEXT_1}! ");
|
||||
|
||||
ALIGNED(4) const u8 gWonderMailClientItemDelivered1[] = _(
|
||||
" Thank you for delivering\n"
|
||||
"the {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1}!");
|
||||
|
||||
ALIGNED(4) const u8 gWonderMailClientItemDelivered2[] = _(
|
||||
" Thank you for getting me\n"
|
||||
"the {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1}!");
|
||||
|
||||
static const u8 wonder_mail_802DF88_fill[] = "pksdir0";
|
||||
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueDescription(u32 *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 sub_8012A64(void *, u32);
|
||||
void sub_802DF6C(void);
|
||||
void sub_802DF88(void);
|
||||
void sub_802DF14(void);
|
||||
void sub_801317C(void);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_802DC28(u32);
|
||||
extern void sub_802F2C0(void);
|
||||
extern void sub_802DC28(u32);
|
||||
extern u32 sub_802F298(void);
|
||||
extern u8 gUnknown_202E5D8[];
|
||||
extern u8 gUnknown_202E1C8[];
|
||||
extern u8 gUnknown_202DE58[];
|
||||
|
||||
extern u8 gWonderMailClientThanksForRescuingMe[];
|
||||
extern u8 gWonderMailClientThanksForRescuingThem[];
|
||||
extern u8 gWonderMailClientEscorted[];
|
||||
extern u8 gWonderMailClientItemDelivered1[];
|
||||
extern u8 gWonderMailClientItemDelivered2[];
|
||||
extern void sub_802F204(u32 *, u32);
|
||||
extern void sub_80141B4(u8 *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern void sub_80141B4(const u8 *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern void sub_802DC40(void);
|
||||
extern void sub_802DC9C(void);
|
||||
void sub_802DE44(void);
|
||||
void sub_802DE60(void);
|
||||
struct WonderMail *GetJobSlotInfo(u8);
|
||||
extern void sub_8096AF8(u8 *, u32, u32);
|
||||
extern void sub_8096EEC(void);
|
||||
extern void sub_803C21C(struct WonderMail *, u32 *);
|
||||
|
||||
void sub_802DE44(void);
|
||||
void sub_802DE60(void);
|
||||
void sub_802DF6C(void);
|
||||
void sub_802DF88(void);
|
||||
void sub_802DF14(void);
|
||||
void sub_801317C(void);
|
||||
|
||||
u32 sub_802DB28(u8 jobSlot, u8 param_2)
|
||||
{
|
||||
char local_18 [8];
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user