Merge pull request #125 from SethBarberee/feb_2023

Feb 2023
This commit is contained in:
Seth Barberee 2023-03-04 00:14:10 -06:00 committed by GitHub
commit 089bd48186
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
97 changed files with 3184 additions and 4655 deletions

View File

@ -5,750 +5,6 @@
.text
thumb_func_start sub_8012BC4
sub_8012BC4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x24
mov r10, r0
mov r9, r1
adds r1, r2, 0
adds r7, r3, 0
movs r0, 0
mov r8, r0
add r0, sp, 0x4
adds r2, r7, 0
bl ConvertToDecimal
subs r5, r7, 0x1
cmp r5, 0
ble _08012C0A
lsls r0, r5, 2
mov r1, sp
adds r1, r0
adds r1, 0x4
ldr r0, [r1]
cmp r0, 0
bne _08012C0A
movs r2, 0xFF
_08012BFA:
str r2, [r1]
subs r1, 0x4
subs r5, 0x1
cmp r5, 0
ble _08012C0A
ldr r0, [r1]
cmp r0, 0
beq _08012BFA
_08012C0A:
movs r5, 0
cmp r5, r7
bge _08012C50
ldr r0, [sp, 0x4]
cmp r0, 0xFF
beq _08012C50
add r6, sp, 0x4
_08012C18:
ldm r6!, {r0}
adds r0, 0x30
lsls r0, 24
lsrs r0, 24
bl ReturnIntFromChar2
adds r4, r0, 0
bl GetCharacter
movs r1, 0x6
ldrsh r0, [r0, r1]
add r8, r0
mov r2, r10
mov r1, r8
subs r0, r2, r1
ldr r2, [sp, 0x48]
str r2, [sp]
mov r1, r9
adds r2, r4, 0
ldr r3, [sp, 0x44]
bl xxx_call_draw_char
adds r5, 0x1
cmp r5, r7
bge _08012C50
ldr r0, [r6]
cmp r0, 0xFF
bne _08012C18
_08012C50:
add sp, 0x24
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8012BC4
thumb_func_start sub_8012C60
sub_8012C60:
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
adds r6, r1, 0
adds r0, r2, 0
adds r7, r3, 0
lsls r0, 24
lsrs r0, 24
bl ReturnIntFromChar2
adds r4, r0, 0
bl GetCharacter
adds r1, r0, 0
movs r2, 0x6
ldrsh r0, [r1, r2]
cmp r0, 0xB
bgt _08012C90
movs r1, 0xC
subs r1, r0
lsrs r0, r1, 31
adds r1, r0
asrs r0, r1, 1
b _08012C92
_08012C90:
movs r0, 0
_08012C92:
adds r0, r5, r0
ldr r1, [sp, 0x18]
str r1, [sp]
adds r1, r6, 0
adds r2, r4, 0
adds r3, r7, 0
bl xxx_call_draw_char
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8012C60
thumb_func_start sub_8012CAC
sub_8012CAC:
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r8, r0
adds r4, r1, 0
movs r7, 0
movs r6, 0
ldr r0, [r4]
cmp r0, 0
beq _08012CE6
movs r5, 0x80
lsls r5, 9
_08012CC4:
adds r0, r5, 0
movs r1, 0x80
lsls r1, 9
adds r5, r1
asrs r7, r0, 16
ldr r0, [r4]
bl sub_8008ED0
lsls r0, 16
asrs r0, 16
cmp r0, r6
ble _08012CDE
adds r6, r0, 0
_08012CDE:
adds r4, 0x8
ldr r0, [r4]
cmp r0, 0
bne _08012CC4
_08012CE6:
adds r0, r6, 0
cmp r0, 0
bge _08012CEE
adds r0, 0x7
_08012CEE:
asrs r0, 3
adds r0, 0x2
mov r1, r8
strh r0, [r1, 0xC]
mov r0, r8
adds r1, r7, 0
bl sub_8012D08
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8012CAC
thumb_func_start sub_8012D08
sub_8012D08:
push {r4,lr}
adds r4, r0, 0
adds r0, r1, 0
movs r1, 0xC
bl sub_80095E4
lsls r0, 16
asrs r1, r0, 16
ldr r0, [r4, 0x4]
cmp r0, 0x6
bne _08012D24
adds r0, r1, 0x2
lsls r0, 16
asrs r1, r0, 16
_08012D24:
lsls r0, r1, 16
lsrs r0, 16
strh r0, [r4, 0xE]
strh r0, [r4, 0x10]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8012D08
thumb_func_start sub_8012D34
sub_8012D34:
push {r4,lr}
adds r4, r0, 0
adds r0, r1, 0
movs r1, 0x18
bl sub_8009614
lsls r0, 16
asrs r1, r0, 16
ldr r0, [r4, 0x4]
cmp r0, 0x6
bne _08012D50
adds r0, r1, 0x2
lsls r0, 16
asrs r1, r0, 16
_08012D50:
lsls r0, r1, 16
lsrs r0, 16
strh r0, [r4, 0xE]
strh r0, [r4, 0x10]
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8012D34
thumb_func_start sub_8012D60
sub_8012D60:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r4, r0, 0
adds r5, r3, 0
ldr r7, [sp, 0x20]
movs r3, 0
movs r6, 0x1
negs r6, r6
mov r12, r3
ldr r0, [sp, 0x24]
str r0, [r4, 0x10]
str r1, [r4, 0x4]
str r2, [r4, 0x8]
cmp r2, 0
bne _08012D88
ldr r0, _08012E00
str r0, [r4, 0x8]
_08012D88:
str r5, [r4, 0xC]
ldr r0, [r1]
adds r5, r4, 0
adds r5, 0x14
movs r2, 0x4C
adds r2, r4
mov r8, r2
movs r2, 0x4D
adds r2, r4
mov r9, r2
movs r2, 0x4E
adds r2, r4
mov r10, r2
cmp r0, 0
beq _08012DC6
_08012DA6:
cmp r7, 0
blt _08012DB2
ldr r0, [r1, 0x4]
cmp r7, r0
bne _08012DB2
adds r6, r3, 0
_08012DB2:
ldr r0, [r1]
ldrb r0, [r0]
cmp r0, 0x2A
bne _08012DBC
mov r12, r3
_08012DBC:
adds r1, 0x8
adds r3, 0x1
ldr r0, [r1]
cmp r0, 0
bne _08012DA6
_08012DC6:
cmp r6, 0
bge _08012DCC
mov r6, r12
_08012DCC:
adds r0, r5, 0
adds r1, r3, 0
ldr r2, [sp, 0x24]
bl sub_8013134
strh r6, [r4, 0x2C]
adds r0, r5, 0
movs r1, 0
bl sub_80137B0
movs r0, 0x1
mov r1, r8
strb r0, [r1]
mov r2, r9
strb r0, [r2]
mov r1, r10
strb r0, [r1]
subs r0, 0x2
str r0, [r4, 0x48]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08012E00: .4byte gUnknown_80D47B8
thumb_func_end sub_8012D60
thumb_func_start sub_8012E04
sub_8012E04:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r5, r0, 0
adds r7, r1, 0
mov r8, r2
mov r9, r3
ldr r3, [sp, 0x1C]
movs r1, 0
movs r6, 0x1
negs r6, r6
movs r4, 0
ldr r0, [r7]
cmp r0, 0
beq _08012E46
adds r2, r7, 0
_08012E26:
cmp r3, 0
blt _08012E32
ldr r0, [r2, 0x4]
cmp r3, r0
bne _08012E32
adds r6, r1, 0
_08012E32:
ldr r0, [r2]
ldrb r0, [r0]
cmp r0, 0x2A
bne _08012E3C
adds r4, r1, 0
_08012E3C:
adds r2, 0x8
adds r1, 0x1
ldr r0, [r2]
cmp r0, 0
bne _08012E26
_08012E46:
cmp r6, 0
bge _08012E4C
adds r6, r4, 0
_08012E4C:
adds r4, r5, 0
adds r4, 0x14
adds r0, r4, 0
ldr r2, [sp, 0x20]
bl sub_8013134
strh r6, [r5, 0x2C]
adds r0, r4, 0
movs r1, 0
bl sub_80137B0
ldr r0, [sp, 0x20]
str r0, [r5, 0x10]
mov r0, r8
str r0, [r5, 0x8]
cmp r0, 0
bne _08012E72
ldr r0, _08012EA0
str r0, [r5, 0x8]
_08012E72:
mov r0, r9
str r0, [r5, 0xC]
str r7, [r5, 0x4]
adds r1, r5, 0
adds r1, 0x4E
movs r0, 0
strb r0, [r1]
adds r0, r5, 0
adds r0, 0x4C
movs r1, 0x1
strb r1, [r0]
adds r0, 0x1
strb r1, [r0]
movs r0, 0x1
negs r0, r0
str r0, [r5, 0x48]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08012EA0: .4byte gUnknown_80D47B8
thumb_func_end sub_8012E04
thumb_func_start sub_8012EA4
sub_8012EA4:
push {lr}
adds r2, r0, 0
adds r2, 0x4C
strb r1, [r2]
adds r2, 0x1
movs r1, 0x1
strb r1, [r2]
bl sub_8012EBC
pop {r0}
bx r0
thumb_func_end sub_8012EA4
thumb_func_start sub_8012EBC
sub_8012EBC:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x164
adds r5, r0, 0
movs r0, 0x4D
adds r0, r5
mov r8, r0
ldrb r0, [r0]
cmp r0, 0
beq _08012F9E
ldr r0, [r5, 0x10]
bl sub_80073B8
ldr r2, [r5, 0x10]
lsls r0, r2, 3
adds r0, r2
lsls r0, 3
ldr r1, _08012F54
adds r0, r1
ldr r0, [r0, 0xC]
cmp r0, 0x6
bne _08012F24
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
mov r4, sp
adds r4, r0
adds r4, 0x4
add r0, sp, 0x4
bl sub_8006518
ldr r0, [r5]
bl sub_8008ED0
adds r1, r0, 0
ldr r0, [r4, 0x14]
ldrb r0, [r0, 0x2]
lsls r0, 3
subs r0, r1
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r0, 0x8
ldr r2, [r5]
ldr r3, [r5, 0x10]
movs r1, 0
str r1, [sp]
bl xxx_format_and_draw
_08012F24:
ldr r7, [r5, 0x8]
ldr r4, [r5, 0x4]
ldr r6, [r5, 0xC]
movs r1, 0
mov r9, r1
ldr r0, [r4]
mov r10, r8
cmp r0, 0
beq _08012F92
add r0, sp, 0x64
mov r8, r0
_08012F3A:
ldr r3, [r4]
ldrb r0, [r3]
cmp r0, 0x2A
bne _08012F44
adds r3, 0x1
_08012F44:
cmp r6, 0
beq _08012F58
ldrh r0, [r6]
lsls r0, 2
adds r0, r7
ldr r2, [r0]
adds r6, 0x2
b _08012F64
.align 2, 0
_08012F54: .4byte gUnknown_2027370
_08012F58:
ldr r0, [r4, 0x4]
cmp r0, 0
bge _08012F62
ldr r2, [r7, 0x4]
b _08012F64
_08012F62:
ldr r2, [r7]
_08012F64:
mov r0, r8
ldr r1, _08012FBC
bl sprintfStatic
adds r0, r5, 0
adds r0, 0x14
mov r1, r9
bl sub_8013800
adds r1, r0, 0
ldr r3, [r5, 0x10]
movs r0, 0
str r0, [sp]
movs r0, 0x8
mov r2, r8
bl xxx_format_and_draw
adds r4, 0x8
movs r1, 0x1
add r9, r1
ldr r0, [r4]
cmp r0, 0
bne _08012F3A
_08012F92:
ldr r0, [r5, 0x10]
bl sub_80073E0
movs r0, 0
mov r1, r10
strb r0, [r1]
_08012F9E:
adds r0, r5, 0
adds r0, 0x4E
ldrb r0, [r0]
cmp r0, 0
beq _08012FC8
adds r0, r5, 0
adds r0, 0x4C
ldrb r0, [r0]
cmp r0, 0
beq _08012FC0
adds r0, r5, 0
adds r0, 0x14
bl AddMenuCursorSprite
b _08012FC8
.align 2, 0
_08012FBC: .4byte gUnknown_80D4828
_08012FC0:
adds r0, r5, 0
adds r0, 0x14
bl sub_8013660
_08012FC8:
add sp, 0x164
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8012EBC
thumb_func_start sub_8012FD8
sub_8012FD8:
push {r4-r7,lr}
adds r4, r0, 0
movs r0, 0x2C
ldrsh r7, [r4, r0]
adds r6, r4, 0
adds r6, 0x4C
ldrb r0, [r6]
cmp r0, 0
beq _08013094
adds r5, r4, 0
adds r5, 0x14
adds r0, r5, 0
bl GetKeyPress
cmp r0, 0x2
beq _08013078
cmp r0, 0x2
bgt _08013002
cmp r0, 0x1
beq _08013028
b _08013094
_08013002:
cmp r0, 0x7
beq _08013012
cmp r0, 0x8
bne _08013094
adds r0, r5, 0
bl MoveMenuCursorDown
b _08013018
_08013012:
adds r0, r5, 0
bl MoveMenuCursorUp
_08013018:
movs r1, 0x2C
ldrsh r0, [r4, r1]
cmp r7, r0
beq _08013094
movs r0, 0x3
bl PlayMenuSoundEffect
b _08013094
_08013028:
adds r0, r5, 0
bl sub_80137A8
adds r2, r0, 0
lsls r1, r2, 3
ldr r0, [r4, 0x4]
adds r0, r1
ldr r3, [r0, 0x4]
cmp r3, 0
blt _08013068
ldr r1, [r4, 0xC]
cmp r1, 0
beq _0801304C
lsls r0, r2, 1
adds r0, r1
ldrh r0, [r0]
cmp r0, 0x1
beq _08013068
_0801304C:
str r3, [r4, 0x48]
adds r1, r4, 0
adds r1, 0x4C
movs r0, 0
strb r0, [r1]
strh r0, [r4, 0x38]
ldr r1, [r4, 0xC]
cmp r1, 0
beq _08013070
lsls r0, r2, 1
adds r0, r1
ldrh r0, [r0]
cmp r0, 0x2
bne _08013070
_08013068:
movs r0, 0x2
bl PlayMenuSoundEffect
b _08013094
_08013070:
movs r0, 0
bl PlayMenuSoundEffect
b _08013094
_08013078:
movs r1, 0x2E
ldrsh r0, [r4, r1]
ldr r1, [r4, 0x4]
lsls r0, 3
adds r0, r1
ldr r0, [r0, 0x4]
cmp r0, 0
blt _08013094
str r0, [r4, 0x48]
movs r0, 0
strb r0, [r6]
movs r0, 0x1
bl PlayMenuSoundEffect
_08013094:
adds r0, r4, 0
bl sub_8012EBC
adds r0, r4, 0
adds r0, 0x4C
ldrb r0, [r0]
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8012FD8
thumb_func_start sub_80130A8
sub_80130A8:
push {r4-r6,lr}
adds r4, r0, 0
adds r6, r4, 0
adds r6, 0x4C
ldrb r0, [r6]
cmp r0, 0
beq _08013100
adds r5, r4, 0
adds r5, 0x14
adds r0, r5, 0
bl GetKeyPress
cmp r0, 0x1
beq _080130CA
cmp r0, 0x2
beq _080130E6
b _08013100
_080130CA:
adds r0, r5, 0
bl sub_80137A8
lsls r0, 3
ldr r1, [r4, 0x4]
adds r1, r0
ldr r0, [r1, 0x4]
str r0, [r4, 0x48]
movs r0, 0
strb r0, [r6]
strh r0, [r4, 0x38]
bl PlayMenuSoundEffect
b _08013100
_080130E6:
movs r1, 0x2E
ldrsh r0, [r4, r1]
ldr r1, [r4, 0x4]
lsls r0, 3
adds r0, r1
ldr r0, [r0, 0x4]
cmp r0, 0
blt _08013100
str r0, [r4, 0x48]
movs r0, 0
strb r0, [r6]
bl PlayMenuSoundEffect
_08013100:
adds r0, r4, 0
bl sub_8012EBC
adds r0, r4, 0
adds r0, 0x4C
ldrb r0, [r0]
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80130A8
thumb_func_start sub_8013114
sub_8013114:
push {lr}
adds r2, r0, 0
adds r0, 0x4C
ldrb r0, [r0]
cmp r0, 0
beq _08013124
movs r0, 0x1
b _0801312E
_08013124:
cmp r1, 0
beq _0801312C
ldr r0, [r2, 0x48]
str r0, [r1]
_0801312C:
movs r0, 0
_0801312E:
pop {r1}
bx r1
thumb_func_end sub_8013114
thumb_func_start sub_8013134
sub_8013134:
@ -6766,4 +6022,4 @@ _08015FE4:
bx r0
thumb_func_end sub_8015F84
.align 2, 0 @ Don't pad with nop.
.align 2,0

File diff suppressed because it is too large Load Diff

View File

@ -1,311 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_801E198
sub_801E198:
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, _0801E210
movs r0, 0xAC
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
stm r0!, {r5}
bl sub_801317C
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0x44]
adds r0, r1, 0
adds r0, 0x4C
str r0, [r1, 0x48]
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x44]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x4C
ldr r0, _0801E214
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldr r0, [r4]
ldr r0, [r0, 0x48]
movs r1, 0x1
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x4C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x10
ldr r3, [r1, 0x44]
movs r1, 0x1
movs r2, 0x1
bl sub_8013818
bl nullsub_38
bl CreateOptionsMenu
movs r0, 0x1
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0801E210: .4byte gUnknown_203B260
_0801E214: .4byte gUnknown_80DC03C
thumb_func_end sub_801E198
thumb_func_start sub_801E218
sub_801E218:
push {r4,lr}
movs r4, 0
bl sub_8012AE8
cmp r0, 0x2
beq _0801E238
cmp r0, 0x2
bgt _0801E22E
cmp r0, 0x1
beq _0801E242
b _0801E294
_0801E22E:
cmp r0, 0x9
beq _0801E24C
cmp r0, 0xA
beq _0801E26C
b _0801E294
_0801E238:
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _0801E2BE
_0801E242:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _0801E2BE
_0801E24C:
ldr r0, _0801E264
ldr r1, [r0]
movs r2, 0x28
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0801E294
ldr r1, [r1]
ldrb r0, [r1, 0x8]
cmp r0, 0
bne _0801E268
movs r0, 0x2
b _0801E28A
.align 2, 0
_0801E264: .4byte gUnknown_203B260
_0801E268:
subs r0, 0x1
b _0801E28A
_0801E26C:
ldr r0, _0801E284
ldr r1, [r0]
movs r2, 0x28
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0801E294
ldr r1, [r1]
ldrb r0, [r1, 0x8]
cmp r0, 0x1
bls _0801E288
strb r4, [r1, 0x8]
b _0801E28C
.align 2, 0
_0801E284: .4byte gUnknown_203B260
_0801E288:
adds r0, 0x1
_0801E28A:
strb r0, [r1, 0x8]
_0801E28C:
movs r0, 0x3
bl PlayMenuSoundEffect
movs r4, 0x1
_0801E294:
ldr r0, _0801E2B8
ldr r0, [r0]
adds r0, 0x10
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _0801E2AA
cmp r4, 0x1
bne _0801E2BC
_0801E2AA:
bl nullsub_38
bl CreateOptionsMenu
movs r0, 0x1
b _0801E2BE
.align 2, 0
_0801E2B8: .4byte gUnknown_203B260
_0801E2BC:
movs r0, 0
_0801E2BE:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_801E218
thumb_func_start sub_801E2C4
sub_801E2C4:
push {r4,r5,lr}
ldr r4, _0801E304
ldr r2, [r4]
cmp r2, 0
beq _0801E2FE
ldr r0, [r2, 0x44]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x4C
ldr r0, _0801E308
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x4C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_0801E2FE:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0801E304: .4byte gUnknown_203B260
_0801E308: .4byte gUnknown_80DC020
thumb_func_end sub_801E2C4
thumb_func_start nullsub_38
nullsub_38:
bx lr
thumb_func_end nullsub_38
thumb_func_start CreateOptionsMenu
CreateOptionsMenu:
push {r4-r6,lr}
sub sp, 0x4
ldr r5, _0801E368
ldr r0, [r5]
ldr r0, [r0, 0x44]
bl sub_8008C54
ldr r0, [r5]
ldr r0, [r0, 0x44]
bl sub_80073B8
ldr r2, _0801E36C
ldr r0, [r5]
ldr r3, [r0, 0x44]
movs r4, 0
str r4, [sp]
movs r0, 0x10
movs r1, 0
bl xxx_call_draw_string
ldr r0, [r5]
adds r0, 0x10
movs r1, 0
bl sub_8013800
adds r6, r0, 0
ldr r2, _0801E370
ldr r0, [r5]
ldr r3, [r0, 0x44]
str r4, [sp]
movs r0, 0x8
adds r1, r6, 0
bl xxx_call_draw_string
ldr r0, [r5]
ldr r0, [r0]
ldrb r0, [r0, 0x8]
cmp r0, 0x1
beq _0801E384
cmp r0, 0x1
bgt _0801E374
cmp r0, 0
beq _0801E37A
b _0801E3D6
.align 2, 0
_0801E368: .4byte gUnknown_203B260
_0801E36C: .4byte gWindowBGTitle
_0801E370: .4byte gUnknown_80DC064
_0801E374:
cmp r0, 0x2
beq _0801E3B0
b _0801E3D6
_0801E37A:
ldr r0, _0801E380
b _0801E386
.align 2, 0
_0801E380: .4byte gWindowBGBlueString
_0801E384:
ldr r0, _0801E3AC
_0801E386:
bl sub_8008ED0
adds r4, r0, 0
ldr r1, [r5]
ldr r0, [r1, 0x44]
ldr r1, [r1]
ldrb r2, [r1, 0x8]
lsls r1, r2, 2
adds r1, r2
lsls r1, 3
adds r1, 0x50
adds r2, r6, 0
adds r2, 0xA
movs r3, 0x7
str r3, [sp]
adds r3, r4, 0
bl sub_80078A4
b _0801E3D6
.align 2, 0
_0801E3AC: .4byte gWindowBGRedString
_0801E3B0:
ldr r0, _0801E3E8
bl sub_8008ED0
adds r4, r0, 0
ldr r1, [r5]
ldr r0, [r1, 0x44]
ldr r1, [r1]
ldrb r2, [r1, 0x8]
lsls r1, r2, 2
adds r1, r2
lsls r1, 3
adds r1, 0x50
adds r2, r6, 0
adds r2, 0xA
movs r3, 0x7
str r3, [sp]
adds r3, r4, 0
bl sub_80078A4
_0801E3D6:
ldr r0, _0801E3EC
ldr r0, [r0]
ldr r0, [r0, 0x44]
bl sub_80073E0
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0801E3E8: .4byte gWindowBGGreenString
_0801E3EC: .4byte gUnknown_203B260
thumb_func_end CreateOptionsMenu
.align 2,0

View File

@ -5,148 +5,6 @@
.text
thumb_func_start sub_801EE10
sub_801EE10:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r6, r0, 0
mov r9, r2
adds r4, r3, 0
ldr r0, [sp, 0x20]
mov r8, r0
lsls r1, 16
asrs r7, r1, 16
lsls r4, 24
lsrs r4, 24
ldr r5, _0801EF28
movs r0, 0xBC
movs r1, 0x8
bl MemoryAlloc
str r0, [r5]
movs r2, 0
strb r4, [r0, 0x4]
ldr r0, [r5]
movs r1, 0x1
strb r1, [r0, 0x5]
ldr r0, [r5]
strb r1, [r0, 0x6]
ldr r0, [r5]
strb r1, [r0, 0x7]
ldr r0, [r5]
str r6, [r0]
cmp r6, 0x1
bls _0801EE5E
cmp r6, 0x3
bhi _0801EE5E
strb r2, [r0, 0x5]
ldr r0, [r5]
strb r2, [r0, 0x6]
ldr r0, [r5]
strb r2, [r0, 0x7]
_0801EE5E:
ldr r4, _0801EF28
ldr r3, [r4]
ldr r2, _0801EF2C
movs r0, 0x58
adds r1, r7, 0
muls r1, r0
ldr r0, [r2]
adds r0, r1
str r0, [r3, 0x8]
ldrb r0, [r0, 0x2]
strb r0, [r3, 0xC]
ldr r0, [r4]
mov r1, r9
str r1, [r0, 0x10]
adds r0, 0xB8
ldr r1, [sp, 0x1C]
str r1, [r0]
bl sub_801F3F8
adds r5, r0, 0
adds r6, r5, 0
cmp r5, 0x4
bge _0801EE8E
movs r6, 0x4
_0801EE8E:
ldr r0, [r4]
adds r0, 0x58
bl sub_8006518
ldr r1, [r4]
mov r2, r8
str r2, [r1, 0x50]
lsls r0, r2, 1
add r0, r8
lsls r0, 3
adds r1, r0
adds r1, 0x58
ldr r0, _0801EF30
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldr r0, [r4]
adds r0, 0xB8
ldr r0, [r0]
cmp r0, 0
beq _0801EED8
mov r0, r8
bl sub_8006544
ldr r1, [r4]
str r0, [r1, 0x54]
lsls r2, r0, 1
adds r2, r0
lsls r2, 3
adds r1, r2
adds r1, 0x58
ldr r0, _0801EF34
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
_0801EED8:
ldr r0, [r4]
ldr r2, [r0, 0x50]
lsls r1, r2, 1
adds r1, r2
lsls r1, 3
adds r1, 0x58
adds r0, r1
adds r1, r6, 0
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x58
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
adds r0, 0x1C
adds r1, r5, 0
adds r2, r5, 0
mov r3, r8
bl sub_8013818
ldr r0, [r4]
adds r0, 0x1C
movs r1, 0
bl sub_8013780
movs r0, 0x1
bl sub_801F280
movs r0, 0x1
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0801EF28: .4byte gUnknown_203B270
_0801EF2C: .4byte gRecruitedPokemonRef
_0801EF30: .4byte gUnknown_80DC25C
_0801EF34: .4byte gUnknown_80DC274
thumb_func_end sub_801EE10
thumb_func_start sub_801EF38
sub_801EF38:
push {r4-r7,lr}
@ -3962,7 +3820,7 @@ sub_8020D90:
bcc _08020DC6
cmp r0, 0x3
bne _08020DC6
bl sub_801E930
bl GulpinIsNextMoveLinked
ldr r1, _08020DB8
ldr r1, [r1]
strb r0, [r1, 0x14]

View File

@ -5,70 +5,6 @@
.text
thumb_func_start sub_807CABC
sub_807CABC:
push {r4-r6,lr}
sub sp, 0x4
adds r4, r0, 0
movs r6, 0
b _0807CADC
_0807CAC6:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
bne _0807CB0A
ldr r1, _0807CB38
adds r0, r5, r1
ldrb r0, [r0]
cmp r0, 0
bne _0807CB0A
adds r6, 0x1
_0807CADC:
adds r0, r4, 0
movs r1, 0x1
bl sub_8070828
cmp r6, r0
bge _0807CB0A
ldr r5, [r4, 0x70]
adds r0, r5, 0
adds r0, 0x48
ldrb r1, [r0]
movs r0, 0
str r0, [sp]
adds r0, r4, 0
movs r2, 0x1
movs r3, 0
bl sub_8055A00
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0807CAC6
_0807CB0A:
adds r0, r4, 0
movs r1, 0x1
bl sub_8057588
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0807CB2A
ldr r0, [r4, 0x70]
adds r0, 0x48
ldrb r1, [r0]
adds r0, r4, 0
bl sub_806A9B4
_0807CB2A:
adds r0, r4, 0
bl sub_806A1B0
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0807CB38: .4byte 0x00000159
thumb_func_end sub_807CABC
thumb_func_start sub_807CB3C
sub_807CB3C:
push {r4-r7,lr}

View File

@ -1,76 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8038440
sub_8038440:
push {r4,r5,lr}
movs r5, 0
ldr r0, _080384B0
ldr r0, [r0]
mov r12, r0
movs r3, 0xD4
lsls r3, 1
add r3, r12
ldrh r1, [r3]
ldr r0, _080384B4
ands r0, r1
ldr r1, _080384B8
ands r0, r1
ldr r4, _080384BC
ands r0, r4
ldr r1, _080384C0
ands r0, r1
ldr r1, _080384C4
ands r0, r1
movs r2, 0x80
lsls r2, 7
ldr r1, _080384C8
ands r0, r1
orrs r0, r2
strh r0, [r3]
movs r2, 0xFC
lsls r2, 2
ldrh r1, [r3, 0x4]
movs r0, 0xFC
lsls r0, 8
ands r0, r1
orrs r0, r2
ands r0, r4
movs r2, 0xF
movs r4, 0xF0
lsls r4, 8
ldr r1, _080384CC
ands r0, r1
orrs r0, r4
strh r0, [r3, 0x4]
movs r0, 0x70
strh r0, [r3, 0x2]
movs r1, 0xE0
lsls r1, 3
ldrh r0, [r3, 0x6]
ands r2, r0
orrs r2, r1
strh r2, [r3, 0x6]
movs r0, 0xD8
lsls r0, 1
add r0, r12
str r5, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080384B0: .4byte gUnknown_203B360
_080384B4: .4byte 0x0000feff
_080384B8: .4byte 0x0000fdff
_080384BC: .4byte 0x0000f3ff
_080384C0: .4byte 0x0000efff
_080384C4: .4byte 0x0000dfff
_080384C8: .4byte 0x00003fff
_080384CC: .4byte 0x00000fff
thumb_func_end sub_8038440
.align 2,0

View File

@ -1,364 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start UpdateSaveMenu
UpdateSaveMenu:
push {r4-r6,lr}
sub sp, 0x18
ldr r5, _080386A8
movs r0, 0x3
str r0, [sp, 0x14]
ldr r6, _080386AC
ldr r0, [r6]
ldr r4, [r0, 0x4]
cmp r4, 0x1
bne _08038646
b _08038798
_08038646:
cmp r4, 0x1
bcc _0803864C
b _08038824
_0803864C:
adds r0, 0x8
bl sub_8012FD8
movs r5, 0
str r5, [sp, 0x10]
bl sub_80140F8
bl sub_8011C1C
adds r1, r0, 0
add r0, sp, 0x10
bl WriteSavetoPak
adds r4, r0, 0
bl sub_8014114
cmp r4, 0
beq _080386B8
cmp r4, 0x1
beq _08038738
ldr r0, [r6]
movs r4, 0xA4
lsls r4, 1
adds r0, r4
movs r1, 0
bl sub_8035CC0
ldr r1, [r6]
ldr r0, [r1]
cmp r0, 0x2E
bne _08038750
adds r0, r1, 0
adds r0, 0x8
adds r1, r4
ldr r3, _080386B0
ldr r2, _080386B4
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r5, [sp, 0xC]
movs r2, 0
bl SetMenuItems
b _0803876E
.align 2, 0
_080386A8: .4byte 0x0000ffdc
_080386AC: .4byte gUnknown_203B364
_080386B0: .4byte gUnknown_80E6F38
_080386B4: .4byte gUnknown_80E7114
_080386B8:
ldr r0, [r6]
movs r1, 0xA4
lsls r1, 1
adds r0, r1
movs r1, 0
bl sub_8035CC0
ldr r1, [r6]
ldr r0, [r1]
cmp r0, 0x2E
bne _080386F8
adds r0, r1, 0
adds r0, 0x8
movs r2, 0xA4
lsls r2, 1
adds r1, r2
ldr r3, _080386F0
ldr r2, _080386F4
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r5, [sp, 0xC]
movs r2, 0
bl SetMenuItems
b _08038716
.align 2, 0
_080386F0: .4byte gUnknown_80E6F38
_080386F4: .4byte gUnknown_80E70CC
_080386F8:
adds r0, r1, 0
adds r0, 0x8
movs r2, 0xA4
lsls r2, 1
adds r1, r2
ldr r3, _08038728
ldr r2, _0803872C
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r5, [sp, 0xC]
movs r2, 0
bl SetMenuItems
_08038716:
ldr r4, _08038730
ldr r1, [r4]
ldr r0, [r1]
cmp r0, 0x2D
bne _08038734
movs r0, 0x1
str r0, [r1, 0x4]
movs r0, 0x13
b _08038826
.align 2, 0
_08038728: .4byte gUnknown_80E6F38
_0803872C: .4byte gUnknown_80E6FBC
_08038730: .4byte gUnknown_203B364
_08038734:
adds r0, r1, 0
b _08038772
_08038738:
ldr r0, _0803874C
movs r1, 0
movs r2, 0
movs r3, 0
bl sub_80141B4
ldr r1, [r6]
movs r0, 0x5
b _08038780
.align 2, 0
_0803874C: .4byte gUnknown_80E7178
_08038750:
adds r0, r1, 0
adds r0, 0x8
movs r2, 0xA4
lsls r2, 1
adds r1, r2
ldr r3, _08038788
ldr r2, _0803878C
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0x6
str r2, [sp, 0x8]
str r5, [sp, 0xC]
movs r2, 0
bl SetMenuItems
_0803876E:
ldr r4, _08038790
ldr r0, [r4]
_08038772:
adds r0, 0x8
movs r1, 0
movs r2, 0x1
bl sub_8035CF4
ldr r1, [r4]
movs r0, 0x1
_08038780:
str r0, [r1, 0x4]
ldr r5, _08038794
b _08038824
.align 2, 0
_08038788: .4byte gUnknown_80E6F38
_0803878C: .4byte gUnknown_80E701C
_08038790: .4byte gUnknown_203B364
_08038794: .4byte 0x0000ffdc
_08038798:
adds r0, 0x8
bl sub_80130A8
lsls r0, 24
cmp r0, 0
bne _080387AE
ldr r0, [r6]
adds r0, 0x8
add r1, sp, 0x14
bl sub_8013114
_080387AE:
ldr r0, [sp, 0x14]
cmp r0, 0x3
beq _0803881C
cmp r0, 0x3
bhi _080387BE
cmp r0, 0x2
beq _080387C2
b _08038820
_080387BE:
cmp r0, 0x4
bne _08038820
_080387C2:
ldr r4, _080387D8
ldr r1, [r4]
ldr r0, [r1]
cmp r0, 0x29
beq _080387D0
cmp r0, 0x2E
bne _080387DC
_080387D0:
movs r0, 0x1
str r0, [r1, 0x4]
movs r5, 0x1
b _08038820
.align 2, 0
_080387D8: .4byte gUnknown_203B364
_080387DC:
cmp r0, 0x2D
bne _080387E8
movs r0, 0x1
str r0, [r1, 0x4]
movs r5, 0x13
b _08038820
_080387E8:
cmp r0, 0x2C
bne _080387F4
movs r0, 0x1
str r0, [r1, 0x4]
movs r5, 0x1F
b _08038820
_080387F4:
bl GetMainMenu
adds r0, 0x3A
ldrb r0, [r0]
cmp r0, 0
beq _0803880A
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0x4]
movs r5, 0x35
b _08038820
_0803880A:
ldr r0, [r4]
movs r1, 0x1
str r1, [r0, 0x4]
ldr r0, [r0]
movs r5, 0xB
cmp r0, 0x2B
bne _08038820
movs r5, 0xD
b _08038820
_0803881C:
ldr r0, [r6]
str r4, [r0, 0x4]
_08038820:
bl sub_80388C4
_08038824:
adds r0, r5, 0
_08038826:
add sp, 0x18
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end UpdateSaveMenu
thumb_func_start sub_8038830
sub_8038830:
push {r4,r5,lr}
movs r5, 0
ldr r0, _080388A4
ldr r0, [r0]
mov r12, r0
movs r3, 0xD4
lsls r3, 1
add r3, r12
ldrh r1, [r3]
ldr r0, _080388A8
ands r0, r1
ldr r1, _080388AC
ands r0, r1
ldr r4, _080388B0
ands r0, r4
ldr r1, _080388B4
ands r0, r1
ldr r1, _080388B8
ands r0, r1
movs r2, 0x80
lsls r2, 7
ldr r1, _080388BC
ands r0, r1
orrs r0, r2
strh r0, [r3]
movs r2, 0xFC
lsls r2, 2
ldrh r1, [r3, 0x4]
movs r0, 0xFC
lsls r0, 8
ands r0, r1
orrs r0, r2
ands r0, r4
movs r2, 0xF
movs r4, 0xF0
lsls r4, 8
ldr r1, _080388C0
ands r0, r1
orrs r0, r4
strh r0, [r3, 0x4]
movs r0, 0x70
strh r0, [r3, 0x2]
movs r1, 0xD0
lsls r1, 3
ldrh r0, [r3, 0x6]
ands r2, r0
orrs r2, r1
strh r2, [r3, 0x6]
movs r0, 0xD8
lsls r0, 1
add r0, r12
str r5, [r0]
movs r0, 0
bl ResetSprites
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080388A4: .4byte gUnknown_203B364
_080388A8: .4byte 0x0000feff
_080388AC: .4byte 0x0000fdff
_080388B0: .4byte 0x0000f3ff
_080388B4: .4byte 0x0000efff
_080388B8: .4byte 0x0000dfff
_080388BC: .4byte 0x00003fff
_080388C0: .4byte 0x00000fff
thumb_func_end sub_8038830
thumb_func_start sub_80388C4
sub_80388C4:
push {r4,r5,lr}
ldr r5, _080388FC
ldr r2, [r5]
movs r4, 0xD8
lsls r4, 1
adds r0, r2, r4
ldr r0, [r0]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _080388EA
movs r1, 0xD4
lsls r1, 1
adds r0, r2, r1
subs r1, 0xA8
movs r2, 0
movs r3, 0
bl AddSprite
_080388EA:
ldr r1, [r5]
adds r1, r4
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080388FC: .4byte gUnknown_203B364
thumb_func_end sub_80388C4
.align 2,0

