This commit is contained in:
AnonymousRandomPerson 2023-06-07 00:31:04 -04:00
commit a7d20ddced
133 changed files with 14448 additions and 19140 deletions

View File

@ -934,7 +934,7 @@ _08000DAC:
cmp r0, 0
beq _08000E00
ldrb r0, [r4]
bl sub_8095228
bl GetMailatIndex
adds r2, r0, 0
adds r0, 0x2C
ldrb r1, [r0]

View File

@ -1085,102 +1085,4 @@ _0800DA70: .4byte 0x04000004
_0800DA74: .4byte 0x05000004
thumb_func_end sub_800D9B8
thumb_func_start nullsub_189
nullsub_189:
bx lr
thumb_func_end nullsub_189
thumb_func_start nullsub_190
nullsub_190:
bx lr
thumb_func_end nullsub_190
thumb_func_start nullsub_191
nullsub_191:
bx lr
thumb_func_end nullsub_191
thumb_func_start nullsub_192
nullsub_192:
bx lr
thumb_func_end nullsub_192
thumb_func_start nullsub_193
nullsub_193:
bx lr
thumb_func_end nullsub_193
thumb_func_start nullsub_194
nullsub_194:
bx lr
thumb_func_end nullsub_194
thumb_func_start nullsub_195
nullsub_195:
bx lr
thumb_func_end nullsub_195
thumb_func_start sub_800DA94
sub_800DA94:
movs r0, 0
bx lr
thumb_func_end sub_800DA94
thumb_func_start sub_800DA98
sub_800DA98:
movs r0, 0
bx lr
thumb_func_end sub_800DA98
thumb_func_start sub_800DA9C
sub_800DA9C:
movs r0, 0
bx lr
thumb_func_end sub_800DA9C
thumb_func_start nullsub_196
nullsub_196:
bx lr
thumb_func_end nullsub_196
thumb_func_start nullsub_197
nullsub_197:
bx lr
thumb_func_end nullsub_197
thumb_func_start nullsub_198
nullsub_198:
bx lr
thumb_func_end nullsub_198
thumb_func_start sub_800DAAC
sub_800DAAC:
movs r0, 0
bx lr
thumb_func_end sub_800DAAC
thumb_func_start sub_800DAB0
sub_800DAB0:
movs r0, 0
bx lr
thumb_func_end sub_800DAB0
thumb_func_start sub_800DAB4
sub_800DAB4:
movs r0, 0
bx lr
thumb_func_end sub_800DAB4
thumb_func_start sub_800DAB8
sub_800DAB8:
movs r0, 0
bx lr
thumb_func_end sub_800DAB8
thumb_func_start sub_800DABC
sub_800DABC:
movs r0, 0
bx lr
thumb_func_end sub_800DABC
.align 2, 0 @ Don't pad with nop.

File diff suppressed because it is too large Load Diff

6641
asm/code_801EE10_mid.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -929,7 +929,7 @@ _0804326A:
beq _080432F4
mov r0, sp
ldrb r0, [r0]
bl sub_8095228
bl GetMailatIndex
adds r2, r0, 0
adds r2, 0x2C
movs r0, 0

View File

@ -1,726 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80487E0
sub_80487E0:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
mov r9, r0
mov r8, r1
lsls r3, r2, 24
ldr r5, [r1, 0x70]
ldr r4, _08048858
lsrs r3, 23
adds r0, r5, 0
adds r0, 0x5C
ldrb r0, [r0]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r3, r1
adds r0, r1, r4
movs r2, 0
ldrsh r6, [r0, r2]
adds r0, r5, 0
adds r0, 0x5D
ldrb r2, [r0]
lsls r0, r2, 3
adds r0, r2
lsls r0, 2
adds r3, r0
adds r4, r3, r4
movs r2, 0
ldrsh r0, [r4, r2]
adds r6, r0
ldr r0, _0804885C
adds r1, r0
movs r4, 0
ldrsh r2, [r1, r4]
adds r3, r0
movs r1, 0
ldrsh r0, [r3, r1]
adds r2, r0
movs r0, 0x1
str r0, [sp]
mov r0, r9
mov r1, r8
movs r3, 0
bl sub_8078B5C
ldrb r0, [r5, 0x6]
cmp r0, 0
bne _08048906
adds r0, r5, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _08048852
cmp r0, 0x47
bne _08048860
_08048852:
movs r0, 0x1
b _08048862
.align 2, 0
_08048858: .4byte gTypeGummiIQBoost
_0804885C: .4byte gUnknown_810A808
_08048860:
movs r0, 0
_08048862:
cmp r0, 0
bne _08048906
movs r2, 0xC
ldrsh r7, [r5, r2]
ldrh r0, [r5, 0xC]
adds r0, r6
strh r0, [r5, 0xC]
adds r2, r7, r6
lsls r0, 16
cmp r0, 0
bgt _0804887C
movs r0, 0x1
strh r0, [r5, 0xC]
_0804887C:
movs r4, 0xC
ldrsh r0, [r5, r4]
ldr r1, _080488A0
cmp r0, r1
ble _08048888
strh r1, [r5, 0xC]
_08048888:
movs r1, 0xC
ldrsh r0, [r5, r1]
cmp r7, r0
bne _080488A8
ldr r0, _080488A4
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
b _08048906
.align 2, 0
_080488A0: .4byte 0x000003e7
_080488A4: .4byte gUnknown_80FD644
_080488A8:
subs r0, r2, r7
movs r2, 0
cmp r0, 0x8
bgt _080488BE
movs r2, 0x1
cmp r0, 0x4
bgt _080488BE
movs r2, 0x3
cmp r0, 0x2
ble _080488BE
movs r2, 0x2
_080488BE:
movs r4, 0xC
ldrsh r0, [r5, r4]
subs r0, r7
movs r4, 0
cmp r0, 0x8
bgt _080488D8
movs r4, 0x1
cmp r0, 0x4
bgt _080488D8
movs r4, 0x3
cmp r0, 0x2
ble _080488D8
movs r4, 0x2
_080488D8:
ldr r1, _08048914
lsls r0, r2, 2
adds r0, r1
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
ldr r1, _08048918
lsls r0, r4, 2
adds r0, r1
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
mov r0, r8
bl LoadIQSkills
adds r0, r5, 0
adds r1, r7, 0
bl sub_806A7E8
_08048906:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08048914: .4byte gUnknown_80FD648
_08048918: .4byte gUnknown_80FD6E8
thumb_func_end sub_80487E0
thumb_func_start sub_804891C
sub_804891C:
push {lr}
movs r2, 0x3
bl RaiseAtkStatTarget
pop {r0}
bx r0
thumb_func_end sub_804891C
thumb_func_start sub_8048928
sub_8048928:
push {lr}
movs r2, 0x3
bl RaiseSpAtkStatTarget
pop {r0}
bx r0
thumb_func_end sub_8048928
thumb_func_start sub_8048934
sub_8048934:
push {lr}
movs r2, 0x3
bl RaiseDefStatTarget
pop {r0}
bx r0
thumb_func_end sub_8048934
thumb_func_start sub_8048940
sub_8048940:
push {lr}
movs r2, 0x3
bl RaiseSpDefStatTarget
pop {r0}
bx r0
thumb_func_end sub_8048940
thumb_func_start nullsub_94
nullsub_94:
bx lr
thumb_func_end nullsub_94
thumb_func_start sub_8048950
sub_8048950:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r10, r0
mov r8, r1
ldrb r0, [r1, 0x2]
bl GetItemMoveID
lsls r0, 16
lsrs r0, 16
mov r9, r0
mov r0, r8
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08048988
ldr r0, _08048984
_08048978:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
b _08048A58
.align 2, 0
_08048984: .4byte gUnknown_80FE3E8
_08048988:
mov r1, r8
ldrb r0, [r1, 0x2]
bl IsHMItem
lsls r0, 24
cmp r0, 0
beq _080489A0
ldr r0, _0804899C
b _08048978
.align 2, 0
_0804899C: .4byte gPtrCantUseInDungeonMessage
_080489A0:
movs r7, 0
_080489A2:
ldr r0, _080489FC
ldr r0, [r0]
lsls r1, r7, 2
ldr r2, _08048A00
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08048A12
ldr r6, [r4, 0x70]
movs r0, 0x2
ldrsh r1, [r6, r0]
mov r0, r9
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 _080489DC
movs r5, 0
_080489DC:
adds r0, r6, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _080489E8
movs r5, 0
_080489E8:
adds r0, r6, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _080489F6
cmp r0, 0x47
bne _08048A04
_080489F6:
movs r0, 0x1
b _08048A06
.align 2, 0
_080489FC: .4byte gDungeon
_08048A00: .4byte 0x0001357c
_08048A04:
movs r0, 0
_08048A06:
cmp r0, 0
beq _08048A0C
movs r5, 0
_08048A0C:
ldr r1, _08048A50
adds r0, r6, r1
strb r5, [r0]
_08048A12:
adds r7, 0x1
cmp r7, 0x3
ble _080489A2
movs r0, 0
movs r1, 0x1
bl DrawFieldGiveItemMenu
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08048A58
mov r0, r10
mov r1, r8
bl sub_804245C
adds r0, r4, 0
mov r1, r9
bl sub_8072938
lsls r0, 24
cmp r0, 0
beq _08048A58
ldr r2, _08048A54
mov r0, r10
movs r1, 0
bl sub_8044E24
movs r0, 0x1
b _08048A5A
.align 2, 0
_08048A50: .4byte 0x00000157
_08048A54: .4byte 0x00000141
_08048A58:
movs r0, 0
_08048A5A:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8048950
thumb_func_start sub_8048A68
sub_8048A68:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
mov r9, r0
mov r8, r1
ldrb r1, [r1]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08048A90
ldr r0, _08048A8C
_08048A80:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
b _08048B8C
.align 2, 0
_08048A8C: .4byte gUnknown_80FE3E8
_08048A90:
ldr r0, _08048AA4
ldr r0, [r0]
ldr r1, _08048AA8
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _08048AB0
ldr r0, _08048AAC
b _08048A80
.align 2, 0
_08048AA4: .4byte gDungeon
_08048AA8: .4byte 0x0000065c
_08048AAC: .4byte gUnknown_80F9BD8
_08048AB0:
movs r7, 0
_08048AB2:
ldr r0, _08048B24
ldr r0, [r0]
lsls r1, r7, 2
ldr r2, _08048B28
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08048B4A
ldr r5, [r4, 0x70]
movs r6, 0x1
ldrb r0, [r5, 0xA]
cmp r0, 0x3
bhi _08048AF4
ldr r2, _08048B2C
ldrb r1, [r5, 0xA]
movs r0, 0x64
muls r1, r0
ldr r0, _08048B30
adds r1, r0
ldr r0, [r2]
adds r0, r1
movs r1, 0xA
ldrsh r0, [r0, r1]
bl sub_806A538
lsls r0, 24
cmp r0, 0
beq _08048AF6
_08048AF4:
movs r6, 0
_08048AF6:
adds r0, r4, 0
movs r1, 0
bl CannotMove
lsls r0, 24
cmp r0, 0
beq _08048B06
movs r6, 0
_08048B06:
adds r0, r5, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _08048B12
movs r6, 0
_08048B12:
adds r0, r5, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _08048B20
cmp r0, 0x47
bne _08048B34
_08048B20:
movs r0, 0x1
b _08048B36
.align 2, 0
_08048B24: .4byte gDungeon
_08048B28: .4byte 0x0001357c
_08048B2C: .4byte gRecruitedPokemonRef
_08048B30: .4byte 0x00008df8
_08048B34:
movs r0, 0
_08048B36:
cmp r0, 0
beq _08048B3C
movs r6, 0
_08048B3C:
ldrb r0, [r5, 0x7]
cmp r0, 0
beq _08048B44
movs r6, 0
_08048B44:
ldr r2, _08048B84
adds r0, r5, r2
strb r6, [r0]
_08048B4A:
adds r7, 0x1
cmp r7, 0x3
ble _08048AB2
movs r0, 0
movs r1, 0x1
bl DrawFieldGiveItemMenu
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08048B8C
mov r0, r9
mov r1, r8
bl sub_804245C
ldr r0, _08048B88
ldr r0, [r0]
adds r0, 0xBC
str r4, [r0]
movs r2, 0xA1
lsls r2, 1
mov r0, r9
movs r1, 0
bl sub_8044E24
movs r0, 0x1
b _08048B8E
.align 2, 0
_08048B84: .4byte 0x00000157
_08048B88: .4byte gDungeon
_08048B8C:
movs r0, 0
_08048B8E:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8048A68
thumb_func_start sub_8048B9C
sub_8048B9C:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x20
mov r9, r0
movs r0, 0
mov r8, r0
mov r2, r9
ldr r0, [r2, 0x70]
adds r6, r0, 0
adds r6, 0x44
ldrb r1, [r1]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08048BD4
ldr r0, _08048BD0
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
movs r0, 0
b _08048D40
.align 2, 0
_08048BD0: .4byte gUnknown_80FE3E8
_08048BD4:
movs r2, 0
_08048BD6:
ldr r0, _08048C28
ldr r0, [r0]
lsls r1, r2, 2
ldr r3, _08048C2C
adds r0, r3
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
str r2, [sp, 0x1C]
bl EntityExists
lsls r0, 24
ldr r2, [sp, 0x1C]
cmp r0, 0
beq _08048C3E
ldr r5, [r4, 0x70]
movs r7, 0x1
adds r0, r4, 0
movs r1, 0
bl CannotMove
lsls r0, 24
ldr r2, [sp, 0x1C]
cmp r0, 0
beq _08048C0A
movs r7, 0
_08048C0A:
adds r0, r5, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _08048C16
movs r7, 0
_08048C16:
adds r0, r5, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _08048C24
cmp r0, 0x47
bne _08048C30
_08048C24:
movs r0, 0x1
b _08048C32
.align 2, 0
_08048C28: .4byte gDungeon
_08048C2C: .4byte 0x0001357c
_08048C30:
movs r0, 0
_08048C32:
cmp r0, 0
beq _08048C38
movs r7, 0
_08048C38:
ldr r4, _08048C5C
adds r0, r5, r4
strb r7, [r0]
_08048C3E:
adds r2, 0x1
cmp r2, 0x3
ble _08048BD6
movs r0, 0
movs r1, 0x1
bl DrawFieldGiveItemMenu
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08048C60
movs r0, 0
b _08048D40
.align 2, 0
_08048C5C: .4byte 0x00000157
_08048C60:
add r1, sp, 0x4
adds r0, r6, 0
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
b _08048CE2
_08048C6E:
ldrh r0, [r6]
cmp r0, 0x1D
bne _08048C7C
adds r0, r6, 0
bl sub_80637E8
b _08048CE2
_08048C7C:
cmp r0, 0x20
bne _08048C9A
movs r0, 0
movs r1, 0
bl sub_803EAF0
adds r0, r6, 0
bl sub_8063BB4
movs r0, 0x1
bl sub_8044C10
movs r5, 0x1
mov r8, r5
b _08048CE2
_08048C9A:
cmp r0, 0x21
bne _08048CB6
movs r0, 0
movs r1, 0
bl sub_803EAF0
adds r0, r6, 0
movs r1, 0
bl sub_8063CF0
movs r0, 0x1
bl sub_8044C10
b _08048CE2
_08048CB6:
cmp r0, 0x1E
beq _08048CBE
cmp r0, 0x33
bne _08048CD0
_08048CBE:
movs r0, 0
movs r1, 0
bl sub_803EAF0
adds r0, r6, 0
movs r1, 0
bl sub_8063A70
b _08048CE2
_08048CD0:
cmp r0, 0x1F
bne _08048CE2
movs r0, 0
movs r1, 0
bl sub_803EAF0
adds r0, r6, 0
bl sub_8063B54
_08048CE2:
adds r0, r6, 0
bl ClearMonsterActionFields
movs r0, 0x1
str r0, [sp]
adds r0, r4, 0
movs r1, 0x1
movs r2, 0
movs r3, 0
bl sub_8062F90
lsls r0, 24
cmp r0, 0
beq _08048C6E
mov r0, r8
cmp r0, 0
beq _08048D38
ldr r0, _08048D34
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
cmp r0, 0x1
bne _08048C6E
adds r1, r6, 0
add r0, sp, 0x4
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
mov r0, r9
movs r1, 0
movs r2, 0x6E
bl sub_8044DF0
adds r0, r6, 0
movs r1, 0x2C
bl SetMonsterActionFields
b _08048D3E
.align 2, 0
_08048D34: .4byte gUnknown_80FECA0
_08048D38:
movs r0, 0x1
bl sub_8044C10
_08048D3E:
mov r0, r8
_08048D40:
add sp, 0x20
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8048B9C
.align 2, 0

View File

@ -5299,7 +5299,7 @@ _080551F2:
adds r1, r5, 0
mov r2, r8
mov r3, r9
bl sub_8057948
bl EncoreMoveAction
b _080554BA
_08055200:
adds r0, r7, 0

View File

@ -1,60 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_807034C
sub_807034C:
push {r4,lr}
adds r4, r1, 0
lsls r0, 16
asrs r2, r0, 16
ldr r0, [r4, 0x10]
cmp r0, 0
bne _08070398
ldrh r1, [r4]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08070398
adds r0, r2, 0
bl GetCrossableTerrain
lsls r0, 24
lsrs r2, r0, 24
ldrh r0, [r4]
movs r1, 0x3
ands r1, r0
cmp r2, 0x1
beq _08070388
cmp r2, 0x1
bgt _08070382
cmp r2, 0
beq _0807038C
b _08070390
_08070382:
cmp r2, 0x2
beq _08070394
b _08070390
_08070388:
cmp r1, 0x2
beq _08070390
_0807038C:
cmp r1, 0x1
bne _08070398
_08070390:
movs r0, 0
b _0807039A
_08070394:
cmp r1, 0
bne _08070390
_08070398:
movs r0, 0x1
_0807039A:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_807034C
.align 2, 0

View File

@ -5,124 +5,6 @@
.text
thumb_func_start sub_8078968
sub_8078968:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
adds r4, r1, 0
ldr r5, [r4, 0x70]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08078A4A
adds r0, r6, 0
adds r1, r4, 0
movs r2, 0x1
bl HasSafeguardStatus
lsls r0, 24
cmp r0, 0
bne _08078A4A
movs r3, 0
ldr r0, _080789E8
mov r8, r0
movs r1, 0x1
mov r12, r1
movs r0, 0x8C
lsls r0, 1
adds r2, r5, r0
movs r7, 0x10
_080789A2:
ldrb r1, [r2]
mov r0, r12
ands r0, r1
cmp r0, 0
beq _080789B4
adds r0, r7, 0
ands r0, r1
cmp r0, 0
bne _080789BC
_080789B4:
adds r2, 0x8
adds r3, 0x1
cmp r3, 0x3
ble _080789A2
_080789BC:
cmp r3, 0x4
bne _080789F0
movs r1, 0x9C
lsls r1, 1
adds r0, r5, r1
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080789F0
mov r0, r8
adds r1, r4, 0
movs r2, 0
bl SetMessageArgument
ldr r0, _080789EC
ldr r2, [r0]
adds r0, r6, 0
adds r1, r4, 0
bl sub_80522F4
b _08078A4A
.align 2, 0
_080789E8: .4byte gAvailablePokemonNames
_080789EC: .4byte gUnknown_80FBBD4
_080789F0:
mov r0, r8
adds r1, r4, 0
movs r2, 0
bl SetMessageArgument
adds r1, r5, 0
adds r1, 0xBC
ldrb r0, [r1]
cmp r0, 0x6
beq _08078A38
movs r0, 0x6
strb r0, [r1]
ldr r1, _08078A30
adds r0, r4, 0
movs r2, 0x1
bl CalculateStatusTurns
adds r0, 0x1
adds r1, r5, 0
adds r1, 0xBD
strb r0, [r1]
adds r0, r4, 0
bl nullsub_83
ldr r0, _08078A34
ldr r2, [r0]
adds r0, r6, 0
adds r1, r4, 0
bl sub_80522F4
b _08078A44
.align 2, 0
_08078A30: .4byte gUnknown_80F4EF4
_08078A34: .4byte gUnknown_80FBB94
_08078A38:
ldr r0, _08078A54
ldr r2, [r0]
adds r0, r6, 0
adds r1, r4, 0
bl sub_80522F4
_08078A44:
adds r0, r4, 0
bl EntityUpdateStatusSprites
_08078A4A:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08078A54: .4byte gUnknown_80FBBB8
thumb_func_end sub_8078968
thumb_func_start sub_8078A58
sub_8078A58:
push {r4-r7,lr}

View File

@ -6225,377 +6225,4 @@ _08083002:
bx r0
thumb_func_end sub_8082FE0
thumb_func_start nullsub_98
nullsub_98:
bx lr
thumb_func_end nullsub_98
thumb_func_start sub_808300C
sub_808300C:
push {lr}
movs r2, 0x8
bl sub_8082FA8
pop {r0}
bx r0
thumb_func_end sub_808300C
thumb_func_start sub_8083018
sub_8083018:
push {lr}
sub sp, 0xC
mov r1, sp
movs r2, 0x8
bl sub_8082FE0
mov r1, sp
movs r0, 0
strb r0, [r1, 0x8]
add sp, 0xC
pop {r0}
bx r0
thumb_func_end sub_8083018
thumb_func_start sub_8083030
sub_8083030:
push {lr}
sub sp, 0x4
mov r2, sp
strh r1, [r2]
mov r1, sp
movs r2, 0x2
bl sub_8082FA8
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_8083030
thumb_func_start sub_8083048
sub_8083048:
push {lr}
sub sp, 0x4
mov r2, sp
strh r1, [r2]
mov r1, sp
movs r2, 0x2
bl sub_8082FA8
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_8083048
thumb_func_start sub_8083060
sub_8083060:
push {lr}
sub sp, 0x4
mov r2, sp
strb r1, [r2]
mov r1, sp
movs r2, 0x1
bl sub_8082FA8
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_8083060
thumb_func_start sub_8083078
sub_8083078:
push {lr}
sub sp, 0x4
str r1, [sp]
mov r1, sp
movs r2, 0x4
bl sub_8082FA8
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_8083078
thumb_func_start sub_808308C
sub_808308C:
push {lr}
sub sp, 0x4
str r1, [sp]
mov r1, sp
movs r2, 0x4
bl sub_8082FA8
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_808308C
thumb_func_start sub_80830A0
sub_80830A0:
push {lr}
sub sp, 0x4
str r1, [sp]
mov r1, sp
movs r2, 0x4
bl sub_8082FA8
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_80830A0
thumb_func_start sub_80830B4
sub_80830B4:
push {lr}
sub sp, 0x4
adds r3, r0, 0
lsls r1, 24
movs r2, 0
cmp r1, 0
beq _080830C4
movs r2, 0xFF
_080830C4:
mov r0, sp
strb r2, [r0]
adds r0, r3, 0
mov r1, sp
movs r2, 0x1
bl sub_8082FA8
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_80830B4
thumb_func_start sub_80830D8
sub_80830D8:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r2, 0x1
bl sub_8082FA8
adds r4, 0x2
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x1
bl sub_8082FA8
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80830D8
thumb_func_start sub_80830F8
sub_80830F8:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r2, 0x1
bl sub_8082FA8
adds r1, r4, 0x4
adds r0, r5, 0
movs r2, 0x1
bl sub_8082FA8
adds r1, r4, 0
adds r1, 0x8
adds r0, r5, 0
movs r2, 0x1
bl sub_8082FA8
adds r4, 0xC
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x1
bl sub_8082FA8
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80830F8
thumb_func_start sub_808312C
sub_808312C:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r2, 0x1
bl sub_8082FA8
adds r4, 0x2
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x1
bl sub_8082FA8
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_808312C
thumb_func_start sub_808314C
sub_808314C:
push {lr}
bl sub_8082FA8
pop {r0}
bx r0
thumb_func_end sub_808314C
thumb_func_start sub_8083158
sub_8083158:
push {lr}
sub sp, 0x4
mov r1, sp
movs r2, 0x2
bl sub_8082FE0
mov r0, sp
ldrh r0, [r0]
add sp, 0x4
pop {r1}
bx r1
thumb_func_end sub_8083158
thumb_func_start sub_8083170
sub_8083170:
push {lr}
sub sp, 0x4
mov r1, sp
movs r2, 0x2
bl sub_8082FE0
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
add sp, 0x4
pop {r1}
bx r1
thumb_func_end sub_8083170
thumb_func_start sub_8083188
sub_8083188:
push {lr}
sub sp, 0x4
mov r1, sp
movs r2, 0x1
bl sub_8082FE0
mov r0, sp
ldrb r0, [r0]
add sp, 0x4
pop {r1}
bx r1
thumb_func_end sub_8083188
thumb_func_start sub_80831A0
sub_80831A0:
push {lr}
sub sp, 0x4
mov r1, sp
movs r2, 0x4
bl sub_8082FE0
ldr r0, [sp]
add sp, 0x4
pop {r1}
bx r1
thumb_func_end sub_80831A0
thumb_func_start sub_80831B4
sub_80831B4:
push {lr}
sub sp, 0x4
mov r1, sp
movs r2, 0x4
bl sub_8082FE0
ldr r0, [sp]
add sp, 0x4
pop {r1}
bx r1
thumb_func_end sub_80831B4
thumb_func_start sub_80831C8
sub_80831C8:
push {lr}
sub sp, 0x4
mov r1, sp
movs r2, 0x4
bl sub_8082FE0
ldr r0, [sp]
add sp, 0x4
pop {r1}
bx r1
thumb_func_end sub_80831C8
thumb_func_start sub_80831DC
sub_80831DC:
push {lr}
sub sp, 0x4
mov r1, sp
movs r2, 0x1
bl sub_8082FE0
mov r0, sp
ldrb r1, [r0]
negs r0, r1
orrs r0, r1
lsrs r0, 31
add sp, 0x4
pop {r1}
bx r1
thumb_func_end sub_80831DC
thumb_func_start sub_80831F8
sub_80831F8:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r0, 0
strh r0, [r4]
strh r0, [r4, 0x2]
adds r0, r5, 0
movs r2, 0x1
bl sub_8082FE0
adds r4, 0x2
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x1
bl sub_8082FE0
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80831F8
thumb_func_start sub_8083220
sub_8083220:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r0, 0
str r0, [r4]
str r0, [r4, 0x4]
str r0, [r4, 0x8]
str r0, [r4, 0xC]
adds r0, r5, 0
movs r2, 0x1
bl sub_8082FE0
adds r1, r4, 0x4
adds r0, r5, 0
movs r2, 0x1
bl sub_8082FE0
adds r1, r4, 0
adds r1, 0x8
adds r0, r5, 0
movs r2, 0x1
bl sub_8082FE0
adds r4, 0xC
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x1
bl sub_8082FE0
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8083220
thumb_func_start sub_8083260
sub_8083260:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r0, 0
strh r0, [r4]
strh r0, [r4, 0x2]
adds r0, r5, 0
movs r2, 0x1
bl sub_8082FE0
adds r4, 0x2
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x1
bl sub_8082FE0
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8083260
.align 2, 0

View File

@ -1,45 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80951BC
sub_80951BC:
push {r4,lr}
adds r4, r0, 0
bl FindOpenMailSlot
adds r2, r0, 0
movs r0, 0x1
negs r0, r0
cmp r2, r0
beq _080951F4
ldr r0, _080951F0
ldr r1, [r0]
lsls r0, r2, 1
adds r0, r2
lsls r0, 4
adds r1, r0
adds r0, r4, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
movs r0, 0x1
b _080951F6
.align 2, 0
_080951F0: .4byte gUnknown_203B480
_080951F4:
movs r0, 0
_080951F6:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80951BC
.align 2,0

View File

@ -1,78 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_803AEB0
sub_803AEB0:
push {r4-r6,lr}
ldr r4, _0803AEFC
ldr r0, [r4]
adds r0, 0xD0
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r4, [r4]
movs r3, 0
adds r1, r4, 0
adds r1, 0x90
ldr r0, _0803AF00
str r0, [r1]
adds r5, r4, 0
adds r5, 0x94
movs r0, 0x4
str r0, [r5]
movs r2, 0x1
adds r1, 0x8
ldr r0, _0803AF04
str r0, [r1]
adds r1, 0x4
movs r0, 0x5
str r0, [r1]
movs r6, 0x2
adds r0, r4, 0
adds r0, 0xA0
str r3, [r0]
adds r0, 0x4
str r2, [r0]
adds r0, 0x2C
ldrh r0, [r0]
cmp r0, 0
bne _0803AF08
ldr r0, [r5]
str r0, [r4, 0xC]
b _0803AF2C
.align 2, 0
_0803AEFC: .4byte gUnknown_203B3F8
_0803AF00: .4byte gDebug_LevelText
_0803AF04: .4byte gUnknown_80E7F2C
_0803AF08:
adds r3, 0x1
cmp r3, r6
bge _0803AF2C
ldr r0, _0803AF34
ldr r2, [r0]
lsls r1, r3, 1
adds r0, r2, 0
adds r0, 0xD0
adds r0, r1
ldrh r0, [r0]
cmp r0, 0
bne _0803AF08
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0x94
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0xC]
_0803AF2C:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803AF34: .4byte gUnknown_203B3F8
thumb_func_end sub_803AEB0
.align 2,0

View File

@ -298,178 +298,4 @@ _080276A0:
bx r0
thumb_func_end CreateFriendActionMenu
thumb_func_start sub_80276A8
sub_80276A8:
push {r4-r7,lr}
ldr r5, _0802775C
ldr r0, [r5]
movs r7, 0xB6
lsls r7, 1
adds r0, r7
movs r1, 0
movs r2, 0x14
bl MemoryFill16
ldr r2, [r5]
movs r0, 0x8E
lsls r0, 1
adds r1, r2, r0
ldr r0, _08027760
str r0, [r1]
movs r3, 0x90
lsls r3, 1
adds r1, r2, r3
movs r0, 0xA
str r0, [r1]
bl GetNumberOfFilledInventorySlots
cmp r0, 0
bne _080276E4
ldr r0, [r5]
adds r4, r7, 0
adds r0, r4
movs r1, 0x1
strh r1, [r0]
_080276E4:
ldr r4, [r5]
movs r2, 0x1
movs r0, 0x92
lsls r0, 1
adds r1, r4, r0
ldr r0, _08027764
ldr r0, [r0]
str r0, [r1]
movs r3, 0x94
lsls r3, 1
adds r1, r4, r3
movs r0, 0x4
str r0, [r1]
movs r6, 0x2
movs r0, 0x96
lsls r0, 1
adds r1, r4, r0
movs r0, 0
str r0, [r1]
movs r1, 0x98
lsls r1, 1
adds r0, r4, r1
str r2, [r0]
movs r3, 0
mov r12, r4
movs r4, 0x90
lsls r4, 1
add r4, r12
mov r0, r12
adds r2, r0, r7
_08027720:
ldrh r0, [r2]
cmp r0, 0
bne _08027730
ldr r1, [r4]
mov r7, r12
ldr r0, [r7, 0x74]
cmp r1, r0
beq _0802778E
_08027730:
adds r4, 0x8
adds r2, 0x2
adds r3, 0x1
cmp r3, r6
blt _08027720
movs r3, 0
cmp r3, r6
bge _0802778E
ldr r1, [r5]
movs r2, 0xB6
lsls r2, 1
adds r0, r1, r2
ldrh r0, [r0]
cmp r0, 0
bne _08027768
movs r3, 0x90
lsls r3, 1
adds r0, r1, r3
ldr r0, [r0]
str r0, [r1, 0x74]
b _0802778E
.align 2, 0
_0802775C: .4byte gUnknown_203B2BC
_08027760: .4byte gFriendActionGive
_08027764: .4byte gUnknown_80D4970
_08027768:
adds r3, 0x1
cmp r3, r6
bge _0802778E
ldr r2, [r5]
lsls r0, r3, 1
movs r4, 0xB6
lsls r4, 1
adds r1, r2, r4
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _08027768
lsls r0, r3, 3
movs r7, 0x90
lsls r7, 1
adds r1, r2, r7
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x74]
_0802778E:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80276A8
thumb_func_start sub_8027794
sub_8027794:
push {r4,lr}
ldr r4, _080277F0
ldr r0, [r4]
movs r1, 0xB6
lsls r1, 1
adds r0, r1
movs r1, 0
movs r2, 0x14
bl MemoryFill16
ldr r4, [r4]
movs r3, 0
movs r0, 0x8E
lsls r0, 1
adds r1, r4, r0
ldr r0, _080277F4
ldr r0, [r0]
str r0, [r1]
movs r0, 0x90
lsls r0, 1
adds r1, r4, r0
movs r0, 0x2
str r0, [r1]
movs r2, 0x1
movs r0, 0x92
lsls r0, 1
adds r1, r4, r0
ldr r0, _080277F8
ldr r0, [r0]
str r0, [r1]
movs r0, 0x94
lsls r0, 1
adds r1, r4, r0
movs r0, 0x3
str r0, [r1]
movs r1, 0x96
lsls r1, 1
adds r0, r4, r1
str r3, [r0]
adds r1, 0x4
adds r0, r4, r1
str r2, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080277F0: .4byte gUnknown_203B2BC
_080277F4: .4byte gUnknown_80D4920
_080277F8: .4byte gUnknown_80D4928
thumb_func_end sub_8027794
.align 2,0

File diff suppressed because it is too large Load Diff

View File

@ -848,7 +848,7 @@ _0803304A:
lsls r3, 2
adds r0, r3
ldrb r0, [r0]
bl sub_8095228
bl GetMailatIndex
ldr r1, [r6]
adds r1, 0x48
ldm r0!, {r2,r4,r5}
@ -907,7 +907,7 @@ _080330B4:
lsls r3, 2
adds r0, r1, r3
ldrb r0, [r0]
bl sub_8095228
bl GetMailatIndex
ldr r1, [r6]
adds r1, 0xA8
ldm r0!, {r2-r4}
@ -1202,7 +1202,7 @@ _0803331A:
lsls r2, 2
adds r0, r2
ldrb r0, [r0]
bl sub_8095228
bl GetMailatIndex
ldr r1, [r6]
adds r1, r4
ldm r0!, {r2,r3,r5}
@ -1420,7 +1420,7 @@ _0803349C:
bl GetMailIndex
lsls r0, 24
lsrs r0, 24
bl sub_8095228
bl GetMailatIndex
adds r2, r0, 0
adds r0, 0x22
ldrb r1, [r0]

View File

@ -1128,7 +1128,7 @@ _0809E524:
bl sub_8001658
lsls r0, 24
lsrs r0, 24
bl sub_8095228
bl GetMailatIndex
adds r4, r0, 0
movs r0, 0x6
bl sub_80023E4

View File

