bg_palette_buffer/othermenus clean

This commit is contained in:
Kermalis
2023-09-10 06:23:42 -04:00
parent 96989a1631
commit 7883e435a6
26 changed files with 1744 additions and 1706 deletions

View File

@@ -1,505 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8037810
sub_8037810:
push {r4-r6,lr}
ldr r6, _080378FC
ldr r0, [r6]
movs r5, 0xDE
lsls r5, 1
adds r0, r5
movs r1, 0
movs r2, 0x8
bl MemoryFill8
ldr r0, [r6]
movs r4, 0xE2
lsls r4, 1
adds r0, r4
movs r1, 0
movs r2, 0x8
bl MemoryFill8
ldr r0, [r6]
adds r5, r0, r5
movs r1, 0
movs r2, 0
str r1, [r5]
str r2, [r5, 0x4]
adds r4, r0, r4
str r1, [r4]
str r2, [r4, 0x4]
movs r2, 0xE6
lsls r2, 1
adds r0, r2
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r3, 0xFE
lsls r3, 1
adds r0, r3
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r1, 0x8B
lsls r1, 2
adds r0, r1
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r2, 0x97
lsls r2, 2
adds r0, r2
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r3, 0xA3
lsls r3, 2
adds r0, r3
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r1, 0xC5
lsls r1, 2
adds r0, r1
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r2, 0xAF
lsls r2, 2
adds r0, r2
movs r1, 0
movs r2, 0x58
bl MemoryFill8
ldr r0, [r6]
movs r3, 0xD1
lsls r3, 2
adds r0, r3
movs r1, 0
movs r2, 0x58
bl MemoryFill8
ldr r0, [r6]
movs r1, 0xE7
lsls r1, 2
adds r0, r1
movs r1, 0
movs r2, 0xB4
bl MemoryFill8
ldr r0, [r6]
movs r2, 0x8A
lsls r2, 3
adds r0, r2
movs r1, 0
movs r2, 0xB4
bl MemoryFill8
ldr r2, [r6]
movs r3, 0xB1
lsls r3, 2
adds r0, r2, r3
movs r1, 0
strh r1, [r0]
adds r3, 0x88
adds r0, r2, r3
strh r1, [r0]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080378FC: .4byte gUnknown_203B35C
thumb_func_end sub_8037810
thumb_func_start sub_8037900
sub_8037900:
push {r4,lr}
sub sp, 0x10
ldr r4, _08037928
ldr r0, [r4]
movs r1, 0xAE
lsls r1, 1
adds r0, r1
movs r1, 0
bl sub_8035CC0
ldr r0, [r4]
ldr r0, [r0]
cmp r0, 0xA
bls _0803791E
b _08037A14
_0803791E:
lsls r0, 2
ldr r1, _0803792C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08037928: .4byte gUnknown_203B35C
_0803792C: .4byte _08037930
.align 2, 0
_08037930:
.4byte _0803795C
.4byte _0803795C
.4byte _0803797C
.4byte _0803797C
.4byte _0803799C
.4byte _0803799C
.4byte _080379BC
.4byte _080379BC
.4byte _08037A14
.4byte _080379F0
.4byte _080379F0
_0803795C:
ldr r0, _08037970
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _08037974
ldr r2, _08037978
b _080379CE
.align 2, 0
_08037970: .4byte gUnknown_203B35C
_08037974: .4byte gUnknown_80E6554
_08037978: .4byte gUnknown_80E656C
_0803797C:
ldr r0, _08037990
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _08037994
ldr r2, _08037998
b _080379CE
.align 2, 0
_08037990: .4byte gUnknown_203B35C
_08037994: .4byte gUnknown_80E6554
_08037998: .4byte gUnknown_80E65D8
_0803799C:
ldr r0, _080379B0
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _080379B4
ldr r2, _080379B8
b _080379CE
.align 2, 0
_080379B0: .4byte gUnknown_203B35C
_080379B4: .4byte gUnknown_80E6554
_080379B8: .4byte gUnknown_80E661C
_080379BC:
ldr r0, _080379E4
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _080379E8
ldr r2, _080379EC
_080379CE:
str r2, [sp]
movs r4, 0
str r4, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r4, [sp, 0xC]
movs r2, 0
bl SetMenuItems
b _08037A14
.align 2, 0
_080379E4: .4byte gUnknown_203B35C
_080379E8: .4byte gUnknown_80E6554
_080379EC: .4byte gUnknown_80E665C
_080379F0:
ldr r0, _08037A38
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _08037A3C
ldr r2, _08037A40
str r2, [sp]
movs r4, 0
str r4, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r4, [sp, 0xC]
movs r2, 0
bl SetMenuItems
_08037A14:
ldr r4, _08037A38
ldr r0, [r4]
adds r0, 0x1C
movs r1, 0
movs r2, 0x1
bl sub_8035CF4
bl sub_80373C4
ldr r0, [r4]
adds r0, 0x1C
bl sub_80130A8
add sp, 0x10
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08037A38: .4byte gUnknown_203B35C
_08037A3C: .4byte gUnknown_80E6554
_08037A40: .4byte gUnknown_80E667C
thumb_func_end sub_8037900
thumb_func_start nullsub_202
nullsub_202:
bx lr
thumb_func_end nullsub_202
thumb_func_start sub_8037A48
sub_8037A48:
push {r4-r6,lr}
sub sp, 0x28
movs r6, 0x1
movs r0, 0
mov r1, sp
movs r2, 0x14
bl sub_800D670
add r4, sp, 0x14
movs r0, 0x1
adds r1, r4, 0
movs r2, 0x14
bl sub_800D670
ldr r1, _08037AAC
movs r3, 0x8
adds r2, r1, 0
adds r0, r2, 0x4
_08037A6C:
str r3, [r0]
subs r0, 0x4
cmp r0, r1
bge _08037A6C
ldr r0, [sp, 0x10]
str r0, [r2]
ldr r0, [r4, 0x10]
str r0, [r2, 0x4]
ldr r5, _08037AB0
mov r0, sp
adds r1, r5, 0
bl strcmp
cmp r0, 0
beq _08037A8C
movs r0, 0x1
_08037A8C:
lsls r0, 24
cmp r0, 0
bne _08037AA6
adds r0, r4, 0
adds r1, r5, 0
bl strcmp
cmp r0, 0
beq _08037AA0
movs r0, 0x1
_08037AA0:
lsls r0, 24
cmp r0, 0
beq _08037AB4
_08037AA6:
movs r0, 0
b _08037B1E
.align 2, 0
_08037AAC: .4byte gUnknown_202EC40
_08037AB0: .4byte gUnknown_80E6E50
_08037AB4:
ldr r1, [sp, 0x10]
cmp r1, 0
bne _08037AC0
ldr r0, [r4, 0x10]
cmp r0, 0x1
beq _08037B1C
_08037AC0:
cmp r1, 0x1
bne _08037ACA
ldr r0, [r4, 0x10]
cmp r0, 0
beq _08037B1C
_08037ACA:
cmp r1, 0x2
bne _08037AD4
ldr r0, [r4, 0x10]
cmp r0, 0x3
beq _08037B1C
_08037AD4:
cmp r1, 0x3
bne _08037ADE
ldr r0, [r4, 0x10]
cmp r0, 0x2
beq _08037B1C
_08037ADE:
cmp r1, 0x9
bne _08037AE8
ldr r0, [r4, 0x10]
cmp r0, 0xA
beq _08037B1C
_08037AE8:
cmp r1, 0xA
bne _08037AF2
ldr r0, [r4, 0x10]
cmp r0, 0x9
beq _08037B1C
_08037AF2:
cmp r1, 0x4
bne _08037AFC
ldr r0, [r4, 0x10]
cmp r0, 0x5
beq _08037B1C
_08037AFC:
cmp r1, 0x5
bne _08037B06
ldr r0, [r4, 0x10]
cmp r0, 0x4
beq _08037B1C
_08037B06:
cmp r1, 0x6
bne _08037B10
ldr r0, [r4, 0x10]
cmp r0, 0x7
beq _08037B1C
_08037B10:
cmp r1, 0x7
bne _08037B1A
ldr r0, [r4, 0x10]
cmp r0, 0x6
beq _08037B1C
_08037B1A:
movs r6, 0
_08037B1C:
adds r0, r6, 0
_08037B1E:
add sp, 0x28
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8037A48
thumb_func_start sub_8037B28
sub_8037B28:
push {r4,r5,lr}
sub sp, 0x14
adds r4, r0, 0
movs r5, 0
bl sub_800D414
ldr r0, _08037B58
str r5, [r0]
ldr r5, _08037B5C
mov r0, sp
movs r1, 0
movs r2, 0x14
bl MemoryFill8
mov r0, sp
adds r1, r5, 0
bl strcpy
str r4, [sp, 0x10]
mov r0, sp
movs r1, 0x14
bl sub_800D59C
b _08037B7A
.align 2, 0
_08037B58: .4byte gUnknown_202EC38
_08037B5C: .4byte gUnknown_80E6E50
_08037B60:
cmp r5, 0x3
beq _08037BCC
cmp r5, 0x4
beq _08037BD8
cmp r5, 0x5
beq _08037BF0
ldr r2, _08037BC0
ldr r1, [r2]
ldr r0, _08037BC4
cmp r1, r0
bgt _08037BE4
adds r0, r1, 0x1
str r0, [r2]
_08037B7A:
movs r4, 0
_08037B7C:
bl sub_80373C4
bl sub_8012AE8
cmp r0, 0x3
bgt _08037B8C
cmp r0, 0x2
bge _08037BF0
_08037B8C:
adds r4, 0x1
cmp r4, 0
ble _08037B7C
bl sub_800D33C
adds r5, r0, 0
bl sub_800D570
cmp r5, 0x2
bne _08037B60
bl sub_800D600
lsls r0, 24
cmp r0, 0
beq _08037BFC
bl sub_8037A48
lsls r0, 24
cmp r0, 0
bne _08037BC8
movs r4, 0x4
bl sub_800D520
bl sub_800D510
b _08037C06
.align 2, 0
_08037BC0: .4byte gUnknown_202EC38
_08037BC4: .4byte 0x00000707
_08037BC8:
movs r4, 0
b _08037C06
_08037BCC:
bl sub_800D520
bl sub_800D510
movs r0, 0x2
b _08037C08
_08037BD8:
bl sub_800D520
bl sub_800D510
movs r0, 0x3
b _08037C08
_08037BE4:
bl sub_800D520
bl sub_800D510
movs r0, 0xF
b _08037C08
_08037BF0:
bl sub_800D520
bl sub_800D510
movs r0, 0x1
b _08037C08
_08037BFC:
movs r4, 0x5
bl sub_800D520
bl sub_800D510
_08037C06:
adds r0, r4, 0
_08037C08:
add sp, 0x14
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8037B28
.align 2,0

272
asm/other_menus1.s Normal file
View File

@@ -0,0 +1,272 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8037810
sub_8037810:
push {r4-r6,lr}
ldr r6, _080378FC
ldr r0, [r6]
movs r5, 0xDE
lsls r5, 1
adds r0, r5
movs r1, 0
movs r2, 0x8
bl MemoryFill8
ldr r0, [r6]
movs r4, 0xE2
lsls r4, 1
adds r0, r4
movs r1, 0
movs r2, 0x8
bl MemoryFill8
ldr r0, [r6]
adds r5, r0, r5
movs r1, 0
movs r2, 0
str r1, [r5]
str r2, [r5, 0x4]
adds r4, r0, r4
str r1, [r4]
str r2, [r4, 0x4]
movs r2, 0xE6
lsls r2, 1
adds r0, r2
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r3, 0xFE
lsls r3, 1
adds r0, r3
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r1, 0x8B
lsls r1, 2
adds r0, r1
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r2, 0x97
lsls r2, 2
adds r0, r2
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r3, 0xA3
lsls r3, 2
adds r0, r3
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r1, 0xC5
lsls r1, 2
adds r0, r1
movs r1, 0
movs r2, 0x30
bl MemoryFill8
ldr r0, [r6]
movs r2, 0xAF
lsls r2, 2
adds r0, r2
movs r1, 0
movs r2, 0x58
bl MemoryFill8
ldr r0, [r6]
movs r3, 0xD1
lsls r3, 2
adds r0, r3
movs r1, 0
movs r2, 0x58
bl MemoryFill8
ldr r0, [r6]
movs r1, 0xE7
lsls r1, 2
adds r0, r1
movs r1, 0
movs r2, 0xB4
bl MemoryFill8
ldr r0, [r6]
movs r2, 0x8A
lsls r2, 3
adds r0, r2
movs r1, 0
movs r2, 0xB4
bl MemoryFill8
ldr r2, [r6]
movs r3, 0xB1
lsls r3, 2
adds r0, r2, r3
movs r1, 0
strh r1, [r0]
adds r3, 0x88
adds r0, r2, r3
strh r1, [r0]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080378FC: .4byte sUnknown_203B35C
thumb_func_end sub_8037810
thumb_func_start sub_8037900
sub_8037900:
push {r4,lr}
sub sp, 0x10
ldr r4, _08037928
ldr r0, [r4]
movs r1, 0xAE
lsls r1, 1
adds r0, r1
movs r1, 0
bl sub_8035CC0
ldr r0, [r4]
ldr r0, [r0]
cmp r0, 0xA
bls _0803791E
b _08037A14
_0803791E:
lsls r0, 2
ldr r1, _0803792C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08037928: .4byte sUnknown_203B35C
_0803792C: .4byte _08037930
.align 2, 0
_08037930:
.4byte _0803795C
.4byte _0803795C
.4byte _0803797C
.4byte _0803797C
.4byte _0803799C
.4byte _0803799C
.4byte _080379BC
.4byte _080379BC
.4byte _08037A14
.4byte _080379F0
.4byte _080379F0
_0803795C:
ldr r0, _08037970
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _08037974
ldr r2, _08037978
b _080379CE
.align 2, 0
_08037970: .4byte sUnknown_203B35C
_08037974: .4byte sUnknown_80E6554
_08037978: .4byte sUnknown_80E656C
_0803797C:
ldr r0, _08037990
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _08037994
ldr r2, _08037998
b _080379CE
.align 2, 0
_08037990: .4byte sUnknown_203B35C
_08037994: .4byte sUnknown_80E6554
_08037998: .4byte sUnknown_80E65D8
_0803799C:
ldr r0, _080379B0
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _080379B4
ldr r2, _080379B8
b _080379CE
.align 2, 0
_080379B0: .4byte sUnknown_203B35C
_080379B4: .4byte sUnknown_80E6554
_080379B8: .4byte sUnknown_80E661C
_080379BC:
ldr r0, _080379E4
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _080379E8
ldr r2, _080379EC
_080379CE:
str r2, [sp]
movs r4, 0
str r4, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r4, [sp, 0xC]
movs r2, 0
bl SetMenuItems
b _08037A14
.align 2, 0
_080379E4: .4byte sUnknown_203B35C
_080379E8: .4byte sUnknown_80E6554
_080379EC: .4byte sUnknown_80E665C
_080379F0:
ldr r0, _08037A38
ldr r1, [r0]
adds r0, r1, 0
adds r0, 0x1C
movs r2, 0xAE
lsls r2, 1
adds r1, r2
ldr r3, _08037A3C
ldr r2, _08037A40
str r2, [sp]
movs r4, 0
str r4, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r4, [sp, 0xC]
movs r2, 0
bl SetMenuItems
_08037A14:
ldr r4, _08037A38
ldr r0, [r4]
adds r0, 0x1C
movs r1, 0
movs r2, 0x1
bl sub_8035CF4
bl sub_80373C4
ldr r0, [r4]
adds r0, 0x1C
bl sub_80130A8
add sp, 0x10
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08037A38: .4byte sUnknown_203B35C
_08037A3C: .4byte sUnknown_80E6554
_08037A40: .4byte sUnknown_80E667C
thumb_func_end sub_8037900
thumb_func_start nullsub_202
nullsub_202:
bx lr
thumb_func_end nullsub_202
.align 2, 0

242
asm/other_menus2.s Normal file
View File