View File

@ -1,10 +1,5 @@
.section .rodata
.global gUnknown_80D47B8
gUnknown_80D47B8: @ 80D47B8
.byte 0x07, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x00, 0x00
.global UnkData_80D47C4
UnkData_80D47C4:

View File

@ -520,358 +520,3 @@ gUnknown_80E6EAC: @ 80E6EAC
.asciz "pksdir0"
.global gUnknown_80E6F20
gUnknown_80E6F20: @ 80E6F20
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6F38
gUnknown_80E6F38: @ 80E6F38
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x05, 0x00, 0x08, 0x00
.byte 0x15, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E6F50
gUnknown_80E6F50: @ 80E6F50
.4byte sUnknown_80E6FAC, 0x4
.4byte sUnknown_80E6F90, 0x4
.4byte sUnknown_80E6F70, 0x4
.4byte 0, 0x2
sUnknown_80E6F70:
.string "#+Don~27t turn off the power.\0"
.align 2, 0
sUnknown_80E6F90:
.string "#+Saving your adventure!\0"
.align 2, 0
sUnknown_80E6FAC:
.string "#+#C2Beware!#R \0"
.align 2, 0
.global gUnknown_80E6FBC
gUnknown_80E6FBC: @ 80E6FBC
.4byte sUnknown_80E7008, 0x4
.4byte sUnknown_80E6FF0, 0x4
.4byte sUnknown_80E6FDC, 0x4
.4byte 0, 0x2
sUnknown_80E6FDC:
.string "#+has been saved.\0"
.align 2, 0
sUnknown_80E6FF0:
.string "#+Your adventure so far\0"
.align 2, 0
sUnknown_80E7008:
.string "#+#CGSuccess!#R \0"
.align 2, 0
.global gUnknown_80E701C
gUnknown_80E701C: @ 80E701C
.4byte sUnknown_80E7078, 0x4
.4byte sUnknown_80E7050, 0x4
.4byte sUnknown_80E703C, 0x4
.4byte 0, 0x2
sUnknown_80E703C:
.string "#+Please try again.\0"
.align 2, 0
sUnknown_80E7050:
.string "#+Your adventure could not be saved.\0"
.align 2, 0
sUnknown_80E7078:
.string "#+#C2Save failed!#R \0"
.align 2, 0
.global gUnknown_80E7090
gUnknown_80E7090: @ 80E7090
.4byte sUnknown_80E6FAC, 0x4
.4byte DeletingAdventure_80E70B0, 0x4
.4byte sUnknown_80E6F70, 0x4
.4byte 0, 0x2
DeletingAdventure_80E70B0:
.string "{CENTER_ALIGN}Deleting your adventure!\0"
.align 2, 0
.global gUnknown_80E70CC
gUnknown_80E70CC: @ 80E70CC
.4byte sUnknown_80E7008, 0x4
.4byte AdventureDeleted_80E70F0, 0x4
.4byte Data_80E70EC, 0x4
.4byte 0, 0x2
Data_80E70EC:
.string " \0"
.align 2, 0
AdventureDeleted_80E70F0:
.string "{CENTER_ALIGN}Your adventure has been deleted.\0"
.align 2, 0
.global gUnknown_80E7114
gUnknown_80E7114: @ 80E7114
.4byte sUnknown_80E715C, 0x4
.4byte sUnknown_80E7134, 0x4
.4byte sUnknown_80E703C, 0x4
.4byte 0, 0x2
sUnknown_80E7134:
.string "#+Your adventure could not be deleted.\0"
.align 2, 0
sUnknown_80E715C:
.string "#+#C2Deletion failed!#R \0"
.align 2, 0
.global gUnknown_80E7178
gUnknown_80E7178: @ 80E7178
.string "#+The data could not be written.\n"
.string "#+Please turn off the power and remove\n"
.string "#+and reinsert the DS Card.\0"
.align 2, 0
.string "pksdir0\0"
.global gUnknown_80E71E4
gUnknown_80E71E4: @ 80E71E4
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E71FC
gUnknown_80E71FC: @ 80E71FC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7214
gUnknown_80E7214: @ 80E7214
.4byte Error_80E7268, 0xC
.4byte IncorrectPassword_80E7250, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
CheckAgain_80E7234:
.string "{CENTER_ALIGN}Please check it again.\0"
.align 2, 0
IncorrectPassword_80E7250:
.string "{CENTER_ALIGN}Incorrect password!\0"
.align 2, 0
Error_80E7268:
.string "{CENTER_ALIGN}{COLOR_1 RED}Error!{END_COLOR_TEXT_1} \0"
.align 2, 0
.global gUnknown_80E7278
gUnknown_80E7278: @ 80E7278
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7290
gUnknown_80E7290: @ 80E7290
.4byte Success_80E72D8, 0xC
.4byte PasswordAccept_80E72B4, 0xC
.4byte DATA_80E72B0, 0xC
.4byte 0, 0xA
DATA_80E72B0:
.string " \0"
.align 2, 0
PasswordAccept_80E72B4:
.string "{CENTER_ALIGN}The password has been accepted.\0"
.align 2, 0
Success_80E72D8:
.string "{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE_2}Success!{END_COLOR_TEXT_1} \0"
.align 2, 0
.global gUnknown_80E72EC
gUnknown_80E72EC: @ 80E72EC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7304
gUnknown_80E7304: @ 80E7304
.4byte Error_80E7268, 0xC
.4byte NotSOSMail_80E7324, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
NotSOSMail_80E7324:
.string "{CENTER_ALIGN}This is not an {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\0"
.align 2, 0
.global gUnknown_80E7344
gUnknown_80E7344: @ 80E7344
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E735C
gUnknown_80E735C: @ 80E735C
.4byte Error_80E7268, 0xC
.4byte ReceiveSOSMail_80E737C, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
ReceiveSOSMail_80E737C:
.string "{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1} has been received already.\0"
.align 2, 0
.global gUnknown_80E73AC
gUnknown_80E73AC: @ 80E73AC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E73C4
gUnknown_80E73C4: @ 80E73C4
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E73E4, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E73E4:
.string "#+This is not an #CGA-OK Mail#R.\0"
.align 2, 0
.global gUnknown_80E7408
gUnknown_80E7408: @ 80E7408
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7420
gUnknown_80E7420: @ 80E7420
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E7440, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E7440:
.string "#+This #CGA-OK Mail#R cannot be used.\0"
.align 2, 0
.global gUnknown_80E7468
gUnknown_80E7468: @ 80E7468
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7480
gUnknown_80E7480: @ 80E7480
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E74A0, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E74A0:
.string "#+This is not a #CGThank-You Mail#R.\0"
.align 2, 0
.global gUnknown_80E74C8
gUnknown_80E74C8: @ 80E74C8
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E74E0
gUnknown_80E74E0: @ 80E74E0
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E7500, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E7500:
.string "#+This #CGThank-You Mail#R cannot be used.\0"
.align 2, 0
.global gUnknown_80E752C
gUnknown_80E752C: @ 80E752C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E7544
gUnknown_80E7544: @ 80E7544
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E7564, 0xC
.4byte CheckAgain_80E7234, 0xC
.4byte 0, 0xA
sUnknown_80E7564:
.string "#+This is not a #CGWonder Mail#R.\0"
.align 2, 0
.global gUnknown_80E7588
gUnknown_80E7588: @ 80E7588
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x09, 0x00
.byte 0x17, 0x00, 0x05, 0x00
.byte 0x05, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80E75A0
gUnknown_80E75A0: @ 80E75A0
.4byte Error_80E7268, 0xC
.4byte sUnknown_80E75CC, 0xC
.4byte sUnknown_80E75C0, 0xC
.4byte 0, 0xA
sUnknown_80E75C0:
.string "#+new mail.\0"
.align 2, 0
sUnknown_80E75CC:
.string "#+There is no space for receiving\0"
.align 2, 0
.string "pksdir0\0"

233
data/data_80E6F20.s Normal file
View File

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

25
include/constants/input.h Normal file
View File

@ -0,0 +1,25 @@
#ifndef GUARD_CONSTANTS_INPUT_H
#define GUARD_CONSTANTS_INPUT_H
#define INPUT_NONE 0
#define INPUT_A_BUTTON 1
#define INPUT_B_BUTTON 2
#define INPUT_SELECT_BUTTON 3
#define INPUT_START_BUTTON 4
#define INPUT_L_BUTTON 5
#define INPUT_R_BUTTON 6
#define INPUT_DPAD_UP 7
#define INPUT_DPAD_DOWN 8
#define INPUT_DPAD_LEFT 9
#define INPUT_DPAD_RIGHT 10
// When R button is pressed in combination with other keys
#define INPUT_R_A_BUTTONS 11
#define INPUT_R_DPAD_UP_BUTTONS 12
#define INPUT_R_DPAD_DOWN_BUTTONS 13
#define INPUT_R_DPAD_LEFT_BUTTONS 14
#define INPUT_R_DPAD_RIGHT_BUTTONS 15
#endif // GUARD_CONSTANTS_INPUT_H

View File

@ -3,6 +3,7 @@
#include "text.h"
#include "menu.h"
#include "menu_input.h"
enum DebugMenuOptions
{
@ -19,7 +20,7 @@ enum DebugMenuOptions
struct DebugMenu
{
// size: 0x1A4
u8 fill0[0x140];
struct MenuStruct unk0[4];
/* 0x140 */ struct UnkTextStruct2 unk140[4];
u32 fill1A0;
};
@ -33,8 +34,7 @@ struct unkStruct_203B3F8
u16 unk6;
struct PokemonStruct *pokemon;
u32 unkC;
const char *unk10;
u8 fill14[0x60 - 0x14];
struct MenuStruct unk10;
u32 unk60;
u32 unk64;
u32 unk68;

View File

@ -96,7 +96,7 @@ struct Dungeon
u8 fill662[0x666 - 0x662];
/* 0x666 */ u16 windTurns; // Turns remaining before getting swept out of the dungeon.
u8 fill668[0x66A - 0x668];
u16 unk66A;
u16 bossSongIndex;
u8 unk66C;
u8 unk66D;
/* 0x66E */ u8 unk66E;

View File

@ -1,18 +1,19 @@
#ifndef GUARD_FRIEND_AREA_ACTION_MENU_H
#define GUARD_FRIEND_AREA_ACTION_MENU_H
#include "menu.h"
struct unkStruct_203B2BC
{
// size: 0x1E0
u32 state;
u32 unk4;
u32 fallbackState;
s16 targetPoke;
u16 unkA;
u32 id;
struct BulkItem itemToGive;
struct BulkItem item2;
struct PokemonStruct *unk18;
u8 unk1C;
bool8 isTeamLeader;
u32 moveIndex; // some sort of move index
u16 moveID;
struct Move moves[8];
@ -21,18 +22,23 @@ struct unkStruct_203B2BC
u32 unk70;
s32 unk74;
u32 unk78;
u32 unk7C;
u8 fill80[0xFD - 0x80];
struct MenuStruct unk7C;
u8 fill80[0xFD - 0xCC];
u32 unkFD;
u8 fill101[0x11C - 0x104];
struct MenuItem menuItems[4];
u8 fill120[0x16C - 0x13C];
// Structure of some sort
u32 unk16C;
u16 unk16C;
u8 fill170[0x180 - 0x170];
struct UnkTextStruct2 unk180[4];
};
enum FriendAreaActionMenuStates {
FRIEND_AREA_ACTION_MENU_INIT,
FRIEND_AREA_ACTION_MENU_EXIT = 0x11,
};
#endif

View File

@ -5,6 +5,7 @@
#include "item.h"
#include "pokemon.h"
#include "wonder_mail.h"
#include "menu.h"
struct WonderMailStruct_203B33C
{
@ -21,13 +22,7 @@ struct WonderMailStruct_203B33C
struct unkStruct_203B480 unk1B8;
struct unkStruct_203B480 unk1E8;
u8 unk218;
u8 padding7[3];
u32 unk21C;
u8 padding[0x7C];
u32 unk29C;
u8 padding6[0x6C];
u32 unk30C;
u8 padding8[0x4C];
struct MenuStruct unk21C[4];
struct UnkTextStruct2 unk35C[4];
struct UnkTextStruct2 unk3BC[4];
struct Item unk41C;

View File

@ -8,8 +8,8 @@ struct unkStruct_203B26C
s32 state;
u32 unk8;
s16 speciesNum; // species of chosen Pokemon
u8 unkE;
struct Move * unk10;
bool8 isNextMoveLinked;
struct Move * moves;
u32 unk14;
u32 unk18;
u16 unk1C;
@ -18,8 +18,8 @@ struct unkStruct_203B26C
u32 unk24;
struct MenuItem unk28[8];
u16 unk68[8];
u32 unk78;
u8 fill7C[0x118 - 0x7C];
struct MenuStruct unk78;
u8 fillC8[0x118 - 0xC8];
/* 0x118 */ struct OpenedFile *faceFile;
/* 0x11C */ u8 *faceData;
/* 0x120 */ u16 unk120;

View File

@ -55,13 +55,13 @@ struct UnkInputStruct
/* 0x2 */ u8 unk2;
/* 0x3 */ u8 unk3;
/* 0x4 */ u8 unk4;
/* 0x5 */ u32 unk5;
/* 0x9 */ u32 unk9;
/* 0xD */ u32 unkD;
/* 0x12 */ u32 unk11;
/* 0x16 */ u32 unk15;
/* 0x1A */ u32 unk19;
/* 0x1E */ u32 unk1D;
/* 0x8 */ u32 unk8;
/* 0xC */ u32 unkC;
/* 0x10 */ u32 unk10;
/* 0x14 */ u32 unk14;
/* 0x18 */ u32 unk18;
/* 0x1C */ u32 unk1C;
/* 0x20 */ u32 unk20;
/* 0x24 */ u32 unk24;
/* 0x28 */ u8 unk28;
/* 0x29 */ u8 a_button;

View File

@ -20,8 +20,7 @@ struct unkStruct_203B208
u32 unk20;
struct MenuItem unk24[5];
u16 unk4C[5];
u32 unk58;
u8 unk5C[0xA8 - 0x5C];
struct MenuStruct unk58;
u32 unkA8;
u8 unkAC[0xBC - 0xAC];
u32 unkBC;
@ -51,8 +50,7 @@ struct unkStruct_203B20C
u32 unk1C;
struct MenuItem unk20[8];
u16 unk60[8];
u32 unk70;
u8 fill74[0xC0 - 0x74];
struct MenuStruct unk70;
u32 unkC0;
u32 unkC4;
u32 unkC8;

View File

@ -25,8 +25,7 @@ struct unkStruct_203B210
u32 unk30;
struct MenuItem unk34[8];
u16 unk74[8];
u32 unk84;
u8 fill88[0xD4 - 0x88];
struct MenuStruct unk84;
struct OpenedFile *faceFile;
u8 *unkD8;
u16 unkDC;

View File

@ -19,8 +19,7 @@ struct unkStruct_203B304
u8 fill51[0x64 - 0x51];
u32 unk64;
u32 unk68;
u32 unk6C;
u8 fill70[0xBC - 0x70];
struct MenuStruct unk6C;
struct MenuItem unkBC[8];
u16 unkFC[8];
struct UnkTextStruct2 unk10C[4];

View File

@ -74,5 +74,6 @@ void CleanUpMenu(void);
bool8 sub_80363E0(void);
struct unkStruct_8035D94 *sub_8035D94(void);
void sub_8035DA0(void);
struct MainMenu *GetMainMenu(void);
#endif // GUARD_MAIN_MENU_H

View File

@ -53,7 +53,7 @@ void InitHeapInternal(void);
void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32);
void InitSubHeap(struct HeapDescriptor *, struct HeapMemoryBlock *, u32);
s32 _LocateSet(struct HeapDescriptor *heap, s32 size, s32 param_3);
void *MemoryAlloc(s32 size, s32 b);
void *MemoryAlloc(s32 size, s32 group);
void MemoryFree(void *a);
#endif // GUARD_MEMORY_H

View File

@ -4,7 +4,28 @@
struct MenuItem
{
const u8 *text;
u32 menuAction; // action??
s32 menuAction; // action??
};
struct MenuStruct
{
// size: 0x50
const u8 *unk0; // header text?
/* 0x4 */ const struct MenuItem *menuItems;
const u32 *menuTextColorArray;
u16 *unkC;
/* 0x10 */ s32 index;
/* 0x14 */ u32 unk14;
u8 fill18[0x2C - 0x18];
/* 0x2C */ s16 menuIndex;
s16 unk2E;
u8 fill30[0x38 - 0x30];
u16 unk38;
u8 fill3A[0x48 - 0x3A];
/* 0x48 */ s32 menuAction;
bool8 unk4C;
bool8 unk4D;
bool8 unk4E;
};
#endif // GUARD_MENU_H

14
include/menu_input.h Normal file
View File

@ -0,0 +1,14 @@
#include "menu.h"
void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6);
void sub_8012C60(u32 x, u32 y, u32 param_3, u32 param_4, u32 param_5);
void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2);
void sub_8012D08(struct UnkTextStruct2 *param_1, s32 param_2);
void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2);
void sub_8012D60(struct MenuStruct *param_1, const struct MenuItem *menuItems, u32 *colorArray, u16 *param_4, s32 param_5, s32 index);
void sub_8012E04(struct MenuStruct *param_1, const struct MenuItem *menuItems, u32 *colorArray, u16 *param_4, s32 param_5, s32 index);
void sub_8012EA4(struct MenuStruct *param_1, bool8 r1);
void sub_8012EBC(struct MenuStruct *param_1);
bool8 sub_8012FD8(struct MenuStruct *param_1);
bool8 sub_80130A8(struct MenuStruct *param_1);
bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction);

View File

@ -1,6 +1,8 @@
#ifndef GUARD_RESCUE_PASSWORD_MENU_H
#define GUARD_RESCUE_PASSWORD_MENU_H
#include "menu.h"
struct unkSprite
{
u16 unk208;
@ -14,13 +16,10 @@ struct RescuePasswordMenu
// size: 0x214
u32 currMenu;
u32 state;
u32 unk8;
u8 fillC[0x148 - 0xC];
struct MenuStruct unk8[4];
struct UnkTextStruct2 unk148[4];
struct UnkTextStruct2 unk1A8[4];
struct unkSprite unk208;
u32 unk210;
};

View File

@ -6,5 +6,6 @@
bool8 HasNegativeStatus(struct Entity *pokemon);
bool8 IsSleeping(struct Entity *pokemon);
bool8 HasLowHealth(struct Entity *pokemon);
s32 sub_8070828(struct Entity *pokemon, bool8 displayMessage);
#endif

View File