@ -1,274 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80175FC
sub_80175FC:
push {r4-r7,lr}
ldr r4, _0801767C
ldr r0, [r4]
adds r0, 0x4C
movs r1, 0
movs r2, 0xA
bl MemoryFill16
ldr r3, [r4]
movs r2, 0
ldr r0, _08017680
ldr r0, [r0]
str r0, [r3, 0x24]
movs r0, 0x2
str r0, [r3, 0x28]
movs r1, 0x1
ldr r0, _08017684
ldr r0, [r0]
str r0, [r3, 0x2C]
movs r0, 0x3
str r0, [r3, 0x30]
ldr r0, _08017688
ldr r0, [r0]
str r0, [r3, 0x34]
movs r0, 0x6
str r0, [r3, 0x38]
ldr r0, _0801768C
ldr r0, [r0]
str r0, [r3, 0x3C]
str r1, [r3, 0x40]
movs r6, 0x4
str r2, [r3, 0x44]
str r1, [r3, 0x48]
movs r5, 0
mov r12, r3
adds r3, 0x28
mov r2, r12
adds r2, 0x4C
_08017648:
ldrh r0, [r2]
cmp r0, 0
bne _08017658
ldr r1, [r3]
mov r7, r12
ldr r0, [r7, 0x18]
cmp r1, r0
beq _080176B2
_08017658:
adds r3, 0x8
adds r2, 0x2
adds r5, 0x1
cmp r5, r6
blt _08017648
movs r5, 0
cmp r5, r6
bge _080176B2
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x4C
ldrh r0, [r0]
cmp r0, 0
bne _08017690
ldr r0, [r1, 0x28]
str r0, [r1, 0x18]
b _080176B2
.align 2, 0
_0801767C: .4byte gUnknown_203B208
_08017680: .4byte gUnknown_80D4958
_08017684: .4byte gUnknown_80D4964
_08017688: .4byte gUnknown_80D4970
_0801768C: .4byte gUnknown_80D4934
_08017690:
adds r5, 0x1
cmp r5, r6
bge _080176B2
ldr r2, [r4]
lsls r0, r5, 1
adds r1, r2, 0
adds r1, 0x4C
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _08017690
lsls r0, r5, 3
adds r1, r2, 0
adds r1, 0x28
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x18]
_080176B2:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80175FC
thumb_func_start sub_80176B8
sub_80176B8:
push {r4-r7,lr}
ldr r4, _08017724
ldr r0, [r4]
adds r0, 0x4C
movs r1, 0
movs r2, 0xA
bl MemoryFill16
ldr r3, [r4]
movs r2, 0
ldr r0, _08017728
ldr r0, [r0]
str r0, [r3, 0x24]
movs r0, 0x2
str r0, [r3, 0x28]
movs r1, 0x1
ldr r0, _0801772C
ldr r0, [r0]
str r0, [r3, 0x2C]
movs r0, 0x6
str r0, [r3, 0x30]
movs r6, 0x2
str r2, [r3, 0x34]
str r1, [r3, 0x38]
movs r5, 0
mov r12, r3
adds r3, 0x28
mov r2, r12
adds r2, 0x4C
_080176F2:
ldrh r0, [r2]
cmp r0, 0
bne _08017702
ldr r1, [r3]
mov r7, r12
ldr r0, [r7, 0x1C]
cmp r1, r0
beq _08017752
_08017702:
adds r3, 0x8
adds r2, 0x2
adds r5, 0x1
cmp r5, r6
blt _080176F2
movs r5, 0
cmp r5, r6
bge _08017752
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x4C
ldrh r0, [r0]
cmp r0, 0
bne _08017730
ldr r0, [r1, 0x28]
str r0, [r1, 0x1C]
b _08017752
.align 2, 0
_08017724: .4byte gUnknown_203B208
_08017728: .4byte gUnknown_80D4958
_0801772C: .4byte gUnknown_80D4970
_08017730:
adds r5, 0x1
cmp r5, r6
bge _08017752
ldr r2, [r4]
lsls r0, r5, 1
adds r1, r2, 0
adds r1, 0x4C
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _08017730
lsls r0, r5, 3
adds r1, r2, 0
adds r1, 0x28
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x1C]
_08017752:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80176B8
thumb_func_start sub_8017758
sub_8017758:
push {r4-r7,lr}
ldr r4, _080177C4
ldr r0, [r4]
adds r0, 0x4C
movs r1, 0
movs r2, 0xA
bl MemoryFill16
ldr r3, [r4]
movs r2, 0
ldr r0, _080177C8
ldr r0, [r0]
str r0, [r3, 0x24]
movs r0, 0x3
str r0, [r3, 0x28]
movs r1, 0x1
ldr r0, _080177CC
ldr r0, [r0]
str r0, [r3, 0x2C]
movs r0, 0x6
str r0, [r3, 0x30]
movs r6, 0x2
str r2, [r3, 0x34]
str r1, [r3, 0x38]
movs r5, 0
mov r12, r3
adds r3, 0x28
mov r2, r12
adds r2, 0x4C
_08017792:
ldrh r0, [r2]
cmp r0, 0
bne _080177A2
ldr r1, [r3]
mov r7, r12
ldr r0, [r7, 0x20]
cmp r1, r0
beq _080177F2
_080177A2:
adds r3, 0x8
adds r2, 0x2
adds r5, 0x1
cmp r5, r6
blt _08017792
movs r5, 0
cmp r5, r6
bge _080177F2
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x4C
ldrh r0, [r0]
cmp r0, 0
bne _080177D0
ldr r0, [r1, 0x28]
str r0, [r1, 0x20]
b _080177F2
.align 2, 0
_080177C4: .4byte gUnknown_203B208
_080177C8: .4byte gUnknown_80D4964
_080177CC: .4byte gUnknown_80D4970
_080177D0:
adds r5, 0x1
cmp r5, r6
bge _080177F2
ldr r2, [r4]
lsls r0, r5, 1
adds r1, r2, 0
adds r1, 0x4C
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _080177D0
lsls r0, r5, 3
adds r1, r2, 0
adds r1, 0x28
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x20]
_080177F2:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8017758
.align 2,0

View File

@ -1,359 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80182E4
sub_80182E4:
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r0, 0
mov r8, r0
ldr r4, _080183DC
ldr r0, [r4]
adds r0, 0x60
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r1, [r4]
ldr r0, _080183E0
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x2
str r0, [r1, 0x24]
bl GetNumberOfFilledInventorySlots
cmp r0, 0
beq _0801831C
movs r0, 0
bl sub_801CF50
lsls r0, 24
cmp r0, 0
beq _08018324
_0801831C:
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
strh r1, [r0]
_08018324:
movs r1, 0x1
add r8, r1
ldr r4, _080183DC
ldr r2, [r4]
mov r0, r8
lsls r3, r0, 3
adds r0, r2, 0
adds r0, 0x20
adds r0, r3
ldr r1, _080183E4
ldr r1, [r1]
str r1, [r0]
adds r2, 0x24
adds r2, r3
movs r0, 0x3
str r0, [r2]
movs r0, 0x1
bl sub_801CF14
lsls r0, 24
cmp r0, 0
bne _08018358
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
ble _08018366
_08018358:
ldr r0, [r4]
mov r2, r8
lsls r1, r2, 1
adds r0, 0x60
adds r0, r1
movs r1, 0x1
strh r1, [r0]
_08018366:
movs r0, 0x1
add r8, r0
ldr r4, _080183DC
ldr r7, [r4]
mov r2, r8
lsls r1, r2, 3
adds r2, r7, 0
adds r2, 0x20
adds r3, r2, r1
ldr r0, _080183E8
ldr r0, [r0]
str r0, [r3]
adds r6, r7, 0
adds r6, 0x24
adds r1, r6, r1
movs r3, 0x1
str r3, [r1]
add r8, r3
mov r1, r8
lsls r0, r1, 3
adds r2, r0
movs r1, 0
str r1, [r2]
adds r0, r6, r0
str r3, [r0]
movs r5, 0
mov r12, r4
cmp r5, r8
bge _080183C0
adds r4, r7, 0
adds r2, r4, 0
adds r2, 0x60
adds r3, r6, 0
_080183A8:
ldrh r0, [r2]
cmp r0, 0
bne _080183B6
ldr r1, [r3]
ldr r0, [r4, 0x14]
cmp r1, r0
beq _08018410
_080183B6:
adds r2, 0x2
adds r3, 0x8
adds r5, 0x1
cmp r5, r8
blt _080183A8
_080183C0:
movs r5, 0
cmp r5, r8
bge _08018410
mov r2, r12
ldr r1, [r2]
adds r0, r1, 0
adds r0, 0x60
ldrh r0, [r0]
cmp r0, 0
bne _080183EC
ldr r0, [r1, 0x24]
str r0, [r1, 0x14]
b _08018410
.align 2, 0
_080183DC: .4byte gUnknown_203B20C
_080183E0: .4byte gUnknown_80D4958
_080183E4: .4byte gUnknown_80D4964
_080183E8: .4byte gUnknown_80D4934
_080183EC:
adds r5, 0x1
cmp r5, r8
bge _08018410
mov r0, r12
ldr r2, [r0]
lsls r0, r5, 1
adds r1, r2, 0
adds r1, 0x60
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _080183EC
lsls r0, r5, 3
adds r1, r2, 0
adds r1, 0x24
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x14]
_08018410:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80182E4
thumb_func_start sub_801841C
sub_801841C:
push {r4-r7,lr}
ldr r4, _080184A0
ldr r0, [r4]
adds r0, 0x60
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r1, [r4]
ldr r0, _080184A4
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x2
str r0, [r1, 0x24]
ldr r0, [r1, 0xC]
bl sub_801ADA0
lsls r0, 24
cmp r0, 0
bne _0801844C
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
strh r1, [r0]
_0801844C:
ldr r2, [r4]
movs r1, 0x1
ldr r0, _080184A8
ldr r0, [r0]
str r0, [r2, 0x28]
movs r0, 0x4
str r0, [r2, 0x2C]
movs r5, 0x2
movs r0, 0
str r0, [r2, 0x30]
str r1, [r2, 0x34]
movs r3, 0
adds r6, r4, 0
mov r12, r2
mov r4, r12
adds r4, 0x60
adds r2, 0x24
_0801846E:
ldrh r0, [r4]
cmp r0, 0
bne _0801847E
ldr r1, [r2]
mov r7, r12
ldr r0, [r7, 0x18]
cmp r1, r0
beq _080184CE
_0801847E:
adds r4, 0x2
adds r2, 0x8
adds r3, 0x1
cmp r3, r5
blt _0801846E
movs r3, 0
cmp r3, r5
bge _080184CE
ldr r1, [r6]
adds r0, r1, 0
adds r0, 0x60
ldrh r0, [r0]
cmp r0, 0
bne _080184AC
ldr r0, [r1, 0x24]
str r0, [r1, 0x18]
b _080184CE
.align 2, 0
_080184A0: .4byte gUnknown_203B20C
_080184A4: .4byte gUnknown_80D4958
_080184A8: .4byte gUnknown_80D4970
_080184AC:
adds r3, 0x1
cmp r3, r5
bge _080184CE
ldr r2, [r6]
lsls r0, r3, 1
adds r1, r2, 0
adds r1, 0x60
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _080184AC
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0x24
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x18]
_080184CE:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_801841C
thumb_func_start sub_80184D4
sub_80184D4:
push {r4-r7,lr}
ldr r4, _08018554
ldr r0, [r4]
adds r0, 0x60
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r1, [r4]
ldr r0, _08018558
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x3
str r0, [r1, 0x24]
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
ble _08018500
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
strh r1, [r0]
_08018500:
ldr r2, [r4]
movs r1, 0x1
ldr r0, _0801855C
ldr r0, [r0]
str r0, [r2, 0x28]
movs r0, 0x4
str r0, [r2, 0x2C]
movs r5, 0x2
movs r0, 0
str r0, [r2, 0x30]
str r1, [r2, 0x34]
movs r3, 0
adds r6, r4, 0
mov r12, r2
mov r4, r12
adds r4, 0x60
adds r2, 0x24
_08018522:
ldrh r0, [r4]
cmp r0, 0
bne _08018532
ldr r1, [r2]
mov r7, r12
ldr r0, [r7, 0x1C]
cmp r1, r0
beq _08018582
_08018532:
adds r4, 0x2
adds r2, 0x8
adds r3, 0x1
cmp r3, r5
blt _08018522
movs r3, 0
cmp r3, r5
bge _08018582
ldr r1, [r6]
adds r0, r1, 0
adds r0, 0x60
ldrh r0, [r0]
cmp r0, 0
bne _08018560
ldr r0, [r1, 0x24]
str r0, [r1, 0x1C]
b _08018582
.align 2, 0
_08018554: .4byte gUnknown_203B20C
_08018558: .4byte gUnknown_80D4964
_0801855C: .4byte gUnknown_80D4970
_08018560:
adds r3, 0x1
cmp r3, r5
bge _08018582
ldr r2, [r6]
lsls r0, r3, 1
adds r1, r2, 0
adds r1, 0x60
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _08018560
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0x24
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x1C]
_08018582:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80184D4
.align 2,0

View File

@ -755,275 +755,4 @@ _080194F0: .4byte gKecleonShopDialogue
_080194F4: .4byte 0x0000010d
thumb_func_end UpdateKecleonStoreDialogue
thumb_func_start sub_80194F8
sub_80194F8:
push {r4-r7,lr}
ldr r4, _08019580
ldr r0, [r4]
adds r0, 0x74
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r3, [r4]
movs r2, 0
ldr r0, _08019584
ldr r0, [r0]
str r0, [r3, 0x34]
movs r0, 0x2
str r0, [r3, 0x38]
movs r1, 0x1
ldr r0, _08019588
ldr r0, [r0]
str r0, [r3, 0x3C]
movs r0, 0x3
str r0, [r3, 0x40]
ldr r0, _0801958C
str r0, [r3, 0x44]
movs r0, 0x4
str r0, [r3, 0x48]
ldr r0, _08019590
ldr r0, [r0]
str r0, [r3, 0x4C]
movs r0, 0x7
str r0, [r3, 0x50]
ldr r0, _08019594
ldr r0, [r0]
str r0, [r3, 0x54]
str r1, [r3, 0x58]
movs r6, 0x5
str r2, [r3, 0x5C]
str r1, [r3, 0x60]
movs r5, 0
mov r12, r3
adds r3, 0x38
mov r2, r12
adds r2, 0x74
_0801954C:
ldrh r0, [r2]
cmp r0, 0
bne _0801955C
ldr r1, [r3]
mov r7, r12
ldr r0, [r7, 0x28]
cmp r1, r0
beq _080195BA
_0801955C:
adds r3, 0x8
adds r2, 0x2
adds r5, 0x1
cmp r5, r6
blt _0801954C
movs r5, 0
cmp r5, r6
bge _080195BA
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x74
ldrh r0, [r0]
cmp r0, 0
bne _08019598
ldr r0, [r1, 0x38]
str r0, [r1, 0x28]
b _080195BA
.align 2, 0
_08019580: .4byte gUnknown_203B210
_08019584: .4byte gUnknown_80D4978
_08019588: .4byte gUnknown_80D4984
_0801958C: .4byte gUnknown_80DB8A0
_08019590: .4byte gUnknown_80D4970
_08019594: .4byte gUnknown_80D4934
_08019598:
adds r5, 0x1
cmp r5, r6
bge _080195BA
ldr r2, [r4]
lsls r0, r5, 1
adds r1, r2, 0
adds r1, 0x74
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _08019598
lsls r0, r5, 3
adds r1, r2, 0
adds r1, 0x38
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x28]
_080195BA:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80194F8
thumb_func_start sub_80195C0
sub_80195C0:
push {r4-r7,lr}
ldr r4, _0801962C
ldr r0, [r4]
adds r0, 0x74
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r3, [r4]
movs r2, 0
ldr r0, _08019630
ldr r0, [r0]
str r0, [r3, 0x34]
movs r0, 0x2
str r0, [r3, 0x38]
movs r1, 0x1
ldr r0, _08019634
ldr r0, [r0]
str r0, [r3, 0x3C]
movs r0, 0x7
str r0, [r3, 0x40]
movs r6, 0x2
str r2, [r3, 0x44]
str r1, [r3, 0x48]
movs r5, 0
mov r12, r3
adds r3, 0x38
mov r2, r12
adds r2, 0x74
_080195FA:
ldrh r0, [r2]
cmp r0, 0
bne _0801960A
ldr r1, [r3]
mov r7, r12
ldr r0, [r7, 0x30]
cmp r1, r0
beq _0801965A
_0801960A:
adds r3, 0x8
adds r2, 0x2
adds r5, 0x1
cmp r5, r6
blt _080195FA
movs r5, 0
cmp r5, r6
bge _0801965A
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x74
ldrh r0, [r0]
cmp r0, 0
bne _08019638
ldr r0, [r1, 0x38]
str r0, [r1, 0x30]
b _0801965A
.align 2, 0
_0801962C: .4byte gUnknown_203B210
_08019630: .4byte gUnknown_80D4978
_08019634: .4byte gUnknown_80D4970
_08019638:
adds r5, 0x1
cmp r5, r6
bge _0801965A
ldr r2, [r4]
lsls r0, r5, 1
adds r1, r2, 0
adds r1, 0x74
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _08019638
lsls r0, r5, 3
adds r1, r2, 0
adds r1, 0x38
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x30]
_0801965A:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80195C0
thumb_func_start sub_8019660
sub_8019660:
push {r4-r7,lr}
ldr r4, _080196CC
ldr r0, [r4]
adds r0, 0x74
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r3, [r4]
movs r2, 0
ldr r0, _080196D0
ldr r0, [r0]
str r0, [r3, 0x34]
movs r0, 0x3
str r0, [r3, 0x38]
movs r1, 0x1
ldr r0, _080196D4
ldr r0, [r0]
str r0, [r3, 0x3C]
movs r0, 0x7
str r0, [r3, 0x40]
movs r6, 0x2
str r2, [r3, 0x44]
str r1, [r3, 0x48]
movs r5, 0
mov r12, r3
adds r3, 0x38
mov r2, r12
adds r2, 0x74
_0801969A:
ldrh r0, [r2]
cmp r0, 0
bne _080196AA
ldr r1, [r3]
mov r7, r12
ldr r0, [r7, 0x2C]
cmp r1, r0
beq _080196FA
_080196AA:
adds r3, 0x8
adds r2, 0x2
adds r5, 0x1
cmp r5, r6
blt _0801969A
movs r5, 0
cmp r5, r6
bge _080196FA
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x74
ldrh r0, [r0]
cmp r0, 0
bne _080196D8
ldr r0, [r1, 0x38]
str r0, [r1, 0x2C]
b _080196FA
.align 2, 0
_080196CC: .4byte gUnknown_203B210
_080196D0: .4byte gUnknown_80D4984
_080196D4: .4byte gUnknown_80D4970
_080196D8:
adds r5, 0x1
cmp r5, r6
bge _080196FA
ldr r2, [r4]
lsls r0, r5, 1
adds r1, r2, 0
adds r1, 0x74
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _080196D8
lsls r0, r5, 3
adds r1, r2, 0
adds r1, 0x38
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x2C]
_080196FA:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8019660
.align 2,0

View File

@ -1,271 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start CreateMailboxMenu
CreateMailboxMenu:
push {r4-r7,lr}
ldr r4, _0802E380
ldr r0, [r4]
adds r0, 0xFC
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r1, [r4]
adds r2, r1, 0
adds r2, 0xBC
ldr r0, _0802E384
str r0, [r2]
adds r1, 0xC0
movs r0, 0x2
str r0, [r1]
bl HasNoMailinMailbox
lsls r0, 24
cmp r0, 0
beq _0802E2E6
ldr r0, [r4]
adds r0, 0xFC
movs r1, 0x1
strh r1, [r0]
_0802E2E6:
movs r5, 0x1
ldr r1, [r4]
movs r6, 0x1
adds r2, r1, 0
adds r2, 0xC4
ldr r0, _0802E388
str r0, [r2]
adds r1, 0xC8
movs r0, 0x3
str r0, [r1]
bl HasNoAcceptedJobs
lsls r0, 24
cmp r0, 0
beq _0802E30A
ldr r0, [r4]
adds r0, 0xFE
strh r5, [r0]
_0802E30A:
ldr r1, [r4]
adds r2, r1, 0
adds r2, 0xCC
ldr r0, _0802E38C
str r0, [r2]
adds r1, 0xD0
movs r0, 0x4
str r0, [r1]
bl HasNoPKMNNews
lsls r0, 24
cmp r0, 0
beq _0802E32E
ldr r0, [r4]
movs r1, 0x80
lsls r1, 1
adds r0, r1
strh r6, [r0]
_0802E32E:
movs r5, 0x3
ldr r2, [r4]
adds r0, r2, 0
adds r0, 0xD4
movs r1, 0
str r1, [r0]
adds r0, 0x4
str r6, [r0]
movs r3, 0
adds r6, r4, 0
mov r12, r2
mov r4, r12
adds r4, 0xFC
adds r2, 0xC0
_0802E34A:
ldrh r0, [r4]
cmp r0, 0
bne _0802E35A
ldr r1, [r2]
mov r7, r12
ldr r0, [r7, 0x64]
cmp r1, r0
beq _0802E3B2
_0802E35A:
adds r4, 0x2
adds r2, 0x8
adds r3, 0x1
cmp r3, r5
blt _0802E34A
movs r3, 0
cmp r3, r5
bge _0802E3B2
ldr r1, [r6]
adds r0, r1, 0
adds r0, 0xFC
ldrh r0, [r0]
cmp r0, 0
bne _0802E390
adds r0, r1, 0
adds r0, 0xC0
ldr r0, [r0]
str r0, [r1, 0x64]
b _0802E3B2
.align 2, 0
_0802E380: .4byte gUnknown_203B304
_0802E384: .4byte gMailboxCheckMail
_0802E388: .4byte gMailboxJobList
_0802E38C: .4byte gMailboxPKMNNews
_0802E390:
adds r3, 0x1
cmp r3, r5
bge _0802E3B2
ldr r2, [r6]
lsls r0, r3, 1
adds r1, r2, 0
adds r1, 0xFC
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _0802E390
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0xC0
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x64]
_0802E3B2:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end CreateMailboxMenu
thumb_func_start CreateMailActionMenu
CreateMailActionMenu:
push {r4-r7,lr}
movs r5, 0
ldr r4, _0802E3F0
ldr r0, [r4]
ldrb r0, [r0, 0x8]
bl GetMailboxSlotInfo
adds r7, r0, 0
ldrb r0, [r7]
cmp r0, 0x1
bne _0802E3FC
ldr r2, [r4]
adds r1, r2, 0
adds r1, 0xBC
ldr r0, _0802E3F4
str r0, [r1]
adds r1, 0x4
movs r0, 0x6
str r0, [r1]
adds r1, 0x4
ldr r0, _0802E3F8
str r0, [r1]
adds r1, 0x4
movs r0, 0x7
str r0, [r1]
movs r5, 0x2
b _0802E44A
.align 2, 0
_0802E3F0: .4byte gUnknown_203B304
_0802E3F4: .4byte gMailActionStore
_0802E3F8: .4byte gMailActionRead
_0802E3FC:
ldr r1, [r4]
adds r2, r1, 0
adds r2, 0xBC
ldr r0, _0802E494
ldr r0, [r0]
str r0, [r2]
adds r1, 0xC0
movs r0, 0x5
str r0, [r1]
adds r0, r7, 0
bl IsMailinJobSlot
lsls r0, 24
cmp r0, 0
bne _0802E422
bl GetNumAcceptedJobs
cmp r0, 0x7
ble _0802E42C
_0802E422:
ldr r0, [r4]
adds r0, 0xC0
movs r1, 0x1
negs r1, r1
str r1, [r0]
_0802E42C:
adds r5, 0x1
ldr r4, _0802E498
ldr r2, [r4]
lsls r3, r5, 3
adds r0, r2, 0
adds r0, 0xBC
adds r0, r3
ldr r1, _0802E49C
ldr r1, [r1]
str r1, [r0]
adds r2, 0xC0
adds r2, r3
movs r0, 0x8
str r0, [r2]
adds r5, 0x1
_0802E44A:
mov r12, r4
mov r0, r12
ldr r4, [r0]
lsls r2, r5, 3
adds r0, r4, 0
adds r0, 0xBC
adds r0, r2
movs r1, 0
str r1, [r0]
adds r1, r4, 0
adds r1, 0xC0
adds r2, r1, r2
movs r0, 0x1
str r0, [r2]
movs r3, 0
cmp r3, r5
bge _0802E486
movs r6, 0x1
negs r6, r6
adds r2, r1, 0
_0802E472:
ldr r1, [r2]
cmp r1, r6
beq _0802E47E
ldr r0, [r4, 0x68]
cmp r1, r0
beq _0802E4A8
_0802E47E:
adds r2, 0x8
adds r3, 0x1
cmp r3, r5
blt _0802E472
_0802E486:
ldrb r0, [r7]
cmp r0, 0x1
bne _0802E4A0
mov r0, r12
ldr r1, [r0]
movs r0, 0x7
b _0802E4A6
.align 2, 0
_0802E494: .4byte gUnknown_80D4990
_0802E498: .4byte gUnknown_203B304
_0802E49C: .4byte gUnknown_80D4970
_0802E4A0:
mov r0, r12
ldr r1, [r0]
movs r0, 0x8
_0802E4A6:
str r0, [r1, 0x68]
_0802E4A8:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end CreateMailActionMenu
.align 2,0

View File

@ -116,7 +116,7 @@ _080374E4:
bl sub_8035D74
lsls r0, 24
lsrs r0, 24
bl sub_8095228
bl GetMailatIndex
ldr r3, _08037518
ldr r1, [r3]
movs r2, 0xE6
@ -154,7 +154,7 @@ _08037534:
bl sub_8035D74
lsls r0, 24
lsrs r0, 24
bl sub_8095228
bl GetMailatIndex
ldr r3, _08037568
ldr r1, [r3]
movs r2, 0x8B
@ -180,7 +180,7 @@ _0803756C:
bl sub_8035D74
lsls r0, 24
lsrs r0, 24
bl sub_8095228
bl GetMailatIndex
ldr r4, _080375CC
ldr r1, [r4]
movs r5, 0xA3
@ -1363,7 +1363,7 @@ _08037ED0:
bl GetMailIndex
lsls r0, 24
lsrs r0, 24
bl sub_8095228
bl GetMailatIndex
adds r4, r0, 0
adds r1, r4, 0
adds r0, r5, 0
@ -1434,7 +1434,7 @@ _08037F5E:
bl GetMailIndex
lsls r0, 24
lsrs r0, 24
bl sub_8095228
bl GetMailatIndex
adds r2, r0, 0
adds r1, r4, 0
ldm r1!, {r3-r5}

View File

@ -1,210 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start CreatePelipperBoardMenu
CreatePelipperBoardMenu:
push {r4-r7,lr}
ldr r4, _0802EBDC
ldr r0, [r4]
adds r0, 0xFC
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r1, [r4]
adds r2, r1, 0
adds r2, 0xBC
ldr r0, _0802EBE0
str r0, [r2]
adds r1, 0xC0
movs r0, 0x2
str r0, [r1]
bl HasNoPelipperBoardJobs
lsls r0, 24
cmp r0, 0
beq _0802EB66
ldr r0, [r4]
adds r0, 0xFC
movs r1, 0x1
strh r1, [r0]
_0802EB66:
movs r5, 0x1
ldr r1, [r4]
adds r2, r1, 0
adds r2, 0xC4
ldr r0, _0802EBE4
str r0, [r2]
adds r1, 0xC8
movs r0, 0x3
str r0, [r1]
bl HasNoAcceptedJobs
lsls r0, 24
cmp r0, 0
beq _0802EB88
ldr r0, [r4]
adds r0, 0xFE
strh r5, [r0]
_0802EB88:
movs r5, 0x2
ldr r2, [r4]
adds r1, r2, 0
adds r1, 0xCC
movs r0, 0
str r0, [r1]
adds r1, 0x4
movs r0, 0x1
str r0, [r1]
movs r3, 0
adds r6, r4, 0
mov r12, r2
mov r4, r12
adds r4, 0xFC
adds r2, 0xC0
_0802EBA6:
ldrh r0, [r4]
cmp r0, 0
bne _0802EBB6
ldr r1, [r2]
mov r7, r12
ldr r0, [r7, 0x64]
cmp r1, r0
beq _0802EC0A
_0802EBB6:
adds r4, 0x2
adds r2, 0x8
adds r3, 0x1
cmp r3, r5
blt _0802EBA6
movs r3, 0
cmp r3, r5
bge _0802EC0A
ldr r1, [r6]
adds r0, r1, 0
adds r0, 0xFC
ldrh r0, [r0]
cmp r0, 0
bne _0802EBE8
adds r0, r1, 0
adds r0, 0xC0
ldr r0, [r0]
str r0, [r1, 0x64]
b _0802EC0A
.align 2, 0
_0802EBDC: .4byte gPelipperBoard
_0802EBE0: .4byte gPelipperBoard_BulletinBoard
_0802EBE4: .4byte gPelipperBoard_JobList
_0802EBE8:
adds r3, 0x1
cmp r3, r5
bge _0802EC0A
ldr r2, [r6]
lsls r0, r3, 1
adds r1, r2, 0
adds r1, 0xFC
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _0802EBE8
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0xC0
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x64]
_0802EC0A:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end CreatePelipperBoardMenu
thumb_func_start sub_802EC10
sub_802EC10:
push {r4-r7,lr}
movs r6, 0
ldr r4, _0802ECA8
ldr r2, [r4]
adds r1, r2, 0
adds r1, 0xBC
ldr r0, _0802ECAC
ldr r0, [r0]
str r0, [r1]
adds r1, 0x4
movs r0, 0x4
str r0, [r1]
ldrb r0, [r2, 0x8]
bl GetPelipperBoardSlotInfo
bl IsMailinJobSlot
lsls r0, 24
cmp r0, 0
bne _0802EC40
bl GetNumAcceptedJobs
cmp r0, 0x7
ble _0802EC4A
_0802EC40:
ldr r0, [r4]
adds r0, 0xC0
movs r1, 0x1
negs r1, r1
str r1, [r0]
_0802EC4A:
adds r6, 0x1
ldr r4, _0802ECA8
ldr r5, [r4]
lsls r1, r6, 3
adds r2, r5, 0
adds r2, 0xBC
adds r3, r2, r1
ldr r0, _0802ECB0
ldr r0, [r0]
str r0, [r3]
adds r3, r5, 0
adds r3, 0xC0
adds r1, r3, r1
movs r0, 0x5
str r0, [r1]
adds r6, 0x1
lsls r1, r6, 3
adds r2, r1
movs r0, 0
str r0, [r2]
adds r1, r3, r1
movs r0, 0x1
str r0, [r1]
movs r2, 0
adds r7, r4, 0
cmp r2, r6
bge _0802EC9C
adds r4, r5, 0
movs r5, 0x1
negs r5, r5
adds r1, r3, 0
_0802EC88:
ldr r3, [r1]
cmp r3, r5
beq _0802EC94
ldr r0, [r4, 0x68]
cmp r3, r0
beq _0802ECA2
_0802EC94:
adds r1, 0x8
adds r2, 0x1
cmp r2, r6
blt _0802EC88
_0802EC9C:
ldr r1, [r7]
movs r0, 0x5
str r0, [r1, 0x68]
_0802ECA2:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802ECA8: .4byte gPelipperBoard
_0802ECAC: .4byte gUnknown_80D4990
_0802ECB0: .4byte gUnknown_80D4970
thumb_func_end sub_802EC10
.align 2,0

View File

@ -1,297 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_802D5A4
sub_802D5A4:
push {r4-r7,lr}
ldr r4, _0802D630
ldr r0, [r4]
movs r5, 0xCC
lsls r5, 1
adds r0, r5
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r0, [r4]
mov r12, r0
movs r3, 0
movs r1, 0x8C
lsls r1, 1
add r1, r12
ldr r0, _0802D634
ldr r0, [r0]
str r0, [r1]
movs r1, 0x8E
lsls r1, 1
add r1, r12
movs r0, 0x2
str r0, [r1]
movs r2, 0x1
movs r1, 0x90
lsls r1, 1
add r1, r12
ldr r0, _0802D638
ldr r0, [r0]
str r0, [r1]
movs r1, 0x92
lsls r1, 1
add r1, r12
movs r0, 0x5
str r0, [r1]
movs r7, 0x2
movs r0, 0x94
lsls r0, 1
add r0, r12
str r3, [r0]
movs r0, 0x96
lsls r0, 1
add r0, r12
str r2, [r0]
movs r6, 0
movs r3, 0x8E
lsls r3, 1
add r3, r12
mov r0, r12
adds r2, r0, r5
_0802D60A:
ldrh r0, [r2]
cmp r0, 0
bne _0802D61A
ldr r1, [r3]
mov r5, r12
ldr r0, [r5, 0x6C]
cmp r1, r0
beq _0802D62A
_0802D61A:
adds r3, 0x8
adds r2, 0x2
adds r6, 0x1
cmp r6, r7
blt _0802D60A
ldr r1, [r4]
movs r0, 0x2
str r0, [r1, 0x6C]
_0802D62A:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802D630: .4byte gUnknown_203B2F8
_0802D634: .4byte gUnknown_80D494C
_0802D638: .4byte gUnknown_80D4970
thumb_func_end sub_802D5A4
thumb_func_start sub_802D63C
sub_802D63C:
ldr r0, _0802D684
ldr r0, [r0]
mov r12, r0
movs r3, 0
movs r1, 0xAC
lsls r1, 1
add r1, r12
ldr r0, _0802D688
ldr r0, [r0]
str r0, [r1]
movs r1, 0xAE
lsls r1, 1
add r1, r12
movs r0, 0x3
str r0, [r1]
movs r2, 0x1
movs r1, 0xB0
lsls r1, 1
add r1, r12
ldr r0, _0802D68C
ldr r0, [r0]
str r0, [r1]
movs r1, 0xB2
lsls r1, 1
add r1, r12
movs r0, 0x4
str r0, [r1]
movs r0, 0xB4
lsls r0, 1
add r0, r12
str r3, [r0]
movs r0, 0xB6
lsls r0, 1
add r0, r12
str r2, [r0]
bx lr
.align 2, 0
_0802D684: .4byte gUnknown_203B2F8
_0802D688: .4byte gUnknown_80D4920
_0802D68C: .4byte gUnknown_80D4928
thumb_func_end sub_802D63C
thumb_func_start sub_802D690
sub_802D690:
push {r4,r5,lr}
ldr r2, _0802D728
ldr r0, [r2]
mov r12, r0
movs r4, 0
movs r1, 0xAC
lsls r1, 1
add r1, r12
ldr r0, _0802D72C
ldr r0, [r0]
str r0, [r1]
movs r1, 0xAE
lsls r1, 1
add r1, r12
movs r0, 0x3
str r0, [r1]
movs r3, 0x1
movs r1, 0xB0
lsls r1, 1
add r1, r12
ldr r0, _0802D730
ldr r0, [r0]
str r0, [r1]
movs r1, 0xB2
lsls r1, 1
add r1, r12
movs r0, 0x4
str r0, [r1]
movs r1, 0xB4
lsls r1, 1
add r1, r12
ldr r0, _0802D734
str r0, [r1]
movs r1, 0xB6
lsls r1, 1
add r1, r12
movs r0, 0x6
str r0, [r1]
movs r1, 0xB8
lsls r1, 1
add r1, r12
ldr r0, _0802D738
str r0, [r1]
movs r1, 0xBA
lsls r1, 1
add r1, r12
movs r0, 0x7
str r0, [r1]
movs r5, 0x4
movs r0, 0xBC
lsls r0, 1
add r0, r12
str r4, [r0]
movs r0, 0xBE
lsls r0, 1
add r0, r12
str r3, [r0]
movs r3, 0
mov r0, r12
ldr r4, [r0, 0x74]
movs r1, 0xAE
lsls r1, 1
add r1, r12
_0802D70E:
ldr r0, [r1]
cmp r0, r4
beq _0802D722
adds r1, 0x8
adds r3, 0x1
cmp r3, r5
blt _0802D70E
ldr r1, [r2]
movs r0, 0x4
str r0, [r1, 0x74]
_0802D722:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802D728: .4byte gUnknown_203B2F8
_0802D72C: .4byte gUnknown_80D4920
_0802D730: .4byte gUnknown_80D4928
_0802D734: .4byte gUnknown_80E014C
_0802D738: .4byte gUnknown_80E0158
thumb_func_end sub_802D690
thumb_func_start sub_802D73C
sub_802D73C:
push {r4,r5,lr}
ldr r3, _0802D7C0
ldr r0, [r3]
mov r12, r0
movs r4, 0
movs r1, 0xAC
lsls r1, 1
add r1, r12
ldr r0, _0802D7C4
ldr r0, [r0]
str r0, [r1]
movs r1, 0xAE
lsls r1, 1
add r1, r12
movs r0, 0x3
str r0, [r1]
movs r2, 0x1
movs r1, 0xB0
lsls r1, 1
add r1, r12
ldr r0, _0802D7C8
ldr r0, [r0]
str r0, [r1]
movs r1, 0xB2
lsls r1, 1
add r1, r12
movs r0, 0x4
str r0, [r1]
movs r1, 0xB4
lsls r1, 1
add r1, r12
ldr r0, _0802D7CC
str r0, [r1]
movs r1, 0xB6
lsls r1, 1
add r1, r12
movs r0, 0x6
str r0, [r1]
movs r5, 0x3
movs r0, 0xB8
lsls r0, 1
add r0, r12
str r4, [r0]
movs r0, 0xBA
lsls r0, 1
add r0, r12
str r2, [r0]
movs r2, 0
mov r0, r12
ldr r4, [r0, 0x70]
movs r1, 0xAE
lsls r1, 1
add r1, r12
_0802D7A6:
ldr r0, [r1]
cmp r0, r4
beq _0802D7BA
adds r1, 0x8
adds r2, 0x1
cmp r2, r5
blt _0802D7A6
ldr r1, [r3]
movs r0, 0x4
str r0, [r1, 0x70]
_0802D7BA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802D7C0: .4byte gUnknown_203B2F8
_0802D7C4: .4byte gUnknown_80D4920
_0802D7C8: .4byte gUnknown_80D4928
_0802D7CC: .4byte gUnknown_80E014C
thumb_func_end sub_802D73C
.align 2,0

