actually fix DisplayAdventureLog and decomp some more wonder mail

This commit is contained in:
Seth Barberee 2022-03-28 14:47:19 -07:00
parent 9f98e08fb9
commit a1692a1aa0
9 changed files with 1375 additions and 1891 deletions

View File

@ -1026,29 +1026,4 @@ _080196FA:
bx r0
thumb_func_end sub_8019660
thumb_func_start sub_8019700
sub_8019700:
ldr r0, _08019724
ldr r1, [r0]
movs r3, 0
ldr r0, _08019728
ldr r0, [r0]
str r0, [r1, 0x34]
movs r0, 0x5
str r0, [r1, 0x38]
movs r2, 0x1
ldr r0, _0801972C
ldr r0, [r0]
str r0, [r1, 0x3C]
movs r0, 0x6
str r0, [r1, 0x40]
str r3, [r1, 0x44]
str r2, [r1, 0x48]
bx lr
.align 2, 0
_08019724: .4byte gUnknown_203B210
_08019728: .4byte gUnknown_80D4920
_0801972C: .4byte gUnknown_80D4928
thumb_func_end sub_8019700
.align 2,0

File diff suppressed because it is too large Load Diff

759
asm/wonder_mail_802C860.s Normal file
View File

@ -0,0 +1,759 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_802CAA4
sub_802CAA4:
push {r4-r7,lr}
movs r7, 0
ldr r5, _0802CAC8
ldr r0, [r5]
ldrb r0, [r0, 0xC]
bl GetJobSlotInfo
adds r4, r0, 0
ldr r2, [r5]
ldr r0, [r2]
cmp r0, 0
bne _0802CB26
ldrb r0, [r4]
cmp r0, 0x5
beq _0802CACC
cmp r0, 0x6
beq _0802CB10
b _0802CB26
.align 2, 0
_0802CAC8: .4byte gUnknown_203B2F0
_0802CACC:
movs r0, 0x86
lsls r0, 1
adds r1, r2, r0
ldr r0, _0802CAFC
str r0, [r1]
adds r0, r4, 0
bl sub_809693C
lsls r0, 24
cmp r0, 0
bne _0802CAEE
ldrb r0, [r4, 0x4]
bl sub_80A2824
lsls r0, 24
cmp r0, 0
bne _0802CB00
_0802CAEE:
ldr r0, [r5]
movs r1, 0x88
lsls r1, 1
adds r0, r1
movs r1, 0x1
negs r1, r1
b _0802CB0A
.align 2, 0
_0802CAFC: .4byte gUnknown_80DFD70
_0802CB00:
ldr r0, [r5]
movs r1, 0x88
lsls r1, 1
adds r0, r1
movs r1, 0x2
_0802CB0A:
str r1, [r0]
adds r7, 0x1
b _0802CB26
_0802CB10:
movs r0, 0x86
lsls r0, 1
adds r1, r2, r0
ldr r0, _0802CB9C
str r0, [r1]
movs r0, 0x88
lsls r0, 1
adds r1, r2, r0
movs r0, 0x3
str r0, [r1]
movs r7, 0x1
_0802CB26:
ldr r4, _0802CBA0
ldr r6, [r4]
lsls r1, r7, 3
movs r0, 0x86
lsls r0, 1
adds r3, r6, r0
adds r2, r3, r1
ldr r0, _0802CBA4
ldr r0, [r0]
str r0, [r2]
movs r0, 0x88
lsls r0, 1
adds r5, r6, r0
adds r1, r5, r1
movs r0, 0x4
str r0, [r1]
adds r7, 0x1
lsls r1, r7, 3
adds r2, r3, r1
ldr r0, _0802CBA8
ldr r0, [r0]
str r0, [r2]
adds r1, r5, r1
movs r0, 0x7
str r0, [r1]
adds r7, 0x1
lsls r1, r7, 3
adds r3, r1
movs r0, 0
str r0, [r3]
adds r1, r5, r1
movs r0, 0x1
str r0, [r1]
movs r3, 0
mov r12, r4
cmp r3, r7
bge _0802CB8C
adds r4, r6, 0
adds r1, r5, 0
movs r5, 0x1
negs r5, r5
_0802CB78:
ldr r2, [r1]
cmp r2, r5
beq _0802CB84
ldr r0, [r4, 0x68]
cmp r2, r0
beq _0802CB94
_0802CB84:
adds r1, 0x8
adds r3, 0x1
cmp r3, r7
blt _0802CB78
_0802CB8C:
mov r0, r12
ldr r1, [r0]
movs r0, 0x7
str r0, [r1, 0x68]
_0802CB94:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802CB9C: .4byte gUnknown_80DFD7C
_0802CBA0: .4byte gUnknown_203B2F0
_0802CBA4: .4byte gUnknown_80D494C
_0802CBA8: .4byte gUnknown_80D4970
thumb_func_end sub_802CAA4
thumb_func_start sub_802CBAC
sub_802CBAC:
ldr r0, _0802CBF4
ldr r0, [r0]
mov r12, r0
movs r3, 0
movs r1, 0xA6
lsls r1, 1
add r1, r12
ldr r0, _0802CBF8
ldr r0, [r0]
str r0, [r1]
movs r1, 0xA8
lsls r1, 1
add r1, r12
movs r0, 0x5
str r0, [r1]
movs r2, 0x1
movs r1, 0xAA
lsls r1, 1
add r1, r12
ldr r0, _0802CBFC
ldr r0, [r0]
str r0, [r1]
movs r1, 0xAC
lsls r1, 1
add r1, r12
movs r0, 0x6
str r0, [r1]
movs r0, 0xAE
lsls r0, 1
add r0, r12
str r3, [r0]
movs r0, 0xB0
lsls r0, 1
add r0, r12
str r2, [r0]
bx lr
.align 2, 0
_0802CBF4: .4byte gUnknown_203B2F0
_0802CBF8: .4byte gUnknown_80D4920
_0802CBFC: .4byte gUnknown_80D4928
thumb_func_end sub_802CBAC
thumb_func_start sub_802CC00
sub_802CC00:
push {lr}
movs r0, 0x1
bl sub_802C598
cmp r0, 0x4
bhi _0802CC6A
lsls r0, 2
ldr r1, _0802CC18
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802CC18: .4byte _0802CC1C
.align 2, 0
_0802CC1C:
.4byte _0802CC6A
.4byte _0802CC6A
.4byte _0802CC60
.4byte _0802CC30
.4byte _0802CC48
_0802CC30:
bl sub_802C620
ldr r1, _0802CC44
ldr r1, [r1]
strb r0, [r1, 0xC]
movs r0, 0x2
bl sub_802C910
b _0802CC6A
.align 2, 0
_0802CC44: .4byte gUnknown_203B2F0
_0802CC48:
bl sub_802C620
ldr r1, _0802CC5C
ldr r1, [r1]
strb r0, [r1, 0xC]
movs r0, 0x4
bl sub_802C910
b _0802CC6A
.align 2, 0
_0802CC5C: .4byte gUnknown_203B2F0
_0802CC60:
bl sub_802C688
movs r0, 0x5
bl sub_802C910
_0802CC6A:
pop {r0}
bx r0
thumb_func_end sub_802CC00
thumb_func_start sub_802CC70
sub_802CC70:
push {r4,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_802C598
ldr r4, _0802CCB4
ldr r0, [r4]
adds r0, 0x6C
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _0802CCA0
ldr r0, [r4]
adds r0, 0x6C
mov r1, sp
bl sub_8013114
ldr r1, [sp]
cmp r1, 0x1
beq _0802CCA0
ldr r0, [r4]
str r1, [r0, 0x68]
_0802CCA0:
ldr r0, [sp]
subs r0, 0x1
cmp r0, 0x6
bhi _0802CD2E
lsls r0, 2
ldr r1, _0802CCB8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802CCB4: .4byte gUnknown_203B2F0
_0802CCB8: .4byte _0802CCBC
.align 2, 0
_0802CCBC:
.4byte _0802CD28
.4byte _0802CCD8
.4byte _0802CCF4
.4byte _0802CD18
.4byte _0802CD2E
.4byte _0802CD2E
.4byte _0802CD20
_0802CCD8:
ldr r0, _0802CCEC
bl PlaySound
ldr r0, _0802CCF0
ldr r0, [r0]
ldrb r0, [r0, 0xC]
bl GetJobSlotInfo
movs r1, 0x6
b _0802CD06
.align 2, 0
_0802CCEC: .4byte 0x00000133
_0802CCF0: .4byte gUnknown_203B2F0
_0802CCF4:
ldr r0, _0802CD10
bl PlaySound
ldr r0, _0802CD14
ldr r0, [r0]
ldrb r0, [r0, 0xC]
bl GetJobSlotInfo
movs r1, 0x5
_0802CD06:
strb r1, [r0]
movs r0, 0x1
bl sub_802C910
b _0802CD2E
.align 2, 0
_0802CD10: .4byte 0x00000133
_0802CD14: .4byte gUnknown_203B2F0
_0802CD18:
movs r0, 0x3
bl sub_802C910
b _0802CD2E
_0802CD20:
movs r0, 0x4
bl sub_802C910
b _0802CD2E
_0802CD28:
movs r0, 0x1
bl sub_802C910
_0802CD2E:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_802CC70
thumb_func_start sub_802CD38
sub_802CD38:
push {r4,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_802C598
ldr r4, _0802CD78
ldr r0, [r4]
adds r0, 0x6C
bl sub_8012FD8
ldr r0, [r4]
adds r0, 0xBC
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _0802CD66
ldr r0, [r4]
adds r0, 0xBC
mov r1, sp
bl sub_8013114
_0802CD66:
ldr r0, [sp]
cmp r0, 0x5
beq _0802CD88
cmp r0, 0x5
bgt _0802CD7C
cmp r0, 0x1
beq _0802CD80
b _0802CDB0
.align 2, 0
_0802CD78: .4byte gUnknown_203B2F0
_0802CD7C:
cmp r0, 0x6
bne _0802CDB0
_0802CD80:
movs r0, 0x1
bl sub_802C910
b _0802CDB0
_0802CD88:
ldr r0, [r4]
ldrb r0, [r0, 0xC]
bl sub_8096C3C
bl sub_8096C80
bl HasNoAcceptedJobs
lsls r0, 24
cmp r0, 0
beq _0802CDAA
bl sub_802C688
movs r0, 0x5
bl sub_802C910
b _0802CDB0
_0802CDAA:
movs r0, 0x1
bl sub_802C910
_0802CDB0:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_802CD38
thumb_func_start sub_802CDB8
sub_802CDB8:
push {lr}
bl sub_802DEE0
cmp r0, 0x1
bls _0802CDD0
cmp r0, 0x3
bhi _0802CDD0
bl sub_802DF24
movs r0, 0x1
bl sub_802C910
_0802CDD0:
pop {r0}
bx r0
thumb_func_end sub_802CDB8
thumb_func_start sub_802CDD4
sub_802CDD4:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, _0802CE54
ldr r0, [r4]
cmp r0, 0
bne _0802CDEA
movs r0, 0xA0
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
_0802CDEA:
ldr r0, [r4]
str r5, [r0, 0x34]
lsls r1, r5, 1
adds r1, r5
lsls r1, 3
adds r1, 0x3C
adds r1, r0, r1
str r1, [r0, 0x38]
adds r0, 0x3C
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x34]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x3C
ldr r0, _0802CE58
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldr r1, [r4]
ldr r0, [r1, 0x38]
adds r1, 0x9C
str r1, [r0, 0x14]
movs r1, 0x4
bl sub_8012D34
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
movs r1, 0x5
movs r2, 0x4
adds r3, r5, 0
bl sub_8013848
bl sub_802CF5C
bl sub_802CFD0
movs r0, 0x1
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_0802CE54: .4byte gUnknown_203B2F4
_0802CE58: .4byte gUnknown_80DFDA4
thumb_func_end sub_802CDD4
thumb_func_start sub_802CE5C
sub_802CE5C:
push {r4,lr}
lsls r0, 24
cmp r0, 0
bne _0802CE74
ldr r0, _0802CE70
ldr r0, [r0]
bl sub_8013660
movs r0, 0
b _0802CEB4
.align 2, 0
_0802CE70: .4byte gUnknown_203B2F4
_0802CE74:
ldr r4, _0802CE90
ldr r0, [r4]
bl GetKeyPress
cmp r0, 0x1
beq _0802CE94
cmp r0, 0x2
bne _0802CE98
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0802CEB4
.align 2, 0
_0802CE90: .4byte gUnknown_203B2F4
_0802CE94:
movs r0, 0x3
b _0802CEB4
_0802CE98:
ldr r0, [r4]
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _0802CEAA
movs r0, 0
b _0802CEB4
_0802CEAA:
bl sub_802CF5C
bl sub_802CFD0
movs r0, 0x1
_0802CEB4:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_802CE5C
thumb_func_start sub_802CEBC
sub_802CEBC:
ldr r0, _0802CED4
ldr r1, [r0]
movs r0, 0x1E
ldrsh r2, [r1, r0]
movs r3, 0x1C
ldrsh r0, [r1, r3]
muls r0, r2
ldrb r1, [r1, 0x18]
adds r0, r1
lsls r0, 24
lsrs r0, 24
bx lr
.align 2, 0
_0802CED4: .4byte gUnknown_203B2F4
thumb_func_end sub_802CEBC
thumb_func_start sub_802CED8
sub_802CED8:
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl ResetUnusedInputStruct
ldr r5, _0802CF10
ldr r0, [r5]
adds r0, 0x3C
movs r1, 0
movs r2, 0
bl sub_800641C
ldr r0, [r5]
bl sub_8013984
bl sub_802CF5C
bl sub_802CFD0
cmp r4, 0
beq _0802CF0A
ldr r0, [r5]
bl AddMenuCursorSprite
_0802CF0A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802CF10: .4byte gUnknown_203B2F4
thumb_func_end sub_802CED8
thumb_func_start sub_802CF14
sub_802CF14:
push {r4,r5,lr}
ldr r4, _0802CF54
ldr r2, [r4]
cmp r2, 0
beq _0802CF4E
ldr r0, [r2, 0x34]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x3C
ldr r0, _0802CF58
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0802CF4E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802CF54: .4byte gUnknown_203B2F4
_0802CF58: .4byte gUnknown_80DFD8C
thumb_func_end sub_802CF14
thumb_func_start sub_802CF5C
sub_802CF5C:
push {r4,lr}
ldr r4, _0802CFCC
ldr r0, [r4]
ldrh r1, [r0, 0x20]
adds r0, 0x9C
movs r2, 0
strb r1, [r0]
ldr r0, [r4]
ldrh r1, [r0, 0x1E]
adds r0, 0x9D
strb r1, [r0]
ldr r0, [r4]
adds r0, 0x9E
movs r1, 0xC
strb r1, [r0]
ldr r0, [r4]
adds r0, 0x9F
strb r2, [r0]
ldr r0, [r4]
movs r1, 0x1A
ldrsh r0, [r0, r1]
movs r1, 0x18
bl sub_8009614
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x34]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x4A
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x34]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x4C
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x3C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802CFCC: .4byte gUnknown_203B2F4
thumb_func_end sub_802CF5C
thumb_func_start sub_802CFD0
sub_802CFD0:
push {r4-r6,lr}
sub sp, 0x60
ldr r6, _0802D02C
ldr r0, [r6]
ldr r0, [r0, 0x34]
bl sub_8008C54
ldr r0, [r6]
ldr r0, [r0, 0x34]
bl sub_80073B8
ldr r0, [r6]
movs r1, 0x1E
ldrsh r4, [r0, r1]
lsls r4, 3
adds r5, r4, 0
adds r5, 0xA
ldr r2, _0802D030
ldr r3, [r0, 0x34]
movs r0, 0
str r0, [sp]
adds r0, r5, 0
movs r1, 0
bl xxx_call_draw_string
adds r4, 0x4
ldr r1, [r6]
adds r0, r1, 0
adds r0, 0x9E
ldrb r0, [r0]
lsls r0, 3
adds r5, r4, r0
movs r0, 0x1E
ldrsh r2, [r1, r0]
adds r2, 0x1
movs r0, 0x7
str r0, [sp]
ldr r0, [r1, 0x34]
str r0, [sp, 0x4]
adds r0, r5, 0
movs r1, 0
movs r3, 0x2
bl sub_8012BC4
movs r5, 0
b _0802D076
.align 2, 0
_0802D02C: .4byte gUnknown_203B2F4
_0802D030: .4byte gUnknown_80DFDBC
_0802D034:
ldr r0, [r6]
movs r2, 0x1E
ldrsh r1, [r0, r2]
movs r2, 0x1C
ldrsh r0, [r0, r2]
muls r0, r1
adds r0, r5
lsls r0, 24
lsrs r0, 24
bl sub_803B344
adds r4, r0, 0
ldr r0, [r6]
ldr r1, [r0, 0x34]
str r1, [sp, 0x8]
adds r1, r5, 0
bl sub_8013800
str r0, [sp, 0x50]
adds r0, r4, 0
add r1, sp, 0x8
bl sub_803B35C
mov r1, sp
adds r1, 0x4B
movs r0, 0x1
strb r0, [r1]
ldr r0, [r4, 0x14]
str r0, [sp, 0x54]
add r0, sp, 0x8
bl sub_803B6D4
adds r5, 0x1
_0802D076:
ldr r0, [r6]
movs r1, 0x1A
ldrsh r0, [r0, r1]
cmp r5, r0
blt _0802D034
ldr r0, _0802D094
ldr r0, [r0]
ldr r0, [r0, 0x34]
bl sub_80073E0
add sp, 0x60
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802D094: .4byte gUnknown_203B2F4
thumb_func_end sub_802CFD0
.align 2,0