@ -6,7 +6,9 @@ struct UnkTextStruct1 {
u16 unk04;
u8 fill06[2];
u16 unk08;
u8 fill04[0x3c];
u16 fillA;
u32 unkC;
u8 fill04[0x36];
u8 unk46;
};
@ -19,9 +21,10 @@ struct UnkTextStruct2_sub
};
struct UnkTextStruct2 {
u8 fill00[0x08];
u8 fill00[0x04];
s32 unk4;
struct UnkTextStruct2_sub unk08;
s16 unk0c;
s16 unkC;
s16 unkE;
s16 unk10;
s16 unk12;

View File

@ -3,6 +3,7 @@
#include "text.h"
#include "item.h"
#include "menu.h"
struct TradeSubStruct
{
@ -32,10 +33,7 @@ struct TradeItemsMenu
u32 unk30;
u32 unk34;
u8 fill38[0x44 - 0x38];
u32 unk44;
u8 fill8[0x134 - 0x48];
u32 unk134;
u8 fill138[0x184 - 0x138];
struct MenuStruct unk44[4];
struct UnkTextStruct2 unk184[4];
struct UnkTextStruct2 unk1E4[4];

View File

@ -4,6 +4,7 @@
#include "file_system.h"
#include "text.h"
#include "item.h"
#include "menu.h"
#include "pokemon.h"
#include "code_8094F88.h"
@ -61,12 +62,7 @@ struct WonderMailStruct_203B2C0
struct WonderMailStruct_203B2C0_sub unk130;
u8 fill16A[0x218 - 0x1B8];
u8 mailIndex;
u32 unk21C;
u8 padding[0x7C];
u32 unk29C;
u8 padding6[0x6C];
u32 unk30C;
u8 padding8[0x4C];
struct MenuStruct unk21C[4];
struct UnkTextStruct2 unk35C[4];
struct UnkTextStruct2 unk3BC[4];
/* 0x41C */ u32 unkfill; // ItemSlot?
@ -99,10 +95,7 @@ struct WonderMailStruct_203B2C4
struct unkStruct_203B480 unk1B8;
struct unkStruct_203B480 unk1E8;
s8 mailIndex;
u32 unk21C;
u8 filler220[0x30C - 0x220];
u32 unk30C;
u8 filler310[0x35C - 0x310];
struct MenuStruct unk21C[4];
struct UnkTextStruct2 unk35C[4];
struct UnkTextStruct2 unk3BC[4];
struct Item unk41C;

View File

@ -1,3 +1,4 @@
#include "menu.h"
struct unkStruct_203B2F4
{
u8 fill0[0x1A];
@ -50,9 +51,8 @@ struct unkStruct_203B2F8
u32 unk6C;
u32 unk70;
u32 unk74;
u8 unk78[0xC8 - 0x78];
u8 unkC8[4];
u8 fillCC[0x118 - 0xCC];
struct MenuStruct unk78;
struct MenuStruct unkC8;
struct MenuItem unk118[8];
struct MenuItem unk158[8];
u16 unk198[8];

View File

@ -89,7 +89,8 @@ SECTIONS {
src/save.o(.text);
src/code_8012A18.o(.text);
src/more_input.o(.text);
asm/code_8012A18.o(.text);
src/menu_input.o(.text);
asm/code_80130A8.o(.text);
src/code_8012A18_1.o(.text);
src/felicity_bank.o(.text);
asm/felicity_bank.o(.text);
@ -111,16 +112,16 @@ SECTIONS {
asm/code_801C620.o(.text);
src/code_801D760.o(.text);
asm/code_801D760.o(.text);
src/code_801DCC4.o(.text);
asm/code_801DCC4.o(.text);
src/options_menu.o(.text);
src/hints_menu.o(.text);
src/gulpin_shop.o(.text);
asm/gulpin_shop.o(.text);
src/gulpin_shop_1.o(.text);
src/code_801EE10.o(.text);
asm/code_801EE10.o(.text);
src/code_8023144.o(.text);
asm/code_801EE10_1.o(.text);
src/code_801EE10.o(.text);
src/code_801EE10_1.o(.text);
src/luminous_cave.o(.text);
src/friend_list_menu_1.o(.text);
asm/friend_list_menu.o(.text);
@ -166,10 +167,7 @@ SECTIONS {
asm/other_menus.o(.text);
src/adventure_log_menu.o(.text);
src/unk_menu_203B360.o(.text);
asm/unk_menu_203B360.o(.text);
src/unk_menu_203B360_1.o(.text);
src/unk_menu_203B364.o(.text);
asm/unk_menu_203B364.o(.text);
src/save_menu.o(.text);
src/rescue_password_menu.o(.text);
asm/rescue_password_menu.o(.text);
src/rescue_password_menu_1.o(.text);
@ -424,6 +422,7 @@ SECTIONS {
data/data_80B9BB8.o(.rodata);
src/debug.o(.rodata);
src/save.o(.rodata);
src/menu_input.o(.rodata);
data/data_80D47B8.o(.rodata);
src/friend_area_action_menu.o(.rodata);
src/friend_area_action_menu_1.o(.rodata);
@ -448,6 +447,8 @@ SECTIONS {
src/main_menu.o(.rodata);
src/trade_items_menu.o(.rodata);
data/data_80E59A8.o(.rodata);
src/save_menu.o(.rodata);
data/data_80E6F20.o(.rodata);
src/load_screen.o(.rodata);
src/wonder_mail_main_menu.o(.rodata);
src/debug_menu.o(.rodata);

View File

@ -1,8 +1,9 @@
#include "global.h"
#include "constants/input.h"
#include "input.h"
#include "gba/io_reg.h"
#include "memory.h"
#include "text.h"
#include "menu_input.h"
struct AdventureLog
{
@ -23,7 +24,7 @@ extern struct AdventureLog *gAdventureLog;
const struct UnkTextStruct2 gUnknown_80E1FF0 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -31,7 +32,7 @@ const struct UnkTextStruct2 gUnknown_80E1FF0 = {
};
const struct UnkTextStruct2 gUnknown_80E2008 = {
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x1A, 0x04,
0x06, 0x00,
@ -62,7 +63,6 @@ extern void xxx_call_draw_string(s32, u32, const u8 *, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void xxx_format_and_draw(u32, u32, const char *, u32, u32);
const u8 *GetAdventureLogLine(u8 index);
extern s32 sub_8013800(void *, s32);
@ -94,10 +94,10 @@ u32 HandleAdventureLogInput(u8 param_1)
else {
switch(GetKeyPress(gAdventureLog))
{
case B_BUTTON:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case A_BUTTON:
case INPUT_A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
default:

View File

@ -67,10 +67,10 @@ s32 sub_8015FEC(u8 *buffer, s32 size)
{
struct unkChar *iVar2;
s32 currLength;
s32 iVar4;
s32 length;
u8 *bufferPtr;
iVar4 = 0;
length = 0;
currLength = 0;
if(currLength < size && *buffer != '\0')
@ -78,12 +78,12 @@ s32 sub_8015FEC(u8 *buffer, s32 size)
bufferPtr = buffer; // Had to have another variable to match..
do {
iVar2 = GetCharacter(ReturnIntFromChar2(*bufferPtr));
iVar4 += iVar2->unk6;
length += iVar2->unk6;
bufferPtr++;
currLength++;
} while (currLength < size && *bufferPtr != '\0');
}
return iVar4;
return length;
}
s32 sub_8016028(void)
@ -205,7 +205,7 @@ void CreateConfirmNameMenu(void)
void sub_80161F8(void)
{
s32 iVar2;
s32 length;
s32 maxLength;
if (sub_80154F0() == 3) {
@ -214,9 +214,9 @@ void sub_80161F8(void)
sub_80160F4(3);
}
else{
iVar2 = sub_8015FEC(gUnknown_203B200->pokeName, POKEMON_NAME_LENGTH);
length = sub_8015FEC(gUnknown_203B200->pokeName, POKEMON_NAME_LENGTH);
maxLength = sub_8016028(); // returns 60
if (iVar2 > maxLength) {
if (length > maxLength) {
sub_80160F4(2);
}
else {

View File

@ -7,6 +7,7 @@
#include "menu.h"
#include "pokemon.h"
#include "team_inventory.h"
#include "menu_input.h"
struct subStruct_203B240
{
@ -38,17 +39,14 @@ struct unkStruct_203B234
// size: 0x154
u32 unk0;
u32 state;
u32 unk8;
u32 fallbackState;
u8 unkC;
u8 fillD[0x10 - 0xD];
struct Item unk10;
struct unkStruct_8090F58 unk14;
struct Item unk20;
u32 unk24;
u32 unk28;
u8 fill2C[0x78 - 0x2C];
u32 unk78;
u8 fill7C[0xC8 - 0x7C];
struct MenuStruct unk28;
struct MenuStruct unk78;
u32 unkC8;
struct MenuItem unkCC[5];
struct UnkTextStruct2 unkF4[4];
@ -78,7 +76,6 @@ extern struct UnkTextStruct2 gUnknown_80DBA88;
extern struct UnkTextStruct2 gUnknown_80DBA70;
extern void sub_801BB5C(void);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern void sub_801B748(u32);
extern void sub_8008C54(u32);
@ -90,8 +87,6 @@ extern void sub_8013F84(void);
extern u32 sub_8012A64(u32 *, u32);
extern s32 sub_80913E0(struct Item *, u32, struct subStruct_203B240 **);
extern void sub_80141B4(u8 *, u32, u32 *, u32);
extern void sub_8012EA4(u32 *, u32);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
extern void sub_801BB20(void);
extern void sub_801A8D0(u32);
extern void sub_801A9E0(void);
@ -375,7 +370,7 @@ void sub_801B874(void)
{
case 0:
if (gUnknown_203B234->unk10.id == ITEM_WEAVILE_FIG) {
gUnknown_203B234->unk8 = 0x10;
gUnknown_203B234->fallbackState = 0x10;
if(sub_8001784(0,0x47,1) != 0)
{
AddToTeamMoney(1000);
@ -389,7 +384,7 @@ void sub_801B874(void)
}
else if (gUnknown_203B234->unk10.id == ITEM_MIME_JR_FIG)
{
gUnknown_203B234->unk8 = 0x10;
gUnknown_203B234->fallbackState = 0x10;
if(sub_8001784(0, 0x47, 0) != 0)
{
AddToTeamMoney(1000);
@ -410,13 +405,13 @@ void sub_801B874(void)
if((gTeamInventory_203B460->teamStorage[gUnknown_203B234->unk10.id] + gUnknown_203B234->unkC) > 0x3e7)
{
store:
gUnknown_203B234->unk8 = 6;
gUnknown_203B234->fallbackState = 6;
}
else
{
gTeamInventory_203B460->teamStorage[gUnknown_203B234->unk10.id] += gUnknown_203B234->unkC;
PlaySound(0xCB);
gUnknown_203B234->unk8 = 5;
gUnknown_203B234->fallbackState = 5;
}
}
else
@ -429,7 +424,7 @@ void sub_801B874(void)
AddItemToInventory(&gUnknown_203B234->unk10);
FillInventoryGaps();
PlaySound(0xCB);
gUnknown_203B234->unk8 = 0x10;
gUnknown_203B234->fallbackState = 0x10;
}
if(gUnknown_203B234->unk0 == 1)
sub_801B748(2);
@ -456,7 +451,7 @@ void sub_801B874(void)
sub_80141B4(gUnknown_80DBB9C,0,0,0x101);
break;
case 5:
gUnknown_203B234->unk8 = 0x10;
gUnknown_203B234->fallbackState = 0x10;
sub_80141B4(gUnknown_80DBC28,0,0,0x101);
break;
case 6:
@ -488,15 +483,15 @@ void sub_801B874(void)
sub_8012D60(&gUnknown_203B234->unk78,gUnknown_203B234->unkCC,0,0,3,1);
break;
case 0xd:
gUnknown_203B234->unk8 = 0x10;
gUnknown_203B234->fallbackState = 0x10;
sub_80141B4(gUnknown_80DBCC4,0,0,0x101);
break;
case 0xe:
gUnknown_203B234->unk8 = 0x10;
gUnknown_203B234->fallbackState = 0x10;
sub_80141B4(gUnknown_80DBCE8,0,0,0x101);
break;
case 0xf:
gUnknown_203B234->unk8 = 0x10;
gUnknown_203B234->fallbackState = 0x10;
sub_80141B4(gUnknown_80DBD24,0,0,0x101);
break;
case 0x10:

View File

@ -3,15 +3,81 @@
#include "input.h"
#include "memory.h"
#include "pokemon.h"
#include "pokemon_3.h"
#include "team_inventory.h"
#include "text.h"
#include "subStruct_203B240.h"
#include "menu_input.h"
struct unkStruct_203B234
{
// size: 0x154
u32 unk0;
u32 state;
u32 fallbackState;
u8 unkC;
struct Item unk10;
struct unkStruct_8090F58 unk14;
struct Item unk20;
u32 unk24;
struct MenuStruct unk28;
struct MenuStruct unk78;
u32 unkC8;
struct MenuItem unkCC[5];
struct UnkTextStruct2 unkF4[4];
};
extern struct unkStruct_203B234 *gUnknown_203B234;
struct unkStruct_203B238
{
// size: 0x124
u32 state;
s16 species;
struct PokemonStruct *pokeStruct;
u8 iqSkills[NUM_IQ_SKILLS];
u32 unk24;
u8 iqSkillIndex;
u32 numIQSkills;
s32 unk30;
struct MenuItem unk34[8];
struct MenuStruct unk74;
struct UnkTextStruct2 unkC4[4];
};
struct unkStruct_203B23C
{
// size: 0xC4
/* 0x0 */ s16 species;
/* 0x4 */ struct PokemonStruct *pokeStruct;
/* 0x8 */ u8 iqSkills[NUM_IQ_SKILLS];
/* 0x20 */ s32 numIQSkills;
/* 0x24 */ u32 unk24;
u8 fill28[0x3C - 0x28];
s16 unk3C;
s16 unk3E;
s16 unk40;
s16 unk42;
s16 unk44;
s16 unk46;
u8 fill48[0x52 - 0x48];
u8 unk52;
u8 fill52[0x58 - 0x53];
u32 unk58;
/* 0x5C */ struct UnkTextStruct2 *unk5C;
/* 0x60 */ struct UnkTextStruct2 unk60[4];
u8 unkC0;
u8 unkC1;
u8 unkC2;
u8 unkC3;
};
struct unkStruct_203B240
{
// size: 0x94
s32 state;
u8 chosenIQSkill;
u8 fill5[3];
s32 unk8;
s32 unkC;
struct subStruct_203B240 *unk10[2];
@ -43,51 +109,680 @@ struct unkStruct_203B244
};
extern const struct UnkTextStruct2 gUnknown_80DBE54;
extern struct UnkTextStruct2 gUnknown_80DBDD8;
extern struct UnkTextStruct2 gUnknown_80DBDF0;
extern struct UnkTextStruct2 gUnknown_80DBDB0;
extern struct UnkTextStruct2 gUnknown_80DBD98;
extern struct unkStruct_203B244 *gUnknown_203B244;
extern struct unkStruct_203B238 *gUnknown_203B238;
extern struct unkStruct_203B23C *gUnknown_203B23C;
extern struct unkStruct_203B240 *gUnknown_203B240;
extern struct unkStruct_203B244 *gUnknown_203B244;
extern u32 gUnknown_203B248;
extern u16 gUnknown_203B24C;
extern u16 gUnknown_203B24E;
extern char gUnknown_80DBE2C[]; // {ARG_MOVE_ITEM_0}
extern char gUnknown_80DBE30[]; // {ARG_POKEMON_0}
extern u8 gUnknown_202DE58[0x58];
extern u8 gAvailablePokemonNames[0x58];
extern u8 gUnknown_80DBE18[];
extern u8 gUnknown_80DBE14[];
extern u8 gUnknown_202DEA8[];
extern u8 gUnknown_202DE58[];
extern u8 gUnknown_80DBE08[];
extern u8 gUnknown_80DBE1C[];
extern char gUnknown_80DBE2C[]; // {ARG_MOVE_ITEM_0}
extern char gUnknown_80DBE30[]; // {ARG_POKEMON_0}
extern u8 gUnknown_80DBDC8[];
extern u8 *gUnknown_80D4970[];
extern bool8 sub_801CF14(u32);
extern void sub_8012D08(struct UnkTextStruct2 *, u32);
extern void sub_8013818(u32 *, u32, u32, u32);
extern u32 sub_801CE58(void);
extern void sub_8013984(void *);
extern void sub_801CC38(void);
extern void sub_801CCD8(void);
extern void sub_801CF94(void);
extern void ResetSprites(u32);
extern void sub_801317C(u32 *);
extern void sub_80140B4(struct UnkTextStruct2 *);
extern void xxx_format_and_draw(u32, u32, char *, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void xxx_call_draw_string(u32, u32, char *, u32, u32);
extern void sub_80073E0(u32);
extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
extern u32 sub_8012A64(u32 *, u32);
extern void sub_8013F84();
extern void PlayMenuSoundEffect(u32);
extern char * GetIQSkillName(u8 r0);
extern char * GetIQSkillDescription(u8 r0);
extern s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ);
extern void sub_8013C68(u32 *);
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
extern char * GetIQSkillName(u8 r0);
extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32);
extern s32 sub_8013800(u32 *, s32);
extern u32 sub_80095E4(s16, u32);
extern void sub_801C440(void);
extern void sub_801C4C8(void);
extern void AddMenuCursorSprite(u32 *);
extern u8 sub_80138B8(u32 *, u32);
extern void sub_8013660(u32 *);
extern s32 GetKeyPress(u32 *);
extern bool8 HasNoAvailIQSkills(s16 species);
extern u32 sub_801C674(void);
extern void sub_801C6B4(void);
void sub_801BFB4(s32);
void sub_801C6D0(s32);
void sub_801C7D4();
void sub_801C6E4();
void sub_801C848();
u32 sub_801C308(u8);
extern void PlaySound(u32);
void ToggleIQSkill(u8 *param_1, u32 skillIndex);
s32 sub_801C390(void);
void sub_801C3F8(void);
bool8 sub_801C244(s16 species, u32 index, u32 param_3);
void sub_801C0C8(void);
u32 sub_801C620(u8 iqSkill);
void sub_801C3B0(u8);
void sub_801BFCC(void);
void sub_801C03C(void);
void sub_801C118();
void sub_801C1A0();
void sub_801C228();
void sub_801B748(u32);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern u32 sub_801A6E8(u32);
extern void sub_801A928(void);
extern void sub_8099690(u32);
extern u32 sub_801A8AC();
extern u8 *gUnknown_80D4920[];
extern u8 *gUnknown_80D4928[];
void sub_801BC24(void)
{
struct unkStruct_203B234 *puVar1;
u8 *nullText;
u32 menuAction;
puVar1 = gUnknown_203B234;
nullText = NULL;
puVar1->unkCC[0].text = *gUnknown_80D4920;
gUnknown_203B234->unkCC[0].menuAction = 2;
menuAction = 1;
gUnknown_203B234->unkCC[1].text = *gUnknown_80D4928;
gUnknown_203B234->unkCC[1].menuAction = 3;
gUnknown_203B234->unkCC[2].text = nullText;
gUnknown_203B234->unkCC[2].menuAction = menuAction;
}
void sub_801BC64(void)
{
s32 temp;
if(sub_80144A4(&temp)== 0)
{
switch(temp)
{
case 4:
sub_801B748(0x8);
break;
case 5:
sub_801B748(0x7);
break;
}
}
}
void sub_801BC94(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
{
case 2:
sub_801B748(0xD);
break;
case 1:
case 3:
sub_801B748(0x6);
break;
}
}
}
void sub_801BCCC(void)
{
switch(sub_801A6E8(1))
{
case 0:
case 1:
break;
case 3:
gUnknown_203B234->unk24 = sub_801A8AC();
gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24];
sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14);
sub_801B748(0xA);
break;
case 4:
gUnknown_203B234->unk24 = sub_801A8AC();
gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24];
sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14);
sub_8099690(0);
sub_801B748(0xB);
break;
case 2:
sub_801A928();
sub_801B748(6);
break;
}
}
void sub_801BD80(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
if (sub_8012FD8(&gUnknown_203B234->unk28) == '\0') {
sub_8013114(&gUnknown_203B234->unk28,&menuAction);
if (menuAction != 1) gUnknown_203B234->unkC8 = menuAction;
}
switch(menuAction)
{
case 6:
MoveToStorage(&gUnknown_203B234->unk20);
ShiftItemsDownFrom(gUnknown_203B234->unk24);
AddItemToInventory(&gUnknown_203B234->unk10);
FillInventoryGaps();
PlaySound(0xcb);
sub_8099690(0);
sub_801A928();
sub_801B748(0xE);
break;
case 7:
sub_801B748(0xC);
break;
case 8:
sub_8099690(0);
sub_801B748(0xB);
break;
case 1:
sub_801B748(0x9);
break;
}
}
void sub_801BE30(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_8012FD8(&gUnknown_203B234->unk28);
if (sub_8012FD8(&gUnknown_203B234->unk78) == '\0') {
sub_8013114(&gUnknown_203B234->unk78,&menuAction);
}
switch(menuAction)
{
case 1:
case 3:
sub_801B748(9);
break;
case 2:
ShiftItemsDownFrom(gUnknown_203B234->unk24);
AddItemToInventory(&gUnknown_203B234->unk10);
FillInventoryGaps();
PlaySound(0xcb);
sub_801A928();
sub_801B748(0xf);
break;
}
}
void sub_801BEAC(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
sub_801B748(9);
case 0:
case 1:
break;
}
}
void sub_801BEC8(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_801B748(gUnknown_203B234->fallbackState);
}
}
bool8 sub_801BEEC(s16 species)
{
s32 species_s32 = species;
if (HasNoAvailIQSkills(species_s32)) {
return FALSE;
}
else {
gUnknown_203B238 = MemoryAlloc(sizeof(struct unkStruct_203B238),8);
gUnknown_203B238->unk30 = 0;
gUnknown_203B238->species = species_s32;
gUnknown_203B238->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
gUnknown_203B238->numIQSkills = GetNumAvailableIQSkills(gUnknown_203B238->iqSkills,gUnknown_203B238->pokeStruct->IQ);
sub_801BFB4(0);
return TRUE;
}
}
u32 sub_801BF48(void)
{
switch(gUnknown_203B238->state)
{
case 4:
return 3;
case 0:
case 1:
sub_801C118();
break;
case 2:
sub_801C1A0();
break;
case 3:
sub_801C228();
break;
}
return 0;
}
void sub_801BF98(void)
{
if(gUnknown_203B238 != NULL)
{
MemoryFree(gUnknown_203B238);
gUnknown_203B238 = NULL;
}
}
void sub_801BFB4(s32 newState)
{
gUnknown_203B238->state = newState;
sub_801BFCC();
sub_801C03C();
}
void sub_801BFCC(void)
{
s32 index;
sub_8006518(gUnknown_203B238->unkC4);
if(gUnknown_203B238->state == 2)
{
gUnknown_203B238->unkC4[2] = gUnknown_80DBDB0;
}
else
{
for(index = 0; index < 4; index++)
{
gUnknown_203B238->unkC4[index] = gUnknown_80DBD98;
}
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B238->unkC4, 1, 1);
}
void sub_801C03C(void)
{
switch(gUnknown_203B238->state) {
case 0:
sub_801C244(gUnknown_203B238->species,0,8);
break;
case 1:
sub_801C3B0(1);
break;
case 2:
sub_801C4C8();
sub_801C0C8();
sub_8012D60(&gUnknown_203B238->unk74,gUnknown_203B238->unk34,0,0,gUnknown_203B238->unk30,2);
break;
case 3:
sub_801C620(gUnknown_203B238->iqSkillIndex);
break;
case 4:
break;
}
}
void sub_801C0C8(void)
{
struct unkStruct_203B238 *puVar1;
int index;
u8 *nullText;
u32 menuAction;
s32 max;
puVar1 = gUnknown_203B238;
nullText = NULL;
gUnknown_203B238->unk34[0].text = gUnknown_80DBDC8;
puVar1->unk34[0].menuAction = 2;
menuAction = 1;
puVar1->unk34[1].text = *gUnknown_80D4970;
puVar1->unk34[1].menuAction = 3;
max = 2;
puVar1->unk34[2].text = nullText;
puVar1->unk34[2].menuAction = menuAction;
for(index = 0; index < max; index++)
{
if(gUnknown_203B238->unk34[index].menuAction == gUnknown_203B238->unk30)
return;
}
gUnknown_203B238->unk30 = 2;
}
void sub_801C118(void)
{
switch(sub_801C308(1)) {
case 3:
gUnknown_203B238->unk24 = sub_801C390();
gUnknown_203B238->iqSkillIndex = gUnknown_203B238->iqSkills[gUnknown_203B238->unk24];
sub_801BFB4(2);
break;
case 4:
gUnknown_203B238->unk24 = sub_801C390();
gUnknown_203B238->iqSkillIndex = gUnknown_203B238->iqSkills[gUnknown_203B238->unk24];
sub_801BFB4(3);
break;
case 2:
sub_801C3F8();
sub_801BFB4(4);
break;
case 0:
case 1:
break;
}
}
void sub_801C1A0(void)
{
s32 menuAction;
menuAction = 0;
sub_801C308(0);
if (!(sub_8012FD8(&gUnknown_203B238->unk74)) && (sub_8013114(&gUnknown_203B238->unk74,&menuAction), menuAction != 1)) {
gUnknown_203B238->unk30 = menuAction;
}
switch(menuAction)
{
case 2:
PlaySound(0x133);
ToggleIQSkill((u8 *)&gUnknown_203B238->pokeStruct->IQSkills,gUnknown_203B238->iqSkillIndex);
sub_801BFB4(1);
break;
case 3:
sub_801BFB4(3);
break;
case 1:
sub_801BFB4(1);
break;
}
}
void sub_801C228(void)
{
switch(sub_801C674())
{
case 2:
case 3:
sub_801C6B4();
sub_801BFB4(1);
case 0:
case 1:
break;
}
}
bool8 sub_801C244(s16 species, u32 index, u32 param_3)
{
#ifndef NONMATCHING
register s32 species_s32 asm("r4");
#else
s32 species_s32;
#endif
species_s32 = species;
if (HasNoAvailIQSkills(species)) {
return FALSE;
}
else
{
if (gUnknown_203B23C == NULL) {
gUnknown_203B23C = MemoryAlloc(sizeof(struct unkStruct_203B23C),8);
}
gUnknown_203B23C->species = species_s32;
gUnknown_203B23C->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
gUnknown_203B23C->numIQSkills = GetNumAvailableIQSkills(gUnknown_203B23C->iqSkills,gUnknown_203B23C->pokeStruct->IQ);
gUnknown_203B23C->unk58 = index;
gUnknown_203B23C->unk5C = &gUnknown_203B23C->unk60[index];
sub_8006518(gUnknown_203B23C->unk60);
gUnknown_203B23C->unk60[gUnknown_203B23C->unk58] = gUnknown_80DBDF0;
gUnknown_203B23C->unk5C->unk14 = &gUnknown_203B23C->unkC0;
sub_8012D08(gUnknown_203B23C->unk5C,param_3);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B23C->unk60,1,1);
sub_8013818(&gUnknown_203B23C->unk24,gUnknown_203B23C->numIQSkills,param_3,index);
sub_801C440();
sub_801C4C8();
return TRUE;
}
}
u32 sub_801C308(u8 r0)
{
if(r0 == 0)
{
sub_8013660(&gUnknown_203B23C->unk24);
return 0;
}
switch(GetKeyPress(&gUnknown_203B23C->unk24))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
case 4:
PlayMenuSoundEffect(4);
return 4;
default:
if(sub_80138B8(&gUnknown_203B23C->unk24, 1) != 0)
{
sub_801C440();
sub_801C4C8();
return 1;
}
else
return 0;
}
}
s32 sub_801C390(void)
{
return (gUnknown_203B23C->unk42 * gUnknown_203B23C->unk40) + gUnknown_203B23C->unk3C;
}
void sub_801C3B0(u8 r0)
{
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B23C->unk60, 0, 0);
gUnknown_203B23C->unk46 = gUnknown_203B23C->numIQSkills;
sub_8013984(&gUnknown_203B23C->unk24);
sub_801C440();
sub_801C4C8();
if(r0)
AddMenuCursorSprite(&gUnknown_203B23C->unk24);
}
void sub_801C3F8(void)
{
if(gUnknown_203B23C != NULL)
{
gUnknown_203B23C->unk60[gUnknown_203B23C->unk58] = gUnknown_80DBDD8;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B23C->unk60, 1, 1);
MemoryFree(gUnknown_203B23C);
gUnknown_203B23C = NULL;
}
}
#ifdef NONMATCHING
// https://decomp.me/scratch/NdDP3 (98.06% matching) - Seth
void sub_801C440(void)
{
u16 sVar2;
gUnknown_203B23C->unkC0 = gUnknown_203B23C->unk44;
gUnknown_203B23C->unkC1 = gUnknown_203B23C->unk42;
gUnknown_203B23C->unkC2 = 0xA;
gUnknown_203B23C->unkC3 = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B23C->unk60, 1, 1);
sVar2 = sub_80095E4(gUnknown_203B23C->unk3E, 0xc) + 2;
gUnknown_203B23C->unk60[gUnknown_203B23C->unk58].unkE = sVar2;
gUnknown_203B23C->unk60[gUnknown_203B23C->unk58].unk10 = sVar2;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B23C->unk60, 1, 1);
}
#else
NAKED
void sub_801C440(void)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tldr r4, _0801C4C4\n"
"\tldr r0, [r4]\n"
"\tadds r1, r0, 0\n"
"\tadds r1, 0x44\n"
"\tldrh r1, [r1]\n"
"\tadds r0, 0xC0\n"
"\tmovs r2, 0\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r1, r0, 0\n"
"\tadds r1, 0x42\n"
"\tldrh r1, [r1]\n"
"\tadds r0, 0xC1\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xC2\n"
"\tmovs r1, 0xA\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xC3\n"
"\tstrb r2, [r0]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x60\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tldr r0, [r4]\n"
"\tmovs r1, 0x3E\n"
"\tldrsh r0, [r0, r1]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tldr r2, [r4]\n"
"\tldr r3, [r2, 0x58]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x6E\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r3, [r2, 0x58]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r2, r1\n"
"\tadds r2, 0x70\n"
"\tstrh r0, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x60\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0801C4C4: .4byte gUnknown_203B23C"
);
}
#endif
void sub_801C4C8(void)
{
u32 y;
s32 x;
s32 x2;
u32 skillIndex;
s32 counter;
sub_8008C54(gUnknown_203B23C->unk58);
sub_80073B8(gUnknown_203B23C->unk58);
x = gUnknown_203B23C->unk42 * 8;
x2 = x;
x2 += 10;
xxx_call_draw_string(x2,0,gUnknown_80DBE08,gUnknown_203B23C->unk58,0);
x += 4;
x2 = x + gUnknown_203B23C->unkC2 * 8;
sub_8012BC4(x2,0,gUnknown_203B23C->unk42 + 1,1,7,
gUnknown_203B23C->unk58);
counter = 0;
if (counter < gUnknown_203B23C->unk3E) {
do {
skillIndex = gUnknown_203B23C->iqSkills
[gUnknown_203B23C->unk42 * gUnknown_203B23C->unk40 + counter];
y = sub_8013800(&gUnknown_203B23C->unk24,counter);
strncpy(gUnknown_202DEA8,GetIQSkillName(skillIndex),0x50);
if (IsIQSkillSet((u8 *)&gUnknown_203B23C->pokeStruct->IQSkills,1 << skillIndex)) {
strcpy(gUnknown_202DEA8 - 0x50,gUnknown_80DBE14);
}
else {
strcpy(gUnknown_202DEA8 - 0x50,gUnknown_80DBE18);
}
xxx_format_and_draw(0xc,y,gUnknown_80DBE1C,gUnknown_203B23C->unk58,0);
counter++;
} while (counter < gUnknown_203B23C->unk3E);
}
sub_80073E0(gUnknown_203B23C->unk58);
}
bool8 HasNoAvailIQSkills(s16 species)
{
s32 species_s32;

View File

@ -1,14 +1,17 @@
#include "global.h"
#include "friend_area.h"
#include "constants/friend_area.h"
#include "constants/input.h"
#include "file_system.h"
#include "item.h"
#include "menu.h"
#include "team_inventory.h"
#include "memory.h"
#include "input.h"
#include "text.h"
#include "rescue_team_info.h"
#include "code_800D090.h"
#include "menu_input.h"
struct unkStruct_203B258
{
@ -63,8 +66,6 @@ extern u32 sub_80270A4();
extern u32 sub_802C898(void);
extern void sub_802C8F4(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern const char *sub_8098FB4();
extern void xxx_format_string(const char *, u8 *, u32 **, u32);
extern s32 sub_8008ED0(u8 *);
@ -98,7 +99,7 @@ struct unk_203B250
u8 unk9;
u8 fillA[0x14 - 0xA];
u32 unk14;
u32 unk18; // an input struct??
struct MenuStruct unk18;
};
struct unk_203B250 *gUnknown_203B250;
@ -394,10 +395,10 @@ u32 sub_801DA78(void)
{
switch(GetKeyPress(gUnknown_203B258))
{
case 2:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case 1:
case INPUT_A_BUTTON:
return 3;
default:
if(sub_80138B8(gUnknown_203B258, 1) != 0)

View File

@ -1,311 +1,89 @@
#include "global.h"
#include "code_800D090.h"
#include "pokemon.h"
#include "input.h"
#include "memory.h"
#include "text.h"
#include "memory.h"
#include "input.h"
struct unkStruct_203B2AC
{
u8 unk0[0x1E];
s16 unk1E;
s16 unk20;
u8 unk22[0x34 - 0x22];
u32 unk34[3];
u8 unk40[0x48 - 0x40];
s16 speciesNum;
u32 unk4C;
u8 unk50[0xB0 - 0x50];
u32 unkB0;
u8 fillB4[0xE0 - 0xB4];
u32 unkE0;
struct UnkTextStruct2 *unkE4;
struct UnkTextStruct2 unkE8[4];
u8 unk148[4];
};
extern struct unkStruct_203B2AC *gUnknown_203B2AC;
struct unkStruct_3001B60
struct unkStruct_203B270
{
// size 0xBC
u32 unk0;
u32 sortMethod;
u32 unk8;
u32 unkC;
u32 unk10;
u8 fill14[0x18 - 0x14];
s16 unk18;
s16 unk1A[2];
u8 fill1C[0x370 - 0x1E];
s16 unk370;
s16 unk372;
s16 unk374;
s16 unk376;
u8 unk4;
u8 unk5;
u8 unk6;
u8 unk7;
/* 0x8 */ struct PokemonStruct *pokeStruct;
/* 0xC */ u8 isTeamLeader;
/* 0x10 */ struct Move *moves;
u8 fill14[0x1C - 0x14];
u32 unk1C;
u8 fill20[0x50 - 0x20];
u32 unk50;
u32 unk54;
struct UnkTextStruct2 unk58[4];
u32 unkB8;
};
extern struct unkStruct_3001B60 *gUnknown_3001B60;
extern struct UnkTextStruct2 gUnknown_80DC9B0;
extern struct UnkTextStruct2 gUnknown_80DC9C8;
extern struct unkStruct_203B270 *gUnknown_203B270;
extern struct UnkTextStruct2 gUnknown_80DC25C;
extern struct UnkTextStruct2 gUnknown_80DC274;
extern void sub_8012D08(void *, u32);
extern void sub_8013818(void *, u32, u32, u32);
extern bool8 sub_80023E4(u32);
extern void sub_808FF20(u32 *, struct PokemonStruct *, bool8);
extern void CreatePokemonInfoTabScreen(u32, s16, u32 *, u32 *, u32);
extern s32 GetKeyPress(void *);
extern bool8 sub_8013938(void *);
extern void sub_802452C(void);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013984(void *);
void sub_80922B4(u8 *buffer, u8 *string, s32 size);
bool8 ComparePokemonNames(s16 a1, s16 a2);
u32 sub_8006544(u32 index);
s32 sub_801F3F8(void);
void sub_8013780(u32 *, u32);
void sub_801F280(u32);
void sub_8024588(void);
void sub_80245D0(void);
void sub_8024604(void);
extern u8 gUnknown_80DC9A4[];
void SortbyInternalNo(s32 param_1, s32 param_2);
void SortbyAlphabetNo(s32 param_1,s32 param_2);
void SortbyName(s32 param_1,s32 param_2);
bool8 sub_8024184(struct PokemonStruct *pokemon, u8 area)
u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u32 param_5,u32 param_6)
{
if(area == GetFriendArea(pokemon->speciesNum))
return TRUE;
else
return FALSE;
}
void sub_80241A8(void)
{
switch(gUnknown_3001B60->sortMethod)
{
case 2:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyAlphabetNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyAlphabetNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
case 3:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyName(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyName(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
case 1:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyInternalNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyInternalNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
}
}
void SortbyInternalNo(s32 param_1, s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
if (GetInternalNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum) > GetInternalNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
void SortbyAlphabetNo(s32 param_1,s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
if (GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum, 0) > GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum, 0)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
void SortbyName(s32 param_1,s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
r5 = r4 - 1;
if (ComparePokemonNames(*r5, *r4)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
struct PokemonStruct *sub_80243E8(void)
{
u8 buffer [40];
u8 nameBuffer [20];
struct PokemonStruct *pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_3001B60->unk1A[gUnknown_3001B60->unk376 * gUnknown_3001B60->unk374 + gUnknown_3001B60->unk370]];
sub_80922B4(nameBuffer, pokeStruct->name, POKEMON_NAME_LENGTH);
sprintfStatic(buffer, gUnknown_80DC9A4,nameBuffer); // %s
return pokeStruct;
}
bool8 sub_8024458(s16 speciesNum, s32 param_2)
{
s32 speciesNum_s32 = speciesNum;
gUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8);
gUnknown_203B2AC->speciesNum = speciesNum_s32;
gUnknown_203B2AC->unkE0 = param_2;
gUnknown_203B2AC->unkE4 = &gUnknown_203B2AC->unkE8[param_2];
sub_8006518(gUnknown_203B2AC->unkE8);
gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9C8;
gUnknown_203B2AC->unkE4->unk14 = gUnknown_203B2AC->unk148;
gUnknown_203B2AC->unk148[2] = 10;
sub_8024604();
sub_802452C();
sub_8013984(gUnknown_203B2AC);
return TRUE;
}
u8 sub_80244E4(void)
{
switch(GetKeyPress(gUnknown_203B2AC))
s32 iVar5;
s32 iVar8;
s32 species_s32;
u8 param_4_u8;
s32 four;
species_s32 = species;
param_4_u8 = param_4;
gUnknown_203B270 = MemoryAlloc(sizeof(struct unkStruct_203B270), 8);
gUnknown_203B270->unk4 = param_4_u8;
gUnknown_203B270->unk5 = 1;
gUnknown_203B270->unk6 = 1;
gUnknown_203B270->unk7 = 1;
gUnknown_203B270->unk0 = param_1;
switch(param_1)
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 3:
gUnknown_203B270->unk5 = 0;
gUnknown_203B270->unk6 = 0;
gUnknown_203B270->unk7 = 0;
break;
case 0:
case 1:
PlayMenuSoundEffect(0);
return 3;
default:
if (sub_8013938(gUnknown_203B2AC) != 0) {
sub_802452C();
return 1;
}
else {
return 0;
}
break;
}
}
void sub_802452C(void)
{
sub_8024588();
sub_80245D0();
}
void sub_802453C(void)
{
if(gUnknown_203B2AC)
{
gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9B0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2AC->unkE8, 1, 1);
MemoryFree(gUnknown_203B2AC);
gUnknown_203B2AC = NULL;
}
}
void sub_8024588(void)
{
gUnknown_203B2AC->unk148[0] = gUnknown_203B2AC->unk20;
gUnknown_203B2AC->unk148[1] = gUnknown_203B2AC->unk1E;
gUnknown_203B2AC->unk148[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2AC->unkE8,1,1);
}
void sub_80245D0(void)
{
CreatePokemonInfoTabScreen
(gUnknown_203B2AC->unk34[gUnknown_203B2AC->unk1E],
gUnknown_203B2AC->unk1E,&gUnknown_203B2AC->unk4C,
&gUnknown_203B2AC->unkB0,gUnknown_203B2AC->unkE0);
}
void sub_8024604(void)
{
struct PokemonStruct *pokeStruct;
u32 *iVar3;
gUnknown_203B2AC->unk34[0] = 2;
gUnknown_203B2AC->unk34[1] = 3;
gUnknown_203B2AC->unk34[2] = 5;
sub_8013818(gUnknown_203B2AC,3,1,gUnknown_203B2AC->unkE0);
iVar3 = &gUnknown_203B2AC->unk4C;
pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2AC->speciesNum];
sub_808FF20(iVar3,pokeStruct, sub_80023E4(7));
gUnknown_203B270->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
gUnknown_203B270->isTeamLeader = gUnknown_203B270->pokeStruct->isTeamLeader;
gUnknown_203B270->moves = moves;
gUnknown_203B270->unkB8 = param_5;
iVar8 = iVar5 = sub_801F3F8();
four = 4;
if (iVar8 < four) {
iVar8 = 4;
}
sub_8006518(gUnknown_203B270->unk58);
gUnknown_203B270->unk50 = param_6;
gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C;
if (gUnknown_203B270->unkB8 != 0) {
gUnknown_203B270->unk54 = sub_8006544(param_6);
gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274;
}
sub_8012D08(&gUnknown_203B270->unk58[gUnknown_203B270->unk50],iVar8);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B270->unk58,1,1);
sub_8013818(&gUnknown_203B270->unk1C,iVar5,iVar5,param_6);
sub_8013780(&gUnknown_203B270->unk1C,0);
sub_801F280(1);
return 1;
}

312
src/code_801EE10_1.c Normal file
View File

@ -0,0 +1,312 @@
#include "global.h"
#include "constants/input.h"
#include "code_800D090.h"
#include "pokemon.h"
#include "input.h"
#include "memory.h"
#include "text.h"
struct unkStruct_203B2AC
{
u8 unk0[0x1E];
s16 unk1E;
s16 unk20;
u8 unk22[0x34 - 0x22];
u32 unk34[3];
u8 unk40[0x48 - 0x40];
s16 speciesNum;
u32 unk4C;
u8 unk50[0xB0 - 0x50];
u32 unkB0;
u8 fillB4[0xE0 - 0xB4];
u32 unkE0;
struct UnkTextStruct2 *unkE4;
struct UnkTextStruct2 unkE8[4];
u8 unk148[4];
};
extern struct unkStruct_203B2AC *gUnknown_203B2AC;
struct unkStruct_3001B60
{
u32 unk0;
u32 sortMethod;
u32 unk8;
u32 unkC;
u32 unk10;
u8 fill14[0x18 - 0x14];
s16 unk18;
s16 unk1A[2];
u8 fill1C[0x370 - 0x1E];
s16 unk370;
s16 unk372;
s16 unk374;
s16 unk376;
};
extern struct unkStruct_3001B60 *gUnknown_3001B60;
extern struct UnkTextStruct2 gUnknown_80DC9B0;
extern struct UnkTextStruct2 gUnknown_80DC9C8;
extern void sub_8013818(void *, u32, u32, u32);
extern bool8 sub_80023E4(u32);
extern void sub_808FF20(u32 *, struct PokemonStruct *, bool8);
extern void CreatePokemonInfoTabScreen(u32, s16, u32 *, u32 *, u32);
extern s32 GetKeyPress(void *);
extern bool8 sub_8013938(void *);
extern void sub_802452C(void);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013984(void *);
void sub_80922B4(u8 *buffer, u8 *string, s32 size);
bool8 ComparePokemonNames(s16 a1, s16 a2);
void sub_8024588(void);
void sub_80245D0(void);
void sub_8024604(void);
extern u8 gUnknown_80DC9A4[];
void SortbyInternalNo(s32 param_1, s32 param_2);
void SortbyAlphabetNo(s32 param_1,s32 param_2);
void SortbyName(s32 param_1,s32 param_2);
bool8 sub_8024184(struct PokemonStruct *pokemon, u8 area)
{
if(area == GetFriendArea(pokemon->speciesNum))
return TRUE;
else
return FALSE;
}
void sub_80241A8(void)
{
switch(gUnknown_3001B60->sortMethod)
{
case 2:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyAlphabetNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyAlphabetNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
case 3:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyName(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyName(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
case 1:
if (gUnknown_3001B60->unkC != gUnknown_3001B60->unk10) {
SortbyInternalNo(gUnknown_3001B60->unkC, gUnknown_3001B60->unk10);
}
if (gUnknown_3001B60->unk10 != gUnknown_3001B60->unk8) {
SortbyInternalNo(gUnknown_3001B60->unk10, gUnknown_3001B60->unk8);
}
break;
}
}
void SortbyInternalNo(s32 param_1, s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
if (GetInternalNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum) > GetInternalNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
void SortbyAlphabetNo(s32 param_1,s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
if (GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[r5 = r4 - 1, *r5].speciesNum, 0) > GetAlphabetParentNo(gRecruitedPokemonRef->pokemon[*r4].speciesNum, 0)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
void SortbyName(s32 param_1,s32 param_2)
{
s16 *r4;
s32 iVar4;
s16 *r10;
s16 *r5;
s32 r6;
s32 r1;
s32 r7;
s32 r9;
r10 = &gUnknown_3001B60->unk18 + param_2;
r7 = param_1;
r1 = param_2 - 1;
if (r7 < r1) {
r9 = r1;
do {
r4 = r10;
r6 = r1;
iVar4 = r7 + 1;
for (; r6 > r7; r6--) {
r5 = r4 - 1;
if (ComparePokemonNames(*r5, *r4)) {
r1 = *r4;
*r4 = *r5;
*r5 = r1;
}
r4 = r5;
}
r7 = iVar4;
r1 = r9;
} while (iVar4 < r1);
}
}
struct PokemonStruct *sub_80243E8(void)
{
u8 buffer [40];
u8 nameBuffer [20];
struct PokemonStruct *pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_3001B60->unk1A[gUnknown_3001B60->unk376 * gUnknown_3001B60->unk374 + gUnknown_3001B60->unk370]];
sub_80922B4(nameBuffer, pokeStruct->name, POKEMON_NAME_LENGTH);
sprintfStatic(buffer, gUnknown_80DC9A4,nameBuffer); // %s
return pokeStruct;
}
bool8 sub_8024458(s16 speciesNum, s32 param_2)
{
s32 speciesNum_s32 = speciesNum;
gUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8);
gUnknown_203B2AC->speciesNum = speciesNum_s32;
gUnknown_203B2AC->unkE0 = param_2;
gUnknown_203B2AC->unkE4 = &gUnknown_203B2AC->unkE8[param_2];
sub_8006518(gUnknown_203B2AC->unkE8);
gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9C8;
gUnknown_203B2AC->unkE4->unk14 = gUnknown_203B2AC->unk148;
gUnknown_203B2AC->unk148[2] = 10;
sub_8024604();
sub_802452C();
sub_8013984(gUnknown_203B2AC);
return TRUE;
}
u8 sub_80244E4(void)
{
switch(GetKeyPress(gUnknown_203B2AC))
{
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case INPUT_A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
default:
if (sub_8013938(gUnknown_203B2AC) != 0) {
sub_802452C();
return 1;
}
else {
return 0;
}
}
}
void sub_802452C(void)
{
sub_8024588();
sub_80245D0();
}
void sub_802453C(void)
{
if(gUnknown_203B2AC)
{
gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9B0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2AC->unkE8, 1, 1);
MemoryFree(gUnknown_203B2AC);
gUnknown_203B2AC = NULL;
}
}
void sub_8024588(void)
{
gUnknown_203B2AC->unk148[0] = gUnknown_203B2AC->unk20;
gUnknown_203B2AC->unk148[1] = gUnknown_203B2AC->unk1E;
gUnknown_203B2AC->unk148[3] = 0;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B2AC->unkE8,1,1);
}
void sub_80245D0(void)
{
CreatePokemonInfoTabScreen
(gUnknown_203B2AC->unk34[gUnknown_203B2AC->unk1E],
gUnknown_203B2AC->unk1E,&gUnknown_203B2AC->unk4C,
&gUnknown_203B2AC->unkB0,gUnknown_203B2AC->unkE0);
}
void sub_8024604(void)
{
struct PokemonStruct *pokeStruct;
u32 *iVar3;
gUnknown_203B2AC->unk34[0] = 2;
gUnknown_203B2AC->unk34[1] = 3;
gUnknown_203B2AC->unk34[2] = 5;
sub_8013818(gUnknown_203B2AC,3,1,gUnknown_203B2AC->unkE0);
iVar3 = &gUnknown_203B2AC->unk4C;
pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2AC->speciesNum];
sub_808FF20(iVar3,pokeStruct, sub_80023E4(7));
}

View File

@ -1,11 +1,14 @@
#include "constants/input.h"
#include "global.h"
#include "constants/iq_skill.h"
#include "memory.h"
#include "menu.h"
#include "pokemon.h"
#include "team_inventory.h"
#include "text.h"
#include "input.h"
#include "item.h"
#include "menu_input.h"
struct unkStruct_3001B5C
{
@ -39,8 +42,7 @@ extern u16 gUnknown_203B29E;
extern struct UnkTextStruct2 gUnknown_80DC91C;
extern struct UnkTextStruct2 gUnknown_80DC904;
extern u8 sub_8023704();
extern void sub_8012D08(void *, u32);
extern u8 sub_8023704(u8);
extern void sub_8013818(void *, u32, u32, u32);
extern void sub_8013984(u8 *);
extern void sub_8023420(void);
@ -66,10 +68,8 @@ struct unkStruct_203B294
/* 0x48 */ struct PokemonStruct *pokeStruct;
u32 unk4C;
struct Item unk50;
u32 unk54;
u8 fill58[0xA4 - 0x58];
u32 unkA4;
u8 fillA8[0xF4 - 0xA8];
struct MenuStruct unk54;
struct MenuStruct unkA4;
u32 unkF4;
u32 unkF8;
u16 unkFC;
@ -86,8 +86,6 @@ extern void sub_801B048(void);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_801A6E8(u32);
extern void sub_8099690(u32);
extern void sub_801A928(void);
@ -299,13 +297,13 @@ u8 sub_8023278(u8 param_1)
}
switch(GetKeyPress(&gUnknown_3001B5C->unk35C))
{
case 2:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case 1:
case INPUT_A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
case 3:
case INPUT_SELECT_BUTTON:
PlayMenuSoundEffect(5);
if (temp = gUnknown_3001B5C->unk4, iVar3 = 1, temp < 2) {
iVar3 = temp + 1;

View File

@ -392,7 +392,7 @@ extern u8 JirachiFriendAreaSearch(void);
extern u8 sub_80860A8(u32);
extern void sub_8049ED4();
extern void sub_8092578(u8 *buffer, u8 index, u8 r2);
extern void sub_8052D44(u8 *, struct Entity *, struct Entity *);
extern void sub_8052D44(s16 *, struct Entity *, struct Entity *);
extern void sub_8097FD0(u32);
extern void SetMessageArgument(u8 *, struct Entity *, u32);
extern struct Entity *GetLeader();
@ -513,7 +513,7 @@ void ZapdosReFightDialogue(void)
DisplayDungeonDialogue(&gZapdosReFightDialogue_3);
ZapdosScreenFlash(2);
DisplayDungeonDialogue(&gZapdosReFightDialogue_4);
SetupBossFightHP(ZapdosEntity,300,0xb);
SetupBossFightHP(ZapdosEntity,300,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -541,7 +541,7 @@ void ZapdosPostStoryPreFightDialogue(void)
ZapdosScreenFlash(2);
DisplayDungeonDialogue(&gZapdosPostStoryPreFightDialogue_5);
sub_803E708(10,0x46);
SetupBossFightHP(ZapdosEntity,300,0xb);
SetupBossFightHP(ZapdosEntity,300,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -719,7 +719,7 @@ void MoltresPreFightDialogue(void)
MoltresScreenFlash2(0xb,6);
DisplayDungeonDialogue(&gMoltresPreFightDialogue_12);
sub_803E708(10,0x46);
SetupBossFightHP(MoltresEntity,400,0xb);
SetupBossFightHP(MoltresEntity,400,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -762,7 +762,7 @@ void MoltresReFightDialogue(void)
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gMoltresReFightDialogue_5);
sub_803E708(10,0x46);
SetupBossFightHP(MoltresEntity,400,0xb);
SetupBossFightHP(MoltresEntity,400,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -800,7 +800,7 @@ void MoltresPostStoryPreFightDialogue(void)
MoltresScreenFlash2(0xb,6);
DisplayDungeonDialogue(&gMoltresPostStoryPreFightDialogue_5);
sub_803E708(10,0x46);
SetupBossFightHP(MoltresEntity,400,0xb);
SetupBossFightHP(MoltresEntity,400,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -1147,7 +1147,7 @@ void ArticunoPreFightDialogue(void)
DisplayDungeonDialogue(&gArticunoPreFightDialogue_12);
sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH);
sub_803E708(0x10,0x46);
SetupBossFightHP(ArticunoEntity,0x1c2,0xb);
SetupBossFightHP(ArticunoEntity,0x1c2,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -1169,7 +1169,7 @@ void ArticunoReFightDialogue(void)
DisplayDungeonDialogue(&gArticunoReFightDialogue_3);
sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH);
sub_803E708(0x28,0x46);
SetupBossFightHP(ArticunoEntity,0x1c2,0xb);
SetupBossFightHP(ArticunoEntity,0x1c2,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -1205,7 +1205,7 @@ void ArticunoPostStoryPreFightDialogue(void)
DisplayDungeonDialogue(&gArticunoPostStoryPreFightDialogue_5);
sub_806CDD4(ArticunoEntity,0xf,DIRECTION_SOUTH);
sub_803E708(0x28,0x46);
SetupBossFightHP(ArticunoEntity,0x1c2,0xb);
SetupBossFightHP(ArticunoEntity,0x1c2,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -1468,7 +1468,7 @@ void GroudonPreFightDialogue(void)
sub_8086A54(GroudonEntity);
sub_8085930(DIRECTION_NORTH);
sub_8086764();
SetupBossFightHP(GroudonEntity,500,0xb);
SetupBossFightHP(GroudonEntity,500,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -1500,7 +1500,7 @@ void GroudonReFightDialogue(void)
sub_8086A54(GroudonEntity);
sub_8085930(DIRECTION_NORTH);
sub_8086764();
SetupBossFightHP(GroudonEntity,500,0xb);
SetupBossFightHP(GroudonEntity,500,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -1528,7 +1528,7 @@ void GroudonPostStoryPreFightDialogue(void)
GroudonScreenFlash();
DisplayDungeonDialogue(&gGroudonPostStoryPreFightDialogue_4);
sub_803E708(10,0x46);
SetupBossFightHP(GroudonEntity,500,0xb);
SetupBossFightHP(GroudonEntity,500,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -1672,14 +1672,14 @@ void MagmaCavernMidDialogue(void)
struct Entity * PartnerEntity;
struct Entity * iVar3;
struct Entity * iVar4;
u8 auStack36 [4];
s16 IDStack [2];
struct Position32 local_20;
LeaderEntity = xxx_call_GetLeader();
PartnerEntity = GetPartnerEntity();
iVar3 = GetEntityFromClientType(0xb);
iVar4 = GetEntityFromClientType(0xc);
sub_8052D44(auStack36,LeaderEntity,PartnerEntity);
sub_8052D44(IDStack,LeaderEntity,PartnerEntity);
sub_8086448();
SpriteLookAroundEffect(PartnerEntity);
// Let's see..
@ -1970,7 +1970,7 @@ void RayquazaPreFightDialogue(void)
DisplayDungeonDialogue(&gRayquazaPreFightDialogue_10);
RayquazaScreenFlash();
DisplayDungeonDialogue(&gRayquazaPreFightDialogue_11);
SetupBossFightHP(RayquazaEntity,600,0x20);
SetupBossFightHP(RayquazaEntity,600,MUS_BATTLE_WITH_RAYQUAZA);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -1994,7 +1994,7 @@ void RayquazaReFightDialogue(void)
DisplayDungeonDialogue(&gRayquazaReFightDialogue_3);
RayquazaScreenFlash();
DisplayDungeonDialogue(&gRayquazaReFightDialogue_4);
SetupBossFightHP(RayquazaEntity,600,0x20);
SetupBossFightHP(RayquazaEntity,600,MUS_BATTLE_WITH_RAYQUAZA);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2020,7 +2020,7 @@ void RayquazaPostStoryPreFightDialogue(void)
DisplayDungeonDialogue(&gRayquazaPostStoryPreFightDialogue_4);
RayquazaScreenFlash();
DisplayDungeonDialogue(&gRayquazaPostStoryPreFightDialogue_5);
SetupBossFightHP(RayquazaEntity,600,0xb);
SetupBossFightHP(RayquazaEntity,600,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -2267,7 +2267,7 @@ void MewtwoPreFightDialogue(void)
MewtwoScreenFlash();
DisplayDungeonDialogue(&gMewtwoPreFightDialogue_5);
sub_803E708(10,0x46);
SetupBossFightHP(MewtwoEntity,900,0x20);
SetupBossFightHP(MewtwoEntity,900,MUS_BATTLE_WITH_RAYQUAZA);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2293,7 +2293,7 @@ void MewtwoReFightDialogue(void)
DisplayDungeonDialogue(&gMewtwoReFightDialogue_3);
MewtwoScreenFlash();
DisplayDungeonDialogue(&gMewtwoReFightDialogue_4);
SetupBossFightHP(MewtwoEntity,900,0x20);
SetupBossFightHP(MewtwoEntity,900,MUS_BATTLE_WITH_RAYQUAZA);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -2406,7 +2406,7 @@ void EnteiPreFightDialogue(void)
EnteiScreenFlash();
DisplayDungeonDialogue(&gEnteiPreFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(EnteiEntity,600,0xb);
SetupBossFightHP(EnteiEntity,600,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2424,7 +2424,7 @@ void EnteiReFightDialogue(void)
EnteiScreenFlash();
DisplayDungeonDialogue(&gEnteiReFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(EnteiEntity,600,0xb);
SetupBossFightHP(EnteiEntity,600,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2446,7 +2446,7 @@ void EnteiPostStoryPreFightDialogue(void)
EnteiScreenFlash();
DisplayDungeonDialogue(&gEnteiPostStoryPreFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(EnteiEntity,600,0xb);
SetupBossFightHP(EnteiEntity,600,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -2559,7 +2559,7 @@ void RaikouPreFightDialogue(void)
RaikouScreenFlash();
DisplayDungeonDialogue(&gRaikouPreFightDialogue_6);
sub_803E708(10,70);
SetupBossFightHP(RaikouEntity,0x28a,0xb);
SetupBossFightHP(RaikouEntity,0x28a,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2579,7 +2579,7 @@ void RaikouReFightDialogue(void)
RaikouScreenFlash();
DisplayDungeonDialogue(&gRaikouReFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(RaikouEntity,0x28a,0xb);
SetupBossFightHP(RaikouEntity,0x28a,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2602,7 +2602,7 @@ void RaikouPostStoryPreFightDialogue(void)
RaikouScreenFlash();
DisplayDungeonDialogue(&gRaikouPostStoryPreFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(RaikouEntity,0x28a,0xb);
SetupBossFightHP(RaikouEntity,0x28a,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -2717,7 +2717,7 @@ void SuicunePreFightDialogue(void)
SuicuneScreenFlash();
DisplayDungeonDialogue(&gSuicunePreFightDialogue_7);
sub_803E708(10,70);
SetupBossFightHP(SuicuneEntity,0x28a,0xb);
SetupBossFightHP(SuicuneEntity,0x28a,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2734,7 +2734,7 @@ void SuicuneReFightDialogue(void)
SuicuneScreenFlash();
DisplayDungeonDialogue(&gSuicuneReFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(SuicuneEntity,0x28a,0xb);
SetupBossFightHP(SuicuneEntity,0x28a,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2755,7 +2755,7 @@ void SuicunePostStoryPreFightDialogue(void)
SuicuneScreenFlash();
DisplayDungeonDialogue(&gSuicunePostStoryPreFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(SuicuneEntity,0x28a,0xb);
SetupBossFightHP(SuicuneEntity,0x28a,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -2898,7 +2898,7 @@ void HoOhPreFightDialogue(void)
HoOhScreenFlash();
DisplayDungeonDialogue(&gHoOhPreFightDialogue_6);
sub_803E708(10,70);
SetupBossFightHP(HoOhEntity,800,0x20);
SetupBossFightHP(HoOhEntity,800,MUS_BATTLE_WITH_RAYQUAZA);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -2934,7 +2934,7 @@ void HoOhReFightDialogue(void)
HoOhScreenFlash();
DisplayDungeonDialogue(&HoOhReFightDialogue_4);
sub_803E708(10,70);
SetupBossFightHP(HoOhEntity,800,0x20);
SetupBossFightHP(HoOhEntity,800,MUS_BATTLE_WITH_RAYQUAZA);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
}
@ -3071,7 +3071,7 @@ void LatiosPreFightDialogue(void)
LatiosScreenFlash();
DisplayDungeonDialogue(&gLatiosPreFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(LatiosEntity,600,0xb);
SetupBossFightHP(LatiosEntity,600,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -3090,7 +3090,7 @@ void LatiosReFightDialogue(void)
LatiosScreenFlash();
DisplayDungeonDialogue(&gLatiosPreFightDialogue_3);
sub_803E708(10,70);
SetupBossFightHP(LatiosEntity,600,0xb);
SetupBossFightHP(LatiosEntity,600,MUS_BOSS_BATTLE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -3207,17 +3207,17 @@ void sub_808ADCC(void)
void sub_808AE54(char param_1,char param_2,u32 *param_3)
{
struct Entity * LeaderEntity;
u8 auStack24 [4];
struct Item auStack20;
s16 IDStack[2];
struct Item item;
LeaderEntity = xxx_call_GetLeader();
sub_8052D44(auStack24,LeaderEntity,0);
sub_8052D44(IDStack,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_2 == 0x2E) && (param_1 == 0x17)) {
sub_808B1CC(0);
if (sub_8098100(0x1d) == 0) {
xxx_init_itemslot_8090A8C(&auStack20,ITEM_ROCK_PART,0);
sub_80464C8(GetLeader(),param_3,&auStack20);
xxx_init_itemslot_8090A8C(&item,ITEM_ROCK_PART,0);
sub_80464C8(GetLeader(),param_3,&item);
DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT);
// Something fell from Regirock's body
// Regirock was apparently guarding this item
@ -3230,17 +3230,17 @@ void sub_808AE54(char param_1,char param_2,u32 *param_3)
void sub_808AEC8(char param_1,char param_2,u32 *param_3)
{
struct Entity * LeaderEntity;
u8 auStack24 [4];
struct Item auStack20;
s16 IDStack[2];
struct Item item;
LeaderEntity = xxx_call_GetLeader();
sub_8052D44(auStack24,LeaderEntity,0);
sub_8052D44(IDStack,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_2 == 0x2F) && (param_1 == 0x18)) {
sub_808B1CC(0);
if (sub_8098100(0x1d) == 0) {
xxx_init_itemslot_8090A8C(&auStack20,ITEM_ICE_PART,0);
sub_80464C8(GetLeader(),param_3,&auStack20);
xxx_init_itemslot_8090A8C(&item,ITEM_ICE_PART,0);
sub_80464C8(GetLeader(),param_3,&item);
DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT);
// Something fell from Regice's body
// Regice was apparently guarding this item
@ -3252,17 +3252,17 @@ void sub_808AEC8(char param_1,char param_2,u32 *param_3)
void sub_808AF3C(char param_1,char param_2,u32 *param_3)
{
struct Entity * LeaderEntity;
u8 auStack24 [4];
struct Item auStack20;
s16 IDStack[2];
struct Item item;
LeaderEntity = xxx_call_GetLeader();
sub_8052D44(auStack24,LeaderEntity,0);
sub_8052D44(IDStack,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_2 == 0x30) && (param_1 == 0x19)) {
sub_808B1CC(0);
if (sub_8098100(0x1d) == 0) {
xxx_init_itemslot_8090A8C(&auStack20,ITEM_STEEL_PART,0);
sub_80464C8(GetLeader(),param_3, &auStack20);
xxx_init_itemslot_8090A8C(&item,ITEM_STEEL_PART,0);
sub_80464C8(GetLeader(),param_3, &item);
DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT);
// Something fell from Registeel's body
// Registeel was apparently guarding this item
@ -3274,10 +3274,10 @@ void sub_808AF3C(char param_1,char param_2,u32 *param_3)
void sub_808AFB0(char param_1)
{
struct Entity * LeaderEntity;
u8 auStack12 [4];
s16 IDStack [2];
LeaderEntity = xxx_call_GetLeader();
sub_8052D44(auStack12,LeaderEntity,0);
sub_8052D44(IDStack,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_1 == 0x2E) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_ROCK_PART) != 0)) {
sub_8097FD0(0x1d);
SetMessageArgument(gAvailablePokemonNames,GetLeader(),0);
@ -3292,10 +3292,10 @@ void sub_808AFB0(char param_1)
void sub_808B030(char param_1)
{
struct Entity * LeaderEntity;
u8 auStack12 [4];
s16 IDStack [2];
LeaderEntity = xxx_call_GetLeader();
sub_8052D44(auStack12,LeaderEntity,0);
sub_8052D44(IDStack,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_1 == 0x2F) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_ICE_PART) != 0)) {
sub_8097FD0(0x1d);
SetMessageArgument(gAvailablePokemonNames,GetLeader(),0);
@ -3310,10 +3310,10 @@ void sub_808B030(char param_1)
void sub_808B0B0(char param_1)
{
struct Entity * LeaderEntity;
u8 auStack12 [4];
s16 IDStack [2];
LeaderEntity = xxx_call_GetLeader();
sub_8052D44(auStack12,LeaderEntity,0);
sub_8052D44(IDStack,LeaderEntity,0);
if ((sub_8098100(0x22) == 0) && (param_1 == 0x30) && (sub_8098100(0x1d) == 0) && (sub_80860A8(ITEM_STEEL_PART) != 0)) {
sub_8097FD0(0x1d);
SetMessageArgument(gAvailablePokemonNames, GetLeader(), 0);
@ -3482,19 +3482,19 @@ void SetupRegiFacingDirection(struct Entity *regiEntity)
void SetupRegirockFightHP(struct Entity *r0)
{
SetupBossFightHP(r0, 450, 0xB);
SetupBossFightHP(r0, 450, MUS_BOSS_BATTLE);
}
void SetupRegiceFightHP(struct Entity *r0)
{
SetupBossFightHP(r0, 450, 0xB);
SetupBossFightHP(r0, 450, MUS_BOSS_BATTLE);
}
void SetupRegisteelFightHP(struct Entity *r0)
{
SetupBossFightHP(r0, 450, 0xB);
SetupBossFightHP(r0, 450, MUS_BOSS_BATTLE);
}
void sub_808B2F4(void)
@ -3653,7 +3653,7 @@ void JirachiPreFightDialogue(void)
sub_803E708(10,70);
DisplayDungeonDialogue(&gJirachiPreFightDialogue_4);
sub_803E708(10,70);
SetupBossFightHP(JirachiEntity,0x15e,0x20);
SetupBossFightHP(JirachiEntity,0x15e,MUS_BATTLE_WITH_RAYQUAZA);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -3692,12 +3692,12 @@ void JirachiWish(void)
struct Position *LeaderPos;
struct Entity *LeaderEntity;
s32 wishChoice;
s32 iVar4;
u32 uVar6;
s32 iVar9;
struct Item auStack152 [9];
struct Item auStack116 [9];
struct Item auStack80 [9];
s32 counter;
u32 direction;
s32 index;
struct Item money [9];
struct Item itemStack [9];
struct Item strengthItems [9];
s32 local_2c;
s32 local_28;
s32 local_24;
@ -3751,12 +3751,12 @@ void JirachiWish(void)
sub_803E708(10,0x46);
JirachiWishGrantDialogue(JirachiEntity);
for(iVar4 = 0; iVar4 < 6; iVar4 = r8)
for(counter = 0; counter < 6; counter = r8)
{
r8 = iVar4 + 1;
for(iVar9 = 0; iVar9 < 9; iVar9++)
r8 = counter + 1;
for(index = 0; index < 9; index++)
{
sub_8045C28(&auStack152[iVar9], 0x69, 0);
sub_8045C28(&money[index], 0x69, 0);
}
temp = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16);
local_2c &= 0xffff0000;
@ -3768,7 +3768,7 @@ void JirachiWish(void)
if ((GetTileSafe((s16)local_2c, local_2c >> 16)->terrainType & 3) != 0) {
PlaySoundEffect(0x14c);
sub_808BB3C((s16 *)&local_2c);
sub_8046860(JirachiEntity,&local_2c,auStack152,9);
sub_8046860(JirachiEntity,&local_2c,money,9);
}
}
JirachiEntity->info->unk15D = 0;
@ -3779,14 +3779,14 @@ void JirachiWish(void)
sub_803E708(10,0x46);
JirachiWishGrantDialogue(JirachiEntity);
for(iVar4 = 0; iVar4 < 6; iVar4++)
for(counter = 0; counter < 6; counter++)
{
#ifndef NONMATCHING
asm("":::"sl");
#endif
for(iVar9 = 0; iVar9 < 9; iVar9++)
for(index = 0; index < 9; index++)
{
sub_8045C28(&auStack116[iVar9], sub_803D73C(0),0);
sub_8045C28(&itemStack[index], sub_803D73C(0),0);
}
temp2 = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16);
local_28 &= 0xffff0000;
@ -3798,7 +3798,7 @@ void JirachiWish(void)
if ((GetTileSafe((s16)local_28, local_28 >> 16)->terrainType & 3) != 0) {
PlaySoundEffect(400);
sub_808BB3C((s16 *)&local_28);
sub_8046860(JirachiEntity,&local_28,auStack116,9);
sub_8046860(JirachiEntity,&local_28,itemStack,9);
}
}
JirachiEntity->info->unk15D = 0;
@ -3838,12 +3838,12 @@ void JirachiWish(void)
sub_803E708(10,0x46);
JirachiWishGrantDialogue(JirachiEntity);
for(iVar4 = 0; iVar4 < 5; iVar4++)
for(counter = 0; counter < 5; counter++)
{
for(iVar9 = 0; iVar9 < 4; iVar9++)
for(index = 0; index < 4; index++)
{
sub_8045C28(&auStack80[iVar9],gUnknown_81074FC[DungeonRandInt(8)],0);
sub_8045C28(&strengthItems[index],gUnknown_81074FC[DungeonRandInt(8)],0);
}
temp3 = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16);
local_24 &= 0xffff0000;
@ -3855,7 +3855,7 @@ void JirachiWish(void)
if ((GetTileSafe((s16)local_24, local_24 >> 16)->terrainType & 3) != 0) {
PlaySoundEffect(400);
sub_808BB3C((s16 *)&local_24);
sub_8046860(JirachiEntity,&local_24,auStack80,4);
sub_8046860(JirachiEntity,&local_24,strengthItems,4);
}
}
JirachiEntity->info->unk15D = 0;
@ -3871,8 +3871,8 @@ void JirachiWish(void)
DisplayDungeonDialogue(&gUnknown_8105D80);
sub_803E708(10,0x46);
LeaderPos = &GetLeader()->pos;
uVar6 = GetDirectionTowardsPosition(&JirachiEntity->pos,LeaderPos);
SetFacingDirection(JirachiEntity,uVar6);
direction = GetDirectionTowardsPosition(&JirachiEntity->pos,LeaderPos);
SetFacingDirection(JirachiEntity,direction);
sub_803E708(10,0x46);
DisplayDungeonDialogue(&gUnknown_8105D9C);
sub_803E708(10,0x46);
@ -4157,7 +4157,7 @@ void LugiaPreFightDialogue(void)
sub_80861D4(LugiaEntity,7,0);
DisplayDungeonDialogue(&gLugiaPreFightDialogue_7);
LugiaScreenFlash();
SetupBossFightHP(LugiaEntity,800,0x20);
SetupBossFightHP(LugiaEntity,800,MUS_BATTLE_WITH_RAYQUAZA);
DungeonStartNewBGM(MUS_FRIEND_AREA_CRYPTIC_CAVE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -4307,7 +4307,7 @@ void KyogrePreFightDialogue(void)
// power!
DisplayDungeonDialogue(&gKyogrePreFightDialogue_7);
sub_803E708(10,0x46);
SetupBossFightHP(KyogreEntity,600,0xb);
SetupBossFightHP(KyogreEntity,600,MUS_BOSS_BATTLE);
DungeonStartNewBGM(MUS_FRIEND_AREA_CRYPTIC_CAVE);
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
}
@ -4449,7 +4449,7 @@ void SetupDeoxysFacingDirection(struct Entity *deoxysEntity)
void SetupDeoxysFightHP(struct Entity *deoxysEntity)
{
SetupBossFightHP(deoxysEntity, 950, 0x20);
SetupBossFightHP(deoxysEntity, 950, MUS_BATTLE_WITH_RAYQUAZA);
}
void sub_808C5C0(void)
@ -4910,13 +4910,13 @@ void sub_808C938(void)
void sub_808C948(struct Entity *param_1, u8 param_2)
{
bool8 flag;
s32 iVar3;
s32 index;
struct Entity *iVar2;
if (param_2 == 0x37) {
flag = FALSE;
for(iVar3 = 0; iVar3 < DUNGEON_MAX_WILD_POKEMON; iVar3++){
iVar2 = gDungeon->wildPokemon[iVar3];
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++){
iVar2 = gDungeon->wildPokemon[index];
if ((iVar2 != param_1) && (EntityExists(iVar2) != 0)) {
flag = TRUE;
break;

View File

@ -57,7 +57,7 @@ void sub_8086A54(struct Entity *pokemon)
pokemon->info->unk15E = 0;
}
void SetupBossFightHP(struct Entity *pokemon, s32 newHP, u16 param_3)
void SetupBossFightHP(struct Entity *pokemon, s32 newHP, u16 songIndex)
{
// NOTE: needed two of these to match.. very dumb
@ -79,7 +79,7 @@ void SetupBossFightHP(struct Entity *pokemon, s32 newHP, u16 param_3)
entityInfo->HP = newHP;
}
gDungeon->unk66A = param_3;
gDungeon->bossSongIndex = songIndex;
SetDefaultIQSkills(enityData_1->IQSkillMenuFlags, enityData_1->bossFlag);
LoadIQSkills(pokemon);
}

View File

@ -9,13 +9,14 @@
#include "pokemon.h"
#include "save.h"
#include "text_util.h"
#include "menu_input.h"
extern struct DebugMenu *gUnknown_203B3EC;
const struct UnkTextStruct2 gUnknown_80E7D40 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -25,7 +26,7 @@ const struct UnkTextStruct2 gUnknown_80E7D40 =
const struct UnkTextStruct2 gUnknown_80E7D58 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x09, 0x0b,
0x0b, 0x00,
@ -54,14 +55,12 @@ ALIGNED(4) static const char debug_menu_fill6[] = "pksdir0";
extern u8 sub_8012FD8(struct DebugMenu *);
extern void sub_8013114(struct DebugMenu *, s32 *);
extern void sub_80976F8(u8);
extern void sub_803A3BC(void);
extern void sub_803A3A0(void);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_8035CF4(struct DebugMenu *, u32, u32);
extern void SetMenuItems(struct MenuStruct *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_8035CF4(struct MenuStruct*, u32, u32);
extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
extern void sub_808D1DC(u8 *);
extern void sub_808CFD0(u8 *, s32, u8 *, u32, u32 *, u16 *);
@ -102,8 +101,8 @@ u32 UpdateDebugMenu(void)
nextMenu = MENU_NO_SCREEN_CHANGE;
debugMenuAction = 11;
if (sub_8012FD8(gUnknown_203B3EC) == 0) {
sub_8013114(gUnknown_203B3EC, &debugMenuAction);
if (sub_8012FD8(&gUnknown_203B3EC->unk0[0]) == 0) {
sub_8013114(&gUnknown_203B3EC->unk0[0], &debugMenuAction);
}
switch(debugMenuAction) {
@ -147,8 +146,8 @@ u32 UpdateDebugMenu(void)
void SetDebugMenuItems(void)
{
SetMenuItems(gUnknown_203B3EC, gUnknown_203B3EC->unk140, 0, &gUnknown_80E7D58, gDebugMenuItems, 1, 0xd, 0);
sub_8035CF4(gUnknown_203B3EC,0,1);
SetMenuItems(gUnknown_203B3EC->unk0, gUnknown_203B3EC->unk140, 0, &gUnknown_80E7D58, gDebugMenuItems, 1, 0xd, 0);
sub_8035CF4(gUnknown_203B3EC->unk0,0,1);
}
void sub_803A3A0(void)

View File

@ -4,12 +4,10 @@
extern struct unkStruct_203B3F8 *gUnknown_203B3F8;
extern u32 sub_8013BBC(u32 *);
extern u8 sub_8012FD8(void *);
extern void sub_803AE58(void);
extern u32 sub_8016080(void);
extern void sub_803ACD0(u32);
extern void sub_80160D8(void);
extern void sub_8013114(void *, s32 *);
extern u32 sub_8023A94(u32);
extern s16 sub_8023B44(void);
@ -36,14 +34,14 @@ void sub_803AF38(void)
void sub_803AF88(void)
{
s32 local_c;
s32 menuAction;
local_c = 0;
sub_8023A94(local_c);
menuAction = 0;
sub_8023A94(0);
if (sub_8012FD8(&gUnknown_203B3F8->unk10) == 0) {
sub_8013114(&gUnknown_203B3F8->unk10, &local_c);
sub_8013114(&gUnknown_203B3F8->unk10, &menuAction);
}
switch(local_c)
switch(menuAction)
{
case 4:
sub_803ACD0(5);

View File

@ -5,6 +5,7 @@
#include "input.h"
#include "menu.h"
#include "debug_menu.h"
#include "menu_input.h"
extern struct unkStruct_203B3F8 *gUnknown_203B3F8;
extern struct UnkTextStruct2 gUnknown_80E7ED4;
@ -17,7 +18,6 @@ extern void sub_80073B8(u32);
extern void sub_8013C68(u32 *);
extern void sub_80073E0(u32);
extern void sub_8023DA4(void);
extern void sub_8012EA4(const char **, u32);
extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32);
void sub_803ACD0(u32);
@ -35,8 +35,6 @@ extern void sub_803AE58();
extern void sub_801602C(u32, u8 *);
extern void sub_803AEB0();
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32);
u32 sub_803AC24(void)
{

View File

@ -5,6 +5,7 @@
#include "memory.h"
#include "menu.h"
#include "text.h"
#include "menu_input.h"
struct unkStruct_203B3F0
{
@ -14,8 +15,7 @@ struct unkStruct_203B3F0
u8 fill5[0x8 - 5];
u32 unk8;
struct MenuItem menuItems[8];
u32 unk4C;
u8 fill50[0x9C - 0x50];
struct MenuStruct unk4C;
u32 unk9C;
u32 unkA0;
u32 unkA4;
@ -39,8 +39,7 @@ struct unkStruct_203B3F4
u8 fill5[0x8 - 5];
u32 unk8;
struct MenuItem menuItems[8];
u32 unk4C;
u8 fill50[0x9C - 0x50];
struct MenuStruct unk4C;
struct UnkTextStruct2 unk9C[4];
};
@ -63,18 +62,14 @@ extern const char *gUnknown_80D4970[];
extern void sub_801C8C4(u32, u32, u32, u32);
extern void sub_801CB5C(u32);
extern void sub_801CCD8();
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8012EA4(u32 *, u32);
extern void sub_80073E0(u32);
extern void sub_8013C68(u32 *);
extern void xxx_call_draw_string(s32, u32, const char *, u32, u32);
extern u32 sub_801CA08(u32);
extern u8 sub_801CB24();
extern void sub_801CBB8();
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_8013BBC(u32 *);
extern u32 sub_801B410();
extern void sub_801B450();

View File

@ -40,6 +40,13 @@ extern s32 gPotentialAttackTargetWeights[NUM_DIRECTIONS];
extern u8 gPotentialAttackTargetDirections[NUM_DIRECTIONS];
extern struct Entity *gPotentialTargets[NUM_DIRECTIONS];
extern void sub_8055A00(struct Entity *, u8, u32, u32, u32);
extern void sub_806A9B4(struct Entity *, u8);
extern bool8 sub_8044B28(void);
extern void sub_8057588(struct Entity *, u32);
extern void sub_806A1B0(struct Entity *);
void DecideAttack(struct Entity *pokemon)
{
struct EntityInfo *pokemonInfo = pokemon->info;
@ -922,3 +929,26 @@ bool8 IsTargetInRange(struct Entity *pokemon, struct Entity *targetPokemon, s32
}
return FALSE;
}
void sub_807CABC(struct Entity *target)
{
struct EntityInfo *entityInfo;
s32 counter;
counter = 0;
while (1) {
if(counter >= sub_8070828(target, TRUE)) break;
entityInfo = target->info;
sub_8055A00(target,(entityInfo->action).actionUseIndex,1,0,0);
if(!EntityExists(target)) break;
if(sub_8044B28()) break;
if(entityInfo->unk159) break;
counter++;
}
sub_8057588(target,1);
if (EntityExists(target)) {
sub_806A9B4(target,(target->info->action).actionUseIndex);
}
sub_806A1B0(target);
}

View File

@ -28,6 +28,10 @@ extern void sub_80709C8(u8 *buffer, struct EntityInfo *entityInfo);
void FadeOutAllMusic(u16);
void xxx_call_stop_bgm(void);
// Dungeon Music Player adds in this flag to tell
// the system to fade in rather than immediately playing
#define DUNGEON_MUSIC_FADE_IN 0x8000
void sub_8083AB0(s16 param_0, struct Entity * target, struct Entity * entity)
{
u8 *defPtr;
@ -144,48 +148,48 @@ bool8 sub_8083C88(u8 param_1)
void sub_8083CE0(u8 param_1)
{
if ((param_1 == 0) || (1 < gUnknown_202EE10.unk1A)) {
PlayFanfareSE(0x12d,0x100);
PlayFanfareSE(0x12d,MAX_VOLUME);
}
}
void sub_8083D08(void)
{
PlayFanfareSE(0x12E, 0x100);
PlayFanfareSE(0x12E, MAX_VOLUME);
}
void sub_8083D1C(void)
{
PlayFanfareSE(0x133, 0x100);
PlayFanfareSE(0x133, MAX_VOLUME);
}
void sub_8083D30(void)
{
PlayFanfareSE(0x12F, 0x100);
PlayFanfareSE(0x12F, MAX_VOLUME);
}
void sub_8083D44(void)
{
PlayFanfareSE(0x130, 0x100);
PlayFanfareSE(0x130, MAX_VOLUME);
}
void sub_8083D58(void)
{
PlayFanfareSE(0xC8, 0x100);
PlayFanfareSE(0xC8, MAX_VOLUME);
}
void sub_8083D68(void)
{
PlayFanfareSE(0xCF, 0x100);
PlayFanfareSE(0xCF, MAX_VOLUME);
}
void sub_8083D78(void)
{
PlayFanfareSE(0xD3, 0x100);
PlayFanfareSE(0xD3, MAX_VOLUME);
}
void sub_8083D88(void)
{
PlayFanfareSE(0xCC, 0x100);
PlayFanfareSE(0xCC, MAX_VOLUME);
}
void PlayDungeonFailBGM(void)
@ -194,7 +198,7 @@ void PlayDungeonFailBGM(void)
gDungeon->unk66F = 0;
gDungeon->unk672 = 0;
gDungeon->unk699 = 0;
gDungeon->unk66A = 999;
gDungeon->bossSongIndex = STOP_BGM;
}
void PlayDungeonCompleteBGM(void)
@ -203,25 +207,25 @@ void PlayDungeonCompleteBGM(void)
gDungeon->unk66F = 0;
gDungeon->unk672 = 0;
gDungeon->unk699 = 0;
gDungeon->unk66A = 999;
gDungeon->bossSongIndex = STOP_BGM;
}
void sub_8083E28(void)
{
PlayFanfareSE(0xCF, 0x100);
PlayFanfareSE(0xCF, MAX_VOLUME);
}
void PlaySoundEffect(u32 songIndex)
{
u16 songIndex_u32 = songIndex;
if(songIndex_u32 != 0x3E5)
PlayFanfareSE(songIndex_u32, 0x100);
if(songIndex_u32 != STOP_SOUND_EFFECT)
PlayFanfareSE(songIndex_u32, MAX_VOLUME);
}
void StopSoundEffect(u32 songIndex)
{
u16 songIndex_u32 = songIndex;
if(songIndex_u32 != 0x3E5)
if(songIndex_u32 != STOP_SOUND_EFFECT)
StopFanfareSE(songIndex_u32);
}
@ -238,16 +242,16 @@ void DungeonStartNewBGM(u16 songIndex)
void DungeonFadeInNewBGM(u16 songIndex, u32 fadeInSpeed)
{
gDungeon->musPlayer.queuedSongIndex = 0x80 << 8 | songIndex;
gDungeon->musPlayer.queuedSongIndex = DUNGEON_MUSIC_FADE_IN | songIndex;
gDungeon->musPlayer.fadeInSpeed = fadeInSpeed;
}
void DungeonFadeOutBGM(u16 speed)
{
FadeOutAllMusic(speed);
gDungeon->musPlayer.songIndex = 999;
gDungeon->musPlayer.pastSongIndex = 999;
gDungeon->musPlayer.queuedSongIndex = 999;
gDungeon->musPlayer.songIndex = STOP_BGM;
gDungeon->musPlayer.pastSongIndex = STOP_BGM;
gDungeon->musPlayer.queuedSongIndex = STOP_BGM;
}
void DungeonStopBGM(void)
@ -266,50 +270,50 @@ void StopDungeonBGM(void)
struct DungeonMusicPlayer *temp = &gDungeon->musPlayer;
temp->state = 0;
temp->fadeOutSpeed = 0;
temp->songIndex = 999;
temp->pastSongIndex = 999;
temp->queuedSongIndex = 999;
temp->songIndex = STOP_BGM;
temp->pastSongIndex = STOP_BGM;
temp->queuedSongIndex = STOP_BGM;
}
void UpdateDungeonMusic(void)
{
#ifndef NONMATCHING
register s32 uVar1 asm("r1");
register u16 *uVar3 asm("r3");
register s32 currSongIndex asm("r1");
register u16 *bossSongIndex asm("r3");
#else
s32 uVar1;
u16 *uVar3;
s32 currSongIndex;
u16 *bossSongIndex;
#endif
s32 songIndex1;
s32 newSongIndex;
struct DungeonMusicPlayer *musPlayer;
musPlayer = &gDungeon->musPlayer;
uVar3 = &gDungeon->unk66A;
songIndex1 = *uVar3;
if (songIndex1 == 999) {
bossSongIndex = &gDungeon->bossSongIndex;
newSongIndex = *bossSongIndex;
if (newSongIndex == STOP_BGM) {
if (gDungeon->unk66F != 0) {
songIndex1 = MUS_STOP_THIEF;
newSongIndex = MUS_STOP_THIEF;
}
else if (gDungeon->unk672 != 0) {
songIndex1 = MUS_MONSTER_HOUSE;
newSongIndex = MUS_MONSTER_HOUSE;
}
else if (gDungeon->unk699 != 0) {
songIndex1 = MUS_KECLEON_SHOP;
newSongIndex = MUS_KECLEON_SHOP;
}
else {
songIndex1 = musPlayer->queuedSongIndex;
newSongIndex = musPlayer->queuedSongIndex;
}
}
if (musPlayer->state == 4) {
if (songIndex1 != musPlayer->pastSongIndex) {
if (newSongIndex != musPlayer->pastSongIndex) {
musPlayer->state = 2;
musPlayer->songIndex = songIndex1;
musPlayer->songIndex = newSongIndex;
}
}
else if ((songIndex1 != 999) && (musPlayer->songIndex == 999)) {
else if ((newSongIndex != STOP_BGM) && (musPlayer->songIndex == STOP_BGM)) {
musPlayer->state = 1;
musPlayer->songIndex = songIndex1;
musPlayer->songIndex = newSongIndex;
}
switch(musPlayer->state) {
case 0:
@ -317,21 +321,21 @@ void UpdateDungeonMusic(void)
default:
break;
case 1:
uVar1 = musPlayer->songIndex;
if (uVar1 == 999) {
currSongIndex = musPlayer->songIndex;
if (currSongIndex == STOP_BGM) {
musPlayer->state = 0;
}
else {
if ((uVar1 & 0x8000) != 0) {
StartNewBGM(uVar1 & 0x7fff);
if ((currSongIndex & DUNGEON_MUSIC_FADE_IN)) {
StartNewBGM(currSongIndex & ~(DUNGEON_MUSIC_FADE_IN));
}
else {
FadeInNewBGM(uVar1 & 0x7fff, musPlayer->fadeInSpeed);
FadeInNewBGM(currSongIndex & ~(DUNGEON_MUSIC_FADE_IN), musPlayer->fadeInSpeed);
}
musPlayer->pastSongIndex = musPlayer->songIndex;
musPlayer->state = 4;
}
musPlayer->songIndex = 999;
musPlayer->songIndex = STOP_BGM;
break;
case 2:
FadeOutBGM(0x1e);
@ -342,7 +346,7 @@ void UpdateDungeonMusic(void)
if ((musPlayer->fadeOutSpeed != 0) && (musPlayer->fadeOutSpeed--, musPlayer->fadeOutSpeed != 0)) {
break;
}
if (musPlayer->songIndex == 999) {
if (musPlayer->songIndex == STOP_BGM) {
StopBGM();
musPlayer->state = 0;
}

View File

@ -9,7 +9,7 @@
extern bool8 HasCompletedAllMazes(void);
extern u8 sub_80973F4(u32);
extern u8 _FlagJudge(u32, u32, u32);
extern u8 _FlagJudge(s32, s32, u32);
extern u32 sub_8001658(u32, s32);
extern u32 _FlagCalc(s32, s32, u32);
extern void sub_80018D8(u32, u32, u32);
@ -365,7 +365,7 @@ u32 _FlagCalc(s32 param_1, s32 param_2, u32 operation)
}
}
u8 _FlagJudge(u32 param_1, u32 param_2, u32 operation)
u8 _FlagJudge(s32 param_1, s32 param_2, u32 operation)
{
switch(operation) {
case 0:
@ -375,21 +375,21 @@ u8 _FlagJudge(u32 param_1, u32 param_2, u32 operation)
case 2:
return param_1 == param_2;
case 7:
return (-(param_1 ^ param_2) | (param_1 ^ param_2)) >> 0x1f;
return param_1 != param_2;
case 3:
return (int)param_1 > (int)param_2;
return param_1 > param_2;
case 5:
return (int)param_1 >= (int)param_2;
return param_1 >= param_2;
case 4:
return (int)param_1 < (int)param_2;
return param_1 < param_2;
case 6:
return (int)param_1 <= (int)param_2;
return param_1 <= param_2;
case 8:
return (param_1 & param_2) != 0;
case 9:
return (param_1 ^ param_2) != 0;
case 10:
return (int)param_1 >> (param_2) & 1;
return param_1 >> (param_2) & 1;
default:
FatalError(&gUnknown_80B7350,gUnknown_80B735C, operation); // event flag rule error %d
}
@ -415,9 +415,9 @@ void sub_800226C(u32 param_1, s16 param_2, s32 param_3, u32 operation)
void sub_80022A0(u32 param_1, s16 param_2, s16 param_3, u32 operation)
{
u32 uVar1;
u32 uVar2;
u32 uVar3;
s32 uVar1;
s32 uVar2;
s32 uVar3;
s32 param_2_s32 = param_2;
s32 param_3_s32 = param_3;
@ -429,14 +429,14 @@ void sub_80022A0(u32 param_1, s16 param_2, s16 param_3, u32 operation)
sub_80018D8(param_1,param_2_s32,uVar3);
}
u8 FlagJudge(u32 r0, u32 r1, u32 operation)
u8 FlagJudge(s32 r0, s32 r1, u32 operation)
{
return _FlagJudge(r0, r1, operation);
}
u8 sub_80022F8(u32 param_1, s16 param_2, s32 param_3, u32 operation)
{
u32 uVar1;
s32 uVar1;
uVar1 = sub_8001658(param_1, param_2);
return _FlagJudge(uVar1,param_3,operation);
@ -444,8 +444,8 @@ u8 sub_80022F8(u32 param_1, s16 param_2, s32 param_3, u32 operation)
u8 sub_8002318(u32 param_1, s16 param_2, s16 param_3, u32 operation)
{
u32 uVar1;
u32 uVar2;
s32 uVar1;
s32 uVar2;
s32 param_2_s32 = param_2;
s32 param_3_s32 = param_3;

View File

@ -2,6 +2,7 @@
#include "item.h"
#include "team_inventory.h"
#include "felicity_bank.h"
#include "menu_input.h"
extern struct unkStruct_203B204 *gUnknown_203B204;
@ -14,7 +15,6 @@ extern u8 *gFelicityDeposit;
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_80073E0(u32);
extern void sub_8013C68(u32 *);
extern s32 sub_80144A4(s32 *);

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/dungeon.h"
#include "constants/friend_area.h"
#include "friend_area.h"
#include "pokemon.h"
@ -359,9 +360,9 @@ void sub_8092404(u8 r0, u16 *r1, bool8 r2, bool8 r3)
pokemon = &gRecruitedPokemonRef->pokemon[counter];
if((u8)(pokemon->unk0) & 1)
{
if((pokemon->unk2 == 0) || r2)
if((pokemon->isTeamLeader == 0) || r2)
{
flag = (u8)pokemon->fill4[0] == 65;
flag = pokemon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER;
if(!flag || r3)
{
if(sub_80923D4(counter) == r0)
@ -463,123 +464,35 @@ NAKED void sub_8092404(u8 r0, u16 *r1, bool8 r2, bool8 r3)
}
#endif
#ifdef NONMATCHING
void sub_809249C(u8 index, u8 clear)
void sub_809249C(u8 friendArea, u8 clear)
{
s32 counter;
bool32 flag;
u8 temp8;
u8 neg8;
s32 index;
bool32 dungeonCheck;
bool32 isTeamLeader;
if(!gFriendAreas[index])
if(!gFriendAreas[friendArea])
return;
for(counter = 0; counter <= 412; counter++)
for(index = 0; index < NUM_MONSTERS; index++)
{
if((u8)(gRecruitedPokemonRef[counter].unk0) & 1)
struct PokemonStruct *pokemon = &gRecruitedPokemonRef->pokemon[index];
if((u8)(pokemon->unk0) & 1)
{
if(sub_80923D4(counter) == index)
if(sub_80923D4(index) == friendArea)
{
flag = (u8)gRecruitedPokemonRef[counter].unk4[0] == 65;
if(!flag)
{
temp8 = (u8)gRecruitedPokemonRef[counter].unk2;
neg8 = -temp8;
neg8 |= temp8;
// still tries to left shift before the right shift..
neg8 >>= 7;
if(neg8 != 0)
{
clear = 0;
}
else
{
gRecruitedPokemonRef[counter].unk0 = neg8;
}
}
dungeonCheck = pokemon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER;
if(dungeonCheck || (isTeamLeader = pokemon->isTeamLeader != FALSE, isTeamLeader))
clear = FALSE;
else
pokemon->unk0 = 0;
}
}
}
if(clear)
{
gFriendAreas[index] = FALSE;
gFriendAreas[friendArea] = FALSE;
}
}
#else
NAKED void sub_809249C(u8 index, u8 clear)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tlsls r0, 24\n"
"\tlsrs r6, r0, 24\n"
"\tlsls r1, 24\n"
"\tlsrs r7, r1, 24\n"
"\tldr r0, _080924F8\n"
"\tldr r0, [r0]\n"
"\tadds r0, r6\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0\n"
"\tbeq _0809251A\n"
"\tmovs r5, 0\n"
"_080924B4:\n"
"\tldr r2, _080924FC\n"
"\tmovs r0, 0x58\n"
"\tadds r1, r5, 0\n"
"\tmuls r1, r0\n"
"\tldr r0, [r2]\n"
"\tadds r4, r0, r1\n"
"\tldrb r1, [r4]\n"
"\tmovs r0, 0x1\n"
"\tands r0, r1\n"
"\tcmp r0, 0\n"
"\tbeq _08092502\n"
"\tadds r0, r5, 0\n"
"\tbl sub_80923D4\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
"\tcmp r0, r6\n"
"\tbne _08092502\n"
"\tmovs r1, 0\n"
"\tldrb r0, [r4, 0x4]\n"
"\tcmp r0, 0x41\n"
"\tbne _080924E2\n"
"\tmovs r1, 0x1\n"
"_080924E2:\n"
"\tcmp r1, 0\n"
"\tbne _080924F2\n"
"\tldrb r1, [r4, 0x2]\n"
"\tnegs r0, r1\n"
"\torrs r0, r1\n"
"\tlsrs r0, 31\n"
"\tcmp r0, 0\n"
"\tbeq _08092500\n"
"_080924F2:\n"
"\tmovs r7, 0\n"
"\tb _08092502\n"
"\t.align 2, 0\n"
"_080924F8: .4byte gFriendAreas\n"
"_080924FC: .4byte gRecruitedPokemonRef\n"
"_08092500:\n"
"\tstrh r0, [r4]\n"
"_08092502:\n"
"\tadds r5, 0x1\n"
"\tmovs r0, 0xCE\n"
"\tlsls r0, 1\n"
"\tcmp r5, r0\n"
"\tble _080924B4\n"
"\tcmp r7, 0\n"
"\tbeq _0809251A\n"
"\tldr r0, _08092520\n"
"\tldr r0, [r0]\n"
"\tadds r0, r6\n"
"\tmovs r1, 0\n"
"\tstrb r1, [r0]\n"
"_0809251A:\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_08092520: .4byte gFriendAreas");
}
#endif
const char *GetFriendAreaName(u8 index)
{

View File

@ -7,12 +7,12 @@
#include "pokemon.h"
#include "team_inventory.h"
#include "friend_area_action_menu.h"
#include "menu_input.h"
extern struct unkStruct_203B2BC *gUnknown_203B2BC;
extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32 *, u32, u32);
extern void sub_8027D40(u32, struct BulkItem *);
extern void sub_8023868(u32, u32, u32, u32);
extern void sub_8023B7C(u32);
@ -30,7 +30,6 @@ extern void sub_801B3C0(struct Item *);
extern void unk_CopyMoves4To8(struct Move *, struct Move *);
extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void SetFriendAreaActionMenuState(u32);
extern void ResetSprites(u8 );
extern void sub_802719C();
@ -39,7 +38,7 @@ extern void sub_80277FC();
extern void sub_80278B4();
extern void sub_8027A40();
extern void sub_8027A5C();
extern void sub_8027D1C();
extern void FriendAreaActionMenu_GotoFallbackState();
extern void sub_8027A78();
extern void sub_8027AE4();
extern void sub_8027B28();
@ -53,7 +52,7 @@ extern void sub_80276A8();
const struct UnkTextStruct2 gUnknown_80DD6EC =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -64,7 +63,7 @@ const struct UnkTextStruct2 gUnknown_80DD6EC =
const struct UnkTextStruct2 gUnknown_80DD704 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x13, 0x00, 0x04, 0x00,
0x09, 0x03,
0x03, 0x00,
@ -74,7 +73,7 @@ const struct UnkTextStruct2 gUnknown_80DD704 =
const struct UnkTextStruct2 gUnknown_80DD71C =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x14, 0x00, 0x04, 0x00,
0x06, 0x03,
0x03, 0x00,
@ -84,7 +83,7 @@ const struct UnkTextStruct2 gUnknown_80DD71C =
const struct UnkTextStruct2 gUnknown_80DD734 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x16, 0x00, 0x04, 0x00,
0x06, 0x03,
0x03, 0x00,
@ -94,7 +93,7 @@ const struct UnkTextStruct2 gUnknown_80DD734 =
const struct UnkTextStruct2 gUnknown_80DD74C =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x11, 0x00,
0x1A, 0x02,
0x02, 0x00,
@ -131,14 +130,14 @@ u32 sub_8027074(void)
gUnknown_203B2BC->unk70 = 0;
gUnknown_203B2BC->unk74 = 0;
gUnknown_203B2BC->unk78 = 0;
SetFriendAreaActionMenuState(0);
SetFriendAreaActionMenuState(FRIEND_AREA_ACTION_MENU_INIT);
return 1;
}
u32 sub_80270A4(void)
{
switch(gUnknown_203B2BC->state) {
case 0:
case FRIEND_AREA_ACTION_MENU_INIT:
SetFriendAreaActionMenuState(1);
break;
case 1:
@ -178,9 +177,9 @@ u32 sub_80270A4(void)
sub_8027D00();
break;
default:
sub_8027D1C();
FriendAreaActionMenu_GotoFallbackState();
break;
case 0x11:
case FRIEND_AREA_ACTION_MENU_EXIT:
return 3;
}
return 0;
@ -236,8 +235,8 @@ void sub_8027274(void)
struct Item slot;
switch(gUnknown_203B2BC->state) {
case 0:
case 0x11:
case FRIEND_AREA_ACTION_MENU_INIT:
case FRIEND_AREA_ACTION_MENU_EXIT:
break;
case 1:
sub_8023868(1,0,0,7);
@ -290,13 +289,13 @@ void sub_8027274(void)
sub_801F808(gUnknown_203B2BC->moveIDs);
break;
case 6:
gUnknown_203B2BC->unk4 = 2;
gUnknown_203B2BC->fallbackState = 2;
// The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was
// returned to the Toolbox
sub_80141B4(gUnknown_80DD8A0,0,0,0x101);
break;
case 7:
gUnknown_203B2BC->unk4 = 2;
gUnknown_203B2BC->fallbackState = 2;
// The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was
// returned to storage
sub_80141B4(gUnknown_80DD8D0,0,0,0x101);

View File

@ -6,6 +6,7 @@
#include "team_inventory.h"
#include "pokemon.h"
#include "friend_area_action_menu.h"
#include "menu_input.h"
extern struct unkStruct_203B2BC *gUnknown_203B2BC;
extern struct TeamInventory *gTeamInventory_203B460;
@ -16,8 +17,6 @@ extern u32 sub_801EF38(u8 r0);
extern void sub_801F214();
extern void SetFriendAreaActionMenuState(u32);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void PlaySound(u32);
extern void nullsub_104();
extern void sub_801A928();
@ -81,7 +80,7 @@ void sub_80277FC(void)
gUnknown_203B2BC->targetPoke = sub_8023B44();
pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
gUnknown_203B2BC->unk18 = pokeStruct;
gUnknown_203B2BC->unk1C = pokeStruct->isTeamLeader;
gUnknown_203B2BC->isTeamLeader = pokeStruct->isTeamLeader;
PeekPokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->item2);
SetFriendAreaActionMenuState(3);
break;
@ -89,13 +88,13 @@ void sub_80277FC(void)
gUnknown_203B2BC->targetPoke = sub_8023B44();
pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2BC->targetPoke];
gUnknown_203B2BC->unk18 = pokeStruct;
gUnknown_203B2BC->unk1C = pokeStruct->isTeamLeader;
gUnknown_203B2BC->isTeamLeader = pokeStruct->isTeamLeader;
PeekPokemonItem(gUnknown_203B2BC->targetPoke,&gUnknown_203B2BC->item2);
SetFriendAreaActionMenuState(4);
break;
case 2:
sub_8023C60();
SetFriendAreaActionMenuState(0x11);
SetFriendAreaActionMenuState(FRIEND_AREA_ACTION_MENU_EXIT);
break;
}
}
@ -105,14 +104,14 @@ void sub_80278B4(void)
struct PokemonStruct *playerStruct;
struct PokemonStruct *pokeStruct1;
struct PokemonStruct *pokeStruct2;
int local_c;
int menuAction;
local_c = 0;
menuAction = 0;
sub_8023A94(0);
if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == 0) && (sub_8013114(&gUnknown_203B2BC->unk7C,&local_c), local_c != 1)) {
gUnknown_203B2BC->unk70 = local_c;
if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == 0) && (sub_8013114(&gUnknown_203B2BC->unk7C,&menuAction), menuAction != 1)) {
gUnknown_203B2BC->unk70 = menuAction;
}
switch(local_c) {
switch(menuAction) {
case 6:
if (sub_808D750(gUnknown_203B2BC->targetPoke)) {
#ifdef NONMATCHING
@ -242,10 +241,10 @@ void sub_8027A78(void)
void sub_8027AE4(void)
{
s32 local_8;
s32 menuAction;
if (sub_80144A4(&local_8) == 0) {
switch(local_8)
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction)
{
case 1:
case 3:
@ -368,12 +367,12 @@ void sub_8027D00(void)
}
}
void sub_8027D1C(void)
void FriendAreaActionMenu_GotoFallbackState(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
SetFriendAreaActionMenuState(gUnknown_203B2BC->unk4);
SetFriendAreaActionMenuState(gUnknown_203B2BC->fallbackState);
}
}

View File

@ -1,34 +1,35 @@
#include "global.h"
#include "constants/dungeon.h"
#include "item.h"
#include "menu.h"
#include "pokemon.h"
#include "text.h"
#include "team_inventory.h"
#include "constants/move.h"
#include "code_800D090.h"
#include "menu_input.h"
struct unkStruct_203B2B8
{
// size: 0x280
u32 state;
u32 unk4;
u32 fallbackState;
u8 unk8;
/* 0xA */ s16 pokeSpecies;
u32 unkC;
u32 id;
/* 0x10 */ struct BulkItem item1;
/* 0x14 */ struct BulkItem item2;
struct PokemonStruct *unk18;
u8 fill1C[0x4];
u32 unk20;
bool8 isTeamLeader;
u32 moveIndex;
/* 0x24 */ u16 moveID;
struct Move unk28[4];
u8 fill48[0x70 - 0x48];
struct Move moves[8];
u16 moveIDs[4]; // some list of move IDs
u32 unk70;
u32 unk74;
u32 unk78;
u32 unk7C;
u8 fill80[0xCC - 0x80];
u32 unkCC;
struct MenuStruct unk7C;
struct MenuStruct unkCC;
};
extern struct unkStruct_203B2B8 *gUnknown_203B2B8;
extern u8 gAvailablePokemonNames[0x58];
@ -69,8 +70,6 @@ extern void nullsub_104(void);
extern void sub_801A928(void);
extern void sub_8099690(u32);
extern u32 sub_801A6E8(u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_801A8AC(void);
extern u32 sub_8022860(void);
@ -268,15 +267,15 @@ void sub_8026B64(void)
switch(sub_801A6E8(1))
{
case 3:
gUnknown_203B2B8->unkC = sub_801A8AC();
gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].id;
gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].quantity;
gUnknown_203B2B8->id = sub_801A8AC();
gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id;
gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity;
sub_8026074(0x14);
break;
case 4:
gUnknown_203B2B8->unkC = sub_801A8AC();
gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].id;
gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->unkC].quantity;
gUnknown_203B2B8->id = sub_801A8AC();
gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id;
gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity;
sub_8099690(0);
sub_8026074(0x15);
break;
@ -307,7 +306,7 @@ void sub_8026C14(void)
case 0xb:
nextState = 0xF;
PlaySound(0x14d);
ShiftItemsDownFrom(gUnknown_203B2B8->unkC);
ShiftItemsDownFrom(gUnknown_203B2B8->id);
FillInventoryGaps();
if (gUnknown_203B2B8->item2.id != ITEM_NOTHING) {
AddHeldItemToInventory(&gUnknown_203B2B8->item2);
@ -359,8 +358,8 @@ void sub_8026D0C(void)
break;
case 3:
case 4:
gUnknown_203B2B8->unk20 = sub_801F194();
gUnknown_203B2B8->moveID = gUnknown_203B2B8->unk28[gUnknown_203B2B8->unk20].id;
gUnknown_203B2B8->moveIndex = sub_801F194();
gUnknown_203B2B8->moveID = gUnknown_203B2B8->moves[gUnknown_203B2B8->moveIndex].id;
sub_8026074(0x18);
break;
case 2:
@ -390,7 +389,7 @@ void sub_8026D88(void)
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_8026074(gUnknown_203B2B8->unk4);
sub_8026074(gUnknown_203B2B8->fallbackState);
}
}
@ -423,7 +422,7 @@ void sub_8026E08(u32 r0)
sub_808D930(buffer, gUnknown_203B2B8->unk18->speciesNum);
sprintfStatic(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames);
x = sub_8008ED0(buffer1);
xxx_call_draw_string(((gUnknown_80DD370.unk0c << 3) - x) / 2, 3, buffer1, r0, 0);
xxx_call_draw_string(((gUnknown_80DD370.unkC << 3) - x) / 2, 3, buffer1, r0, 0);
sub_80073E0(r0);
}

View File

@ -6,6 +6,7 @@
#include "item.h"
#include "pokemon.h"
#include "moves.h"
#include "menu_input.h"
// there might be more overlap with unkStruct_203B2BC
@ -19,10 +20,10 @@ struct unkStruct_203B2B4
u32 unk8;
u8 unkC;
u8 unkD;
s16 unkE;
s16 species;
u32 unk10;
struct BulkItem unk14;
u32 unk18;
struct BulkItem unk18;
/* 0x1C */ struct PokemonStruct *pokeStruct;
u32 moveIndex; // some sort of move index
u16 moveID;
@ -30,9 +31,7 @@ struct unkStruct_203B2B4
u16 moveIDs[4]; // some list of move IDs
u32 unk70;
s32 unk74;
u32 unk78;
u32 unk7C;
u8 fill7C[0xC8 - 0x80];
struct MenuStruct unk78;
struct MenuItem unkC8[4];
u8 fillE8[0x108 - 0xE8];
s16 unk108[8];
@ -70,7 +69,6 @@ extern void sub_8025E24(void);
extern void sub_8025E44(void);
extern void sub_802544C(void);
extern void sub_8025518(void);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_8025728(void);
extern void sub_802591C(void);
extern u32 sub_801B3C0(struct Item *param_1);
@ -80,19 +78,17 @@ extern void sub_801A5D8(u32,u32, u32, u32);
extern void sub_801A8D0(u32);
extern void sub_801A9E0(void);
extern void PlaySound(u32);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, s16 *, u32, u32);
extern void sub_8024458(s16, u32);
extern void sub_801BEEC(s16);
extern void sub_8023B7C(u32);
extern void sub_8023DA4(void);
extern void unk_CopyMoves4To8(struct Move *, struct Move *); // TODO convert arg 0 to PokemonMove struct *
extern void unk_CopyMoves4To8(struct Move *, struct Move *);
extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32);
extern void GetLinkedSequence(u32, struct Move *, u16*);
extern void sub_801F808(u16 *);
u32 sub_801602C(u32 r0, u8 *name);
extern void sub_8025E68(u32 , u32 *);
extern void sub_8025E68(u32 , struct BulkItem *);
bool8 sub_80252F0(s32 param_1)
{
@ -246,10 +242,10 @@ void sub_8025518(void)
sub_8012D60(&gUnknown_203B2B4->unk78,gUnknown_203B2B4->unkC8,0,gUnknown_203B2B4->unk108,gUnknown_203B2B4->unk70,2);
break;
case 4:
sub_8024458(gUnknown_203B2B4->unkE,2);
sub_8024458(gUnknown_203B2B4->species,2);
break;
case 5:
sub_801BEEC(gUnknown_203B2B4->unkE);
sub_801BEEC(gUnknown_203B2B4->species);
break;
case 0xb:
sub_801A5D8(1,0,0,10);
@ -284,7 +280,7 @@ void sub_8025518(void)
break;
case 0xf:
unk_CopyMoves4To8(gUnknown_203B2B4->moves,gUnknown_203B2B4->pokeStruct->moves);
sub_801EE10(3,gUnknown_203B2B4->unkE,gUnknown_203B2B4->moves,0,0,0);
sub_801EE10(3,gUnknown_203B2B4->species,gUnknown_203B2B4->moves,0,0,0);
break;
case 0x10:
sub_801F1B0(1,0);

View File

@ -12,6 +12,7 @@
#include "save.h"
#include "menu.h"
#include "rescue_password_menu.h"
#include "menu_input.h"
extern struct TeamInventory *gTeamInventory_203B460;
@ -45,10 +46,7 @@ extern u32 sub_80154F0();
extern void sub_80155F0();
extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32);
extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8(void);
extern void sub_801CB5C(u32);
@ -56,7 +54,7 @@ extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
extern void sub_801B3C0(struct Item *);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern void sub_8035CF4(u32 *, u32, u32);
extern void sub_8035CF4(struct MenuStruct *, u32, u32);
extern u8 sub_801CB24(void);
extern u32 sub_8030DA0(void);
extern void sub_8030DE4(void);
@ -232,7 +230,6 @@ extern void sub_8023868(u32, u32, u32, u32);
extern u32 sub_801D008(void);
extern void sub_8023DA4(void);
extern void sub_8023C60(void);
extern void sub_8035CF4(u32 *, u32, u32);
extern s32 sub_8037B28(u32);
extern void sub_803092C(void);
extern void sub_801CCD8(void);
@ -240,7 +237,6 @@ extern void sub_80151C0(u32, u8 *);
extern void sub_801C8C4(u32, u32, s32 * , u32);
extern void xxx_call_start_bg_music(void);
extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_802F204(struct unkStruct_802F204 *, u32);
extern void nullsub_23(u32);
extern s32 sub_8037D64(u32, void *, void *);
@ -828,8 +824,8 @@ void sub_8034074(void)
menuAction = -1;
sub_8030768(0);
if(!sub_8012FD8(&gUnknown_203B33C->unk30C))
sub_8013114(&gUnknown_203B33C->unk30C, &menuAction);
if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3]))
sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction);
switch(menuAction)
{
case 9:
@ -865,7 +861,7 @@ void sub_8034130(void)
sub_803092C();
if(gUnknown_203B33C->fallbackState == 0x7E)
{
sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1);
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
SetFriendRescueMenuState(0x1E);
}
else
@ -911,8 +907,8 @@ void sub_8034254(void)
menuAction = -1;
sub_8023A94(0);
if(!sub_8012FD8(&gUnknown_203B33C->unk30C))
sub_8013114(&gUnknown_203B33C->unk30C, &menuAction);
if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3]))
sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction);
switch(menuAction)
{
case 9:
@ -951,7 +947,7 @@ void sub_8034310(void)
sub_8023B7C(1);
if(gUnknown_203B33C->fallbackState == 0x7E)
{
sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1);
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
SetFriendRescueMenuState(0x27);
}
else
@ -1106,8 +1102,8 @@ void sub_8034590(void)
menuAction = -1;
sub_8030768(0);
if(!sub_8012FD8(&gUnknown_203B33C->unk30C))
sub_8013114(&gUnknown_203B33C->unk30C, &menuAction);
if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3]))
sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction);
switch(menuAction)
{
case 9:
@ -1143,7 +1139,7 @@ void sub_803464C(void)
sub_803092C();
if(gUnknown_203B33C->fallbackState == 0x7E)
{
sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1);
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
SetFriendRescueMenuState(0x33);
}
else
@ -1431,8 +1427,8 @@ void sub_8034A70(void)
menuAction = -1;
sub_8030768(0);
if(!sub_8012FD8(&gUnknown_203B33C->unk30C))
sub_8013114(&gUnknown_203B33C->unk30C, &menuAction);
if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3]))
sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction);
switch(menuAction)
{
case 9:
@ -1468,7 +1464,7 @@ void sub_8034B2C(void)
sub_803092C();
if(gUnknown_203B33C->fallbackState == 0x7E)
{
sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1);
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
SetFriendRescueMenuState(0x5D);
}
else
@ -1518,7 +1514,7 @@ void sub_8034C38(void)
sub_801CB5C(1);
if(gUnknown_203B33C->fallbackState == 0x7E)
{
sub_8035CF4(&gUnknown_203B33C->unk21C, 3, 1);
sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1);
SetFriendRescueMenuState(0x60);
}
else
@ -1536,8 +1532,8 @@ void sub_8034C98(void)
menuAction = -1;
sub_801CA08(0);
if(!sub_8012FD8(&gUnknown_203B33C->unk30C))
sub_8013114(&gUnknown_203B33C->unk30C, &menuAction);
if(!sub_8012FD8(&gUnknown_203B33C->unk21C[3]))
sub_8013114(&gUnknown_203B33C->unk21C[3], &menuAction);
switch(menuAction)
{
case 9:

View File

@ -6,6 +6,7 @@
#include "input.h"
#include "menu.h"
#include "gulpin_shop.h"
#include "menu_input.h"
extern struct unkStruct_203B26C *gUnknown_203B26C;
extern const struct UnkTextStruct2 gUnknown_80DC11C;
@ -18,7 +19,6 @@ extern void sub_801EDA4();
extern void sub_801EDC0();
extern void sub_801E980();
extern void sub_801EA28();
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_801EBC4();
u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct Move *param_3)
@ -31,7 +31,7 @@ u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct Move *param_3
gUnknown_203B26C = MemoryAlloc(sizeof(struct unkStruct_203B26C),8);
gUnknown_203B26C->unk0 = param_1;
gUnknown_203B26C->speciesNum = species_32;
gUnknown_203B26C->unk10 = param_3;
gUnknown_203B26C->moves = param_3;
gUnknown_203B26C->unk1C = param_3[4].id;
if (param_1 == 0) {
@ -81,9 +81,9 @@ u32 sub_801E8C0(void)
return 0;
}
u8 sub_801E930(void)
bool8 GulpinIsNextMoveLinked(void)
{
return gUnknown_203B26C->unkE;
return gUnknown_203B26C->isNextMoveLinked;
}
void sub_801E93C(void)

View File

@ -6,6 +6,7 @@
#include "input.h"
#include "menu.h"
#include "gulpin_shop.h"
#include "menu_input.h"
extern struct unkStruct_203B26C *gUnknown_203B26C;
extern void UpdateGulpinShopState(u32);
@ -14,8 +15,6 @@ extern void sub_801F214(void);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801F890(void);
extern void sub_801F8D0(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern u8 IsNextMoveLinked(u32, struct Move *);
extern void PlaySound(u32);
extern void sub_801EF38(u32);
@ -36,7 +35,7 @@ void sub_801ED28(void)
break;
case 2:
PlaySound(0x133);
gUnknown_203B26C->unkE = IsNextMoveLinked(gUnknown_203B26C->unk20, gUnknown_203B26C->unk10);
gUnknown_203B26C->isNextMoveLinked = IsNextMoveLinked(gUnknown_203B26C->unk20, gUnknown_203B26C->moves);
UpdateGulpinShopState(4);
break;
case 3:
@ -67,7 +66,7 @@ void sub_801EDC0(void)
{
case 4:
sub_801F214();
RemoveLinkSequenceFromMoves8(gUnknown_203B26C->unk10, gUnknown_203B26C->unk20);
RemoveLinkSequenceFromMoves8(gUnknown_203B26C->moves, gUnknown_203B26C->unk20);
gUnknown_203B26C->state = 5;
break;
case 1:

View File

@ -4,6 +4,7 @@
#include "input.h"
#include "item.h"
#include "kangaskhan_storage.h"
#include "menu_input.h"
extern struct unkStruct_203B208 *gUnknown_203B208;
@ -12,7 +13,6 @@ extern u8 gUnknown_80DB7A8;
extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32);
extern void sub_801CCD8();
extern void sub_801AD34(u32);
extern void sub_8012EA4(u32 *, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8013C68(u32 *);

View File

@ -7,6 +7,7 @@
#include "team_inventory.h"
#include "input.h"
#include "kangaskhan_storage.h"
#include "menu_input.h"
extern struct unkStruct_203B208 *gUnknown_203B208;
@ -30,8 +31,6 @@ extern s32 sub_80144A4(s32 *);
extern void sub_801B450();
extern u32 sub_801B410(void);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void sub_801CBB8();
extern bool8 sub_801ADA0(u32);
@ -47,13 +46,11 @@ extern u32 sub_801A6E8(u32);
extern u32 sub_801AEA8(void);
extern u32 sub_801A8AC(void);
extern void sub_801A928(void);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_80182E4(void);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8013C68(u32 *);
extern void sub_80073E0(u32);
extern void sub_8012EA4(u32 *, u32);
extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32);
extern void sub_801A9E0();
@ -65,7 +62,6 @@ extern void sub_8013AA0(u32 *);
extern void sub_801B3C0(struct Item *);
extern void sub_801A5D8(u32, u32, u32, u32);
extern void sub_801C8C4(u32, u32, u32, u32);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
extern void sub_801CB5C(u32);
extern void sub_801A8D0(u32);
extern u32 sub_801CFE0(u8);

View File

@ -2,6 +2,7 @@
#include "item.h"
#include "kangaskhan_storage.h"
#include "team_inventory.h"
#include "menu_input.h"
extern struct unkStruct_203B20C *gUnknown_203B20C;
@ -11,11 +12,8 @@ extern void sub_8017F10(u32);
extern u8 sub_801CF14(u32);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void sub_801CBB8(void);
extern void sub_8017F10(u32);
extern void sub_8012EA4(u32 *, u32);
extern u8 sub_801ADA0(s32);
extern void sub_801A928(void);

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/input.h"
#include "file_system.h"
#include "memory.h"
#include "pokemon.h"
@ -7,6 +8,7 @@
#include "kecleon_items.h"
#include "team_inventory.h"
#include "code_800D090.h"
#include "menu_input.h"
extern struct unkStruct_203B210 *gUnknown_203B210;
extern u16 gUnknown_203B218;
@ -34,8 +36,6 @@ extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern void sub_8099690(u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern u32 sub_8019EDC(u8);
extern u32 sub_801A2A8(u8);
extern s32 sub_801A8AC(void);
@ -47,12 +47,10 @@ extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern s32 sub_8013800(void *, u32);
extern void xxx_call_draw_string(s32 x, s32, u8 *, u32, u32);
extern void sub_8012BC4(s32, s32, s32, s32, s32, s32);
extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
extern s32 sub_801AED0(s32);
void sub_8007B7C(s32, s32, s32, s32, s32);
extern void sub_801AE84(void);
extern void sub_8012D08(void *, u32);
extern void sub_801A998(void);
extern void sub_801A9E0(void);
extern void Kecleon_SortItems(void);
@ -527,10 +525,10 @@ u32 sub_8019EDC(u8 r0)
{
switch(GetKeyPress(gUnknown_203B214))
{
case 2:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case 1:
case INPUT_A_BUTTON:
item = GetKecleonShopItem(sub_8019FB0());
slot.id = item->id;
slot.quantity = item->quantity;
@ -543,7 +541,7 @@ u32 sub_8019EDC(u8 r0)
PlayMenuSoundEffect(0);
}
return 3;
case 4:
case INPUT_START_BUTTON:
PlayMenuSoundEffect(4);
return 4;
default:
@ -737,13 +735,12 @@ u32 sub_801A2A8(u8 r0)
{
switch(GetKeyPress(gUnknown_203B21C))
{
case 2:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case 1:
case INPUT_A_BUTTON:
item = GetKecleonWareItem(sub_801A37C());
// NOTE: needs seperate vars to match
slot.id = item->id;
slot.quantity = item->quantity;
@ -756,7 +753,7 @@ u32 sub_801A2A8(u8 r0)
PlayMenuSoundEffect(0);
}
return 3;
case 4:
case INPUT_START_BUTTON:
PlayMenuSoundEffect(4);
return 4;
default:
@ -958,10 +955,10 @@ u32 sub_801A6E8(u8 param_1)
return 0;
}
switch(GetKeyPress(&gUnknown_203B224->unk54)) {
case 2:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case 1:
case INPUT_A_BUTTON:
switch(gUnknown_203B224->unk0) {
case 0:
case 1:
@ -989,11 +986,11 @@ u32 sub_801A6E8(u8 param_1)
break;
}
return 3;
case 4:
case INPUT_START_BUTTON:
PlayMenuSoundEffect(4);
return 4;
case 5:
case 6:
case INPUT_L_BUTTON:
case INPUT_R_BUTTON:
if (gUnknown_203B224->unk0 != 3) goto _0801A87C;
index = sub_801A8AC();
if ((gUnknown_203B224->unk4[index] != 0) || (sub_801ADA0(index) != 0)) {
@ -1008,7 +1005,7 @@ u32 sub_801A6E8(u8 param_1)
PlayMenuSoundEffect(2);
goto _0801A87C;
}
case 3:
case INPUT_SELECT_BUTTON:
if (gUnknown_203B224->unk0 != 2) {
PlayMenuSoundEffect(5);
Kecleon_SortItems();
@ -1169,7 +1166,7 @@ void sub_801A9E0(void)
break;
}
if ((sub_801AED0(teamItemIndex) & 1) != 0) {
sub_8007B7C(gUnknown_203B224->unk88,8,sub_8013800(&gUnknown_203B224->unk54,r7),(gUnknown_203B224->unk8C->unk0c - 2) * 8,10);
sub_8007B7C(gUnknown_203B224->unk88,8,sub_8013800(&gUnknown_203B224->unk54,r7),(gUnknown_203B224->unk8C->unkC - 2) * 8,10);
}
}
sub_80073E0(gUnknown_203B224->unk88);

View File

@ -11,6 +11,7 @@
#include "save.h"
#include "code_800D090.h"
#include "code_8094F88.h"
#include "menu_input.h"
extern const struct FileArchive gTitleMenuFileArchive;
@ -18,12 +19,7 @@ struct LoadScreen
{
// size: 0x27c
u32 currMenu;
u32 unk4;
u8 fill8[0x54 - 8];
u32 unk54;
u8 fill58[0xA4 - 0x58];
u32 unkA4;
u8 fillA8[0x144 - 0xA8];
struct MenuStruct unk4[4];
struct UnkTextStruct2 unk144[4];
/* 0x1A4 */ u8 formattedTeamName[0x24];
/* 0x1C8 */ u8 formattedPlayerName[0x24];
@ -44,10 +40,8 @@ u8 IsQuickSave(void);
void DrawLoadScreenText(void);
void sub_80397B4(void);
extern void sub_8035CF4(u32 *, u32, u32);
extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_8035CF4(struct MenuStruct *, u32, u32);
extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern void sub_80920D8(u8 *);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
@ -71,7 +65,7 @@ extern void sub_8007E20(s32, s32, s32, u32, u32, s32, u32);
const struct UnkTextStruct2 gUnknown_80E75F8 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -80,7 +74,7 @@ const struct UnkTextStruct2 gUnknown_80E75F8 = {
const struct UnkTextStruct2 gUnknown_80E7610 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x1A, 0x0B,
0x0B, 0x00,
@ -91,7 +85,7 @@ const u8 gUnkData_80E7628[] = {0x20, 0x00, 0x00, 0x00};
const struct UnkTextStruct2 gUnknown_80E762C = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x0F, 0x00,
0x13, 0x03,
0x03, 0x00,
@ -136,7 +130,7 @@ const struct MenuItem gDeleteSaveConfirmMenuItems[3] =
const struct UnkTextStruct2 gUnknown_80E7784 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x17, 0x00, 0x0F, 0x00,
0x05, 0x03,
0x03, 0x00,
@ -170,40 +164,40 @@ ALIGNED(4) const char load_screen_fill[] = "pksdir0";
void CreateLoadScreen(u32 currMenu)
{
int iVar8;
int index;
if (gLoadScreen == NULL) {
gLoadScreen = MemoryAlloc(sizeof(struct LoadScreen),8);
MemoryFill8((u8 *)gLoadScreen,0,sizeof(struct LoadScreen));
}
gLoadScreen->currMenu = currMenu;
for(iVar8 = 0; iVar8 < 4; iVar8++){
gLoadScreen->unk144[iVar8] = gUnknown_80E75F8;
for(index = 0; index < 4; index++){
gLoadScreen->unk144[index] = gUnknown_80E75F8;
}
ResetUnusedInputStruct();
sub_800641C(gLoadScreen->unk144,1,1);
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,0,6,0);
switch(gLoadScreen->currMenu){
case MENU_CONTINUE:
if (IsQuickSave())
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,0,6,0);
else
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,0,6,0);
break;
case MENU_AWAITING_RESCUE:
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,0,6,0);
break;
case MENU_DELETE_SAVE_PROMPT:
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,0,6,0);
break;
case MENU_DELETE_SAVE_CONFIRM:
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,0,6,0);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,0,6,0);
break;
}
SetMenuItems(&gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,1,2,0);
sub_8035CF4(&gLoadScreen->unk4,0,0);
sub_8035CF4(&gLoadScreen->unk4,1,0);
sub_8035CF4(&gLoadScreen->unk4,2,1);
SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,1,2,0);
sub_8035CF4(gLoadScreen->unk4,0,0);
sub_8035CF4(gLoadScreen->unk4,1,0);
sub_8035CF4(gLoadScreen->unk4,2,1);
DrawLoadScreenText();
}
@ -225,9 +219,9 @@ u32 UpdateLoadScreenMenu(void)
nextMenu = MENU_NO_SCREEN_CHANGE;
menuAction = 4;
sub_8012FD8(&gLoadScreen->unk54);
if (sub_8012FD8(&gLoadScreen->unkA4) == '\0') {
sub_8013114(&gLoadScreen->unkA4,&menuAction);
sub_8012FD8(&gLoadScreen->unk4[1]);
if (sub_8012FD8(&gLoadScreen->unk4[2]) == '\0') {
sub_8013114(&gLoadScreen->unk4[2],&menuAction);
}
switch(menuAction)

View File

@ -9,6 +9,7 @@
#include "random.h"
#include "text.h"
#include "team_inventory.h"
#include "menu_input.h"
struct unkStruct_203B2B0
{
@ -32,8 +33,8 @@ struct unkStruct_203B2B0
u32 unk30;
struct MenuItem unk34[8];
u16 unk74[0x8];
u32 unk84;
u8 fill88[0x104 - 0x88];
struct MenuStruct unk84;
u8 fillD4[0x104 - 0xD4];
struct OpenedFile *unk104;
u8 *unk108;
u16 unk10C;
@ -111,7 +112,6 @@ extern void nullsub_104();
void sub_8024DBC(void);
void sub_8024E30(void);
void sub_801AEE4(u32, u32);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
void sub_808F734(struct PokemonStruct *, s16);
void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size);
u32 sub_801602C(u32 r0, u8 *name);
@ -121,8 +121,6 @@ extern s32 sub_801A8AC(void);
extern void sub_8099690(u32);
extern void sub_801A928(void);
extern void PlayMenuSoundEffect(u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern u32 sub_8016080(void);

View File

@ -5,6 +5,7 @@
#include "input.h"
#include "mailbox.h"
#include "wonder_mail.h"
#include "menu_input.h"
extern void HandleMailboxMenu(void);
@ -23,7 +24,7 @@ extern void sub_802E1AC(void);
const struct UnkTextStruct2 gUnknown_80E0284 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -33,7 +34,7 @@ const struct UnkTextStruct2 gUnknown_80E0284 =
const struct UnkTextStruct2 gUnknown_80E029C =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x03, 0x00, 0x03, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -43,7 +44,7 @@ const struct UnkTextStruct2 gUnknown_80E029C =
const struct UnkTextStruct2 gUnknown_80E02B4 =
{
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00,
0x04,
0x15, 0x00, 0x06, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -53,7 +54,7 @@ const struct UnkTextStruct2 gUnknown_80E02B4 =
const struct UnkTextStruct2 gUnknown_80E02CC =
{
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00,
0x04,
0x15, 0x00, 0x0f, 0x00,
0x06, 0x03,
0x03, 0x00,
@ -71,11 +72,9 @@ static const u8 mailbox_fill[] = "pksdir0";
extern struct unkStruct_203B304 *gUnknown_203B304;
extern void sub_802E088(u32);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void CreateMailboxMenu(void);
extern void CreateMailActionMenu(void);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
extern void sub_802BD14(u32, u32, u32);
extern void sub_802BE94(u32);
extern void CreateMailMenu(void);
@ -172,7 +171,7 @@ void sub_802E0A0(void)
CreateMailActionMenu();
gUnknown_203B304->unk10C[2] = gUnknown_80E02B4;
sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
gUnknown_203B304->unk10C[2].unk0c = 6;
gUnknown_203B304->unk10C[2].unkC = 6;
gUnknown_203B304->unk10C[3] = gUnknown_80E02CC;
break;
default:

View File

@ -5,6 +5,7 @@
#include "input.h"
#include "mailbox.h"
#include "wonder_mail.h"
#include "menu_input.h"
extern struct unkStruct_203B304 *gUnknown_203B304;
@ -12,7 +13,6 @@ extern u8 gMailAccepted[];
extern u8 gUnknown_80E0324[];
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
@ -27,8 +27,6 @@ extern u32 sub_802DEE0(void);
extern void sub_802DF24(void);
extern struct WonderMail *GetMailboxSlotInfo(u8);
extern u8 HasNoMailinMailbox(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_802BDEC(u32);
extern void sub_8096A78(struct WonderMail *);
extern void sub_8096C80(void);
@ -42,7 +40,6 @@ extern void sub_802BEDC(void);
extern u8 sub_802BE74(void);
extern u8 HasNoAcceptedJobs(void);
extern u8 HasNoPKMNNews(void);
extern void sub_8012EA4(u32 *, u32);
void HandleMailboxMenu(void)
{

View File

@ -2,6 +2,7 @@
#include "text.h"
#include "menu.h"
#include "input.h"
#include "menu_input.h"
#include "adventure_log.h"
#include "debug_menu.h"
@ -30,30 +31,11 @@
// Deletes the Save
struct unkStruct_Menu
{
// size 0x50;
u8 fil0[0x4C];
u8 unk4C;
u8 fill4D[0x50 - 0x4D];
};
struct unkStruct_203B34C
{
// size: 0x1A8
u32 unk0;
u32 unk4;
struct MenuItem *unk8; // Array of menu choices??
u8 fillC[0x30 - 0xC];
s16 menuIndex;
u8 fill32[0x54 - 0x32];
u32 unk54;
u8 fill58[0xA4 - 0x58];
u32 unkA4;
u32 unkA8;
u8 fillAC[0x144 - 0xAC];
struct MenuStruct unk4[4];
struct UnkTextStruct2 unk144[4];
/* 0x1A4 */ u32 currMenuChoice;
};
@ -76,11 +58,7 @@ extern void sub_80370D4(void);
extern void CleanWonderMailMenu(void);
extern void sub_80383A8(void);
extern void CleanSaveMenu(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u8 sub_803D0D8();
extern void sub_8012D60(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32);
extern void sub_8012E04(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32);
void CleanMainMenu(void);
void DrawMainMenu(void);
@ -113,7 +91,7 @@ static const u8 sUnknown_80E6070[];
const struct UnkTextStruct2 gUnknown_80E59A8 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -124,7 +102,7 @@ static const char main_menu_fill[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80E59C8 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -133,7 +111,7 @@ const struct UnkTextStruct2 gUnknown_80E59C8 = {
const struct UnkTextStruct2 gUnknown_80E59E0 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x0A, 0x03,
0x03, 0x00,
@ -149,7 +127,7 @@ const struct MenuItem gUnknown_80E59F8[] =
const struct UnkTextStruct2 gUnknown_80E5A29 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x0A, 0x02,
0x02, 0x00,
@ -164,7 +142,7 @@ const struct MenuItem gUnknown_80E5A44[] =
const struct UnkTextStruct2 gUnknown_80E5A60 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x0A, 0x08,
0x08, 0x00,
@ -173,7 +151,7 @@ const struct UnkTextStruct2 gUnknown_80E5A60 = {
const struct UnkTextStruct2 gUnknown_80E5A78 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x0B, 0x09,
0x09, 0x00,
@ -203,7 +181,7 @@ const struct MenuItem gUnknown_80E5AFC[] =
const struct UnkTextStruct2 gUnknown_80E5B34 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x0A, 0x08,
0x08, 0x00,
@ -233,7 +211,7 @@ const struct MenuItem gUnknown_80E5B8C[] =
const struct UnkTextStruct2 gUnknown_80E5BC4 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x0A, 0x08,
0x08, 0x00,
@ -263,7 +241,7 @@ const struct MenuItem gUnknown_80E5C18[] =
const struct UnkTextStruct2 gUnknown_80E5C50 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x02, 0x00,
0x0A, 0x03,
0x03, 0x00,
@ -286,7 +264,7 @@ const struct MenuItem gUnknown_80E5C9C[] =
const struct UnkTextStruct2 gUnknown_80E5CB4 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x02, 0x00, 0x0F, 0x00,
0x1A, 0x03,
0x03, 0x00,
@ -645,18 +623,18 @@ void sub_8035C1C(void)
}
void
SetMenuItems(struct unkStruct_Menu *param_1, struct UnkTextStruct2 *unkData, int param_3, const struct UnkTextStruct2 *param_4, const struct MenuItem *param_5, char param_6 ,u32 param_7, u32 unused_8)
SetMenuItems(struct MenuStruct *param_1, struct UnkTextStruct2 *unkData, s32 index, const struct UnkTextStruct2 *param_4, const struct MenuItem *menuItems, u8 param_6 ,u32 param_7, u32 unused_8)
{
unkData[param_3] = *param_4;
unkData[index] = *param_4;
ResetUnusedInputStruct();
sub_800641C(unkData,1,1);
if (param_6 != '\0') {
sub_8012D60(&param_1[param_3],param_5,0,0,param_7,param_3);
if (param_6 != 0) {
sub_8012D60(&param_1[index],menuItems,0,0,param_7,index);
}
else {
sub_8012E04(&param_1[param_3],param_5,0,0,0,param_3);
sub_8012E04(&param_1[index],menuItems,0,0,0,index);
}
param_1[param_3].unk4C = 1;
param_1[index].unk4C = TRUE;
}
void sub_8035CC0(struct UnkTextStruct2 *dataArray, u32 index)
@ -667,27 +645,12 @@ void sub_8035CC0(struct UnkTextStruct2 *dataArray, u32 index)
sub_800641C(dataArray, 1, 1);
}
NAKED
void sub_8035CF4(void * Menu, u32 index, u8 r2)
{
asm_unified("\tpush {lr}\n"
"\tadds r3, r0, 0\n"
"\tlsls r0, r1, 2\n"
"\tadds r0, r1\n"
"\tlsls r0, 4\n"
"\tadds r0, r3\n"
"\tadds r1, r0, 0\n"
"\tadds r1, 0x4C\n"
"\tstrb r2, [r1]\n"
"\tadds r2, r0, 0\n"
"\tadds r2, 0x4D\n"
"\tmovs r1, 0x1\n"
"\tstrb r1, [r2]\n"
"\tsubs r1, 0x2\n"
"\tstr r1, [r0, 0x48]\n"
"\tbl sub_8012EBC\n"
"\tpop {r0}\n"
"\tbx r0");
void sub_8035CF4(struct MenuStruct * Menu, u32 index, bool8 r2)
{
Menu[index].unk4C = r2;
Menu[index].unk4D = 1;
Menu[index].menuAction = -1;
sub_8012EBC(&Menu[index]);
}
void sub_8035D1C(void)
@ -814,10 +777,10 @@ void DrawMainMenu(void)
if(SetMainMenuText())
{
sub_8035CF4(&gUnknown_203B34C->unk4,2,0);
sub_8035CF4(gUnknown_203B34C->unk4,2,0);
}
sub_8035CF4(&gUnknown_203B34C->unk4,0,1);
sub_8035CF4(gUnknown_203B34C->unk4,0,1);
gUnknown_203B34C->unk0 = 1;
}
@ -838,14 +801,14 @@ u32 UpdateMainMenu(void)
switch(gUnknown_203B34C->unk0)
{
case 1:
sub_8012FD8(&gUnknown_203B34C->unkA4);
if(!sub_8012FD8(&gUnknown_203B34C->unk4))
sub_8013114(&gUnknown_203B34C->unk4, &nextMenu);
sub_8012FD8(&gUnknown_203B34C->unk4[2]);
if(!sub_8012FD8(gUnknown_203B34C->unk4))
sub_8013114(gUnknown_203B34C->unk4, &nextMenu);
if(SetMainMenuText())
{
sub_8035CF4(&gUnknown_203B34C->unk4, 0, 1);
sub_8035CF4(&gUnknown_203B34C->unk4, 2, 0);
sub_8035CF4(gUnknown_203B34C->unk4, 0, 1);
sub_8035CF4(gUnknown_203B34C->unk4, 2, 0);
}
switch(nextMenu)
{
@ -856,8 +819,8 @@ u32 UpdateMainMenu(void)
gUnknown_203B34C->unk0 = 1;
nextMenu = MENU_NO_SCREEN_CHANGE;
ResetUnusedInputStruct();
sub_8035CF4(&gUnknown_203B34C->unk4, 0, 1);
sub_8035CF4(&gUnknown_203B34C->unk4, 2, 0);
sub_8035CF4(gUnknown_203B34C->unk4, 0, 1);
sub_8035CF4(gUnknown_203B34C->unk4, 2, 0);
break;
case MENU_TRADE_ITEMS:
sub_8035DA0();
@ -880,8 +843,8 @@ u32 UpdateMainMenu(void)
}
break;
case 0xC:
if(!sub_8012FD8(&gUnknown_203B34C->unk54))
sub_8013114(&gUnknown_203B34C->unk54, &nextMenu);
if(!sub_8012FD8(&gUnknown_203B34C->unk4[1]))
sub_8013114(&gUnknown_203B34C->unk4[1], &nextMenu);
switch(nextMenu)
{
case 0xffdd:
@ -914,11 +877,11 @@ u32 UpdateMainMenu(void)
bool8 SetMainMenuText(void)
{
u32 menuChoice;
struct MenuItem *preload;
const struct MenuItem *preload;
// Have to load the pointer before the index
preload = gUnknown_203B34C->unk8;
menuChoice = preload[gUnknown_203B34C->menuIndex].menuAction; // chosen menu action?
preload = gUnknown_203B34C->unk4[0].menuItems;
menuChoice = preload[gUnknown_203B34C->unk4[0].menuIndex].menuAction; // chosen menu action?
if (gUnknown_203B34C->currMenuChoice == menuChoice) {
return FALSE;
}
@ -929,50 +892,50 @@ bool8 SetMainMenuText(void)
switch(menuChoice) {
case MENU_WIRELESS_COMMS:
// Using wireless communications, you can go on an adventure to unknown worlds.
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E6030,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E6030,0,0,0);
break;
case MENU_WONDER_MAIL:
// Using passwords, you can receive Wonder Mail
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F80,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F80,0,0,0);
break;
case MENU_AWAITING_RESCUE:
// You are awaiting resuce by a friend
// You can give up waiting for rescue
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F1C,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5F1C,0,0,0);
break;
case MENU_NEW_GAME:
// Start an entirely new adventure
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5CCC,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5CCC,0,0,0);
break;
case MENU_CONTINUE:
// Resume your adventure from where you last saved
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DA0,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DA0,0,0,0);
break;
case MENU_DELETE_SAVE_PROMPT:
// This will delete your saved game data.
// Beware! This will delete it forever
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DF0,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5DF0,0,0,0);
break;
case MENU_ADVENTURE_LOG:
// Check your career as an adventurer
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D0C,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D0C,0,0,0);
break;
case MENU_FRIEND_RESCUE:
// Using a Game Link cable or passwords, friends may rescue each other
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5E5C,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5E5C,0,0,0);
break;
case MENU_TRADE_ITEMS:
// Using a Game Link cable you can trade stored items with a friend
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5EBC,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5EBC,0,0,0);
break;
case MENU_DUAL_SLOT:
// Using Dual Slot function, you can receive teams from your friends
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5FCC,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5FCC,0,0,0);
break;
case MENU_DEBUG:
// This is the Debug Mode.
// It won't be in the release version
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D48,0,0,0);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,gUnknown_80E5D48,0,0,0);
break;
default:
break;
@ -986,9 +949,9 @@ void sub_803623C(void)
SetMainMenuItems();
gUnknown_203B34C->currMenuChoice = -1;
if (SetMainMenuText()) {
sub_8035CF4(&gUnknown_203B34C->unk4,2,0);
sub_8035CF4(gUnknown_203B34C->unk4,2,0);
}
sub_8035CF4(&gUnknown_203B34C->unk4,0,1);
sub_8035CF4(gUnknown_203B34C->unk4,0,1);
}
void SetMainMenuItems(void)
@ -1003,7 +966,7 @@ void SetMainMenuItems(void)
// Friend Rescue
// Trade Items
// Wonder Mail
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5C18,1,gUnknown_203B350,1);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5C18,1,gUnknown_203B350,1);
}
else {
// Revive Team
@ -1011,7 +974,7 @@ void SetMainMenuItems(void)
// Adventure Log
// Friend Rescue
// Trade Items
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,gUnknown_80E5BDC,1,gUnknown_203B350,1);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,gUnknown_80E5BDC,1,gUnknown_203B350,1);
}
}
else {
@ -1022,7 +985,7 @@ void SetMainMenuItems(void)
// Friend Rescue
// Trade Items
// Wonder Mail
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5AFC,1,gUnknown_203B350,1);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5AFC,1,gUnknown_203B350,1);
}
else {
// Continue
@ -1030,7 +993,7 @@ void SetMainMenuItems(void)
// Adventure Log
// Friend Rescue
// Trade Items
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,gUnknown_80E5A90,1,gUnknown_203B350,1);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,gUnknown_80E5A90,1,gUnknown_203B350,1);
}
}
}
@ -1042,7 +1005,7 @@ void SetMainMenuItems(void)
// Friend Rescue
// Trade Items
// Wonder Mail
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5B8C,1,gUnknown_203B350,1);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,gUnknown_80E5B8C,1,gUnknown_203B350,1);
}
else {
// Awaiting Rescue
@ -1050,7 +1013,7 @@ void SetMainMenuItems(void)
// Adventure Log
// Friend Rescue
// Trade Items
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,gUnknown_80E5B4C,1,gUnknown_203B350,1);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,gUnknown_80E5B4C,1,gUnknown_203B350,1);
}
}
}
@ -1058,7 +1021,7 @@ void SetMainMenuItems(void)
{
// New Game
// Adventure Log
SetMenuItems((struct unkStruct_Menu *)&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,gUnknown_80E59F8,1,gUnknown_203B350,1);
SetMenuItems(gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,gUnknown_80E59F8,1,gUnknown_203B350,1);
}
}