View File

@ -5,281 +5,6 @@
.text
thumb_func_start sub_802F9C0
sub_802F9C0:
push {r4,r5,lr}
ldr r4, _0802FA44
ldr r0, [r4]
movs r1, 0xAC
lsls r1, 1
adds r0, r1
movs r2, 0
movs r1, 0x1
strb r1, [r0]
ldr r0, [r4]
ldr r3, _0802FA48
adds r0, r3
strb r2, [r0]
ldr r0, [r4]
adds r3, 0x1
adds r1, r0, r3
movs r0, 0x8
strb r0, [r1]
ldr r0, [r4]
ldr r1, _0802FA4C
adds r0, r1
strb r2, [r0]
ldr r0, [r4]
adds r0, 0xD6
movs r2, 0
ldrsh r0, [r0, r2]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r3, [r4]
adds r5, r3, 0
adds r5, 0xF0
ldr r2, [r5]
lsls r1, r2, 1
adds r1, r2
lsls r1, 3
adds r1, r3, r1
movs r2, 0x83
lsls r2, 1
adds r1, r2
asrs r2, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r5]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r3, r0
adds r2, 0x2
movs r0, 0x84
lsls r0, 1
adds r3, r0
strh r2, [r3]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0xF8
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802FA44: .4byte gUnknown_203B314
_0802FA48: .4byte 0x00000159
_0802FA4C: .4byte 0x0000015b
thumb_func_end sub_802F9C0
thumb_func_start sub_802FA50
sub_802FA50:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
ldr r4, _0802FB1C
ldr r0, [r4]
adds r0, 0xF0
ldr r0, [r0]
bl sub_8008C54
ldr r0, [r4]
adds r0, 0xF0
ldr r0, [r0]
bl sub_80073B8
ldr r2, _0802FB20
ldr r0, [r4]
adds r0, 0xF0
ldr r3, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0xA
movs r1, 0
bl xxx_call_draw_string
ldr r3, [r4]
movs r1, 0xAD
lsls r1, 1
adds r0, r3, r1
ldrb r0, [r0]
lsls r0, 3
adds r0, 0x4
adds r1, r3, 0
adds r1, 0xDA
movs r5, 0
ldrsh r2, [r1, r5]
adds r2, 0x1
movs r1, 0x7
str r1, [sp]
adds r1, r3, 0
adds r1, 0xF0
ldr r1, [r1]
str r1, [sp, 0x4]
movs r1, 0
movs r3, 0x2
bl sub_8012BC4
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0xB8
ldrb r0, [r0]
cmp r0, 0
beq _0802FB78
movs r6, 0
adds r0, r1, 0
adds r0, 0xD6
movs r1, 0
ldrsh r0, [r0, r1]
cmp r6, r0
blt _0802FACA
b _0802FBD6
_0802FACA:
mov r8, r4
_0802FACC:
mov r2, r8
ldr r0, [r2]
adds r0, 0xBC
adds r1, r6, 0
bl sub_8013800
adds r5, r0, 0
mov r3, r8
ldr r2, [r3]
adds r0, r2, 0
adds r0, 0xDA
movs r3, 0
ldrsh r1, [r0, r3]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r1
adds r1, r0, r6
lsls r0, r1, 1
adds r0, r2, r0
movs r3, 0
ldrsh r7, [r0, r3]
adds r0, r2, 0
adds r0, 0x5C
adds r0, r1
ldrb r4, [r0]
cmp r4, 0
beq _0802FB28
adds r0, r2, 0
adds r0, 0xF0
ldr r3, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0xA
adds r1, r5, 0
ldr r2, _0802FB24
bl xxx_call_draw_string
b _0802FB46
.align 2, 0
_0802FB1C: .4byte gUnknown_203B314
_0802FB20: .4byte gUnknown_80E0744
_0802FB24: .4byte gUnknown_80E0750
_0802FB28:
adds r0, r2, 0
adds r0, 0x8A
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _0802FB46
adds r0, r2, 0
adds r0, 0xF0
ldr r3, [r0]
str r4, [sp]
movs r0, 0xA
adds r1, r5, 0
ldr r2, _0802FB74
bl xxx_call_draw_string
_0802FB46:
adds r0, r7, 0
bl sub_80974A0
adds r2, r0, 0
mov r1, r8
ldr r0, [r1]
adds r0, 0xF0
ldr r3, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x18
adds r1, r5, 0
bl xxx_call_draw_string
adds r6, 0x1
mov r2, r8
ldr r0, [r2]
adds r0, 0xD6
movs r3, 0
ldrsh r0, [r0, r3]
cmp r6, r0
blt _0802FACC
b _0802FBD6
.align 2, 0
_0802FB74: .4byte gUnknown_80E0754
_0802FB78:
movs r6, 0
adds r0, r1, 0
adds r0, 0xD6
movs r5, 0
ldrsh r0, [r0, r5]
cmp r6, r0
bge _0802FBD6
adds r5, r4, 0
_0802FB88:
ldr r0, [r5]
adds r0, 0xBC
adds r1, r6, 0
bl sub_8013800
adds r4, r0, 0
ldr r1, [r5]
adds r0, r1, 0
adds r0, 0xDA
movs r3, 0
ldrsh r2, [r0, r3]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r2
adds r0, r6
lsls r0, 1
adds r1, r0
movs r2, 0
ldrsh r0, [r1, r2]
bl sub_80974A0
adds r2, r0, 0
ldr r0, [r5]
adds r0, 0xF0
ldr r3, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x8
adds r1, r4, 0
bl xxx_call_draw_string
adds r6, 0x1
ldr r0, [r5]
adds r0, 0xD6
movs r3, 0
ldrsh r0, [r0, r3]
cmp r6, r0
blt _0802FB88
_0802FBD6:
ldr r0, _0802FBF0
ldr r0, [r0]
adds r0, 0xF0
ldr r0, [r0]
bl sub_80073E0
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802FBF0: .4byte gUnknown_203B314
thumb_func_end sub_802FA50
thumb_func_start sub_802FBF4
sub_802FBF4:
push {r4-r7,lr}

View File

@ -1,664 +0,0 @@
#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 GetPelipperBoardSlotIndex
ldr r1, _0802CC44
ldr r1, [r1]
strb r0, [r1, 0xC]
movs r0, 0x2
bl SetJobListState
b _0802CC6A
.align 2, 0
_0802CC44: .4byte gUnknown_203B2F0
_0802CC48:
bl GetPelipperBoardSlotIndex
ldr r1, _0802CC5C
ldr r1, [r1]
strb r0, [r1, 0xC]
movs r0, 0x4
bl SetJobListState
b _0802CC6A
.align 2, 0
_0802CC5C: .4byte gUnknown_203B2F0
_0802CC60:
bl sub_802C688
movs r0, 0x5
bl SetJobListState
_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 SetJobListState
b _0802CD2E
.align 2, 0
_0802CD10: .4byte 0x00000133
_0802CD14: .4byte gUnknown_203B2F0
_0802CD18:
movs r0, 0x3
bl SetJobListState
b _0802CD2E
_0802CD20:
movs r0, 0x4
bl SetJobListState
b _0802CD2E
_0802CD28:
movs r0, 0x1
bl SetJobListState
_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 SetJobListState
b _0802CDB0
_0802CD88:
ldr r0, [r4]
ldrb r0, [r0, 0xC]
bl ResetJobSlot
bl sub_8096C80
bl HasNoAcceptedJobs
lsls r0, 24
cmp r0, 0
beq _0802CDAA
bl sub_802C688
movs r0, 0x5
bl SetJobListState
b _0802CDB0
_0802CDAA:
movs r0, 0x1
bl SetJobListState
_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 SetJobListState
_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
.align 2,0

View File

@ -4612,8 +4612,3 @@ gUnknown_80DCA2C: @ 80DCA2C
.align 2,0
.4byte gUnknown_80DCA2C
#include "text/luminous_cave.inc"
#include "friend_area.inc"
#include "text/party_menu.inc"

View File

@ -1,522 +0,0 @@
.section .rodata
.global gUnknown_80E653C
gUnknown_80E653C: @ 80E653C
.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_80E6554
gUnknown_80E6554: @ 80E6554
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E656C
gUnknown_80E656C: @ 80E656C
.4byte sUnknown_80E65C4, 0x5
.4byte sUnknown_80E65AC, 0x5
.4byte sUnknown_80E658C, 0x5
.4byte 0, 0x3
sUnknown_80E658C:
.string "#+Don~27t turn the power off!\0"
.align 2, 0
sUnknown_80E65AC:
.string "#+Item transmitting!\0"
.align 2, 0
sUnknown_80E65C4:
.string "#+#C2Caution!#R \0"
.align 2, 0
.global gUnknown_80E65D8
gUnknown_80E65D8: @ 80E65D8
.4byte sUnknown_80E65C4, 0x5
.4byte sUnknown_80E65F8, 0x5
.4byte sUnknown_80E658C, 0x5
.4byte 0, 0x3
sUnknown_80E65F8:
.string "#+Thank-You Mail in transmission!\0"
.align 2, 0
.global gUnknown_80E661C
gUnknown_80E661C: @ 80E661C
.4byte sUnknown_80E65C4, 0x5
.4byte sUnknown_80E663C, 0x5
.4byte sUnknown_80E658C, 0x5
.4byte 0, 0x3
sUnknown_80E663C:
.string "#+A-OK Mail in transmission!\0"
.align 2, 0
.global gUnknown_80E665C
gUnknown_80E665C: @ 80E665C
.4byte sUnknown_80E65C4, 0x5
.4byte sUnknown_80E65F8, 0x5
.4byte sUnknown_80E658C, 0x5
.4byte 0, 0x3
.global gUnknown_80E667C
gUnknown_80E667C: @ 80E667C
.4byte sUnknown_80E65C4, 0x5
.4byte sUnknown_80E669C, 0x5
.4byte sUnknown_80E658C, 0x5
.4byte 0, 0x3
sUnknown_80E669C:
.string "#+Wonder Mail in transmission!\0"
.align 2, 0
.global gUnknown_80E66BC
gUnknown_80E66BC: @ 80E66BC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E66D4
gUnknown_80E66D4: @ 80E66D4
.4byte sUnknown_80E6734, 0x5
.4byte sUnknown_80E6710, 0x5
.4byte sUnknown_80E66F4, 0x5
.4byte 0, 0x3
sUnknown_80E66F4:
.string "#+Please press any button.\0"
.align 2, 0
sUnknown_80E6710:
.string "#+Your adventure will be continued.\0"
.align 2, 0
sUnknown_80E6734:
.string "#+#CGSuccess!#R \0"
.align 2, 0
.global gUnknown_80E6748
gUnknown_80E6748: @ 80E6748
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6760
gUnknown_80E6760: @ 80E6760
.4byte sUnknown_80E67B4, 0x5
.4byte sUnknown_80E6794, 0x5
.4byte sUnknown_80E6780, 0x5
.4byte 0, 0x3
sUnknown_80E6780:
.string "#+please try again.\0"
.align 2, 0
sUnknown_80E6794:
.string "#+Check the Game Link cable and\0"
.align 2, 0
sUnknown_80E67B4:
.string "#+#C2Communication error!#R \0"
.align 2, 0
.global gUnknown_80E67D4
gUnknown_80E67D4: @ 80E67D4
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E67EC
gUnknown_80E67EC: @ 80E67EC
.4byte sUnknown_80E67B4, 0x5
.4byte sUnknown_80E680C, 0x5
.4byte sUnknown_80E6780, 0x5
.4byte 0, 0x3
sUnknown_80E680C:
.string "#+Check your communication mode and\0"
.align 2, 0
.global gUnknown_80E6830
gUnknown_80E6830: @ 80E6830
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6848
gUnknown_80E6848: @ 80E6848
.4byte sUnknown_80E67B4, 0x5
.4byte sUnknown_80E6888, 0x5
.4byte sUnknown_80E6868, 0x5
.4byte 0, 0x3
sUnknown_80E6868:
.string "#+Please inform the programmer.\0"
.align 2, 0
sUnknown_80E6888:
.string "#+Check sum error.\0"
.align 2, 0
.global gUnknown_80E689C
gUnknown_80E689C: @ 80E689C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E68B4
gUnknown_80E68B4: @ 80E68B4
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E68FC, 0x5
.4byte sUnknown_80E68D4, 0x5
.4byte 0, 0x3
sUnknown_80E68D4:
.string "#+someone~27s storage space was full.\0"
.align 2, 0
sUnknown_80E68FC:
.string "#+An item could not be transferred because\0"
.align 2, 0
sUnknown_80E6928:
.string "#+#C2Error!#R \0"
.align 2, 0
.global gUnknown_80E6938
gUnknown_80E6938: @ 80E6938
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6950
gUnknown_80E6950: @ 80E6950
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E6988, 0x5
.4byte sUnknown_80E6970, 0x5
.4byte 0, 0x3
sUnknown_80E6970:
.string "#+Please check again.\0"
.align 2, 0
sUnknown_80E6988:
.string "#+This #CGSOS Mail#R can~27t be used.\0"
.align 2, 0
.global gUnknown_80E69B0
gUnknown_80E69B0: @ 80E69B0
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E69C8
gUnknown_80E69C8: @ 80E69C8
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E69E8, 0x5
.4byte sUnknown_80E6970, 0x5
.4byte 0, 0x3
sUnknown_80E69E8:
.string "#+This #CGA-OK Mail#R can~27t be used.\0"
.align 2, 0
.global gUnknown_80E6A10
gUnknown_80E6A10: @ 80E6A10
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6A28
gUnknown_80E6A28: @ 80E6A28
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E6A48, 0x5
.4byte sUnknown_80E6970, 0x5
.4byte 0, 0x3
sUnknown_80E6A48:
.string "#+This #CGThank-You Mail#R can~27t be used.\0"
.align 2, 0
.global gUnknown_80E6A74
gUnknown_80E6A74: @ 80E6A74
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6A8C
gUnknown_80E6A8C: @ 80E6A8C
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E6AC8, 0x5
.4byte sUnknown_80E6AAC, 0x5
.4byte 0, 0x3
sUnknown_80E6AAC:
.string "#+It can~27t be received.\0"
.align 2, 0
sUnknown_80E6AC8:
.string "#+There is no space for new mail.\0"
.align 2, 0
.global gUnknown_80E6AEC
gUnknown_80E6AEC: @ 80E6AEC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6B04
gUnknown_80E6B04: @ 80E6B04
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E6B4C, 0x5
.4byte sUnknown_80E6B24, 0x5
.4byte 0, 0x3
sUnknown_80E6B24:
.string "#+You need to go further in the story.\0"
.align 2, 0
sUnknown_80E6B4C:
.string "#+You may not go to that #CGdungeon#R yet.\0"
.align 2, 0
.global gUnknown_80E6B78
gUnknown_80E6B78: @ 80E6B78
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6B90
gUnknown_80E6B90: @ 80E6B90
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E6BC4, 0x5
.4byte sUnknown_80E6BB0, 0x5
.4byte 0, 0x3
sUnknown_80E6BB0:
.string "#+Please try again.\0"
.align 2, 0
sUnknown_80E6BC4:
.string "#+There was a problem on your friend~27s end.\0"
.align 2, 0
.global gUnknown_80E6BF4
gUnknown_80E6BF4: @ 80E6BF4
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6C0C
gUnknown_80E6C0C: @ 80E6C0C
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E6C2C, 0x5
.4byte sUnknown_80E6BB0, 0x5
.4byte 0, 0x3
sUnknown_80E6C2C:
.string "#+Your friend is not responding.\0"
.align 2, 0
.global gUnknown_80E6C50
gUnknown_80E6C50: @ 80E6C50
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6C68
gUnknown_80E6C68: @ 80E6C68
.4byte sUnknown_80E6734, 0x5
.4byte sUnknown_80E6CA8, 0x5
.4byte sUnknown_80E6C88, 0x5
.4byte 0, 0x3
sUnknown_80E6C88:
.string "#+went through successfully.\0"
.align 2, 0
sUnknown_80E6CA8:
.string "#+The item exchange with your friend\0"
.align 2, 0
.global gUnknown_80E6CD0
gUnknown_80E6CD0: @ 80E6CD0
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6CE8
gUnknown_80E6CE8: @ 80E6CE8
.4byte sUnknown_80E65C4, 0x5
.4byte sUnknown_80E6D2C, 0x5
.4byte sUnknown_80E6D08, 0x5
.4byte 0, 0x3
sUnknown_80E6D08:
.string "#+you and your friend are ready.\0"
.align 2, 0
sUnknown_80E6D2C:
.string "#+Please communicate only after both\0"
.align 2, 0
.global gUnknown_80E6D54
gUnknown_80E6D54: @ 80E6D54
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6D6C
gUnknown_80E6D6C: @ 80E6D6C
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E6DB0, 0x5
.4byte sUnknown_80E6D8C, 0x5
.4byte 0, 0x3
sUnknown_80E6D8C:
.string "#+connected. Please check again.\0"
.align 2, 0
sUnknown_80E6DB0:
.string "#+An incorrect number of GBA systems are\0"
.align 2, 0
.global gUnknown_80E6DDC
gUnknown_80E6DDC: @ 80E6DDC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x08, 0x00
.byte 0x18, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6DF4
gUnknown_80E6DF4: @ 80E6DF4
.4byte sUnknown_80E6928, 0x5
.4byte sUnknown_80E6E30, 0x5
.4byte sUnknown_80E6E14, 0x5
.4byte 0, 0x3
sUnknown_80E6E14:
.string "#+Please check it again.\0"
.align 2, 0
sUnknown_80E6E30:
.string "#+Communication failed.\0"
.align 2, 0
.string "pksdir0\0"
.global gUnknown_80E6E50
gUnknown_80E6E50:: @ 80E6E50
.string "CHUNSOFT\0"
.align 2,0
.string "pksdir0\0"
.string "pksdir0\0"
.string "pksdir0\0"
.string "pksdir0\0"
.global gUnknown_80E6E7C
gUnknown_80E6E7C: @ 80E6E7C
.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_80E6E94
gUnknown_80E6E94: @ 80E6E94
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x05, 0x00, 0x09, 0x00
.byte 0x13, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6EAC
gUnknown_80E6EAC: @ 80E6EAC
.4byte Caution_80E6F04
.4byte 3
.4byte StorageEmpty_80E6EE4
.4byte 3
.4byte CheckAgain_80E6ECC
.4byte 3
.4byte 0
.4byte 1
.global CheckAgain_80E6ECC
CheckAgain_80E6ECC:
.string "{CENTER_ALIGN}Please check again.\0"
.align 2,0
.global StorageEmpty_80E6EE4
StorageEmpty_80E6EE4:
.string "{CENTER_ALIGN}The storage space is empty!\0"
.align 2,0
.global Caution_80E6F04
Caution_80E6F04:
.string "{CENTER_ALIGN}{COLOR_1 RED}Caution!{END_COLOR_TEXT_1} \0"
.align 2,0
.asciz "pksdir0"

View File

@ -1,233 +0,0 @@
.section .rodata
.global gUnknown_80E71E4
gUnknown_80E71E4: @ 80E71E4
.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_80E71FC
gUnknown_80E71FC: @ 80E71FC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7214
gUnknown_80E7214: @ 80E7214
.4byte Error_80E7268, 0xC
.4byte IncorrectPassword_80E7250, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
CheckAgain_80E7234:
.string "{CENTER_ALIGN}Please check it again.\0"
.align 2, 0
IncorrectPassword_80E7250:
.string "{CENTER_ALIGN}Incorrect password!\0"
.align 2, 0
Error_80E7268:
.string "{CENTER_ALIGN}{COLOR_1 RED}Error!{END_COLOR_TEXT_1} \0"
.align 2, 0
.global gUnknown_80E7278
gUnknown_80E7278: @ 80E7278
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7290
gUnknown_80E7290: @ 80E7290
.4byte Success_80E72D8, 0xC
.4byte PasswordAccept_80E72B4, 0xC
.4byte DATA_80E72B0, 0xC
.4byte 0, 0xA
DATA_80E72B0:
.string " \0"
.align 2, 0
PasswordAccept_80E72B4:
.string "{CENTER_ALIGN}The password has been accepted.\0"
.align 2, 0
Success_80E72D8:
.string "{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE}Success!{END_COLOR_TEXT_1} \0"
.align 2, 0
.global gUnknown_80E72EC
gUnknown_80E72EC: @ 80E72EC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7304
gUnknown_80E7304: @ 80E7304
.4byte Error_80E7268, 0xC
.4byte NotSOSMail_80E7324, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
NotSOSMail_80E7324:
.string "{CENTER_ALIGN}This is not an {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1}.\0"
.align 2, 0
.global gUnknown_80E7344
gUnknown_80E7344: @ 80E7344
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E735C
gUnknown_80E735C: @ 80E735C
.4byte Error_80E7268, 0xC
.4byte ReceiveSOSMail_80E737C, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
ReceiveSOSMail_80E737C:
.string "{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} has been received already.\0"
.align 2, 0
.global gUnknown_80E73AC
gUnknown_80E73AC: @ 80E73AC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E73C4
gUnknown_80E73C4: @ 80E73C4
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E73E4, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E73E4:
.string "#+This is not an #CGA-OK Mail#R.\0"
.align 2, 0
.global gUnknown_80E7408
gUnknown_80E7408: @ 80E7408
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7420
gUnknown_80E7420: @ 80E7420
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E7440, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E7440:
.string "#+This #CGA-OK Mail#R cannot be used.\0"
.align 2, 0
.global gUnknown_80E7468
gUnknown_80E7468: @ 80E7468
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7480
gUnknown_80E7480: @ 80E7480
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E74A0, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E74A0:
.string "#+This is not a #CGThank-You Mail#R.\0"
.align 2, 0
.global gUnknown_80E74C8
gUnknown_80E74C8: @ 80E74C8
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E74E0
gUnknown_80E74E0: @ 80E74E0
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E7500, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E7500:
.string "#+This #CGThank-You Mail#R cannot be used.\0"
.align 2, 0
.global gUnknown_80E752C
gUnknown_80E752C: @ 80E752C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7544
gUnknown_80E7544: @ 80E7544
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E7564, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E7564:
.string "#+This is not a #CGWonder Mail#R.\0"
.align 2, 0
.global gUnknown_80E7588
gUnknown_80E7588: @ 80E7588
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E75A0
gUnknown_80E75A0: @ 80E75A0
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E75CC, 0xC
.4byte sUnknown_80E75C0, 0xC
.4byte 0, 0xA
sUnknown_80E75C0:
.string "#+new mail.\0"
.align 2, 0
sUnknown_80E75CC:
.string "#+There is no space for receiving\0"
.align 2, 0
.string "pksdir0\0"

View File

@ -1,119 +1,5 @@
.section .rodata
.global gUnknown_80E7E34
gUnknown_80E7E34: @ 80E7E34
@ replacing .incbin "baserom.gba", 0x000e7e34, 0x18
.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_80E7E4C
gUnknown_80E7E4C: @ 80E7E4C
@ replacing .incbin "baserom.gba", 0x000e7e4c, 0x18
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x04, 0x00
.byte 0x06, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7E64
gUnknown_80E7E64: @ 80E7E64
@ replacing .incbin "baserom.gba", 0x000e7e64, 0x18
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x0e, 0x00
.byte 0x06, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gDebug_NumberText
gDebug_NumberText: @ 80E7E7C
.string "Number?\0"
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80E7E8C
gUnknown_80E7E8C: @ 80E7E8C
@ replacing .incbin "baserom.gba", 0x000e7e8c, 0x18
.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_80E7EA4
gUnknown_80E7EA4: @ 80E7EA4
@ replacing .incbin "baserom.gba", 0x000e7ea4, 0x18
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x15, 0x00, 0x04, 0x00
.byte 0x06, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gDebug_CloseText
gDebug_CloseText: @ 80E7EBC
.string "CLOSE\0"
.align 2,0
.global gDebug_OpenText
gDebug_OpenText: @ 80E7EC4
.string "OPEN\0"
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80E7ED4
gUnknown_80E7ED4: @ 80E7ED4
.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_80E7EEC
gUnknown_80E7EEC: @ 80E7EEC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x13, 0x00, 0x04, 0x00
.byte 0x09, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7F04
gUnknown_80E7F04: @ 80E7F04
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x13, 0x00, 0x0e, 0x00
.byte 0x06, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gDebug_NumberText2
gDebug_NumberText2: @ 80E7F1C
.string "Number?\0"
.align 2,0
.global gDebug_LevelText
gDebug_LevelText: @ 80E7F24
.string "LEVEL\0"
.align 2,0
.global gUnknown_80E7F2C
gUnknown_80E7F2C: @ 80E7F2C
.string "Name\0"
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80E7F3C
gUnknown_80E7F3C: @ 80E7F3C
.byte 0x00, 0x00, 0x00, 0x00

View File

@ -441,15 +441,23 @@ gUnknown_80F6964: @ 80F6964
.global gUnknown_80F697C
gUnknown_80F697C: @ 80F697C
.incbin "baserom.gba", 0xF697C, 0x14
.byte 0x58, 0x00, 0x00, 0x00
.string "pksdir0"
.align 2,0
.string "pksdir0"
.align 2,0
.global gUnknown_80F6990
gUnknown_80F6990: @ 80F6990
.incbin "baserom.gba", 0xF6990, 0xC
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.global gUnknown_80F699C
gUnknown_80F699C: @ 80F699C
.incbin "baserom.gba", 0xF699C, 0xC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00
.global gUnknown_80F69A8
gUnknown_80F69A8: @ 80F69A8

View File

@ -1,176 +0,0 @@
.global gUnknown_80DD148
gUnknown_80DD148: @ 80DD148 (default friend area warp script)
.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_80DD160
gUnknown_80DD160: @ 80DD160 (Another friend area warp script)
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x13, 0x00, 0x04, 0x00
.byte 0x08, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DD178
gUnknown_80DD178: @ 80DD178 (Another friend area warp script)
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x04, 0x00
.byte 0x06, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DD190
gUnknown_80DD190: @ 80DD190 (seems to be Friend Area Warp Script)
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x11, 0x00
.byte 0x1A, 0x00, 0x02, 0x00
.byte 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DD1A8
gUnknown_80DD1A8: @ 80DD1A8
.string "Whom would you like to visit?\0"
.align 2,0
.global gUnknown_80DD1C8
gUnknown_80DD1C8: @ 80DD1C8
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}handed over. \0"
.align 2,0
.global gUnknown_80DD1EC
gUnknown_80DD1EC: @ 80DD1EC
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}handed over.{EXTRA_MSG}"
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}returned to the Toolbox.\0"
.align 2,0
.global gUnknown_80DD240
gUnknown_80DD240: @ 80DD240
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}returned to the Toolbox.\0"
.align 2,0
.global gUnknown_80DD270
gUnknown_80DD270: @ 80DD270
.string "{CENTER_ALIGN}{ARG_POKEMON_1} left the team to remain\n"
.string "{CENTER_ALIGN}on standby in the Friend Area.\0"
.align 2,0
.global gUnknown_80DD2B0
gUnknown_80DD2B0: @ 80DD2B0
.string "Give\0"
.align 2,0
.global gUnknown_80DD2B8
gUnknown_80DD2B8: @ 80DD2B8
.string "Take\0"
.align 2,0
.global gUnknown_80DD2C0
gUnknown_80DD2C0: @ 80DD2C0
.string "Stand By\0"
.align 2,0
.global gUnknown_80DD2CC
gUnknown_80DD2CC: @ 80DD2CC
.string "Visit\0"
.align 2,0
.global gUnknown_80DD2D4
gUnknown_80DD2D4: @ 80DD2D4
.string "Name\0"
.align 2,0
.global gUnknown_80DD2DC
gUnknown_80DD2DC: @ 80DD2DC
.string "Summary\0"
.align 2,0
.global gUnknown_80DD2E4
gUnknown_80DD2E4: @ 80DD2E4
.string "Moves\0"
.align 2,0
.global gUnknown_80DD2EC
gUnknown_80DD2EC: @ 80DD2EC
.string "Check IQ\0"
.align 2,0
.global gUnknown_80DD2F8
gUnknown_80DD2F8: @ 80DD2F8
.string "Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} \0"
.align 2,0
.string "pksdir0\0"
.align 2,0
.global gUnknown_80DD310
gUnknown_80DD310: @ 80DD310 (default friend area script)
.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_80DD328
gUnknown_80DD328: @ 80DD328 (another friend area warp script)
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x13, 0x00, 0x03, 0x00
.byte 0x08, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DD340
gUnknown_80DD340: @ 80DD340
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x14, 0x00, 0x04, 0x00
.byte 0x06, 0x00, 0x03, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DD358
gUnknown_80DD358: @ 80DD358
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x11, 0x00
.byte 0x1A, 0x00, 0x02, 0x00
.byte 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DD370
gUnknown_80DD370: @ 80DD370
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x03, 0x00
.byte 0x0F, 0x00, 0x02, 0x00
.byte 0x02, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00

View File

@ -1,128 +0,0 @@
gLuminousCaveSeekAwakening:: @ 80DCA34
.string "{CENTER_ALIGN}...{WAIT_PRESS}A voice emanates from somewhere...{EXTRA_MSG}"
.string "{CENTER_ALIGN}...Ye who seek awakening...{EXTRA_MSG}"
.string "{CENTER_ALIGN}This is Luminous Cave.{WAIT_PRESS}\n"
.string "{CENTER_ALIGN}Do ye seek a new evolution?\0"
.align 2, 0
gLuminousCaveAskEvolution:: @ 80DCAB8
.string "{CENTER_ALIGN}Do ye seek evolution?\0"
.align 2, 0
gLuminousCaveEvolutionInfo:: @ 80DCAD0
.string "{CENTER_ALIGN}There are those among Pokémon\n"
.string "{CENTER_ALIGN}that can evolve.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Such Pokémon can evolve at this very\n"
.string "{CENTER_ALIGN}spot if they satisfy certain conditions.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Evolution brings about changes\n"
.string "{CENTER_ALIGN}in appearance and abilities.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Not only that{COMMA} some Pokémon even change\n"
.string "{CENTER_ALIGN}type and learn different moves.{EXTRA_MSG}"
.string "{CENTER_ALIGN}However...{WAIT_PRESS} The requirements for\n"
.string "{CENTER_ALIGN}evolution differ among Pokémon.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Some become ready for evolution\n"
.string "{CENTER_ALIGN}merely by leveling up.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Still others may need special items\n"
.string "{CENTER_ALIGN}to attain evolution.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye must also be aware of this:{EXTRA_MSG}"
.string "{CENTER_ALIGN}Once it has evolved{COMMA} a Pokémon\n"
.string "{CENTER_ALIGN}can never regain its previous form.{EXTRA_MSG}"
.string "{CENTER_ALIGN}That is why ye must think carefully\n"
.string "{CENTER_ALIGN}before committing to evolution.\0"
.align 2, 0
gLuminousCaveYeShallReturn:: @ 80DCD5C
.string "{CENTER_ALIGN}Ye shall return if evolution\n"
.string "{CENTER_ALIGN}is what ye seek...\0"
.align 2, 0
gLuminousCaveGiveItem:: @ 80DCD90
.string "{CENTER_ALIGN}Will ye give an item for evolution?\0"
.align 2, 0
gLuminousCaveGiveAnotherItem:: @ 80DCDB8
.string "{CENTER_ALIGN}Will ye give yet another item?\0"
.align 2, 0
gLuminousCaveLackWhatIsNeeded:: @ 80DCDDC
.string "{CENTER_ALIGN}Alas{COMMA} ye seem to lack what is needed\n"
.string "{CENTER_ALIGN}for evolution.\0"
.align 2, 0
gLuminousCaveOnlyOneItem:: @ 80DCE18
.string "{CENTER_ALIGN}Ye seem to have but one item.\0"
.align 2, 0
gLuminousCaveLetUsBegin:: @ 80DCE38
.string "{CENTER_ALIGN}...Ye who seek awakening...\n"
.string "{CENTER_ALIGN}Let us begin.\0"
.align 2, 0
gLuminousCaveChangedAppearance:: @ 80DCE68
.string "{CENTER_ALIGN}...{WAIT_PRESS}$n0 is undergoing changes...{EXTRA_MSG}"
.string "{CENTER_ALIGN}$n0{APOSTROPHE}s appearance changed...{EXTRA_MSG}\0"
.align 2, 0
gLuminousCaveEvolved:: @ 80DCEB0
.string "{CENTER_ALIGN}It evolved from {COLOR_1 GREEN}{ARG_POKEMON_0}{END_COLOR_TEXT_1}\n"
.string "{CENTER_ALIGN}to {COLOR_1 YELLOW}{ARG_POKEMON_1}{END_COLOR_TEXT_1}!\0"
.align 2, 0
gLuminousCaveComeAlone:: @ 80DCEDC
.string "{CENTER_ALIGN}...{EXTRA_MSG}"
.string "{CENTER_ALIGN}One cannot evolve if one\n"
.string "{CENTER_ALIGN}is in the company of others.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Come alone if ye wish to evolve.\0"
.align 2, 0
gLuminousCaveLackLevel:: @ 80DCF44
.string "{CENTER_ALIGN}...{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye have not high enough a level.\0"
.align 2, 0
gLuminousCaveCantEvolveAnymore:: @ 80DCF88
.string "{CENTER_ALIGN}...{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye cannot evolve anymore.\0"
.align 2, 0
gLuminousCaveLackFriendArea:: @ 80DCFAC
.string "{CENTER_ALIGN}...{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye need your Friend Area to evolve.\0"
.align 2, 0
gLuminousCaveLackRoom:: @ 80DCFF4
.string "{CENTER_ALIGN}...{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
.string "{CENTER_ALIGN}The Friend Area to which ye shall go\n"
.string "{CENTER_ALIGN}has no room for ye.\0"
.align 2, 0
gLuminousCaveLackIQ:: @ 80DD054
.string "{CENTER_ALIGN}...{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye seem to lack the IQ to evolve.\0"
.align 2, 0
gLuminousCaveLackItem:: @ 80DD098
.string "{CENTER_ALIGN}{CENTER_ALIGN}...{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye seem to lack an item to evolve.\0"
.align 2, 0
gLuminousCaveCantEvolveYet:: @ 80DD0E0
.string "{CENTER_ALIGN}{CENTER_ALIGN}...{EXTRA_MSG}"
.string "{CENTER_ALIGN}Ye cannot evolve yet. \0"
.align 2, 0
gLuminousCaveGiveName:: @ 80DD104
.string "{CENTER_ALIGN}Ye must give a name to\n"
.string "{CENTER_ALIGN}the evolved Pokémon. \0"
.align 2, 0
.string "pksdir0\0"
.align 2, 0
.string "pksdir0\0"
.align 2, 0

View File