@@ -0,0 +1,242 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8037A48
sub_8037A48:
push {r4-r6,lr}
sub sp, 0x28
movs r6, 0x1
movs r0, 0
mov r1, sp
movs r2, 0x14
bl sub_800D670
add r4, sp, 0x14
movs r0, 0x1
adds r1, r4, 0
movs r2, 0x14
bl sub_800D670
ldr r1, _08037AAC
movs r3, 0x8
adds r2, r1, 0
adds r0, r2, 0x4
_08037A6C:
str r3, [r0]
subs r0, 0x4
cmp r0, r1
bge _08037A6C
ldr r0, [sp, 0x10]
str r0, [r2]
ldr r0, [r4, 0x10]
str r0, [r2, 0x4]
ldr r5, _08037AB0
mov r0, sp
adds r1, r5, 0
bl strcmp
cmp r0, 0
beq _08037A8C
movs r0, 0x1
_08037A8C:
lsls r0, 24
cmp r0, 0
bne _08037AA6
adds r0, r4, 0
adds r1, r5, 0
bl strcmp
cmp r0, 0
beq _08037AA0
movs r0, 0x1
_08037AA0:
lsls r0, 24
cmp r0, 0
beq _08037AB4
_08037AA6:
movs r0, 0
b _08037B1E
.align 2, 0
_08037AAC: .4byte gUnknown_202EC40
_08037AB0: .4byte gUnknown_80E6E50
_08037AB4:
ldr r1, [sp, 0x10]
cmp r1, 0
bne _08037AC0
ldr r0, [r4, 0x10]
cmp r0, 0x1
beq _08037B1C
_08037AC0:
cmp r1, 0x1
bne _08037ACA
ldr r0, [r4, 0x10]
cmp r0, 0
beq _08037B1C
_08037ACA:
cmp r1, 0x2
bne _08037AD4
ldr r0, [r4, 0x10]
cmp r0, 0x3
beq _08037B1C
_08037AD4:
cmp r1, 0x3
bne _08037ADE
ldr r0, [r4, 0x10]
cmp r0, 0x2
beq _08037B1C
_08037ADE:
cmp r1, 0x9
bne _08037AE8
ldr r0, [r4, 0x10]
cmp r0, 0xA
beq _08037B1C
_08037AE8:
cmp r1, 0xA
bne _08037AF2
ldr r0, [r4, 0x10]
cmp r0, 0x9
beq _08037B1C
_08037AF2:
cmp r1, 0x4
bne _08037AFC
ldr r0, [r4, 0x10]
cmp r0, 0x5
beq _08037B1C
_08037AFC:
cmp r1, 0x5
bne _08037B06
ldr r0, [r4, 0x10]
cmp r0, 0x4
beq _08037B1C
_08037B06:
cmp r1, 0x6
bne _08037B10
ldr r0, [r4, 0x10]
cmp r0, 0x7
beq _08037B1C
_08037B10:
cmp r1, 0x7
bne _08037B1A
ldr r0, [r4, 0x10]
cmp r0, 0x6
beq _08037B1C
_08037B1A:
movs r6, 0
_08037B1C:
adds r0, r6, 0
_08037B1E:
add sp, 0x28
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8037A48
thumb_func_start sub_8037B28
sub_8037B28:
push {r4,r5,lr}
sub sp, 0x14
adds r4, r0, 0
movs r5, 0
bl sub_800D414
ldr r0, _08037B58
str r5, [r0]
ldr r5, _08037B5C
mov r0, sp
movs r1, 0
movs r2, 0x14
bl MemoryFill8
mov r0, sp
adds r1, r5, 0
bl strcpy
str r4, [sp, 0x10]
mov r0, sp
movs r1, 0x14
bl sub_800D59C
b _08037B7A
.align 2, 0
_08037B58: .4byte gUnknown_202EC38
_08037B5C: .4byte gUnknown_80E6E50
_08037B60:
cmp r5, 0x3
beq _08037BCC
cmp r5, 0x4
beq _08037BD8
cmp r5, 0x5
beq _08037BF0
ldr r2, _08037BC0
ldr r1, [r2]
ldr r0, _08037BC4
cmp r1, r0
bgt _08037BE4
adds r0, r1, 0x1
str r0, [r2]
_08037B7A:
movs r4, 0
_08037B7C:
bl sub_80373C4
bl sub_8012AE8
cmp r0, 0x3
bgt _08037B8C
cmp r0, 0x2
bge _08037BF0
_08037B8C:
adds r4, 0x1
cmp r4, 0
ble _08037B7C
bl sub_800D33C
adds r5, r0, 0
bl sub_800D570
cmp r5, 0x2
bne _08037B60
bl sub_800D600
lsls r0, 24
cmp r0, 0
beq _08037BFC
bl sub_8037A48
lsls r0, 24
cmp r0, 0
bne _08037BC8
movs r4, 0x4
bl sub_800D520
bl sub_800D510
b _08037C06
.align 2, 0
_08037BC0: .4byte gUnknown_202EC38
_08037BC4: .4byte 0x00000707
_08037BC8:
movs r4, 0
b _08037C06
_08037BCC:
bl sub_800D520
bl sub_800D510
movs r0, 0x2
b _08037C08
_08037BD8:
bl sub_800D520
bl sub_800D510
movs r0, 0x3
b _08037C08
_08037BE4:
bl sub_800D520
bl sub_800D510
movs r0, 0xF
b _08037C08
_08037BF0:
bl sub_800D520
bl sub_800D510
movs r0, 0x1
b _08037C08
_08037BFC:
movs r4, 0x5
bl sub_800D520
bl sub_800D510
_08037C06:
adds r0, r4, 0
_08037C08:
add sp, 0x14
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_8037B28
.align 2,0

View File

@@ -3,7 +3,9 @@
void InitBGPaletteBuffer(void);
void nullsub_4(s32 index, u8 *colorArray, s32, u8 *);
void nullsub_5(void);
void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray);
void SetBGPaletteBufferColorRGB(s32 index, u8 *colorArray, s32, u8 *);
void TransferBGPaletteBuffer(void);
#endif // GUARD_BG_PALETTE_BUFFER_H

View File

@@ -37,47 +37,47 @@ enum MainMenuScreens
};
// size: 0x8
struct unkStruct_8035D94
typedef struct unkStruct_8035D94
{
union {
u8 itemIndex_u8;
u32 itemIndex_u32;
} itemIndex;
s32 numItems;
};
} unkStruct_8035D94;
// size: 0x4
struct MainMenuSub
typedef struct MainMenuSub
{
u8 unk2C;
u8 unk2D;
u8 unk2E;
};
} MainMenuSub;
// size: 0x40
struct MainMenu
typedef struct MainMenu
{
/* 0x0 */ s32 currMenu;
/* 0x4 */ s32 nextMenu;
/* 0x8 */ s32 lastMenu;
u8 padding[0x20];
/* 0x2C */ struct MainMenuSub sub;
struct unkStruct_8035D94 unk30;
/* 0x2C */ MainMenuSub sub;
unkStruct_8035D94 unk30;
s16 unk38;
u8 unk3A;
u8 unk3B;
s32 unk3C;
};
} MainMenu;
void CleanUpMenu(void);
void DeleteMainMenu(void);
struct MainMenu *GetMainMenu(void);
MainMenu *GetMainMenu(void);
void InitMainMenu(void);
void SetMenuItems(MenuStruct *, UnkTextStruct2 *, s32, const UnkTextStruct2 *, const MenuItem *, u8, u32, u32);
void SetUpMenu(void);
void sub_8035CC0(UnkTextStruct2 *, u32);
void sub_8035CF4(MenuStruct*, u32, bool8);
struct unkStruct_8035D94 *sub_8035D94(void);
unkStruct_8035D94 *sub_8035D94(void);
void sub_8035DA0(void);
bool8 sub_80363E0(void);
s32 UpdateMenu(void);

35
include/other_menus1.h Normal file
View File

@@ -0,0 +1,35 @@
#ifndef GUARD_OTHER_MENUS1_H
#define GUARD_OTHER_MENUS1_H
#include "code_8094F88.h"
#include "main_menu.h"
#include "menu.h"
#include "pokemon.h"
#include "sprite_oam.h"
#include "text.h"
// size: 0x504
typedef struct unkStruct_203B35C
{
u32 unk0;
/* 0x4 */ u32 linkStatus;
/* 0x8 */ u32 state;
SpriteOAM unkC;
u32 unk14;
u8 fill18[0x1C - 0x18];
MenuStruct unk1C[4];
UnkTextStruct2 unk15C[4];
unkStruct_8035D94 unk1BC[2];
unkStruct_203B480 unk1CC;
unkStruct_203B480 unk1FC;
unkStruct_203B480 unk22C;
unkStruct_203B480 unk25C;
unkStruct_203B480 unk28C;
PokemonStruct1 unk2BC;
unkStruct_203B480 unk314;
PokemonStruct1 unk344;
u8 unk39C[180];
u8 unk450[180];
} unkStruct_203B35C;
#endif // GUARD_OTHER_MENUS1_H

4
include/other_menus2.h Normal file
View File

@@ -0,0 +1,4 @@
#ifndef GUARD_OTHER_MENUS2_H
#define GUARD_OTHER_MENUS2_H
#endif // GUARD_OTHER_MENUS2_H

View File