View File

@ -17,7 +17,7 @@ ALIGNED(4) const u8 gUnknown_80E0754[] = {0x83, 0xC0};
static const u8 makuhita_dojo_fill[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80E0760 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,

View File

@ -1,6 +1,7 @@
#include "global.h"
#include "constants/colors.h"
#include "constants/dungeon.h"
#include "constants/input.h"
#include "code_800D090.h"
#include "dungeon.h"
#include "input.h"
@ -8,6 +9,7 @@
#include "text.h"
#include "menu.h"
#include "makuhita_dojo.h"
#include "menu_input.h"
struct unkStruct_203B31C
{
@ -35,7 +37,7 @@ static const u8 makuhita_dojo_fill[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80E07EC = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -43,7 +45,7 @@ const struct UnkTextStruct2 gUnknown_80E07EC = {
};
const struct UnkTextStruct2 gUnknown_80E0804 = {
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x0E, 0x0E,
0x0E, 0x00,
@ -65,7 +67,6 @@ extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern u8 sub_80A2740(s32 r0);
extern s16 sub_80A2668(u32 r0);
extern s32 sub_8013800(void *, u32);
@ -80,7 +81,6 @@ extern u8 sub_80138B8(void *, u32);
extern void PlayMenuSoundEffect(u32);
extern s32 GetKeyPress(void *);
extern void sub_8013660(void *);
extern void sub_8012D08(void *, u32);
extern void sub_8013818(void *, u32, u32, u32);
extern void sub_803053C(void);
extern u8 sub_80306A4(void);
@ -215,10 +215,10 @@ u32 sub_80303AC(u8 param_1)
}
switch(GetKeyPress(&gUnknown_203B31C->unk30))
{
case 2:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case 1:
case INPUT_A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
default:

View File

@ -54,9 +54,9 @@ error:
heap,size,atb,group);
}
void *MemoryAlloc(s32 size, s32 b)
void *MemoryAlloc(s32 size, s32 group)
{
DoAlloc(&gMainHeapDescriptor, size, b);
DoAlloc(&gMainHeapDescriptor, size, group);
}
void MemoryFree(void *a)

459
src/menu_input.c Normal file
View File

@ -0,0 +1,459 @@
#include "global.h"
#include "constants/colors.h"
#include "constants/input.h"
#include "menu.h"
#include "text.h"
#include "util.h"
#include "code_800D090.h"
#include "menu_input.h"
struct unkChar
{
u32 unk0;
s16 unk4;
s16 unk6;
};
extern struct UnkTextStruct1 gUnknown_2027370[4];
extern u8 gUnknown_80D4828[];
extern void PlayMenuSoundEffect(u32);
extern s32 GetKeyPress(u32 *);
extern u32 sub_80137A8(u32 *);
void MoveMenuCursorUp(u32 *);
void MoveMenuCursorDown(u32 *);
extern void sub_80073B8(u32);
extern s32 sub_8008ED0(const u8 *);
extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
extern s32 sub_8013800(u32 *, s32);
extern void sub_80073E0(u32);
extern void sub_8013660(u32 *);
void AddMenuCursorSprite(void *);
void sub_8012EBC(struct MenuStruct *param_1);
extern void sub_8013134(u32 *, u32, u32);
extern void sub_80137B0(u32 *, u32);
extern s16 sub_8009614(u32, u32);
extern u32 ReturnIntFromChar2(u8);
struct unkChar *GetCharacter(u32);
extern void xxx_call_draw_char(u32, u32, u32, u32, u32);
const u32 gDefaultMenuTextColors[] = { COLOR_WHITE_2, COLOR_RED, COLOR_RED };
void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6)
{
s32 iVar1;
u32 uVar2;
struct unkChar *iVar3;
s32 counter;
s32 *piVar3;
s32 *piVar4;
s32 total_x;
s32 decimal [8];
total_x = 0;
ConvertToDecimal(decimal,n,len);
counter = len - 1;
if (0 < counter) {
piVar3 = &decimal[counter];
if(*piVar3 == 0)
{
do {
*piVar3 = 0xff;
piVar3--;
counter--;
if (counter <= 0) break;
} while(*piVar3 == 0);
}
}
counter = 0;
if ((counter < len) && (decimal[0] != 0xFF)) {
piVar4 = &decimal[0];
do {
iVar1 = *piVar4;
piVar4++;
uVar2 = ReturnIntFromChar2(iVar1 + 0x30);
iVar3 = GetCharacter(uVar2);
total_x += iVar3->unk6;
xxx_call_draw_char(x - total_x,y,uVar2,param_5,param_6);
counter++;
if (counter >= len) {
break;
}
} while (*piVar4 != 0xff);
}
}
void sub_8012C60(u32 x,u32 y,u32 param_3,u32 param_4,u32 param_5)
{
u32 add_x;
struct unkChar *iVar3;
u32 uVar2;
uVar2 = ReturnIntFromChar2(param_3);
iVar3 = GetCharacter(uVar2);
if (iVar3->unk6 < 0xc) {
add_x = ((0xc - iVar3->unk6) / 2);
}
else {
add_x = 0;
}
xxx_call_draw_char(x + add_x,y,uVar2,param_4,param_5);
}
void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2)
{
s16 length;
int r5;
int r6;
int r7;
s32 iVar4;
#ifndef NONMATCHING
register s32 r0 asm("r0");
#else
s32 r0;
#endif
r7 = 0;
r6 = 0;
if (param_2->text != NULL) {
r5 = 0x10000;
r0 = r5;
do {
r0 = r5;
r5 = r5 + 0x10000;
r7 = r0 >> 0x10;
length = sub_8008ED0(param_2->text);
if (length > r6) {
r6 = length;
}
param_2++;
} while (param_2->text != NULL);
}
if (r6 < 0)
iVar4 = r6 + 7;
else
iVar4 = r6;
param_1->unkC = (iVar4 >> 3) + 2;
sub_8012D08(param_1, r7);
}
NAKED
void sub_8012D08(struct UnkTextStruct2 *param_1, s32 param_2)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tadds r4, r0, 0\n"
"\tadds r0, r1, 0\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tlsls r0, 16\n"
"\tasrs r1, r0, 16\n"
"\tldr r0, [r4, 0x4]\n"
"\tcmp r0, 0x6\n"
"\tbne _08012D24\n"
"\tadds r0, r1, 0x2\n"
"\tlsls r0, 16\n"
"\tasrs r1, r0, 16\n"
"_08012D24:\n"
"\tlsls r0, r1, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r4, 0xE]\n"
"\tstrh r0, [r4, 0x10]\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0");
}
// https://decomp.me/scratch/QadfW (200 - 90% matched) - Seth
NAKED
void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tadds r4, r0, 0\n"
"\tadds r0, r1, 0\n"
"\tmovs r1, 0x18\n"
"\tbl sub_8009614\n"
"\tlsls r0, 16\n"
"\tasrs r1, r0, 16\n"
"\tldr r0, [r4, 0x4]\n"
"\tcmp r0, 0x6\n"
"\tbne _08012D50\n"
"\tadds r0, r1, 0x2\n"
"\tlsls r0, 16\n"
"\tasrs r1, r0, 16\n"
"_08012D50:\n"
"\tlsls r0, r1, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r4, 0xE]\n"
"\tstrh r0, [r4, 0x10]\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0");
}
void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5,
s32 index)
{
const u8 *textPtr;
s32 counter;
s32 menuIndex;
s32 iVar1;
counter = 0;
menuIndex = -1;
iVar1 = 0;
param_1->index = index;
param_1->menuItems = menuItems;
param_1->menuTextColorArray = colorArray;
if (colorArray == NULL) {
param_1->menuTextColorArray = gDefaultMenuTextColors;
}
param_1->unkC = param_4;
textPtr = menuItems->text;
if(textPtr)
{
while (textPtr != 0) {
if ((0 <= param_5) && (param_5 == menuItems->menuAction)) {
menuIndex = counter;
}
if (*menuItems->text == '*') {
iVar1 = counter;
}
menuItems++;
counter++;
textPtr = menuItems->text;
}
}
if (menuIndex < 0) {
menuIndex = iVar1;
}
sub_8013134(&param_1->unk14,counter,index);
param_1->menuIndex = menuIndex;
sub_80137B0(&param_1->unk14,0);
param_1->unk4C = TRUE;
param_1->unk4D = TRUE;
param_1->unk4E = TRUE;
param_1->menuAction = -1;
}
void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32 *colorArray,u16 *param_4,s32 param_5,
s32 index)
{
const u8 *textPtr;
s32 counter;
const struct MenuItem *menuItemPtr;
s32 iVar1;
s32 menuIndex;
counter = 0;
menuIndex = -1;
iVar1 = 0;
textPtr = menuItems->text;
if (textPtr) {
menuItemPtr = menuItems;
while (textPtr != NULL) {
if ((0 <= param_5) && (param_5 == menuItemPtr->menuAction)) {
menuIndex = counter;
}
if (*menuItemPtr->text == '*') {
iVar1 = counter;
}
menuItemPtr++;
counter++;
textPtr = menuItemPtr->text;
}
}
if (menuIndex < 0) {
menuIndex = iVar1;
}
sub_8013134(&param_1->unk14,counter,index);
param_1->menuIndex = menuIndex;
sub_80137B0(&param_1->unk14,0);
param_1->index = index;
param_1->menuTextColorArray = colorArray;
if (colorArray == NULL) {
param_1->menuTextColorArray = gDefaultMenuTextColors;
}
param_1->unkC = param_4;
param_1->menuItems = menuItems;
param_1->unk4E = FALSE;
param_1->unk4C = TRUE;
param_1->unk4D = TRUE;
param_1->menuAction = -1;
}
void sub_8012EA4(struct MenuStruct *param_1, bool8 r1)
{
param_1->unk4C = r1;
param_1->unk4D = TRUE;
sub_8012EBC(param_1);
}
void sub_8012EBC(struct MenuStruct *param_1)
{
s32 x;
s32 y;
u32 color;
const u8 *textPtr;
const struct MenuItem *menuItemsPtr;
u16 *_puVar2;
const u32 *colorArray;
s32 counter;
s32 index;
struct UnkTextStruct2 textStack[4];
u8 buffer [256];
struct UnkTextStruct1 *ptr_text;
struct UnkTextStruct2 *ptr_text2;
if (param_1->unk4D) {
sub_80073B8(param_1->index);
index = param_1->index;
ptr_text = &gUnknown_2027370[index];
if ((ptr_text->unkC) == 6) {
ptr_text2 = &textStack[index];
sub_8006518(textStack);
x = sub_8008ED0(param_1->unk0);
xxx_format_and_draw((((ptr_text2->unk14[2]) * 8 - x) /2) + 8,
0,*(u8 **)param_1, param_1->index, 0);
}
colorArray = param_1->menuTextColorArray;
menuItemsPtr = param_1->menuItems;
_puVar2 = param_1->unkC;
counter = 0;
if (menuItemsPtr->text != NULL) {
do {
textPtr = menuItemsPtr->text;
if (*textPtr == '*') {
textPtr++;
}
if (_puVar2 != NULL) {
color = colorArray[*_puVar2];
_puVar2++;
}
else if (menuItemsPtr->menuAction < 0) {
// Color the action red
color = colorArray[1];
}
else {
// Use the default white
color = colorArray[0];
}
sprintfStatic(buffer,gUnknown_80D4828,color,textPtr);
y = sub_8013800(&param_1->unk14,counter);
xxx_format_and_draw(8,y,buffer,param_1->index,0);
menuItemsPtr++;
counter++;
} while (menuItemsPtr->text != NULL);
}
sub_80073E0(param_1->index);
param_1->unk4D = FALSE;
}
if (param_1->unk4E) {
if (param_1->unk4C) {
AddMenuCursorSprite(&param_1->unk14);
}
else {
sub_8013660(&param_1->unk14);
}
}
}
bool8 sub_8012FD8(struct MenuStruct *param_1)
{
u32 prevMenuIndex;
s32 index;
const struct MenuItem *item;
prevMenuIndex = param_1->menuIndex;
if (param_1->unk4C) {
switch(GetKeyPress(&param_1->unk14))
{
case INPUT_DPAD_DOWN:
MoveMenuCursorDown(&param_1->unk14);
if (prevMenuIndex != param_1->menuIndex) {
PlayMenuSoundEffect(3);
}
break;
case INPUT_DPAD_UP:
MoveMenuCursorUp(&param_1->unk14);
if (prevMenuIndex != param_1->menuIndex) {
PlayMenuSoundEffect(3);
}
break;
case INPUT_A_BUTTON:
index = sub_80137A8(&param_1->unk14);
item = &param_1->menuItems[index];
if ((-1 < item->menuAction) &&
((param_1->unkC == NULL || (param_1->unkC[index] != 1)))) {
param_1->menuAction = item->menuAction;
++param_1; --param_1;
param_1->unk4C = FALSE;
param_1->unk38 = 0;
}
else
{
PlayMenuSoundEffect(2);
break;
}
if ((param_1->unkC != NULL) && (param_1->unkC[index] == 2)) {
PlayMenuSoundEffect(2);
}
else
PlayMenuSoundEffect(0);
break;
case INPUT_B_BUTTON:
if (-1 < param_1->menuItems[param_1->unk2E].menuAction) {
param_1->menuAction = param_1->menuItems[param_1->unk2E].menuAction;
param_1->unk4C = FALSE;
PlayMenuSoundEffect(1);
}
break;
}
}
sub_8012EBC(param_1);
return param_1->unk4C;
}
bool8 sub_80130A8(struct MenuStruct *param_1)
{
s32 index;
s32 menuAction;
const struct MenuItem *menuItem;
if (param_1->unk4C) {
switch(GetKeyPress(&param_1->unk14))
{
case INPUT_A_BUTTON:
index = sub_80137A8(&param_1->unk14);
menuItem = &param_1->menuItems[index];
param_1->menuAction = menuItem->menuAction;
param_1->unk4C = FALSE;
param_1->unk38 = 0;
PlayMenuSoundEffect(0);
break;
case INPUT_B_BUTTON:
if(menuAction = param_1->menuItems[param_1->unk2E].menuAction, -1 < menuAction) {
param_1->menuAction = menuAction;
param_1->unk4C = FALSE;
PlayMenuSoundEffect(0);
}
break;
}
}
sub_8012EBC(param_1);
return param_1->unk4C;
}
bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction)
{
if(param_1->unk4C){
return TRUE;
}
if (menuAction != NULL){
*menuAction = param_1->menuAction;
}
return FALSE;
}