@ -1,109 +0,0 @@
gUnknown_80DD388:: @ 80DD388
.string "You have chosen to say farewell\n"
.string "to this Pokémon.{EXTRA_MSG}"
.string "The Pokémon will leave its Friend Area.\n"
.string "It will no longer be available for\n"
.string "adventures. Is that OK?\0"
.align 2, 0
gUnknown_80DD420:: @ 80DD420
.string "If you say farewell to this\n"
.string "Pokémon{COMMA} it will be gone forever.{EXTRA_MSG}"
.string "You will never be able to get another one\n"
.string "like it to join your team.\n"
.string "Will you release it anyway?\0"
.align 2, 0
gUnknown_80DD4C4:: @ 80DD4C4
.string "{CENTER_ALIGN}{ARG_POKEMON_1} joined the\n"
.string "{CENTER_ALIGN}rescue team for adventures!\0"
.align 2, 0
gUnknown_80DD4F4:: @ 80DD4F4
.string "{CENTER_ALIGN}{ARG_POKEMON_1} left the team to remain\n"
.string "{CENTER_ALIGN}on standby in the Friend Area.\0"
.align 2, 0
gUnknown_80DD534:: @ 80DD534
.string "{CENTER_ALIGN}{ARG_POKEMON_1} became the leader\n"
.string "{CENTER_ALIGN}of the rescue team.\0"
.align 2, 0
gUnknown_80DD564:: @ 80DD564
.string "{CENTER_ALIGN}{ARG_POKEMON_1} left\n"
.string "{CENTER_ALIGN}the Friend Area.\n"
.string "{CENTER_ALIGN}Bye-bye{COMMA} {ARG_POKEMON_1}!\0"
.align 2,0
gUnknown_80DD594:: @ 80DD594
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}handed over. \0"
.align 2, 0
gUnknown_80DD5B8:: @ 80DD5B8
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}handed over.{EXTRA_MSG}"
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}returned to the Toolbox.\0"
.align 2, 0
gUnknown_80DD60C:: @ 80DD60C
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}returned to the Toolbox.\0"
.align 2, 0
gUnknown_80DD63C:: @ 80DD63C
.string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n"
.string "{CENTER_ALIGN}sent to storage.\0"
.align 2, 0
gPartyMenuStandBy:: @ 80DD664
.string "Stand By\0"
.align 2, 0
gPartyMenuMakeLeader:: @ 80DD670
.string "Make Leader\0"
.align 2,0
gPartyMenuJoinTeam:: @ 80DD67C
.string "Join Team\0"
.align 2, 0
gPartyMenuGiveGummi:: @ 80DD688
.string "Give Gummi\0"
.align 2, 0
gPartyMenuGive:: @ 80DD694
.string "Give\0"
.align 2, 0
gPartyMenuTake:: @ 80DD69C
.string "Take\0"
.align 2, 0
gPartyMenuSayFarewell:: @ 80DD6A4
.string "Say Farewell\0"
.align 2, 0
gPartyMenuSummary:: @ 80DD6B4
.string "Summary\0"
.align 2, 0
gPartyMenuMoves:: @ 80DD6BC
.string "Moves\0"
.align 2, 0
gPartyMenuCheckIQ:: @ 80DD6C4
.string "Check IQ\0"
.align 2, 0
gPartyMenuItemPlaceholder:: @ 80DD6D0
.string "Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} \0"
.align 2, 0
gUnknown_80DD6E0:: @ 80DD6E0
.string "%s\0"
.align 2, 0
.string "pksdir0\0"
.align 2, 0

View File

@ -5,7 +5,7 @@ struct unkStruct_802C39C
/* 0xC */ u8 *playerName;
/* 0x10 */ s16 clientSpecies;
/* 0x12 */ s16 targetSpecies;
/* 0x14 */ u8 unk14;
/* 0x14 */ u8 targetItem;
/* 0x15 */ u8 fill15[0x2E - 0x15];
u8 unk2E;
u8 fill2F[0x34 - 0x2F];

View File

@ -5,6 +5,7 @@
struct unkStruct_203B480
{
// size: 0x30
/* 0x0 */ u8 mailType;
/* 0x1 */ u8 missionType;
/* 0x4 */ struct DungeonLocation dungeon;
@ -37,8 +38,21 @@ struct unkStruct_203B48C
s32 unk4[0x20];
};
extern struct unkStruct_203B480 *gUnknown_203B480;
extern struct unkStruct_203B484 *gUnknown_203B484;
extern u32 *gUnknown_203B488;
extern struct unkStruct_203B48C *gUnknown_203B48C;
void sub_80950BC(void);
struct unkStruct_203B480 *sub_80950F8(void);
struct unkStruct_203B484 *sub_8095100(void);
u32 *sub_8095108(void);
struct unkStruct_203B48C *sub_8095110(void);
void sub_8095118(void);
s32 FindOpenMailSlot(void);
bool8 sub_80951BC(struct unkStruct_203B480 *mail);
bool8 sub_80951FC(struct unkStruct_203B480 *param_1);
struct unkStruct_203B480 * sub_8095228(u8 index);
struct unkStruct_203B480 * GetMailatIndex(u8 index);
void DeleteMailAtIndex(u8 index);
void sub_8095274(u32 param_1);
bool8 sub_8095298(s32 param_1);
@ -49,6 +63,8 @@ u32 CountAllMail(void);
s32 sub_8095374(void);
s32 GetMailIndex(u8 mailType, u32 param_2);
s32 GetFirstIndexofMailType(u8 mailType);
void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
#endif

View File

@ -1,4 +1,5 @@
#include "wonder_mail.h"
#include "constants/mailbox.h"
struct subStruct_203B490
{
@ -12,13 +13,13 @@ struct subStruct_203B490
struct unkStruct_203B490
{
// size: 0x330?
/* 0x0 */ struct WonderMail mailboxSlots[4];
/* 0x50 */ struct WonderMail pelipperBoardJobs[8];
/* 0xF0 */ struct WonderMail jobSlots[8];
/* 0x0 */ struct WonderMail mailboxSlots[NUM_MAILBOX_SLOTS];
/* 0x50 */ struct WonderMail pelipperBoardJobs[MAX_ACCEPTED_JOBS];
/* 0xF0 */ struct WonderMail jobSlots[MAX_ACCEPTED_JOBS];
u8 unk190[0x28];
u8 unk1B8[0x78];
struct subStruct_203B490 unk230[16];
u8 PKMNNewsReceived[56];
u8 PKMNNewsReceived[NUM_POKEMON_NEWS];
bool8 unk328;
};

View File

@ -23,7 +23,11 @@ enum Action
ACTION_CHANGE_TACTICS = 0x1A,
ACTION_CHECK_SUMMARY = 0x1B,
ACTION_TALK_MENU = 0x1C, // Talking to another Pokémon via the menu.
ACTION_UNK1D = 0x1D,
ACTION_SET_MOVE = 0x1E, // Registering a move.
ACTION_UNK1F = 0x1F,
ACTION_UNK20 = 0x20,
ACTION_UNK21 = 0x21,
ACTION_EAT_AI = 0x23,
ACTION_THROW_ITEM_AI = 0x24,
ACTION_THROW_STRAIGHT_PLAYER = 0x27,

View File

@ -4,4 +4,18 @@
#define MAX_ACCEPTED_JOBS 8
#define NUM_MAILBOX_SLOTS 4
enum JOB_LIST_MAIL_TYPES
{
MAIL_TYPE_NONE = 0,
MAIL_TYPE_UNK1,
MAIL_TYPE_UNK2,
MAIL_TYPE_UNK3,
MAIL_TYPE_UNK4,
MAIL_TYPE_SUSPENDED_JOB = 5,
MAIL_TYPE_TAKEN_JOB,
MAIL_TYPE_UNK7,
MAIL_TYPE_UNK8,
MAIL_TYPE_UNK9,
};
#endif // GUARD_CONSTANTS_MAILBOX_H

View File

@ -208,7 +208,8 @@ struct EntityInfo
u8 unk153;
u8 unk154;
u8 unk155;
u8 fill158[0x158 - 0x156];
u8 unk156;
bool8 unk157;
u8 unk158;
u8 unk159;
u8 unk15A;
@ -227,7 +228,7 @@ struct EntityInfo
/* 0x16C */ struct Position targetPos;
/* 0x170 */ struct Position pixelPos;
u32 unk174;
u8 fill178[0x17A - 0x178];
u16 unk178;
/* 0x17A */ u16 mimicMoveIDs[MAX_MON_MOVES]; // All moves that Mimic has copied (not sure on size...)
// Previous value of targetPosition for movement, 1 and 2 moves ago.
/* 0x184 */ struct Position previousTargetMovePosition1;

View File

@ -78,7 +78,7 @@ struct Dungeon
s16 unk12;
u8 fill14[0xB8 - 0x14];
struct Entity *unkB8;
u32 unkBC;
struct Entity *unkBC;
u8 fillC0[0x16D - 0xC0];
u8 unk16D;
u8 fill16E[0x179 - 0x16E];

View File

@ -1,6 +1,16 @@
#ifndef GUARD_DUNGEON_MOVEMENT_H
#define GUARD_DUNGEON_MOVEMENT_H
#ifndef GUARD_DUNGEON_MOVEMENT
#define GUARD_DUNGEON_MOVEMENT
#include "dungeon_entity.h"
u8 GetCrossableTerrain(s16 species);
u8 sub_807034C(s16 id, struct Tile *tile);
u8 sub_80703A0(struct Entity *pokemon, struct Position *pos);
bool8 CanCrossWalls(struct Entity *pokemon);
bool8 sub_807049C(struct Entity *pokemon, struct Position *pos);
bool8 sub_8070564(struct Entity *pokemon, struct Position *pos);
bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos);
bool8 sub_80706A4(struct Entity *pokemon, struct Position *pos);
s32 CalcSpeedStage(struct Entity *pokemon);
#endif

View File

@ -1,14 +0,0 @@
#ifndef GUARD_DUNGEON_MOVEMENT_1_H
#define GUARD_DUNGEON_MOVEMENT_1_H
#include "dungeon_entity.h"
u8 sub_80703A0(struct Entity *pokemon, struct Position *pos);
bool8 CanCrossWalls(struct Entity *pokemon);
bool8 sub_807049C(struct Entity *pokemon, struct Position *pos);
bool8 sub_8070564(struct Entity *pokemon, struct Position *pos);
bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos);
bool8 sub_80706A4(struct Entity *pokemon, struct Position *pos);
s32 CalcSpeedStage(struct Entity *pokemon);
#endif

View File

@ -27,11 +27,7 @@ struct unkStruct_203B2BC
u8 fill101[0x11C - 0x104];
struct MenuItem menuItems[4];
u8 fill120[0x16C - 0x13C];
// Structure of some sort
u16 unk16C;
u8 fill170[0x180 - 0x170];
u16 unk16C[10];
struct UnkTextStruct2 unk180[4];
};

View File

@ -4,6 +4,7 @@
#include "menu.h"
#include "text.h"
#include "constants/mailbox.h"
#include "code_802C39C.h"
struct unkStruct_203B304
{
@ -12,14 +13,11 @@ struct unkStruct_203B304
u32 fallbackState;
u8 mailboxIndex;
u8 mailIndex;
u32 unkC;
u8 fill10[0x50 - 0x10];
u8 unk50;
u8 fill51[0x64 - 0x51];
struct unkStruct_802C39C unkC;
u32 menuAction1;
u32 menuAction2;
struct MenuStruct unk6C;
struct MenuItem unkBC[8];
struct MenuItem menuItems[8];
u16 unkFC[8];
struct UnkTextStruct2 unk10C[4];
};

View File

@ -31,6 +31,10 @@ bool8 FailsWhileMuzzled(u16 moveID);
bool8 IsSoundMove(struct Move *move);
bool8 DoesMoveCharge(u16 move);
int GetLinkedSequence(int index, struct Move* moves, u16* sequenceMoveIDs);
void unk_CopyMoves4To8(struct Move* destMoves, struct Move* srcMoves);
void sub_8094060(struct Move* srcMoves, struct Move* destMoves);
void unk_FixLinkedMovesSetEnabled8_v2(struct Move* move);
void sub_8092D54(u8 *buffer, struct Move *move);

View File

@ -6,14 +6,11 @@ struct unkStruct_203B308
u32 state;
u32 unk4;
u8 jobIndex;
u32 unkC;
u8 fill10[0x50 - 0x10];
u8 unk50;
u8 fill51[0x64 - 0x51];
struct unkStruct_802C39C unkC;
u32 menuAction1;
u32 menuAction2;
struct MenuStruct unk6C;
struct MenuItem unkBC[8];
struct MenuItem menuItems[8];
u16 unkFC[8];
struct UnkTextStruct2 unk10C[4];
};

View File

@ -30,7 +30,7 @@ struct PokemonStruct
{
// size: 0x58
/* 0x0 */ u16 unk0; // recruited??
/* 0x1 */ bool8 isTeamLeader;
/* 0x2 */ bool8 isTeamLeader;
/* 0x3 */ u8 unkHasNextStage; // set to a random value?
/* 0x4 */ struct DungeonLocation dungeonLocation;
/* 0x8 */ s16 speciesNum; // species #
@ -75,7 +75,7 @@ struct PokemonStruct2
/* 0x3 */ u8 unkHasNextStage; // unk3
/* 0x4 */ struct DungeonLocation dungeonLocation; // unk4
/* 0x8 */ u16 IQ; // IQ (other offset)
/* 0xA */ u16 unkA;
/* 0xA */ s16 unkA;
/* 0xC */ u16 unkC;
/* 0xE */ s16 speciesNum; // speciesNum (other offset)
/* 0x10 */ u16 unk10; // pokeHP
@ -234,6 +234,7 @@ s32 GetEvolutionSequence(struct PokemonStruct* pokemon, struct EvolveStage* a2);
void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2* r0, struct PokemonStruct *r1, s32 r2);
void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokemon);
void RestorePokemonStruct(struct unkStruct_8094924*, struct PokemonStruct*);
s32 sub_808E218(struct unkStruct_808E218_arg* a1, struct PokemonStruct* pokemon);
#endif // GUARD_POKEMON_H

View File

@ -49,10 +49,10 @@ struct UnkStruct_sub_8011DAC {
struct UnkStruct_203B184 {
/* 0x0 */ struct TeamInventory *MoneyItems;
/* 0x4 */ struct unkStruct_203B45C *recruitedPokemon;
/* 0x8 */ u8 *unk8;
/* 0xC */ u8 *unkC;
/* 0x8 */ struct unkStruct_203B480 *unk8;
/* 0xC */ struct unkStruct_203B484 *unkC;
/* 0x10 */ u32 *unk10;
/* 0x14 */ u32 *unk14;
/* 0x14 */ struct unkStruct_203B48C *unk14;
/* 0x18 */ struct unkStruct_203B490 *mailInfo;
/* 0x1C */ struct RescueTeamData *RescueTeamInfo;
/* 0x20 */ u32 unk20;

View File

@ -35,5 +35,6 @@ void TauntStatusTarget(struct Entity * pokemon, struct Entity * target);
void HandleStockpile(struct Entity * pokemon, struct Entity * target);
void InvisibleStatusTarget(struct Entity * pokemon, struct Entity * target);
void PerishSongTarget(struct Entity * pokemon, struct Entity * target);
void EncoreStatusTarget(struct Entity * pokemon, struct Entity * target);
#endif

View File

@ -3,8 +3,9 @@
struct subStruct_203B240
{
char * unk0;
char * pokeName;
char * unk4;
};
#endif
#endif

View File

@ -1,27 +0,0 @@
#ifndef GUARD_SUB_8095228_H
#define GUARD_SUB_8095228_H
#include "dungeon_global_data.h"
struct unkStruct_8095228
{
/* 0x0 */ u8 mailType; // mail type
/* 0x1 */ u8 missionType; // mission type
/* 0x2 */ u8 unk2;
/* 0x3 */ u8 unk3;
/* 0x4 */ struct DungeonLocation dungeon; // dungeon
/* 0x8 */ u32 unk8;
/* 0xC */ s16 clientSpecies; // client pokemon
/* 0xE */ s16 targetSpecies; // target
u32 unk10; // TODO: verify that this is just a union of the 4 bytes in Wonder Mail
u8 padding2[0x20 - 0x14];
struct Item unk20;
u8 padding3[0x28 - 0x24];
u32 unk28;
s8 unk2C;
u8 padding4[0x30 - 0x2D];
};
extern struct unkStruct_8095228 *sub_8095228(u8);
#endif // GUARD_SUB_8095228_H

View File

@ -12,15 +12,14 @@
struct unkStruct_802F204
{
/* 0x0 */ u8 clientName[POKEMON_NAME_LENGTH]; // client name?
/* 0x0 */ u8 clientName[POKEMON_NAME_LENGTH];
/* 0xA */ u8 name2[POKEMON_NAME_LENGTH]; // target name?
/* 0x14 */ s16 unk14; // poke species (client??)
/* 0x14 */ s16 clientSpecies;
/* 0x16 */ u8 unk16;
/* 0x18 */ s32 moneyReward;
/* 0x1C */ u8 itemRewards[MAX_ITEM_REWARDS];
/* 0x1F */ u8 quantity;
/* 0x20 */ u8 friendAreaReward;
u8 fill21[0x24 - 0x21];
/* 0x24 */ u32 teamRankPtsReward;
};

36
include/wonder_mail_2_1.h Normal file
View File

@ -0,0 +1,36 @@
struct unkStruct_203B2E8
{
// size: 0xA8
u8 pelipperBoardSlots[MAX_ACCEPTED_JOBS];
u32 unk8;
u8 fillC[0x20 - 0xC];
s16 unk20;
s16 unk22;
s16 unk24;
s16 unk26;
u16 unk28;
u16 acceptedJobs;
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;
struct unkStruct_802C39C unk10;
u32 menuAction;
struct MenuStruct unk6C;
struct MenuStruct unkBC;
struct MenuItem unk10C[8];
struct MenuItem unk14C[8];
u8 fill18C[0x19C - 0x18C];
struct UnkTextStruct2 unk19C[4];
};

View File

@ -1,13 +1,15 @@
#include "menu.h"
struct unkStruct_203B2F4
{
u8 fill0[0x1A];
u8 fill0[0x18];
u8 unk18;
u8 unk19;
s16 unk1A;
s16 unk1C;
s16 unk1E;
u8 fill20[0x34 - 0x20];
u32 unk34;
u32 unk38;
struct UnkTextStruct2 *unk38;
struct UnkTextStruct2 unk3C[4];
u8 unk9C[4];
};
@ -41,13 +43,7 @@ struct unkStruct_203B2F8
u8 unkB;
struct unkSubStruct_203B2F8 *mail;
u8 jobSlotIndex;
u8 fill11[0x14 - 0x11];
u32 unk14;
u8 fill18[0x58 - 0x18];
u8 unk58;
u8 fill59[0x64 - 0x59];
u8 *unk64;
u32 unk68;
struct unkStruct_802C39C unk14;
u32 menuAction1;
u32 menuAction2;
u32 menuAction3;

View File

@ -85,6 +85,7 @@ SECTIONS {
src/flash.o(.text);
src/code_800D090.o(.text);
asm/code_800D090.o(.text);
src/code_800D090_1.o(.text);
src/code_800DAC0.o(.text);
asm/code_800DAC0.o(.text);
src/code_80118A4.o(.text);
@ -101,10 +102,6 @@ SECTIONS {
src/kangaskhan_storage.o(.text);
asm/kangaskhan_storage.o(.text);
src/kangaskhan_storage_1.o(.text);
asm/kangaskhan_storage_1.o(.text);
src/kangaskhan_storage_2.o(.text);
asm/kangaskhan_storage_2.o(.text);
src/kangaskhan_storage_3.o(.text);
src/kecleon_items.o(.text);
asm/kecleon_items.o(.text);
src/kecleon_items_1.o(.text);
@ -122,13 +119,14 @@ SECTIONS {
src/gulpin_shop_1.o(.text);
src/code_801EE10.o(.text);
asm/code_801EE10.o(.text);
src/code_801EE10_mid.o(.text);
asm/code_801EE10_mid.o(.text);
src/code_8023144.o(.text);
asm/code_801EE10_1.o(.text);
src/code_801EE10_1.o(.text);
src/luminous_cave.o(.text);
src/friend_list_menu_1.o(.text);
asm/friend_list_menu.o(.text);
src/friend_list_menu.o(.text);
src/party_list_menu.o(.text);
src/friend_area_action_menu.o(.text);
asm/friend_area_action_menu.o(.text);
src/friend_area_action_menu_1.o(.text);
@ -138,16 +136,10 @@ SECTIONS {
src/pokemon_news.o(.text);
src/wonder_mail_2_mid.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);
src/mailbox.o(.text);
asm/mailbox.o(.text);
src/mailbox_1.o(.text);
src/pelipper_board.o(.text);
asm/pelipper_board.o(.text);
src/pelipper_board_1.o(.text);
src/wonder_mail_3_mid.o(.text);
asm/wonder_mail_3_mid.o(.text);
src/wonder_mail_3_1.o(.text);
@ -181,8 +173,6 @@ SECTIONS {
src/debug_menu.o(.text);
src/debug_menu_mid.o(.text);
asm/debug_menu_1.o(.text);
src/debug_menu_2.o(.text);
asm/debug_menu_2.o(.text);
src/debug_menu_1.o(.text);
asm/code_803B050.o(.text);
src/code_803B050.o(.text);
@ -210,8 +200,6 @@ SECTIONS {
src/dungeon_items.o(.text);
asm/code_8046CE4.o(.text);
src/code_8048480.o(.text);
asm/code_8048480.o(.text);
src/code_8048DB8.o(.text);
src/dungeon_ai_item_weight.o(.text);
src/dungeon_map_access.o(.text);
asm/code_80495E4.o(.text);
@ -238,8 +226,6 @@ SECTIONS {
asm/code_806E8B0.o(.text);
src/status_checks.o(.text);
src/dungeon_movement.o(.text);
asm/code_807034C.o(.text);
src/dungeon_movement_1.o(.text);
src/status_checks_1.o(.text);
src/dungeon_capabilities.o(.text);
asm/code_8070BC0.o(.text);
@ -313,8 +299,6 @@ SECTIONS {
asm/code_8094D28.o(.text);
src/play_time.o(.text);
src/code_8094F88.o(.text);
asm/code_8095014.o(.text);
src/code_8095824.o(.text);
src/code_80958E8.o(.text);
asm/code_80958E8.o(.text);
src/code_80958E8_mid.o(.text);
@ -429,6 +413,9 @@ SECTIONS {
src/save.o(.rodata);
src/menu_input.o(.rodata);
data/data_80D47B8.o(.rodata);
src/luminous_cave.o(.rodata);
src/friend_list_menu.o(.rodata);
src/party_list_menu.o(.rodata);
src/friend_area_action_menu.o(.rodata);
src/friend_area_action_menu_1.o(.rodata);
src/wonder_mail.o(.rodata);
@ -452,12 +439,15 @@ SECTIONS {
data/data_80E2068.o(.rodata);
src/main_menu.o(.rodata);
src/trade_items_menu.o(.rodata);
data/data_80E59A8.o(.rodata);
src/other_menus.o(.rodata);
src/unk_menu_203B360.o(.rodata);
src/save_menu.o(.rodata);
data/data_80E6F20.o(.rodata);
src/rescue_password_menu.o(.rodata);
src/load_screen.o(.rodata);
src/wonder_mail_main_menu.o(.rodata);
src/debug_menu.o(.rodata);
src/debug_menu_mid.o(.rodata);
src/debug_menu_1.o(.rodata);
data/data_80E7D40.o(.rodata);
src/pokemon_mail.o(.rodata);
data/personality_test.o(.rodata);

View File

@ -20,7 +20,7 @@ struct AdventureLog
u8 unk9C[4];
};
extern struct AdventureLog *gAdventureLog;
EWRAM_DATA_2 struct AdventureLog *gAdventureLog = {0};
const struct UnkTextStruct2 gUnknown_80E1FF0 = {
0x00, 0x00, 0x00, 0x00,

View File

@ -25,7 +25,6 @@ extern void sub_8097670(void);
extern void LoadGameOptions(void);
extern void SetWindowBGColor(void);
extern void LoadItemParameters(void);
extern void sub_80950BC(void);
extern void LoadMailInfo(void);
extern void sub_800CD64(u32, u32);
extern void SetWindowTitle(char *);

63
src/code_800D090_1.c Normal file
View File

@ -0,0 +1,63 @@
#include "global.h"
void nullsub_189(void)
{}
void nullsub_190(void)
{}
void nullsub_191(void)
{}
void nullsub_192(void)
{}
void nullsub_193(void)
{}
void nullsub_194(void)
{}
void nullsub_195(void)
{}
u32 sub_800DA94(void) {
return 0;
}
u32 sub_800DA98(void) {
return 0;
}
u32 sub_800DA9C(void) {
return 0;
}
void nullsub_196(void)
{}
void nullsub_197(void)
{}
void nullsub_198(void)
{}
u32 sub_800DAAC(void) {
return 0;
}
u32 sub_800DAB0(void) {
return 0;
}
u32 sub_800DAB4(void) {
return 0;
}
u32 sub_800DAB8(void) {
return 0;
}
u32 sub_800DABC(void) {
return 0;
}

View File

@ -8,12 +8,7 @@
#include "pokemon.h"
#include "team_inventory.h"
#include "menu_input.h"
struct subStruct_203B240
{
char * pokeName;
char * unk4;
};
#include "subStruct_203B240.h"
// based off of 203B240..
struct unkStruct_203B230
@ -501,15 +496,15 @@ void sub_801B874(void)
void sub_801BB20(void)
{
struct unkStruct_203B234 *preload;
u8 *nullText;
s32 loopMax;
preload = gUnknown_203B234;
nullText = NULL;
preload->unkCC[0].text = gKangaskhanTrashToolboxItem;
preload->unkCC[0].menuAction = 4;
preload->unkCC[1].text = gKangaskhanTrashReceivedItem;
preload->unkCC[1].menuAction = 5;
preload->unkCC[2].text = nullText;
preload->unkCC[2].menuAction = -1;
loopMax = 0;
gUnknown_203B234->unkCC[loopMax].text = gKangaskhanTrashToolboxItem;
gUnknown_203B234->unkCC[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B234->unkCC[loopMax].text = gKangaskhanTrashReceivedItem;
gUnknown_203B234->unkCC[loopMax].menuAction = 5;
loopMax += 1;
gUnknown_203B234->unkCC[loopMax].text = NULL;
gUnknown_203B234->unkCC[loopMax].menuAction = -1;
}

View File

@ -121,7 +121,6 @@ struct unk_203B250
u8 unk7;
u8 unk8;
u8 unk9;
u8 fillA[0xC - 0xA];
struct PokemonStruct *unkC;
u32 state;
u32 menuAction;
@ -914,7 +913,7 @@ void sub_801C6E4(void)
sub_8008C54(gUnknown_203B240->unk24);
sub_80073B8(gUnknown_203B240->unk24);
preload = gUnknown_203B240->unk10[gUnknown_203B240->unk8];
strcpy(gAvailablePokemonNames,preload->unk0);
strcpy(gAvailablePokemonNames,preload->pokeName);
xxx_format_and_draw(16,0,gUnknown_80DBE30,gUnknown_203B240->unk24,0); // {ARG_POKEMON_0}
xxx_format_and_draw(4,16,gUnknown_203B240->unk10[gUnknown_203B240->unk8]->unk4, gUnknown_203B240->unk24,0);
sub_80073E0(gUnknown_203B240->unk24);

214
src/code_801EE10_mid.c Normal file
View File

@ -0,0 +1,214 @@
#include "global.h"
#include "memory.h"
#include "text.h"
#include "pokemon.h"
#include "input.h"
#include "code_800D090.h"
#include "moves.h"
struct unkStruct_203B274
{
// size: 0x3e8
struct PokemonStruct *pokeStruct;
struct unkStruct_808E218_arg *unk4;
struct unkStruct_808E218_arg unk8;
u32 unk348;
u8 fill34C[0x360 - 0x34C];
s16 unk360;
s16 unk362;
s16 unk364;
s16 unk366;
s16 unk368;
u8 fill36A[0x37C - 0x36A];
s32 unk37C;
struct UnkTextStruct2 *unk380;
struct UnkTextStruct2 unk384[4];
u8 unk3E4[4];
};
extern struct unkStruct_203B274 *gUnknown_203B274;
extern struct UnkTextStruct2 gUnknown_80DC2C4;
extern struct UnkTextStruct2 gUnknown_80DC2AC;
extern u8 gUnknown_80DC2DC[];
extern void sub_8013818(u32 *, u32, u32, u32);
extern s32 GetKeyPress(void *);
extern void sub_8013660(void *);
extern void AddMenuCursorSprite(void *);
extern u8 sub_80138B8(u32 *, u32);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013984(void *);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern s32 sub_8013800(u32 *, s32);
extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32);
u32 sub_801F7E4(void);
void sub_801F690(void);
void sub_801F700(void);
bool8 sub_801F428(s16 index, s32 param_2) {
s32 index_s32 = index;
gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8);
gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32];
gUnknown_203B274->unk4 = &gUnknown_203B274->unk8;
gUnknown_203B274->unk37C = param_2;
gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C];
sub_8006518(gUnknown_203B274->unk384);
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2C4;
gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4;
gUnknown_203B274->unk3E4[0] = 1;
gUnknown_203B274->unk3E4[1] = 0;
gUnknown_203B274->unk3E4[2] = 0xC;
gUnknown_203B274->unk3E4[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, 1, 1);
sub_8013818(&gUnknown_203B274->unk348, sub_801F7E4(), 4, param_2);
sub_801F690();
sub_801F700();
return 1;
}
u32 sub_801F520(u8 param_1)
{
if (param_1 == 0) {
sub_8013660(&gUnknown_203B274->unk348);
return 0;
}
else {
switch(GetKeyPress(&gUnknown_203B274->unk348))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
break;
}
if (sub_80138B8(&gUnknown_203B274->unk348,1) != 0) {
sub_801F690();
sub_801F700();
return 1;
}
else {
return 0;
}
}
}
u16 sub_801F5B4(void)
{
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->unk366 * gUnknown_203B274->unk364 + gUnknown_203B274->unk360];
}
void sub_801F5F0(u8 r0)
{
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, 0, 0);
sub_8013984(&gUnknown_203B274->unk348);
sub_801F690();
sub_801F700();
if(r0)
AddMenuCursorSprite(&gUnknown_203B274->unk348);
}
void sub_801F63C(void)
{
if(gUnknown_203B274 != NULL)
{
gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2AC;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B274->unk384, 1, 1);
MemoryFree(gUnknown_203B274);
gUnknown_203B274 = NULL;
}
}
NAKED
void sub_801F690(void)
{
asm_unified(
"\tpush {r4,r5,lr}\n"
"\tldr r5, _0801F6F4\n"
"\tldr r0, [r5]\n"
"\tldr r1, _0801F6F8\n"
"\tadds r0, r1\n"
"\tmovs r2, 0\n"
"\tldrsh r0, [r0, r2]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r3, [r5]\n"
"\tmovs r1, 0xDF\n"
"\tlsls r1, 2\n"
"\tadds r4, r3, r1\n"
"\tldr r2, [r4]\n"
"\tlsls r1, r2, 1\n"
"\tadds r1, r2\n"
"\tlsls r1, 3\n"
"\tadds r1, r3, r1\n"
"\tldr r2, _0801F6FC\n"
"\tadds r1, r2\n"
"\tasrs r2, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r4]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r3, r0\n"
"\tadds r2, 0x2\n"
"\tmovs r0, 0xE5\n"
"\tlsls r0, 2\n"
"\tadds r3, r0\n"
"\tstrh r2, [r3]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r5]\n"
"\tmovs r1, 0xE1\n"
"\tlsls r1, 2\n"
"\tadds r0, r1\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4,r5}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0801F6F4: .4byte gUnknown_203B274\n"
"_0801F6F8: .4byte 0x00000362\n"
"_0801F6FC: .4byte 0x00000392");
}
void sub_801F700(void)
{
u32 y;
int index;
u8 buffer2 [48];
u8 buffer1 [128];
sub_8008C54(gUnknown_203B274->unk37C);
sub_80073B8(gUnknown_203B274->unk37C);
sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->unk366 + 1,gUnknown_203B274->unk368); // Moves Page: %d/%d
xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0);
for(index = 0; index < gUnknown_203B274->unk362; index++)
{
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->unk366 * gUnknown_203B274->unk364 + index]);
y = sub_8013800(&gUnknown_203B274->unk348, index);
xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0);
}
sub_80073E0(gUnknown_203B274->unk37C);
}
u32 sub_801F7E4(void)
{
sub_808E218(gUnknown_203B274->unk4, gUnknown_203B274->pokeStruct);
return gUnknown_203B274->unk4->count;
}

View File