View File

@ -126,6 +126,8 @@ SECTIONS {
src/thank_you_wonder_mail.o(.text);
src/wonder_mail_2.o(.text);
asm/wonder_mail_2.o(.text);
src/wonder_mail_2_1.o(.text);
asm/wonder_mail_802C860.o(.text);
src/wonder_mail_3.o(.text);
asm/wonder_mail_3.o(.text);
src/wonder_mail_802DF88.o(.text);

View File

@ -62,7 +62,14 @@ extern s16 sub_8097838();
extern s16 sub_8097870();
extern s32 sub_80977B8();
extern s32 sub_80977F8();
extern void xxx_call_draw_string(s32, u32, u8 *, u32, u32);
extern void xxx_call_draw_string(s32, u32, const u8 *, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void xxx_format_and_draw(u32, u32, const char *, u32, u32);
const u8 *GetAdventureLogLine(u8 index);
extern s32 sub_8013800(void *, s32);
extern u32 gUnknown_202DE30;
u32 CreateAdventureLogScreen(u32 param_1)
@ -202,14 +209,13 @@ void sub_8032084(void)
}
#endif
// Mostly matches except around the switch
#ifdef NONMATCHING
void DisplayAdventureLog(void)
{
s32 counter;
s32 r4; // r4
s32 r6; // r6
u8 temp;
s32 v1, v2, v3, v4, v5, v6;
sub_8008C54(gAdventureLog->unk34);
sub_80073B8(gAdventureLog->unk34);
@ -229,27 +235,38 @@ void DisplayAdventureLog(void)
if(sub_8097710(temp)){
switch(temp) {
case 0xc:
gUnknown_202DE30 = sub_80978B8();
v1 = sub_80978B8();
gUnknown_202DE30 = (s16)v1;
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
break;
case 7:
gUnknown_202DE30 = sub_8097880();
v2 = sub_8097880();
gUnknown_202DE30 = (s16)v2;
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
break;
case 0xb:
gUnknown_202DE30 = sub_8097838();
v3 = sub_8097838();
gUnknown_202DE30 = (s16)v3;
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
break;
case 8:
gUnknown_202DE30 = sub_80977B8();
v4 = sub_80977B8();
gUnknown_202DE30 = v4;
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
break;
case 9:
gUnknown_202DE30 = sub_80977F8();
v5 = sub_80977F8();
gUnknown_202DE30 = v5;
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
break;
case 10:
gUnknown_202DE30 = sub_8097870();
break;
v6 = sub_8097870();
gUnknown_202DE30 = (s16)v6;
// fallthrough
default:
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
break;
}
xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(temp), gAdventureLog->unk34, 0);
}
else
{
@ -259,171 +276,3 @@ void DisplayAdventureLog(void)
}
sub_80073E0(gAdventureLog->unk34);
}
#else
NAKED
void DisplayAdventureLog(void)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tsub sp, 0x8\n"
"\tldr r5, _08032158\n"
"\tldr r0, [r5]\n"
"\tldr r0, [r0, 0x34]\n"
"\tbl sub_8008C54\n"
"\tldr r0, [r5]\n"
"\tldr r0, [r0, 0x34]\n"
"\tbl sub_80073B8\n"
"\tldr r0, [r5]\n"
"\tmovs r1, 0x1E\n"
"\tldrsh r4, [r0, r1]\n"
"\tlsls r4, 3\n"
"\tadds r6, r4, 0\n"
"\tadds r6, 0xA\n"
"\tldr r2, _0803215C\n"
"\tldr r3, [r0, 0x34]\n"
"\tmovs r0, 0\n"
"\tstr r0, [sp]\n"
"\tadds r0, r6, 0\n"
"\tmovs r1, 0\n"
"\tbl xxx_call_draw_string\n"
"\tadds r4, 0x4\n"
"\tldr r1, [r5]\n"
"\tadds r0, r1, 0\n"
"\tadds r0, 0x9E\n"
"\tldrb r0, [r0]\n"
"\tlsls r0, 3\n"
"\tadds r6, r4, r0\n"
"\tmovs r0, 0x1E\n"
"\tldrsh r2, [r1, r0]\n"
"\tadds r2, 0x1\n"
"\tmovs r0, 0x7\n"
"\tstr r0, [sp]\n"
"\tldr r0, [r1, 0x34]\n"
"\tstr r0, [sp, 0x4]\n"
"\tadds r0, r6, 0\n"
"\tmovs r1, 0\n"
"\tmovs r3, 0x1\n"
"\tbl sub_8012BC4\n"
"\tmovs r7, 0\n"
"\tldr r0, [r5]\n"
"\tb _0803223A\n"
"\t.align 2, 0\n"
"_08032158: .4byte gAdventureLog\n"
"_0803215C: .4byte gAdventureLogHeaderText\n"
"_08032160:\n"
"\tldr r5, _08032194\n"
"\tldr r0, [r5]\n"
"\tmovs r2, 0x1E\n"
"\tldrsh r1, [r0, r2]\n"
"\tmovs r2, 0x1C\n"
"\tldrsh r0, [r0, r2]\n"
"\tmuls r0, r1\n"
"\tadds r0, r7\n"
"\tlsls r0, 24\n"
"\tlsrs r6, r0, 24\n"
"\tadds r0, r6, 0\n"
"\tbl sub_8097710\n"
"\tlsls r0, 24\n"
"\tlsrs r4, r0, 24\n"
"\tcmp r4, 0\n"
"\tbeq _0803221C\n"
"\tsubs r0, r6, 0x7\n"
"\tcmp r0, 0x5\n"
"\tbhi _080321EC\n"
"\tlsls r0, 2\n"
"\tldr r1, _08032198\n"
"\tadds r0, r1\n"
"\tldr r0, [r0]\n"
"\tmov pc, r0\n"
"\t.align 2, 0\n"
"_08032194: .4byte gAdventureLog\n"
"_08032198: .4byte _0803219C\n"
"\t.align 2, 0\n"
"_0803219C:\n"
"\t.4byte _080321BA\n"
"\t.4byte _080321C6\n"
"\t.4byte _080321D4\n"
"\t.4byte _080321E0\n"
"\t.4byte _080321C0\n"
"\t.4byte _080321B4\n"
"_080321B4:\n"
"\tbl sub_80978B8\n"
"\tb _080321E4\n"
"_080321BA:\n"
"\tbl sub_8097880\n"
"\tb _080321E4\n"
"_080321C0:\n"
"\tbl sub_8097838\n"
"\tb _080321E4\n"
"_080321C6:\n"
"\tbl sub_80977B8\n"
"\tldr r1, _080321D0\n"
"\tb _080321EA\n"
"\t.align 2, 0\n"
"_080321D0: .4byte gUnknown_202DE30\n"
"_080321D4:\n"
"\tbl sub_80977F8\n"
"\tldr r1, _080321DC\n"
"\tb _080321EA\n"
"\t.align 2, 0\n"
"_080321DC: .4byte gUnknown_202DE30\n"
"_080321E0:\n"
"\tbl sub_8097870\n"
"_080321E4:\n"
"\tldr r1, _08032214\n"
"\tlsls r0, 16\n"
"\tasrs r0, 16\n"
"_080321EA:\n"
"\tstr r0, [r1]\n"
"_080321EC:\n"
"\tldr r4, _08032218\n"
"\tldr r0, [r4]\n"
"\tadds r1, r7, 0\n"
"\tbl sub_8013800\n"
"\tadds r5, r0, 0\n"
"\tadds r0, r6, 0\n"
"\tbl GetAdventureLogLine\n"
"\tadds r2, r0, 0\n"
"\tldr r0, [r4]\n"
"\tldr r3, [r0, 0x34]\n"
"\tmovs r0, 0\n"
"\tstr r0, [sp]\n"
"\tmovs r0, 0x8\n"
"\tadds r1, r5, 0\n"
"\tbl xxx_format_and_draw\n"
"\tb _08032234\n"
"\t.align 2, 0\n"
"_08032214: .4byte gUnknown_202DE30\n"
"_08032218: .4byte gAdventureLog\n"
"_0803221C:\n"
"\tldr r0, [r5]\n"
"\tadds r1, r7, 0\n"
"\tbl sub_8013800\n"
"\tadds r1, r0, 0\n"
"\tldr r2, _08032254\n"
"\tldr r0, [r5]\n"
"\tldr r3, [r0, 0x34]\n"
"\tstr r4, [sp]\n"
"\tmovs r0, 0x8\n"
"\tbl xxx_call_draw_string\n"
"_08032234:\n"
"\tadds r7, 0x1\n"
"\tldr r0, _08032258\n"
"\tldr r0, [r0]\n"
"_0803223A:\n"
"\tmovs r1, 0x1A\n"
"\tldrsh r0, [r0, r1]\n"
"\tcmp r7, r0\n"
"\tblt _08032160\n"
"\tldr r0, _08032258\n"
"\tldr r0, [r0]\n"
"\tldr r0, [r0, 0x34]\n"
"\tbl sub_80073E0\n"
"\tadd sp, 0x8\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_08032254: .4byte gUnknown_80E2030\n"
"_08032258: .4byte gAdventureLog");
}
#endif