View File

@ -1,3 +1,4 @@
#include "constants/input.h"
#include "global.h"
#include "input.h"
@ -34,19 +35,19 @@ u32 GetKeyPress(struct UnkInputStruct *r0)
{
if(r0->a_button != 0)
{
return 1;
return INPUT_A_BUTTON;
}
if(r0->b_button != 0)
{
return 2;
return INPUT_B_BUTTON;
}
if(r0->dpad_left != 0)
{
return 9;
return INPUT_DPAD_LEFT;
}
if(r0->dpad_right != 0)
{
return 10;
return INPUT_DPAD_RIGHT;
}
}
return sub_8012AE8();
@ -56,54 +57,54 @@ u32 sub_8012AE8(void)
{
if ((gRealInputs.held & R_BUTTON) != 0) {
if ((gRealInputs.pressed & A_BUTTON) != 0) {
return 11;
return INPUT_R_A_BUTTONS;
}
if ((gRealInputs.repeated & DPAD_UP) != 0) {
return 12;
return INPUT_R_DPAD_UP_BUTTONS;
}
if ((gRealInputs.repeated & DPAD_DOWN) != 0) {
return 13;
return INPUT_R_DPAD_DOWN_BUTTONS;
}
if ((gRealInputs.repeated & DPAD_LEFT) != 0) {
return 14;
return INPUT_R_DPAD_LEFT_BUTTONS;
}
if ((gRealInputs.repeated & DPAD_RIGHT) != 0) {
return 15;
return INPUT_R_DPAD_RIGHT_BUTTONS;
}
if ((gRealInputs.repeated & R_BUTTON) != 0) {
return 6;
return INPUT_R_BUTTON;
}
}
else
{
if ((gRealInputs.pressed & A_BUTTON) != 0) {
return 1;
return INPUT_A_BUTTON;
}
if ((gRealInputs.pressed & B_BUTTON) != 0) {
return 2;
return INPUT_B_BUTTON;
}
if ((gRealInputs.pressed & SELECT_BUTTON) != 0) {
return 3;
return INPUT_SELECT_BUTTON;
}
if ((gRealInputs.pressed & START_BUTTON) != 0) {
return 4;
return INPUT_START_BUTTON;
}
if ((gRealInputs.repeated & DPAD_UP) != 0) {
return 7;
return INPUT_DPAD_UP;
}
if ((gRealInputs.repeated & DPAD_DOWN) != 0) {
return 8;
return INPUT_DPAD_DOWN;
}
if ((gRealInputs.repeated & DPAD_LEFT) != 0) {
return 9;
return INPUT_DPAD_LEFT;
}
if ((gRealInputs.repeated & DPAD_RIGHT) != 0) {
return 10;
return INPUT_DPAD_RIGHT;
}
if ((gRealInputs.repeated & L_BUTTON) != 0) {
return 5;
return INPUT_L_BUTTON;
}
}
return 0;
return INPUT_NONE;
}