@ -71,20 +71,25 @@ struct unkStruct_203B294
struct MenuStruct unk54;
struct MenuStruct unkA4;
u32 menuAction;
u32 unkF8;
u16 unkFC;
struct MenuItem unkF8[0x8];
u16 unk138[0x8];
};
struct unkStruct_203B294 *gUnknown_203B294;
extern u8 gUnknown_80DC5EC[];
extern u8 gUnknown_202DE58[];
extern u8 gUnknown_80DC8F0[];
extern u8 gUnknown_80DC8F8[];
extern u8 *gUnknown_80D4940[];
extern u8 *gUnknown_80D4970[];
extern void sub_8022924(s32);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801B00C(void);
extern void sub_801B048(void);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
void GetGummiItemStatBoost(struct PokemonStruct* pokemon, u8 id, bool8 checkBoostFlags, struct Gummi* gummi);
extern u32 sub_801A6E8(u32);
@ -93,6 +98,56 @@ extern void sub_801A928(void);
s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ);
extern u32 sub_801A8AC(void);
void sub_8022D2C(void) {
s32 index;
s32 loopMax = 0;
MemoryFill16(gUnknown_203B294->unk138, 0, sizeof(gUnknown_203B294->unk138));
if(gUnknown_203B294->pokeStruct)
{
gUnknown_203B294->unkF8[loopMax].text = gUnknown_80DC8F0;
gUnknown_203B294->unkF8[loopMax].menuAction = 5;
if(!IsGummiItem(gUnknown_203B294->item.id))
{
gUnknown_203B294->unk138[loopMax] = 1;
}
loopMax += 1;
}
else {
if(GetItemCategory(gUnknown_203B294->item.id) == CATEGORY_TMS_HMS)
{
gUnknown_203B294->unkF8[loopMax].text = gUnknown_80DC8F8;
gUnknown_203B294->unkF8[loopMax].menuAction = 6;
loopMax += 1;
}
gUnknown_203B294->unkF8[loopMax].text = *gUnknown_80D4940;
gUnknown_203B294->unkF8[loopMax].menuAction = 4;
loopMax += 1;
}
gUnknown_203B294->unkF8[loopMax].text = *gUnknown_80D4970;
gUnknown_203B294->unkF8[loopMax].menuAction = 7;
loopMax += 1;
gUnknown_203B294->unkF8[loopMax].text = NULL;
gUnknown_203B294->unkF8[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B294->unk138[index] == 0)
{
if(gUnknown_203B294->unkF8[index].menuAction == gUnknown_203B294->menuAction)
return;
}
}
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B294->unk138[index] == 0)
{
gUnknown_203B294->menuAction = gUnknown_203B294->unkF8[index].menuAction;
break;
}
}
}
void sub_8022E78(void)
{
switch(sub_801A6E8(1))

View File

@ -1,19 +1,32 @@
#include "global.h"
#include "constants/dungeon.h"
#include "constants/dungeon_action.h"
#include "constants/iq_skill.h"
#include "constants/status.h"
#include "constants/type.h"
#include "dungeon_action.h"
#include "dungeon_entity.h"
#include "dungeon_util.h"
#include "dungeon_global_data.h"
#include "move_effects_target.h"
#include "dungeon_capabilities.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_random.h"
#include "number_util.h"
#include "moves.h"
#include "code_8077274_1.h"
#include "code_80521D0.h"
#include "pokemon.h"
#include "position.h"
#include "status.h"
extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_202DE58[];
extern s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS];
extern s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS];
extern u8 *gUnknown_80F89F4[];
extern u8 gAvailablePokemonNames[0x58];
extern u8 *gUnknown_80FB580[];
extern s16 gUnknown_80F4FB6;
extern s16 gUnknown_80F4FB8;
@ -25,7 +38,9 @@ extern s16 gUnknown_80F4FAA; // 0x1E
extern s16 gUnknown_80F4FA8; // 0xF
extern s16 gUnknown_80F4FA4; // 0x14
extern s16 gUnknown_80F4FA6; // 0x2D
extern u32 gUnknown_8106A4C;
extern u32 gUnknown_8106A50;
extern s16 gUnknown_80F4FAC;
extern u8 *gUnknown_80FEAE8[];
extern u8 *gUnknown_80FDBA0[];
@ -35,11 +50,45 @@ extern u8 *gUnknown_80FE454[];
extern u8 *gPtrSelfHealPreventedHungerMessage[];
extern u8 *gUnknown_80F9740[];
extern u8 *gUnknown_80F9760[];
extern u8 *gUnknown_80FD644[];
extern u8 *gUnknown_80FD648[];
extern u8 *gUnknown_80FD6E8[];
extern u8 *gPtrCantUseInDungeonMessage[];
extern u8 *gUnknown_80FE3E8[];
extern u8 *gPtrMusicBoxPlayedCrumbledMessage[];
extern u8 *gPtrWishStoneCrumbledMessage[];
extern u8 *gPtrIcePartCrumbledMessage[];
extern u8 *gPtrRockPartCrumbledMessage[];
extern u8 *gPtrSteelPartCrumbledMessage[];
extern u8 *gUnknown_80FDCA4[];
extern u8 *gUnknown_80FE3E8[];
extern u8 *gUnknown_80FECA0[];
extern u8 *gUnknown_80FE3E8[];
extern u8 *gUnknown_80F9BD8[];
extern void sub_80421C0(struct Entity *r0, u16 r1);
extern void sub_8078B5C(struct Entity *, struct Entity *, u32, u32, u32);
extern u8 sub_806A538(s32);
extern void sub_8051E7C(struct Entity *pokemon);
extern void sub_8045BF8(u8 *, struct Item *);
extern void sub_8063B54(struct ActionContainer *);
extern void sub_80637E8(struct ActionContainer *);
extern void sub_8063BB4(struct ActionContainer *);
extern void sub_8063CF0(struct ActionContainer *, u32);
extern void sub_8063A70(struct ActionContainer *, u32);
extern u8 sub_8062F90(struct Entity *, u32, u32, u32, u32);
extern void sub_8044DF0(struct Entity *, u32, u32);
extern s32 sub_8052B8C(u32, u8 *, u32);
extern void sub_803EAF0(u32, u32);
extern void sub_8044C10(bool8);
struct Entity *DrawFieldGiveItemMenu(u32, u32);
extern void PrintFieldMessage(u32, u8 *, u32);
extern void sub_8044E24(u32, u32, u32);
extern void sub_804245C(u32, struct Item *);
extern u8 sub_8072938(struct Entity *, u16);
extern void sub_807D148(struct Entity *pokemon, struct Entity *r1, u32 r2, struct Position *r3);
extern void sub_8072008(struct Entity *pokemon, struct Entity *r1, u32 r2, u8 r3, u32);
extern void LevelDownTarget(struct Entity *pokemon, struct Entity *r1, u32 r2);
extern void sub_8078B5C(struct Entity *, struct Entity *, u32, u32, u32);
extern void SetMessageArgument(u8 *buffer, struct Entity *r1, u32);
extern void sub_80522F4(struct Entity *pokemon, struct Entity *r1, const char[]);
extern void sub_806F370(struct Entity *pokemon, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
@ -48,6 +97,8 @@ extern s32 sub_8042520(struct Entity *);
struct Entity *sub_80696FC(struct Entity *);
extern void sub_80943A0(void*, s32);
extern void sub_803E708(u32 r0, u32 r1);
extern void sub_806A7E8(struct EntityInfo *, s32);
void sub_8048340(struct Entity *pokemon, struct Entity *target, u32 r2)
{
@ -200,8 +251,13 @@ void sub_80485B0(struct Entity *pokemon, struct Entity * target)
bool8 isMoveBoosted;
s32 moveIndex;
struct EntityInfo *entityInfo;
#ifndef NONMATCHING
register struct Move *movePtr1 asm("r4"); // r4
register struct Move *movePtr2 asm("r5"); // r5
#else
struct Move *movePtr1; // r4
struct Move *movePtr2; // r5
#endif
u8 moveBoost;
s32 movePowerBoost;
s32 maxPowerBoost;
@ -294,3 +350,433 @@ void sub_80487CC(struct Entity *pokemon, struct Entity * target, u32 param_3, u3
{
sub_8078B5C(pokemon, target, param_3, param_4, 1);
}
static inline bool8 JoinLocationCannotUseItems_1(struct EntityInfo *pokemonInfo)
{
if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON)
{
return TRUE;
}
if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE)
{
return TRUE;
}
return FALSE;
}
void sub_80487E0(struct Entity *pokemon, struct Entity *target, u8 gummiIndex)
{
s32 iVar3;
struct EntityInfo *targetInfo;
s32 gummiBoost;
s32 baseIQ;
s32 iVar4;
s32 iVar5;
s32 currIQ;
targetInfo = target->info;
gummiBoost = gTypeGummiIQBoost[targetInfo->types[0]][gummiIndex];
gummiBoost += gTypeGummiIQBoost[targetInfo->types[1]][gummiIndex];
sub_8078B5C(pokemon,target,
gUnknown_810A808[targetInfo->types[0]][gummiIndex] +
gUnknown_810A808[targetInfo->types[1]][gummiIndex],0,1);
if (!targetInfo->isNotTeamMember) {
if (!JoinLocationCannotUseItems_1(targetInfo)) {
baseIQ = targetInfo->IQ;
targetInfo->IQ += gummiBoost;
currIQ = baseIQ + gummiBoost;
if (targetInfo->IQ <= 0) {
targetInfo->IQ = 1;
}
if (999 < targetInfo->IQ) {
targetInfo->IQ = 999;
}
if (baseIQ == targetInfo->IQ) {
sub_80522F4(pokemon,target,*gUnknown_80FD644);
}
else {
iVar5 = currIQ - baseIQ;
iVar4 = 0;
if (((iVar5 < 9) && (iVar4 = 1, iVar5 < 5)) && (iVar4 = 3, 2 < iVar5)) {
iVar4 = 2;
}
iVar5 = targetInfo->IQ - baseIQ;
iVar3 = 0;
if (((iVar5 < 9) && (iVar3 = 1, iVar5 < 5)) && (iVar3 = 3, 2 < iVar5)) {
iVar3 = 2;
}
sub_80522F4(pokemon,target,gUnknown_80FD648[iVar4]);
sub_80522F4(pokemon,target,gUnknown_80FD6E8[iVar3]);
LoadIQSkills(target);
sub_806A7E8(targetInfo,baseIQ);
}
}
}
}
void sub_804891C(struct Entity *pokemon, struct Entity *target)
{
RaiseAtkStatTarget(pokemon, target, 3);
}
void sub_8048928(struct Entity *pokemon, struct Entity *target)
{
RaiseSpAtkStatTarget(pokemon, target, 3);
}
void sub_8048934(struct Entity *pokemon, struct Entity *target)
{
RaiseDefStatTarget(pokemon, target, 3);
}
void sub_8048940(struct Entity *pokemon, struct Entity *target)
{
RaiseSpDefStatTarget(pokemon, target, 3);
}
void nullsub_94(void)
{}
static inline bool8 JoinLocationCannotUseItems_2(struct EntityInfo *pokemonInfo)
{
if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON)
{
return TRUE;
}
if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE)
{
return TRUE;
}
return FALSE;
}
bool8 sub_8048950(u32 param_1,struct Item *item)
{
u8 flag;
u16 moveID;
struct Entity *entity2;
struct Entity *entity;
struct EntityInfo *entityInfo;
int index;
moveID = GetItemMoveID(item->id);
if ((item->flags & ITEM_FLAG_STICKY)) {
PrintFieldMessage(0,*gUnknown_80FE3E8,1);
return FALSE;
}
else if (IsHMItem(item->id)) {
PrintFieldMessage(0,*gPtrCantUseInDungeonMessage,1);
return FALSE;
}
else
{
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
{
entity = gDungeon->teamPokemon[index];
if (EntityExists(entity)) {
entityInfo = entity->info;
flag = CanMonLearnMove(moveID, entityInfo->id);
if (CannotMove(entity, FALSE)) {
flag = FALSE;
}
if (entityInfo->clientType == CLIENT_TYPE_CLIENT) {
flag = FALSE;
}
if (JoinLocationCannotUseItems_2(entityInfo)) {
flag = FALSE;
}
entityInfo->unk157 = flag;
}
}
entity2 = DrawFieldGiveItemMenu(0,1);
if (!EntityExists(entity2)) {
return FALSE;
}
sub_804245C(param_1,item);
if (sub_8072938(entity2,moveID) == 0) {
return FALSE;
}
sub_8044E24(param_1,0,0x141);
return TRUE;
}
return FALSE;
}
static inline bool8 JoinLocationCannotUseItems_3(struct EntityInfo *pokemonInfo)
{
if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON)
{
return TRUE;
}
if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE)
{
return TRUE;
}
return FALSE;
}
bool8 sub_8048A68(u32 param_1,struct Item *item)
{
u8 flag;
struct Entity *entity2;
struct Entity *entity;
struct EntityInfo *pEVar6;
s32 index;
struct PokemonStruct2 *pokemon;
if ((item->flags & ITEM_FLAG_STICKY)) {
PrintFieldMessage(0,*gUnknown_80FE3E8,1);
return FALSE;
}
else
{
if (gDungeon->unk65C == 0) {
PrintFieldMessage(0,*gUnknown_80F9BD8,1);
return FALSE;
}
else
{
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
{
entity = gDungeon->teamPokemon[index];
if (EntityExists(entity)) {
pEVar6 = entity->info;
flag = TRUE;
if(((MAX_TEAM_MEMBERS - 1) < pEVar6->teamIndex))
flag = FALSE;
else
{
pokemon = &gRecruitedPokemonRef->pokemon2[pEVar6->teamIndex];
if (sub_806A538(pokemon->unkA))
flag = FALSE;
}
if (CannotMove(entity, FALSE)) {
flag = FALSE;
}
if (pEVar6->clientType == CLIENT_TYPE_CLIENT) {
flag = FALSE;
}
if (JoinLocationCannotUseItems_3(pEVar6)) {
flag = FALSE;
}
if (pEVar6->isTeamLeader) {
flag = FALSE;
}
pEVar6->unk157 = flag;
}
}
entity2 = DrawFieldGiveItemMenu(0,1);
if (!EntityExists(entity2)) {
return FALSE;
}
sub_804245C(param_1,item);
gDungeon->unkBC = entity2;
sub_8044E24(param_1,0,0x142);
return TRUE;
}
}
return FALSE;
}
static inline bool8 JoinLocationCannotUseItems_4(struct EntityInfo *pokemonInfo)
{
if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON)
{
return TRUE;
}
if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE)
{
return TRUE;
}
return FALSE;
}
// TODO: should be bool8
bool32 sub_8048B9C(struct Entity *entity,struct Item *param_2)
{
#ifndef NONMATCHING
register bool32 bVar2 asm("r8");
#else
bool32 bVar2;
#endif
bool8 flag;
struct EntityInfo *entityInfo;
struct Entity * entity2;
int index;
struct Entity *entity1;
struct EntityInfo *entity1Info;
struct ActionContainer *actionPointer;
struct ActionContainer actionContainer;
u16 action;
bVar2 = FALSE;
entityInfo = entity->info;
actionPointer = &(entityInfo->action);
if ((param_2->flags & ITEM_FLAG_STICKY)) {
PrintFieldMessage(0,*gUnknown_80FE3E8,1);
return FALSE;
}
else
{
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
{
entity1 = gDungeon->teamPokemon[index];
if (EntityExists(entity1)) {
entity1Info = entity1->info;
flag = TRUE;
if(CannotMove(entity1, FALSE))
{
flag = FALSE;
}
if(entity1Info->clientType == CLIENT_TYPE_CLIENT)
{
flag = FALSE;
}
if(JoinLocationCannotUseItems_4(entity1Info))
{
flag = FALSE;
}
entity1Info->unk157 = flag;
}
}
entity2 = DrawFieldGiveItemMenu(0,1);
if (!EntityExists(entity2)) {
return FALSE;
}
else
{
while( TRUE ) {
entityInfo = entity2->info;
actionContainer = *actionPointer;
goto _clear;
_load:
action = actionPointer->action;
if (action == ACTION_UNK1D) {
sub_80637E8(actionPointer);
}
else if (action == ACTION_UNK20) {
sub_803EAF0(0,0);
sub_8063BB4(actionPointer);
sub_8044C10(TRUE);
bVar2 = TRUE;
}
else if (action == ACTION_UNK21) {
sub_803EAF0(0,0);
sub_8063CF0(actionPointer,0);
sub_8044C10(TRUE);
}
else if ((action == ACTION_SET_MOVE) || (action == ACTION_UNSET_MOVE)) {
sub_803EAF0(0,0);
sub_8063A70(actionPointer,0);
}
else if (action == ACTION_UNK1F) {
sub_803EAF0(0,0);
sub_8063B54(actionPointer);
}
_clear:
ClearMonsterActionFields(actionPointer);
if (sub_8062F90(entity2,1,0,0,1) != 0) {
if (bVar2)
{
if (sub_8052B8C(0,*gUnknown_80FECA0,1) == 1) {
*actionPointer = actionContainer;
sub_8044DF0(entity,0,0x6e);
SetMonsterActionFields(actionPointer,0x2c);
break;
}
}
else
{
sub_8044C10(TRUE);
break;
}
}
goto _load;
}
}
}
return bVar2;
}
bool8 sub_8048D50(struct Entity * pokemon, struct Item *item)
{
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
if ((item->flags & ITEM_FLAG_STICKY) != 0) {
sub_8045BF8(gUnknown_202DE58, item);
SendMessage(pokemon,*gUnknown_80FE3E8);
return FALSE;
}
else
{
if ((entityInfo->muzzled == TRUE) && (IsEdibleItem(item->id))) {
SetMessageArgument(gAvailablePokemonNames,pokemon,0);
SendMessage(pokemon,*gUnknown_80FDCA4);
return FALSE;
}
}
return TRUE;
}
void sub_8048DB8(struct Entity *pokemon, struct Entity *target, u8 r2)
{
u8 temp;
if(r2 != 0)
sub_806F370(pokemon, target, gUnknown_80F4FAC, 1, &temp, 0, 0x217, 0, 0, 0);
else
sub_8051E7C(pokemon);
}
void sub_8048E04(struct Entity *pokemon, struct Entity * target)
{
sub_8078B5C(pokemon, target, 0x1E, 0, 1);
switch(DungeonRandInt(5))
{
case 0:
PoisonedStatusTarget(pokemon, target, TRUE);
break;
case 1:
ImmobilizedStatusTarget(pokemon, target);
break;
case 2:
BurnedStatusTarget(pokemon, target, 1, TRUE);
break;
case 3:
ParalyzeStatusTarget(pokemon, target, TRUE);
break;
case 4:
LowerAttackStageTarget(pokemon, target, gUnknown_8106A4C, 3, 1, TRUE);
LowerAttackStageTarget(pokemon, target, gUnknown_8106A50, 3, 1, TRUE);
break;
}
}
void sub_8048EB0(struct Entity *pokemon)
{
SendMessage(pokemon, *gPtrIcePartCrumbledMessage);
}
void sub_8048EC4(struct Entity *pokemon)
{
SendMessage(pokemon, *gPtrRockPartCrumbledMessage);
}
void sub_8048ED8(struct Entity *pokemon)
{
SendMessage(pokemon, *gPtrSteelPartCrumbledMessage);
}
void sub_8048EEC(struct Entity *pokemon)
{
SendMessage(pokemon, *gPtrWishStoneCrumbledMessage);
}
void sub_8048F00(struct Entity *pokemon)
{
sub_80421C0(pokemon, 0xD6);
SendMessage(pokemon, *gPtrMusicBoxPlayedCrumbledMessage);
sub_803E708(0x3C, 0x46);
}

View File

@ -1,113 +0,0 @@
#include "global.h"
#include "constants/status.h"
#include "code_80521D0.h"
#include "move_effects_target.h"
#include "dungeon_random.h"
#include "item.h"
#include "status.h"
extern void sub_803E708(u32, u32);
extern void sub_80421C0(struct Entity *r0, u16 r1);
extern void sub_8078B5C(struct Entity *, struct Entity *, u32, u32, u32);
extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_202DE58[];
extern u8 *gPtrMusicBoxPlayedCrumbledMessage[];
extern u8 *gPtrWishStoneCrumbledMessage[];
extern u8 *gPtrIcePartCrumbledMessage[];
extern u8 *gPtrRockPartCrumbledMessage[];
extern u8 *gPtrSteelPartCrumbledMessage[];
extern u32 gUnknown_8106A4C;
extern u32 gUnknown_8106A50;
extern s16 gUnknown_80F4FAC;
extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
extern void sub_8051E7C(struct Entity *pokemon);
extern void sub_8045BF8(u8 *, struct Item *);
extern void SetMessageArgument(char[], struct Entity*, u32);
extern u8 *gUnknown_80FDCA4[];
extern u8 *gUnknown_80FE3E8[];
bool8 sub_8048D50(struct Entity * pokemon, struct Item *item)
{
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
if ((item->flags & ITEM_FLAG_STICKY) != 0) {
sub_8045BF8(gUnknown_202DE58, item);
SendMessage(pokemon,*gUnknown_80FE3E8);
return FALSE;
}
else
{
if ((entityInfo->muzzled == TRUE) && (IsEdibleItem(item->id))) {
SetMessageArgument(gAvailablePokemonNames,pokemon,0);
SendMessage(pokemon,*gUnknown_80FDCA4);
return FALSE;
}
}
return TRUE;
}
void sub_8048DB8(struct Entity *pokemon, struct Entity *target, u8 r2)
{
u8 temp;
if(r2 != 0)
sub_806F370(pokemon, target, gUnknown_80F4FAC, 1, &temp, 0, 0x217, 0, 0, 0);
else
sub_8051E7C(pokemon);
}
void sub_8048E04(struct Entity *pokemon, struct Entity * target)
{
sub_8078B5C(pokemon, target, 0x1E, 0, 1);
switch(DungeonRandInt(5))
{
case 0:
PoisonedStatusTarget(pokemon, target, TRUE);
break;
case 1:
ImmobilizedStatusTarget(pokemon, target);
break;
case 2:
BurnedStatusTarget(pokemon, target, 1, TRUE);
break;
case 3:
ParalyzeStatusTarget(pokemon, target, TRUE);
break;
case 4:
LowerAttackStageTarget(pokemon, target, gUnknown_8106A4C, 3, 1, TRUE);
LowerAttackStageTarget(pokemon, target, gUnknown_8106A50, 3, 1, TRUE);
break;
}
}
void sub_8048EB0(struct Entity *pokemon)
{
SendMessage(pokemon, *gPtrIcePartCrumbledMessage);
}
void sub_8048EC4(struct Entity *pokemon)
{
SendMessage(pokemon, *gPtrRockPartCrumbledMessage);
}
void sub_8048ED8(struct Entity *pokemon)
{
SendMessage(pokemon, *gPtrSteelPartCrumbledMessage);
}
void sub_8048EEC(struct Entity *pokemon)
{
SendMessage(pokemon, *gPtrWishStoneCrumbledMessage);
}
void sub_8048F00(struct Entity *pokemon)
{
sub_80421C0(pokemon, 0xD6);
SendMessage(pokemon, *gPtrMusicBoxPlayedCrumbledMessage);
sub_803E708(0x3C, 0x46);
}

View File

@ -27,7 +27,7 @@ struct NaturePowerMove
MoveCallback move;
};
struct NaturePowerMove gNaturePowerMoveTable[10];
extern struct NaturePowerMove gNaturePowerMoveTable[10];
extern u8 gUnknown_202DE58[];
@ -125,7 +125,6 @@ extern u8 sub_807EAA0(u32, u32);
extern void sub_80522F4(struct Entity *r1, struct Entity *r2, const char[]);
extern s32 sub_80556BC(struct Entity *, struct Entity *, u8, struct Move *, u32, u32);
extern bool8 sub_805727C(struct Entity *, struct Entity *, s16);
extern void sub_8078968(struct Entity *r0, struct Entity *r1);
extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
extern void SetMessageArgument(char[], struct Entity*, u32);
extern u32 sub_8055640(struct Entity *, struct Entity *, struct Move *, u32, u32);
@ -329,9 +328,9 @@ bool32 sub_80578FC(struct Entity *pokemon, struct Entity *target, struct Move *
return flag;
}
bool32 sub_8057948(struct Entity *pokemon, struct Entity *target)
bool32 EncoreMoveAction(struct Entity *pokemon, struct Entity *target)
{
sub_8078968(pokemon, target);
EncoreStatusTarget(pokemon, target);
return TRUE;
}

View File

@ -11,7 +11,7 @@
#include "dungeon_pokemon_attributes.h"
#include "dungeon_items.h"
#include "dungeon_map_access.h"
#include "dungeon_movement_1.h"
#include "dungeon_movement.h"
#include "dungeon_random.h"
#include "dungeon_util.h"
#include "item.h"

View File

@ -5,7 +5,7 @@
#include "constants/type.h"
#include "dungeon_entity.h"
#include "dungeon_global_data.h"
#include "dungeon_movement_1.h"
#include "dungeon_movement.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_random.h"
#include "dungeon_items.h"

View File

@ -1,8 +1,192 @@
#include "global.h"
extern void sub_8082FE0(u32, u32, u32);
extern void sub_8082FE0(u32, void *, u32);
extern void sub_8082FA8(void *, void *, u32);
void sub_8083288(u32 r0, u32 r1, u32 r2)
void nullsub_98()
{}
void sub_808300C(u32 *param_1, u32 *param_2)
{
sub_8082FA8(param_1, param_2, 8);
}
void sub_8083018(u32 param_1)
{
u8 auStack_10 [12];
sub_8082FE0(param_1,auStack_10,8);
auStack_10[8] = 0;
}
void sub_8083030(u32 *param_1, u32 param_2)
{
u16 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,2);
}
void sub_8083048(u32 *param_1, u32 param_2)
{
u16 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,2);
}
void sub_8083060(u32 *param_1, u32 param_2)
{
u8 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,1);
}
void sub_8083078(u32 *param_1, u32 param_2)
{
u32 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,4);
}
void sub_808308C(u32 *param_1, u32 param_2)
{
u32 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,4);
}
void sub_80830A0(u32 *param_1, u32 param_2)
{
u32 uStack_8;
uStack_8 = param_2;
sub_8082FA8(param_1,&uStack_8,4);
}
void sub_80830B4(u32 *param_1, u8 param_2)
{
u8 local_8;
local_8 = (param_2 != 0) ? -1 : 0;
sub_8082FA8(param_1,&local_8,1);
}
void sub_80830D8(u32 *param_1, u16 *param_2)
{
sub_8082FA8(param_1, &param_2[0], 1);
sub_8082FA8(param_1, &param_2[1], 1);
}
void sub_80830F8(u32 *param_1, u32 *param_2)
{
sub_8082FA8(param_1, &param_2[0], 1);
sub_8082FA8(param_1, &param_2[1], 1);
sub_8082FA8(param_1, &param_2[2], 1);
sub_8082FA8(param_1, &param_2[3], 1);
}
void sub_808312C(u32 *param_1, u16 *param_2)
{
sub_8082FA8(param_1, &param_2[0], 1);
sub_8082FA8(param_1, &param_2[1], 1);
}
void sub_808314C(u32 *param_1, u32 *param_2, u32 param_3)
{
sub_8082FA8(param_1, param_2, param_3);
}
u16 sub_8083158(u32 param_1)
{
u16 local_8;
sub_8082FE0(param_1,&local_8,2);
return local_8;
}
s16 sub_8083170(u32 param_1)
{
s16 local_8;
sub_8082FE0(param_1,&local_8,2);
return local_8;
}
u8 sub_8083188(u32 param_1)
{
u8 local_8;
sub_8082FE0(param_1,&local_8,1);
return local_8;
}
u32 sub_80831A0(u32 param_1)
{
u32 local_8;
sub_8082FE0(param_1,&local_8,4);
return local_8;
}
u32 sub_80831B4(u32 param_1)
{
u32 local_8;
sub_8082FE0(param_1,&local_8,4);
return local_8;
}
u32 sub_80831C8(u32 param_1)
{
u32 local_8;
sub_8082FE0(param_1,&local_8,4);
return local_8;
}
bool8 sub_80831DC(u32 param_1)
{
u8 local_8;
sub_8082FE0(param_1,&local_8,1);
return local_8 != 0;
}
void sub_80831F8(u32 param_1,u16 *param_2)
{
param_2[0] = 0;
param_2[1] = 0;
sub_8082FE0(param_1,&param_2[0],1);
sub_8082FE0(param_1,&param_2[1],1);
}
void sub_8083220(u32 param_1,u32 *param_2)
{
param_2[0] = 0;
param_2[1] = 0;
param_2[2] = 0;
param_2[3] = 0;
sub_8082FE0(param_1,&param_2[0],1);
sub_8082FE0(param_1,&param_2[1],1);
sub_8082FE0(param_1,&param_2[2],1);
sub_8082FE0(param_1,&param_2[3],1);
}
void sub_8083260(u32 param_1,u16 *param_2)
{
param_2[0] = 0;
param_2[1] = 0;
sub_8082FE0(param_1,&param_2[0],1);
sub_8082FE0(param_1,&param_2[1],1);
}
void sub_8083288(u32 r0, u16 *r1, u32 r2)
{
sub_8082FE0(r0, r1, r2);
}

View File

@ -3,6 +3,10 @@
#include "pokemon.h"
#include "code_8094F88.h"
#include "memory.h"
#include "dungeon.h"
#include "random.h"
#include "save.h"
#include "text_util.h"
extern struct unkStruct_203B480 gUnknown_2038C88;
extern struct unkStruct_203B480 *gUnknown_203B480;
@ -14,7 +18,17 @@ extern u32 *gUnknown_203B488;
extern u32 gUnknown_20392E8;
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC);
extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet);
extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern s32 sub_8094E4C(void);
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
extern void sub_8094D28(s32);
void sub_80950BC(void)
{
@ -47,24 +61,24 @@ struct unkStruct_203B48C *sub_8095110(void)
void sub_8095118(void)
{
s32 iVar1;
s32 index;
struct unkStruct_203B480 *unused;
MemoryFill8((u8*)gUnknown_203B480,0,0x600);
MemoryFill8((u8*)gUnknown_203B484,0,0x5c);
for(iVar1 = 0; iVar1 < 0x20; iVar1++){
MemoryFill8((u8*)gUnknown_203B480,0, 0x20 * sizeof(struct unkStruct_203B480));
MemoryFill8((u8*)gUnknown_203B484,0, 0x5c);
for(index = 0; index < 0x20; index++){
// NOTE: we use a temp variable here to force the match
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].mailType = WONDER_MAIL_TYPE_NONE;
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].unk20.id = ITEM_NOTHING;
unused = &gUnknown_203B480[iVar1];
gUnknown_203B480[iVar1].unk2D = 0;
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].mailType = WONDER_MAIL_TYPE_NONE;
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].unk20.id = ITEM_NOTHING;
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].unk2D = 0;
}
gUnknown_203B48C->unk0 = 0;
for(iVar1 = 0; iVar1 < 0x20; iVar1++){
gUnknown_203B48C->unk4[iVar1] = -1;
for(index = 0; index < 0x20; index++){
gUnknown_203B48C->unk4[index] = -1;
}
}
@ -86,3 +100,370 @@ s32 FindOpenMailSlot(void)
}
return -1;
}
// Fakematch
bool8 sub_80951BC(struct unkStruct_203B480 *mail)
{
s32 index;
struct unkStruct_203B480 *preload;
struct unkStruct_203B480 *preload2;
index = FindOpenMailSlot();
if(index == -1)
{
return 0;
}
else
{
preload = gUnknown_203B480;
preload2 = &preload[index];
*preload2 = *mail;
return 1;
}
}
struct unkStruct_809542C
{
struct DungeonLocation unk0;
u32 unk4;
};
bool8 sub_80951FC(struct unkStruct_203B480 *param_1)
{
bool8 bVar1 = gUnknown_203B480[1].mailType != 0;
gUnknown_203B480[1] = *param_1;
return bVar1;
}
struct unkStruct_203B480 * GetMailatIndex(u8 index)
{
struct unkStruct_203B480 *ptr;
ptr = &gUnknown_203B480[index];
return ptr;
}
void DeleteMailAtIndex(u8 index)
{
struct unkStruct_203B480 *unused;
MemoryFill8((u8*)&gUnknown_203B480[index],0,sizeof(struct unkStruct_203B480));
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].mailType = 0;
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].unk20.id = 0;
}
void sub_8095274(u32 param_1)
{
s32 iVar2;
s32 iVar3;
gUnknown_203B48C->unk4[gUnknown_203B48C->unk0] = param_1;
iVar2 = gUnknown_203B48C->unk0;
iVar3 = 0;
if (iVar2 < 0x1f) {
iVar3 = iVar2 + 1;
}
gUnknown_203B48C->unk0 = iVar3;
}
bool8 sub_8095298(s32 param_1)
{
s32 index;
for(index = 0; index < 0x20; index++)
{
if(gUnknown_203B48C->unk4[index] == param_1) return TRUE;
}
return FALSE;
}
void sub_80952C4(void)
{
s32 index;
gUnknown_203B48C->unk0 = 0;
for(index = 0; index < 0x20; index++)
{
gUnknown_203B48C->unk4[index] = -1;
}
}
bool8 HasMail(u8 mailType, u32 param_2)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return TRUE;
}
return FALSE;
}
s32 CountMailType(u8 mailType)
{
struct unkStruct_203B480 *ptr;
s32 total = 0;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == mailType) total++;
}
return total;
}
u32 CountAllMail(void)
{
struct unkStruct_203B480 *ptr;
u32 total = 0;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType != 0) total++;
}
return total;
}
s32 sub_8095374(void)
{
struct unkStruct_203B480 *ptr;
s32 retvar = -1;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == 1) retvar = index;
}
return retvar;
}
/* With mailType and (additonal data??), search mail and return exact index */
s32 GetMailIndex(u8 mailType, u32 param_2)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return index;
}
return -1;
}
/* Return the index of the first mail of the requested type */
s32 GetFirstIndexofMailType(u8 mailType)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == mailType) return index;
}
return -1;
}
s32 sub_8095400(u32 param_1)
{
u32 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0].unk10.unk10; index < 0x20; ptr += 0xC, index++)
{
if (*ptr == param_1) return index;
}
return -1;
}
void sub_809542C(struct unkStruct_809542C *param_1)
{
u32 uVar4;
#ifndef NONMATCHING
register struct unkStruct_203B480 *preload asm("r2");
#else
struct unkStruct_203B480 *preload;
#endif
u8 buffer [20];
gUnknown_203B480->mailType = 1;
preload = gUnknown_203B480;
uVar4 = param_1->unk4;
preload->dungeon = param_1->unk0;
preload->unk8 = uVar4;
sub_8094D28(Rand32Bit());
gUnknown_203B480->unk10.unk10 = sub_8094E4C();
gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum;
PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct());
CopyStringtoBuffer(gUnknown_203B480->playerName, buffer);
gUnknown_203B480->unk24 = sub_8011C34();
gUnknown_203B480->rescuesAllowed = GetRescuesAllowed(gUnknown_203B480->dungeon.id);
}
void sub_8095494(struct unkStruct_809542C *param_1, u8 index)
{
u32 uVar1;
struct DungeonLocation temp;
struct unkStruct_203B480 *mail;
mail = gUnknown_203B480;
mail += index;
temp = mail->dungeon;
uVar1 = mail->unk8;
param_1->unk0 = temp;
param_1->unk4 = uVar1;
}
u32 sub_80954B4(void)
{
if(CountMailType(3) != 0)
return 1;
else
return 0;
}
u32 sub_80954CC(u8 *a, u32 b)
{
struct unkStruct_8094924 backup;
struct PokemonStruct *temp;
s32 index;
xxx_init_struct_8094924_restore_809485C(&backup, a, b);
for(index = 0; index < 0x20; index++)
{
sub_8095774(&backup, &gUnknown_203B480[index]);
}
RestoreIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
temp = &gUnknown_203B484->unk4;
memset(temp, 0, sizeof(struct PokemonStruct));
RestoreIntegerBits(&backup, &temp->unk0, 2);
RestoreIntegerBits(&backup, &temp->isTeamLeader, 1);
RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7);
RestoreDungeonLocation(&backup, &temp->dungeonLocation);
RestoreIntegerBits(&backup, &temp->speciesNum, 9);
xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]);
xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]);
RestoreIntegerBits(&backup, &temp->IQ, 0xA);
RestoreIntegerBits(&backup, &temp->pokeHP, 0xA);
RestoreIntegerBits(&backup, &temp->offense.att[0], 8);
RestoreIntegerBits(&backup, &temp->offense.att[1], 8);
RestoreIntegerBits(&backup, &temp->offense.def[0], 8);
RestoreIntegerBits(&backup, &temp->offense.def[1], 8);
RestoreIntegerBits(&backup, &temp->unk1C, 0x18);
RestoreIntegerBits(&backup, &temp->IQSkills, 0x18);
RestoreIntegerBits(&backup, &temp->unk24, 4);
RestoreHeldItem(&backup, &temp->heldItem);
RestorePokemonMoves(&backup, temp->moves);
RestoreIntegerBits(&backup, temp->name, 0x50);
RestoreIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20);
for(index = 0; index < 0x20; index++)
{
RestoreIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20);
}
nullsub_102(&backup);
return backup.unk8;
}
u32 sub_8095624(u8 *a, u32 b)
{
struct unkStruct_8094924 backup;
struct PokemonStruct *temp;
s32 index;
xxx_init_struct_8094924_save_809486C(&backup, a, b);
for(index = 0; index < 0x20; index++)
{
sub_8095824(&backup, &gUnknown_203B480[index]);
}
SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
temp = &gUnknown_203B484->unk4;
SaveIntegerBits(&backup, &temp->unk0, 2);
SaveIntegerBits(&backup, &temp->isTeamLeader, 1);
SaveIntegerBits(&backup, &temp->unkHasNextStage, 7);
SaveDungeonLocation(&backup, &temp->dungeonLocation);
SaveIntegerBits(&backup, &temp->speciesNum, 9);
xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]);
xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]);
SaveIntegerBits(&backup, &temp->IQ, 0xA);
SaveIntegerBits(&backup, &temp->pokeHP, 0xA);
SaveIntegerBits(&backup, &temp->offense.att[0], 8);
SaveIntegerBits(&backup, &temp->offense.att[1], 8);
SaveIntegerBits(&backup, &temp->offense.def[0], 8);
SaveIntegerBits(&backup, &temp->offense.def[1], 8);
SaveIntegerBits(&backup, &temp->unk1C, 0x18);
SaveIntegerBits(&backup, &temp->IQSkills, 0x18);
SaveIntegerBits(&backup, &temp->unk24, 4);
SaveHeldItem(&backup, &temp->heldItem);
SavePokemonMoves(&backup, temp->moves);
SaveIntegerBits(&backup, temp->name, 0x50);
SaveIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20);
for(index = 0; index < 0x20; index++)
{
SaveIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20);
}
nullsub_102(&backup);
return backup.unk8;
}
void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
{
u8 temp;
RestoreIntegerBits(a, &b->mailType, 4);
RestoreDungeonLocation(a, &b->dungeon);
RestoreIntegerBits(a, &b->unk8, 0x18);
RestoreIntegerBits(a, &b->clientSpecies, 0x9);
RestoreIntegerBits(a, &b->unk10.unk10, 0x20);
RestoreIntegerBits(a, &b->playerName, 0x50);
RestoreIntegerBits(a, &b->unk20.flags, 0x8);
RestoreIntegerBits(a, &b->unk20.quantity, 0x8);
RestoreIntegerBits(a, &b->unk20.id, 0x8);
RestoreIntegerBits(a, &b->unk24, 0x20);
RestoreIntegerBits(a, &b->unk28, 0x20);
RestoreIntegerBits(a, &b->rescuesAllowed, 0x8);
RestoreIntegerBits(a, &temp, 1);
b->unk2D = temp & 1;
}
void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
{
u8 neg1;
u8 zero;
u8 *puVar2;
neg1 = -1;
zero = 0;
SaveIntegerBits(a, &b->mailType, 4);
SaveDungeonLocation(a, &b->dungeon);
SaveIntegerBits(a, &b->unk8, 0x18);
SaveIntegerBits(a, &b->clientSpecies, 0x9);
SaveIntegerBits(a, &b->unk10.unk10, 0x20);
SaveIntegerBits(a, &b->playerName, 0x50);
SaveIntegerBits(a, &b->unk20.flags, 0x8);
SaveIntegerBits(a, &b->unk20.quantity, 0x8);
SaveIntegerBits(a, &b->unk20.id, 0x8);
SaveIntegerBits(a, &b->unk24, 0x20);
SaveIntegerBits(a, &b->unk28, 0x20);
SaveIntegerBits(a, &b->rescuesAllowed, 0x8);
if(b->unk2D != 0)
puVar2 = &neg1;
else
puVar2 = &zero;
SaveIntegerBits(a, puVar2, 1);
}
void sub_80958E4(u32 *a, u32 b)
{
*a = b;
}