View File

@ -175,11 +175,10 @@ void sub_8017C7C(void)
sub_8099690(0);
if(!IsNotMoneyOrUsedTMItem(gUnknown_203B208->unkC.itemIndex))
UpdateKangaskhanStorageState(9);
else if(!sub_801ADA0(gUnknown_203B208->unk10))
UpdateKangaskhanStorageState(0xA);
else
if(!sub_801ADA0(gUnknown_203B208->unk10))
UpdateKangaskhanStorageState(0xA);
else
UpdateKangaskhanStorageState(0x11);
UpdateKangaskhanStorageState(0x11);
break;
case 6:
sub_8099690(0);
@ -209,13 +208,10 @@ void sub_8017D24(void)
sub_801CBB8();
UpdateKangaskhanStorageState(6);
}
else if(IsThrowableItem(gUnknown_203B208->unkC.itemIndex))
UpdateKangaskhanStorageState(0x18);
else
{
if(IsThrowableItem(gUnknown_203B208->unkC.itemIndex))
UpdateKangaskhanStorageState(0x18);
else
UpdateKangaskhanStorageState(0x1B);
}
UpdateKangaskhanStorageState(0x1B);
break;
case 6:
UpdateKangaskhanStorageState(0x1A);

View File

@ -9,10 +9,16 @@
#include "code_800D090.h"
extern struct unkStruct_203B210 *gUnknown_203B210;
extern u16 gUnknown_203B218;
extern u16 gUnknown_203B220;
extern u16 gUnknown_203B228;
extern u16 gUnknown_203B22A;
extern u8 gUnknown_80DB8E4[];
extern u8 gUnknown_80DB8EC[];
extern u8 gUnknown_80DB92C[];
extern u8 gUnknown_80DB934[];
extern u8 *gUnknown_80D4920[];
extern u8 *gUnknown_80D4928[];
extern s32 sub_80144A4(s32 *);
void UpdateKecleonStoreState(u32);
@ -90,9 +96,8 @@ extern struct UnkTextStruct2 gUnknown_80DB8CC;
extern struct UnkTextStruct2 gUnknown_80DB8B4;
extern struct UnkTextStruct2 gUnknown_80DB8FC;
extern struct UnkTextStruct2 gUnknown_80DB944;
extern struct UnkTextStruct2 gUnknown_80DB95C;
extern const struct UnkTextStruct2 gUnknown_80DB914;
extern u16 gUnknown_203B218;
extern u16 gUnknown_203B220;
extern void sub_801A430(void);
extern void sub_801A4A4(void);
extern void sub_8013984(u8 *);
@ -100,9 +105,6 @@ extern void sub_801A064(void);
extern void sub_801A0D8(void);
extern void AddMenuCursorSprite(void *);
extern u8 sub_801A37C(void);
extern u16 gUnknown_203B228;
extern u16 gUnknown_203B22A;
extern struct UnkTextStruct2 gUnknown_80DB95C;
extern void sub_801A010(void);
extern void sub_801A3DC(void);
@ -114,6 +116,23 @@ extern void xxx_fill_inv_unk250_gaps_8091AA8(void);
u32 sub_8019D8C(void);
void sub_8019700(void)
{
u32 menuAction;
struct unkStruct_203B210 *preload;
u8 *nullText;
preload = gUnknown_203B210;
nullText = NULL;
preload->unk34[0].text = *gUnknown_80D4920;
preload->unk34[0].menuAction = 5;
menuAction = 1;
preload->unk34[1].text = *gUnknown_80D4928;
preload->unk34[1].menuAction = 6;
preload->unk34[2].text = nullText;
preload->unk34[2].menuAction = menuAction;
}
void sub_8019730(void)
{
s32 local_8;

449
src/wonder_mail_2_1.c Normal file
View File

@ -0,0 +1,449 @@
#include "global.h"
#include "constants/mailbox.h"
#include "input.h"
#include "memory.h"
#include "text.h"
#include "menu.h"
struct unkStruct_203B2E8
{
// size: 0xA8
u8 unk0[MAX_ACCEPTED_JOBS];
u32 unk8;
u8 fillC[0x20 - 0xC];
s16 unk20;
s16 unk22;
s16 unk24;
s16 unk26;
u16 unk28;
u16 unk2A;
u16 unk2C;
u8 fill2E[0x3C - 0x2E];
u32 unk3C;
struct UnkTextStruct2 *unk40;
struct UnkTextStruct2 unk44[4];
u8 unkA4[4];
};
struct unkStruct_203B2F0
{
// size: 0x1FC
u32 unk0;
u32 state;
u8 unk8[0xC - 0x8];
u8 unkC;
u8 fillD[0x10 - 0xD];
u32 unk10;
u8 fill14[0x68 - 0x14];
u32 unk68;
u8 fill6C[0xBC - 0x6C];
u8 unkBC[0x10C - 0xBC];
struct MenuItem unk10C[8];
struct MenuItem unk14C[8];
u8 fill18C[0x19C - 0x18C];
struct UnkTextStruct2 unk19C[4];
};
extern struct unkStruct_203B2F0 *gUnknown_203B2F0;
extern struct unkStruct_203B2E8* gUnknown_203B2E8;
extern struct unkStruct_203B2E8* gUnknown_203B2E0;
u16 gUnknown_203B2EC;
extern struct UnkTextStruct2 gUnknown_80DFCE4;
extern struct UnkTextStruct2 gUnknown_80DFCFC;
extern struct UnkTextStruct2 gUnknown_80DFD40;
extern struct UnkTextStruct2 gUnknown_80DFD58;
extern struct UnkTextStruct2 gUnknown_80DFD28;
extern u8 gUnknown_80DFD14[];
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_802CAA4(void);
extern u8 IsJobSlotEmpty(u8);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8013C68(u32 *);
extern void sub_80073E0(u32);
extern struct WonderMail* GetJobSlotInfo(u8);
extern s32 sub_8013800(void *, u32);
extern void sub_803B35C(void *, u32 *);
extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_803B6D4(u32 *);
extern void sub_8013984(u32 *);
extern void sub_802C6DC(void);
extern void sub_802C750(void);
extern void AddMenuCursorSprite(u32 *);
extern u8 sub_80138B8(void *, u32);
extern s32 GetKeyPress(void *);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013660(void *);
extern void sub_8013848(u32 *, s32, u32, u32);
extern void sub_8012D34(struct UnkTextStruct2 *, u32);
extern bool8 sub_809658C(u8);
extern void sub_802C910(u32);
extern void sub_802CC00(void);
extern void sub_802CC70(void);
extern void sub_802CD38(void);
extern void sub_802CDB8(void);
extern void sub_802C928(void);
extern void sub_802C9D8(void);
extern void sub_8012D60(u8 *, struct MenuItem *, u32, u16 *, u32, u32);
extern void sub_802DE84(u32 *);
extern void sub_8012EA4(u8 *, u32);
extern void sub_802CBAC(void);
s32 CountAcceptedJobs(void);
bool8 HasNoAcceptedJobs(void);
s32 sub_802C474(void)
{
s32 index;
s32 counter = 0;
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if(!sub_809658C(index))
{
gUnknown_203B2E0->unk0[counter] = index;
counter++;
}
}
return counter;
}
bool8 sub_802C4A4(void)
{
s32 index;
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if(!sub_809658C(index))
return FALSE;
}
return TRUE;
}
u32 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3)
{
if (HasNoAcceptedJobs()) {
return 0;
}
else
{
gUnknown_203B2E8 = MemoryAlloc(sizeof(struct unkStruct_203B2E8),8);
gUnknown_203B2E8->unk3C = param_1;
gUnknown_203B2E8->unk40 = &gUnknown_203B2E8->unk44[param_1];
sub_8006518(gUnknown_203B2E8->unk44);
gUnknown_203B2E8->unk44[gUnknown_203B2E8->unk3C] = gUnknown_80DFCFC;
gUnknown_203B2E8->unk40->unk14 = gUnknown_203B2E8->unkA4;
if (param_2 != NULL) {
gUnknown_203B2E8->unk44[gUnknown_203B2E8->unk3C].unk08 = *param_2;
}
sub_8012D34(gUnknown_203B2E8->unk40,param_3);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2E8->unk44,1,1);
sub_8013848(&gUnknown_203B2E8->unk8,CountAcceptedJobs(),param_3,param_1);
gUnknown_203B2E8->unk20 = gUnknown_203B2EC;
sub_8013984(&gUnknown_203B2E8->unk8);
sub_802C6DC();
sub_802C750();
return 1;
}
}
u32 sub_802C598(u8 param_1)
{
if (param_1 == '\0') {
sub_8013660(&gUnknown_203B2E8->unk8);
return 0;
}
else {
switch(GetKeyPress(&gUnknown_203B2E8->unk8))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
break;
}
if (sub_80138B8(&gUnknown_203B2E8->unk8, 1) != '\0') {
sub_802C6DC();
sub_802C750();
return 1;
}
else {
return 0;
}
}
}
u8 sub_802C620(void)
{
return gUnknown_203B2E8->unk0[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + gUnknown_203B2E8->unk20];
}
void sub_802C640(u32 r0)
{
u8 r0_u8;
r0_u8 = r0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2E8->unk44, 0, 0);
gUnknown_203B2E8->unk2A = CountAcceptedJobs();
sub_8013984(&gUnknown_203B2E8->unk8);
sub_802C6DC();
sub_802C750();
if(r0_u8)
AddMenuCursorSprite(&gUnknown_203B2E8->unk8);
}
void sub_802C688(void)
{
if(gUnknown_203B2E8 != NULL)
{
gUnknown_203B2EC = gUnknown_203B2E8->unk20;
gUnknown_203B2E8->unk44[gUnknown_203B2E8->unk3C] = gUnknown_80DFCE4;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2E8->unk44, 1, 1);
MemoryFree(gUnknown_203B2E8);
gUnknown_203B2E8 = NULL;
}
}
NAKED
void sub_802C6DC(void)
{
asm_unified("\tpush {r4,lr}\n"
"\tldr r4, _0802C74C\n"
"\tldr r0, [r4]\n"
"\tldrh r1, [r0, 0x28]\n"
"\tadds r0, 0xA4\n"
"\tmovs r2, 0\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tldrh r1, [r0, 0x26]\n"
"\tadds r0, 0xA5\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xA6\n"
"\tmovs r1, 0xC\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xA7\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tmovs r1, 0x22\n"
"\tldrsh r0, [r0, r1]\n"
"\tmovs r1, 0x18\n"
"\tbl sub_8009614\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r2, [r4]\n"
"\tldr r3, [r2, 0x3C]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x52\n"
"\tasrs r3, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r2, 0x3C]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r2, r0\n"
"\tadds r3, 0x2\n"
"\tadds r2, 0x54\n"
"\tstrh r3, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x44\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0802C74C: .4byte gUnknown_203B2E8");
}
void sub_802C750(void)
{
struct WonderMail *uVar1;
int iVar2;
s32 r4;
s32 r5;
u32 auStack104 [18];
u32 uStack32[4];
sub_8008C54(gUnknown_203B2E8->unk3C);
sub_80073B8(gUnknown_203B2E8->unk3C);
r4 = gUnknown_203B2E8->unk26 * 8;
r5 = r4;
r5 += 10;
xxx_call_draw_string(r5,0,gUnknown_80DFD14,gUnknown_203B2E8->unk3C,0); // "Job List"
r4 += 4;
r5 = r4 + gUnknown_203B2E8->unkA4[2] * 8;
sub_8012BC4(r5,0,gUnknown_203B2E8->unk26 + 1,2,7,gUnknown_203B2E8->unk3C);
iVar2 = 0;
if(( iVar2 < gUnknown_203B2E8->unk22))
do
{
uVar1 = GetJobSlotInfo(gUnknown_203B2E8->unk0[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + iVar2]);
auStack104[0] = gUnknown_203B2E8->unk3C;
uStack32[0] = sub_8013800(&gUnknown_203B2E8->unk8,iVar2);
sub_803B35C(uVar1,auStack104);
sub_803B6D4(auStack104);
iVar2++;
} while( iVar2 < gUnknown_203B2E8->unk22);
sub_80073E0(gUnknown_203B2E8->unk3C);
}
s32 CountAcceptedJobs(void)
{
s32 index;
s32 counter = 0;
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if(!IsJobSlotEmpty(index))
{
gUnknown_203B2E8->unk0[counter] = index;
counter++;
}
}
return counter;
}
bool8 HasNoAcceptedJobs(void)
{
s32 index;
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if(!IsJobSlotEmpty(index))
return 0;
}
return 1;
}
u32 sub_802C860(u32 r0)
{
if(HasNoAcceptedJobs())
{
return 0;
}
else
{
gUnknown_203B2F0 = MemoryAlloc(sizeof(struct unkStruct_203B2F0), 0x8);
gUnknown_203B2F0->unk68 = 0;
gUnknown_203B2F0->unk0 = r0;
sub_802C910(0);
return 1;
}
}
u32 sub_802C898(void)
{
switch(gUnknown_203B2F0->state)
{
case 0:
case 1:
sub_802CC00();
break;
case 2:
sub_802CC70();
break;
case 3:
sub_802CD38();
break;
case 4:
sub_802CDB8();
break;
case 5:
default:
return 3;
}
return 0;
}
void sub_802C8F4(void)
{
if(gUnknown_203B2F0 != NULL)
{
MemoryFree(gUnknown_203B2F0);
gUnknown_203B2F0 = NULL;
}
}
void sub_802C910(u32 newState)
{
gUnknown_203B2F0->state = newState;
sub_802C928();
sub_802C9D8();
}
void sub_802C928(void)
{
s32 index;
sub_8006518(gUnknown_203B2F0->unk19C);
switch(gUnknown_203B2F0->state)
{
case 2:
sub_802CAA4();
gUnknown_203B2F0->unk19C[2] = gUnknown_80DFD40;
sub_8012CAC(&gUnknown_203B2F0->unk19C[2], gUnknown_203B2F0->unk10C);
break;
case 3:
gUnknown_203B2F0->unk19C[3] = gUnknown_80DFD58;
break;
default:
for(index = 0; index < 4; index++)
{
gUnknown_203B2F0->unk19C[index] = gUnknown_80DFD28;
}
break;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2F0->unk19C, 1, 1);
}
void sub_802C9D8(void)
{
switch(gUnknown_203B2F0->state)
{
case 0:
sub_802C4C8(0, 0, 4);
break;
case 1:
sub_802C640(1);
break;
case 2:
sub_802C750();
sub_8012D60(gUnknown_203B2F0->fill6C, gUnknown_203B2F0->unk10C, 0, 0, gUnknown_203B2F0->unk68, 2);
break;
case 3:
sub_802CBAC();
sub_802C750();
sub_8012EA4(gUnknown_203B2F0->fill6C, 0);
sub_8012D60(gUnknown_203B2F0->unkBC, gUnknown_203B2F0->unk14C, 0, 0, 6, 3);
break;
case 4:
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F0->unkC), &gUnknown_203B2F0->unk10);
gUnknown_203B2F0->unk10 = 3;
sub_802DE84(&gUnknown_203B2F0->unk10);
break;
case 5:
default:
break;
}
}