View File

@ -61,7 +61,7 @@ struct PMDMusicPlayer
u16 unk0;
u16 songIndex;
u16 volume;
bool8 unk6;
bool8 isNotMaxVolume;
};
extern struct PMDMusicPlayer gUnknown_3000FD8[8];
@ -418,7 +418,7 @@ void InitMusic(void)
musicPlayer->unk0 = 0;
musicPlayer->songIndex = STOP_SOUND_EFFECT;
musicPlayer->volume = 0;
musicPlayer->unk6 = FALSE;
musicPlayer->isNotMaxVolume = FALSE;
}
nullsub_19();
}
@ -677,11 +677,11 @@ void PlayFanfareSE(u16 songIndex, u16 volume)
musicPlayer->songIndex = songIndex;
if(volume == MAX_VOLUME)
{
musicPlayer->unk6 = FALSE;
musicPlayer->isNotMaxVolume = FALSE;
}
else
{
musicPlayer->unk6 = TRUE;
musicPlayer->isNotMaxVolume = TRUE;
}
musicPlayer->volume = volume;
if (interrupt_flag2)
@ -739,7 +739,7 @@ void StopFanfareSE(u16 songIndex)
musicPlayer1->unk0 = 0;
musicPlayer1->songIndex = STOP_SOUND_EFFECT;
musicPlayer1->volume = 0;
musicPlayer1->unk6 = FALSE;
musicPlayer1->isNotMaxVolume = FALSE;
}
if (cVar1 != '\0') {
EnableInterrupts();
@ -760,7 +760,7 @@ void StopFanfareSE(u16 songIndex)
musicPlayer->unk0 = 0;
musicPlayer->songIndex = STOP_SOUND_EFFECT;
musicPlayer->volume = 0;
musicPlayer->unk6 = FALSE;
musicPlayer->isNotMaxVolume = FALSE;
}
if (cVar2 != '\0') {
EnableInterrupts();
@ -834,7 +834,7 @@ void FadeOutFanfareSE(u16 songIndex, u16 speed)
musicPlayer1->unk0 = 0;
musicPlayer1->songIndex = STOP_SOUND_EFFECT;
musicPlayer1->volume = 0;
musicPlayer1->unk6 = FALSE;
musicPlayer1->isNotMaxVolume = FALSE;
}
}
}
@ -856,7 +856,7 @@ void FadeOutFanfareSE(u16 songIndex, u16 speed)
musicPlayer->unk0 = 0;
musicPlayer->songIndex = STOP_SOUND_EFFECT;
musicPlayer->volume = 0;
musicPlayer->unk6 = FALSE;
musicPlayer->isNotMaxVolume = FALSE;
}
}
if (cVar2 != '\0') {
@ -1089,9 +1089,9 @@ void UpdateSound(void)
case 2:
if (IsMusicPlayerPlaying(musicPlayerIndex))
{
if(musicPlayer->unk6)
if(musicPlayer->isNotMaxVolume)
{
musicPlayer->unk6 = FALSE;
musicPlayer->isNotMaxVolume = FALSE;
m4aMPlayVolumeControl(gMPlayTable[musicPlayerIndex].info,0xff,musicPlayer->volume);
}
}
@ -1100,7 +1100,7 @@ void UpdateSound(void)
musicPlayer->unk0 = 0;
musicPlayer->songIndex = STOP_SOUND_EFFECT;
musicPlayer->volume = 0;
musicPlayer->unk6 = FALSE;
musicPlayer->isNotMaxVolume = FALSE;
}
break;
case 3:

View File

