Merge pull request #101 from SethBarberee/decomp_mar_2022

Decomp March - April 2022
This commit is contained in:
Seth Barberee 2022-05-07 10:43:27 -07:00 committed by GitHub
commit 6c229b03f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
76 changed files with 4895 additions and 6420 deletions

View File

@ -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}

View File

@ -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}

View File

@ -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:

View File

@ -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

View File

@ -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}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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:

View File

@ -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

View File

@ -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:

View File

@ -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

File diff suppressed because it is too large Load Diff

759
asm/wonder_mail_802C860.s Normal file
View 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

View File

@ -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
@

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -1,6 +0,0 @@
#ifndef GUARD_DUNGEON_RANDOM_1_H
#define GUARD_DUNGEON_RANDOM_1_H
bool8 RollPercentChance(s32 percentChance);
#endif

View File

@ -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

View File

@ -4,5 +4,6 @@
#include "dungeon_entity.h"
bool8 IsMovingClient(struct DungeonEntity *entity);
void ShiftCameraToPosition(struct Position32 *posStruct, s32 cameraSteps);
#endif

View File

@ -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

View File

@ -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*);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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;
}
}
}

View File

@ -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;
}
}

View File

@ -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
View 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);
}

View File

@ -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);

View File

@ -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;
}

File diff suppressed because it is too large Load Diff

11
src/code_807E5AC.c Normal file
View 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;
}

View File

@ -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();

View File

@ -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)

View File

@ -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);
}

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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;
}

View File

@ -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];
}

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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)

View File

@ -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++;
}
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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;

View File

@ -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)
{

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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
View 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;
}
}

View File

@ -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;
}
}

View File

@ -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];