View File

@ -6,368 +6,3 @@
#include "save.h"
#include "text_util.h"
#include "code_8094F88.h"
extern struct unkStruct_203B484 *gUnknown_203B484;
extern struct unkStruct_203B480 *gUnknown_203B480;
extern struct unkStruct_203B48C *gUnknown_203B48C;
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC);
extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet);
extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet);
void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b);
s32 CountMailType(u8);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern s32 sub_8094E4C(void);
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
extern void sub_8094D28(s32);
struct unkStruct_809542C
{
struct DungeonLocation unk0;
u32 unk4;
};
bool8 sub_80951FC(struct unkStruct_203B480 *param_1)
{
bool8 bVar1 = gUnknown_203B480[1].mailType != 0;
gUnknown_203B480[1] = *param_1;
return bVar1;
}
struct unkStruct_203B480 * sub_8095228(u8 index)
{
struct unkStruct_203B480 *ptr;
ptr = &gUnknown_203B480[index];
return ptr;
}
void DeleteMailAtIndex(u8 index)
{
struct unkStruct_203B480 *unused;
MemoryFill8((u8*)&gUnknown_203B480[index],0,sizeof(struct unkStruct_203B480));
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].mailType = 0;
unused = &gUnknown_203B480[index];
gUnknown_203B480[index].unk20.id = 0;
}
void sub_8095274(u32 param_1)
{
s32 iVar2;
s32 iVar3;
gUnknown_203B48C->unk4[gUnknown_203B48C->unk0] = param_1;
iVar2 = gUnknown_203B48C->unk0;
iVar3 = 0;
if (iVar2 < 0x1f) {
iVar3 = iVar2 + 1;
}
gUnknown_203B48C->unk0 = iVar3;
}
bool8 sub_8095298(s32 param_1)
{
s32 index;
for(index = 0; index < 0x20; index++)
{
if(gUnknown_203B48C->unk4[index] == param_1) return TRUE;
}
return FALSE;
}
void sub_80952C4(void)
{
s32 index;
gUnknown_203B48C->unk0 = 0;
for(index = 0; index < 0x20; index++)
{
gUnknown_203B48C->unk4[index] = -1;
}
}
bool8 HasMail(u8 mailType, u32 param_2)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return TRUE;
}
return FALSE;
}
s32 CountMailType(u8 mailType)
{
struct unkStruct_203B480 *ptr;
s32 total = 0;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == mailType) total++;
}
return total;
}
u32 CountAllMail(void)
{
struct unkStruct_203B480 *ptr;
u32 total = 0;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType != 0) total++;
}
return total;
}
s32 sub_8095374(void)
{
struct unkStruct_203B480 *ptr;
s32 retvar = -1;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == 1) retvar = index;
}
return retvar;
}
/* With mailType and (additonal data??), search mail and return exact index */
s32 GetMailIndex(u8 mailType, u32 param_2)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return index;
}
return -1;
}
/* Return the index of the first mail of the requested type */
s32 GetFirstIndexofMailType(u8 mailType)
{
struct unkStruct_203B480 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++)
{
if (ptr->mailType == mailType) return index;
}
return -1;
}
s32 sub_8095400(u32 param_1)
{
u32 *ptr;
s32 index;
for(index = 0, ptr = &gUnknown_203B480[0].unk10.unk10; index < 0x20; ptr += 0xC, index++)
{
if (*ptr == param_1) return index;
}
return -1;
}
void sub_809542C(struct unkStruct_809542C *param_1)
{
u32 uVar4;
#ifndef NONMATCHING
register struct unkStruct_203B480 *preload asm("r2");
#else
struct unkStruct_203B480 *preload;
#endif
u8 buffer [20];
gUnknown_203B480->mailType = 1;
preload = gUnknown_203B480;
uVar4 = param_1->unk4;
preload->dungeon = param_1->unk0;
preload->unk8 = uVar4;
sub_8094D28(Rand32Bit());
gUnknown_203B480->unk10.unk10 = sub_8094E4C();
gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum;
PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct());
CopyStringtoBuffer(gUnknown_203B480->playerName, buffer);
gUnknown_203B480->unk24 = sub_8011C34();
gUnknown_203B480->rescuesAllowed = GetRescuesAllowed(gUnknown_203B480->dungeon.id);
}
void sub_8095494(struct unkStruct_809542C *param_1, u8 index)
{
u32 uVar1;
struct DungeonLocation temp;
struct unkStruct_203B480 *mail;
mail = gUnknown_203B480;
mail += index;
temp = mail->dungeon;
uVar1 = mail->unk8;
param_1->unk0 = temp;
param_1->unk4 = uVar1;
}
u32 sub_80954B4(void)
{
if(CountMailType(3) != 0)
return 1;
else
return 0;
}
u32 sub_80954CC(u8 *a, u32 b)
{
struct unkStruct_8094924 backup;
struct PokemonStruct *temp;
s32 index;
xxx_init_struct_8094924_restore_809485C(&backup, a, b);
for(index = 0; index < 0x20; index++)
{
sub_8095774(&backup, &gUnknown_203B480[index]);
}
RestoreIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
temp = &gUnknown_203B484->unk4;
memset(temp, 0, sizeof(struct PokemonStruct));
RestoreIntegerBits(&backup, &temp->unk0, 2);
RestoreIntegerBits(&backup, &temp->isTeamLeader, 1);
RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7);
RestoreDungeonLocation(&backup, &temp->dungeonLocation);
RestoreIntegerBits(&backup, &temp->speciesNum, 9);
xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]);
xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]);
RestoreIntegerBits(&backup, &temp->IQ, 0xA);
RestoreIntegerBits(&backup, &temp->pokeHP, 0xA);
RestoreIntegerBits(&backup, &temp->offense.att[0], 8);
RestoreIntegerBits(&backup, &temp->offense.att[1], 8);
RestoreIntegerBits(&backup, &temp->offense.def[0], 8);
RestoreIntegerBits(&backup, &temp->offense.def[1], 8);
RestoreIntegerBits(&backup, &temp->unk1C, 0x18);
RestoreIntegerBits(&backup, &temp->IQSkills, 0x18);
RestoreIntegerBits(&backup, &temp->unk24, 4);
RestoreHeldItem(&backup, &temp->heldItem);
RestorePokemonMoves(&backup, temp->moves);
RestoreIntegerBits(&backup, temp->name, 0x50);
RestoreIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20);
for(index = 0; index < 0x20; index++)
{
RestoreIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20);
}
nullsub_102(&backup);
return backup.unk8;
}
u32 sub_8095624(u8 *a, u32 b)
{
struct unkStruct_8094924 backup;
struct PokemonStruct *temp;
s32 index;
xxx_init_struct_8094924_save_809486C(&backup, a, b);
for(index = 0; index < 0x20; index++)
{
sub_8095824(&backup, &gUnknown_203B480[index]);
}
SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20);
temp = &gUnknown_203B484->unk4;
SaveIntegerBits(&backup, &temp->unk0, 2);
SaveIntegerBits(&backup, &temp->isTeamLeader, 1);
SaveIntegerBits(&backup, &temp->unkHasNextStage, 7);
SaveDungeonLocation(&backup, &temp->dungeonLocation);
SaveIntegerBits(&backup, &temp->speciesNum, 9);
xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]);
xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]);
SaveIntegerBits(&backup, &temp->IQ, 0xA);
SaveIntegerBits(&backup, &temp->pokeHP, 0xA);
SaveIntegerBits(&backup, &temp->offense.att[0], 8);
SaveIntegerBits(&backup, &temp->offense.att[1], 8);
SaveIntegerBits(&backup, &temp->offense.def[0], 8);
SaveIntegerBits(&backup, &temp->offense.def[1], 8);
SaveIntegerBits(&backup, &temp->unk1C, 0x18);
SaveIntegerBits(&backup, &temp->IQSkills, 0x18);
SaveIntegerBits(&backup, &temp->unk24, 4);
SaveHeldItem(&backup, &temp->heldItem);
SavePokemonMoves(&backup, temp->moves);
SaveIntegerBits(&backup, temp->name, 0x50);
SaveIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20);
for(index = 0; index < 0x20; index++)
{
SaveIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20);
}
nullsub_102(&backup);
return backup.unk8;
}
void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
{
u8 temp;
RestoreIntegerBits(a, &b->mailType, 4);
RestoreDungeonLocation(a, &b->dungeon);
RestoreIntegerBits(a, &b->unk8, 0x18);
RestoreIntegerBits(a, &b->clientSpecies, 0x9);
RestoreIntegerBits(a, &b->unk10.unk10, 0x20);
RestoreIntegerBits(a, &b->playerName, 0x50);
RestoreIntegerBits(a, &b->unk20.flags, 0x8);
RestoreIntegerBits(a, &b->unk20.quantity, 0x8);
RestoreIntegerBits(a, &b->unk20.id, 0x8);
RestoreIntegerBits(a, &b->unk24, 0x20);
RestoreIntegerBits(a, &b->unk28, 0x20);
RestoreIntegerBits(a, &b->rescuesAllowed, 0x8);
RestoreIntegerBits(a, &temp, 1);
b->unk2D = temp & 1;
}
void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b)
{
u8 neg1;
u8 zero;
u8 *puVar2;
neg1 = -1;
zero = 0;
SaveIntegerBits(a, &b->mailType, 4);
SaveDungeonLocation(a, &b->dungeon);
SaveIntegerBits(a, &b->unk8, 0x18);
SaveIntegerBits(a, &b->clientSpecies, 0x9);
SaveIntegerBits(a, &b->unk10.unk10, 0x20);
SaveIntegerBits(a, &b->playerName, 0x50);
SaveIntegerBits(a, &b->unk20.flags, 0x8);
SaveIntegerBits(a, &b->unk20.quantity, 0x8);
SaveIntegerBits(a, &b->unk20.id, 0x8);
SaveIntegerBits(a, &b->unk24, 0x20);
SaveIntegerBits(a, &b->unk28, 0x20);
SaveIntegerBits(a, &b->rescuesAllowed, 0x8);
if(b->unk2D != 0)
puVar2 = &neg1;
else
puVar2 = &zero;
SaveIntegerBits(a, puVar2, 1);
}
void sub_80958E4(u32 *a, u32 b)
{
*a = b;
}

View File

@ -40,19 +40,19 @@ struct unkStruct_203B490 *GetMailInfo(void)
void InitializeMailJobsNews(void)
{
s32 index;
for(index = 0; index < 4; index++)
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
{
ResetMailboxSlot(index);
}
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
ResetPelipperBoardSlot(index);
}
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
ResetJobSlot(index);
}
for(index = 0; index < 56; index++)
for(index = 0; index < NUM_POKEMON_NEWS; index++)
{
gUnknown_203B490->PKMNNewsReceived[index] = FALSE;
}

View File

@ -1,3 +1,4 @@
#include "constants/mailbox.h"
#include "global.h"
#include "constants/dungeon.h"
#include "constants/monster.h"
@ -35,11 +36,11 @@ void SortPelipperJobs(void)
struct WonderMail mail;
for(index1 = 0; index1 < 7; index1++)
for(index1 = 0; index1 < MAX_ACCEPTED_JOBS - 1; index1++)
{
for(index2 = index1 + 1; index2 < 8; index2++)
for(index2 = index1 + 1; index2 < MAX_ACCEPTED_JOBS; index2++)
{
if(gUnknown_203B490->pelipperBoardJobs[index2].mailType != WONDER_MAIL_TYPE_NONE)
if(gUnknown_203B490->pelipperBoardJobs[index2].mailType != MAIL_TYPE_NONE)
{
if((gUnknown_203B490->pelipperBoardJobs[index1].dungeon.id > gUnknown_203B490->pelipperBoardJobs[index2].dungeon.id) ||
((gUnknown_203B490->pelipperBoardJobs[index1].dungeon.id == gUnknown_203B490->pelipperBoardJobs[index2].dungeon.id) && (gUnknown_203B490->pelipperBoardJobs[index1].dungeon.floor > gUnknown_203B490->pelipperBoardJobs[index2].dungeon.floor)))
@ -60,15 +61,15 @@ void GeneratePelipperJobs(void)
s32 index;
range = RandRange(4,8);
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
gUnknown_203B490->pelipperBoardJobs[index].mailType = WONDER_MAIL_TYPE_NONE;
gUnknown_203B490->pelipperBoardJobs[index].mailType = MAIL_TYPE_NONE;
}
index = 0;
if (sub_8097318(0xe) != 0) {
mail = GetPelipperBoardSlotInfo(0);
mail->mailType = 2;
mail->mailType = MAIL_TYPE_UNK2;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 1;
mail->dungeon.id = DUNGEON_UPROAR_FOREST;
@ -86,7 +87,7 @@ void GeneratePelipperJobs(void)
if (sub_8097318(0xf) != 0) {
mail = GetPelipperBoardSlotInfo(index);
mail->mailType = 3;
mail->mailType = MAIL_TYPE_UNK3;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 2;
mail->dungeon.id = DUNGEON_HOWLING_FOREST;
@ -103,7 +104,7 @@ void GeneratePelipperJobs(void)
if (sub_8097318(0x1c) != 0) {
mail = GetPelipperBoardSlotInfo(index);
mail->mailType = 4;
mail->mailType = MAIL_TYPE_UNK4;
mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6;
mail->unk2 = 3;
mail->dungeon.id = DUNGEON_WISH_CAVE;
@ -130,9 +131,9 @@ bool8 IsMailinJobSlot(struct WonderMail *mail)
struct WonderMail *jobSlot;
s32 index;
for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < 8; jobSlot++, index++)
for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < MAX_ACCEPTED_JOBS; jobSlot++, index++)
{
if(jobSlot->mailType != WONDER_MAIL_TYPE_NONE)
if(jobSlot->mailType != MAIL_TYPE_NONE)
if(mail->missionType == jobSlot->missionType)
if(mail->unk2 == jobSlot->unk2)
if(mail->dungeon.id == jobSlot->dungeon.id)
@ -166,9 +167,9 @@ bool8 sub_809693C(struct WonderMail *mail)
{
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
escortMission = TRUE;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if ((gUnknown_203B490->jobSlots[index].mailType == 6) &&
if ((gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_TAKEN_JOB) &&
(sub_8095E38(&gUnknown_203B490->jobSlots[index],dungeonIndex,floor,escortMission) != 0))
{
return TRUE;
@ -184,7 +185,7 @@ s32 GetNumAcceptedJobs(void)
s32 count;
count = 0;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if (!IsJobSlotEmpty(index)) {
count++;
@ -200,11 +201,11 @@ s32 CountJobsinDungeon(u8 dungeon)
s32 count;
count = 0;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
mail = GetJobSlotInfo(index);
if ((mail->dungeon.id == dungeon) &&
(((mail->mailType == 6 || (mail->mailType == 8)) || (mail->mailType == 9)))) {
(((mail->mailType == MAIL_TYPE_TAKEN_JOB || (mail->mailType == MAIL_TYPE_UNK8)) || (mail->mailType == MAIL_TYPE_UNK9)))) {
count++;
}
}
@ -218,11 +219,11 @@ bool8 sub_8096A08(u8 dungeon, s32 param_2)
u32 local_14;
s32 temp;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
mail = GetJobSlotInfo(index);
if(mail->dungeon.id == dungeon)
if(mail->mailType == 6)
if(mail->mailType == MAIL_TYPE_TAKEN_JOB)
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
{
temp = 0xffffff00;
@ -246,9 +247,9 @@ bool8 AcceptJob(struct WonderMail *mail)
{
s32 index;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if(gUnknown_203B490->jobSlots[index].mailType == WONDER_MAIL_TYPE_NONE)
if(gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_NONE)
{
gUnknown_203B490->jobSlots[index] = *mail;
return FALSE;
@ -264,7 +265,7 @@ struct WonderMail *GetJobSlotInfo(u8 index)
bool8 IsJobSlotEmpty(u8 index)
{
if(gUnknown_203B490->jobSlots[index].mailType == WONDER_MAIL_TYPE_NONE)
if(gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_NONE)
return TRUE;
else
return FALSE;
@ -283,7 +284,7 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
if (jobSlot->dungeon.id == dungeon) {
switch(jobSlot->missionType) {
case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
if (jobSlot->mailType == 6) {
if (jobSlot->mailType == MAIL_TYPE_TAKEN_JOB) {
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventory_203B460->teamItems[index];
@ -295,13 +296,13 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
break;
case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT:
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
if (jobSlot->mailType == 9) {
if (jobSlot->mailType == MAIL_TYPE_UNK9) {
param_1->unk0 = TRUE;
}
break;
case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET:
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
if (jobSlot->mailType == 9) {
if (jobSlot->mailType == MAIL_TYPE_UNK9) {
param_1->unk0 = TRUE;
param_1->targetSpecies = jobSlot->targetSpecies;
}
@ -316,10 +317,10 @@ s16 sub_8096B98(u8 dungeon)
struct WonderMail *mail;
s32 index;
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
mail = GetJobSlotInfo(index);
if(mail->mailType == 6)
if(mail->mailType == MAIL_TYPE_TAKEN_JOB)
if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT)
if(mail->dungeon.id == dungeon)
return mail->targetSpecies;
@ -332,13 +333,13 @@ void sub_8096BD0(void)
s32 index;
struct WonderMail *mail;
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < 8; mail++, index++)
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < MAX_ACCEPTED_JOBS; mail++, index++)
{
switch(mail->mailType)
{
case 7:
case 8:
case 9:
case MAIL_TYPE_UNK7:
case MAIL_TYPE_UNK8:
case MAIL_TYPE_UNK9:
ResetJobSlot(index);
break;
}
@ -352,7 +353,7 @@ bool8 sub_8096C08(u8 *jobIndex)
s32 index;
struct WonderMail *mail;
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < 8; mail++, index++)
for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < MAX_ACCEPTED_JOBS; mail++, index++)
{
if(mail->mailType > 4 && mail->unk2 == 4)
{
@ -366,7 +367,7 @@ bool8 sub_8096C08(u8 *jobIndex)
void ResetJobSlot(u8 index)
{
gUnknown_203B490->jobSlots[index].mailType = WONDER_MAIL_TYPE_NONE;
gUnknown_203B490->jobSlots[index].mailType = MAIL_TYPE_NONE;
gUnknown_203B490->jobSlots[index].dungeon.id = 99;
gUnknown_203B490->jobSlots[index].dungeon.floor = 0;
gUnknown_203B490->jobSlots[index].rewardType = MONEY1;

View File

@ -95,7 +95,7 @@ bool8 GenerateMailJobDungeonInfo(struct WonderMail *mail)
bool8 sub_8095E38(struct WonderMail *mail, u8 dungeon, u32 floor, u8 param_4)
{
if (mail->mailType != 0) {
if (mail->mailType != MAIL_TYPE_NONE) {
if ((mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) && (param_4 == 1)) {
if (mail->dungeon.id == dungeon) {
return TRUE;
@ -127,14 +127,14 @@ u8 sub_8095E78(void)
for(index = 0; index < 4; index++)
{
if((gUnknown_203B490->mailboxSlots[index].mailType != 0) && (gUnknown_203B490->mailboxSlots[index].rewardType == FRIEND_AREA))
if((gUnknown_203B490->mailboxSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->mailboxSlots[index].rewardType == FRIEND_AREA))
flag = TRUE;
}
for(index = 0; index < 8; index++)
{
if((gUnknown_203B490->jobSlots[index].mailType != 0) && (gUnknown_203B490->jobSlots[index].rewardType == FRIEND_AREA))
if((gUnknown_203B490->jobSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->jobSlots[index].rewardType == FRIEND_AREA))
flag = TRUE;
}

View File

@ -41,15 +41,15 @@ u32 RestoreMailInfo(u8 *r0, u32 size)
u32 temp;
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
for(index = 0; index < 4; index++)
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
{
RestoreWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]);
}
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
RestoreWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]);
}
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
RestoreWonderMail(&backup, &gUnknown_203B490->jobSlots[index]);
}
@ -86,15 +86,15 @@ u32 SaveMailInfo(u8 *r0, u32 size)
u32 temp;
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
for(index = 0; index < 4; index++)
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
{
SaveWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]);
}
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
SaveWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]);
}
for(index = 0; index < 8; index++)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
SaveWonderMail(&backup, &gUnknown_203B490->jobSlots[index]);
}

View File

@ -1,17 +1,221 @@
#include "global.h"
#include "pokemon.h"
#include "debug_menu.h"
#include "memory.h"
#include "text.h"
#include "input.h"
#include "menu.h"
#include "menu_input.h"
extern struct unkStruct_203B3F8 *gUnknown_203B3F8;
const struct UnkTextStruct2 gUnknown_80E7ED4 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const struct UnkTextStruct2 gUnknown_80E7EEC = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x13, 0x00, 0x04, 0x00,
0x09, 0x03,
0x03, 0x00,
NULL
};
const struct UnkTextStruct2 gUnknown_80E7F04 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x13, 0x00, 0x0e, 0x00,
0x06, 0x04,
0x04, 0x00,
NULL
};
ALIGNED(4) const u8 gDebug_NumberText2[] = "Number?";
ALIGNED(4) const u8 gDebug_LevelText[] = "LEVEL";
ALIGNED(4) const u8 gDebug_Name[] = "Name";
static const u8 fill0[] = "pksdir0";
extern u32 sub_8013BBC(u32 *);
extern void sub_803AE58(void);
extern u32 sub_8016080(void);
extern void sub_803ACD0(u32);
extern void sub_80160D8(void);
extern u32 sub_8023A94(u32);
extern s16 sub_8023B44(void);
extern void sub_8023C60(void);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8013C68(u32 *);
extern void sub_80073E0(u32);
extern void sub_8023DA4(void);
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
extern void sub_803ACE8();
extern void sub_803AD88();
extern void sub_803AF38();
extern void sub_803AF88();
extern void sub_803AFE8();
extern void sub_803B034();
extern void sub_8023868(u32, u32, u32, u32);
extern void sub_8023B7C(u32);
extern void sub_8013AA0(u32 *);
extern void sub_801602C(u32, u8 *);
extern void sub_803AEB0();
u32 sub_803AC24(void)
{
gUnknown_203B3F8 = MemoryAlloc(sizeof(struct unkStruct_203B3F8), 8);
sub_803ACD0(0);
return 1;
}
u32 sub_803AC48(void)
{
switch(gUnknown_203B3F8->state)
{
case 0:
sub_803ACD0(1);
break;
case 1:
case 2:
sub_803AF38();
break;
case 3:
sub_803AF88();
break;
case 5:
sub_803AFE8();
break;
case 6:
sub_803B034();
break;
case 4:
case 7:
default:
return 3;
}
return 0;
}
void sub_803ACB4(void)
{
if(gUnknown_203B3F8 != NULL)
{
MemoryFree(gUnknown_203B3F8);
gUnknown_203B3F8 = NULL;
}
}
void sub_803ACD0(u32 newState)
{
gUnknown_203B3F8->state = newState;
sub_803ACE8();
sub_803AD88();
}
void sub_803ACE8(void)
{
s32 index;
sub_8006518(gUnknown_203B3F8->unkE0);
switch(gUnknown_203B3F8->state)
{
case 3:
sub_803AEB0();
gUnknown_203B3F8->unkE0[2] = gUnknown_80E7EEC;
sub_8012CAC(&gUnknown_203B3F8->unkE0[2], gUnknown_203B3F8->unk90);
break;
case 5:
gUnknown_203B3F8->unkE0[3] = gUnknown_80E7F04;
break;
default:
for(index = 0; index < 4; index++)
{
gUnknown_203B3F8->unkE0[index] = gUnknown_80E7ED4;
}
break;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B3F8->unkE0, 1, 1);
}
void sub_803AD88(void)
{
switch(gUnknown_203B3F8->state)
{
case 1:
sub_8023868(1, 0, 0, 10);
break;
case 2:
sub_8023B7C(1);
break;
case 3:
sub_8023DA4();
sub_8012D60(&gUnknown_203B3F8->unk10, gUnknown_203B3F8->unk90, 0, gUnknown_203B3F8->unkD0, gUnknown_203B3F8->menuAction, 2);
break;
case 5:
gUnknown_203B3F8->unk70 = 3;
gUnknown_203B3F8->unk68 = 1;
gUnknown_203B3F8->unk6C = 0x64;
gUnknown_203B3F8->unk64 = gUnknown_203B3F8->pokemon->unkHasNextStage;
gUnknown_203B3F8->unk74 = 3;
gUnknown_203B3F8->unk78 = &gUnknown_203B3F8->unkE0[3];
gUnknown_203B3F8->unk7C = 0x2C;
gUnknown_203B3F8->unk80 = 0x12;
sub_8013AA0(&gUnknown_203B3F8->unk60);
sub_803AE58();
break;
case 6:
sub_801602C(2, gUnknown_203B3F8->pokemon->name);
case 0:
case 4:
case 7:
default:
break;
}
}
void sub_803AE58(void)
{
sub_8008C54(gUnknown_203B3F8->unk74);
sub_80073B8(gUnknown_203B3F8->unk74);
xxx_call_draw_string(4, 0, gDebug_NumberText2, gUnknown_203B3F8->unk74, 0);
sub_8013C68(&gUnknown_203B3F8->unk60);
sub_80073E0(gUnknown_203B3F8->unk74);
sub_8023DA4();
sub_8012EA4(&gUnknown_203B3F8->unk10, 0);
}
void sub_803AEB0(void)
{
s32 index;
s32 loopMax;
MemoryFill16(gUnknown_203B3F8->unkD0,0,sizeof(gUnknown_203B3F8->unkD0));
loopMax = 0;
gUnknown_203B3F8->unk90[loopMax].text = gDebug_LevelText;
gUnknown_203B3F8->unk90[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B3F8->unk90[loopMax].text = gDebug_Name;
gUnknown_203B3F8->unk90[loopMax].menuAction = 5;
loopMax += 1;
gUnknown_203B3F8->unk90[loopMax].text = NULL;
gUnknown_203B3F8->unk90[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if (gUnknown_203B3F8->unkD0[index] == 0)
{
gUnknown_203B3F8->menuAction = gUnknown_203B3F8->unk90[index].menuAction;
break;
}
}
}
void sub_803AF38(void)
{

View File

@ -1,161 +0,0 @@
#include "global.h"
#include "memory.h"
#include "pokemon.h"
#include "text.h"
#include "input.h"
#include "menu.h"
#include "debug_menu.h"
#include "menu_input.h"
extern struct unkStruct_203B3F8 *gUnknown_203B3F8;
extern struct UnkTextStruct2 gUnknown_80E7ED4;
extern struct UnkTextStruct2 gUnknown_80E7EEC;
extern struct UnkTextStruct2 gUnknown_80E7F04;
extern u8 gDebug_NumberText2[];
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8013C68(u32 *);
extern void sub_80073E0(u32);
extern void sub_8023DA4(void);
extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32);
void sub_803ACD0(u32);
extern void sub_803ACE8();
extern void sub_803AD88();
extern void sub_803AF38();
extern void sub_803AF88();
extern void sub_803AFE8();
extern void sub_803B034();
extern void sub_8023868(u32, u32, u32, u32);
extern void sub_8023B7C(u32);
extern void sub_8023DA4();
extern void sub_8013AA0(u32 *);
extern void sub_803AE58();
extern void sub_801602C(u32, u8 *);
extern void sub_803AEB0();
u32 sub_803AC24(void)
{
gUnknown_203B3F8 = MemoryAlloc(sizeof(struct unkStruct_203B3F8), 8);
sub_803ACD0(0);
return 1;
}
u32 sub_803AC48(void)
{
switch(gUnknown_203B3F8->state)
{
case 0:
sub_803ACD0(1);
break;
case 1:
case 2:
sub_803AF38();
break;
case 3:
sub_803AF88();
break;
case 5:
sub_803AFE8();
break;
case 6:
sub_803B034();
break;
case 4:
case 7:
default:
return 3;
}
return 0;
}
void sub_803ACB4(void)
{
if(gUnknown_203B3F8 != NULL)
{
MemoryFree(gUnknown_203B3F8);
gUnknown_203B3F8 = NULL;
}
}
void sub_803ACD0(u32 newState)
{
gUnknown_203B3F8->state = newState;
sub_803ACE8();
sub_803AD88();
}
void sub_803ACE8(void)
{
s32 index;
sub_8006518(gUnknown_203B3F8->unkE0);
switch(gUnknown_203B3F8->state)
{
case 3:
sub_803AEB0();
gUnknown_203B3F8->unkE0[2] = gUnknown_80E7EEC;
sub_8012CAC(&gUnknown_203B3F8->unkE0[2], gUnknown_203B3F8->unk90);
break;
case 5:
gUnknown_203B3F8->unkE0[3] = gUnknown_80E7F04;
break;
default:
for(index = 0; index < 4; index++)
{
gUnknown_203B3F8->unkE0[index] = gUnknown_80E7ED4;
}
break;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B3F8->unkE0, 1, 1);
}
void sub_803AD88(void)
{
switch(gUnknown_203B3F8->state)
{
case 1:
sub_8023868(1, 0, 0, 10);
break;
case 2:
sub_8023B7C(1);
break;
case 3:
sub_8023DA4();
sub_8012D60(&gUnknown_203B3F8->unk10, gUnknown_203B3F8->unk90, 0, gUnknown_203B3F8->unkD0, gUnknown_203B3F8->menuAction, 2);
break;
case 5:
gUnknown_203B3F8->unk70 = 3;
gUnknown_203B3F8->unk68 = 1;
gUnknown_203B3F8->unk6C = 0x64;
gUnknown_203B3F8->unk64 = gUnknown_203B3F8->pokemon->unkHasNextStage;
gUnknown_203B3F8->unk74 = 3;
gUnknown_203B3F8->unk78 = &gUnknown_203B3F8->unkE0[3];
gUnknown_203B3F8->unk7C = 0x2C;
gUnknown_203B3F8->unk80 = 0x12;
sub_8013AA0(&gUnknown_203B3F8->unk60);
sub_803AE58();
break;
case 6:
sub_801602C(2, gUnknown_203B3F8->pokemon->name);
case 0:
case 4:
case 7:
default:
break;
}
}
void sub_803AE58(void)
{
sub_8008C54(gUnknown_203B3F8->unk74);
sub_80073B8(gUnknown_203B3F8->unk74);
xxx_call_draw_string(4, 0, gDebug_NumberText2, gUnknown_203B3F8->unk74, 0);
sub_8013C68(&gUnknown_203B3F8->unk60);
sub_80073E0(gUnknown_203B3F8->unk74);
sub_8023DA4();
sub_8012EA4(&gUnknown_203B3F8->unk10, 0);
}

View File

@ -6,6 +6,7 @@
#include "menu.h"
#include "text.h"
#include "menu_input.h"
#include "friend_area.h"
struct unkStruct_203B3F0
{
@ -45,19 +46,62 @@ struct unkStruct_203B3F4
extern struct unkStruct_203B3F4 *gUnknown_203B3F4;
extern void sub_801B3C0(struct Item *);
extern void sub_8013AA0(u32 *);
extern struct UnkTextStruct2 gUnknown_80E7E34;
extern struct UnkTextStruct2 gUnknown_80E7E4C;
extern struct UnkTextStruct2 gUnknown_80E7E64;
extern const char gDebug_NumberText;
extern struct UnkTextStruct2 gUnknown_80E7E8C;
extern struct UnkTextStruct2 gUnknown_80E7EA4;
const struct UnkTextStruct2 gUnknown_80E7E34 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const struct UnkTextStruct2 gUnknown_80E7E4C = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x14, 0x00, 0x04, 0x00,
0x06, 0x03,
0x03, 0x00,
NULL
};
const struct UnkTextStruct2 gUnknown_80E7E64 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x14, 0x00, 0x0e, 0x00,
0x06, 0x04,
0x04, 0x00,
NULL
};
ALIGNED(4) const char gDebug_NumberText[] = "Number?";
ALIGNED(4) static const u8 fill0[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80E7E8C = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const struct UnkTextStruct2 gUnknown_80E7EA4 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x15, 0x00, 0x04, 0x00,
0x06, 0x03,
0x03, 0x00,
NULL
};
ALIGNED(4) const u8 gDebug_CloseText[] = "CLOSE";
ALIGNED(4) const u8 gDebug_OpenText[] = "OPEN";
ALIGNED(4) static const u8 fill1[] = "pksdir0";
extern bool8 *gFriendAreas;
extern const char *gUnknown_80D4970[];
extern void sub_801B3C0(struct Item *);
extern void sub_8013AA0(u32 *);
extern void sub_801C8C4(u32, u32, u32, u32);
extern void sub_801CB5C(u32);
extern void sub_801CCD8();
@ -77,9 +121,6 @@ extern void sub_8021354(u32);
extern void sub_8021494();
extern void sub_803AA34();
extern void sub_8021774(u8,u32, u32);
extern u8 gDebug_CloseText[];
extern u8 gDebug_OpenText[];
extern void UnlockFriendArea(u8);
extern void sub_809249C(u8, u32);
extern void sub_8021830(void);
extern u32 sub_80217EC(void);
@ -218,7 +259,7 @@ void sub_803A690(void)
{
sub_8008C54(gUnknown_203B3F0->unkB0);
sub_80073B8(gUnknown_203B3F0->unkB0);
xxx_call_draw_string(4, 0, &gDebug_NumberText, gUnknown_203B3F0->unkB0, 0);
xxx_call_draw_string(4, 0, gDebug_NumberText, gUnknown_203B3F0->unkB0, 0);
sub_8013C68(&gUnknown_203B3F0->unk9C);
sub_80073E0(gUnknown_203B3F0->unkB0);
sub_801CCD8();
@ -227,23 +268,21 @@ void sub_803A690(void)
void sub_803A6F0(void)
{
s32 menuAction;
struct unkStruct_203B3F0 *preload;
s32 loopMax = 0;
gUnknown_203B3F0->menuItems[0].text = &gDebug_NumberText;
gUnknown_203B3F0->menuItems[0].menuAction = 2;
gUnknown_203B3F0->menuItems[loopMax].text = gDebug_NumberText;
gUnknown_203B3F0->menuItems[loopMax].menuAction = 2;
gUnknown_203B3F0->menuAction = 2;
if (!IsNotMoneyOrUsedTMItem(gUnknown_203B3F0->id)) {
gUnknown_203B3F0->menuItems[0].menuAction = -1;
gUnknown_203B3F0->menuItems[loopMax].menuAction = -1;
gUnknown_203B3F0->menuAction = 3;
}
preload = gUnknown_203B3F0;
// this var gets loaded in between the sets... very dumb
menuAction = 1;
preload->menuItems[1].text = *gUnknown_80D4970;
preload->menuItems[1].menuAction = 3;
preload->menuItems[2].text = NULL;
preload->menuItems[2].menuAction = menuAction;
loopMax += 1;
gUnknown_203B3F0->menuItems[loopMax].text = *gUnknown_80D4970;
gUnknown_203B3F0->menuItems[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B3F0->menuItems[loopMax].text = NULL;
gUnknown_203B3F0->menuItems[loopMax].menuAction = 1;
}
void sub_803A740(void)

View File

@ -7,7 +7,7 @@
#include "dungeon_entity.h"
#include "dungeon_global_data.h"
#include "dungeon_leader.h"
#include "dungeon_movement_1.h"
#include "dungeon_movement.h"
#include "dungeon_util.h"
#include "dungeon_pokemon_attributes.h"
#include "pokemon.h"

View File

@ -12,7 +12,7 @@
#include "dungeon_capabilities_1.h"
#include "dungeon_global_data.h"
#include "dungeon_map_access.h"
#include "dungeon_movement_1.h"
#include "dungeon_movement.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_random.h"
#include "dungeon_range.h"

View File

@ -5,7 +5,7 @@
#include "dungeon_global_data.h"
#include "dungeon_ai.h"
#include "dungeon_leader.h"
#include "dungeon_movement_1.h"
#include "dungeon_movement.h"
#include "dungeon_util.h"
extern s16 gSpeedTurns[2][25];

View File

@ -1,7 +1,20 @@
#include "global.h"
#include "dungeon_movement.h"
#include "map.h"
#include "dungeon_movement.h"
#include "constants/item.h"
#include "constants/iq_skill.h"
#include "constants/status.h"
#include "constants/type.h"
#include "constants/weather.h"
#include "dungeon_engine.h"
#include "dungeon_items.h"
#include "dungeon_global_data.h"
#include "dungeon_map_access.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_util.h"
#include "pokemon.h"
#include "weather.h"
extern u8 gWalkableTileToCrossableTerrain[8];
@ -24,3 +37,294 @@ u8 GetCrossableTerrain(s16 species)
return walkableTiles;
}
}
u8 sub_807034C(s16 id, struct Tile *tile)
{
s32 crossableTerrain;
u16 tileFlags;
s32 id_s32;
id_s32 = id;
if ((tile->monster == NULL) && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) {
crossableTerrain = GetCrossableTerrain(id_s32);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_LIQUID:
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE;
break;
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
}
return TRUE;
}
u8 sub_80703A0(struct Entity *pokemon, struct Position *pos)
{
u8 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
tile = GetTile(pos->x,pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y) && (tile->monster == NULL) && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) {
if ((IsCurrentFixedRoomBossFight()) || ((entityInfo->transformStatus != STATUS_MOBILE && (!HasHeldItem(pokemon, ITEM_MOBILE_SCARF))))) {
crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
}
if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) {
crossableTerrain = CROSSABLE_TERRAIN_WALL;
}
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_LIQUID:
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE;
break;
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
} else return FALSE;
}
return TRUE;
}
bool8 CanCrossWalls(struct Entity *pokemon)
{
struct EntityInfo *pokemonInfo = pokemon->info;
struct EntityInfo *pokemonInfo2 = pokemonInfo;
if (pokemonInfo2->transformStatus == STATUS_MOBILE)
{
return TRUE;
}
if (HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
{
return TRUE;
}
if (GetCrossableTerrain(pokemonInfo2->id) == CROSSABLE_TERRAIN_WALL)
{
return TRUE;
}
return FALSE;
}
bool8 sub_807049C(struct Entity *pokemon, struct Position *pos)
{
s32 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
tile = GetTile(pos->x, pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
(tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) {
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
}
if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) {
crossableTerrain = CROSSABLE_TERRAIN_WALL;
}
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_LIQUID:
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE;
break;
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
}
else return FALSE;
}
return TRUE;
}
bool8 sub_8070564(struct Entity *pokemon, struct Position *pos)
{
u8 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
#ifndef NONMATCHING
register s32 tileFlags_0 asm("r0");
register s32 crossableTerrain2 asm("r3");
#else
s32 tileFlags_0;
s32 crossableTerrain2;
#endif
entityInfo = pokemon->info;
tile = GetTile(pos->x, pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
(tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) {
crossableTerrain2 = crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags_0 = tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_WALL: // 3
case CROSSABLE_TERRAIN_CREVICE: // 2
case 4 ... INT_MAX:
if (crossableTerrain2 > CROSSABLE_TERRAIN_WALL) return FALSE;
if(tileFlags != 0)
return FALSE;
break;
case CROSSABLE_TERRAIN_REGULAR: // 0
if(tileFlags == TERRAIN_TYPE_NORMAL)
default:
return FALSE;
break;
case CROSSABLE_TERRAIN_LIQUID: // 1
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
if (tileFlags_0 == TERRAIN_TYPE_NORMAL) return FALSE;
return TRUE;
}
}
return TRUE;
}
bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos)
{
s32 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
tile = GetTile(pos->x, pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER)))) {
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
}
if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) {
crossableTerrain = CROSSABLE_TERRAIN_WALL;
}
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
case CROSSABLE_TERRAIN_LIQUID:
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
}
else return FALSE;
}
return TRUE;
}
bool8 sub_80706A4(struct Entity *pokemon, struct Position *pos)
{
s32 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
tile = GetTile(pos->x, pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER) && (tile->monster->info == entityInfo)))) {
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
}
if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) {
crossableTerrain = CROSSABLE_TERRAIN_WALL;
}
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_LIQUID:
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE;
break;
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
}
else return FALSE;
}
return TRUE;
}
s32 CalcSpeedStage(struct Entity *pokemon)
{
s32 index;
s32 speed;
struct EntityInfo * entityInfo;
entityInfo = pokemon->info;
speed = 0;
for(index = 0; index < NUM_SPEED_COUNTERS; index++)
{
if (entityInfo->speedUpCounters[index + NUM_SPEED_COUNTERS] != 0) {
speed--;
}
if (entityInfo->speedUpCounters[index] != 0) {
speed++;
}
}
if (entityInfo->nonVolatileStatus == STATUS_PARALYSIS) {
speed--;
}
speed += GetMovementSpeed(entityInfo->id);
if ((MonsterIsType(pokemon, TYPE_ICE)) && (GetApparentWeather(pokemon) == WEATHER_SNOW)) {
speed++;
}
if (entityInfo->apparentID == MONSTER_DEOXYS_SPEED) {
speed++;
}
if ((entityInfo->id == MONSTER_KECLEON) && entityInfo->isNotTeamMember &&
gDungeon->unk66E) {
speed++;
}
if (speed < 0) {
speed = 0;
}
if (MAX_SPEED_STAGE < speed) {
speed = MAX_SPEED_STAGE;
}
entityInfo->speedStage = speed;
return speed;
}