@ -1,8 +1,10 @@
#include "global.h"
#include "constants/input.h"
#include "input.h"
#include "memory.h"
#include "menu.h"
#include "game_options.h"
#include "text.h"
#include "game_options.h"
#include "menu_input.h"
struct unkStruct_203B25C
{
@ -11,16 +13,63 @@ struct unkStruct_203B25C
u32 chosenHintIndex;
struct GameOptions newOptions;
u32 unk18;
const char *unk1C;
u8 fill20[0x6C - 0x20];
struct MenuStruct unk1C;
struct MenuItem menuItems[8];
u16 unkAC[8];
struct UnkTextStruct2 unkBC[4];
};
struct unkStruct_203B260
{
struct GameOptions *optionsMenu;
u32 unk4;
u8 unk8;
u8 fill9[0x10 - 0x9];
u32 unk10;
u8 fill14[0x28 - 0x14];
s16 unk28;
u8 fill2A[0x44 - 0x2A];
u32 unk44;
struct UnkTextStruct2 * unk48;
struct UnkTextStruct2 unk4C[4];
};
struct unkStruct_203B260 *gUnknown_203B260;
extern struct GameOptions *gGameOptionsRef;
extern struct unkStruct_203B25C *gUnknown_203B25C;
extern const struct UnkTextStruct2 gUnknown_80DBFB0;
extern const struct UnkTextStruct2 gUnknown_80DBFCC;
extern const struct UnkTextStruct2 gUnknown_80DC020;
extern const struct UnkTextStruct2 gUnknown_80DC03C;
extern u8 gWindowBGTitle[];
extern u8 gUnknown_80DC064[];
extern u8 gWindowBGGreenString[];
extern u8 gWindowBGRedString[];
extern u8 gWindowBGBlueString[];
extern const char gOthers_MenuOption[];
extern const char gUnknown_80DBFEC[];
extern const char gOthers_GameOptions[];
extern const char gOthers_Hints[];
extern const char *gUnknown_80D4920[];
extern const char *gUnknown_80D4928[];
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32);
extern s32 sub_8008ED0(u8 *);
extern s32 sub_8013800(u32 *, u32);
extern void sub_80078A4(u32, u32, u32, u32, u32);
extern u8 sub_80138B8(u32 *, u32);
void PlayMenuSoundEffect(u32);
s32 sub_8012AE8(void);
void sub_801317C(u32 *);
extern void sub_8013818(void *, u32, u32, u32);
void CreateOptionsMenu(void);
void nullsub_38(void);
extern void sub_801DD6C(u32);
extern void HandleOthersMenu();
extern void sub_801E088();
extern void sub_801E0E0();
@ -28,15 +77,12 @@ extern void sub_801E0FC();
extern void HandleChangeSettingsMenu();
extern void sub_801DD84();
extern void sub_801DED0();
extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32);
extern u32 sub_801E198(struct GameOptions *);
extern bool8 sub_801E198(struct GameOptions *);
extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32);
extern void CreateHintDisplayScreen(u32);
extern void sub_801E3F0(u32);
extern void CreateHintSelectionScreen(u32);
extern void CreateChangeSettingsConfirmMenu(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern u32 sub_801E474(u32);
extern u32 GetChosenHintIndex(void);
extern void sub_801E54C(void);
@ -47,20 +93,6 @@ extern void sub_801E2C4(void);
extern s32 sub_80144A4(s32 *);
extern void SetWindowBGColor(void);
extern void sub_8099690(u32);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern struct GameOptions *gGameOptionsRef;
extern struct unkStruct_203B25C *gUnknown_203B25C;
extern const struct UnkTextStruct2 gUnknown_80DBFCC;
extern const struct UnkTextStruct2 gUnknown_80DBFB0;
extern const char gOthers_MenuOption[];
extern const char gUnknown_80DBFEC[];
extern const char gOthers_GameOptions[];
extern const char gOthers_Hints[];
extern const char *gUnknown_80D4920[];
extern const char *gUnknown_80D4928[];
enum
{
@ -350,7 +382,7 @@ void sub_801DED0(void)
switch(gUnknown_203B25C->state) {
case 0:
case 1:
gUnknown_203B25C->unk1C = gOthers_MenuOption;
gUnknown_203B25C->unk1C.unk0 = gOthers_MenuOption;
sub_8012D60(&gUnknown_203B25C->unk1C,gUnknown_203B25C->menuItems,0,gUnknown_203B25C->unkAC,gUnknown_203B25C->unk18,0);
break;
case 3:
@ -420,8 +452,8 @@ void HandleOthersMenu(void)
s32 menuAction;
menuAction = 0;
if (sub_8012FD8((u32 *)&gUnknown_203B25C->unk1C) == '\0') {
sub_8013114((u32 *)&gUnknown_203B25C->unk1C,&menuAction);
if (sub_8012FD8(&gUnknown_203B25C->unk1C) == '\0') {
sub_8013114(&gUnknown_203B25C->unk1C,&menuAction);
gUnknown_203B25C->unk18 = menuAction;
}
switch(menuAction)
@ -519,3 +551,123 @@ void HandleChangeSettingsMenu(void)
}
}
}
bool8 sub_801E198(struct GameOptions *optionsMenu)
{
gUnknown_203B260 = MemoryAlloc(sizeof(struct unkStruct_203B260), 8);
gUnknown_203B260->optionsMenu = optionsMenu;
sub_801317C(&gUnknown_203B260->unk4);
gUnknown_203B260->unk44 = 0;
gUnknown_203B260->unk48 = &gUnknown_203B260->unk4C[0];
sub_8006518(gUnknown_203B260->unk4C);
gUnknown_203B260->unk4C[gUnknown_203B260->unk44] = gUnknown_80DC03C;
sub_8012D08(gUnknown_203B260->unk48,1);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B260->unk4C,1,1);
sub_8013818(&gUnknown_203B260->unk10,1,1,gUnknown_203B260->unk44);
nullsub_38();
CreateOptionsMenu();
return TRUE;
}
u32 sub_801E218(void)
{
bool32 flag;
flag = FALSE;
switch(sub_8012AE8())
{
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case INPUT_A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
case INPUT_DPAD_LEFT:
if (gUnknown_203B260->unk28 == 0)
{
if (gUnknown_203B260->optionsMenu->windowColor == WINDOW_COLOR_BLUE) {
gUnknown_203B260->optionsMenu->windowColor = WINDOW_COLOR_GREEN;
}
else {
gUnknown_203B260->optionsMenu->windowColor--;
}
PlayMenuSoundEffect(3);
flag = TRUE;
}
break;
case INPUT_DPAD_RIGHT:
if(gUnknown_203B260->unk28 == 0)
{
if (gUnknown_203B260->optionsMenu->windowColor > WINDOW_COLOR_RED) {
gUnknown_203B260->optionsMenu->windowColor = WINDOW_COLOR_BLUE;
}
else
gUnknown_203B260->optionsMenu->windowColor++;
PlayMenuSoundEffect(3);
flag = TRUE;
}
break;
}
// == 1 is needed for matching
if ((sub_80138B8(&gUnknown_203B260->unk10,1) != 0) || (flag == TRUE)) {
nullsub_38();
CreateOptionsMenu();
return 1;
}
else {
return 0;
}
}
void sub_801E2C4(void)
{
if(gUnknown_203B260 != NULL)
{
gUnknown_203B260->unk4C[gUnknown_203B260->unk44] = gUnknown_80DC020;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B260->unk4C, 1, 1);
MemoryFree(gUnknown_203B260);
gUnknown_203B260 = NULL;
}
}
void nullsub_38(void)
{
}
void CreateOptionsMenu(void)
{
u32 length;
u32 y;
sub_8008C54(gUnknown_203B260->unk44);
sub_80073B8(gUnknown_203B260->unk44);
xxx_call_draw_string(0x10,0,gWindowBGTitle,gUnknown_203B260->unk44,0);
y = sub_8013800(&gUnknown_203B260->unk10,0);
xxx_call_draw_string(8,y,gUnknown_80DC064,gUnknown_203B260->unk44,0);
switch(gUnknown_203B260->optionsMenu->windowColor)
{
case WINDOW_COLOR_BLUE:
length = sub_8008ED0(gWindowBGBlueString);
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
y + 0xA,length,7);
break;
case WINDOW_COLOR_RED:
length = sub_8008ED0(gWindowBGRedString);
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
y + 0xA,length,7);
break;
case WINDOW_COLOR_GREEN:
length = sub_8008ED0(gWindowBGGreenString);
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
y + 0xA,length,7);
break;
}
sub_80073E0(gUnknown_203B260->unk44);
}

View File

@ -7,6 +7,7 @@
#include "menu.h"
#include "memory.h"
#include "text.h"
#include "menu_input.h"
struct unkStruct_203B35C
{
@ -15,8 +16,7 @@ struct unkStruct_203B35C
u32 linkStatus;
u32 state;
u8 fillC[0x1C - 0xC];
u32 unk1C;
u8 fill20[0x15C - 0x20];
struct MenuStruct unk1C[4];
struct UnkTextStruct2 unk15C[4];
u8 unk1BC[4];
u32 unk1C0[9];
@ -56,19 +56,17 @@ extern struct MenuItem gUnknown_80E6D6C[];
extern void sub_8037400(void);
extern void ResetSprites(u32);
extern void sub_8035CF4(u32 *,u32, u32);
extern void sub_8035CF4(struct MenuStruct *,u32, u32);
extern void sub_80376CC();
extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern u32 sub_8037C10(u32);
extern void sub_8037748(void);
extern void sub_80371B8(void);
extern void sub_8037900(void);
extern void PlayMenuSoundEffect(u32);
extern u32 sub_8037798(void);
extern void SetMenuItems(void *, void *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
extern void SetMenuItems(struct MenuStruct *, void *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
extern void sub_8005838(u32, u32);
extern void sub_80060EC();
extern void sub_800CB20();
@ -107,9 +105,9 @@ void sub_8036FDC(s32 param_1)
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B35C->unk15C,1,1);
SetMenuItems(&gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0,
SetMenuItems(gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0,
6,0);
sub_8035CF4(&gUnknown_203B35C->unk1C,0,1);
sub_8035CF4(gUnknown_203B35C->unk1C,0,1);
sub_80376CC();
}
#else
@ -250,8 +248,8 @@ u32 sub_80370F0(void)
nextMenu = MENU_NO_SCREEN_CHANGE;
switch(gUnknown_203B35C->state){
case 0:
if (sub_80130A8(&gUnknown_203B35C->unk1C) == '\0') {
sub_8013114(&gUnknown_203B35C->unk1C,&local_10);
if (sub_80130A8(&gUnknown_203B35C->unk1C[0]) == '\0') {
sub_8013114(&gUnknown_203B35C->unk1C[0],&local_10);
}
if (local_10 == 4) {
sub_8037748();
@ -271,8 +269,8 @@ u32 sub_80370F0(void)
return 0x29; // TODO: what screen is this?
}
else {
if (sub_80130A8(&gUnknown_203B35C->unk1C) == '\0') {
sub_8013114(&gUnknown_203B35C->unk1C,&local_10);
if (sub_80130A8(&gUnknown_203B35C->unk1C[0]) == '\0') {
sub_8013114(&gUnknown_203B35C->unk1C[0],&local_10);
}
if (local_10 != 4) {
PlayMenuSoundEffect(3);
@ -302,8 +300,8 @@ void sub_80371B8(void)
// 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, 1);
SetMenuItems(gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, &gUnknown_80E6C50, gUnknown_80E6C68, 0, 6, 0);
sub_8035CF4(gUnknown_203B35C->unk1C, 0, 1);
}
}
else {
@ -362,8 +360,8 @@ void sub_80371B8(void)
MenuItems = gUnknown_80E6C0C;
break;
}
SetMenuItems(&gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, puVar5, MenuItems, 0, 6, 0);
sub_8035CF4(&gUnknown_203B35C->unk1C, 0, 1);
SetMenuItems(gUnknown_203B35C->unk1C, gUnknown_203B35C->unk15C, 0, puVar5, MenuItems, 0, 6, 0);
sub_8035CF4(gUnknown_203B35C->unk1C, 0, 1);
if ((gUnknown_203B35C->linkStatus != COMMS_GOOD) && (gUnknown_203B35C->unk0 == 0) &&
(item = sub_8035D94(), item->itemIndex.itemIndex_u8 != ITEM_NOTHING) && (item->numItems != 0)) {
gTeamInventory_203B460->teamStorage[item->itemIndex.itemIndex_u8] += item->numItems;

View File

@ -3,6 +3,7 @@
#include "text.h"
#include "menu.h"
#include "input.h"
#include "menu_input.h"
// Guessing based off of 203B304
struct unkStruct_203B308
@ -18,8 +19,7 @@ struct unkStruct_203B308
u8 fill51[0x64 - 0x51];
u32 unk64;
u32 unk68;
u32 unk6C;
u8 fill70[0xBC - 0x70];
struct MenuStruct unk6C;
struct MenuItem unkBC[8];
u16 unkFC[8];
struct UnkTextStruct2 unk10C[4];
@ -30,7 +30,7 @@ extern void SetPelipperBoardState(u32);
const struct UnkTextStruct2 gUnknown_80E0330 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -40,7 +40,7 @@ const struct UnkTextStruct2 gUnknown_80E0330 =
const struct UnkTextStruct2 gUnknown_80E0348 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x03, 0x00, 0x03, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -50,7 +50,7 @@ const struct UnkTextStruct2 gUnknown_80E0348 =
const struct UnkTextStruct2 gUnknown_80E0360 =
{
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00,
0x04,
0x15, 0x00, 0x06, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -60,7 +60,7 @@ const struct UnkTextStruct2 gUnknown_80E0360 =
const struct UnkTextStruct2 gUnknown_80E0378 =
{
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00,
0x04,
0x15, 0x00, 0x0f, 0x00,
0x06, 0x03,
0x03, 0x00,
@ -73,7 +73,6 @@ const u8 gPelipperBoard_Accepted[] = "Accepted";
const u8 gPelipperStatusSlash[] = "/";
static const u8 gPelipperfill[] = "pksdir0";
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_802ECB4(void);
extern void nullsub_134(void);
extern void sub_802ED4C(void);
@ -85,7 +84,6 @@ extern void sub_802EA58(void);
extern void CreatePelipperBoardMenu(void);
extern void sub_802EC10(void);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
extern void sub_802C10C(u32, u32, u32);
extern void sub_802C28C(u32);
extern void sub_802C39C(void);
@ -178,7 +176,7 @@ void sub_802E94C(void)
sub_802EC10();
gUnknown_203B308->unk10C[2] = gUnknown_80E0360;
sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC);
gUnknown_203B308->unk10C[2].unk0c = 6;
gUnknown_203B308->unk10C[2].unkC = 6;
gUnknown_203B308->unk10C[3] = gUnknown_80E0378;
break;
default:

View File

@ -7,6 +7,7 @@
#include "text.h"
#include "team_inventory.h"
#include "wonder_mail.h"
#include "menu_input.h"
struct unkStruct_203B308
{
@ -21,8 +22,7 @@ struct unkStruct_203B308
u8 fill51[0x64 - 0x51];
u32 unk64;
u32 unk68;
u32 unk6C;
u8 fill70[0xBC - 0x70];
struct MenuStruct unk6C;
struct MenuItem unkBC[8];
u16 unkFC[8];
struct UnkTextStruct2 unk10C[4];
@ -32,7 +32,6 @@ extern struct unkStruct_203B308 *gUnknown_203B308;
extern u8 gPelipperBoard_Accepted[];
extern u8 gPelipperStatusSlash[];
extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
@ -48,14 +47,11 @@ extern void sub_8096A78(struct WonderMail*);
extern void ResetPelipperBoardSlot(u8);
extern void sub_80965F4(void);
extern void sub_802C2D4(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_802C1E4(u32);
extern void PlaySound(u32);
extern void SetPelipperBoardState(u32);
extern u8 sub_802C26C(void);
extern u8 HasNoAcceptedJobs(void);
extern void sub_8012EA4(u32 *, u32);
void sub_802ECB4(void)
{

View File

@ -1,6 +1,8 @@
#include "global.h"
#include "personality_test.h"
#include "constants/emotions.h"
#include "constants/input.h"
#include "constants/type.h"
#include "random.h"
#include "file_system.h"
#include "pokemon.h"
@ -355,7 +357,7 @@ const char * const gPersonalityTypeDescriptionTable[NUM_PERSONALITIES] =
const struct UnkTextStruct2 gUnknown_80F4244 =
{
0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00,
0x05,
0x0C, 0x00, 0x06, 0x00,
0x05, 0x05,
0x05, 0x00,
@ -381,7 +383,7 @@ const s16 gPartners[NUM_PARTNERS] =
const struct UnkTextStruct2 gUnknown_80F4278 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -391,7 +393,7 @@ const struct UnkTextStruct2 gUnknown_80F4278 =
const struct UnkTextStruct2 gUnknown_80F4290 =
{
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x09, 0x0B,
0x0D, 0x00,
@ -401,7 +403,7 @@ const struct UnkTextStruct2 gUnknown_80F4290 =
const struct UnkTextStruct2 gUnknown_80F42A8 =
{
0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x00,
0x05,
0x0E, 0x00, 0x04, 0x00,
0x05, 0x05,
0x05, 0x00,
@ -801,7 +803,7 @@ u16 HandlePartnerSelectionInput(void)
partnerID = gUnknown_203B404->currPartnerSelection;
gUnknown_203B404->unk16 = 0;
if (GetKeyPress(&gUnknown_203B404->unk18) == A_BUTTON) {
if (GetKeyPress(&gUnknown_203B404->unk18) == INPUT_A_BUTTON) {
PlayMenuSoundEffect(0);
return gUnknown_203B404->PartnerArray[gUnknown_203B404->currPartnerSelection];
}
@ -1034,8 +1036,8 @@ s32 GetValidPartners(void)
CurrentPartnerID = gPartners[counter];
currentPartnerTypes[0] = GetPokemonType(CurrentPartnerID, 0);
currentPartnerTypes[1] = GetPokemonType(CurrentPartnerID, 1);
if (((currentPartnerTypes[0] == '\0') || ((currentPartnerTypes[0] != PlayerType[0] && (currentPartnerTypes[0] != PlayerType[1]))))
&& ((currentPartnerTypes[1] == '\0' || ((currentPartnerTypes[1] != PlayerType[0] && (currentPartnerTypes[1] != PlayerType[1])))
if (((currentPartnerTypes[0] == TYPE_NONE) || ((currentPartnerTypes[0] != PlayerType[0] && (currentPartnerTypes[0] != PlayerType[1]))))
&& ((currentPartnerTypes[1] == TYPE_NONE || ((currentPartnerTypes[1] != PlayerType[0] && (currentPartnerTypes[1] != PlayerType[1])))
))) {
gUnknown_203B404->PartnerArray[ValidPartnerCounter] = CurrentPartnerID;
ValidPartnerCounter++;

View File

@ -144,7 +144,7 @@ ALIGNED(4) const u8 wonder_mail_fill[] = _("pksdir0");
const struct UnkTextStruct2 gUnknown_80E1EFC =
{
0, 0, 0, 0,
3, 0, 0, 0,
3,
0, 0, 0, 0,
0, 0,
0, 0,
@ -156,7 +156,7 @@ const u8 gUnkData_80E1F14[] = {1, 0, 8, 0};
const struct UnkTextStruct2 gUnknown_80E1F18 =
{
0, 0, 0, 0,
6, 0, 0, 0,
6,
2, 0, 2, 0,
0x14, 4,
4, 0,

View File

@ -10,6 +10,7 @@
#include "rescue_password_menu.h"
#include "code_8094F88.h"
#include "wonder_mail.h"
#include "menu_input.h"
extern u8 gRescuePasswordBuffer[];
extern u32 gUnknown_202EC4C;
@ -34,8 +35,6 @@ extern u32 sub_8039068(u32, u8 *passwordBuffer, struct unkStruct_203B480 *r0);
extern void sub_80951BC(struct unkStruct_203B480 *r0);
extern bool8 sub_80951FC(struct unkStruct_203B480 *r0);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_80154F0(void);
extern void sub_8095274(u32);
extern u32 sub_8031DCC(void);
@ -45,8 +44,8 @@ extern void DisplayRescuePasswordError(u32);
extern struct MainMenu *GetMainMenu(void);
extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern void sub_8035CF4(u32 *r0, u32, u32);
extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern void sub_8035CF4(struct MenuStruct *r0, u32, u32);
bool8 IsInvalidItemReward(u8);
bool8 sub_8095298(s32);
bool8 sub_803D204(u8 *, struct unkStruct_203B480 *);
@ -304,8 +303,8 @@ s32 UpdateRescuePasswordMenu(void)
}
break;
case 8:
if (sub_8012FD8(&gRescuePasswordMenu->unk8) == '\0') {
sub_8013114(&gRescuePasswordMenu->unk8, &local_14);
if (sub_8012FD8(&gRescuePasswordMenu->unk8[0]) == '\0') {
sub_8013114(&gRescuePasswordMenu->unk8[0], &local_14);
}
switch(local_14)
{
@ -332,8 +331,8 @@ s32 UpdateRescuePasswordMenu(void)
}
break;
case 9:
if (sub_8012FD8(&gRescuePasswordMenu->unk8) == '\0') {
sub_8013114(&gRescuePasswordMenu->unk8, &local_14);
if (sub_8012FD8(&gRescuePasswordMenu->unk8[0]) == '\0') {
sub_8013114(&gRescuePasswordMenu->unk8[0], &local_14);
}
switch(local_14)
{
@ -371,36 +370,36 @@ void DisplayRescuePasswordError(u32 passwordError)
sub_80155F0();
switch(passwordError) {
case PASSWORD_ENTRY_INCORRECT_PASSWORD:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,0,0xd,0);
break;
case PASSWORD_ENTRY_NOT_SOS_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,0,0xd,0);
break;
case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,0,0xd,0);
break;
case PASSWORD_ENTRY_NO_SPACE:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,0,0xd,0);
break;
case PASSWORD_ENTRY_NOT_AOK_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,0,0xd,0);
break;
case PASSWORD_ENTRY_DUPLICATE_AOK_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,0,0xd,0);
break;
case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,0,0xd,0);
break;
case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,0,0xd,0);
break;
case PASSWORD_ENTRY_NOT_WONDER_MAIL:
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,0,0xd,0);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,0,0xd,0);
break;
default:
break;
}
sub_8035CF4(&gRescuePasswordMenu->unk8,0,1);
sub_8035CF4(gRescuePasswordMenu->unk8,0,1);
}
void DisplayPasswordAcceptScreen(void)
@ -409,8 +408,8 @@ void DisplayPasswordAcceptScreen(void)
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_80155F0();
SetMenuItems(&gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,0,0xd,0);
sub_8035CF4(&gRescuePasswordMenu->unk8,0,1);
SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,0,0xd,0);
sub_8035CF4(gRescuePasswordMenu->unk8,0,1);
}
u32 ConvertMenutoRescuePasswordState(u32 unused)

350
src/save_menu.c Normal file
View File

@ -0,0 +1,350 @@
#include "gba/defines.h"
#include "global.h"
#include "input.h"
#include "menu.h"
#include "main_menu.h"
#include "memory.h"
#include "text.h"
#include "save.h"
#include "menu_input.h"
struct unkSprite
{
u16 unk0;
u16 unk2;
u16 unk4;
u16 unk6;
};
struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
u32 unk4;
struct MenuStruct unk8[4];
struct UnkTextStruct2 unk148[4];
struct unkSprite unk1A8;
u32 unk1B0; // Sprite count?
};
extern struct unkStruct_203B360 *gUnknown_203B364;
const struct UnkTextStruct2 gUnknown_80E6F20 =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
const struct UnkTextStruct2 gUnknown_80E6F38 =
{
0x00, 0x00, 0x00, 0x00,
0x03,
0x05, 0x00, 0x08, 0x00,
0x15, 0x05,
0x05, 0x00,
NULL
};
const u8 sUnknown_80E6F70[];
const u8 sUnknown_80E6F90[];
const u8 sUnknown_80E6FAC[];
const struct MenuItem gSavingAdventureMenuItems[] = {
{sUnknown_80E6FAC, 4},
{sUnknown_80E6F90, 4},
{sUnknown_80E6F70, 4},
{NULL, 2}
};
ALIGNED(4) const u8 sUnknown_80E6F70[] = _("{CENTER_ALIGN}Don{APOSTROPHE}t turn off the power.");
ALIGNED(4) const u8 sUnknown_80E6F90[] = _("{CENTER_ALIGN}Saving your adventure!");
ALIGNED(4) const u8 sUnknown_80E6FAC[] = _("{CENTER_ALIGN}{COLOR_1 RED}Beware!{END_COLOR_TEXT_1} ");
extern const u8 sUnknown_80E6FDC[];
extern const u8 sUnknown_80E7008[];
extern const u8 sUnknown_80E6FF0[];
const struct MenuItem gAdventureSavedMenuItems[] = {
{sUnknown_80E7008, 4},
{sUnknown_80E6FF0, 4},
{sUnknown_80E6FDC, 4},
{NULL, 2}
};
ALIGNED(4) const u8 sUnknown_80E6FDC[] = _("{CENTER_ALIGN}has been saved.");
ALIGNED(4) const u8 sUnknown_80E6FF0[] = _("{CENTER_ALIGN}Your adventure so far");
ALIGNED(4) const u8 sUnknown_80E7008[] = _("{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE_2}Success!{END_COLOR_TEXT_1} ");
extern const u8 sUnknown_80E7078[];
extern const u8 sUnknown_80E7050[];
extern const u8 sUnknown_80E703C[];
const struct MenuItem gAdventureCouldNotBeSavedMenuItems[] = {
{sUnknown_80E7078, 4},
{sUnknown_80E7050, 4},
{sUnknown_80E703C, 4},
{NULL, 2}
};
ALIGNED(4) const u8 sUnknown_80E703C[] = _("{CENTER_ALIGN}Please try again.");
ALIGNED(4) const u8 sUnknown_80E7050[] = _("{CENTER_ALIGN}Your adventure could not be saved.");
ALIGNED(4) const u8 sUnknown_80E7078[] = _("{CENTER_ALIGN}{COLOR_1 RED}Save failed!{END_COLOR_TEXT_1} ");
extern const u8 DeletingAdventure_80E70B0[];
const struct MenuItem gDeletingYourAdventureMenuItems[] = {
{sUnknown_80E6FAC, 4},
{DeletingAdventure_80E70B0, 4},
{sUnknown_80E6F70, 4},
{NULL, 2}
};
ALIGNED(4) const u8 DeletingAdventure_80E70B0[] = _("{CENTER_ALIGN}Deleting your adventure!");
extern const u8 Data_80E70EC[];
extern const u8 AdventureDeleted_80E70F0[];
const struct MenuItem gDeletedSaveMenuItems[] = {
{sUnknown_80E7008, 4},
{AdventureDeleted_80E70F0, 4},
{Data_80E70EC, 4},
{NULL, 2},
};
ALIGNED(4) const u8 Data_80E70EC[] = _(" ");
ALIGNED(4) const u8 AdventureDeleted_80E70F0[] = _("{CENTER_ALIGN}Your adventure has been deleted.");
extern const u8 sUnknown_80E7134[];
extern const u8 sUnknown_80E715C[];
const struct MenuItem gAdventureCouldNotBeDeletedMenuItems[] = {
{sUnknown_80E715C, 4},
{sUnknown_80E7134, 4},
{sUnknown_80E703C, 4},
{NULL, 2},
};
ALIGNED(4) const u8 sUnknown_80E7134[] = _("{CENTER_ALIGN}Your adventure could not be deleted.");
ALIGNED(4) const u8 sUnknown_80E715C[] = _("{CENTER_ALIGN}{COLOR_1 RED}Deletion failed!{END_COLOR_TEXT_1} ");
ALIGNED(4) const u8 gUnknown_80E7178[] = _("{CENTER_ALIGN}The data could not be written.\n"
"{CENTER_ALIGN}Please turn off the power and remove\n"
"{CENTER_ALIGN}and reinsert the DS Card.");
ALIGNED(4) static const u8 save_menu_fill0[] = "pksdir0";
extern void ResetSprites(u32);
extern void sub_8038440();
extern void sub_8035CF4(struct MenuStruct *, u32, u32);
extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern void sub_80384D0();
extern void sub_8038830();
extern void sub_80388C4(void);
extern void sub_8014114();
extern void sub_80140F8(void);
extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern void AddSprite(struct unkSprite *, u32, u32, u32);
void CreateSaveMenu(s32 currMenu)
{
s32 index;
if (gUnknown_203B364 == NULL) {
gUnknown_203B364 = MemoryAlloc(sizeof(struct unkStruct_203B360),8);
MemoryFill8((u8 *)gUnknown_203B364,0,sizeof(struct unkStruct_203B360));
}
for(index = 0; index < 4; index++){
gUnknown_203B364->unk148[index] = gUnknown_80E6F20;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B364->unk148,1,1);
if (currMenu == MENU_DELETE_SAVE) {
// Beware, Deleting your Adventure
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems,
0,6,0);
}
else {
// Saving your Adventure
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems,
0,6,0);
}
sub_8035CF4(gUnknown_203B364->unk8,0,1);
gUnknown_203B364->unk4 = 0;
gUnknown_203B364->currMenu = currMenu;
sub_8038830();
}
void CleanSaveMenu(void)
{
ResetUnusedInputStruct();
sub_800641C(0,1,1);
if (gUnknown_203B364 != NULL) {
MemoryFree(gUnknown_203B364);
gUnknown_203B364 = NULL;
}
}
s32 UpdateSaveMenu(void)
{
int saveStatus;
struct MainMenu *mainMenu;
u32 menu;
u32 uStack_18;
u32 action;
menu = MENU_NO_SCREEN_CHANGE;
action = 3;
switch(gUnknown_203B364->unk4)
{
default:
case 2:
menu = MENU_NO_SCREEN_CHANGE;
break;
case 0:
sub_8012FD8(&gUnknown_203B364->unk8[0]);
uStack_18 = 0;
sub_80140F8();
saveStatus = WriteSavetoPak(&uStack_18,sub_8011C1C());
sub_8014114();
switch(saveStatus)
{
case SAVE_COMPLETED:
sub_8035CC0(gUnknown_203B364->unk148,0);
if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) {
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gDeletedSaveMenuItems,0,6,0);
}
else {
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureSavedMenuItems,0,6,0);
}
if (gUnknown_203B364->currMenu == 0x2d) {
gUnknown_203B364->unk4 = 1;
return MENU_COMMUNICATION_1;
}
sub_8035CF4(gUnknown_203B364->unk8,0,1);
gUnknown_203B364->unk4 = 1;
break;
case SAVE_NOT_WRTTEN:
sub_80141B4(gUnknown_80E7178,0,0,0);
gUnknown_203B364->unk4 = 5;
break;
default:
sub_8035CC0(gUnknown_203B364->unk148,0);
if (gUnknown_203B364->currMenu == MENU_DELETE_SAVE) {
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureCouldNotBeDeletedMenuItems,0,6,0);
}
else {
SetMenuItems(gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,
gAdventureCouldNotBeSavedMenuItems,0,6,0);
}
sub_8035CF4(gUnknown_203B364->unk8,0,1);
gUnknown_203B364->unk4 = 1;
break;
}
menu = MENU_NO_SCREEN_CHANGE;
break;
case 1:
if (sub_80130A8(&gUnknown_203B364->unk8[0]) == '\0') {
sub_8013114(&gUnknown_203B364->unk8[0],&action);
}
switch(action)
{
case 2:
case 4:
if ((gUnknown_203B364->currMenu == 0x29) || (gUnknown_203B364->currMenu == MENU_DELETE_SAVE)) {
gUnknown_203B364->unk4 = 1;
menu = MENU_MAIN_SCREEN;
}
else if (gUnknown_203B364->currMenu == 0x2d) {
gUnknown_203B364->unk4 = 1;
menu = MENU_COMMUNICATION_1;
}
else if (gUnknown_203B364->currMenu == 0x2c) {
gUnknown_203B364->unk4 = 1;
menu = 0x1f;
}
else {
mainMenu = GetMainMenu();
if (mainMenu->unk3A != 0) {
gUnknown_203B364->unk4 = 1;
menu = 0x35;
}
else {
gUnknown_203B364->unk4 = 1;
menu = gUnknown_203B364->currMenu == 0x2b ? MENU_WONDER_MAIL : MENU_FRIEND_RESCUE;
}
}
break;
case 3:
gUnknown_203B364->unk4 = 1;
break;
}
sub_80388C4();
}
return menu;
}
void sub_8038830(void)
{
#ifdef NONMATCHING
u32 r0;
u32 r2;
#else
register u32 r0 asm("r0");
register u32 r2 asm("r2");
#endif
u32 r1;
u32 r4;
u32 r5;
struct unkSprite *sprite;
r5 = 0;
sprite = &gUnknown_203B364->unk1A8;
r1 = sprite->unk0;
r0 = 0xfeff;
r0 &= r1;
r0 &= 0xfdff;
r0 &= 0xf3ff;
r0 &= 0xefff;
r0 &= 0xdfff;
r2 = 0x4000;
r0 &= 0x3fff;
r0 |= r2;
sprite->unk0 = r0;
r2 = 0x3F0;
r1 = sprite->unk4;
r0 = 0xFC00;
r0 &= r1;
r0 |= r2;
r0 &= 0xf3ff;
r2 = 0xF;
r4 = 0xF000;
r0 &= 0xfff;
r0 |= r4;
sprite->unk4 = r0;
sprite->unk2 = 0x70;
r1 = 0x680;
r2 &= sprite->unk6;
r2 |= r1;
sprite->unk6 = r2;
gUnknown_203B364->unk1B0 = r5;
ResetSprites(0);
}
void sub_80388C4(void) {
if ((gUnknown_203B364->unk1B0 & 8) != 0) {
AddSprite(&gUnknown_203B364->unk1A8, 0x100, 0, 0);
}
gUnknown_203B364->unk1B0++;
}

View File

@ -26,7 +26,7 @@ extern u8 *gUnknown_80F8968[];
extern u8 *gUnknown_80F8988[];
extern u8 gUnknown_8106FA4[];
u8 sub_8070828(struct Entity *pokemon, bool8 displayMessage)
s32 sub_8070828(struct Entity *pokemon, bool8 displayMessage)
{
bool8 flag;

View File

@ -154,11 +154,11 @@ void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, u32 *a3)
for (i = 0; i < 4; i++)
{
gUnknown_202AFC0[i] = a0[i];
if (a0[i].unk0c)
if (a0[i].unkC)
{
sub_8006554(gUnknown_2027370, (void *)VRAM, gUnknown_20274B4, gUnknown_202B038, gUnknown_80B8804[i], a0 + i, a1, r9, a3, 0);
sub_80089AC(a0 + i, a3);
r9 += a0[i].unk0c * a0[i].unk10;
r9 += a0[i].unkC * a0[i].unk10;
}
}
#ifdef NONMATCHING

View File

@ -13,6 +13,7 @@
#include "text.h"
#include "team_inventory.h"
#include "code_800D090.h"
#include "menu_input.h"
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
@ -55,7 +56,7 @@ extern char gAvailablePokemonNames[0x50];
const struct UnkTextStruct2 gUnknown_80DED48 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x15, 0x00, 0x04, 0x00,
0x06, 0x05,
0x05, 0x00,
@ -65,7 +66,7 @@ const struct UnkTextStruct2 gUnknown_80DED48 =
const struct UnkTextStruct2 gUnknown_80DED60 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x16, 0x00, 0x07, 0x00,
0x06, 0x05,
0x05, 0x00,
@ -86,7 +87,7 @@ const struct MenuItem gUnknown_80DED78[3] =
const struct UnkTextStruct2 gUnknown_80DEDA0 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -155,7 +156,6 @@ const struct MenuItem gUnknown_80DEEE4[4] =
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32);
extern void sub_8030810(u32);
extern u32 sub_8031DCC(void);
@ -167,7 +167,6 @@ extern u32 sub_8030768(u32);
extern s8 sub_80307EC(void);
extern void sub_8030D40(u8, u32);
extern u32 sub_8030DA0();
extern void sub_8013114(u32 *r0, s32 *r1);
extern void HandleThankYouMailPelipperMainMenu();
extern void sub_802AAC8();
extern void ReturnToThankYouMailMainMenu();
@ -218,7 +217,7 @@ extern void sub_802F2C0();
extern u32 sub_80144A4(s32 *r0);
extern void SetThankYouMailMenuState(u32);
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void SetMenuItems(struct MenuStruct *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_80922B4(u8 *, u8 *, u32);
extern void sub_802F204(struct unkStruct_802F204 *, u32);
extern void sub_80151C0(u32, u8 *);
@ -239,7 +238,7 @@ extern u32 GetDungeonTeamRankPts(struct DungeonLocation *, u32);
extern void sub_8031D70(u8, u32);
extern void sub_803092C(void);
extern void sub_8035CF4(u32 *, u32, u32);
extern void sub_8035CF4(struct MenuStruct *, u32, u32);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8(void);
extern void sub_801B3C0(struct Item *);
@ -620,8 +619,8 @@ void sub_802A174(void)
menuAction = -1;
sub_8030768(0);
if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction);
if (sub_8012FD8(&gUnknown_203B2C4->unk21C[3]) == 0) {
sub_8013114(&gUnknown_203B2C4->unk21C[3], &menuAction);
}
switch(menuAction)
@ -659,7 +658,7 @@ void sub_802A230(void)
sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
sub_803092C();
if (gUnknown_203B2C4->fallbackState == 0x2b) {
sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1);
sub_8035CF4(gUnknown_203B2C4->unk21C, 3, 1);
SetThankYouMailMenuState(0x11);
}
else {
@ -711,7 +710,7 @@ void sub_802A33C(void)
sub_800641C(gUnknown_203B2C4->unk3BC,1,1);
sub_801CB5C(1);
if (gUnknown_203B2C4->fallbackState == 0x2b) {
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
sub_8035CF4(gUnknown_203B2C4->unk21C,3,1);
SetThankYouMailMenuState(0x14);
}
else {
@ -730,8 +729,8 @@ void sub_802A39C(void)
menuAction = -1;
sub_801CA08(0);
if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction);
if (sub_8012FD8(&gUnknown_203B2C4->unk21C[3]) == 0) {
sub_8013114(&gUnknown_203B2C4->unk21C[3], &menuAction);
}
switch(menuAction)
@ -1299,9 +1298,9 @@ void UpdateThankYouMailText(void)
break;
case 0x11:
sub_8006518(gUnknown_203B2C4->unk35C);
SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0);
SetMenuItems(gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,1,0,0);
sub_803092C();
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
sub_8035CF4(gUnknown_203B2C4->unk21C,3,1);
break;
case 0x13:
if (sub_801D008() != 0)
@ -1316,9 +1315,9 @@ void UpdateThankYouMailText(void)
break;
case 0x14:
sub_8006518(gUnknown_203B2C4->unk35C);
SetMenuItems(&gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0);
SetMenuItems(gUnknown_203B2C4->unk21C,gUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,1,0,0);
sub_801CCD8();
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
sub_8035CF4(gUnknown_203B2C4->unk21C,3,1);
break;
case THANK_YOU_MAIL_COMMS_FINISHED:
gUnknown_203B2C4->linkError = COMMS_GOOD;