@@ -5,6 +5,29 @@
#include "items.h"
#include "menu.h"
// 11 was another saving too?
enum TradeItemsScreens
{
TRADE_ITEMS_MAIN_MENU,
TRADE_ITEMS_SEND_ITEM,
TRADE_ITEMS_SEND_ITEM_SELECTION,
TRADE_ITEMS_SEND_ITEM_POPUP_MENU,
TRADE_ITEMS_SEND_ITEM_NUMBER,
TRADE_ITEMS_ITEM_INFO,
TRADE_ITEMS_SEND_ITEM_CONFIRM,
TRADE_ITEMS_RECEIVE_ITEM,
TRADE_ITEMS_IN_COMMUNICATION = 9,
TRADE_ITEMS_PREPARE_TRADE_SAVING = 15,
TRADE_ITEMS_PRE_EXIT = 17,
TRADE_ITEMS_EXIT = 18,
};
enum TradeItemsModes
{
TRADE_ITEMS_SEND_ITEM_MODE,
TRADE_ITEMS_RECEIVE_ITEM_MODE
};
struct TradeSubStruct
{
union ItemIdx {
@@ -14,10 +37,9 @@ struct TradeSubStruct
u32 quantity; // number of items?
};
// size: 0x3A0
struct TradeItemsMenu
{
// size: 0x3A0
u32 currMenu;
u32 fallbackState;
u32 itemMode;
@@ -53,4 +75,4 @@ s32 UpdateTradeItemsMenu(void);
s32 CreateTradeItemsMenu(void);
void CleanTradeItemsMenu(void);
#endif
#endif // GUARD_TRADE_ITEMS_MENU_H

View File

@@ -150,9 +150,10 @@ SECTIONS {
src/credits.o(.text);
src/main_menu.o(.text);
src/trade_items_menu.o(.text);
src/other_menus.o(.text);
asm/other_menus.o(.text);
src/other_menus_1.o(.text);
src/other_menus1.o(.text);
asm/other_menus1.o(.text);
asm/other_menus2.o(.text);
src/other_menus2.o(.text);
src/adventure_log_menu.o(.text);
src/unk_menu_203B360.o(.text);
src/save_menu.o(.text);
@@ -440,7 +441,8 @@ SECTIONS {
data/data_80E2068.o(.rodata);
src/main_menu.o(.rodata);
src/trade_items_menu.o(.rodata);
src/other_menus.o(.rodata);
src/other_menus1.o(.rodata);
src/other_menus2.o(.rodata);
src/unk_menu_203B360.o(.rodata);
src/save_menu.o(.rodata);
src/rescue_password_menu.o(.rodata);

View File

@@ -5,8 +5,8 @@
#define BG_PALETTE_BUFFER_SIZE 512
#define BG_PALETTE_BUFFER_CHUNK_SIZE 16
EWRAM_DATA bool8 gBGPaletteUsed[BG_PALETTE_BUFFER_SIZE / BG_PALETTE_BUFFER_CHUNK_SIZE] = {0};
EWRAM_DATA u16 gBGPaletteBuffer[BG_PALETTE_BUFFER_SIZE] = {0};
static EWRAM_DATA bool8 sBGPaletteUsed[BG_PALETTE_BUFFER_SIZE / BG_PALETTE_BUFFER_CHUNK_SIZE] = {0};
static EWRAM_DATA u16 sBGPaletteBuffer[BG_PALETTE_BUFFER_SIZE] = {0};
#ifndef NONMATCHING
NAKED
@@ -21,7 +21,7 @@ void InitBGPaletteBuffer(void)
u8* p;
ptr = gBGPaletteBuffer;
ptr = sBGPaletteBuffer;
i = 0x80;
i <<= 2;
@@ -33,16 +33,16 @@ void InitBGPaletteBuffer(void)
paletteUsed = TRUE;
p = gBGPaletteUsed;
p = sBGPaletteUsed;
p += 31;
do
*p-- = paletteUsed;
while ((s32) p >= (s32) &gBGPaletteUsed);
while ((s32) p >= (s32) &sBGPaletteUsed);
#else
asm_unified("\tpush {lr}\n"
"\tmovs r2, 0\n"
"\tldr r1, =gBGPaletteBuffer\n"
"\tldr r1, =sBGPaletteBuffer\n"
"\tmovs r0, 0x80\n"
"\tlsls r0, 2\n"
"_0800463E:\n"
@@ -51,7 +51,7 @@ void InitBGPaletteBuffer(void)
"\tsubs r0, 0x1\n"
"\tcmp r0, 0\n"
"\tbne _0800463E\n"
"\tldr r1, =gBGPaletteUsed\n"
"\tldr r1, =sBGPaletteUsed\n"
"\tmovs r2, 0x1\n"
"\tadds r0, r1, 0\n"
"\tadds r0, 0x1F\n"
@@ -67,26 +67,24 @@ void InitBGPaletteBuffer(void)
#endif
}
#ifndef NONMATCHING
#ifndef NONMATCHING // 99.48% (r3/r4 regswap) https://decomp.me/scratch/7Yc8i
NAKED
#endif
void SetBGPaletteBufferColorRGB(s32 index, u8 *colorArray, s32 a1, u8 *a2)
{
#ifdef NONMATCHING
if (a1 < 0) {
if (a1 < 0)
a1 = 0;
}
if (a1 > 31) {
if (a1 > 31)
a1 = 31;
}
gBGPaletteUsed[index / 16] = 1;
if (!a2) {
gBGPaletteBuffer[index] = ((colorArray[2] * a1 / 256 & 0x1F) << 10) | ((colorArray[1] * a1 / 256 & 0x1F) << 5) | (colorArray[0] * a1 / 256 & 0x1F);
}
sBGPaletteUsed[index / 16] = 1;
if (a2 == NULL)
sBGPaletteBuffer[index] = ((colorArray[2] * a1 / 256 & 0x1F) << 10) | ((colorArray[1] * a1 / 256 & 0x1F) << 5) | (colorArray[0] * a1 / 256 & 0x1F);
else
{
gBGPaletteBuffer[index] = ((a2[4 * colorArray[2] + 2] * a1 / 256 & 0x1F) << 10) | ((a2[4 * colorArray[1] + 1] * a1 / 256 & 0x1F) << 5) | (a2[4 * colorArray[0]] * a1 / 256 & 0x1F);
}
sBGPaletteBuffer[index] = ((a2[4 * colorArray[2] + 2] * a1 / 256 & 0x1F) << 10) | ((a2[4 * colorArray[1] + 1] * a1 / 256 & 0x1F) << 5) | (a2[4 * colorArray[0]] * a1 / 256 & 0x1F);
#else
asm_unified("\tpush {r4-r7,lr}\n"
"\tadds r4, r0, 0\n"
@@ -99,7 +97,7 @@ void SetBGPaletteBufferColorRGB(s32 index, u8 *colorArray, s32 a1, u8 *a2)
"\tble _08004676\n"
"\tmovs r2, 0x1F\n"
"_08004676:\n"
"\tldr r1, =gBGPaletteUsed\n"
"\tldr r1, =sBGPaletteUsed\n"
"\tadds r0, r4, 0\n"
"\tcmp r4, 0\n"
"\tbge _08004680\n"
@@ -111,7 +109,7 @@ void SetBGPaletteBufferColorRGB(s32 index, u8 *colorArray, s32 a1, u8 *a2)
"\tstrb r1, [r0]\n"
"\tcmp r3, 0\n"
"\tbne _080046D4\n"
"\tldr r0, =gBGPaletteBuffer\n"
"\tldr r0, =sBGPaletteBuffer\n"
"\tlsls r1, r4, 1\n"
"\tadds r6, r1, r0\n"
"\tldrb r0, [r5, 0x2]\n"
@@ -148,7 +146,7 @@ void SetBGPaletteBufferColorRGB(s32 index, u8 *colorArray, s32 a1, u8 *a2)
"\t.align 2, 0\n"
"\t.pool\n"
"_080046D4:\n"
"\tldr r1, =gBGPaletteBuffer\n"
"\tldr r1, =sBGPaletteBuffer\n"
"\tlsls r0, r4, 1\n"
"\tadds r7, r0, r1\n"
"\tldrb r0, [r5, 0x2]\n"
@@ -201,23 +199,25 @@ void SetBGPaletteBufferColorRGB(s32 index, u8 *colorArray, s32 a1, u8 *a2)
void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray)
{
gBGPaletteUsed[index / BG_PALETTE_BUFFER_CHUNK_SIZE] = TRUE;
gBGPaletteBuffer[index] = (colorArray[2] >> 3) << 10 | (colorArray[1] >> 3) << 5 | colorArray[0] >> 3;
sBGPaletteUsed[index / BG_PALETTE_BUFFER_CHUNK_SIZE] = TRUE;
sBGPaletteBuffer[index] = (colorArray[2] >> 3) << 10 | (colorArray[1] >> 3) << 5 | colorArray[0] >> 3;
}
void SetBGPaletteBufferColor(s32 index, u16 *color)
{
gBGPaletteUsed[index / BG_PALETTE_BUFFER_CHUNK_SIZE] = TRUE;
gBGPaletteBuffer[index] = *color;
sBGPaletteUsed[index / BG_PALETTE_BUFFER_CHUNK_SIZE] = TRUE;
sBGPaletteBuffer[index] = *color;
}
void nullsub_4(s32 index, u8 *colorArray, s32 a1, u8 *a2)
{
}
void nullsub_5(void)
{
}
void nullsub_143(void)
UNUSED static void nullsub_143(void)
{
}
@@ -232,14 +232,14 @@ void TransferBGPaletteBuffer(void)
dest = (u16 *)PLTT;
do
{
if (gBGPaletteUsed[i])
if (sBGPaletteUsed[i])
{
gBGPaletteUsed[i] = 0;
CpuCopy(dest, &gBGPaletteBuffer[paletteBufferIndex], sizeof(u16) * 16);
sBGPaletteUsed[i] = 0;
CpuCopy(dest, &sBGPaletteBuffer[paletteBufferIndex], sizeof(u16) * 16);
}
++i;
dest += 16;
paletteBufferIndex += 16;
}
while ( paletteBufferIndex < BG_PALETTE_BUFFER_SIZE );
}
while (paletteBufferIndex < BG_PALETTE_BUFFER_SIZE);
}

View File

@@ -48,7 +48,6 @@ extern u32 sub_80009D0(u32);
extern void xxx_draw_string_80144C4(void);
extern void nullsub_8(u32);
extern void sub_80060EC(void);
extern void TransferBGPaletteBuffer(void);
extern void xxx_call_update_bg_vram(void);
extern void xxx_call_update_bg_sound_input(void);

View File

@@ -1,6 +1,7 @@
#include <stdarg.h>
#include <stdio.h>
#include "global.h"
#include "bg_palette_buffer.h"
#include "code_8004AA0.h"
#include "code_800558C.h"
#include "code_8009804.h"
@@ -38,7 +39,6 @@ EWRAM_DATA s16 gUnknown_202DE22;
EWRAM_DATA s16 gUnknown_202DE24;
void nullsub_8(u32);
extern void TransferBGPaletteBuffer(void);
extern void xxx_call_update_bg_vram(void);
extern void xxx_call_update_bg_sound_input(void);
extern bool8 sub_80111C4();

View File

@@ -1,4 +1,5 @@
#include "global.h"
#include "bg_palette_buffer.h"
#include "code_800558C.h"
#include "code_8009804.h"
#include "code_800C9CC.h"
@@ -9,7 +10,6 @@
extern void xxx_draw_string_80144C4();
extern void nullsub_8(u8);
extern void TransferBGPaletteBuffer();
extern void xxx_call_update_bg_vram();
extern void xxx_call_update_bg_sound_input();

387
src/data/other_menus1.h Normal file
View File

@@ -0,0 +1,387 @@
ALIGNED(4) static const u8 sFill[] = _("pksdir0");
static const UnkTextStruct2 sUnknown_80E653C = {
0, 0, 0, 0,
3,
0, 0,
0, 0,
0, 0,
NULL
};
const UnkTextStruct2 sUnknown_80E6554 = { // TODO: MAKE STATIC WHEN other_menus1.s IS DED
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E65C4[];
static const u8 sUnknown_80E65AC[];
static const u8 sUnknown_80E658C[];
const MenuItem sUnknown_80E656C[4] = { // TODO: MAKE STATIC WHEN other_menus1.s IS DED
{sUnknown_80E65C4, 5},
{sUnknown_80E65AC, 5},
{sUnknown_80E658C, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E658C[] = _("{CENTER_ALIGN}Don{APOSTROPHE}t turn the power off!");
ALIGNED(4) static const u8 sUnknown_80E65AC[] = _("{CENTER_ALIGN}Item transmitting!");
ALIGNED(4) static const u8 sUnknown_80E65C4[] = _("{CENTER_ALIGN}{COLOR_1 RED}Caution!{END_COLOR_TEXT_1} ");
static const u8 sUnknown_80E65F8[];
const MenuItem sUnknown_80E65D8[4] = { // TODO: MAKE STATIC WHEN other_menus1.s IS DED
{sUnknown_80E65C4, 5},
{sUnknown_80E65F8, 5},
{sUnknown_80E658C, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E65F8[] = _("{CENTER_ALIGN}Thank-You Mail in transmission!");
static const u8 sUnknown_80E663C[];
const MenuItem sUnknown_80E661C[4] = { // TODO: MAKE STATIC WHEN other_menus1.s IS DED
{sUnknown_80E65C4, 5},
{sUnknown_80E663C, 5},
{sUnknown_80E658C, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E663C[] = _("{CENTER_ALIGN}A-OK Mail in transmission!");
const MenuItem sUnknown_80E665C[4] = { // TODO: MAKE STATIC WHEN other_menus1.s IS DED
{sUnknown_80E65C4, 5},
{sUnknown_80E65F8, 5},
{sUnknown_80E658C, 5},
{NULL, 3},
};
static const u8 sUnknown_80E669C[];
const MenuItem sUnknown_80E667C[4] = { // TODO: MAKE STATIC WHEN other_menus1.s IS DED
{sUnknown_80E65C4, 5},
{sUnknown_80E669C, 5},
{sUnknown_80E658C, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E669C[] = _("{CENTER_ALIGN}Wonder Mail in transmission!");
static const UnkTextStruct2 sUnknown_80E66BC = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6734[];
static const u8 sUnknown_80E6710[];
static const u8 sUnknown_80E66F4[];
static const MenuItem sUnknown_80E66D4[4] = {
{sUnknown_80E6734, 5},
{sUnknown_80E6710, 5},
{sUnknown_80E66F4, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E66F4[] = _("{CENTER_ALIGN}Please press any button.");
ALIGNED(4) static const u8 sUnknown_80E6710[] = _("{CENTER_ALIGN}Your adventure will be continued.");
ALIGNED(4) static const u8 sUnknown_80E6734[] = _("{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE}Success!{END_COLOR_TEXT_1} ");
static const UnkTextStruct2 sUnknown_80E6748 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6780[];
static const u8 sUnknown_80E6794[];
static const u8 sUnknown_80E67B4[];
static const MenuItem sUnknown_80E6760[4] = {
{sUnknown_80E67B4, 5},
{sUnknown_80E6794, 5},
{sUnknown_80E6780, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6780[] = _("{CENTER_ALIGN}please try again.");
ALIGNED(4) static const u8 sUnknown_80E6794[] = _("{CENTER_ALIGN}Check the Game Link cable and");
ALIGNED(4) static const u8 sUnknown_80E67B4[] = _("{CENTER_ALIGN}#C2Communication error!{END_COLOR_TEXT_1} ");
static const UnkTextStruct2 sUnknown_80E67D4 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E680C[];
static const MenuItem sUnknown_80E67EC[4] = {
{sUnknown_80E67B4, 5},
{sUnknown_80E680C, 5},
{sUnknown_80E6780, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E680C[] = _("{CENTER_ALIGN}Check your communication mode and");
static const UnkTextStruct2 sUnknown_80E6830 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6888[];
static const u8 sUnknown_80E6868[];
static const MenuItem sUnknown_80E6848[4] = {
{sUnknown_80E67B4, 5},
{sUnknown_80E6888, 5},
{sUnknown_80E6868, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6868[] = _("{CENTER_ALIGN}Please inform the programmer.");
ALIGNED(4) static const u8 sUnknown_80E6888[] = _("{CENTER_ALIGN}Check sum error.");
static const UnkTextStruct2 sUnknown_80E689C = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6928[];
static const u8 sUnknown_80E68FC[];
static const u8 sUnknown_80E68D4[];
static const MenuItem sUnknown_80E68B4[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E68FC, 5},
{sUnknown_80E68D4, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E68D4[] = _("{CENTER_ALIGN}someone{APOSTROPHE}s storage space was full.");
ALIGNED(4) static const u8 sUnknown_80E68FC[] = _("{CENTER_ALIGN}An item could not be transferred because");
ALIGNED(4) static const u8 sUnknown_80E6928[] = _("{CENTER_ALIGN}#C2Error!{END_COLOR_TEXT_1} ");
static const UnkTextStruct2 sUnknown_80E6938 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6988[];
static const u8 sUnknown_80E6970[];
static const MenuItem sUnknown_80E6950[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E6988, 5},
{sUnknown_80E6970, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6970[] = _("{CENTER_ALIGN}Please check again.");
ALIGNED(4) static const u8 sUnknown_80E6988[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used.");
static const UnkTextStruct2 sUnknown_80E69B0 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E69E8[];
static const MenuItem sUnknown_80E69C8[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E69E8, 5},
{sUnknown_80E6970, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E69E8[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used.");
static const UnkTextStruct2 sUnknown_80E6A10 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6A48[];
static const MenuItem sUnknown_80E6A28[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E6A48, 5},
{sUnknown_80E6970, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6A48[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used.");
static const UnkTextStruct2 sUnknown_80E6A74 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6AC8[];
static const u8 sUnknown_80E6AAC[];
static const MenuItem sUnknown_80E6A8C[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E6AC8, 5},
{sUnknown_80E6AAC, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6AAC[] = _("{CENTER_ALIGN}It can{APOSTROPHE}t be received.");
ALIGNED(4) static const u8 sUnknown_80E6AC8[] = _("{CENTER_ALIGN}There is no space for new mail.");
UNUSED static const UnkTextStruct2 sUnknown_80E6AEC = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6B4C[];
static const u8 sUnknown_80E6B24[];
UNUSED static const MenuItem sUnknown_80E6B04[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E6B4C, 5},
{sUnknown_80E6B24, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6B24[] = _("{CENTER_ALIGN}You need to go further in the story.");
ALIGNED(4) static const u8 sUnknown_80E6B4C[] = _("{CENTER_ALIGN}You may not go to that {COLOR_1 LIGHT_BLUE}dungeon{END_COLOR_TEXT_1} yet.");
static const UnkTextStruct2 sUnknown_80E6B78 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6BC4[];
static const u8 sUnknown_80E6BB0[];
static const MenuItem sUnknown_80E6B90[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E6BC4, 5},
{sUnknown_80E6BB0, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6BB0[] = _("{CENTER_ALIGN}Please try again.");
ALIGNED(4) static const u8 sUnknown_80E6BC4[] = _("{CENTER_ALIGN}There was a problem on your friend{APOSTROPHE}s end.");
static const UnkTextStruct2 sUnknown_80E6BF4 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6C2C[];
static const MenuItem sUnknown_80E6C0C[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E6C2C, 5},
{sUnknown_80E6BB0, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6C2C[] = _("{CENTER_ALIGN}Your friend is not responding.");
static const UnkTextStruct2 sUnknown_80E6C50 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6CA8[];
static const u8 sUnknown_80E6C88[];
static const MenuItem sUnknown_80E6C68[4] = {
{sUnknown_80E6734, 5},
{sUnknown_80E6CA8, 5},
{sUnknown_80E6C88, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6C88[] = _("{CENTER_ALIGN}went through successfully.");
ALIGNED(4) static const u8 sUnknown_80E6CA8[] = _("{CENTER_ALIGN}The item exchange with your friend");
static const UnkTextStruct2 sUnknown_80E6CD0 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6D2C[];
static const u8 sUnknown_80E6D08[];
static const MenuItem sUnknown_80E6CE8[4] = {
{sUnknown_80E65C4, 5},
{sUnknown_80E6D2C, 5},
{sUnknown_80E6D08, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6D08[] = _("{CENTER_ALIGN}you and your friend are ready.");
ALIGNED(4) static const u8 sUnknown_80E6D2C[] = _("{CENTER_ALIGN}Please communicate only after both");
static const UnkTextStruct2 sUnknown_80E6D54 = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6DB0[];
static const u8 sUnknown_80E6D8C[];
static const MenuItem sUnknown_80E6D6C[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E6DB0, 5},
{sUnknown_80E6D8C, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6D8C[] = _("{CENTER_ALIGN}connected. Please check again.");
ALIGNED(4) static const u8 sUnknown_80E6DB0[] = _("{CENTER_ALIGN}An incorrect number of GBA systems are");
static const UnkTextStruct2 sUnknown_80E6DDC = {
0, 0, 0, 0,
3,
3, 8,
24, 5,
5, 0,
NULL
};
static const u8 sUnknown_80E6E30[];
static const u8 sUnknown_80E6E14[];
static const MenuItem sUnknown_80E6DF4[4] = {
{sUnknown_80E6928, 5},
{sUnknown_80E6E30, 5},
{sUnknown_80E6E14, 5},
{NULL, 3},
};
ALIGNED(4) static const u8 sUnknown_80E6E14[] = _("{CENTER_ALIGN}Please check it again.");
ALIGNED(4) static const u8 sUnknown_80E6E30[] = _("{CENTER_ALIGN}Communication failed.");

8
src/data/other_menus2.h Normal file
View File

@@ -0,0 +1,8 @@
ALIGNED(4) static const u8 sFill[] = "pksdir0";
ALIGNED(4) const u8 gUnknown_80E6E50[] = "CHUNSOFT"; // TODO: MAKE STATIC WHEN other_menus2.s IS DED
// TODO: These belongs to files after
ALIGNED(4) static const u8 fill1[] = "pksdir0";
ALIGNED(4) static const u8 fill2[] = "pksdir0";
ALIGNED(4) static const u8 fill3[] = "pksdir0";
ALIGNED(4) static const u8 fill4[] = "pksdir0";

View File

@@ -1,43 +0,0 @@
const u8 gUnknown_80E61A4[] = "What would you like to do? ";
const u8 gUnknown_80E61C0[] = "Please choose the item to be sent.";
ALIGNED(4) const u8 gUnknown_80E61E4[] = _("{COLOR_1 LIGHT_BLUE}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}\n"
"will be sent.\n"
"Is that OK?");
ALIGNED(4) const u8 gUnknown_80E6214[] = _("Your friend will send you an item.\n"
"When you are both ready{COMMA} you\n"
"may communicate.");
ALIGNED(4) const u8 gUnknown_80E6268[] = _("Preparing to send an item to your\n"
"friend. When you are both ready{COMMA}\n"
"you may communicate.");
ALIGNED(4) const u8 gUnknown_80E62C4[] = _("{CENTER_ALIGN}In communication...\n"
"{CENTER_ALIGN}Please wait with the power on.\n"
"{CENTER_ALIGN}To cancel{COMMA} press {B_BUTTON}.");
ALIGNED(4) const u8 gUnknown_80E6314[] = _("You received\n"
"{COLOR_1 LIGHT_BLUE}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}.\n"
"Your adventure will be saved.");
ALIGNED(4) const u8 gUnknown_80E6358[] = _("You sent {COLOR_1 LIGHT_BLUE}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}.");
// Trade Items Menu Link Error Messages
const u8 gTradeItemsCommunicationError[] = "There was a communication error.";
const u8 gUnknown_80E639C[] = "An incorrect number of GBA systems are\n"
"connected.\n"
"Please redo this process from the start.";
const u8 gUnknown_80E63F8[] = "There is no response from your friend.\n"
"Please redo this process from the start.";
const u8 gUnknown_80E6448[] = "The sender and receiver appear to be\n"
"in different modes.\n"
"Please redo the process from the start.";
ALIGNED(4) const u8 gUnknown_80E64AC[] = _("There is no response from your friend.\n"
"Please make sure the sender and receiver\n"
"are ready{COMMA} then redo this from the start.");
const u8 gTradeItemsHowManyText[] = "How many?";
static const u8 aligner[] = "pksdir0";

114
src/data/trade_items_menu.h Normal file
View File

@@ -0,0 +1,114 @@
ALIGNED(4) static const u8 sFill[] = _("pksdir0");
static const MenuItem sUnknown_80E60A0[3] = {
{"Send item", 1},
{"Receive item", 2},
{NULL, 0},
};
static const MenuItem sUnknown_80E60D4[3] = {
{"Send item", -1},
{"Receive item", 2},
{NULL, 0},
};
static const UnkTextStruct2 sUnknown_80E60EC =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x15, 0x04,
0x06, 0x05,
0x05, 0x00,
NULL
};
static const MenuItem sUnknown_80E6104[4] = {
{"Confirm", 3},
{"Info", 4},
{"Cancel", 7},
{NULL, 0},
};
static const UnkTextStruct2 unused =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x16, 0x09,
0x05, 0x03,
0x03, 0x00,
NULL
};
static const MenuItem sUnknown_80E6154[3] = {
{"Yes", 5},
{"No", 6},
{NULL, 0},
};
static const UnkTextStruct2 sUnknown_80E6174 =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x15, 0x0D,
0x06, 0x04,
0x04, 0x00,
NULL
};
static const MenuItem sUnknown_80E618C[3] = {
{"Yes", 5},
{"Cancel", 0},
{NULL, 0},
};
ALIGNED(4) static const u8 sUnknown_80E61A4[] = "What would you like to do? ";
ALIGNED(4) static const u8 sUnknown_80E61C0[] = "Please choose the item to be sent.";
ALIGNED(4) static const u8 sUnknown_80E61E4[] = _(
"{COLOR_1 LIGHT_BLUE}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}\n"
"will be sent.\n"
"Is that OK?");
ALIGNED(4) static const u8 sUnknown_80E6214[] = _(
"Your friend will send you an item.\n"
"When you are both ready{COMMA} you\n"
"may communicate.");
ALIGNED(4) static const u8 sUnknown_80E6268[] = _(
"Preparing to send an item to your\n"
"friend. When you are both ready{COMMA}\n"
"you may communicate.");
ALIGNED(4) static const u8 sUnknown_80E62C4[] = _(
"{CENTER_ALIGN}In communication...\n"
"{CENTER_ALIGN}Please wait with the power on.\n"
"{CENTER_ALIGN}To cancel{COMMA} press {B_BUTTON}.");
ALIGNED(4) static const u8 sUnknown_80E6314[] = _(
"You received\n"
"{COLOR_1 LIGHT_BLUE}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}.\n"
"Your adventure will be saved.");
ALIGNED(4) static const u8 sUnknown_80E6358[] = _("You sent {COLOR_1 LIGHT_BLUE}$d0{END_COLOR_TEXT_1} {COLOR_1 GREEN_2}{ARG_MOVE_ITEM_0}(s){END_COLOR_TEXT_1}.");
// Trade Items Menu Link Error Messages
ALIGNED(4) static const u8 sTradeItemsCommunicationError[] = "There was a communication error.";
ALIGNED(4) static const u8 sUnknown_80E639C[] =
"An incorrect number of GBA systems are\n"
"connected.\n"
"Please redo this process from the start.";
ALIGNED(4) static const u8 sUnknown_80E63F8[] =
"There is no response from your friend.\n"
"Please redo this process from the start.";
ALIGNED(4) static const u8 sUnknown_80E6448[] =
"The sender and receiver appear to be\n"
"in different modes.\n"
"Please redo the process from the start.";
ALIGNED(4) static const u8 sUnknown_80E64AC[] = _(
"There is no response from your friend.\n"
"Please make sure the sender and receiver\n"
"are ready{COMMA} then redo this from the start.");
ALIGNED(4) static const u8 sHowMany[] = "How many?";

View File

@@ -40,7 +40,7 @@ struct unkStruct_203B34C
/* 0x1A4 */ u32 currMenuChoice;
};
EWRAM_DATA_2 struct MainMenu *gMainMenu = {0};
EWRAM_DATA_2 MainMenu *gMainMenu = {0};
EWRAM_DATA_2 struct unkStruct_203B34C *gUnknown_203B34C = {0};
EWRAM_DATA_2 u32 gUnknown_203B350 = {0};
EWRAM_DATA_2 u32 gUnknown_203B354 = {0}; // unused everywhere else except here..
@@ -370,14 +370,13 @@ const MenuItem gUnknown_80E6030[] = {
static const u8 sUnknown_80E6048[] = "go on an adventure to unknown worlds.";
ALIGNED(4) static const u8 sUnknown_80E6070[] = _("Using wireless communication{COMMA} you can");
static const u8 sMainMenu_fill0[] = "pksdir0";
void InitMainMenu(void)
{
if (gMainMenu == NULL) {
gMainMenu = MemoryAlloc(sizeof(struct MainMenu),8);
MemoryFill8((u8 *)gMainMenu, 0, sizeof(struct MainMenu));
gMainMenu = MemoryAlloc(sizeof(MainMenu),8);
MemoryFill8((u8 *)gMainMenu, 0, sizeof(MainMenu));
}
gMainMenu->currMenu = MENU_NO_SCREEN_CHANGE;
gMainMenu->nextMenu = MENU_MAIN_SCREEN;
@@ -602,13 +601,13 @@ void CleanUpMenu(void)
}
// Unused
void sub_8035C00(struct MainMenuSub *param)
void sub_8035C00(MainMenuSub *param)
{
gMainMenu->sub = *param;
}
// Unused
struct MainMenuSub *sub_8035C10(void)
MainMenuSub *sub_8035C10(void)
{
return &gMainMenu->sub;
}
@@ -667,7 +666,7 @@ s16 sub_8035D3C(void)
return gMainMenu->unk38;
}
struct MainMenu *GetMainMenu(void)
MainMenu *GetMainMenu(void)
{
return gMainMenu;
}
@@ -690,7 +689,7 @@ s32 sub_8035D74(void)
}
// Unused
void sub_8035D80(struct unkStruct_8035D94 *item)
void sub_8035D80(unkStruct_8035D94 *item)
{
#ifndef NONMATCHING
@@ -700,7 +699,7 @@ void sub_8035D80(struct unkStruct_8035D94 *item)
#endif
u32 itemIndex;
struct MainMenu *preload;
MainMenu *preload;
preload = gMainMenu;
numItem = item->numItems;
@@ -709,7 +708,7 @@ void sub_8035D80(struct unkStruct_8035D94 *item)
preload->unk30.numItems = numItem;
}
struct unkStruct_8035D94 *sub_8035D94(void)
unkStruct_8035D94 *sub_8035D94(void)
{
return &gMainMenu->unk30;
}

View File

@@ -1,864 +0,0 @@
#include "global.h"
#include "code_8009804.h"
#include "code_800C9CC.h"
#include "constants/communication_error_codes.h"
#include "input.h"
#include "main_menu.h"
#include "items.h"
#include "menu.h"
#include "memory.h"
#include "text1.h"
#include "menu_input.h"
#include "dungeon_global_data.h"
#include "pokemon.h"
#include "code_8094F88.h"
#include "sprite.h"
#include "code_80118A4.h"
#include "code_800558C.h"
struct unkStruct_203B35C
{
// size: 0x504
u32 unk0;
u32 linkStatus;
u32 state;
SpriteOAM unkC;
u32 unk14;
u8 fill18[0x1C - 0x18];
MenuStruct unk1C[4];
UnkTextStruct2 unk15C[4];
struct unkStruct_8035D94 unk1BC[2];
unkStruct_203B480 unk1CC;
unkStruct_203B480 unk1FC;
unkStruct_203B480 unk22C;
unkStruct_203B480 unk25C;
unkStruct_203B480 unk28C;
PokemonStruct1 unk2BC;
unkStruct_203B480 unk314;
PokemonStruct1 unk344;
u8 unk39C[0xB4];
u8 unk450[0xB4];
};
EWRAM_DATA_2 struct unkStruct_203B35C *gUnknown_203B35C = {0};
const UnkTextStruct2 gUnknown_80E653C = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const UnkTextStruct2 gUnknown_80E6554 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E65C4[];
const u8 sUnknown_80E65AC[];
const u8 sUnknown_80E658C[];
const MenuItem gUnknown_80E656C[4] = {
{sUnknown_80E65C4, 0x5},
{sUnknown_80E65AC, 0x5},
{sUnknown_80E658C, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E658C[] = _("{CENTER_ALIGN}Don{APOSTROPHE}t turn the power off!");
ALIGNED(4) const u8 sUnknown_80E65AC[] = _("{CENTER_ALIGN}Item transmitting!");
ALIGNED(4) const u8 sUnknown_80E65C4[] = _("{CENTER_ALIGN}{COLOR_1 RED}Caution!{END_COLOR_TEXT_1} ");
const u8 sUnknown_80E65F8[];
const MenuItem gUnknown_80E65D8[4] = {
{sUnknown_80E65C4, 0x5},
{sUnknown_80E65F8, 0x5},
{sUnknown_80E658C, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E65F8[] = _("{CENTER_ALIGN}Thank-You Mail in transmission!");
const u8 sUnknown_80E663C[];
const MenuItem gUnknown_80E661C[4] = {
{sUnknown_80E65C4, 0x5},
{sUnknown_80E663C, 0x5},
{sUnknown_80E658C, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E663C[] = _("{CENTER_ALIGN}A-OK Mail in transmission!");
const MenuItem gUnknown_80E665C[4] = {
{sUnknown_80E65C4, 0x5},
{sUnknown_80E65F8, 0x5},
{sUnknown_80E658C, 0x5},
{NULL, 0x3},
};
const u8 sUnknown_80E669C[];
const MenuItem gUnknown_80E667C[4] = {
{sUnknown_80E65C4, 0x5},
{sUnknown_80E669C, 0x5},
{sUnknown_80E658C, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E669C[] = _("{CENTER_ALIGN}Wonder Mail in transmission!");
const UnkTextStruct2 gUnknown_80E66BC = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6734[];
const u8 sUnknown_80E6710[];
const u8 sUnknown_80E66F4[];
const MenuItem gUnknown_80E66D4[4] = {
{sUnknown_80E6734, 0x5},
{sUnknown_80E6710, 0x5},
{sUnknown_80E66F4, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E66F4[] = _("{CENTER_ALIGN}Please press any button.");
ALIGNED(4) const u8 sUnknown_80E6710[] = _("{CENTER_ALIGN}Your adventure will be continued.");
ALIGNED(4) const u8 sUnknown_80E6734[] = _("{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE}Success!{END_COLOR_TEXT_1} ");
const UnkTextStruct2 gUnknown_80E6748 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6780[];
const u8 sUnknown_80E6794[];
const u8 sUnknown_80E67B4[];
const MenuItem gUnknown_80E6760[4] = {
{sUnknown_80E67B4, 0x5},
{sUnknown_80E6794, 0x5},
{sUnknown_80E6780, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6780[] = _("{CENTER_ALIGN}please try again.");
ALIGNED(4) const u8 sUnknown_80E6794[] = _("{CENTER_ALIGN}Check the Game Link cable and");
ALIGNED(4) const u8 sUnknown_80E67B4[] = _("{CENTER_ALIGN}#C2Communication error!{END_COLOR_TEXT_1} ");
const UnkTextStruct2 gUnknown_80E67D4 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E680C[];
const MenuItem gUnknown_80E67EC[4] = {
{sUnknown_80E67B4, 0x5},
{sUnknown_80E680C, 0x5},
{sUnknown_80E6780, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E680C[] = _("{CENTER_ALIGN}Check your communication mode and");
const UnkTextStruct2 gUnknown_80E6830 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6888[];
const u8 sUnknown_80E6868[];
const MenuItem gUnknown_80E6848[4] = {
{sUnknown_80E67B4, 0x5},
{sUnknown_80E6888, 0x5},
{sUnknown_80E6868, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6868[] = _("{CENTER_ALIGN}Please inform the programmer.");
ALIGNED(4) const u8 sUnknown_80E6888[] = _("{CENTER_ALIGN}Check sum error.");
const UnkTextStruct2 gUnknown_80E689C = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6928[];
const u8 sUnknown_80E68FC[];
const u8 sUnknown_80E68D4[];
const MenuItem gUnknown_80E68B4[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E68FC, 0x5},
{sUnknown_80E68D4, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E68D4[] = _("{CENTER_ALIGN}someone{APOSTROPHE}s storage space was full.");
ALIGNED(4) const u8 sUnknown_80E68FC[] = _("{CENTER_ALIGN}An item could not be transferred because");
ALIGNED(4) const u8 sUnknown_80E6928[] = _("{CENTER_ALIGN}#C2Error!{END_COLOR_TEXT_1} ");
const UnkTextStruct2 gUnknown_80E6938 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6988[];
const u8 sUnknown_80E6970[];
const MenuItem gUnknown_80E6950[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E6988, 0x5},
{sUnknown_80E6970, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6970[] = _("{CENTER_ALIGN}Please check again.");
ALIGNED(4) const u8 sUnknown_80E6988[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE}SOS Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used.");
const UnkTextStruct2 gUnknown_80E69B0 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E69E8[];
const MenuItem gUnknown_80E69C8[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E69E8, 0x5},
{sUnknown_80E6970, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E69E8[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE}A-OK Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used.");
const UnkTextStruct2 gUnknown_80E6A10 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6A48[];
const MenuItem gUnknown_80E6A28[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E6A48, 0x5},
{sUnknown_80E6970, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6A48[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE}Thank-You Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used.");
const UnkTextStruct2 gUnknown_80E6A74 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6AC8[];
const u8 sUnknown_80E6AAC[];
const MenuItem gUnknown_80E6A8C[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E6AC8, 0x5},
{sUnknown_80E6AAC, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6AAC[] = _("{CENTER_ALIGN}It can{APOSTROPHE}t be received.");
ALIGNED(4) const u8 sUnknown_80E6AC8[] = _("{CENTER_ALIGN}There is no space for new mail.");
const UnkTextStruct2 gUnknown_80E6AEC = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6B4C[];
const u8 sUnknown_80E6B24[];
const MenuItem gUnknown_80E6B04[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E6B4C, 0x5},
{sUnknown_80E6B24, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6B24[] = _("{CENTER_ALIGN}You need to go further in the story.");
ALIGNED(4) const u8 sUnknown_80E6B4C[] = _("{CENTER_ALIGN}You may not go to that {COLOR_1 LIGHT_BLUE}dungeon{END_COLOR_TEXT_1} yet.");
const UnkTextStruct2 gUnknown_80E6B78 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6BC4[];
const u8 sUnknown_80E6BB0[];
const MenuItem gUnknown_80E6B90[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E6BC4, 0x5},
{sUnknown_80E6BB0, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6BB0[] = _("{CENTER_ALIGN}Please try again.");
ALIGNED(4) const u8 sUnknown_80E6BC4[] = _("{CENTER_ALIGN}There was a problem on your friend{APOSTROPHE}s end.");
const UnkTextStruct2 gUnknown_80E6BF4 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6C2C[];
const MenuItem gUnknown_80E6C0C[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E6C2C, 0x5},
{sUnknown_80E6BB0, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6C2C[] = _("{CENTER_ALIGN}Your friend is not responding.");
const UnkTextStruct2 gUnknown_80E6C50 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6CA8[];
const u8 sUnknown_80E6C88[];
const MenuItem gUnknown_80E6C68[4] = {
{sUnknown_80E6734, 0x5},
{sUnknown_80E6CA8, 0x5},
{sUnknown_80E6C88, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6C88[] = _("{CENTER_ALIGN}went through successfully.");
ALIGNED(4) const u8 sUnknown_80E6CA8[] = _("{CENTER_ALIGN}The item exchange with your friend");
const UnkTextStruct2 gUnknown_80E6CD0 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6D2C[];
const u8 sUnknown_80E6D08[];
const MenuItem gUnknown_80E6CE8[4] = {
{sUnknown_80E65C4, 0x5},
{sUnknown_80E6D2C, 0x5},
{sUnknown_80E6D08, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6D08[] = _("{CENTER_ALIGN}you and your friend are ready.");
ALIGNED(4) const u8 sUnknown_80E6D2C[] = _("{CENTER_ALIGN}Please communicate only after both");
const UnkTextStruct2 gUnknown_80E6D54 = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6DB0[];
const u8 sUnknown_80E6D8C[];
const MenuItem gUnknown_80E6D6C[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E6DB0, 0x5},
{sUnknown_80E6D8C, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6D8C[] = _("{CENTER_ALIGN}connected. Please check again.");
ALIGNED(4) const u8 sUnknown_80E6DB0[] = _("{CENTER_ALIGN}An incorrect number of GBA systems are");
const UnkTextStruct2 gUnknown_80E6DDC = {
0x00, 0x00, 0x00, 0x00,
0x03,
0x03, 0x08,
0x18, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6E30[];
const u8 sUnknown_80E6E14[];
const MenuItem gUnknown_80E6DF4[4] = {
{sUnknown_80E6928, 0x5},
{sUnknown_80E6E30, 0x5},
{sUnknown_80E6E14, 0x5},
{NULL, 0x3},
};
ALIGNED(4) const u8 sUnknown_80E6E14[] = _("{CENTER_ALIGN}Please check it again.");
ALIGNED(4) const u8 sUnknown_80E6E30[] = _("{CENTER_ALIGN}Communication failed.");
static const u8 fill0[] = "pksdir0";
ALIGNED(4) const u8 gUnknown_80E6E50[] = "CHUNSOFT";
static const u8 fill1[] = "pksdir0";
static const u8 fill2[] = "pksdir0";
static const u8 fill3[] = "pksdir0";
static const u8 fill4[] = "pksdir0";
extern void sub_8037400(void);
extern void sub_80376CC();
extern u32 sub_8037C10(u32);
extern void sub_8037748(void);
extern void sub_80371B8(void);
extern void sub_8037900(void);
extern u32 sub_8037798(void);
extern void TransferBGPaletteBuffer();
extern void xxx_call_update_bg_vram();
extern void xxx_call_update_bg_sound_input();
extern s32 sub_8037D64(u32 mode, void *, void *);
extern s32 sub_80381F4(u32 mode, void *, void *);
extern void sub_8037810(void);
extern s32 sub_8037B28(u32);
s32 sub_8035D3C(void);
extern s32 sub_8035D74(void);
extern void xxx_draw_string_80144C4(void);
void sub_8036FDC(s32 param_1)
{
int index1;
int index2;
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
ResetSprites(FALSE);
if (gUnknown_203B35C == NULL) {
gUnknown_203B35C = MemoryAlloc(sizeof(struct unkStruct_203B35C),8);
MemoryFill8((u8 *)gUnknown_203B35C,0,sizeof(struct unkStruct_203B35C));
}
gUnknown_203B35C->unk0 = param_1;
gUnknown_203B35C->linkStatus = COMMS_GOOD;
gUnknown_203B35C->state = 0;
for(index1 = 0; index1 < 2; index1++)
{
gUnknown_203B35C->unk1BC[index1].numItems = 0;
gUnknown_203B35C->unk1BC[index1].itemIndex.itemIndex_u8 = ITEM_NOTHING;
}
for(index2 = 0; index2 < 4; index2++){
gUnknown_203B35C->unk15C[index2] = gUnknown_80E653C;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B35C->unk15C, TRUE, TRUE);
SetMenuItems(gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0,6,0);
sub_8035CF4(gUnknown_203B35C->unk1C,0,TRUE);
sub_80376CC();
}
void sub_80370D4(void)
{
if(gUnknown_203B35C != NULL)
{
MemoryFree(gUnknown_203B35C);
gUnknown_203B35C = NULL;
}
}
// Unused
u32 sub_80370F0(void)
{
u32 nextMenu;
int local_10;
local_10 = 4;
nextMenu = MENU_NO_SCREEN_CHANGE;
switch(gUnknown_203B35C->state){
case 0:
if (sub_80130A8(&gUnknown_203B35C->unk1C[0]) == '\0') {
sub_8013114(&gUnknown_203B35C->unk1C[0],&local_10);
}
if (local_10 == 4) {
sub_8037748();
}
else {
gUnknown_203B35C->state = 1;
sub_8037900();
}
break;
case 1:
sub_80376CC();
gUnknown_203B35C->state = 2;
sub_80371B8();
break;
case 2:
if (((gUnknown_203B35C->unk0 < 2) && (gUnknown_203B35C->linkStatus == COMMS_GOOD)) && (sub_8037C10(0) == 0) ) {
return 0x29; // TODO: what screen is this?
}
else {
if (sub_80130A8(&gUnknown_203B35C->unk1C[0]) == '\0') {
sub_8013114(&gUnknown_203B35C->unk1C[0],&local_10);
}
if (local_10 != 4) {
PlayMenuSoundEffect(3);
nextMenu = sub_8037798();
gUnknown_203B35C->state = 4;
}
sub_8037748();
}
break;
}
return nextMenu;
}
void sub_80371B8(void)
{
struct unkStruct_8035D94 *item;
const MenuItem *MenuItems;
const UnkTextStruct2 *puVar5;
puVar5 = NULL;
MenuItems = NULL;
sub_8037400();
if ((gUnknown_203B35C->unk0 < 2) &&(gUnknown_203B35C->linkStatus == COMMS_GOOD)) {
if (sub_8037C10(0) != 0) {
sub_80376CC();
sub_8035CC0(gUnknown_203B35C->unk15C,0);
// Success!
// The item exchange with your friend
// went through successfully
SetMenuItems(gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, &gUnknown_80E6C50, gUnknown_80E6C68, 0, 6, 0);
sub_8035CF4(gUnknown_203B35C->unk1C, 0, TRUE);
}
}
else {
sub_80376CC();
sub_8035CC0(gUnknown_203B35C->unk15C, 0);
switch(gUnknown_203B35C->linkStatus) {
case 0:
puVar5 = &gUnknown_80E66BC;
MenuItems = gUnknown_80E66D4;
break;
case 3:
puVar5 = &gUnknown_80E6D54;
MenuItems = gUnknown_80E6D6C;
break;
case 2:
puVar5 = &gUnknown_80E6DDC;
MenuItems = gUnknown_80E6DF4;
break;
case 4:
puVar5 = &gUnknown_80E67D4;
MenuItems = gUnknown_80E67EC;
break;
case 1:
case 5:
puVar5 = &gUnknown_80E6748;
MenuItems = gUnknown_80E6760;
break;
case 6:
puVar5 = &gUnknown_80E689C;
MenuItems = gUnknown_80E68B4;
break;
case 7:
puVar5 = &gUnknown_80E6938;
MenuItems = gUnknown_80E6950;
break;
case 9:
puVar5 = &gUnknown_80E69B0;
MenuItems = gUnknown_80E69C8;
break;
case 0xb:
puVar5 = &gUnknown_80E6A10;
MenuItems = gUnknown_80E6A28;
break;
case 0xd:
puVar5 = &gUnknown_80E6A74;
MenuItems = gUnknown_80E6A8C;
break;
case 0xe:
puVar5 = &gUnknown_80E6B78;
// Error, there was a problem on your friend's end
MenuItems = gUnknown_80E6B90;
break;
case 0xf:
puVar5 = &gUnknown_80E6BF4;
// Error, your friend is not responding
MenuItems = gUnknown_80E6C0C;
break;
}
SetMenuItems(gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, puVar5, MenuItems, 0, 6, 0);
sub_8035CF4(gUnknown_203B35C->unk1C, 0, TRUE);
if ((gUnknown_203B35C->linkStatus != COMMS_GOOD) && (gUnknown_203B35C->unk0 == 0) &&
(item = sub_8035D94(), item->itemIndex.itemIndex_u8 != ITEM_NOTHING) && (item->numItems != 0)) {
gTeamInventoryRef->teamStorage[item->itemIndex.itemIndex_u8] += item->numItems;
}
}
}
void sub_80373C4(void)
{
sub_8005838(NULL, 0);
sub_80060EC();
sub_800CB20();
LoadBufferedInputs();
TransferBGPaletteBuffer();
xxx_call_update_bg_vram();
sub_8009908();
xxx_call_update_bg_sound_input();
ResetSprites(FALSE);
}
UNUSED static struct unkStruct_203B35C *sub_80373F4(void)
{
return gUnknown_203B35C;
}
void sub_8037400(void)
{
u8 mailIndex;
void *r5;
void *r6;
s32 species;
struct unkStruct_8035D94 *puVar5;
struct unkStruct_8035D94 *puVar6;
r6 = NULL;
r5 = NULL;
sub_8037810();
sub_8011830();
gUnknown_203B35C->linkStatus = sub_8037B28(gUnknown_203B35C->unk0);
if (gUnknown_203B35C->linkStatus == COMMS_GOOD)
{
switch(gUnknown_203B35C->unk0) {
case 10:
r6 = &gUnknown_203B35C->unk39C;
r5 = &gUnknown_203B35C->unk450;
break;
case 9:
r6 = &gUnknown_203B35C->unk39C;
r5 = &gUnknown_203B35C->unk450;
break;
case 0:
{
#ifndef NONMATCING
register u32 temp1 asm("r1");
#else
u32 temp1;
#endif
puVar5 = sub_8035D94();
puVar6 = &gUnknown_203B35C->unk1BC[0];
temp1 = puVar5->numItems;
puVar6->itemIndex.itemIndex_u32 = puVar5->itemIndex.itemIndex_u32;
puVar6->numItems = temp1;
}
r6 = &gUnknown_203B35C->unk1BC[0];
r5 = &gUnknown_203B35C->unk1BC[1];
break;
case 1:
r6 = &gUnknown_203B35C->unk1BC[0];
r5 = &gUnknown_203B35C->unk1BC[1];
break;
case 7:
r6 = &gUnknown_203B35C->unk1CC;
r5 = &gUnknown_203B35C->unk1FC;
break;
case 6:
mailIndex = sub_8035D74();
gUnknown_203B35C->unk1CC = *GetMailatIndex(mailIndex);
r6 = &gUnknown_203B35C->unk1CC;
r5 = &gUnknown_203B35C->unk1FC;
break;
case 3:
r6 = &gUnknown_203B35C->unk22C;
r5 = &gUnknown_203B35C->unk25C;
break;
case 2:
mailIndex = sub_8035D74();
gUnknown_203B35C->unk22C = *GetMailatIndex(mailIndex);
r6 = &gUnknown_203B35C->unk22C;
r5 = &gUnknown_203B35C->unk25C;
break;
case 4:
mailIndex = sub_8035D74();
gUnknown_203B35C->unk28C = *GetMailatIndex(mailIndex);
if( sub_8035D3C() << 0x10 != 0xffff0000)
{
species = sub_8035D3C();
gUnknown_203B35C->unk2BC = gRecruitedPokemonRef->pokemon[(s16)species];
}
r6 = &gUnknown_203B35C->unk28C;
r5 = &gUnknown_203B35C->unk314;
break;
case 5:
r6 = &gUnknown_203B35C->unk28C;
r5 = &gUnknown_203B35C->unk314;
break;
}
gUnknown_203B35C->linkStatus = sub_8037D64(gUnknown_203B35C->unk0, r6, r5);
if (gUnknown_203B35C->linkStatus == COMMS_GOOD)
{
switch(gUnknown_203B35C->unk0) {
case 0:
case 1:
r6 = &gUnknown_203B35C->unk1BC[0];
r5 = &gUnknown_203B35C->unk1BC[1];
break;
case 2:
case 3:
r6 = &gUnknown_203B35C->unk22C;
r5 = &gUnknown_203B35C->unk25C;
break;
case 4:
case 5:
r6 = &gUnknown_203B35C->unk28C;
r5 = &gUnknown_203B35C->unk314;
break;
case 6:
case 7:
r6 = &gUnknown_203B35C->unk1CC;
r5 = &gUnknown_203B35C->unk1FC;
break;
case 9:
case 10:
r6 = &gUnknown_203B35C->unk39C;
r5 = &gUnknown_203B35C->unk450;
break;
}
gUnknown_203B35C->linkStatus = sub_80381F4(gUnknown_203B35C->unk0, r6, r5);
}
}
xxx_call_start_bg_music();
}
void sub_80376CC(void)
{
#ifdef NONMATCHING
u32 r0;
u32 r2;
#else
register u32 r0 asm("r0");
register u32 r2 asm("r2");
#endif
u32 r1;
u32 r4;
r1 = gUnknown_203B35C->unkC.attrib1;
r0 = (u16)~SPRITEOAM_MASK_AFFINEMODE1;
r0 &= r1;
r0 &= (u16)~SPRITEOAM_MASK_AFFINEMODE2;
r0 &= (u16)~SPRITEOAM_MASK_OBJMODE;
r0 &= (u16)~SPRITEOAM_MASK_MOSAIC;
r0 &= (u16)~SPRITEOAM_MASK_BPP;
r2 = 1 << SPRITEOAM_SHIFT_SHAPE;
r0 &= (u16)~SPRITEOAM_MASK_SHAPE;
r0 |= r2;
gUnknown_203B35C->unkC.attrib1 = r0;
r2 = 0x3F0 << SPRITEOAM_SHIFT_TILENUM;
r1 = gUnknown_203B35C->unkC.attrib3;
r0 = (u16)~SPRITEOAM_MASK_TILENUM;
r0 &= r1;
r0 |= r2;
r0 &= (u16)~SPRITEOAM_MASK_PRIORITY;
r2 = (u16)~SPRITEOAM_MASK_UNK6_4;
r4 = 15 << SPRITEOAM_SHIFT_PALETTENUM;
r0 &= (u16)~SPRITEOAM_MASK_PALETTENUM;
r0 |= r4;
gUnknown_203B35C->unkC.attrib3 = r0;
r0 = 0; // Set x/matrixNum/size to 0
gUnknown_203B35C->unkC.attrib2 = r0;
r1 = 192 << SPRITEOAM_SHIFT_UNK6_4;
r0 = gUnknown_203B35C->unkC.unk6;
r2 &= r0;
r2 |= r1;
gUnknown_203B35C->unkC.unk6 = r2;
}
void sub_8037748(void)
{
u16 temp2;
gUnknown_203B35C->unkC.attrib2 &= ~SPRITEOAM_MASK_X; // Clear x
gUnknown_203B35C->unkC.attrib2 |= 112; // Set x to 112
temp2 = 104 << SPRITEOAM_SHIFT_UNK6_4;
gUnknown_203B35C->unkC.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
gUnknown_203B35C->unkC.unk6 |= temp2;
if ((gUnknown_203B35C->unk14 & 8) != 0)
AddSprite(&gUnknown_203B35C->unkC, 0x100, NULL, NULL);
xxx_draw_string_80144C4();
gUnknown_203B35C->unk14++;
}
u32 sub_8037798(void)
{
u32 nextMenu = MENU_NO_SCREEN_CHANGE;
switch(gUnknown_203B35C->unk0) {
case 0:
case 1:
nextMenu = MENU_MAIN_SCREEN;
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
nextMenu = (gUnknown_203B35C->linkStatus == COMMS_GOOD) ? 0x2A : MENU_MAIN_SCREEN;
break;
case 9:
case 10:
nextMenu = (gUnknown_203B35C->linkStatus == COMMS_GOOD) ? 0x2B : MENU_WONDER_MAIL;
break;
}
return nextMenu;
}

448
src/other_menus1.c Normal file
View File

@@ -0,0 +1,448 @@
#include "global.h"
#include "bg_palette_buffer.h"
#include "code_800558C.h"
#include "code_8009804.h"
#include "code_800C9CC.h"
#include "code_80118A4.h"
#include "constants/communication_error_codes.h"
#include "dungeon_global_data.h"
#include "input.h"
#include "items.h"
#include "memory.h"
#include "menu_input.h"
#include "other_menus1.h"
#include "sprite.h"
#include "text1.h"
// TODO: MAKE STATIC WHEN other_menus1.s IS DED
EWRAM_DATA_2 unkStruct_203B35C *sUnknown_203B35C = {0};
#include "data/other_menus1.h"
extern void sub_8037400(void);
extern void sub_80376CC();
extern u32 sub_8037C10(u32);
extern void sub_8037748(void);
extern void sub_80371B8(void);
extern void sub_8037900(void);
extern u32 sub_8037798(void);
extern void xxx_call_update_bg_vram();
extern void xxx_call_update_bg_sound_input();
extern s32 sub_8037D64(u32 mode, void *, void *);
extern s32 sub_80381F4(u32 mode, void *, void *);
extern void sub_8037810(void);
extern s32 sub_8037B28(u32);
s32 sub_8035D3C(void);
extern s32 sub_8035D74(void);
extern void xxx_draw_string_80144C4(void);
void sub_8036FDC(s32 param_1)
{
s32 index1;
s32 index2;
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
ResetSprites(FALSE);
if (sUnknown_203B35C == NULL) {
sUnknown_203B35C = MemoryAlloc(sizeof(unkStruct_203B35C), 8);
MemoryFill8((u8 *)sUnknown_203B35C, 0, sizeof(unkStruct_203B35C));
}
sUnknown_203B35C->unk0 = param_1;
sUnknown_203B35C->linkStatus = COMMS_GOOD;
sUnknown_203B35C->state = 0;
for (index1 = 0; index1 < 2; index1++) {
sUnknown_203B35C->unk1BC[index1].numItems = 0;
sUnknown_203B35C->unk1BC[index1].itemIndex.itemIndex_u8 = ITEM_NOTHING;
}
for (index2 = 0; index2 < 4; index2++)
sUnknown_203B35C->unk15C[index2] = sUnknown_80E653C;
ResetUnusedInputStruct();
sub_800641C(sUnknown_203B35C->unk15C, TRUE, TRUE);
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6CD0, sUnknown_80E6CE8, 0, 6, 0);
sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE);
sub_80376CC();
}
void sub_80370D4(void)
{
if (sUnknown_203B35C != NULL) {
MemoryFree(sUnknown_203B35C);
sUnknown_203B35C = NULL;
}
}
UNUSED static u32 sub_80370F0(void)
{
u32 nextMenu;
s32 local_10;
local_10 = 4;
nextMenu = MENU_NO_SCREEN_CHANGE;
switch (sUnknown_203B35C->state) {
case 0:
if (!sub_80130A8(&sUnknown_203B35C->unk1C[0]))
sub_8013114(&sUnknown_203B35C->unk1C[0],&local_10);
if (local_10 == 4)
sub_8037748();
else {
sUnknown_203B35C->state = 1;
sub_8037900();
}
break;
case 1:
sub_80376CC();
sUnknown_203B35C->state = 2;
sub_80371B8();
break;
case 2:
if (sUnknown_203B35C->unk0 < 2 && sUnknown_203B35C->linkStatus == COMMS_GOOD && !sub_8037C10(0))
return 41; // TODO: what screen is this?
if (!sub_80130A8(&sUnknown_203B35C->unk1C[0]))
sub_8013114(&sUnknown_203B35C->unk1C[0], &local_10);
if (local_10 != 4) {
PlayMenuSoundEffect(3);
nextMenu = sub_8037798();
sUnknown_203B35C->state = 4;
}
sub_8037748();
break;
}
return nextMenu;
}
void sub_80371B8(void)
{
unkStruct_8035D94 *item;
const MenuItem *MenuItems;
const UnkTextStruct2 *puVar5;
puVar5 = NULL;
MenuItems = NULL;
sub_8037400();
if (sUnknown_203B35C->unk0 < 2 && sUnknown_203B35C->linkStatus == COMMS_GOOD) {
if (sub_8037C10(0)) {
sub_80376CC();
sub_8035CC0(sUnknown_203B35C->unk15C, 0);
// Success!
// The item exchange with your friend
// went through successfully
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6C50, sUnknown_80E6C68, 0, 6, 0);
sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE);
}
}
else {
sub_80376CC();
sub_8035CC0(sUnknown_203B35C->unk15C, 0);
switch (sUnknown_203B35C->linkStatus) {
case 0:
puVar5 = &sUnknown_80E66BC;
MenuItems = sUnknown_80E66D4;
break;
case 3:
puVar5 = &sUnknown_80E6D54;
MenuItems = sUnknown_80E6D6C;
break;
case 2:
puVar5 = &sUnknown_80E6DDC;
MenuItems = sUnknown_80E6DF4;
break;
case 4:
puVar5 = &sUnknown_80E67D4;
MenuItems = sUnknown_80E67EC;
break;
case 1:
case 5:
puVar5 = &sUnknown_80E6748;
MenuItems = sUnknown_80E6760;
break;
case 6:
puVar5 = &sUnknown_80E689C;
MenuItems = sUnknown_80E68B4;
break;
case 7:
puVar5 = &sUnknown_80E6938;
MenuItems = sUnknown_80E6950;
break;
case 9:
puVar5 = &sUnknown_80E69B0;
MenuItems = sUnknown_80E69C8;
break;
case 11:
puVar5 = &sUnknown_80E6A10;
MenuItems = sUnknown_80E6A28;
break;
case 13:
puVar5 = &sUnknown_80E6A74;
MenuItems = sUnknown_80E6A8C;
break;
case 14:
puVar5 = &sUnknown_80E6B78;
// Error, there was a problem on your friend's end
MenuItems = sUnknown_80E6B90;
break;
case 15:
puVar5 = &sUnknown_80E6BF4;
// Error, your friend is not responding
MenuItems = sUnknown_80E6C0C;
break;
}
SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, puVar5, MenuItems, 0, 6, 0);
sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE);
if (sUnknown_203B35C->linkStatus != COMMS_GOOD && sUnknown_203B35C->unk0 == 0) {
item = sub_8035D94();
if (item->itemIndex.itemIndex_u8 != ITEM_NOTHING && item->numItems != 0)
gTeamInventoryRef->teamStorage[item->itemIndex.itemIndex_u8] += item->numItems;
}
}
}
void sub_80373C4(void)
{
sub_8005838(NULL, 0);
sub_80060EC();
sub_800CB20();
LoadBufferedInputs();
TransferBGPaletteBuffer();
xxx_call_update_bg_vram();
sub_8009908();
xxx_call_update_bg_sound_input();
ResetSprites(FALSE);
}
UNUSED static unkStruct_203B35C *sub_80373F4(void)
{
return sUnknown_203B35C;
}
void sub_8037400(void)
{
u8 mailIndex;
void *r5;
void *r6;
s32 species;
unkStruct_8035D94 *puVar5;
unkStruct_8035D94 *puVar6;
r6 = NULL;
r5 = NULL;
sub_8037810();
sub_8011830();
sUnknown_203B35C->linkStatus = sub_8037B28(sUnknown_203B35C->unk0);
if (sUnknown_203B35C->linkStatus == COMMS_GOOD) {
switch (sUnknown_203B35C->unk0) {
case 10:
r6 = &sUnknown_203B35C->unk39C;
r5 = &sUnknown_203B35C->unk450;
break;
case 9:
r6 = &sUnknown_203B35C->unk39C;
r5 = &sUnknown_203B35C->unk450;
break;
case 0:
{
#ifndef NONMATCHING
register u32 temp1 asm("r1");
#else
u32 temp1;
#endif
puVar5 = sub_8035D94();
puVar6 = &sUnknown_203B35C->unk1BC[0];
temp1 = puVar5->numItems;
puVar6->itemIndex.itemIndex_u32 = puVar5->itemIndex.itemIndex_u32;
puVar6->numItems = temp1;
}
r6 = &sUnknown_203B35C->unk1BC[0];
r5 = &sUnknown_203B35C->unk1BC[1];
break;
case 1:
r6 = &sUnknown_203B35C->unk1BC[0];
r5 = &sUnknown_203B35C->unk1BC[1];
break;
case 7:
r6 = &sUnknown_203B35C->unk1CC;
r5 = &sUnknown_203B35C->unk1FC;
break;
case 6:
mailIndex = sub_8035D74();
sUnknown_203B35C->unk1CC = *GetMailatIndex(mailIndex);
r6 = &sUnknown_203B35C->unk1CC;
r5 = &sUnknown_203B35C->unk1FC;
break;
case 3:
r6 = &sUnknown_203B35C->unk22C;
r5 = &sUnknown_203B35C->unk25C;
break;
case 2:
mailIndex = sub_8035D74();
sUnknown_203B35C->unk22C = *GetMailatIndex(mailIndex);
r6 = &sUnknown_203B35C->unk22C;
r5 = &sUnknown_203B35C->unk25C;
break;
case 4:
mailIndex = sub_8035D74();
sUnknown_203B35C->unk28C = *GetMailatIndex(mailIndex);
// TODO: int16 memes?
if (sub_8035D3C() << 0x10 != 0xffff0000) {
species = sub_8035D3C();
sUnknown_203B35C->unk2BC = gRecruitedPokemonRef->pokemon[(s16)species];
}
r6 = &sUnknown_203B35C->unk28C;
r5 = &sUnknown_203B35C->unk314;
break;
case 5:
r6 = &sUnknown_203B35C->unk28C;
r5 = &sUnknown_203B35C->unk314;
break;
}
sUnknown_203B35C->linkStatus = sub_8037D64(sUnknown_203B35C->unk0, r6, r5);
if (sUnknown_203B35C->linkStatus == COMMS_GOOD) {
switch (sUnknown_203B35C->unk0) {
case 0:
case 1:
r6 = &sUnknown_203B35C->unk1BC[0];
r5 = &sUnknown_203B35C->unk1BC[1];
break;
case 2:
case 3:
r6 = &sUnknown_203B35C->unk22C;
r5 = &sUnknown_203B35C->unk25C;
break;
case 4:
case 5:
r6 = &sUnknown_203B35C->unk28C;
r5 = &sUnknown_203B35C->unk314;
break;
case 6:
case 7:
r6 = &sUnknown_203B35C->unk1CC;
r5 = &sUnknown_203B35C->unk1FC;
break;
case 9:
case 10:
r6 = &sUnknown_203B35C->unk39C;
r5 = &sUnknown_203B35C->unk450;
break;
}
sUnknown_203B35C->linkStatus = sub_80381F4(sUnknown_203B35C->unk0, r6, r5);
}
}
xxx_call_start_bg_music();
}
void sub_80376CC(void)
{
#ifdef NONMATCHING
u32 r0;
u32 r2;
#else
register u32 r0 asm("r0");
register u32 r2 asm("r2");
#endif
u32 r1;
u32 r4;
r1 = sUnknown_203B35C->unkC.attrib1;
r0 = (u16)~SPRITEOAM_MASK_AFFINEMODE1;
r0 &= r1;
r0 &= (u16)~SPRITEOAM_MASK_AFFINEMODE2;
r0 &= (u16)~SPRITEOAM_MASK_OBJMODE;
r0 &= (u16)~SPRITEOAM_MASK_MOSAIC;
r0 &= (u16)~SPRITEOAM_MASK_BPP;
r2 = 1 << SPRITEOAM_SHIFT_SHAPE;
r0 &= (u16)~SPRITEOAM_MASK_SHAPE;
r0 |= r2;
sUnknown_203B35C->unkC.attrib1 = r0;
r2 = 0x3F0 << SPRITEOAM_SHIFT_TILENUM;
r1 = sUnknown_203B35C->unkC.attrib3;
r0 = (u16)~SPRITEOAM_MASK_TILENUM;
r0 &= r1;
r0 |= r2;
r0 &= (u16)~SPRITEOAM_MASK_PRIORITY;
r2 = (u16)~SPRITEOAM_MASK_UNK6_4;
r4 = 15 << SPRITEOAM_SHIFT_PALETTENUM;
r0 &= (u16)~SPRITEOAM_MASK_PALETTENUM;
r0 |= r4;
sUnknown_203B35C->unkC.attrib3 = r0;
r0 = 0; // Set x/matrixNum/size to 0
sUnknown_203B35C->unkC.attrib2 = r0;
r1 = 192 << SPRITEOAM_SHIFT_UNK6_4;
r0 = sUnknown_203B35C->unkC.unk6;
r2 &= r0;
r2 |= r1;
sUnknown_203B35C->unkC.unk6 = r2;
}
void sub_8037748(void)
{
u16 temp2;
sUnknown_203B35C->unkC.attrib2 &= ~SPRITEOAM_MASK_X; // Clear x
sUnknown_203B35C->unkC.attrib2 |= 112; // Set x to 112
temp2 = 104 << SPRITEOAM_SHIFT_UNK6_4;
sUnknown_203B35C->unkC.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
sUnknown_203B35C->unkC.unk6 |= temp2;
if ((sUnknown_203B35C->unk14 & 8) != 0)
AddSprite(&sUnknown_203B35C->unkC, 0x100, NULL, NULL);
xxx_draw_string_80144C4();
sUnknown_203B35C->unk14++;
}
u32 sub_8037798(void)
{
u32 nextMenu = MENU_NO_SCREEN_CHANGE;
switch (sUnknown_203B35C->unk0) {
case 0:
case 1:
nextMenu = MENU_MAIN_SCREEN;
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
nextMenu = (sUnknown_203B35C->linkStatus == COMMS_GOOD) ? 42 : MENU_MAIN_SCREEN;
break;
case 9:
case 10:
nextMenu = (sUnknown_203B35C->linkStatus == COMMS_GOOD) ? 43 : MENU_WONDER_MAIL;
break;
}
return nextMenu;
}

View File

@@ -1,17 +1,22 @@
#include "global.h"
#include "code_8094F88.h"
#include "constants/communication_error_codes.h"
#include "constants/dungeon.h"
#include "dungeon_global_data.h"
#include "pokemon.h"
#include "code_8094F88.h"
#include "save.h"
#include "main_menu.h"
#include "memory.h"
#include "pokemon.h"
#include "save.h"
// rescue_password_menu.c
extern s32 gCommsTimeout; // Counts to 100 and then errors if other player hasn't connected
extern s32 gUnknown_202EC48;
extern u32 gUnknown_202EC40[2];
extern s32 gUnknown_202EC48;
extern struct UnkStruct_203B184 *gUnknown_203B184;
#include "data/other_menus2.h"
extern void sub_800D494(void);
extern s32 sub_800D33C(void);
@@ -22,7 +27,6 @@ extern void sub_800D59C(s32 *, u32);
extern void sub_800D570(void);
extern void sub_800D510(void);
extern u8 sub_800D588(void);
extern struct UnkStruct_203B184 *gUnknown_203B184;
extern void sub_800D670(u32, s32 *, u32);
extern void sub_800D68C(u32);
@@ -63,7 +67,7 @@ void sub_8037C44(s32 mode, void *data)
switch(mode) {
case 0:
case 1:
sub_800D59C(data, sizeof(struct unkStruct_8035D94));
sub_800D59C(data, sizeof(unkStruct_8035D94));
break;
case 2:
case 3:
@@ -88,8 +92,8 @@ void sub_8037CC4(s32 mode, void *param_2, void *param_3)
{
case 0:
case 1:
sub_800D670(0, param_2, sizeof(struct unkStruct_8035D94));
sub_800D670(1, param_3, sizeof(struct unkStruct_8035D94));
sub_800D670(0, param_2, sizeof(unkStruct_8035D94));
sub_800D670(1, param_3, sizeof(unkStruct_8035D94));
break;
case 2:
case 3:
@@ -105,8 +109,8 @@ void sub_8037CC4(s32 mode, void *param_2, void *param_3)
break;
case 9:
case 10:
sub_800D670(0, param_2, 0xb4);
sub_800D670(1, param_3, 0xb4);
sub_800D670(0, param_2, 180);
sub_800D670(1, param_3, 180);
break;
}
}
@@ -175,10 +179,10 @@ s32 sub_8037DF0(void)
return linkStatus;
}
void sub_8037E38(struct unkStruct_8035D94 *param_1,struct unkStruct_8035D94 *param_2)
void sub_8037E38(unkStruct_8035D94 *param_1,unkStruct_8035D94 *param_2)
{
struct unkStruct_8035D94 *r3;
struct unkStruct_8035D94 *r4;
unkStruct_8035D94 *r3;
unkStruct_8035D94 *r4;
u32 load;
r4 = sub_800D588() == 0 ? param_2 : param_1;
@@ -208,7 +212,8 @@ void sub_8037E90(unkStruct_203B480 *param_1, unkStruct_203B480 *param_2)
}
void nullsub_53(void *param_1, void *param_2)
{}
{
}
void sub_8037EBC(WonderMailStruct_203B2C0_sub *param_1, WonderMailStruct_203B2C0_sub *param_2) {
unkStruct_203B480 *mail;
@@ -245,7 +250,7 @@ void sub_8037EBC(WonderMailStruct_203B2C0_sub *param_1, WonderMailStruct_203B2C
void sub_8037F4C(unkStruct_203B480 *param_1, unkStruct_203B480 *param_2)
{
unkStruct_203B480 *mail;
struct MainMenu *mainMenu;
MainMenu *mainMenu;
if(sub_800D588() == 0)
{
@@ -284,12 +289,12 @@ void sub_8037F9C(u32 mode, void *param_2, void *param_3)
}
}
s32 sub_8038014(struct unkStruct_8035D94 *param_1,struct unkStruct_8035D94 *param_2)
s32 sub_8038014(unkStruct_8035D94 *param_1,unkStruct_8035D94 *param_2)
{
s32 linkStatus;
s32 r2;
struct unkStruct_8035D94 *r3;
struct unkStruct_8035D94 *r4;
unkStruct_8035D94 *r3;
unkStruct_8035D94 *r4;
r4 = sub_800D588() == 0 ? param_2 : param_1;
r3 = sub_800D588() == 0 ? param_1 : param_2;
@@ -474,4 +479,4 @@ _start:
_end:
sub_800D520();
return linkStatus;
}
}

View File

@@ -347,7 +347,7 @@ s32 UpdateRescuePasswordMenu(void)
unkStruct_203B480 *mailPtr1;
unkStruct_203B480 *mailPtr2;
u32 iVar7;
struct MainMenu *mainMenuPtr;
MainMenu *mainMenuPtr;
s32 nextMenu;
unkStruct_203B480 mail;
u32 menuAction;

View File

@@ -173,7 +173,7 @@ void CleanSaveMenu(void)
s32 UpdateSaveMenu(void)
{
int saveStatus;
struct MainMenu *mainMenu;
MainMenu *mainMenu;
u32 menu;
u32 uStack_18;
u32 action;

View File

@@ -1,88 +1,25 @@
#include "global.h"
#include "code_80118A4.h"
#include "code_80130A8.h"
#include "code_801B3C0.h"
#include "code_801C620.h"
#include "constants/communication_error_codes.h"
#include "cpu.h"
#include "items.h"
#include "main_menu.h"
#include "trade_items_menu.h"
#include "memory.h"
#include "save_write.h"
#include "menu_input.h"
#include "save_write.h"
#include "text1.h"
#include "text2.h"
#include "cpu.h"
#include "code_80118A4.h"
EWRAM_DATA_2 struct TradeItemsMenu *gTradeItemsMenu = {0};
#include "trade_items_menu.h"
extern u32 gUnknown_202DE30;
extern u8 gUnknown_202DE58[];
const MenuItem gUnknown_80E60A0[3] = {
{"Send item", 1},
{"Receive item", 2},
{NULL, 0},
};
static EWRAM_DATA_2 struct TradeItemsMenu *sTradeItemsMenu = {0};
const MenuItem gUnknown_80E60D4[3] = {
{"Send item", -1},
{"Receive item", 2},
{NULL, 0},
};
const UnkTextStruct2 gUnknown_80E60EC =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x15, 0x04,
0x06, 0x05,
0x05, 0x00,
NULL
};
const MenuItem gUnknown_80E6104[4] = {
{"Confirm", 3},
{"Info", 4},
{"Cancel", 7},
{NULL, 0},
};
static const UnkTextStruct2 unused =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x16, 0x09,
0x05, 0x03,
0x03, 0x00,
NULL
};
const MenuItem gUnknown_80E6154[3] = {
{"Yes", 5},
{"No", 6},
{NULL, 0},
};
const UnkTextStruct2 gUnknown_80E6174 =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x15, 0x0D,
0x06, 0x04,
0x04, 0x00,
NULL
};
const MenuItem gUnknown_80E618C[3] = {
{"Yes", 5},
{"Cancel", 0},
{NULL, 0},
};
#include "data/trade_items.h"
#include "data/trade_items_menu.h"
extern void sub_8035C1C();
@@ -115,48 +52,22 @@ void sub_8036A7C();
void sub_8036A54();
void WriteandExitTradeItemsMenu();
// 11 was another saving too?
enum TradeItemsScreens
{
TRADE_ITEMS_MAIN_MENU,
TRADE_ITEMS_SEND_ITEM,
TRADE_ITEMS_SEND_ITEM_SELECTION,
TRADE_ITEMS_SEND_ITEM_POPUP_MENU,
TRADE_ITEMS_SEND_ITEM_NUMBER,
TRADE_ITEMS_ITEM_INFO,
TRADE_ITEMS_SEND_ITEM_CONFIRM,
TRADE_ITEMS_RECEIVE_ITEM,
TRADE_ITEMS_IN_COMMUNICATION = 9,
TRADE_ITEMS_PREPARE_TRADE_SAVING = 15,
TRADE_ITEMS_PRE_EXIT = 17,
TRADE_ITEMS_EXIT = 18,
};
enum TradeItemsModes
{
TRADE_ITEMS_SEND_ITEM_MODE,
TRADE_ITEMS_RECEIVE_ITEM_MODE
};
s32 CreateTradeItemsMenu(void)
{
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
gTradeItemsMenu = MemoryAlloc(sizeof(struct TradeItemsMenu), 8);
MemoryFill8((u8 *)gTradeItemsMenu, 0, sizeof(struct TradeItemsMenu));
sTradeItemsMenu = MemoryAlloc(sizeof(struct TradeItemsMenu), 8);
MemoryFill8((u8 *)sTradeItemsMenu, 0, sizeof(struct TradeItemsMenu));
sub_8035C1C();
sub_8035DA0();
gTradeItemsMenu->fallbackState = 0x13;
sTradeItemsMenu->fallbackState = 0x13;
SetTradeItemMenu(TRADE_ITEMS_MAIN_MENU);
return 1;
}
s32 UpdateTradeItemsMenu(void)
{
switch(gTradeItemsMenu->currMenu) {
switch(sTradeItemsMenu->currMenu) {
case TRADE_ITEMS_MAIN_MENU:
TradeItem_MainMenu();
break;
@@ -226,14 +137,14 @@ void TradeItem_MainMenu(void)
{
case 1:
// Send Item
gTradeItemsMenu->itemMode = TRADE_ITEMS_SEND_ITEM_MODE;
gTradeItemsMenu->unk10 = 1;
sTradeItemsMenu->itemMode = TRADE_ITEMS_SEND_ITEM_MODE;
sTradeItemsMenu->unk10 = 1;
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM);
break;
case 2:
// Receive Item
gTradeItemsMenu->itemMode = TRADE_ITEMS_RECEIVE_ITEM_MODE;
gTradeItemsMenu->unk10 = 2;
sTradeItemsMenu->itemMode = TRADE_ITEMS_RECEIVE_ITEM_MODE;
sTradeItemsMenu->unk10 = 2;
SetTradeItemMenu(TRADE_ITEMS_RECEIVE_ITEM);
break;
case 0:
@@ -254,9 +165,9 @@ void sub_8036590(void)
void sub_80365AC(void)
{
gTradeItemsMenu->itemToSend.id = ITEM_NOTHING;
gTradeItemsMenu->itemToSend.quantity = 1;
gTradeItemsMenu->itemToSend.flags = 0;
sTradeItemsMenu->itemToSend.id = ITEM_NOTHING;
sTradeItemsMenu->itemToSend.quantity = 1;
sTradeItemsMenu->itemToSend.flags = 0;
switch(sub_801CA08(TRUE)){
case 2:
// Cancel
@@ -265,18 +176,18 @@ void sub_80365AC(void)
break;
case 3:
// Pop up menu with Confirm, Info, Cancel
gTradeItemsMenu->itemToSend.id = sub_801CB24();
gTradeItemsMenu->itemToSend.quantity = 1;
sTradeItemsMenu->itemToSend.id = sub_801CB24();
sTradeItemsMenu->itemToSend.quantity = 1;
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU);
break;
case 4:
gTradeItemsMenu->fallbackState = TRADE_ITEMS_SEND_ITEM_SELECTION;
gTradeItemsMenu->itemToSend.id = sub_801CB24();
gTradeItemsMenu->itemToSend.quantity = 1;
sub_8006518(gTradeItemsMenu->unk1E4);
sTradeItemsMenu->fallbackState = TRADE_ITEMS_SEND_ITEM_SELECTION;
sTradeItemsMenu->itemToSend.id = sub_801CB24();
sTradeItemsMenu->itemToSend.quantity = 1;
sub_8006518(sTradeItemsMenu->unk1E4);
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
sub_801B3C0(&gTradeItemsMenu->itemToSend);
sub_801B3C0(&sTradeItemsMenu->itemToSend);
SetTradeItemMenu(TRADE_ITEMS_ITEM_INFO);
break;
}
@@ -288,25 +199,25 @@ void sub_8036674(void)
menuAction = -1;
sub_801CA08(FALSE);
if (sub_8012FD8(&gTradeItemsMenu->unk44[3]) == '\0') {
sub_8013114(&gTradeItemsMenu->unk44[3], &menuAction);
if (sub_8012FD8(&sTradeItemsMenu->unk44[3]) == '\0') {
sub_8013114(&sTradeItemsMenu->unk44[3], &menuAction);
}
switch(menuAction){
case 3: // confirm
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_NUMBER);
break;
case 4: // Info
gTradeItemsMenu->fallbackState = 0x13;
sub_8006518(gTradeItemsMenu->unk1E4);
sTradeItemsMenu->fallbackState = 0x13;
sub_8006518(sTradeItemsMenu->unk1E4);
ResetUnusedInputStruct();
sub_800641C(NULL, TRUE, TRUE);
sub_801B3C0(&gTradeItemsMenu->itemToSend);
sub_801B3C0(&sTradeItemsMenu->itemToSend);
SetTradeItemMenu(TRADE_ITEMS_ITEM_INFO);
break;
case 7:
case 0:
// Cancel
sub_8035CC0(gTradeItemsMenu->unk184, 3);
sub_8035CC0(sTradeItemsMenu->unk184, 3);
sub_801CCD8();
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_SELECTION);
break;
@@ -321,14 +232,14 @@ void sub_8036728(void)
case 3:
sub_801B450();
ResetUnusedInputStruct();
sub_800641C(gTradeItemsMenu->unk1E4, TRUE, TRUE);
sub_800641C(sTradeItemsMenu->unk1E4, TRUE, TRUE);
sub_801CB5C(TRUE);
if (gTradeItemsMenu->fallbackState == 0x13) {
sub_8035CF4(gTradeItemsMenu->unk44, 3, TRUE);
if (sTradeItemsMenu->fallbackState == 0x13) {
sub_8035CF4(sTradeItemsMenu->unk44, 3, TRUE);
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU);
}
else {
SetTradeItemMenu(gTradeItemsMenu->fallbackState);
SetTradeItemMenu(sTradeItemsMenu->fallbackState);
}
default:
case 1:
@@ -338,27 +249,27 @@ void sub_8036728(void)
void sub_8036788(void)
{
sub_8012FD8(&gTradeItemsMenu->unk44[3]);
sub_8012FD8(&sTradeItemsMenu->unk44[3]);
sub_801CA08(FALSE);
switch(sub_8013BBC(&gTradeItemsMenu->quantityToSend)){
switch(sub_8013BBC(&sTradeItemsMenu->quantityToSend)){
case 1:
// When you change the #
sub_801CCD8();
sub_8035CF4(gTradeItemsMenu->unk44, 3, FALSE);
sub_8035CF4(sTradeItemsMenu->unk44, 3, FALSE);
sub_8036F30();
break;
case 2:
// If you back out of the # selection
sub_8035CC0(gTradeItemsMenu->unk184, 2);
sub_8035CC0(sTradeItemsMenu->unk184, 2);
sub_801CCD8();
sub_8035CF4(gTradeItemsMenu->unk44, 3, TRUE);
sub_8035CF4(sTradeItemsMenu->unk44, 3, TRUE);
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU);
break;
case 3:
// Confirm # of item
gTradeItemsMenu->itemToSend.quantity = gTradeItemsMenu->quantityToSend;
gTradeItemsMenu->sentItem.itemIdx.id = gTradeItemsMenu->itemToSend.id;
gTradeItemsMenu->sentItem.quantity = gTradeItemsMenu->quantityToSend;
sTradeItemsMenu->itemToSend.quantity = sTradeItemsMenu->quantityToSend;
sTradeItemsMenu->sentItem.itemIdx.id = sTradeItemsMenu->itemToSend.id;
sTradeItemsMenu->sentItem.quantity = sTradeItemsMenu->quantityToSend;
sub_801CBB8();
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_CONFIRM);
break;
@@ -378,9 +289,9 @@ void TradeItem_SendItemConfirm(void)
case 5:
sub_801CBB8();
// Used temp var to get correct statements
load = gTeamInventoryRef->teamStorage[gTradeItemsMenu->itemToSend.id];
load -= gTradeItemsMenu->quantityToSend;
gTeamInventoryRef->teamStorage[gTradeItemsMenu->itemToSend.id] = load;
load = gTeamInventoryRef->teamStorage[sTradeItemsMenu->itemToSend.id];
load -= sTradeItemsMenu->quantityToSend;
gTeamInventoryRef->teamStorage[sTradeItemsMenu->itemToSend.id] = load;
SetTradeItemMenu(TRADE_ITEMS_PREPARE_TRADE_SAVING);
PrepareSavePakWrite(MONSTER_NONE);
break;
@@ -420,7 +331,7 @@ void sub_80368D4(void)
break;
case 7:
case 0:
if ((gTradeItemsMenu->sentItem.itemIdx.id != ITEM_NOTHING) && (gTradeItemsMenu->sentItem.quantity != 0))
if ((sTradeItemsMenu->sentItem.itemIdx.id != ITEM_NOTHING) && (sTradeItemsMenu->sentItem.quantity != 0))
{
TradeItem_AddItem();
SetTradeItemMenu(TRADE_ITEMS_PRE_EXIT);
@@ -445,8 +356,8 @@ void sub_8036950(void)
s32 iVar1;
if (sub_80144A4(&iVar1) == 0) {
if (gTradeItemsMenu->linkStatus == COMMS_GOOD) {
switch(gTradeItemsMenu->itemMode){
if (sTradeItemsMenu->linkStatus == COMMS_GOOD) {
switch(sTradeItemsMenu->itemMode){
case TRADE_ITEMS_SEND_ITEM_MODE:
SetTradeItemMenu(0xd);
break;
@@ -457,14 +368,14 @@ void sub_8036950(void)
break;
}
}
else if (((gTradeItemsMenu->itemMode == TRADE_ITEMS_SEND_ITEM_MODE) && (gTradeItemsMenu->sentItem.itemIdx.id != ITEM_NOTHING)) && (gTradeItemsMenu->sentItem.quantity != 0)) {
else if (((sTradeItemsMenu->itemMode == TRADE_ITEMS_SEND_ITEM_MODE) && (sTradeItemsMenu->sentItem.itemIdx.id != ITEM_NOTHING)) && (sTradeItemsMenu->sentItem.quantity != 0)) {
// Link Failure
TradeItem_AddItem(); // Add back the item
SetTradeItemMenu(0xb);
PrepareSavePakWrite(MONSTER_NONE);
}
else {
PrintTradeItemsLinkError(gTradeItemsMenu->linkStatus);
PrintTradeItemsLinkError(sTradeItemsMenu->linkStatus);
SetTradeItemMenu(0xc);
}
}
@@ -474,9 +385,9 @@ void TradeItem_AddItem(void)
{
// Use temp var to get correct statements
u16 load;
load = gTeamInventoryRef->teamStorage[gTradeItemsMenu->sentItem.itemIdx.id];
load += gTradeItemsMenu->sentItem.quantity;
gTeamInventoryRef->teamStorage[gTradeItemsMenu->sentItem.itemIdx.id] = load;
load = gTeamInventoryRef->teamStorage[sTradeItemsMenu->sentItem.itemIdx.id];
load += sTradeItemsMenu->sentItem.quantity;
gTeamInventoryRef->teamStorage[sTradeItemsMenu->sentItem.itemIdx.id] = load;
}
void sub_80369FC(void)
@@ -542,7 +453,7 @@ void sub_8036AA4(void)
if(!WriteSavePak())
{
FinishWriteSavePak();
PrintTradeItemsLinkError(gTradeItemsMenu->linkStatus);
PrintTradeItemsLinkError(sTradeItemsMenu->linkStatus);
SetTradeItemMenu(0xC);
}
}
@@ -563,10 +474,10 @@ void WriteandExitTradeItemsMenu(void)
void CleanTradeItemsMenu(void)
{
if(gTradeItemsMenu != NULL)
if(sTradeItemsMenu != NULL)
{
MemoryFree(gTradeItemsMenu);
gTradeItemsMenu = NULL;
MemoryFree(sTradeItemsMenu);
sTradeItemsMenu = NULL;
sub_801CBB8();
}
}
@@ -587,17 +498,17 @@ void sub_8036B28(void)
s32 r2;
s32 r3;
switch(gTradeItemsMenu->currMenu) {
switch(sTradeItemsMenu->currMenu) {
case TRADE_ITEMS_MAIN_MENU:
if (sub_801CF14(0)) {
sub_8014248(gUnknown_80E61A4,0,1,gUnknown_80E60D4,0,4,0,0,0x101);
sub_8014248(sUnknown_80E61A4,0,1,sUnknown_80E60D4,0,4,0,0,0x101);
}
else {
sub_8014248(gUnknown_80E61A4,0,1,gUnknown_80E60A0,0,4,0,0,0x101);
sub_8014248(sUnknown_80E61A4,0,1,sUnknown_80E60A0,0,4,0,0,0x101);
}
break;
case TRADE_ITEMS_SEND_ITEM:
sub_80141B4(gUnknown_80E61C0,0,0,0x101);
sub_80141B4(sUnknown_80E61C0,0,0,0x101);
break;
case TRADE_ITEMS_SEND_ITEM_SELECTION:
if (sub_801D008() == 0) {
@@ -610,32 +521,32 @@ void sub_8036B28(void)
}
break;
case TRADE_ITEMS_SEND_ITEM_POPUP_MENU:
sub_8006518(gTradeItemsMenu->unk184);
SetMenuItems(gTradeItemsMenu->unk44,gTradeItemsMenu->unk184,3,&gUnknown_80E60EC,
gUnknown_80E6104,1,0,0);
sub_8006518(sTradeItemsMenu->unk184);
SetMenuItems(sTradeItemsMenu->unk44,sTradeItemsMenu->unk184,3,&sUnknown_80E60EC,
sUnknown_80E6104,1,0,0);
sub_801CCD8();
sub_8035CF4(gTradeItemsMenu->unk44,3,TRUE);
sub_8035CF4(sTradeItemsMenu->unk44,3,TRUE);
break;
case TRADE_ITEMS_SEND_ITEM_NUMBER:
sub_8036F74();
break;
case TRADE_ITEMS_SEND_ITEM_CONFIRM:
gUnknown_202DE30 = gTradeItemsMenu->quantityToSend;
BufferItemName(gUnknown_202DE58,gTradeItemsMenu->itemToSend.id,NULL);
sub_8014248(gUnknown_80E61E4,0,5, gUnknown_80E6154,0,4,0,0,0x101);
gUnknown_202DE30 = sTradeItemsMenu->quantityToSend;
BufferItemName(gUnknown_202DE58,sTradeItemsMenu->itemToSend.id,NULL);
sub_8014248(sUnknown_80E61E4,0,5, sUnknown_80E6154,0,4,0,0,0x101);
break;
case TRADE_ITEMS_RECEIVE_ITEM:
sub_8014248(gUnknown_80E6214,0,5,gUnknown_80E618C,0,4,0,0,0x101);
sub_8014248(sUnknown_80E6214,0,5,sUnknown_80E618C,0,4,0,0,0x101);
break;
case 8:
sub_8014248(gUnknown_80E6268,0,5,gUnknown_80E618C,0,4,0,0,0x101);
sub_8014248(sUnknown_80E6268,0,5,sUnknown_80E618C,0,4,0,0,0x101);
break;
case TRADE_ITEMS_IN_COMMUNICATION:
nullsub_23(FALSE);
sub_80141B4(gUnknown_80E62C4,0,0,0);
sub_80141B4(sUnknown_80E62C4,0,0,0);
break;
case 10:
gTradeItemsMenu->linkStatus = COMMS_GOOD;
sTradeItemsMenu->linkStatus = COMMS_GOOD;
#ifndef NONMATCHING
asm("mov\t%0, #0":"=r"(r2));
@@ -645,53 +556,53 @@ void sub_8036B28(void)
r3 = 0;
#endif
temp4 = &gTradeItemsMenu->unk244;
temp4 = &sTradeItemsMenu->unk244;
temp4->itemIdx.id_u32 = r2;
temp4->quantity = r3;
temp3 = &gTradeItemsMenu->unk24C;
temp3 = &sTradeItemsMenu->unk24C;
temp3->itemIdx.id_u32 = r2;
temp3->quantity = r3;
sub_8011830();
linkStatus = sub_8037B28(gTradeItemsMenu->itemMode);
gTradeItemsMenu->linkStatus = linkStatus;
linkStatus = sub_8037B28(sTradeItemsMenu->itemMode);
sTradeItemsMenu->linkStatus = linkStatus;
if(linkStatus == COMMS_GOOD){
switch(gTradeItemsMenu->itemMode){
switch(sTradeItemsMenu->itemMode){
// Fallthrough needed on each case
case TRADE_ITEMS_SEND_ITEM_MODE:
temp = &gTradeItemsMenu->unk244;
temp2 = &gTradeItemsMenu->sentItem;
temp = &sTradeItemsMenu->unk244;
temp2 = &sTradeItemsMenu->sentItem;
load_2 = temp2->quantity;
temp->itemIdx.id_u32 = temp2->itemIdx.id_u32;
temp->quantity = load_2;
case TRADE_ITEMS_RECEIVE_ITEM_MODE:
gTradeItemsMenu->linkStatus = sub_8037D64(gTradeItemsMenu->itemMode,&gTradeItemsMenu->unk244,&gTradeItemsMenu->unk24C);
sTradeItemsMenu->linkStatus = sub_8037D64(sTradeItemsMenu->itemMode,&sTradeItemsMenu->unk244,&sTradeItemsMenu->unk24C);
default:
break;
}
}
// Needed this check for code generation
if(gTradeItemsMenu->linkStatus == COMMS_GOOD && gTradeItemsMenu->itemMode <= 1){
gTradeItemsMenu->linkStatus = sub_80381F4(gTradeItemsMenu->itemMode,&gTradeItemsMenu->unk244,&gTradeItemsMenu->unk24C);
if(sTradeItemsMenu->linkStatus == COMMS_GOOD && sTradeItemsMenu->itemMode <= 1){
sTradeItemsMenu->linkStatus = sub_80381F4(sTradeItemsMenu->itemMode,&sTradeItemsMenu->unk244,&sTradeItemsMenu->unk24C);
}
xxx_call_start_bg_music();
break;
case 0xe:
if (gTradeItemsMenu->unk24C.quantity == 0) {
gUnknown_202DE30 = gTradeItemsMenu->unk244.quantity;
BufferItemName(gUnknown_202DE58,gTradeItemsMenu->unk244.itemIdx.id,NULL);
if (sTradeItemsMenu->unk24C.quantity == 0) {
gUnknown_202DE30 = sTradeItemsMenu->unk244.quantity;
BufferItemName(gUnknown_202DE58,sTradeItemsMenu->unk244.itemIdx.id,NULL);
}
else {
gUnknown_202DE30 = gTradeItemsMenu->unk24C.quantity;
BufferItemName(gUnknown_202DE58,gTradeItemsMenu->unk24C.itemIdx.id,NULL);
gUnknown_202DE30 = sTradeItemsMenu->unk24C.quantity;
BufferItemName(gUnknown_202DE58,sTradeItemsMenu->unk24C.itemIdx.id,NULL);
}
sub_80141B4(gUnknown_80E6314,0,0,0x101);
sub_80141B4(sUnknown_80E6314,0,0,0x101);
break;
case 0xd:
gUnknown_202DE30 = gTradeItemsMenu->quantityToSend;
BufferItemName(gUnknown_202DE58,gTradeItemsMenu->itemToSend.id,NULL);
sub_80141B4(gUnknown_80E6358,0,0,0x101);
gUnknown_202DE30 = sTradeItemsMenu->quantityToSend;
BufferItemName(gUnknown_202DE58,sTradeItemsMenu->itemToSend.id,NULL);
sub_80141B4(sUnknown_80E6358,0,0,0x101);
break;
case 0xB:
case 0xC:
@@ -710,73 +621,73 @@ void PrintTradeItemsLinkError(u32 errorNum)
case COMMS_GOOD:
break;
case 1:
sub_80141B4(gTradeItemsCommunicationError, 0, 0, 0x101);
sub_80141B4(sTradeItemsCommunicationError, 0, 0, 0x101);
break;
case COMMS_INCORRECT_NUM_SYSTEMS:
sub_80141B4(gUnknown_80E639C, 0, 0, 0x101);
sub_80141B4(sUnknown_80E639C, 0, 0, 0x101);
break;
case COMMS_NO_RESPONSE:
sub_80141B4(gUnknown_80E63F8, 0, 0, 0x101);
sub_80141B4(sUnknown_80E63F8, 0, 0, 0x101);
break;
case COMMS_DIFFERENT_MODES:
sub_80141B4(gUnknown_80E6448, 0, 0, 0x101);
sub_80141B4(sUnknown_80E6448, 0, 0, 0x101);
break;
case 5:
sub_80141B4(gTradeItemsCommunicationError, 0, 0, 0x101);
sub_80141B4(sTradeItemsCommunicationError, 0, 0, 0x101);
break;
case 0xe:
sub_80141B4(gTradeItemsCommunicationError, 0, 0, 0x101);
sub_80141B4(sTradeItemsCommunicationError, 0, 0, 0x101);
break;
case COMMS_NOT_READY:
sub_80141B4(gUnknown_80E64AC, 0, 0, 0x101);
sub_80141B4(sUnknown_80E64AC, 0, 0, 0x101);
break;
default:
sub_80141B4(gTradeItemsCommunicationError, 0, 0, 0x101);
sub_80141B4(sTradeItemsCommunicationError, 0, 0, 0x101);
break;
}
}
void sub_8036ECC(u32 index, u32 r1)
{
gTradeItemsMenu->unk24 = 3;
gTradeItemsMenu->unk18 = 1;
gTradeItemsMenu->unk1C = 1;
gTradeItemsMenu->unk20 = r1;
gTradeItemsMenu->unk30 = 0x2c;
gTradeItemsMenu->unk34 = 0x12;
gTradeItemsMenu->unk28 = index;
gTradeItemsMenu->unk2C = &gTradeItemsMenu->unk184[index];
sub_8013AA0(&gTradeItemsMenu->quantityToSend);
gTradeItemsMenu->unk184[index] = gUnknown_80E6174;
sTradeItemsMenu->unk24 = 3;
sTradeItemsMenu->unk18 = 1;
sTradeItemsMenu->unk1C = 1;
sTradeItemsMenu->unk20 = r1;
sTradeItemsMenu->unk30 = 0x2c;
sTradeItemsMenu->unk34 = 0x12;
sTradeItemsMenu->unk28 = index;
sTradeItemsMenu->unk2C = &sTradeItemsMenu->unk184[index];
sub_8013AA0(&sTradeItemsMenu->quantityToSend);
sTradeItemsMenu->unk184[index] = sUnknown_80E6174;
ResetUnusedInputStruct();
sub_800641C(gTradeItemsMenu->unk184, TRUE, TRUE);
sub_800641C(sTradeItemsMenu->unk184, TRUE, TRUE);
}
void sub_8036F30(void)
{
u32 uVar1;
uVar1 = gTradeItemsMenu->unk28;
uVar1 = sTradeItemsMenu->unk28;
sub_8008C54(uVar1);
sub_80073B8(uVar1);
// Draw "How many?"
xxx_call_draw_string(2, 0, gTradeItemsHowManyText, uVar1, 0);
sub_8013C68(&gTradeItemsMenu->quantityToSend);
xxx_call_draw_string(2, 0, sHowMany, uVar1, 0);
sub_8013C68(&sTradeItemsMenu->quantityToSend);
sub_80073E0(uVar1);
}
void sub_8036F74(void)
{
sub_8006518(gTradeItemsMenu->unk184);
sub_8036ECC(2, gTeamInventoryRef->teamStorage[gTradeItemsMenu->itemToSend.id]);
sub_8006518(sTradeItemsMenu->unk184);
sub_8036ECC(2, gTeamInventoryRef->teamStorage[sTradeItemsMenu->itemToSend.id]);
sub_801CCD8();
sub_8035CF4(gTradeItemsMenu->unk44, 3, FALSE);
sub_8035CF4(sTradeItemsMenu->unk44, 3, FALSE);
sub_8036F30();
}
void SetTradeItemMenu(u32 newMenu)
{
gTradeItemsMenu->currMenu = newMenu;
sTradeItemsMenu->currMenu = newMenu;
nullsub_52();
sub_8036B28();
}

View File

@@ -362,13 +362,13 @@ gUnknown_202EC20: /* 202EC20 (code_80130A8) */
gUnknown_202EC28: /* 202EC28 (code_80130A8) */
.space 0x10
gUnknown_202EC38: /* 202EC38 (other_menus) */
gUnknown_202EC38: /* 202EC38 (other_menus2) */
.space 0x8
gUnknown_202EC40: /* 202EC40 (other_menus / other_menus_1) */
gUnknown_202EC40: /* 202EC40 (other_menus2) */
.space 0x8
gUnknown_202EC48: /* 202EC48 (other_menus_1) */
gUnknown_202EC48: /* 202EC48 (other_menus2) */
.space 0x4
.include "src/rescue_password_menu.o"

View File

@@ -326,7 +326,7 @@ gUnknown_203B328: /* 203B328 (wonder_mail_6) */
.include "src/credits.o"
.include "src/main_menu.o"
.include "src/trade_items_menu.o"
.include "src/other_menus.o"
.include "src/other_menus1.o"
.include "src/unk_menu_203B360.o"
.include "src/save_menu.o"
.include "src/rescue_password_menu.o"