View File

@ -1,282 +0,0 @@
#include "global.h"
#include "dungeon_movement_1.h"
#include "constants/item.h"
#include "constants/iq_skill.h"
#include "constants/status.h"
#include "constants/type.h"
#include "constants/weather.h"
#include "dungeon_engine.h"
#include "dungeon_items.h"
#include "dungeon_global_data.h"
#include "dungeon_movement.h"
#include "dungeon_map_access.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_util.h"
#include "map.h"
#include "pokemon.h"
#include "weather.h"
u8 sub_80703A0(struct Entity *pokemon, struct Position *pos)
{
u8 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
tile = GetTile(pos->x,pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y) && (tile->monster == NULL) && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) {
if ((IsCurrentFixedRoomBossFight()) || ((entityInfo->transformStatus != STATUS_MOBILE && (!HasHeldItem(pokemon, ITEM_MOBILE_SCARF))))) {
crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
}
if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) {
crossableTerrain = CROSSABLE_TERRAIN_WALL;
}
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_LIQUID:
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE;
break;
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
} else return FALSE;
}
return TRUE;
}
bool8 CanCrossWalls(struct Entity *pokemon)
{
struct EntityInfo *pokemonInfo = pokemon->info;
struct EntityInfo *pokemonInfo2 = pokemonInfo;
if (pokemonInfo2->transformStatus == STATUS_MOBILE)
{
return TRUE;
}
if (HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
{
return TRUE;
}
if (GetCrossableTerrain(pokemonInfo2->id) == CROSSABLE_TERRAIN_WALL)
{
return TRUE;
}
return FALSE;
}
bool8 sub_807049C(struct Entity *pokemon, struct Position *pos)
{
s32 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
tile = GetTile(pos->x, pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
(tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) {
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
}
if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) {
crossableTerrain = CROSSABLE_TERRAIN_WALL;
}
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_LIQUID:
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE;
break;
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
}
else return FALSE;
}
return TRUE;
}
bool8 sub_8070564(struct Entity *pokemon, struct Position *pos)
{
u8 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
#ifndef NONMATCHING
register s32 tileFlags_0 asm("r0");
register s32 crossableTerrain2 asm("r3");
#else
s32 tileFlags_0;
s32 crossableTerrain2;
#endif
entityInfo = pokemon->info;
tile = GetTile(pos->x, pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
(tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) {
crossableTerrain2 = crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags_0 = tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_WALL: // 3
case CROSSABLE_TERRAIN_CREVICE: // 2
case 4 ... INT_MAX:
if (crossableTerrain2 > CROSSABLE_TERRAIN_WALL) return FALSE;
if(tileFlags != 0)
return FALSE;
break;
case CROSSABLE_TERRAIN_REGULAR: // 0
if(tileFlags == TERRAIN_TYPE_NORMAL)
default:
return FALSE;
break;
case CROSSABLE_TERRAIN_LIQUID: // 1
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
if (tileFlags_0 == TERRAIN_TYPE_NORMAL) return FALSE;
return TRUE;
}
}
return TRUE;
}
bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos)
{
s32 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
tile = GetTile(pos->x, pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER)))) {
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
}
if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) {
crossableTerrain = CROSSABLE_TERRAIN_WALL;
}
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
case CROSSABLE_TERRAIN_LIQUID:
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
}
else return FALSE;
}
return TRUE;
}
bool8 sub_80706A4(struct Entity *pokemon, struct Position *pos)
{
s32 crossableTerrain;
struct Tile *tile;
u16 tileFlags;
struct EntityInfo *entityInfo;
entityInfo = pokemon->info;
tile = GetTile(pos->x, pos->y);
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER) && (tile->monster->info == entityInfo)))) {
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
crossableTerrain = GetCrossableTerrain(entityInfo->id);
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
}
if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) {
crossableTerrain = CROSSABLE_TERRAIN_WALL;
}
switch(crossableTerrain)
{
case CROSSABLE_TERRAIN_LIQUID:
if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE;
case CROSSABLE_TERRAIN_REGULAR:
if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE;
break;
case CROSSABLE_TERRAIN_WALL:
default:
return FALSE;
case CROSSABLE_TERRAIN_CREVICE:
if(tileFlags != 0) return FALSE;
}
}
else return FALSE;
}
return TRUE;
}
s32 CalcSpeedStage(struct Entity *pokemon)
{
s32 index;
s32 speed;
struct EntityInfo * entityInfo;
entityInfo = pokemon->info;
speed = 0;
for(index = 0; index < NUM_SPEED_COUNTERS; index++)
{
if (entityInfo->speedUpCounters[index + NUM_SPEED_COUNTERS] != 0) {
speed--;
}
if (entityInfo->speedUpCounters[index] != 0) {
speed++;
}
}
if (entityInfo->nonVolatileStatus == STATUS_PARALYSIS) {
speed--;
}
speed += GetMovementSpeed(entityInfo->id);
if ((MonsterIsType(pokemon, TYPE_ICE)) && (GetApparentWeather(pokemon) == WEATHER_SNOW)) {
speed++;
}
if (entityInfo->apparentID == MONSTER_DEOXYS_SPEED) {
speed++;
}
if ((entityInfo->id == MONSTER_KECLEON) && entityInfo->isNotTeamMember &&
gDungeon->unk66E) {
speed++;
}
if (speed < 0) {
speed = 0;
}
if (MAX_SPEED_STAGE < speed) {
speed = MAX_SPEED_STAGE;
}
entityInfo->speedStage = speed;
return speed;
}

View File

@ -62,7 +62,7 @@ bool8 sub_8071728(struct Entity * pokemon, struct Entity * target, bool8 display
bool8 sub_80717A4(struct Entity *pokemon, u16 moveID)
{
struct EntityInfo * entityInfo;
s32 iVar3;
s32 index;
entityInfo = pokemon->info;
if ((entityInfo->sleep != STATUS_SLEEP) && (entityInfo->sleep != STATUS_NAPPING) && (entityInfo->sleep != STATUS_NIGHTMARE)) {
@ -71,11 +71,15 @@ bool8 sub_80717A4(struct Entity *pokemon, u16 moveID)
else
{
// Pin this register to match
#ifndef NONMATCHING
register struct Move *pokeMove asm("r4");
#else
struct Move *pokeMove;
#endif
struct Move *pokeMove2; // some reason uses another pointer to same struct
for(iVar3 = 0, pokeMove = entityInfo->moves, pokeMove2 = pokeMove; iVar3 < MAX_MON_MOVES; pokeMove++, pokeMove2++, iVar3++)
for(index = 0, pokeMove = entityInfo->moves, pokeMove2 = pokeMove; index < MAX_MON_MOVES; pokeMove++, pokeMove2++, index++)
{
if (((pokeMove->moveFlags & MOVE_FLAG_EXISTS)) && (entityInfo->isTeamLeader || ((pokeMove->moveFlags & MOVE_FLAG_ENABLED_FOR_AI))))
if((sub_805744C(pokemon, pokeMove2, TRUE) != 0) && (pokeMove->PP != 0))

View File

@ -26,7 +26,7 @@ const u8 filler_ex1[8] =
'p', 'k', 's', 'd', 'i', 'r', '0', 0
};
extern struct ExclusivePokemonData *gUnknown_203B498;
EWRAM_DATA_2 struct ExclusivePokemonData *gUnknown_203B498 = {0};
EWRAM_DATA struct ExclusivePokemonData gExclusivePokemonInfo = {0};

View File

@ -15,36 +15,36 @@ u8 sub_80981A0(s32);
bool8 IsExclusivePokemonUnlocked(s16 pokeID)
{
s32 iVar2;
s32 index;
s32 pokeID_s32;
pokeID_s32 = pokeID;
for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++)
for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++)
{
if(gExclusivePokemon[iVar2].poke_id == pokeID_s32)
return gUnknown_203B498->Exclusives[iVar2];
if(gExclusivePokemon[index].poke_id == pokeID_s32)
return gUnknown_203B498->Exclusives[index];
}
return TRUE;
}
void UnlockExclusivePokemon(s16 pokeID)
{
s32 iVar2;
s32 index;
s32 pokeID_s32;
pokeID_s32 = pokeID;
for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++)
for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++)
{
if(gExclusivePokemon[iVar2].poke_id == pokeID_s32)
gUnknown_203B498->Exclusives[iVar2] = TRUE;
if(gExclusivePokemon[index].poke_id == pokeID_s32)
gUnknown_203B498->Exclusives[index] = TRUE;
}
}
void WriteExclusivePokemon(struct unkStruct_8094924 *r0)
{
s32 iVar2;
s32 index;
u8 *puVar2;
u8 stack_0;
@ -58,24 +58,24 @@ void WriteExclusivePokemon(struct unkStruct_8094924 *r0)
SaveIntegerBits(r0, gUnknown_203B498, 1);
for(iVar2 = 0; iVar2 < 424; iVar2++)
for(index = 0; index < 424; index++)
{
stack_0 = sub_8098134(iVar2);
stack_0 = sub_8098134(index);
SaveIntegerBits(r0, &stack_0, 1);
}
for(iVar2 = 0; iVar2 < 64; iVar2++)
for(index = 0; index < 64; index++)
{
stack_1 = sub_8098100(iVar2);
stack_1 = sub_8098100(index);
SaveIntegerBits(r0, &stack_1, 1);
}
for(iVar2 = 0; iVar2 < 31; iVar2++)
for(index = 0; index < 31; index++)
{
stack_2 = sub_80981A0(iVar2);
stack_2 = sub_80981A0(index);
SaveIntegerBits(r0, &stack_2, 1);
}
for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++)
for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++)
{
if(gUnknown_203B498->Exclusives[iVar2])
if(gUnknown_203B498->Exclusives[index])
puVar2 = &neg_1;
else
puVar2 = &zero;
@ -85,7 +85,7 @@ void WriteExclusivePokemon(struct unkStruct_8094924 *r0)
void ReadExclusivePokemon(struct unkStruct_8094924 *r0)
{
s32 iVar2;
s32 index;
u8 stack_0;
u8 stack_1;
u8 stack_2;
@ -93,31 +93,31 @@ void ReadExclusivePokemon(struct unkStruct_8094924 *r0)
memset(gUnknown_203B498, 0, sizeof(struct ExclusivePokemonData));
RestoreIntegerBits(r0, gUnknown_203B498, 1);
for(iVar2 = 0; iVar2 < 424; iVar2++)
for(index = 0; index < 424; index++)
{
RestoreIntegerBits(r0, &stack_0, 1);
if(stack_0)
sub_80980B4(iVar2);
sub_80980B4(index);
}
for(iVar2 = 0; iVar2 < 64; iVar2++)
for(index = 0; index < 64; index++)
{
RestoreIntegerBits(r0, &stack_1, 1);
if(stack_1)
sub_8097FA8(iVar2);
sub_8097FA8(index);
}
for(iVar2 = 0; iVar2 < 31; iVar2++)
for(index = 0; index < 31; index++)
{
RestoreIntegerBits(r0, &stack_2, 1);
if(stack_2)
sub_8098170(iVar2);
sub_8098170(index);
}
for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++)
for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++)
{
RestoreIntegerBits(r0, &stack_3, 1);
do; while(0); // do/while needed for matching - jiang
gUnknown_203B498->Exclusives[iVar2] = 1 & stack_3;
gUnknown_203B498->Exclusives[index] = 1 & stack_3;
}
sub_8097FF8();
}

View File

@ -3,7 +3,7 @@
#include "flash.h"
#include "memory.h"
u8 gFlashEnabled;
EWRAM_DATA_2 bool8 gFlashEnabled = {0};
extern FlashIntrFunc *GetInterruptHandler(s32);

View File

@ -247,7 +247,7 @@ void sub_8027274(void)
case 3:
sub_8027D40(3,&gUnknown_203B2BC->item2);
sub_8023DA4();
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction1,2);
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction1,2);
break;
case 4:
sub_8024458(gUnknown_203B2BC->targetPoke,2);
@ -263,7 +263,7 @@ void sub_8027274(void)
break;
case 0xc:
sub_801A9E0();
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction2,2);
sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction2,2);
break;
case 0xd:
HeldItemToSlot(&slot, &gUnknown_203B2BC->itemToGive);

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "memory.h"
#include "text.h"
#include "input.h"
#include "menu.h"
@ -68,6 +69,64 @@ ALIGNED(4) const u8 gUnknown_80DD958[] = _("Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_
static const u8 filler[] = "pksdir0";
extern u8 *gUnknown_80D4920[];
extern u8 *gUnknown_80D4928[];
extern u8 *gUnknown_80D4970[];
void sub_80276A8(void)
{
int index;
s32 loopMax;
loopMax = 0;
MemoryFill16(gUnknown_203B2BC->unk16C,0,sizeof(gUnknown_203B2BC->unk16C));
gUnknown_203B2BC->menuItems[loopMax].text = gFriendActionGive;
gUnknown_203B2BC->menuItems[loopMax].menuAction = 10;
if (GetNumberOfFilledInventorySlots() == 0) {
gUnknown_203B2BC->unk16C[loopMax] = 1;
}
loopMax += 1;
gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4970;
gUnknown_203B2BC->menuItems[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B2BC->menuItems[loopMax].text = 0;
gUnknown_203B2BC->menuItems[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B2BC->unk16C[index] == 0)
{
if(gUnknown_203B2BC->menuItems[index].menuAction == gUnknown_203B2BC->menuAction2)
return;
}
}
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B2BC->unk16C[index] == 0)
{
gUnknown_203B2BC->menuAction2 = gUnknown_203B2BC->menuItems[index].menuAction;
break;
}
}
}
void sub_8027794(void)
{
s32 loopMax = 0;
MemoryFill16(gUnknown_203B2BC->unk16C,0,sizeof(gUnknown_203B2BC->unk16C));
gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4920;
gUnknown_203B2BC->menuItems[loopMax].menuAction = 0x2;
loopMax += 1;
gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4928;
gUnknown_203B2BC->menuItems[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B2BC->menuItems[loopMax].text = NULL;
gUnknown_203B2BC->menuItems[loopMax].menuAction = 1;
}
void sub_80277FC(void)
{
struct PokemonStruct *pokeStruct;

File diff suppressed because it is too large Load Diff

View File

@ -1,298 +0,0 @@
#include "global.h"
#include "memory.h"
#include "text.h"
#include "input.h"
#include "menu.h"
#include "item.h"
#include "pokemon.h"
#include "moves.h"
#include "menu_input.h"
// there might be more overlap with unkStruct_203B2BC
// I was working on the moves and put the data that seemed to correspond to that
// into a separate struct
struct unkStruct_203B2B4
{
// size: 0x178
s32 unk0;
s32 state;
u32 fallbackState;
u8 unkC;
u8 unkD;
s16 species;
u32 unk10;
struct BulkItem item1;
struct BulkItem item2;
/* 0x1C */ struct PokemonStruct *pokeStruct;
u32 moveIndex; // some sort of move index
u16 moveID;
struct Move moves[8];
u16 moveIDs[4]; // some list of move IDs
u32 menuAction1;
s32 menuAction2;
struct MenuStruct unk78;
struct MenuItem unkC8[4];
u8 fillE8[0x108 - 0xE8];
s16 unk108[8];
struct UnkTextStruct2 unk118[4];
};
extern struct unkStruct_203B2B4 *gUnknown_203B2B4;
extern struct UnkTextStruct2 gUnknown_80DD190;
extern struct UnkTextStruct2 gUnknown_80DD160;
extern struct UnkTextStruct2 gUnknown_80DD148;
extern struct UnkTextStruct2 gUnknown_80DD178;
extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_80DD1A8[];
extern u8 gUnknown_80DD270[];
extern u8 gUnknown_80DD1C8[];
extern u8 gUnknown_80DD1EC[];
extern u8 gUnknown_80DD240[];
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern s16 sub_80A5728(void);
extern u8 sub_8002658(s16);
extern bool8 sub_8024108(u32);
extern void sub_8025434(s32);
extern void sub_80259F0(void);
extern void sub_8025A84(void);
extern void sub_8025BCC(void);
extern void sub_8025BE8(void);
extern void sub_8025C04(void);
extern void sub_8025CB4(void);
extern void sub_8025D90(void);
extern void sub_8025DAC(void);
extern void sub_8025E08(void);
extern void sub_8025E24(void);
extern void sub_8025E44(void);
extern void sub_802544C(void);
extern void sub_8025518(void);
extern void sub_8025728(void);
extern void sub_802591C(void);
extern u32 sub_801B3C0(struct Item *param_1);
extern void sub_8023868(u32, u32, u32, u32);
extern void sub_801F1B0(u32, u32);
extern void sub_801A5D8(u32,u32, u32, u32);
extern void sub_801A8D0(u32);
extern void sub_801A9E0(void);
extern void PlaySound(u32);
extern void sub_8024458(s16, u32);
extern void sub_801BEEC(s16);
extern void sub_8023B7C(u32);
extern void sub_8023DA4(void);
extern void unk_CopyMoves4To8(struct Move *, struct Move *);
extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32);
extern void GetLinkedSequence(u32, struct Move *, u16*);
extern void sub_801F808(u16 *);
u32 sub_801602C(u32 r0, u8 *name);
extern void sub_8025E68(u32 , struct BulkItem *);
bool8 sub_80252F0(s32 param_1)
{
if ((param_1 == 2) && (sub_8024108(4) != '\0')) {
return FALSE;
}
else {
gUnknown_203B2B4 = MemoryAlloc(sizeof(struct unkStruct_203B2B4),8);
gUnknown_203B2B4->menuAction1 = 0;
gUnknown_203B2B4->unk0 = param_1;
gUnknown_203B2B4->unkC = sub_8002658(sub_80A5728());
gUnknown_203B2B4->unkD = 0;
if (gUnknown_203B2B4->unk0 == 2) {
sub_8025434(0);
}
else {
sub_8025434(1);
}
return TRUE;
}
}
u32 sub_8025354(void)
{
switch(gUnknown_203B2B4->state) {
case 0x13:
return 3;
case 1:
case 2:
sub_80259F0();
break;
case 3:
sub_8025A84();
break;
case 4:
sub_8025BCC();
break;
case 5:
sub_8025BE8();
break;
case 0xb:
case 0xc:
sub_8025C04();
break;
case 0xd:
sub_8025CB4();
break;
case 0xe:
sub_8025D90();
break;
case 0xf:
case 0x10:
sub_8025DAC();
break;
case 0x11:
sub_8025E08();
break;
case 0x12:
sub_8025E24();
break;
default:
sub_8025E44();
break;
}
return 0;
}
u8 sub_802540C(void)
{
return gUnknown_203B2B4->unkD;
}
void sub_8025418(void)
{
if(gUnknown_203B2B4 != NULL)
{
MemoryFree(gUnknown_203B2B4);
gUnknown_203B2B4 = NULL;
}
}
void sub_8025434(s32 newState)
{
gUnknown_203B2B4->state = newState;
sub_802544C();
sub_8025518();
}
void sub_802544C(void)
{
s32 index;
sub_8006518(gUnknown_203B2B4->unk118);
switch(gUnknown_203B2B4->state)
{
case 3:
if (gUnknown_203B2B4->unk0 == 0) {
gUnknown_203B2B4->unk118[3] = gUnknown_80DD190;
}
sub_8025728();
gUnknown_203B2B4->unk118[2] = gUnknown_80DD160;
sub_8012CAC(&gUnknown_203B2B4->unk118[2],gUnknown_203B2B4->unkC8);
break;
case 0xD:
sub_802591C();
gUnknown_203B2B4->unk118[2] = gUnknown_80DD178;
sub_8012CAC(&gUnknown_203B2B4->unk118[2],gUnknown_203B2B4->unkC8);
break;
default:
for(index = 0; index < 4; index++)
{
gUnknown_203B2B4->unk118[index] = gUnknown_80DD148;
}
break;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2B4->unk118,1,1);
}
void sub_8025518(void)
{
u32 uVar3;
struct Item item;
switch(gUnknown_203B2B4->state)
{
case 0:
gUnknown_203B2B4->fallbackState = 1;
sub_80141B4(gUnknown_80DD1A8,0,0,0x301);
break;
case 1:
uVar3 = 4;
if (gUnknown_203B2B4->unk0 == 0) {
uVar3 = 2;
}
sub_8023868(uVar3,0,0,10);
break;
case 2:
sub_8023B7C(1);
break;
case 3:
if (gUnknown_203B2B4->unk0 == 0) {
sub_8025E68(3,&gUnknown_203B2B4->item2);
}
sub_8023DA4();
PrintColoredPokeNameToBuffer(gAvailablePokemonNames,gUnknown_203B2B4->pokeStruct,7);
PrintColoredPokeNameToBuffer(gAvailablePokemonNames + 0x50,gUnknown_203B2B4->pokeStruct,6);
sub_8012D60(&gUnknown_203B2B4->unk78,gUnknown_203B2B4->unkC8,0,gUnknown_203B2B4->unk108,gUnknown_203B2B4->menuAction1,2);
break;
case 4:
sub_8024458(gUnknown_203B2B4->species,2);
break;
case 5:
sub_801BEEC(gUnknown_203B2B4->species);
break;
case 0xb:
sub_801A5D8(1,0,0,10);
break;
case 0xc:
sub_801A8D0(1);
break;
case 0xd:
sub_801A9E0();
sub_8012D60(&gUnknown_203B2B4->unk78,gUnknown_203B2B4->unkC8,0,gUnknown_203B2B4->unk108,gUnknown_203B2B4->menuAction2,2);
break;
case 0xe:
HeldItemToSlot(&item, &gUnknown_203B2B4->item1);
sub_801B3C0(&item);
break;
case 8:
gUnknown_203B2B4->fallbackState = 2;
sub_80141B4(gUnknown_80DD1C8,0,0,0x101);
break;
case 9:
gUnknown_203B2B4->fallbackState = 2;
sub_80141B4(gUnknown_80DD1EC,0,0,0x101);
break;
case 10:
gUnknown_203B2B4->fallbackState = 2;
sub_80141B4(gUnknown_80DD240,0,0,0x101);
break;
case 7:
gUnknown_203B2B4->fallbackState = 1;
PlaySound(0xcf);
sub_80141B4(gUnknown_80DD270,0,0,0x101);
break;
case 0xf:
unk_CopyMoves4To8(gUnknown_203B2B4->moves,gUnknown_203B2B4->pokeStruct->moves);
sub_801EE10(3,gUnknown_203B2B4->species,gUnknown_203B2B4->moves,0,0,0);
break;
case 0x10:
sub_801F1B0(1,0);
break;
case 0x11:
GetLinkedSequence(gUnknown_203B2B4->moveIndex,gUnknown_203B2B4->moves, gUnknown_203B2B4->moveIDs);
sub_801F808(gUnknown_203B2B4->moveIDs);
break;
case 0x12:
sub_801602C(2,gUnknown_203B2B4->pokeStruct->name);
break;
case 0x13:
break;
}
}

View File

@ -14,7 +14,7 @@ extern u32 sub_802F298();
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
extern struct WonderMailStruct_203B33C *gUnknown_203B33C;
EWRAM_DATA_2 struct WonderMailStruct_203B33C *gUnknown_203B33C = {0};
extern u8 sub_8039880(void);

View File

@ -17,7 +17,6 @@
extern struct TeamInventory *gTeamInventory_203B460;
extern u8 *gUnknown_203B484;
extern void SetFriendRescueMenuState(u32);
extern s32 sub_80144A4(s32 *);
@ -82,9 +81,7 @@ extern u16 sub_8023B44(void);
extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_203B480 *r0);
extern void sub_8095274(u32);
extern void sub_80951BC(struct unkStruct_203B480 *r0);
extern u8 sub_800D588(void);
extern s32 FindOpenMailSlot(void);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern u8 gUnknown_80E44A4[];
@ -724,7 +721,7 @@ void sub_8033DBC(void)
case PASSWORD_ENTRY_AOK_MAIL_SUCCESS:
mail.mailType = 5;
sub_80951FC(&mail);
mail2 = sub_8095228(GetMailIndex(1, mail.unk10.unk10));
mail2 = GetMailatIndex(GetMailIndex(1, mail.unk10.unk10));
mail2->mailType = 7;
MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484));
SetFriendRescueMenuState(0x40);
@ -1592,7 +1589,7 @@ void sub_8034D74(void)
SetFriendRescueMenuState(FRIEND_RESCUE_MENU_ERROR_2);
break;
case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS:
mail2 = sub_8095228(GetMailIndex(4, mail.unk10.unk10));
mail2 = GetMailatIndex(GetMailIndex(4, mail.unk10.unk10));
*mail2 = mail;
mail2->mailType = 6;
gUnknown_203B33C->unk420 = mail.unk10.unk10;
@ -1691,7 +1688,7 @@ void sub_8034F88(void)
switch(menuAction)
{
case 6:
mail = sub_8095228(gUnknown_203B33C->unk218);
mail = GetMailatIndex(gUnknown_203B33C->unk218);
if(gUnknown_203B33C->item.id != ITEM_NOTHING)
mail->unk20 = gUnknown_203B33C->item;
gTeamInventory_203B460->teamStorage[gUnknown_203B33C->item.id]--;
@ -1893,7 +1890,7 @@ void sub_8035210(void)
case 0xD:
if(gUnknown_203B33C->unk528 == 0x13)
{
mail = sub_8095228(GetFirstIndexofMailType(5));
mail = GetMailatIndex(GetFirstIndexofMailType(5));
if(mail->unk20.id != ITEM_NOTHING)
SetFriendRescueMenuState(0x53);
else

View File

@ -17,7 +17,8 @@ extern u32 sub_801F890(void);
extern void sub_801F8D0(void);
extern u8 IsNextMoveLinked(u32, struct Move *);
extern void PlaySound(u32);
extern void sub_801EF38(u32);
extern u32 sub_801EF38(u32);
extern u32 sub_801F194(void);
void sub_801ED28(void)
{

View File

@ -151,7 +151,7 @@ void xxx_init_helditem_8090B08(struct BulkItem *held, u8 id)
held->quantity = 0;
}
else {
held->id = 0;
held->id = ITEM_NOTHING;
held->quantity = 0;
}
}
@ -494,7 +494,7 @@ void FillInventoryGaps()
_slot += (size_t)gTeamInventory_203B460->teamItems;
slot = (struct Item*)_slot; // &gTeamInventory_203B460->teamItems[end];
#endif
slot->id = 0;
slot->id = ITEM_NOTHING;
slot->quantity = 0;
slot->flags = 0;
}
@ -567,7 +567,7 @@ void ShiftItemsDownFrom(s32 start)
for (i = start, j = start + 1; i < INVENTORY_SIZE - 1; i++, j++) {
gTeamInventory_203B460->teamItems[i] = gTeamInventory_203B460->teamItems[j];
}
gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].id = 0;
gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].id = ITEM_NOTHING;
gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].flags = 0;
}
@ -621,7 +621,7 @@ void ConvertMoneyItemToMoney()
result = GetMoneyValue(current_slot);
AddToTeamMoney(result);
current_slot->id = 0;
current_slot->id = ITEM_NOTHING;
current_slot->quantity = 0;
current_slot->flags = 0;
}
@ -1471,7 +1471,7 @@ void ClearAllItems_8091FB4() {
slot->flags &= 0xf7;
if (slot->id == ITEM_POKE) {
AddToTeamMoney(GetMoneyValue(slot));
slot->id = 0;
slot->id = ITEM_NOTHING;
slot->quantity = 0;
slot->flags = 0;
}
@ -1493,7 +1493,7 @@ void ClearAllItems_8091FB4() {
if (pokemon->heldItem.id) {
if (pokemon->heldItem.id == ITEM_POKE) {
AddToTeamMoney(GetMoneyValueHeld(&pokemon->heldItem));
pokemon->heldItem.id = 0;
pokemon->heldItem.id = ITEM_NOTHING;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,633 +0,0 @@
#include "constants/item.h"
#include "global.h"
#include "input.h"
#include "memory.h"
#include "text.h"
#include "item.h"
#include "team_inventory.h"
#include "input.h"
#include "kangaskhan_storage.h"
#include "menu_input.h"
extern struct unkStruct_203B208 *gUnknown_203B208;
extern struct unkStruct_203B20C *gUnknown_203B20C;
extern void sub_8017F10(u32);
extern void sub_8018588(void);
extern void sub_8018620(void);
extern void sub_8018904(void);
extern void sub_8018AC8(void);
extern void sub_80186F8(void);
extern void sub_8018854(void);
extern void sub_80189C8(void);
extern void sub_8018AE4(void);
extern void sub_8017F28();
extern void sub_8018100();
extern void UpdateKangaskhanStorageState(u32);
extern s32 sub_80144A4(s32 *);
extern void sub_801B450();
extern u32 sub_801B410(void);
extern void sub_801CBB8();
extern bool8 sub_801ADA0(u32);
extern void sub_8099690(u32);
extern u32 sub_8013BBC(u32 *);
extern void sub_8017598(void);
extern u32 sub_801CA08(u32);
extern u32 sub_801CFB8(void);
extern u8 sub_801CB24();
extern void sub_801AD34(u32);
extern u32 sub_801A6E8(u32);
extern u32 sub_801AEA8(void);
extern u32 sub_801A8AC(void);
extern void sub_801A928(void);
extern void sub_80182E4(void);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8013C68(u32 *);
extern void sub_80073E0(u32);
extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32);
extern void sub_801A9E0();
extern void sub_801841C();
extern void sub_801CCD8();
extern void sub_80184D4();
extern void sub_8018280();
extern void sub_8013AA0(u32 *);
extern void sub_801B3C0(struct Item *);
extern void sub_801A5D8(u32, u32, u32, u32);
extern void sub_801C8C4(u32, u32, u32, u32);
extern void sub_801CB5C(u32);
extern void sub_801A8D0(u32);
extern u32 sub_801CFE0(u8);
extern void sub_801CF94(void);
extern void sub_801AE84(void);
extern s32 sub_801AED0(s32);
extern u8 sub_801CF14(u32);
extern u8 sub_801CF50(u32);
extern struct UnkTextStruct2 gUnknown_80DB7B8;
extern struct UnkTextStruct2 gUnknown_80DB7E8;
extern struct UnkTextStruct2 gUnknown_80DB7D0;
extern struct UnkTextStruct2 gUnknown_80DB800;
extern struct UnkTextStruct2 gUnknown_80DB818;
extern u8 gUnknown_80DB830[];
extern u8 *gUnknown_80D4920[];
extern u8 *gUnknown_80D4928[];
void sub_80177F8(void)
{
struct unkStruct_203B208 *preload;
u8 *nullText;
u32 defaultAction;
preload = gUnknown_203B208;
nullText = NULL;
preload->unk24[0].text = *gUnknown_80D4920;
preload->unk24[0].menuAction = 4;
defaultAction = 1;
preload->unk24[1].text = *gUnknown_80D4928;
preload->unk24[1].menuAction = 5;
preload->unk24[2].text = nullText;
preload->unk24[2].menuAction = defaultAction;
}
void sub_8017828(void)
{
s32 menuAction;
if (sub_80144A4(&menuAction) == 0) {
if (menuAction != 1) {
gUnknown_203B208->menuAction1 = menuAction;
}
switch(menuAction)
{
case 2:
if (GetNumberOfFilledInventorySlots() == 0) {
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_NO_INV_ITEMS);
}
else if (sub_801CF50(0) != 0) {
UpdateKangaskhanStorageState(8);
}
else {
UpdateKangaskhanStorageState(0xb);
}
break;
case 3:
if (sub_801CF14(1) != 0) {
UpdateKangaskhanStorageState(7);
}
else if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) {
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_TOO_MANY_ITEMS);
}
else {
UpdateKangaskhanStorageState(0x14);
}
break;
case 6:
UpdateKangaskhanStorageState(2);
break;
case 1:
UpdateKangaskhanStorageState(3);
break;
}
}
}
void sub_80178D0(void)
{
s32 menuAction;
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction)
{
case 4:
MoveToStorage(&gUnknown_203B208->storedItem);
ShiftItemsDownFrom(gUnknown_203B208->itemIndex);
FillInventoryGaps();
UpdateKangaskhanStorageState(0x13);
break;
case 1:
case 5:
UpdateKangaskhanStorageState(0xe);
break;
}
}
}
void sub_8017928(void)
{
int menuAction;
struct BulkItem item;
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction)
{
case 4:
gTeamInventory_203B460->teamStorage[gUnknown_203B208->storedItem.id] -= gUnknown_203B208->storedItem.quantity;
item.id = gUnknown_203B208->storedItem.id;
item.quantity = gUnknown_203B208->storedItem.quantity;
AddHeldItemToInventory(&item);
UpdateKangaskhanStorageState(0x1d);
break;
case 1:
case 5:
UpdateKangaskhanStorageState(0x17);
break;
}
}
}
void sub_80179A8(void)
{
s32 index;
s32 menuAction;
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction)
{
case 4:
for(index = 0; index < INVENTORY_SIZE; index++)
{
if (sub_801AED0(index) != 0) {
MoveToStorage(&gTeamInventory_203B460->teamItems[index]);
gTeamInventory_203B460->teamItems[index].id = 0;
gTeamInventory_203B460->teamItems[index].flags = 0;
}
}
FillInventoryGaps();
sub_801AE84();
UpdateKangaskhanStorageState(0x13);
break;
case 1:
case 5:
UpdateKangaskhanStorageState(0xe);
break;
}
}
}
void sub_8017A1C(void)
{
s32 itemID;
int menuAction;
struct BulkItem item;
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction)
{
case 4:
for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++)
{
if(sub_801CFE0(itemID) != 0)
{
item.id = itemID;
if(IsThrowableItem(item.id))
if(gTeamInventory_203B460->teamStorage[item.id] > 0x63)
{
item.quantity = 0x63;
}
else
{
item.quantity = gTeamInventory_203B460->teamStorage[item.id];
}
else
{
item.quantity = 1;
}
gTeamInventory_203B460->teamStorage[item.id] -= item.quantity;
AddHeldItemToInventory(&item);
}
}
FillInventoryGaps();
sub_801CF94();
UpdateKangaskhanStorageState(0x1d);
break;
case 1:
case 5:
UpdateKangaskhanStorageState(0x17);
break;
}
}
}
void sub_8017AF8(void)
{
switch(sub_801A6E8(1))
{
case 3:
if(sub_801AEA8() != 0)
{
sub_8099690(0);
UpdateKangaskhanStorageState(0x12);
}
else
{
gUnknown_203B208->itemIndex = sub_801A8AC();
gUnknown_203B208->storedItem = gTeamInventory_203B460->teamItems[gUnknown_203B208->itemIndex];
UpdateKangaskhanStorageState(0xF);
}
break;
case 4:
gUnknown_203B208->itemIndex = sub_801A8AC();
gUnknown_203B208->storedItem = gTeamInventory_203B460->teamItems[gUnknown_203B208->itemIndex];
UpdateKangaskhanStorageState(0x10);
break;
case 2:
sub_801A928();
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_MAIN_MENU);
break;
}
}
void sub_8017B88(void)
{
switch(sub_801CA08(1))
{
case 3:
if(sub_801CFB8() != 0){
UpdateKangaskhanStorageState(0x1C);
}
else
{
gUnknown_203B208->id = sub_801CB24();
xxx_init_itemslot_8090A8C(&gUnknown_203B208->storedItem, gUnknown_203B208->id, 0);
gUnknown_203B208->storedItem.quantity = 1;
UpdateKangaskhanStorageState(0x19);
}
break;
case 4:
gUnknown_203B208->id = sub_801CB24();
xxx_init_itemslot_8090A8C(&gUnknown_203B208->storedItem, gUnknown_203B208->id, 0);
gUnknown_203B208->storedItem.quantity = 1;
UpdateKangaskhanStorageState(0x1A);
break;
case 2:
sub_801CBB8();
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_MAIN_MENU);
break;
case 1:
sub_801AD34(0);
break;
}
}
void sub_8017C28(void)
{
sub_801CA08(0);
sub_8012FD8(&gUnknown_203B208->unk58);
switch(sub_8013BBC(&gUnknown_203B208->unkA8))
{
case 1:
sub_8017598();
break;
case 3:
gUnknown_203B208->storedItem.quantity = gUnknown_203B208->unkA8;
UpdateKangaskhanStorageState(0x1B);
break;
case 2:
UpdateKangaskhanStorageState(0x17);
break;
case 0:
default:
break;
}
}
void sub_8017C7C(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) {
sub_8013114(&gUnknown_203B208->unk58, &menuAction);
if(menuAction != 1) gUnknown_203B208->menuAction2 = menuAction;
}
switch(menuAction)
{
case 2:
sub_8099690(0);
if(!IsNotMoneyOrUsedTMItem(gUnknown_203B208->storedItem.id))
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_IS_MONEY_USED_TM);
else if(!sub_801ADA0(gUnknown_203B208->itemIndex))
UpdateKangaskhanStorageState(0xA);
else
UpdateKangaskhanStorageState(0x11);
break;
case 6:
sub_8099690(0);
UpdateKangaskhanStorageState(0x10);
break;
case 1:
UpdateKangaskhanStorageState(0xE);
break;
}
}
void sub_8017D24(void)
{
s32 menuAction;
menuAction = 0;
sub_801CA08(0);
if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) {
sub_8013114(&gUnknown_203B208->unk58, &menuAction);
if(menuAction != 1) gUnknown_203B208->menuAction3 = menuAction;
}
switch(menuAction)
{
case 3:
if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
{
sub_801CBB8();
UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_TOO_MANY_ITEMS);
}
else if(IsThrowableItem(gUnknown_203B208->storedItem.id))
UpdateKangaskhanStorageState(0x18);
else
UpdateKangaskhanStorageState(0x1B);
break;
case 6:
UpdateKangaskhanStorageState(0x1A);
break;
case 1:
UpdateKangaskhanStorageState(0x17);
break;
}
}
void sub_8017DC0(void)
{
switch(sub_801B410())
{
case 0:
case 1:
default:
break;
case 2:
case 3:
sub_801B450();
UpdateKangaskhanStorageState(0xE);
break;
}
}
void sub_8017DDC(void)
{
switch(sub_801B410())
{
case 0:
case 1:
default:
break;
case 2:
case 3:
sub_801B450();
UpdateKangaskhanStorageState(0x17);
break;
}
}
void AdvanceToKangaskhanStorageFallbackState(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
UpdateKangaskhanStorageState(gUnknown_203B208->fallbackState);
}
}
u32 sub_8017E1C(void)
{
ResetUnusedInputStruct();
sub_800641C(NULL, 1, 1);
gUnknown_203B20C = MemoryAlloc(sizeof(struct unkStruct_203B20C), 8);
gUnknown_203B20C->menuAction1 = 0;
gUnknown_203B20C->menuAction2 = 0;
gUnknown_203B20C->menuAction3 = 0;
sub_8017F10(0);
return 1;
}
u32 sub_8017E54(void)
{
switch(gUnknown_203B20C->state)
{
case 0:
sub_8017F10(1);
break;
case 1:
sub_8018588();
break;
case 4:
case 5:
sub_8018620();
break;
case 6:
sub_8018904();
break;
case 7:
sub_8018AC8();
break;
case 10:
case 11:
sub_80186F8();
break;
case 12:
sub_8018854();
break;
case 13:
sub_80189C8();
break;
case 14:
sub_8018AE4();
break;
case 3:
return 3;
}
return 0;
}
void sub_8017EF4(void)
{
if(gUnknown_203B20C != NULL)
{
MemoryFree(gUnknown_203B20C);
gUnknown_203B20C = NULL;
}
}
void sub_8017F10(u32 newState)
{
gUnknown_203B20C->state = newState;
sub_8017F28();
sub_8018100();
}
void sub_8017F28(void)
{
s32 index;
sub_8006518(gUnknown_203B20C->unkF0);
switch(gUnknown_203B20C->state)
{
case 1:
gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8;
gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8;
gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8;
sub_80182E4();
gUnknown_203B20C->unkF0[2] = gUnknown_80DB7D0;
sub_8012CAC(&gUnknown_203B20C->unkF0[2], gUnknown_203B20C->unk20);
break;
case 4:
case 5:
gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8;
gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8;
gUnknown_203B20C->unkF0[2] = gUnknown_80DB7B8;
gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8;
break;
case 10:
case 11:
gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8;
gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8;
gUnknown_203B20C->unkF0[2] = gUnknown_80DB7B8;
gUnknown_203B20C->unkF0[0] = gUnknown_80DB800;
break;
case 12:
gUnknown_203B20C->unkF0[1] = gUnknown_80DB818;
break;
case 6:
case 13:
gUnknown_203B20C->unkF0[2] = gUnknown_80DB7E8;
break;
default:
case 0:
for(index = 0; index < 4; index++)
{
gUnknown_203B20C->unkF0[index] = gUnknown_80DB7B8;
}
break;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B20C->unkF0, 1, 1);
}
void sub_8018100(void)
{
switch(gUnknown_203B20C->state)
{
case 1:
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction1, 2);
break;
case 4:
sub_801A5D8(3, 3, 0, 0xA);
break;
case 5:
sub_801A8D0(1);
break;
case 6:
sub_801A9E0();
sub_801841C();
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction2, 2);
break;
case 7:
sub_801B3C0(&gUnknown_203B20C->item);
break;
case 10:
sub_801C8C4(1, 3, 0, 0xA);
sub_801AD34(0);
break;
case 11:
sub_801CB5C(1);
sub_801AD34(0);
break;
case 12:
gUnknown_203B20C->unkD0 = 2;
gUnknown_203B20C->unkC8 = 1;
if(gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] > 99)
gUnknown_203B20C->unkCC = 99;
else
gUnknown_203B20C->unkCC = gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id];
gUnknown_203B20C->unkC4 = gUnknown_203B20C->unkCC;
gUnknown_203B20C->unkD4 = 1;
gUnknown_203B20C->unkD8 = &gUnknown_203B20C->unkF0[1];
gUnknown_203B20C->unkDC = 0x28;
gUnknown_203B20C->unkE0 = 0x12;
sub_8013AA0(&gUnknown_203B20C->unkC0);
sub_8018280();
break;
case 13:
sub_801CCD8();
sub_801AD34(0);
sub_80184D4();
sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction3, 2);
break;
case 14:
sub_801B3C0(&gUnknown_203B20C->item);
break;
case 0:
default:
break;
}
}
void sub_8018280(void)
{
sub_8008C54(gUnknown_203B20C->unkD4);
sub_80073B8(gUnknown_203B20C->unkD4);
xxx_call_draw_string(4, 0, gUnknown_80DB830, gUnknown_203B20C->unkD4, 0); // Number?
sub_8013C68(&gUnknown_203B20C->unkC0);
sub_80073E0(gUnknown_203B20C->unkD4);
sub_801CCD8();
sub_801AD34(0);
sub_8012EA4(&gUnknown_203B20C->unk70,0);
}