View File

@ -8,6 +8,7 @@
#include "memory.h"
#include "save.h"
#include "menu.h"
#include "menu_input.h"
extern struct TradeItemsMenu *gTradeItemsMenu;
@ -29,7 +30,7 @@ const struct MenuItem gUnknown_80E60D4[3] = {
const struct UnkTextStruct2 gUnknown_80E60EC =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x15, 0x00, 0x04, 0x00,
0x06, 0x05,
0x05, 0x00,
@ -46,7 +47,7 @@ const struct MenuItem gUnknown_80E6104[4] = {
static const struct UnkTextStruct2 unused =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x16, 0x00, 0x09, 0x00,
0x05, 0x03,
0x03, 0x00,
@ -63,7 +64,7 @@ const struct MenuItem gUnknown_80E6154[3] = {
const struct UnkTextStruct2 gUnknown_80E6174 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x15, 0x00, 0x0D, 0x00,
0x06, 0x04,
0x04, 0x00,
@ -87,14 +88,12 @@ extern u32 sub_801CA08(u32);
extern void sub_801CBB8();
extern u8 sub_801CB24();
extern void sub_801B3C0(struct Item *);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
extern void sub_801CCD8();
extern u32 sub_801B410();
extern void sub_801B450();
extern void sub_801CB5C(u32);
extern void sub_8035CF4(u32 *, u32, u32);
extern void sub_8035CF4(struct MenuStruct *, u32, u32);
extern u32 sub_8013BBC(u32 *);
extern void sub_80141B4(const u8 *, u32, u32, u32);
@ -109,7 +108,7 @@ extern void sub_801C8C4(u32, u32, s32 *, u32);
extern s32 sub_8037B28(u32);
extern void sub_8011830(void);
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32);
extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void SetMenuItems(struct MenuStruct *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void nullsub_23(u32);
extern void xxx_call_start_bg_music(void);
extern s32 sub_80381F4(u32, void *, void *);
@ -312,8 +311,8 @@ void sub_8036674(void)
menuAction = -1;
sub_801CA08(0);
if (sub_8012FD8(&gTradeItemsMenu->unk134) == '\0') {
sub_8013114(&gTradeItemsMenu->unk134, &menuAction);
if (sub_8012FD8(&gTradeItemsMenu->unk44[3]) == '\0') {
sub_8013114(&gTradeItemsMenu->unk44[3], &menuAction);
}
switch(menuAction){
case 3: // confirm
@ -348,7 +347,7 @@ void sub_8036728(void)
sub_800641C(gTradeItemsMenu->unk1E4, 1, 1);
sub_801CB5C(1);
if (gTradeItemsMenu->fallbackState == 0x13) {
sub_8035CF4(&gTradeItemsMenu->unk44, 3, 1);
sub_8035CF4(gTradeItemsMenu->unk44, 3, 1);
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU);
}
else {
@ -362,20 +361,20 @@ void sub_8036728(void)
void sub_8036788(void)
{
sub_8012FD8(&gTradeItemsMenu->unk134);
sub_8012FD8(&gTradeItemsMenu->unk44[3]);
sub_801CA08(0);
switch(sub_8013BBC(&gTradeItemsMenu->quantityToSend)){
case 1:
// When you change the #
sub_801CCD8();
sub_8035CF4(&gTradeItemsMenu->unk44, 3, 0);
sub_8035CF4(gTradeItemsMenu->unk44, 3, 0);
sub_8036F30();
break;
case 2:
// If you back out of the # selection
sub_8035CC0(gTradeItemsMenu->unk184, 2);
sub_801CCD8();
sub_8035CF4(&gTradeItemsMenu->unk44, 3, 1);
sub_8035CF4(gTradeItemsMenu->unk44, 3, 1);
SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU);
break;
case 3:
@ -634,10 +633,10 @@ void sub_8036B28(void)
break;
case TRADE_ITEMS_SEND_ITEM_POPUP_MENU:
sub_8006518(gTradeItemsMenu->unk184);
SetMenuItems(&gTradeItemsMenu->unk44,gTradeItemsMenu->unk184,3,&gUnknown_80E60EC,
SetMenuItems(gTradeItemsMenu->unk44,gTradeItemsMenu->unk184,3,&gUnknown_80E60EC,
gUnknown_80E6104,1,0,0);
sub_801CCD8();
sub_8035CF4(&gTradeItemsMenu->unk44,3,1);
sub_8035CF4(gTradeItemsMenu->unk44,3,1);
break;
case TRADE_ITEMS_SEND_ITEM_NUMBER:
sub_8036F74();
@ -793,7 +792,7 @@ void sub_8036F74(void)
sub_8006518(gTradeItemsMenu->unk184);
sub_8036ECC(2, gTeamInventory_203B460->teamStorage[gTradeItemsMenu->itemToSend.id]);
sub_801CCD8();
sub_8035CF4(&gTradeItemsMenu->unk44, 3, 0);
sub_8035CF4(gTradeItemsMenu->unk44, 3, 0);
sub_8036F30();
}

View File

@ -2,18 +2,26 @@
#include "input.h"
#include "main_menu.h"
#include "memory.h"
#include "menu.h"
#include "text.h"
#include "menu_input.h"
struct unkSprite
{
u16 unk0;
u16 unk2;
u16 unk4;
u16 unk6;
};
struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
u32 unk4; // state
u32 unk8;
u8 fill8[0x148 - 0xC];
struct MenuStruct unk8[4];
struct UnkTextStruct2 unk148[4];
u32 unk1A8;
u32 unk1AC;
struct unkSprite unk1A8;
u32 unk1B0; // sprite count?
};
@ -22,11 +30,10 @@ extern struct UnkTextStruct2 gUnknown_80E6E7C;
extern struct UnkTextStruct2 gUnknown_80E6E94;
extern struct MenuItem gUnknown_80E6EAC[];
extern void AddSprite(struct unkSprite *, u32, u32, u32);
extern void sub_8038440();
extern void sub_8035CF4(u32 *, u32, u32);
extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_8035CF4(struct MenuStruct *, u32, u32);
extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
extern void sub_80384D0();
void sub_80382E4(s32 param_1)
@ -46,10 +53,10 @@ void sub_80382E4(s32 param_1)
// Caution!
// The storage space is empty!
// Please check again.
SetMenuItems(&gUnknown_203B360->unk8,gUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC,
SetMenuItems(gUnknown_203B360->unk8,gUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC,
0,4,0);
}
sub_8035CF4(&gUnknown_203B360->unk8,0,1);
sub_8035CF4(gUnknown_203B360->unk8,0,1);
gUnknown_203B360->currMenu = param_1;
gUnknown_203B360->unk4 = 0;
sub_8038440();
@ -74,8 +81,8 @@ u32 sub_80383D4(void)
nextMenu = MENU_NO_SCREEN_CHANGE;
if (gUnknown_203B360->unk4 == 0){
if (sub_80130A8(&gUnknown_203B360->unk8) == '\0') {
sub_8013114(&gUnknown_203B360->unk8, &menuAction);
if (sub_80130A8(&gUnknown_203B360->unk8[0]) == '\0') {
sub_8013114(&gUnknown_203B360->unk8[0], &menuAction);
}
switch(menuAction)
{
@ -94,3 +101,65 @@ u32 sub_80383D4(void)
return nextMenu;
}
void sub_8038440(void)
{
#ifdef NONMATCHING
u32 r0;
u32 r2;
#else
register u32 r0 asm("r0");
register u32 r2 asm("r2");
#endif
u32 r1;
u32 r4;
u32 r5;
struct unkSprite *sprite;
r5 = 0;
sprite = &gUnknown_203B360->unk1A8;
r1 = sprite->unk0;
r0 = 0xfeff;
r0 &= r1;
r0 &= 0xfdff;
r0 &= 0xf3ff;
r0 &= 0xefff;
r0 &= 0xdfff;
r2 = 0x4000;
r0 &= 0x3fff;
r0 |= r2;
sprite->unk0 = r0;
r2 = 0x3F0;
r1 = sprite->unk4;
r0 = 0xFC00;
r0 &= r1;
r0 |= r2;
r0 &= 0xf3ff;
r2 = 0xF;
r4 = 0xF000;
r0 &= 0xfff;
r0 |= r4;
sprite->unk4 = r0;
sprite->unk2 = 0x70;
r1 = 0x700;
r2 &= sprite->unk6;
r2 |= r1;
sprite->unk6 = r2;
gUnknown_203B360->unk1B0 = r5;
}
void sub_80384D0(void)
{
if ((gUnknown_203B360->unk1B0 & 8) != 0) {
AddSprite(&gUnknown_203B360->unk1A8, 0x100, 0, 0);
}
gUnknown_203B360->unk1B0++;
}

View File

@ -1,28 +0,0 @@
#include "global.h"
#include "text.h"
struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
u32 unk4;
u32 unk8;
u8 fill8[0x148 - 0xC];
struct UnkTextStruct2 unk148[4];
u16 unk1A8;
u16 unk1AA;
u16 unk1AC;
u16 unk1AE;
u32 unk1B0; // Sprite count?
};
extern struct unkStruct_203B360 *gUnknown_203B360;
extern void AddSprite(u16 *, u32, u32, u32);
void sub_80384D0(void)
{
if ((gUnknown_203B360->unk1B0 & 8) != 0) {
AddSprite(&gUnknown_203B360->unk1A8, 0x100, 0, 0);
}
gUnknown_203B360->unk1B0++;
}

View File

@ -1,76 +0,0 @@
#include "global.h"
#include "input.h"
#include "menu.h"
#include "main_menu.h"
#include "memory.h"
#include "text.h"
struct unkStruct_203B360
{
// size: 0x1b4
u32 currMenu;
u32 unk4;
u32 unk8;
u8 fill8[0x148 - 0xC];
struct UnkTextStruct2 unk148[4];
u16 unk1A8;
u16 unk1AA;
u16 unk1AC;
u16 unk1AE;
u32 unk1B0; // Sprite count?
};
extern struct unkStruct_203B360 *gUnknown_203B364;
extern struct UnkTextStruct2 gUnknown_80E6F20;
extern struct UnkTextStruct2 gUnknown_80E6F38;
extern struct MenuItem gUnknown_80E7090[];
extern struct MenuItem gUnknown_80E6F50[];
extern void sub_8038440();
extern void sub_8035CF4(u32 *, u32, u32);
extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_80384D0();
extern void sub_8038830();
void CreateSaveMenu(s32 currMenu)
{
s32 iVar4;
if (gUnknown_203B364 == NULL) {
gUnknown_203B364 = MemoryAlloc(sizeof(struct unkStruct_203B360),8);
MemoryFill8((u8 *)gUnknown_203B364,0,sizeof(struct unkStruct_203B360));
}
for(iVar4 = 0; iVar4 < 4; iVar4++){
gUnknown_203B364->unk148[iVar4] = gUnknown_80E6F20;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B364->unk148,1,1);
if (currMenu == MENU_DELETE_SAVE) {
// Beware, Deleting your Adventure
SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gUnknown_80E7090,
0,6,0);
}
else {
// Saving your Adventure
SetMenuItems(&gUnknown_203B364->unk8,gUnknown_203B364->unk148,0,&gUnknown_80E6F38,gUnknown_80E6F50,
0,6,0);
}
sub_8035CF4(&gUnknown_203B364->unk8,0,1);
gUnknown_203B364->unk4 = 0;
gUnknown_203B364->currMenu = currMenu;
sub_8038830();
}
void CleanSaveMenu(void)
{
ResetUnusedInputStruct();
sub_800641C(0,1,1);
if (gUnknown_203B364 != NULL) {
MemoryFree(gUnknown_203B364);
gUnknown_203B364 = NULL;
}
}

View File

@ -11,6 +11,7 @@
#include "text.h"
#include "team_inventory.h"
#include "rescue_password_menu.h"
#include "menu_input.h"
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
@ -36,10 +37,9 @@ extern void sub_803084C();
extern u32 sub_8030768(u32);
extern s8 sub_80307EC();
extern void sub_8030D40(u8, u32);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8030810(u32);
extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32);
extern void sub_8035CF4(u32 *r0, u32, u32);
extern void sub_8035CF4(struct MenuStruct *r0, u32, u32);
extern u32 sub_8030DA0(void);
extern void sub_8030DE4(void);
extern void sub_803092C(void);
@ -50,7 +50,6 @@ extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32
extern void sub_8095274(u32);
extern void sub_80155F0();
extern void sub_80951BC(struct unkStruct_203B480 *r0);
extern void sub_8013114(u32 *r0, s32 *r1);
extern void sub_8023C60();
extern u32 sub_8023A94(u32);
extern void sub_8024458(s16, u32);
@ -86,7 +85,7 @@ extern u32 sub_8023CE8(void);
extern u32 sub_8030894(void);
extern void sub_8030F58(u32);
extern void sub_8023DA4(void);
extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32);
extern void sub_8029B34(void);
extern void sub_8029AD8(void);
extern void sub_8029AF4(void);
@ -203,7 +202,7 @@ ALIGNED(4) const u8 SendWOPokemon[] = _("Send w/o Pokémon");
const struct UnkTextStruct2 gUnknown_80DDACC =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x16, 0x00, 0x07, 0x00,
0x06, 0x04,
0x04, 0x00,
@ -213,7 +212,7 @@ const struct UnkTextStruct2 gUnknown_80DDACC =
const struct UnkTextStruct2 gUnknown_80DDAE4 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x16, 0x00, 0x06, 0x00,
0x06, 0x04,
0x04, 0x00,
@ -536,9 +535,9 @@ void sub_8028348(void)
break;
case 0x34:
sub_8006518(gUnknown_203B2C0->unk35C);
SetMenuItems(&gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, 1, 0, 0);
SetMenuItems(gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, 1, 0, 0);
sub_8023DA4();
sub_8035CF4(&gUnknown_203B2C0->unk21C, 3, 1);
sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1);
break;
case 0x31:
sub_8014248(gUnknown_80DDD2C, 0, 0xA, gUnknown_80DDAA0, 0, 4, 0, &gUnknown_203B2C0->faceFile,0xC);
@ -698,9 +697,9 @@ void sub_8028348(void)
case 0x20:
case 0x2B:
sub_8006518(gUnknown_203B2C0->unk35C);
SetMenuItems(&gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, 1, 0, 0);
SetMenuItems(gUnknown_203B2C0->unk21C, gUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, 1, 0, 0);
sub_803092C();
sub_8035CF4(&gUnknown_203B2C0->unk21C, 3, 1);
sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1);
break;
case 0xA:
gUnknown_203B2C0->unk540 = sub_8095350();
@ -1233,9 +1232,9 @@ void sub_80290F0(void)
s32 menuAction;
menuAction = -1;
sub_8030768(0);
if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0)
if(sub_8012FD8(&(gUnknown_203B2C0->unk21C[3])) == 0)
{
sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction);
sub_8013114(&(gUnknown_203B2C0->unk21C[3]), &menuAction);
}
switch(menuAction)
{
@ -1274,7 +1273,7 @@ void sub_80291AC(void)
sub_803092C();
if(gUnknown_203B2C0->fallbackState == 0x3D)
{
sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1);
sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1);
sub_8028B04(0x20);
}
else
@ -1582,9 +1581,9 @@ void sub_8029684(void)
s32 menuAction;
menuAction = -1;
sub_8030768(0);
if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0)
if(sub_8012FD8(&(gUnknown_203B2C0->unk21C[3])) == 0)
{
sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction);
sub_8013114(&(gUnknown_203B2C0->unk21C[3]), &menuAction);
}
switch(menuAction)
{
@ -1621,7 +1620,7 @@ void sub_8029740(void)
sub_803092C();
if(gUnknown_203B2C0->fallbackState == 0x3D)
{
sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1);
sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1);
sub_8028B04(0x2B);
}
else
@ -1682,9 +1681,9 @@ void sub_8029884(void)
s32 menuAction;
menuAction = -1;
sub_8023A94(0);
if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0)
if(sub_8012FD8(&(gUnknown_203B2C0->unk21C[3])) == 0)
{
sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction);
sub_8013114(&(gUnknown_203B2C0->unk21C[3]), &menuAction);
}
switch(menuAction)
{
@ -1730,7 +1729,7 @@ void sub_8029944(void)
sub_8023B7C(1);
if(gUnknown_203B2C0->fallbackState == 0x3D)
{
sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1);
sub_8035CF4(gUnknown_203B2C0->unk21C, 3, 1);
sub_8028B04(0x34);
}
else

View File

@ -13,6 +13,7 @@
#include "wonder_mail.h"
#include "code_800D090.h"
#include "code_8094F88.h"
#include "menu_input.h"
struct unkStruct_203B2C8
{
@ -155,7 +156,6 @@ extern void sub_80073B8(u32);
extern void sub_802BC7C(void);
extern void sub_80073E0(u32);
extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32);
extern void sub_803B6B0(u32, u32, u32, u32);
extern s32 sub_8013800(u32 *, s32);
@ -166,7 +166,6 @@ extern void sub_801317C(u32 *);
extern u8 HasNoMailinMailbox(void);
extern void sub_802BF30(void);
extern void CreateMailMenu(void);
extern void sub_8012D34(struct UnkTextStruct2 *, u32);
extern s32 CountEmptyMailSlots(void);
extern void sub_8013848(u32 *, s32, u32, u32);
@ -199,7 +198,7 @@ ALIGNED(4) const char wonder_mail_2_fill[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80DFBD0 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -211,7 +210,7 @@ const u8 gUnknown_80DFBE8[] = { 0x01, 0x00, 0x0C, 0x00 };
const struct UnkTextStruct2 gUnknown_80DFBEC =
{
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x18, 0x0E,
0x0E, 0x00,
@ -224,7 +223,7 @@ ALIGNED(4) static const char wonder_mail_2_fill1[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80DFC18 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -236,7 +235,7 @@ const u8 gUnkData_80DFC30[] = { 0x01, 0x00, 0x16, 0x00 };
const struct UnkTextStruct2 gUnknown_80DFC34 =
{
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x1A, 0x10,
0x10, 0x00,
@ -250,7 +249,7 @@ ALIGNED(4) static const char wonder_mail_2_fill2[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80DFC5C =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -260,7 +259,7 @@ const struct UnkTextStruct2 gUnknown_80DFC5C =
const struct UnkTextStruct2 gUnknown_80DFC74 =
{
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x18, 0x0E,
0x0E, 0x00,
@ -273,7 +272,7 @@ ALIGNED(4) static const char wonder_mail_2_fill3[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80DFC9C =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -283,7 +282,7 @@ const struct UnkTextStruct2 gUnknown_80DFC9C =
const struct UnkTextStruct2 gUnknown_80DFCB4 =
{
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x18, 0x0E,
0x0E, 0x00,

View File

@ -5,6 +5,7 @@
#include "text.h"
#include "menu.h"
#include "code_802C39C.h"
#include "menu_input.h"
struct unkStruct_203B2E8
{
@ -37,8 +38,8 @@ struct unkStruct_203B2F0
u32 unk10;
u8 fill14[0x68 - 0x14];
u32 unk68;
u8 fill6C[0xBC - 0x6C];
u8 unkBC[0x10C - 0xBC];
struct MenuStruct unk6C;
struct MenuStruct unkBC;
struct MenuItem unk10C[8];
struct MenuItem unk14C[8];
u8 fill18C[0x19C - 0x18C];
@ -54,7 +55,7 @@ u16 gUnknown_203B2EC;
const struct UnkTextStruct2 gUnknown_80DFCE4 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -64,7 +65,7 @@ const struct UnkTextStruct2 gUnknown_80DFCE4 =
const struct UnkTextStruct2 gUnknown_80DFCFC =
{
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x18, 0x0E,
0x0E, 0x00,
@ -77,7 +78,7 @@ static const u8 wonder_mail_fill[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80DFD28 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -87,7 +88,7 @@ const struct UnkTextStruct2 gUnknown_80DFD28 =
const struct UnkTextStruct2 gUnknown_80DFD40 =
{
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00,
0x04,
0x15, 0x00, 0x06, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -97,7 +98,7 @@ const struct UnkTextStruct2 gUnknown_80DFD40 =
const struct UnkTextStruct2 gUnknown_80DFD58 =
{
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00,
0x04,
0x15, 0x00, 0x0f, 0x00,
0x06, 0x03,
0x03, 0x00,
@ -111,7 +112,7 @@ static const u8 wonder_mail_fill0[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80DFD8C =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -121,7 +122,7 @@ const struct UnkTextStruct2 gUnknown_80DFD8C =
const struct UnkTextStruct2 gUnknown_80DFDA4 =
{
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x18, 0x0e,
0x0e, 0x00,
@ -131,7 +132,6 @@ const struct UnkTextStruct2 gUnknown_80DFDA4 =
const u8 gUnknown_80DFDBC[] = "RESCUE EVENT";
static const u8 wonder_mail_fill1[] = "pksdir0";
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_802CAA4(void);
extern u8 IsJobSlotEmpty(u8);
extern void sub_8008C54(u32);
@ -142,7 +142,6 @@ extern struct WonderMail* GetJobSlotInfo(u8);
extern s32 sub_8013800(void *, u32);
extern void sub_803B35C(void *, u32 *);
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void CreateRescueTitle(void *);
extern void sub_8013984(u32 *);
@ -154,7 +153,6 @@ extern s32 GetKeyPress(void *);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013660(void *);
extern void sub_8013848(u32 *, s32, u32, u32);
extern void sub_8012D34(struct UnkTextStruct2 *, u32);
extern bool8 IsPelipperBoardSlotEmpty(u8);
extern void sub_802C910(u32);
extern void sub_802CC00(void);
@ -163,9 +161,7 @@ extern void sub_802CD38(void);
extern void sub_802CDB8(void);
extern void sub_802C928(void);
extern void sub_802C9D8(void);
extern void sub_8012D60(u8 *, struct MenuItem *, u32, u16 *, u32, u32);
extern void sub_802DE84(u32 *);
extern void sub_8012EA4(u8 *, u32);
extern void sub_802CBAC(void);
s32 CountAcceptedJobs(void);
@ -499,13 +495,13 @@ void sub_802C9D8(void)
break;
case 2:
sub_802C750();
sub_8012D60(gUnknown_203B2F0->fill6C, gUnknown_203B2F0->unk10C, 0, 0, gUnknown_203B2F0->unk68, 2);
sub_8012D60(&gUnknown_203B2F0->unk6C, gUnknown_203B2F0->unk10C, 0, 0, gUnknown_203B2F0->unk68, 2);
break;
case 3:
sub_802CBAC();
sub_802C750();
sub_8012EA4(gUnknown_203B2F0->fill6C, 0);
sub_8012D60(gUnknown_203B2F0->unkBC, gUnknown_203B2F0->unk14C, 0, 0, 6, 3);
sub_8012EA4(&gUnknown_203B2F0->unk6C, 0);
sub_8012D60(&gUnknown_203B2F0->unkBC, gUnknown_203B2F0->unk14C, 0, 0, 6, 3);
break;
case 4:
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F0->unkC), &gUnknown_203B2F0->unk10);

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/input.h"
#include "constants/mailbox.h"
#include "code_800D090.h"
#include "input.h"
@ -7,12 +8,12 @@
#include "pokemon_mail.h"
#include "wonder_mail.h"
#include "code_802C39C.h"
#include "menu_input.h"
bool8 IsMailSlotEmpty(u8);
extern void sub_8013984(void *);
extern void sub_8013848(u32 *, s32, u32, u32);
extern s32 sub_802C474(void);
extern void sub_8012D34(struct UnkTextStruct2 *, u32);
extern void sub_802C328(void);
extern void sub_802C39C(void);
extern void PlayMenuSoundEffect(u32);
@ -32,7 +33,6 @@ extern u8 gBulletinBoardText[];
extern bool8 IsMailinJobSlot(struct WonderMail *);
extern void CreateRescueTitle(void *);
extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32);
extern void sub_8012BC4(s32, s32, s32, s32 ,s32 ,s32);
struct unkStruct_203B2D8
@ -196,13 +196,13 @@ u32 sub_802C1E4(u8 param_1)
else {
switch(GetKeyPress(&gUnknown_203B2E0->unk8))
{
case 2:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case 1:
case INPUT_A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
case 4:
case INPUT_START_BUTTON:
PlayMenuSoundEffect(4);
return 4;
default:

View File

@ -8,11 +8,12 @@
#include "wonder_mail.h"
#include "wonder_mail_3.h"
#include "code_802C39C.h"
#include "menu_input.h"
const struct UnkTextStruct2 gUnknown_80DFDD4 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -23,7 +24,7 @@ const struct UnkTextStruct2 gUnknown_80DFDD4 =
const struct UnkTextStruct2 gUnknown_80DFDEC =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x03, 0x00, 0x03, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -33,7 +34,7 @@ const struct UnkTextStruct2 gUnknown_80DFDEC =
const struct UnkTextStruct2 gUnknown_80DFE04 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x15, 0x00, 0x06, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -42,7 +43,7 @@ const struct UnkTextStruct2 gUnknown_80DFE04 =
const struct UnkTextStruct2 gUnknown_80DFE1C =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x15, 0x00, 0x0f, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -53,7 +54,7 @@ const struct UnkTextStruct2 gUnknown_80DFE1C =
const struct UnkTextStruct2 gUnknown_80DFE34 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x15, 0x00, 0x0f, 0x00,
0x06, 0x03,
0x03, 0x00,
@ -104,7 +105,6 @@ ALIGNED(4) const u8 gUnknown_80E014C[] = "New Mail";
ALIGNED(4) const u8 gUnknown_80E0158[] = "Old Mail";
static const u8 wonder_mail_3_fill[] = "pksdir0";
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_802D63C(void);
extern void sub_802D5A4(void);
@ -131,7 +131,6 @@ extern u8 *sub_8096DD8(void);
extern u8 sub_8096C08(u8 *);
extern void sub_802C750(void);
extern void sub_802D1A0(u32);
extern void sub_8012EA4(u8 *, u32);
extern struct WonderMail* GetJobSlotInfo(u8);
extern void sub_803B35C(void *, u32*);
extern void sub_802DE84(u32 *);
@ -143,13 +142,11 @@ extern void sub_802D690(void);
extern void sub_8096C80(void);
extern void sub_8096D24(void);
extern void sub_80141B4(const u8 *, u32, u32, u32);
extern void sub_8012D60(u8 *, struct MenuItem *, u32, u16 *, u32, u32);
extern u8 *sub_8096DE8(void);
extern void sub_8096A78(struct unkSubStruct_203B2F8 *);
extern void sub_8014248(const char *text, u32, u32, struct MenuItem *r0, u32, u32, u32, u32, u32);
struct unkStruct_803B344 *sub_803B344(u8);
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
@ -272,13 +269,13 @@ void sub_802D1B8(void)
sub_802D5A4();
gUnknown_203B2F8->unk1A8[2] = gUnknown_80DFE04;
sub_8012CAC(&gUnknown_203B2F8->unk1A8[2], gUnknown_203B2F8->unk118);
gUnknown_203B2F8->unk1A8[2].unk0c = 6;
gUnknown_203B2F8->unk1A8[2].unkC = 6;
break;
case 0xE:
sub_802D63C();
gUnknown_203B2F8->unk1A8[3] = gUnknown_80DFE1C;
sub_8012CAC(&gUnknown_203B2F8->unk1A8[3], gUnknown_203B2F8->unk158);
gUnknown_203B2F8->unk1A8[3].unk0c = 6;
gUnknown_203B2F8->unk1A8[3].unkC = 6;
break;
default:
for(iVar2 = 0; iVar2 < 4; iVar2++)
@ -391,13 +388,13 @@ void sub_802D2A8(void)
break;
case 0xd:
sub_802C750();
sub_8012D60(gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198,
sub_8012D60(&gUnknown_203B2F8->unk78,gUnknown_203B2F8->unk118,0,gUnknown_203B2F8->unk198,
gUnknown_203B2F8->unk6C,2);
break;
case 0xe:
sub_802C750();
sub_8012EA4(gUnknown_203B2F8->unk78,0);
sub_8012D60(gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
sub_8012EA4(&gUnknown_203B2F8->unk78,0);
sub_8012D60(&gUnknown_203B2F8->unkC8,gUnknown_203B2F8->unk158,0,0,4,3);
break;
case 0xf:
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->jobSlotIndex),&gUnknown_203B2F8->unk14);

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "constants/input.h"
#include "memory.h"
#include "text.h"
#include "input.h"
@ -8,6 +9,7 @@
#include "rescue_team_info.h"
#include "friend_area.h"
#include "item.h"
#include "menu_input.h"
struct unkStruct_803B344
{
@ -33,8 +35,7 @@ struct unkStruct_203B30C
u8 fill4D[0x58 - 0x4D];
u8 *unk58;
u32 unk5C;
u32 unk60;
u8 fill64[0xB0 - 0x64];
struct MenuStruct unk60;
struct MenuItem unkB0[8];
struct UnkTextStruct2 unkF0[4];
};
@ -100,7 +101,6 @@ extern struct unkStruct_203B314 *gUnknown_203B314;
extern u8 sub_802FCF0(u32);
extern void sub_802F9C0(void);
extern void sub_802FA50(void);
extern void sub_8012D08(struct UnkTextStruct2 *, u32);
extern void sub_8013818(u32 *, u32, u32, u32);
extern u32 sub_802FBF4(void);
extern void sub_8013878(u32 *, s32);
@ -118,18 +118,14 @@ extern void sub_801B72C(void);
extern u32 sub_801B6AC(void);
extern void sub_802F108(void);
extern s32 sub_80144A4(s32 *);
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern void sub_803B35C(struct WonderMail*, u32 *);
extern void sub_802DE84(u32 *);
extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
extern void sub_802CDD4(u32);
extern void sub_802CED8(u32);
extern void sub_802CFD0(void);
extern u8 sub_802CEBC(void);
extern u32 sub_802CE5C(u32);
extern void sub_802CF14(void);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_802DEE0(void);
extern void sub_802DF24(void);
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
@ -150,7 +146,7 @@ void HandleMissionReward(void);
const struct UnkTextStruct2 gUnknown_80E03C4 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -158,7 +154,7 @@ const struct UnkTextStruct2 gUnknown_80E03C4 = {
};
const struct UnkTextStruct2 gUnknown_80E03DC = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x03, 0x00, 0x03, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -166,7 +162,7 @@ const struct UnkTextStruct2 gUnknown_80E03DC = {
};
const struct UnkTextStruct2 gUnknown_80E03F4 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x15, 0x00, 0x06, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -177,7 +173,7 @@ const u8 gUnknown_80E040C[] = "Send";
static const u8 wonder_mail_fill[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80E041C = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -238,7 +234,7 @@ static const u8 wonder_mail_fill2[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80E06FC = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -247,7 +243,7 @@ const struct UnkTextStruct2 gUnknown_80E06FC = {
const struct UnkTextStruct2 gUnknown_80E0714 = {
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x0E, 0x0E,
0x0E, 0x00,
@ -255,7 +251,7 @@ const struct UnkTextStruct2 gUnknown_80E0714 = {
};
const struct UnkTextStruct2 gUnknown_80E072C = {
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x10, 0x10,
0x10, 0x00,
@ -798,10 +794,10 @@ u32 sub_802F8A0(u8 r0)
{
switch(GetKeyPress(&gUnknown_203B314->unkBC))
{
case 2:
case INPUT_B_BUTTON:
PlayMenuSoundEffect(1);
return 2;
case 1:
case INPUT_A_BUTTON:
PlayMenuSoundEffect(0);
return 3;
default:

View File

@ -7,6 +7,7 @@
#include "code_8094F88.h"
#include "constants/wonder_mail.h"
#include "code_802C39C.h"
#include "menu_input.h"
struct unkStruct_203B320
{
@ -33,7 +34,7 @@ extern struct unkStruct_203B480 *gUnknown_203B480;
const struct UnkTextStruct2 gUnknown_80E083C = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -42,7 +43,7 @@ const struct UnkTextStruct2 gUnknown_80E083C = {
const struct UnkTextStruct2 gUnknown_80E0854 = {
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x18, 0x11,
0x11, 0x00,
@ -96,7 +97,6 @@ extern void sub_8013984(u32 *);
extern void AddMenuCursorSprite(u32 *);
extern s32 sub_8013800(void *, u32);
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);

View File

@ -24,7 +24,7 @@ extern struct unkStruct_203B480 *gUnknown_203B480;
const struct UnkTextStruct2 gUnknown_80E0900 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -35,7 +35,7 @@ const u8 DATA_80E0918[] = {0x01, 0x00, 0x12, 0x00};
const struct UnkTextStruct2 gUnknown_80E091C = {
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x1A, 0x10,
0x10, 0x00,

View File

@ -6,6 +6,7 @@
#include "pokemon.h"
#include "menu.h"
#include "code_8094F88.h"
#include "menu_input.h"
extern bool8 HasNoWonderMailType(u32);
@ -14,10 +15,8 @@ struct unkStruct_203B328
// size: 0x11C
u32 state;
u8 mailIndex;
u32 unk8;
u8 fillC[0x58 - 0xC];
u32 unk58;
u8 fill5C[0xA8 - 0x5C];
struct MenuStruct unk8;
struct MenuStruct unk58;
struct UnkTextStruct2 unkA8[4];
/* 0x108 */ struct OpenedFile *faceFile;
/* 0x10C */ u8 *faceData;
@ -47,7 +46,7 @@ const struct MenuItem gUnknown_80E0968[] =
const struct UnkTextStruct2 gUnknown_80E0990 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -55,7 +54,7 @@ const struct UnkTextStruct2 gUnknown_80E0990 = {
};
const struct UnkTextStruct2 gUnknown_80E09A8 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x13, 0x00, 0x0B, 0x00,
0x08, 0x03,
0x03, 0x00,
@ -63,7 +62,7 @@ const struct UnkTextStruct2 gUnknown_80E09A8 = {
};
const struct UnkTextStruct2 gUnknown_80E09C0 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x11, 0x00, 0x0F, 0x00,
0x07, 0x03,
0x03, 0x00,
@ -79,7 +78,6 @@ ALIGNED(4) const u8 gUnknown_80E0A0C[] = _(
"You don{APOSTROPHE}t have any {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}.");
const u8 wonder_mail_6_fill[] = "pksdir0";
extern void sub_8012CAC(struct UnkTextStruct2 *, const struct MenuItem *);
extern void sub_80306A8(s32, u32, u32, u32);
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern void sub_8031300(void);
@ -97,10 +95,6 @@ extern void sub_8030DE4();
extern void sub_8030810(u32);
extern void sub_803092C(void);
extern void sub_8030D40(u8, u32);
extern void sub_8012EA4(u32 *, u32);
extern void sub_8012D60(u32 *, const struct MenuItem *, u32, u32, u32, u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern void sub_8095240(u8);
bool8 sub_8030F58(u32 wonderMailType)

View File

@ -9,6 +9,7 @@
#include "wonder_mail.h"
#include "wonder_mail_3.h"
#include "code_80958E8.h"
#include "menu_input.h"
struct unkStruct_203B2FC
{
@ -54,7 +55,7 @@ extern u8 gUnknown_202DE58[];
const struct UnkTextStruct2 gUnknown_80E016C =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -84,7 +85,7 @@ static const u8 wonder_mail_802DF88_fill[] = "pksdir0";
const struct UnkTextStruct2 gUnknown_80E0248 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
@ -96,7 +97,7 @@ const u8 UnkData_80E0260[] = {0x01, 0x00, 0x12, 0x00};
const struct UnkTextStruct2 gUnknown_80E0264 =
{
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x06,
0x02, 0x00, 0x02, 0x00,
0x1A, 0x10,
0x10, 0x00,
@ -123,8 +124,6 @@ struct WonderMail *GetJobSlotInfo(u8);
extern void sub_8096AF8(u8 *, u32, u32);
extern void sub_8096EEC(void);
extern void sub_803C21C(struct WonderMail *, u32 *);
extern u8 sub_8012FD8(u8 *);
extern void sub_8013114(u8 *r0, s32 *r1);
extern u32 sub_802C598(s32);
extern void sub_802C688(void);
extern void sub_8096C80(void);
@ -227,7 +226,7 @@ void sub_802D940(void)
menuAction = 0;
sub_802C598(0);
if ((sub_8012FD8(gUnknown_203B2F8->unk78) == 0) && (sub_8013114(gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) {
if ((sub_8012FD8(&gUnknown_203B2F8->unk78) == 0) && (sub_8013114(&gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) {
gUnknown_203B2F8->unk6C = menuAction;
}
@ -258,9 +257,9 @@ void sub_802D9F0(void)
menuAction = 0;
sub_802C598(0);
sub_8012FD8(gUnknown_203B2F8->unk78);
if (sub_8012FD8(gUnknown_203B2F8->unkC8) == 0) {
sub_8013114(gUnknown_203B2F8->unkC8,&menuAction);
sub_8012FD8(&gUnknown_203B2F8->unk78);
if (sub_8012FD8(&gUnknown_203B2F8->unkC8) == 0) {
sub_8013114(&gUnknown_203B2F8->unkC8,&menuAction);
}
switch(menuAction)