View File

@ -208,128 +208,119 @@ void sub_802D2A8(void)
{
switch(gUnknown_203B2F8->state) {
case 0:
if (sub_80968B0(gUnknown_203B2F8->unkC) != 0) {
sub_802D1A0(3);
}
else
{
if (sub_8096F50(gUnknown_203B2F8->unkC) != 0) {
sub_802D1A0(4);
}
else
{
if ((gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) && (sub_8096C08(&gUnknown_203B2F8->unk10) != 0)) {
if (sub_802DAA8() != 0) {
sub_802D1A0(9);
}
else {
sub_802D1A0(5);
}
case 0:
if (sub_80968B0(gUnknown_203B2F8->unkC) != 0) {
sub_802D1A0(3);
}
else {
if (GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS) {
else if (sub_8096F50(gUnknown_203B2F8->unkC) != 0) {
sub_802D1A0(4);
}
else if ((gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) && (sub_8096C08(&gUnknown_203B2F8->unk10) != 0)) {
if (sub_802DAA8() != 0) {
sub_802D1A0(9);
}
else {
sub_802D1A0(5);
}
}
else if (GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS) {
if (sub_802DADC() != 0) {
sub_802D1A0(10);
}
else {
sub_802D1A0(6);
sub_802D1A0(6);
}
}
else
{
sub_802D1A0(8);
}
}
}
}
break;
case 1:
sub_802D73C();
sub_8014248(gUnknown_80DFE4C,0,gUnknown_203B2F8->unk70,gUnknown_203B2F8->unk158,0,4,0,0,0);
break;
case 3:
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80DFE9C,0,0,0x101);
break;
case 4:
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80DFED0,0,0,0x101);
break;
case 5:
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80DFF2C,0,0,0x101);
break;
case 6:
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80DFFA4,0,0,0x101);
break;
case 7:
gUnknown_203B2F8->unk4 = 0xc;
sub_80141B4(gUnknown_80E0010,0,0,0x101);
break;
case 8:
gUnknown_203B2F8->unk8 = 1;
sub_8096A78(gUnknown_203B2F8->unkC);
sub_8096C80();
sub_8096D24();
if (gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) {
MemoryCopy8(sub_8096DD8(),gUnknown_203B2F8->unkC->unk14,0x28);
MemoryCopy8(sub_8096DE8(),gUnknown_203B2F8->unkC->unk18,0x78);
}
switch(gUnknown_203B2F8->unkC->wonderMail.dungeon)
{
// NOTE: subtract 1 from each of the case as the input??
case DUNGEON_ODDITY_CAVE: // 0x2B
sub_8097418(0x2A, 1);
break;
case DUNGEON_REMAINS_ISLAND:
sub_8097418(0x2B, 1);
break;
case DUNGEON_MARVELOUS_SEA:
sub_8097418(0x2C, 1);
break;
case DUNGEON_FANTASY_STRAIT: // 0x2E
sub_8097418(0x2D, 1);
break;
}
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80E0074,0,0,0x101);
break;
case 9:
sub_802D690();
sub_8014248(gUnknown_80E0094,0,gUnknown_203B2F8->unk74,gUnknown_203B2F8->unk158,0,4,0,0,0);
break;
case 10:
gUnknown_203B2F8->unk4 = 0xb;
sub_80141B4(gUnknown_80E0108,0,0,0x101);
break;
case 0xb:
sub_802C4C8(0,0,4);
break;
case 0xc:
sub_802C640(1);
break;
case 0xd:
sub_802C750();
sub_8012D60(gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198,
gUnknown_203B2F8->unk6C,2);
break;
case 0xe:
sub_802C750();
sub_8012EA4(gUnknown_203B2F8->unk78,0);
sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
break;
case 0xf:
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14 = 3;
sub_802DE84(&gUnknown_203B2F8->unk14);
break;
case 0x10:
sub_803B35C(gUnknown_203B2F8->unkC,&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14 = 3;
gUnknown_203B2F8->unk58 = 0;
gUnknown_203B2F8->unk64 = gUnknown_203B2F8->unkC->unk18;
sub_802DE84(&gUnknown_203B2F8->unk14);
else
sub_802D1A0(8);
break;
case 1:
sub_802D73C();
sub_8014248(gUnknown_80DFE4C,0,gUnknown_203B2F8->unk70,gUnknown_203B2F8->unk158,0,4,0,0,0);
break;
case 3:
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80DFE9C,0,0,0x101);
break;
case 4:
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80DFED0,0,0,0x101);
break;
case 5:
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80DFF2C,0,0,0x101);
break;
case 6:
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80DFFA4,0,0,0x101);
break;
case 7:
gUnknown_203B2F8->unk4 = 0xc;
sub_80141B4(gUnknown_80E0010,0,0,0x101);
break;
case 8:
gUnknown_203B2F8->unk8 = 1;
sub_8096A78(gUnknown_203B2F8->unkC);
sub_8096C80();
sub_8096D24();
if (gUnknown_203B2F8->unkC->wonderMail.unk2 == 4) {
MemoryCopy8(sub_8096DD8(),gUnknown_203B2F8->unkC->unk14,0x28);
MemoryCopy8(sub_8096DE8(),gUnknown_203B2F8->unkC->unk18,0x78);
}
switch(gUnknown_203B2F8->unkC->wonderMail.dungeon)
{
// NOTE: subtract 1 from each of the case as the input??
case DUNGEON_ODDITY_CAVE: // 0x2B
sub_8097418(0x2A, 1);
break;
case DUNGEON_REMAINS_ISLAND:
sub_8097418(0x2B, 1);
break;
case DUNGEON_MARVELOUS_SEA:
sub_8097418(0x2C, 1);
break;
case DUNGEON_FANTASY_STRAIT: // 0x2E
sub_8097418(0x2D, 1);
break;
}
gUnknown_203B2F8->unk4 = 2;
sub_80141B4(gUnknown_80E0074,0,0,0x101);
break;
case 9:
sub_802D690();
sub_8014248(gUnknown_80E0094,0,gUnknown_203B2F8->unk74,gUnknown_203B2F8->unk158,0,4,0,0,0);
break;
case 10:
gUnknown_203B2F8->unk4 = 0xb;
sub_80141B4(gUnknown_80E0108,0,0,0x101);
break;
case 0xb:
sub_802C4C8(0,0,4);
break;
case 0xc:
sub_802C640(1);
break;
case 0xd:
sub_802C750();
sub_8012D60(gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198,
gUnknown_203B2F8->unk6C,2);
break;
case 0xe:
sub_802C750();
sub_8012EA4(gUnknown_203B2F8->unk78,0);
sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
break;
case 0xf:
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->unk10),&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14 = 3;
sub_802DE84(&gUnknown_203B2F8->unk14);
break;
case 0x10:
sub_803B35C(gUnknown_203B2F8->unkC,&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14 = 3;
gUnknown_203B2F8->unk58 = 0;
gUnknown_203B2F8->unk64 = gUnknown_203B2F8->unkC->unk18;
sub_802DE84(&gUnknown_203B2F8->unk14);
break;
}
}