View File

@ -1,348 +0,0 @@
#include "global.h"
#include "item.h"
#include "kangaskhan_storage.h"
#include "team_inventory.h"
#include "menu_input.h"
extern struct unkStruct_203B20C *gUnknown_203B20C;
extern u32 sub_801B410();
extern void sub_801B450();
extern void sub_8017F10(u32);
extern u8 sub_801CF14(u32);
extern void sub_801CBB8(void);
extern void sub_8017F10(u32);
extern u8 sub_801ADA0(s32);
extern void sub_801A928(void);
extern void sub_8099690(u32);
extern u32 sub_801A6E8(u32);
extern u32 sub_8013BBC(u32 *);
extern u32 sub_801CA08(u32);
extern void sub_8018280(void);
extern void sub_801CF94(void);
extern u8 sub_801CB24();
extern u32 sub_801CFB8(void);
extern void sub_801AD34(u32);
extern u32 sub_801CFE0(u8);
extern u32 sub_801A8AC(void);
extern u32 sub_801AEA8(void);
extern u32 sub_801AED0(u32);
extern void sub_801AE84(void);
extern u8 sub_801CF50(u32);
void sub_8018588(void)
{
s32 menuAction;
menuAction = 0;
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
{
sub_8013114(&gUnknown_203B20C->unk70, &menuAction);
if(menuAction != 1) gUnknown_203B20C->menuAction1 = menuAction;
}
switch(menuAction)
{
case 2:
if((GetNumberOfFilledInventorySlots() != 0) && sub_801CF50(0) == 0)
sub_8017F10(4);
else
sub_8012EA4(&gUnknown_203B20C->unk70, 1);;
break;
case 3:
if(sub_801CF14(1) != 0)
sub_8012EA4(&gUnknown_203B20C->unk70, 1);
else
sub_8017F10(0xA);
break;
case 1:
sub_8017F10(3);
break;
}
}
void sub_8018620(void)
{
s32 index;
switch(sub_801A6E8(1))
{
case 3:
if(sub_801AEA8() != 0)
{
for(index = 0; index < INVENTORY_SIZE; index++)
{
if(sub_801AED0(index) != 0)
{
MoveToStorage(&gTeamInventory_203B460->teamItems[index]);
gTeamInventory_203B460->teamItems[index].id = 0;
gTeamInventory_203B460->teamItems[index].flags = 0;
}
}
FillInventoryGaps();
sub_801AE84();
if(GetNumberOfFilledInventorySlots() == 0)
{
sub_801A928();
sub_8017F10(1);
}
else
{
sub_8017F10(5);
}
}
else
{
gUnknown_203B20C->itemIndex = sub_801A8AC();
gUnknown_203B20C->item = gTeamInventory_203B460->teamItems[gUnknown_203B20C->itemIndex];
sub_8017F10(6);
}
break;
case 4:
gUnknown_203B20C->itemIndex = sub_801A8AC();
gUnknown_203B20C->item = gTeamInventory_203B460->teamItems[gUnknown_203B20C->itemIndex];
sub_8017F10(7);
break;
case 2:
sub_801A928();
sub_8017F10(1);
break;
}
}
void sub_80186F8(void)
{
struct BulkItem item;
s32 itemID;
switch(sub_801CA08(1))
{
case 3:
if(sub_801CFB8() != 0)
{
for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++)
{
if(sub_801CFE0(itemID) != 0)
{
item.id = itemID;
if(IsThrowableItem(item.id))
if(gTeamInventory_203B460->teamStorage[item.id] > 0x63)
{
item.quantity = 0x63;
}
else
{
item.quantity = gTeamInventory_203B460->teamStorage[item.id];
}
else
{
item.quantity = 1;
}
gTeamInventory_203B460->teamStorage[item.id] -= item.quantity;
AddHeldItemToInventory(&item);
}
}
FillInventoryGaps();
sub_801CF94();
if((sub_801CF14(1) == 0) && (GetNumberOfFilledInventorySlots() < INVENTORY_SIZE))
sub_8017F10(0xB);
else
{
sub_801CBB8();
sub_8017F10(1);
}
}
else
{
gUnknown_203B20C->id = sub_801CB24();
xxx_init_itemslot_8090A8C(&gUnknown_203B20C->item, gUnknown_203B20C->id, 0);
gUnknown_203B20C->item.quantity = 1;
sub_8017F10(0xD);
}
break;
case 4:
gUnknown_203B20C->id = sub_801CB24();
xxx_init_itemslot_8090A8C(&gUnknown_203B20C->item, gUnknown_203B20C->id, 0);
gUnknown_203B20C->item.quantity = 1;
sub_8017F10(0xE);
break;
case 2:
sub_801CBB8();
sub_8017F10(1);
break;
case 1:
sub_801AD34(0);
break;
}
}
void sub_8018854(void)
{
struct BulkItem item;
sub_801CA08(0);
sub_8012FD8(&gUnknown_203B20C->unk70);
switch(sub_8013BBC(&gUnknown_203B20C->unkC0))
{
case 3:
gUnknown_203B20C->item.quantity = gUnknown_203B20C->unkC0;
gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] -= gUnknown_203B20C->item.quantity;
item.id = gUnknown_203B20C->item.id;
item.quantity = gUnknown_203B20C->item.quantity;
AddHeldItemToInventory(&item);
if(sub_801CF14(1) == 0)
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
{
error:
sub_801CBB8();
sub_8017F10(0x1);
}
else
sub_8017F10(0xB);
else
goto error;
break;
case 2:
sub_8017F10(0xB);
break;
case 1:
sub_8018280();
break;
case 0:
break;
}
}
void sub_8018904(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
{
sub_8013114(&gUnknown_203B20C->unk70, &menuAction);
if(menuAction != 1) gUnknown_203B20C->menuAction2 = menuAction;
}
switch(menuAction)
{
case 2:
if(IsNotMoneyOrUsedTMItem(gUnknown_203B20C->item.id))
if(sub_801ADA0(gUnknown_203B20C->itemIndex) == 0)
error:
sub_8012EA4(&gUnknown_203B20C->unk70, 1);
else
{
MoveToStorage(&gUnknown_203B20C->item);
ShiftItemsDownFrom(gUnknown_203B20C->itemIndex);
FillInventoryGaps();
if(GetNumberOfFilledInventorySlots() == 0)
{
sub_801A928();
sub_8017F10(1);
}
else
sub_8017F10(5);
}
else
goto error;
break;
case 4:
sub_8099690(0);
sub_8017F10(7);
break;
case 1:
sub_8017F10(5);
break;
}
}
void sub_80189C8(void)
{
struct BulkItem item;
s32 menuAction;
menuAction = 0;
sub_801CA08(0);
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
{
sub_8013114(&gUnknown_203B20C->unk70, &menuAction);
if(menuAction != 1) gUnknown_203B20C->menuAction3 = menuAction;
}
switch(menuAction)
{
case 3:
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
sub_8012EA4(&gUnknown_203B20C->unk70, 1);
else if(IsThrowableItem(gUnknown_203B20C->item.id))
sub_8017F10(0xC);
else
{
gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] -= gUnknown_203B20C->item.quantity;
item.id = gUnknown_203B20C->item.id;
item.quantity = gUnknown_203B20C->item.quantity;
AddHeldItemToInventory(&item);
if(sub_801CF14(1) == 0)
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
{
error:
sub_801CBB8();
sub_8017F10(1);
}
else
{
sub_8017F10(0xB);
}
else
goto error;
}
break;
case 4:
sub_8017F10(0xE);
break;
case 1:
sub_8017F10(0xB);
break;
}
}
void sub_8018AC8(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
sub_8017F10(0x5);
break;
case 0:
case 1:
default:
break;
}
}
void sub_8018AE4(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
sub_8017F10(0xB);
break;
case 0:
case 1:
default:
break;
}
}

View File

@ -111,21 +111,135 @@ extern void PlaySound(u16 songIndex);
u32 CountKecleonItems(void);
extern u8 *gUnknown_80D4984[];
extern u8 *gUnknown_80D4970[];
extern u8 * gUnknown_80D4978[];
extern u8 gUnknown_80DB8A0[];
extern u8 *gUnknown_80D4934[];
void sub_80194F8(void)
{
int index;
s32 loopMax;
MemoryFill16(gUnknown_203B210->unk74,0,sizeof(gUnknown_203B210->unk74));
loopMax = 0;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4978;
gUnknown_203B210->menuItems[loopMax].menuAction = 2;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4984;
gUnknown_203B210->menuItems[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = gUnknown_80DB8A0;
gUnknown_203B210->menuItems[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4970;
gUnknown_203B210->menuItems[loopMax].menuAction = 7;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4934;
gUnknown_203B210->menuItems[loopMax].menuAction = 1;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = NULL;
gUnknown_203B210->menuItems[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B210->unk74[index] == 0)
{
if(gUnknown_203B210->menuItems[index].menuAction == gUnknown_203B210->menuAction1)
return;
}
}
for(index = 0; index < loopMax; index++)
{
if (gUnknown_203B210->unk74[index] == 0)
{
gUnknown_203B210->menuAction1 = gUnknown_203B210->menuItems[index].menuAction;
break;
}
}
}
void sub_80195C0(void)
{
int index;
s32 loopMax;
MemoryFill16(gUnknown_203B210->unk74,0,sizeof(gUnknown_203B210->unk74));
loopMax = 0;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4978;
gUnknown_203B210->menuItems[loopMax].menuAction = 2;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4970;
gUnknown_203B210->menuItems[loopMax].menuAction = 7;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = NULL;
gUnknown_203B210->menuItems[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B210->unk74[index] == 0)
{
if(gUnknown_203B210->menuItems[index].menuAction == gUnknown_203B210->menuAction3)
return;
}
}
for(index = 0; index < loopMax; index++)
{
if (gUnknown_203B210->unk74[index] == 0)
{
gUnknown_203B210->menuAction3 = gUnknown_203B210->menuItems[index].menuAction;
break;
}
}
}
void sub_8019660(void)
{
int index;
s32 loopMax;
MemoryFill16(gUnknown_203B210->unk74,0, sizeof(gUnknown_203B210->unk74));
loopMax = 0;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4984;
gUnknown_203B210->menuItems[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4970;
gUnknown_203B210->menuItems[loopMax].menuAction = 7;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = NULL;
gUnknown_203B210->menuItems[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B210->unk74[index] == 0)
{
if(gUnknown_203B210->menuItems[index].menuAction == gUnknown_203B210->menuAction2)
return;
}
}
for(index = 0; index < loopMax; index++)
{
if (gUnknown_203B210->unk74[index] == 0)
{
gUnknown_203B210->menuAction2 = gUnknown_203B210->menuItems[index].menuAction;
break;
}
}
}
void sub_8019700(void)
{
u32 menuAction;
struct unkStruct_203B210 *preload;
u8 *nullText;
preload = gUnknown_203B210;
nullText = NULL;
preload->menuItems[0].text = *gUnknown_80D4920;
preload->menuItems[0].menuAction = 5;
menuAction = 1;
preload->menuItems[1].text = *gUnknown_80D4928;
preload->menuItems[1].menuAction = 6;
preload->menuItems[2].text = nullText;
preload->menuItems[2].menuAction = menuAction;
s32 loopMax = 0;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4920;
gUnknown_203B210->menuItems[loopMax].menuAction = 5;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4928;
gUnknown_203B210->menuItems[loopMax].menuAction = 6;
loopMax += 1;
gUnknown_203B210->menuItems[loopMax].text = NULL;
gUnknown_203B210->menuItems[loopMax].menuAction = 1;
}
void sub_8019730(void)

View File

@ -29,10 +29,10 @@ struct LoadScreen
/* 0x258 */ u8 formattedHelperInfo[0x24];
};
EWRAM_DATA struct LoadScreen *gLoadScreen;
EWRAM_DATA struct MenuItem gUnknown_203B378[2];
EWRAM_DATA u32 gUnknown_203B388[12];
EWRAM_DATA u32 gUnknown_203B3B8[12];
EWRAM_DATA_2 struct LoadScreen *gLoadScreen = {0};
EWRAM_DATA_2 struct MenuItem gUnknown_203B378[2] = {0};
EWRAM_DATA_2 u32 gUnknown_203B388[12] = {0};
EWRAM_DATA_2 u32 gUnknown_203B3B8[12] = {0};
extern struct unkStruct_203B484 *gUnknown_203B484;

View File

@ -1,3 +1,4 @@
#include "gba/defines.h"
#include "global.h"
#include "constants/bg_music.h"
#include "constants/colors.h"
@ -45,38 +46,126 @@ struct unkStruct_203B2B0
struct UnkTextStruct2 unk114[4];
};
extern struct unkStruct_203B2B0 *gUnknown_203B2B0;
EWRAM_DATA_2 struct unkStruct_203B2B0 *gUnknown_203B2B0 = {0};
extern struct UnkTextStruct2 gUnknown_80DCA00;
extern struct UnkTextStruct2 gUnknown_80DC9E8;
extern u8 gPlayerName[];
extern u8 gAvailablePokemonNames[];
extern u8 gUnknown_202DFE8[];
extern u8 gLuminousCaveSeekAwakening[];
extern u8 gLuminousCaveEvolutionInfo[];
extern u8 gLuminousCaveAskEvolution[];
extern u8 gLuminousCaveYeShallReturn[];
extern u8 gLuminousCaveGiveItem[];
extern u8 gLuminousCaveGiveAnotherItem[];
extern u8 gLuminousCaveLackWhatIsNeeded[];
extern u8 gLuminousCaveOnlyOneItem[];
extern u8 gLuminousCaveLetUsBegin[];
extern u8 gLuminousCaveChangedAppearance[];
extern u8 gLuminousCaveEvolved[];
extern u8 gLuminousCaveGiveName[];
extern u8 gLuminousCaveComeAlone[];
extern u8 gLuminousCaveLackLevel[];
extern u8 gLuminousCaveCantEvolveAnymore[];
extern u8 gLuminousCaveLackFriendArea[];
extern u8 gLuminousCaveLackRoom[];
extern u8 gLuminousCaveLackIQ[];
extern u8 gLuminousCaveLackItem[];
extern u8 gLuminousCaveCantEvolveYet[];
extern u8 gUnknown_80DCA18[];
extern u8 *gUnknown_80D4970[];
extern u8 *gUnknown_80D4934[];
extern u8 gUnknown_80DCA18[];
extern u8 gUnknown_80DCA24[];
extern u8 gUnknown_80DCA2C[];
ALIGNED(4) const u8 gLuminousCaveSeekAwakening[] = _(
"{CENTER_ALIGN}...{WAIT_PRESS}A voice emanates from somewhere...{EXTRA_MSG}"
"{CENTER_ALIGN}...Ye who seek awakening...{EXTRA_MSG}"
"{CENTER_ALIGN}This is Luminous Cave.{WAIT_PRESS}\n"
"{CENTER_ALIGN}Do ye seek a new evolution?");
ALIGNED(4) const u8 gLuminousCaveAskEvolution[] = _(
"{CENTER_ALIGN}Do ye seek evolution?");
ALIGNED(4) const u8 gLuminousCaveEvolutionInfo[] = _(
"{CENTER_ALIGN}There are those among Pokémon\n"
"{CENTER_ALIGN}that can evolve.{EXTRA_MSG}"
"{CENTER_ALIGN}Such Pokémon can evolve at this very\n"
"{CENTER_ALIGN}spot if they satisfy certain conditions.{EXTRA_MSG}"
"{CENTER_ALIGN}Evolution brings about changes\n"
"{CENTER_ALIGN}in appearance and abilities.{EXTRA_MSG}"
"{CENTER_ALIGN}Not only that{COMMA} some Pokémon even change\n"
"{CENTER_ALIGN}type and learn different moves.{EXTRA_MSG}"
"{CENTER_ALIGN}However...{WAIT_PRESS} The requirements for\n"
"{CENTER_ALIGN}evolution differ among Pokémon.{EXTRA_MSG}"
"{CENTER_ALIGN}Some become ready for evolution\n"
"{CENTER_ALIGN}merely by leveling up.{EXTRA_MSG}"
"{CENTER_ALIGN}Still others may need special items\n"
"{CENTER_ALIGN}to attain evolution.{EXTRA_MSG}"
"{CENTER_ALIGN}Ye must also be aware of this:{EXTRA_MSG}"
"{CENTER_ALIGN}Once it has evolved{COMMA} a Pokémon\n"
"{CENTER_ALIGN}can never regain its previous form.{EXTRA_MSG}"
"{CENTER_ALIGN}That is why ye must think carefully\n"
"{CENTER_ALIGN}before committing to evolution.");
ALIGNED(4) const u8 gLuminousCaveYeShallReturn[] = _(
"{CENTER_ALIGN}Ye shall return if evolution\n"
"{CENTER_ALIGN}is what ye seek...");
ALIGNED(4) const u8 gLuminousCaveGiveItem[] = _(
"{CENTER_ALIGN}Will ye give an item for evolution?");
ALIGNED(4) const u8 gLuminousCaveGiveAnotherItem[] = _(
"{CENTER_ALIGN}Will ye give yet another item?");
ALIGNED(4) const u8 gLuminousCaveLackWhatIsNeeded[] = _(
"{CENTER_ALIGN}Alas{COMMA} ye seem to lack what is needed\n"
"{CENTER_ALIGN}for evolution.");
ALIGNED(4) const u8 gLuminousCaveOnlyOneItem[] = _(
"{CENTER_ALIGN}Ye seem to have but one item.");
ALIGNED(4) const u8 gLuminousCaveLetUsBegin[] = _(
"{CENTER_ALIGN}...Ye who seek awakening...\n"
"{CENTER_ALIGN}Let us begin.");
ALIGNED(4) const u8 gLuminousCaveChangedAppearance[] = _(
"{CENTER_ALIGN}...{WAIT_PRESS}$n0 is undergoing changes...{EXTRA_MSG}"
"{CENTER_ALIGN}$n0{APOSTROPHE}s appearance changed...{EXTRA_MSG}");
ALIGNED(4) const u8 gLuminousCaveEvolved[] = _(
"{CENTER_ALIGN}It evolved from {COLOR_1 GREEN}{ARG_POKEMON_0}{END_COLOR_TEXT_1}\n"
"{CENTER_ALIGN}to {COLOR_1 YELLOW}{ARG_POKEMON_1}{END_COLOR_TEXT_1}!");
ALIGNED(4) const u8 gLuminousCaveComeAlone[] = _(
"{CENTER_ALIGN}...{EXTRA_MSG}"
"{CENTER_ALIGN}One cannot evolve if one\n"
"{CENTER_ALIGN}is in the company of others.{EXTRA_MSG}"
"{CENTER_ALIGN}Come alone if ye wish to evolve.");
ALIGNED(4) const u8 gLuminousCaveLackLevel[] = _(
"{CENTER_ALIGN}...{EXTRA_MSG}"
"{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
"{CENTER_ALIGN}Ye have not high enough a level.");
ALIGNED(4) const u8 gLuminousCaveCantEvolveAnymore[] = _(
"{CENTER_ALIGN}...{EXTRA_MSG}"
"{CENTER_ALIGN}Ye cannot evolve anymore.");
ALIGNED(4) const u8 gLuminousCaveLackFriendArea[] = _(
"{CENTER_ALIGN}...{EXTRA_MSG}"
"{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
"{CENTER_ALIGN}Ye need your Friend Area to evolve.");
ALIGNED(4) const u8 gLuminousCaveLackRoom[] = _(
"{CENTER_ALIGN}...{EXTRA_MSG}"
"{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
"{CENTER_ALIGN}The Friend Area to which ye shall go\n"
"{CENTER_ALIGN}has no room for ye.");
ALIGNED(4) const u8 gLuminousCaveLackIQ[] = _(
"{CENTER_ALIGN}...{EXTRA_MSG}"
"{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
"{CENTER_ALIGN}Ye seem to lack the IQ to evolve.");
ALIGNED(4) const u8 gLuminousCaveLackItem[] = _(
"{CENTER_ALIGN}{CENTER_ALIGN}...{EXTRA_MSG}"
"{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}"
"{CENTER_ALIGN}Ye seem to lack an item to evolve.");
ALIGNED(4) const u8 gLuminousCaveCantEvolveYet[] = _(
"{CENTER_ALIGN}{CENTER_ALIGN}...{EXTRA_MSG}"
"{CENTER_ALIGN}Ye cannot evolve yet. ");
ALIGNED(4) const u8 gLuminousCaveGiveName[] = _(
"{CENTER_ALIGN}Ye must give a name to\n"
"{CENTER_ALIGN}the evolved Pokémon. ");
ALIGNED(4) static const u8 fill0[] = "pksdir0";
ALIGNED(4) static const u8 fill1[] = "pksdir0";
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern void UpdateLuminousCaveState(u32);
@ -464,47 +553,40 @@ void UpdateLuminousCaveDialogue(void)
void sub_8024CFC(void)
{
u8 *nullString;
struct unkStruct_203B2B0 *preload;
u32 defaultAction;
s32 loopMax = 0;
MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74));
preload = gUnknown_203B2B0;
nullString = NULL;
preload->unk34[0].text = gUnknown_80DCA18;
preload->unk34[0].menuAction = 3;
defaultAction = 1;
preload->unk34[1].text = *gUnknown_80D4970;
preload->unk34[1].menuAction = 2;
preload->unk34[2].text = *gUnknown_80D4934;
preload->unk34[2].menuAction = defaultAction;
preload->unk34[3].text = nullString;
preload->unk34[3].menuAction = defaultAction;
gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA18;
gUnknown_203B2B0->unk34[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4970;
gUnknown_203B2B0->unk34[loopMax].menuAction = 2;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4934;
gUnknown_203B2B0->unk34[loopMax].menuAction = 1;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = NULL;
gUnknown_203B2B0->unk34[loopMax].menuAction = 1;
}
void sub_8024D48(void)
{
u8 *nullString;
struct unkStruct_203B2B0 *preload;
u32 defaultAction;
s32 index;
s32 loopMax;
loopMax = 0;
MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74));
preload = gUnknown_203B2B0;
nullString = NULL;
preload->unk34[0].text = gUnknown_80DCA24;
preload->unk34[0].menuAction = 4;
defaultAction = 1;
preload->unk34[1].text = gUnknown_80DCA2C;
preload->unk34[1].menuAction = 5;
preload->unk34[2].text = *gUnknown_80D4934;
preload->unk34[2].menuAction = defaultAction;
loopMax = 3;
preload->unk34[3].text = nullString;
preload->unk34[3].menuAction = defaultAction;
gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA24;
gUnknown_203B2B0->unk34[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA2C;
gUnknown_203B2B0->unk34[loopMax].menuAction = 5;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4934;
gUnknown_203B2B0->unk34[loopMax].menuAction = 1;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = NULL;
gUnknown_203B2B0->unk34[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
@ -520,27 +602,22 @@ void sub_8024D48(void)
void sub_8024DBC(void)
{
u8 *nullString;
struct unkStruct_203B2B0 *preload;
u32 defaultAction;
s32 index;
s32 loopMax;
loopMax = 0;
MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74));
preload = gUnknown_203B2B0;
nullString = NULL;
preload->unk34[0].text = gUnknown_80DCA24;
preload->unk34[0].menuAction = 4;
defaultAction = 1;
preload->unk34[1].text = gUnknown_80DCA2C;
preload->unk34[1].menuAction = 5;
preload->unk34[2].text = *gUnknown_80D4934;
preload->unk34[2].menuAction = defaultAction;
loopMax = 3;
preload->unk34[3].text = nullString;
preload->unk34[3].menuAction = defaultAction;
gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA24;
gUnknown_203B2B0->unk34[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA2C;
gUnknown_203B2B0->unk34[loopMax].menuAction = 5;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4934;
gUnknown_203B2B0->unk34[loopMax].menuAction = 1;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = NULL;
gUnknown_203B2B0->unk34[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
@ -556,25 +633,19 @@ void sub_8024DBC(void)
void sub_8024E30(void)
{
u8 *nullString;
struct unkStruct_203B2B0 *preload;
u32 defaultAction;
s32 index;
s32 loopMax;
loopMax = 0;
MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74));
preload = gUnknown_203B2B0;
nullString = NULL;
preload->unk34[0].text = gUnknown_80DCA2C;
preload->unk34[0].menuAction = 5;
defaultAction = 1;
preload->unk34[1].text = *gUnknown_80D4970;
preload->unk34[1].menuAction = 2;
loopMax = 2;
preload->unk34[2].text = nullString;
preload->unk34[2].menuAction = defaultAction;
gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA2C;
gUnknown_203B2B0->unk34[loopMax].menuAction = 5;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4970;
gUnknown_203B2B0->unk34[loopMax].menuAction = 2;
loopMax += 1;
gUnknown_203B2B0->unk34[loopMax].text = NULL;
gUnknown_203B2B0->unk34[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{

Some files were not shown because too many files have changed in this diff Show More