mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-24 01:35:07 -05:00
1277
asm/code_80130A8.s
1277
asm/code_80130A8.s
File diff suppressed because it is too large
Load Diff
@@ -1,112 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_801BB5C
|
||||
sub_801BB5C:
|
||||
push {r4-r7,lr}
|
||||
ldr r4, _0801BBEC
|
||||
ldr r2, [r4]
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xCC
|
||||
ldr r0, _0801BBF0
|
||||
str r0, [r1]
|
||||
adds r1, 0x4
|
||||
movs r0, 0x6
|
||||
str r0, [r1]
|
||||
ldr r0, [r2, 0x24]
|
||||
bl sub_801ADA0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0801BB86
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xD0
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0]
|
||||
_0801BB86:
|
||||
ldr r0, [r4]
|
||||
mov r12, r0
|
||||
movs r3, 0x1
|
||||
movs r2, 0x8
|
||||
mov r1, r12
|
||||
adds r1, 0xD4
|
||||
ldr r0, _0801BBF4
|
||||
str r0, [r1]
|
||||
adds r1, 0x4
|
||||
movs r0, 0x7
|
||||
str r0, [r1]
|
||||
adds r1, 0x4
|
||||
ldr r0, _0801BBF8
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
mov r0, r12
|
||||
adds r0, 0xE0
|
||||
str r2, [r0]
|
||||
movs r5, 0x3
|
||||
adds r1, 0x8
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
mov r0, r12
|
||||
adds r0, 0xE8
|
||||
str r3, [r0]
|
||||
movs r3, 0
|
||||
adds r6, r4, 0
|
||||
movs r7, 0x1
|
||||
negs r7, r7
|
||||
mov r4, r12
|
||||
adds r4, 0xC8
|
||||
subs r1, 0x14
|
||||
_0801BBC6:
|
||||
ldr r2, [r1]
|
||||
cmp r2, r7
|
||||
beq _0801BBD2
|
||||
ldr r0, [r4]
|
||||
cmp r2, r0
|
||||
beq _0801BC1C
|
||||
_0801BBD2:
|
||||
adds r1, 0x8
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
blt _0801BBC6
|
||||
movs r3, 0
|
||||
cmp r3, r5
|
||||
bge _0801BC1C
|
||||
ldr r2, [r6]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xD0
|
||||
ldr r1, [r0]
|
||||
b _0801BC0E
|
||||
.align 2, 0
|
||||
_0801BBEC: .4byte gUnknown_203B234
|
||||
_0801BBF0: .4byte gKangaskhanStorage
|
||||
_0801BBF4: .4byte gKangaskhanTrash
|
||||
_0801BBF8: .4byte gUnknown_80D4970
|
||||
_0801BBFC:
|
||||
adds r3, 0x1
|
||||
cmp r3, r5
|
||||
bge _0801BC1C
|
||||
ldr r2, [r6]
|
||||
lsls r0, r3, 3
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xD0
|
||||
adds r1, r0
|
||||
ldr r1, [r1]
|
||||
_0801BC0E:
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r1, r0
|
||||
beq _0801BBFC
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xC8
|
||||
str r1, [r0]
|
||||
_0801BC1C:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_801BB5C
|
||||
|
||||
.align 2,0
|
||||
@@ -204,354 +204,4 @@ _0801D384:
|
||||
_0801D3A4: .4byte gUnknown_203B250
|
||||
thumb_func_end sub_801D220
|
||||
|
||||
thumb_func_start sub_801D3A8
|
||||
sub_801D3A8:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
ldr r1, _0801D3C4
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0, 0x10]
|
||||
adds r6, r1, 0
|
||||
cmp r0, 0xC
|
||||
bls _0801D3BA
|
||||
b _0801D4B6
|
||||
_0801D3BA:
|
||||
lsls r0, 2
|
||||
ldr r1, _0801D3C8
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0801D3C4: .4byte gUnknown_203B250
|
||||
_0801D3C8: .4byte _0801D3CC
|
||||
.align 2, 0
|
||||
_0801D3CC:
|
||||
.4byte _0801D400
|
||||
.4byte _0801D400
|
||||
.4byte _0801D4B6
|
||||
.4byte _0801D458
|
||||
.4byte _0801D462
|
||||
.4byte _0801D468
|
||||
.4byte _0801D472
|
||||
.4byte _0801D47A
|
||||
.4byte _0801D482
|
||||
.4byte _0801D490
|
||||
.4byte _0801D49C
|
||||
.4byte _0801D4AA
|
||||
.4byte _0801D4B2
|
||||
_0801D400:
|
||||
ldr r0, [r6]
|
||||
ldr r5, [r0]
|
||||
cmp r5, 0
|
||||
beq _0801D438
|
||||
ldr r4, _0801D434
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x7
|
||||
bl PrintColoredPokeNameToBuffer
|
||||
ldr r2, [r6]
|
||||
str r4, [r2, 0x18]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x18
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x68
|
||||
adds r3, r2, 0
|
||||
adds r3, 0xA8
|
||||
ldr r2, [r2, 0x14]
|
||||
str r2, [sp]
|
||||
movs r2, 0
|
||||
str r2, [sp, 0x4]
|
||||
bl sub_8012D60
|
||||
b _0801D4B6
|
||||
.align 2, 0
|
||||
_0801D434: .4byte gAvailablePokemonNames
|
||||
_0801D438:
|
||||
bl sub_801D894
|
||||
ldr r2, [r6]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x18
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x68
|
||||
adds r3, r2, 0
|
||||
adds r3, 0xA8
|
||||
ldr r2, [r2, 0x14]
|
||||
str r2, [sp]
|
||||
str r5, [sp, 0x4]
|
||||
movs r2, 0
|
||||
bl sub_8012D60
|
||||
b _0801D4B6
|
||||
_0801D458:
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0]
|
||||
bl sub_80227B8
|
||||
b _0801D4B6
|
||||
_0801D462:
|
||||
bl sub_8027074
|
||||
b _0801D4B6
|
||||
_0801D468:
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0]
|
||||
bl sub_8025EF4
|
||||
b _0801D4B6
|
||||
_0801D472:
|
||||
movs r0, 0
|
||||
bl sub_80252F0
|
||||
b _0801D4B6
|
||||
_0801D47A:
|
||||
movs r0, 0x1
|
||||
bl sub_80252F0
|
||||
b _0801D4B6
|
||||
_0801D482:
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, 0x2
|
||||
bl sub_8024458
|
||||
b _0801D4B6
|
||||
_0801D490:
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r0, r1]
|
||||
bl sub_801BEEC
|
||||
b _0801D4B6
|
||||
_0801D49C:
|
||||
ldr r0, [r6]
|
||||
ldrb r0, [r0, 0x6]
|
||||
movs r1, 0x1
|
||||
movs r2, 0x2
|
||||
bl sub_8021774
|
||||
b _0801D4B6
|
||||
_0801D4AA:
|
||||
movs r0, 0
|
||||
bl InitializeJobListMenu
|
||||
b _0801D4B6
|
||||
_0801D4B2:
|
||||
bl sub_801DCC4
|
||||
_0801D4B6:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_801D3A8
|
||||
|
||||
thumb_func_start sub_801D4C0
|
||||
sub_801D4C0:
|
||||
push {r4-r7,lr}
|
||||
movs r6, 0
|
||||
ldr r4, _0801D554
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xA8
|
||||
movs r1, 0
|
||||
movs r2, 0x10
|
||||
bl MemoryFill16
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x6]
|
||||
cmp r0, 0
|
||||
bne _0801D568
|
||||
bl sub_8096E2C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801D534
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x2
|
||||
str r0, [r1, 0x6C]
|
||||
ldr r0, _0801D558
|
||||
str r0, [r1, 0x68]
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
cmp r0, 0
|
||||
bne _0801D4FE
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xA8
|
||||
movs r1, 0x1
|
||||
strh r1, [r0]
|
||||
_0801D4FE:
|
||||
ldr r1, [r4]
|
||||
ldr r0, _0801D55C
|
||||
str r0, [r1, 0x70]
|
||||
movs r0, 0x4
|
||||
str r0, [r1, 0x74]
|
||||
movs r6, 0x2
|
||||
movs r0, 0x2
|
||||
bl sub_80023E4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801D534
|
||||
ldr r1, [r4]
|
||||
ldr r0, _0801D560
|
||||
str r0, [r1, 0x78]
|
||||
movs r0, 0x9
|
||||
str r0, [r1, 0x7C]
|
||||
bl HasNoAcceptedJobs
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801D532
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xAC
|
||||
movs r1, 0x1
|
||||
strh r1, [r0]
|
||||
_0801D532:
|
||||
movs r6, 0x3
|
||||
_0801D534:
|
||||
ldr r4, _0801D554
|
||||
ldr r2, [r4]
|
||||
lsls r3, r6, 3
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x68
|
||||
adds r0, r3
|
||||
ldr r1, _0801D564
|
||||
str r1, [r0]
|
||||
adds r2, 0x6C
|
||||
adds r2, r3
|
||||
movs r0, 0xB
|
||||
str r0, [r2]
|
||||
adds r6, 0x1
|
||||
adds r7, r4, 0
|
||||
b _0801D5E6
|
||||
.align 2, 0
|
||||
_0801D554: .4byte gUnknown_203B250
|
||||
_0801D558: .4byte gMenuItems
|
||||
_0801D55C: .4byte gMenuTeam
|
||||
_0801D560: .4byte gMenuJobList
|
||||
_0801D564: .4byte gMenuOthers
|
||||
_0801D568:
|
||||
ldr r0, _0801D63C
|
||||
ldr r1, _0801D640
|
||||
bl strcpy
|
||||
bl sub_8096E2C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801D5B6
|
||||
ldr r1, [r4]
|
||||
ldr r0, _0801D644
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, 0x68]
|
||||
movs r0, 0x5
|
||||
str r0, [r1, 0x6C]
|
||||
movs r0, 0x4
|
||||
bl sub_8024108
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801D59A
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xA8
|
||||
movs r1, 0x1
|
||||
strh r1, [r0]
|
||||
_0801D59A:
|
||||
movs r6, 0x1
|
||||
ldr r1, [r4]
|
||||
movs r0, 0x2
|
||||
str r0, [r1, 0x74]
|
||||
ldr r0, _0801D648
|
||||
str r0, [r1, 0x70]
|
||||
bl GetNumberOfFilledInventorySlots
|
||||
cmp r0, 0
|
||||
bne _0801D5B4
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xAA
|
||||
strh r6, [r0]
|
||||
_0801D5B4:
|
||||
movs r6, 0x2
|
||||
_0801D5B6:
|
||||
ldr r5, _0801D64C
|
||||
ldr r1, [r5]
|
||||
lsls r2, r6, 3
|
||||
adds r3, r1, 0
|
||||
adds r3, 0x68
|
||||
adds r4, r3, r2
|
||||
ldr r0, _0801D650
|
||||
ldr r0, [r0]
|
||||
str r0, [r4]
|
||||
adds r1, 0x6C
|
||||
adds r2, r1, r2
|
||||
movs r0, 0x8
|
||||
str r0, [r2]
|
||||
adds r6, 0x1
|
||||
lsls r2, r6, 3
|
||||
adds r3, r2
|
||||
ldr r0, _0801D654
|
||||
ldr r0, [r0]
|
||||
str r0, [r3]
|
||||
adds r1, r2
|
||||
movs r0, 0xA
|
||||
str r0, [r1]
|
||||
adds r6, 0x1
|
||||
adds r7, r5, 0
|
||||
_0801D5E6:
|
||||
ldr r4, [r7]
|
||||
lsls r2, r6, 3
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x68
|
||||
adds r0, r2
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x6C
|
||||
adds r2, r1, r2
|
||||
movs r0, 0x1
|
||||
str r0, [r2]
|
||||
movs r3, 0
|
||||
cmp r3, r6
|
||||
bge _0801D622
|
||||
adds r5, r4, 0
|
||||
adds r4, 0xA8
|
||||
adds r2, r1, 0
|
||||
_0801D60A:
|
||||
ldrh r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _0801D618
|
||||
ldr r1, [r2]
|
||||
ldr r0, [r5, 0x14]
|
||||
cmp r1, r0
|
||||
beq _0801D67A
|
||||
_0801D618:
|
||||
adds r4, 0x2
|
||||
adds r2, 0x8
|
||||
adds r3, 0x1
|
||||
cmp r3, r6
|
||||
blt _0801D60A
|
||||
_0801D622:
|
||||
movs r3, 0
|
||||
cmp r3, r6
|
||||
bge _0801D67A
|
||||
ldr r1, [r7]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xA8
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0801D658
|
||||
ldr r0, [r1, 0x6C]
|
||||
str r0, [r1, 0x14]
|
||||
b _0801D67A
|
||||
.align 2, 0
|
||||
_0801D63C: .4byte gAvailablePokemonNames
|
||||
_0801D640: .4byte gUnknown_80DBF34
|
||||
_0801D644: .4byte gUnknown_80D49A8
|
||||
_0801D648: .4byte gMenuItems
|
||||
_0801D64C: .4byte gUnknown_203B250
|
||||
_0801D650: .4byte gUnknown_80D4970
|
||||
_0801D654: .4byte gUnknown_80D49B4
|
||||
_0801D658:
|
||||
adds r3, 0x1
|
||||
cmp r3, r6
|
||||
bge _0801D67A
|
||||
ldr r2, [r7]
|
||||
lsls r0, r3, 1
|
||||
adds r1, r2, 0
|
||||
adds r1, 0xA8
|
||||
adds r1, r0
|
||||
ldrh r0, [r1]
|
||||
cmp r0, 0
|
||||
bne _0801D658
|
||||
lsls r0, r3, 3
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x6C
|
||||
adds r1, r0
|
||||
ldr r0, [r1]
|
||||
str r0, [r2, 0x14]
|
||||
_0801D67A:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_801D4C0
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -605,34 +605,4 @@ _0801F3F0: .4byte gUnknown_203B270
|
||||
_0801F3F4: .4byte gUnknown_80DC2A0
|
||||
thumb_func_end sub_801F280
|
||||
|
||||
thumb_func_start sub_801F3F8
|
||||
sub_801F3F8:
|
||||
push {r4,r5,lr}
|
||||
movs r4, 0
|
||||
ldr r0, _0801F424
|
||||
ldr r0, [r0]
|
||||
movs r5, 0x1
|
||||
ldr r2, [r0, 0x10]
|
||||
movs r3, 0x7
|
||||
_0801F406:
|
||||
ldrb r1, [r2]
|
||||
adds r0, r5, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0801F412
|
||||
adds r4, 0x1
|
||||
_0801F412:
|
||||
adds r2, 0x8
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bge _0801F406
|
||||
adds r0, r4, 0
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0801F424: .4byte gUnknown_203B270
|
||||
thumb_func_end sub_801F3F8
|
||||
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -5,405 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8023420
|
||||
sub_8023420:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _080234A8
|
||||
ldr r0, [r4]
|
||||
movs r1, 0xFE
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
movs r2, 0
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
ldr r1, _080234AC
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r1, 0x1
|
||||
adds r0, r1
|
||||
movs r1, 0xC
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
ldr r1, _080234B0
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4]
|
||||
ldr r2, _080234B4
|
||||
adds r0, r2
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, 0xC
|
||||
bl sub_80095E4
|
||||
adds r0, 0x2
|
||||
ldr r3, [r4]
|
||||
movs r2, 0xE4
|
||||
lsls r2, 2
|
||||
adds r5, r3, r2
|
||||
ldr r2, [r5]
|
||||
lsls r1, r2, 1
|
||||
adds r1, r2
|
||||
lsls r1, 3
|
||||
adds r1, r3, r1
|
||||
ldr r2, _080234B8
|
||||
adds r1, r2
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
strh r0, [r1]
|
||||
ldr r2, [r5]
|
||||
lsls r1, r2, 1
|
||||
adds r1, r2
|
||||
lsls r1, 3
|
||||
adds r3, r1
|
||||
movs r1, 0xEA
|
||||
lsls r1, 2
|
||||
adds r3, r1
|
||||
strh r0, [r3]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
movs r2, 0xE6
|
||||
lsls r2, 2
|
||||
adds r0, r2
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080234A8: .4byte gUnknown_3001B5C
|
||||
_080234AC: .4byte 0x000003f9
|
||||
_080234B0: .4byte 0x000003fb
|
||||
_080234B4: .4byte 0x00000376
|
||||
_080234B8: .4byte 0x000003a6
|
||||
thumb_func_end sub_8023420
|
||||
|
||||
thumb_func_start sub_80234BC
|
||||
sub_80234BC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x178
|
||||
ldr r5, _0802368C
|
||||
ldr r0, [r5]
|
||||
movs r4, 0xE4
|
||||
lsls r4, 2
|
||||
adds r0, r4
|
||||
ldr r0, [r0]
|
||||
bl sub_8008C54
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldr r0, [r0]
|
||||
bl sub_80073B8
|
||||
ldr r2, _08023690
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldr r3, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0xA
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
ldr r3, [r5]
|
||||
ldr r1, _08023694
|
||||
adds r0, r3, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 3
|
||||
adds r0, 0x4
|
||||
ldr r2, _08023698
|
||||
adds r1, r3, r2
|
||||
movs r6, 0
|
||||
ldrsh r2, [r1, r6]
|
||||
adds r2, 0x1
|
||||
movs r1, 0x7
|
||||
str r1, [sp]
|
||||
adds r3, r4
|
||||
ldr r1, [r3]
|
||||
str r1, [sp, 0x4]
|
||||
movs r1, 0
|
||||
movs r3, 0x2
|
||||
bl sub_8012BC4
|
||||
movs r0, 0
|
||||
mov r10, r0
|
||||
ldr r0, [r5]
|
||||
ldr r1, _0802369C
|
||||
adds r0, r1
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
cmp r10, r0
|
||||
blt _08023532
|
||||
b _0802366C
|
||||
_08023532:
|
||||
ldr r3, _0802368C
|
||||
ldr r0, [r3]
|
||||
movs r6, 0xD7
|
||||
lsls r6, 2
|
||||
adds r0, r6
|
||||
mov r1, r10
|
||||
bl sub_8013800
|
||||
mov r8, r0
|
||||
ldr r0, _0802368C
|
||||
ldr r1, [r0]
|
||||
ldr r2, _08023698
|
||||
adds r0, r1, r2
|
||||
movs r3, 0
|
||||
ldrsh r2, [r0, r3]
|
||||
adds r6, 0x1C
|
||||
adds r0, r1, r6
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
muls r0, r2
|
||||
add r0, r10
|
||||
lsls r0, 1
|
||||
adds r1, 0xC
|
||||
adds r1, r0
|
||||
movs r6, 0
|
||||
ldrsh r5, [r1, r6]
|
||||
adds r0, r5, 0
|
||||
bl GetFriendArea
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
add r4, sp, 0x16C
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl sub_8092638
|
||||
movs r7, 0x7
|
||||
ldrb r0, [r4, 0x4]
|
||||
cmp r0, 0
|
||||
beq _08023594
|
||||
adds r0, r5, 0
|
||||
bl HasRecruitedMon
|
||||
lsls r0, 24
|
||||
movs r7, 0x4
|
||||
cmp r0, 0
|
||||
beq _08023594
|
||||
movs r7, 0x5
|
||||
_08023594:
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
bl GetDexInternalNo
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xA
|
||||
bl __modsi3
|
||||
adds r2, r0, 0
|
||||
adds r2, 0x30
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
ldr r6, _0802368C
|
||||
ldr r0, [r6]
|
||||
movs r1, 0xE4
|
||||
lsls r1, 2
|
||||
mov r9, r1
|
||||
add r0, r9
|
||||
ldr r0, [r0]
|
||||
str r0, [sp]
|
||||
movs r0, 0x14
|
||||
mov r1, r8
|
||||
adds r3, r7, 0
|
||||
bl sub_8012C60
|
||||
cmp r4, 0x9
|
||||
ble _08023628
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xA
|
||||
bl __divsi3
|
||||
adds r4, r0, 0
|
||||
movs r1, 0xA
|
||||
bl __modsi3
|
||||
adds r2, r0, 0
|
||||
adds r2, 0x30
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
ldr r0, [r6]
|
||||
movs r3, 0xE4
|
||||
lsls r3, 2
|
||||
adds r0, r3
|
||||
ldr r0, [r0]
|
||||
str r0, [sp]
|
||||
movs r0, 0xD
|
||||
mov r1, r8
|
||||
adds r3, r7, 0
|
||||
bl sub_8012C60
|
||||
cmp r4, 0x9
|
||||
ble _08023628
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xA
|
||||
bl __divsi3
|
||||
movs r1, 0xA
|
||||
bl __modsi3
|
||||
adds r2, r0, 0
|
||||
adds r2, 0x30
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
ldr r0, [r6]
|
||||
add r0, r9
|
||||
ldr r0, [r0]
|
||||
str r0, [sp]
|
||||
movs r0, 0x6
|
||||
mov r1, r8
|
||||
adds r3, r7, 0
|
||||
bl sub_8012C60
|
||||
_08023628:
|
||||
add r4, sp, 0x108
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_808D930
|
||||
add r0, sp, 0x8
|
||||
ldr r1, _080236A0
|
||||
adds r2, r7, 0
|
||||
adds r3, r4, 0
|
||||
bl sprintfStatic
|
||||
ldr r6, _0802368C
|
||||
ldr r0, [r6]
|
||||
movs r1, 0xE4
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
ldr r3, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x24
|
||||
mov r1, r8
|
||||
add r2, sp, 0x8
|
||||
bl xxx_call_draw_string
|
||||
movs r2, 0x1
|
||||
add r10, r2
|
||||
ldr r0, [r6]
|
||||
ldr r3, _0802369C
|
||||
adds r0, r3
|
||||
movs r6, 0
|
||||
ldrsh r0, [r0, r6]
|
||||
cmp r10, r0
|
||||
bge _0802366C
|
||||
b _08023532
|
||||
_0802366C:
|
||||
ldr r0, _0802368C
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xE4
|
||||
lsls r1, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
bl sub_80073E0
|
||||
add sp, 0x178
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802368C: .4byte gUnknown_3001B5C
|
||||
_08023690: .4byte gUnknown_80DC934
|
||||
_08023694: .4byte 0x000003fa
|
||||
_08023698: .4byte 0x0000037a
|
||||
_0802369C: .4byte 0x00000376
|
||||
_080236A0: .4byte gUnknown_80DC93C
|
||||
thumb_func_end sub_80234BC
|
||||
|
||||
thumb_func_start sub_80236A4
|
||||
sub_80236A4:
|
||||
push {r4,r5,lr}
|
||||
ldr r0, _080236FC
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
str r0, [r1, 0x8]
|
||||
movs r5, 0
|
||||
_080236B0:
|
||||
lsls r0, r5, 16
|
||||
asrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
bl sub_8098134
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080236E2
|
||||
adds r0, r4, 0
|
||||
bl GetBaseSpeciesNoUnown
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r4, r0
|
||||
bne _080236E2
|
||||
ldr r0, _080236FC
|
||||
ldr r3, [r0]
|
||||
ldr r1, [r3, 0x8]
|
||||
lsls r2, r1, 1
|
||||
adds r0, r3, 0
|
||||
adds r0, 0xC
|
||||
adds r0, r2
|
||||
strh r5, [r0]
|
||||
adds r1, 0x1
|
||||
str r1, [r3, 0x8]
|
||||
_080236E2:
|
||||
adds r5, 0x1
|
||||
ldr r0, _08023700
|
||||
cmp r5, r0
|
||||
ble _080236B0
|
||||
bl sub_8023730
|
||||
ldr r0, _080236FC
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x8]
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080236FC: .4byte gUnknown_3001B5C
|
||||
_08023700: .4byte 0x000001a7
|
||||
thumb_func_end sub_80236A4
|
||||
|
||||
thumb_func_start sub_8023704
|
||||
sub_8023704:
|
||||
push {r4,lr}
|
||||
movs r4, 0
|
||||
_08023708:
|
||||
lsls r0, r4, 16
|
||||
asrs r0, 16
|
||||
bl sub_8098134
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802371A
|
||||
movs r0, 0
|
||||
b _08023724
|
||||
_0802371A:
|
||||
adds r4, 0x1
|
||||
ldr r0, _0802372C
|
||||
cmp r4, r0
|
||||
ble _08023708
|
||||
movs r0, 0x1
|
||||
_08023724:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0802372C: .4byte 0x000001a7
|
||||
thumb_func_end sub_8023704
|
||||
|
||||
thumb_func_start sub_8023730
|
||||
sub_8023730:
|
||||
push {lr}
|
||||
ldr r0, _08023744
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x4]
|
||||
cmp r0, 0x1
|
||||
beq _08023748
|
||||
cmp r0, 0x2
|
||||
beq _0802374E
|
||||
b _08023752
|
||||
.align 2, 0
|
||||
_08023744: .4byte gUnknown_3001B5C
|
||||
_08023748:
|
||||
bl sub_8023758
|
||||
b _08023752
|
||||
_0802374E:
|
||||
bl sub_80237E0
|
||||
_08023752:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8023730
|
||||
|
||||
thumb_func_start sub_8023758
|
||||
sub_8023758:
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -1,266 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8031D70
|
||||
sub_8031D70:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r5, _08031DC4
|
||||
movs r0, 0x7C
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
stm r0!, {r6}
|
||||
bl sub_801317C
|
||||
ldr r0, [r5]
|
||||
str r4, [r0, 0x10]
|
||||
lsls r1, r4, 1
|
||||
adds r1, r4
|
||||
lsls r1, 3
|
||||
adds r1, 0x18
|
||||
adds r1, r0, r1
|
||||
str r1, [r0, 0x14]
|
||||
adds r0, 0x18
|
||||
bl sub_8006518
|
||||
ldr r1, [r5]
|
||||
ldr r2, [r1, 0x10]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x18
|
||||
ldr r0, _08031DC8
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
bl sub_8031E00
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08031DC4: .4byte gUnknown_203B334
|
||||
_08031DC8: .4byte gUnknown_80E1FC4
|
||||
thumb_func_end sub_8031D70
|
||||
|
||||
thumb_func_start sub_8031DCC
|
||||
sub_8031DCC:
|
||||
push {lr}
|
||||
ldr r0, _08031DEC
|
||||
ldr r1, [r0]
|
||||
adds r0, r1, 0x4
|
||||
ldr r1, [r1, 0x10]
|
||||
bl sub_8012A64
|
||||
cmp r0, 0x1
|
||||
beq _08031DF0
|
||||
cmp r0, 0x2
|
||||
bne _08031DFA
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _08031DFC
|
||||
.align 2, 0
|
||||
_08031DEC: .4byte gUnknown_203B334
|
||||
_08031DF0:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _08031DFC
|
||||
_08031DFA:
|
||||
movs r0, 0
|
||||
_08031DFC:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8031DCC
|
||||
|
||||
thumb_func_start sub_8031E00
|
||||
sub_8031E00:
|
||||
push {lr}
|
||||
bl sub_8031E58
|
||||
bl sub_8031E74
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8031E00
|
||||
|
||||
thumb_func_start sub_8031E10
|
||||
sub_8031E10:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _08031E50
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _08031E4A
|
||||
ldr r0, [r2, 0x10]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x18
|
||||
ldr r0, _08031E54
|
||||
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, 0x18
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_08031E4A:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031E50: .4byte gUnknown_203B334
|
||||
_08031E54: .4byte gUnknown_80E1FA8
|
||||
thumb_func_end sub_8031E10
|
||||
|
||||
thumb_func_start sub_8031E58
|
||||
sub_8031E58:
|
||||
push {lr}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, _08031E70
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x18
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031E70: .4byte gUnknown_203B334
|
||||
thumb_func_end sub_8031E58
|
||||
|
||||
thumb_func_start sub_8031E74
|
||||
sub_8031E74:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x3C
|
||||
ldr r3, _08031EC0
|
||||
ldr r5, _08031EC4
|
||||
ldr r2, [r5]
|
||||
ldr r1, [r2]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 4
|
||||
ldr r4, [r3]
|
||||
adds r4, r0
|
||||
ldr r0, [r2, 0x10]
|
||||
bl sub_80073B8
|
||||
ldr r2, _08031EC8
|
||||
ldr r0, [r5]
|
||||
ldr r3, [r0, 0x10]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x14
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
add r0, sp, 0x4
|
||||
adds r1, r4, 0
|
||||
bl sub_803D2C0
|
||||
movs r7, 0
|
||||
mov r8, r5
|
||||
_08031EB2:
|
||||
cmp r7, 0x4
|
||||
ble _08031ED0
|
||||
cmp r7, 0xC
|
||||
bgt _08031ECC
|
||||
movs r6, 0x6
|
||||
movs r5, 0x16
|
||||
b _08031F00
|
||||
.align 2, 0
|
||||
_08031EC0: .4byte gUnknown_203B480
|
||||
_08031EC4: .4byte gUnknown_203B334
|
||||
_08031EC8: .4byte gUnknown_80E1FDC
|
||||
_08031ECC:
|
||||
cmp r7, 0x11
|
||||
bgt _08031ED6
|
||||
_08031ED0:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x15
|
||||
b _08031F00
|
||||
_08031ED6:
|
||||
cmp r7, 0x16
|
||||
ble _08031EE8
|
||||
cmp r7, 0x1E
|
||||
bgt _08031EE4
|
||||
movs r6, 0x6
|
||||
movs r5, 0x25
|
||||
b _08031F00
|
||||
_08031EE4:
|
||||
cmp r7, 0x23
|
||||
bgt _08031EEE
|
||||
_08031EE8:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x24
|
||||
b _08031F00
|
||||
_08031EEE:
|
||||
cmp r7, 0x28
|
||||
ble _08031EFC
|
||||
cmp r7, 0x30
|
||||
bgt _08031EFC
|
||||
movs r6, 0x6
|
||||
movs r5, 0x34
|
||||
b _08031F00
|
||||
_08031EFC:
|
||||
movs r6, 0x7
|
||||
movs r5, 0x33
|
||||
_08031F00:
|
||||
adds r0, r7, 0
|
||||
movs r1, 0x12
|
||||
bl __modsi3
|
||||
movs r1, 0xB
|
||||
adds r4, r0, 0
|
||||
muls r4, r1
|
||||
adds r4, 0x6
|
||||
mov r0, sp
|
||||
adds r0, r7
|
||||
adds r0, 0x4
|
||||
ldrb r2, [r0]
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0, 0x10]
|
||||
str r0, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_8012C60
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0, 0x10]
|
||||
adds r2, r5, 0
|
||||
adds r2, 0xA
|
||||
movs r1, 0x5
|
||||
str r1, [sp]
|
||||
adds r1, r4, 0
|
||||
movs r3, 0xA
|
||||
bl sub_80078A4
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x35
|
||||
ble _08031EB2
|
||||
ldr r0, _08031F5C
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x10]
|
||||
bl sub_80073E0
|
||||
add sp, 0x3C
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08031F5C: .4byte gUnknown_203B334
|
||||
thumb_func_end sub_8031E74
|
||||
|
||||
.align 2,0
|
||||
@@ -1311,7 +1311,7 @@ _08040B4C:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08040B58: .4byte 0x0000e0b8
|
||||
_08040B5C: .4byte gUnknown_202B03A
|
||||
_08040B5C: .4byte gUnknown_202B038 + 2
|
||||
thumb_func_end sub_8040ABC
|
||||
|
||||
thumb_func_start sub_8040B60
|
||||
|
||||
@@ -1937,346 +1937,4 @@ _0804AA46:
|
||||
_0804AA5C: .4byte 0x00013554
|
||||
thumb_func_end sub_804A728
|
||||
|
||||
thumb_func_start sub_804AA60
|
||||
sub_804AA60:
|
||||
push {r4,lr}
|
||||
movs r1, 0
|
||||
ldr r0, _0804AAA0
|
||||
movs r3, 0
|
||||
movs r2, 0x80
|
||||
lsls r2, 5
|
||||
adds r4, r0, r2
|
||||
_0804AA6E:
|
||||
lsls r0, r1, 6
|
||||
adds r2, r1, 0x1
|
||||
movs r1, 0x1F
|
||||
adds r0, r4
|
||||
adds r0, 0x3E
|
||||
_0804AA78:
|
||||
strh r3, [r0]
|
||||
subs r0, 0x2
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bge _0804AA78
|
||||
adds r1, r2, 0
|
||||
cmp r1, 0x1F
|
||||
ble _0804AA6E
|
||||
movs r4, 0
|
||||
movs r0, 0x2
|
||||
bl sub_80098F8
|
||||
ldr r0, _0804AAA4
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0804AAA8
|
||||
adds r0, r1
|
||||
strb r4, [r0]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804AAA0: .4byte gUnknown_202B038
|
||||
_0804AAA4: .4byte gDungeon
|
||||
_0804AAA8: .4byte 0x0001821a
|
||||
thumb_func_end sub_804AA60
|
||||
|
||||
thumb_func_start sub_804AAAC
|
||||
sub_804AAAC:
|
||||
push {r4-r7,lr}
|
||||
movs r5, 0
|
||||
movs r7, 0
|
||||
_0804AAB2:
|
||||
movs r4, 0
|
||||
adds r6, r5, 0x1
|
||||
_0804AAB6:
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl GetTileSafe
|
||||
strh r7, [r0, 0x4]
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x37
|
||||
ble _0804AAB6
|
||||
adds r5, r6, 0
|
||||
cmp r5, 0x1F
|
||||
ble _0804AAB2
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_804AAAC
|
||||
|
||||
thumb_func_start sub_804AAD4
|
||||
sub_804AAD4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
ldr r4, _0804AC04
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
ldr r6, _0804AC08
|
||||
ldr r5, _0804AC0C
|
||||
movs r2, 0
|
||||
movs r3, 0x1F
|
||||
_0804AAEA:
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
ldr r1, _0804AC10
|
||||
adds r0, r1
|
||||
mov r7, r8
|
||||
strb r7, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
adds r1, 0x1
|
||||
adds r0, r1
|
||||
strb r7, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, r2
|
||||
ldr r7, _0804AC14
|
||||
adds r1, r0, r7
|
||||
strh r6, [r1]
|
||||
adds r7, 0x2
|
||||
adds r1, r0, r7
|
||||
strh r6, [r1]
|
||||
adds r7, 0x2
|
||||
adds r1, r0, r7
|
||||
strh r5, [r1]
|
||||
ldr r1, _0804AC18
|
||||
adds r0, r1
|
||||
strh r5, [r0]
|
||||
adds r2, 0x1C
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bge _0804AAEA
|
||||
movs r4, 0
|
||||
mov r9, r4
|
||||
movs r6, 0
|
||||
ldr r7, _0804AC04
|
||||
mov r8, r7
|
||||
_0804AB2E:
|
||||
movs r4, 0
|
||||
adds r5, r6, 0x1
|
||||
_0804AB32:
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
bl GetTile
|
||||
ldrb r2, [r0, 0x9]
|
||||
adds r3, r4, 0x1
|
||||
cmp r2, 0xFF
|
||||
beq _0804AB84
|
||||
lsls r0, r2, 3
|
||||
subs r0, r2
|
||||
lsls r0, 2
|
||||
ldr r1, _0804AC10
|
||||
adds r0, r1
|
||||
mov r7, r8
|
||||
ldr r1, [r7]
|
||||
adds r1, r0
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
movs r7, 0x2
|
||||
ldrsh r0, [r1, r7]
|
||||
cmp r0, r4
|
||||
ble _0804AB60
|
||||
strh r4, [r1, 0x2]
|
||||
_0804AB60:
|
||||
movs r4, 0x4
|
||||
ldrsh r0, [r1, r4]
|
||||
cmp r0, r6
|
||||
ble _0804AB6A
|
||||
strh r6, [r1, 0x4]
|
||||
_0804AB6A:
|
||||
movs r7, 0x6
|
||||
ldrsh r0, [r1, r7]
|
||||
cmp r0, r3
|
||||
bge _0804AB74
|
||||
strh r3, [r1, 0x6]
|
||||
_0804AB74:
|
||||
movs r4, 0x8
|
||||
ldrsh r0, [r1, r4]
|
||||
cmp r0, r5
|
||||
bge _0804AB7E
|
||||
strh r5, [r1, 0x8]
|
||||
_0804AB7E:
|
||||
cmp r9, r2
|
||||
bge _0804AB84
|
||||
mov r9, r2
|
||||
_0804AB84:
|
||||
adds r4, r3, 0
|
||||
cmp r4, 0x37
|
||||
ble _0804AB32
|
||||
adds r6, r5, 0
|
||||
cmp r6, 0x1F
|
||||
ble _0804AB2E
|
||||
ldr r7, _0804AC04
|
||||
mov r8, r7
|
||||
mov r5, r9
|
||||
adds r5, 0x1
|
||||
mov r6, r8
|
||||
movs r4, 0
|
||||
movs r3, 0x1F
|
||||
_0804AB9E:
|
||||
ldr r1, _0804AC10
|
||||
adds r0, r4, r1
|
||||
ldr r1, [r6]
|
||||
adds r2, r1, r0
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0
|
||||
beq _0804ABE4
|
||||
movs r7, 0x2
|
||||
ldrsh r1, [r2, r7]
|
||||
subs r1, 0x1
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
str r0, [r2, 0xC]
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r2, r0]
|
||||
subs r1, 0x1
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
str r0, [r2, 0x10]
|
||||
movs r7, 0x6
|
||||
ldrsh r1, [r2, r7]
|
||||
adds r1, 0x1
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
str r0, [r2, 0x14]
|
||||
movs r0, 0x8
|
||||
ldrsh r1, [r2, r0]
|
||||
adds r1, 0x1
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
str r0, [r2, 0x18]
|
||||
_0804ABE4:
|
||||
adds r4, 0x1C
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bge _0804AB9E
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
ldr r4, _0804AC1C
|
||||
adds r0, r4
|
||||
strb r5, [r0]
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804AC04: .4byte gDungeon
|
||||
_0804AC08: .4byte 0x0000270f
|
||||
_0804AC0C: .4byte 0x0000d8f1
|
||||
_0804AC10: .4byte 0x000104c4
|
||||
_0804AC14: .4byte 0x000104c6
|
||||
_0804AC18: .4byte 0x000104cc
|
||||
_0804AC1C: .4byte 0x000104c0
|
||||
thumb_func_end sub_804AAD4
|
||||
|
||||
thumb_func_start sub_804AC20
|
||||
sub_804AC20:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
adds r4, r0, 0
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
bl GetTile
|
||||
ldrb r1, [r0, 0x9]
|
||||
ldr r0, _0804AC6C
|
||||
ldr r3, [r0]
|
||||
ldr r5, _0804AC70
|
||||
adds r0, r3, r5
|
||||
ldrb r2, [r0]
|
||||
adds r5, 0x1
|
||||
adds r0, r3, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0804ACD4
|
||||
cmp r2, 0
|
||||
bne _0804AC52
|
||||
movs r2, 0x2
|
||||
_0804AC52:
|
||||
cmp r1, 0xFF
|
||||
bne _0804AC74
|
||||
movs r0, 0
|
||||
ldrsh r1, [r4, r0]
|
||||
subs r3, r1, r2
|
||||
mov r9, r3
|
||||
movs r5, 0x2
|
||||
ldrsh r0, [r4, r5]
|
||||
subs r3, r0, r2
|
||||
adds r6, r1, r2
|
||||
adds r0, r2
|
||||
mov r8, r0
|
||||
b _0804ACA2
|
||||
.align 2, 0
|
||||
_0804AC6C: .4byte gDungeon
|
||||
_0804AC70: .4byte 0x00018209
|
||||
_0804AC74:
|
||||
lsls r0, r1, 3
|
||||
subs r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, _0804ACE0
|
||||
adds r0, r1
|
||||
adds r2, r3, r0
|
||||
ldrb r0, [r2, 0x1]
|
||||
cmp r0, 0
|
||||
bne _0804ACD4
|
||||
movs r0, 0x1
|
||||
strb r0, [r2, 0x1]
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r2, r3]
|
||||
subs r0, 0x1
|
||||
mov r9, r0
|
||||
movs r5, 0x4
|
||||
ldrsh r0, [r2, r5]
|
||||
subs r3, r0, 0x1
|
||||
movs r0, 0x6
|
||||
ldrsh r6, [r2, r0]
|
||||
movs r5, 0x8
|
||||
ldrsh r1, [r2, r5]
|
||||
mov r8, r1
|
||||
_0804ACA2:
|
||||
adds r5, r3, 0
|
||||
cmp r5, r8
|
||||
bgt _0804ACD4
|
||||
_0804ACA8:
|
||||
mov r4, r9
|
||||
adds r7, r5, 0x1
|
||||
cmp r4, r6
|
||||
bgt _0804ACCE
|
||||
_0804ACB0:
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl GetTileSafe
|
||||
ldrh r2, [r0, 0x4]
|
||||
movs r1, 0x3
|
||||
orrs r1, r2
|
||||
strh r1, [r0, 0x4]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_80402AC
|
||||
adds r4, 0x1
|
||||
cmp r4, r6
|
||||
ble _0804ACB0
|
||||
_0804ACCE:
|
||||
adds r5, r7, 0
|
||||
cmp r5, r8
|
||||
ble _0804ACA8
|
||||
_0804ACD4:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0804ACE0: .4byte 0x000104c4
|
||||
thumb_func_end sub_804AC20
|
||||
|
||||
.align 2, 0
|
||||
|
||||
@@ -5347,200 +5347,4 @@ _0806CC08: .4byte 0x000001ff
|
||||
_0806CC0C: .4byte 0x00000fff
|
||||
thumb_func_end sub_806C51C
|
||||
|
||||
thumb_func_start sub_806CC10
|
||||
sub_806CC10:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
_0806CC14:
|
||||
ldr r0, _0806CC68
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _0806CC6C
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806CC5C
|
||||
ldr r2, [r4, 0x70]
|
||||
movs r1, 0xB3
|
||||
lsls r1, 1
|
||||
adds r0, r2, r1
|
||||
ldrb r1, [r0]
|
||||
cmp r1, 0
|
||||
beq _0806CC5C
|
||||
subs r1, 0x1
|
||||
strb r1, [r0]
|
||||
movs r0, 0x1
|
||||
ands r1, r0
|
||||
cmp r1, 0
|
||||
bne _0806CC5C
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x46
|
||||
ldrb r2, [r0]
|
||||
subs r2, 0x1
|
||||
movs r0, 0x7
|
||||
ands r2, r0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
bl sub_806CDD4
|
||||
_0806CC5C:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x13
|
||||
ble _0806CC14
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0806CC68: .4byte gDungeon
|
||||
_0806CC6C: .4byte 0x000135cc
|
||||
thumb_func_end sub_806CC10
|
||||
|
||||
thumb_func_start sub_806CC70
|
||||
sub_806CC70:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
_0806CC74:
|
||||
ldr r0, _0806CCAC
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _0806CCB0
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806CCA0
|
||||
adds r0, r4, 0
|
||||
bl sub_806CEBC
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r4, 0
|
||||
bl sub_806CCB4
|
||||
_0806CCA0:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x13
|
||||
ble _0806CC74
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0806CCAC: .4byte gDungeon
|
||||
_0806CCB0: .4byte 0x000135cc
|
||||
thumb_func_end sub_806CC70
|
||||
|
||||
thumb_func_start sub_806CCB4
|
||||
sub_806CCB4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
sub sp, 0xC
|
||||
adds r5, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r4, r1, 24
|
||||
ldr r7, [r5, 0x70]
|
||||
ldr r0, _0806CD40
|
||||
ldr r0, [r0]
|
||||
ldr r2, _0806CD44
|
||||
adds r1, r0, r2
|
||||
ldrb r6, [r1]
|
||||
ldr r3, _0806CD48
|
||||
adds r0, r3
|
||||
ldr r0, [r0]
|
||||
cmp r5, r0
|
||||
bne _0806CCDC
|
||||
movs r6, 0
|
||||
_0806CCDC:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x6B
|
||||
movs r3, 0
|
||||
strb r4, [r0]
|
||||
adds r2, r5, 0
|
||||
adds r2, 0x6A
|
||||
strb r4, [r2]
|
||||
adds r4, r7, 0
|
||||
adds r4, 0x46
|
||||
ldrb r0, [r4]
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x6D
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r4]
|
||||
subs r1, 0x1
|
||||
strb r0, [r1]
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x6F
|
||||
strb r3, [r0]
|
||||
subs r0, 0x7
|
||||
movs r3, 0
|
||||
ldrsh r4, [r0, r3]
|
||||
mov r9, r4
|
||||
adds r0, r7, 0
|
||||
adds r0, 0xC8
|
||||
ldrb r0, [r0]
|
||||
adds r7, r2, 0
|
||||
mov r8, r1
|
||||
cmp r0, 0x2
|
||||
beq _0806CD4C
|
||||
cmp r6, 0
|
||||
bne _0806CD4C
|
||||
bl Rand32Bit
|
||||
movs r4, 0x3
|
||||
ands r4, r0
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x28
|
||||
ldr r1, [r5, 0x64]
|
||||
ldrb r2, [r7]
|
||||
mov r7, r8
|
||||
ldrb r3, [r7]
|
||||
mov r7, r9
|
||||
str r7, [sp]
|
||||
str r4, [sp, 0x4]
|
||||
str r6, [sp, 0x8]
|
||||
bl sub_80053AC
|
||||
b _0806CD76
|
||||
.align 2, 0
|
||||
_0806CD40: .4byte gDungeon
|
||||
_0806CD44: .4byte 0x00018210
|
||||
_0806CD48: .4byte 0x000181f8
|
||||
_0806CD4C:
|
||||
ldr r0, _0806CD8C
|
||||
bl sub_80687D0
|
||||
adds r4, r0, 0
|
||||
bl Rand32Bit
|
||||
movs r1, 0x3
|
||||
ands r1, r0
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x28
|
||||
ldrb r2, [r7]
|
||||
mov r6, r8
|
||||
ldrb r3, [r6]
|
||||
mov r7, r9
|
||||
str r7, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
movs r1, 0
|
||||
str r1, [sp, 0x8]
|
||||
adds r1, r4, 0
|
||||
bl sub_80053AC
|
||||
_0806CD76:
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x6E
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
add sp, 0xC
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0806CD8C: .4byte 0x000001a5
|
||||
thumb_func_end sub_806CCB4
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -269,201 +269,4 @@ _0808546E:
|
||||
_0808547C: .4byte gUnknown_80F4598
|
||||
thumb_func_end sub_8085374
|
||||
|
||||
thumb_func_start xxx_call_GetLeader
|
||||
xxx_call_GetLeader:
|
||||
push {lr}
|
||||
bl GetLeader
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end xxx_call_GetLeader
|
||||
|
||||
thumb_func_start GetPartnerEntity
|
||||
GetPartnerEntity:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
_08085490:
|
||||
ldr r0, _080854B8
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _080854BC
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080854C0
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x41
|
||||
bne _080854C0
|
||||
adds r0, r4, 0
|
||||
b _080854CC
|
||||
.align 2, 0
|
||||
_080854B8: .4byte gDungeon
|
||||
_080854BC: .4byte 0x0001357c
|
||||
_080854C0:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _08085490
|
||||
movs r0, 0x2
|
||||
bl GetEntityFromClientType
|
||||
_080854CC:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end GetPartnerEntity
|
||||
|
||||
thumb_func_start sub_80854D4
|
||||
sub_80854D4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x20
|
||||
movs r6, 0
|
||||
movs r5, 0
|
||||
add r0, sp, 0x10
|
||||
mov r8, r0
|
||||
mov r7, sp
|
||||
_080854E6:
|
||||
ldr r0, _080855D8
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _080855DC
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08085504
|
||||
stm r7!, {r4}
|
||||
adds r6, 0x1
|
||||
_08085504:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _080854E6
|
||||
cmp r6, 0x3
|
||||
bgt _0808551C
|
||||
movs r1, 0
|
||||
lsls r0, r6, 2
|
||||
add r0, sp
|
||||
_08085514:
|
||||
stm r0!, {r1}
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x3
|
||||
ble _08085514
|
||||
_0808551C:
|
||||
movs r6, 0
|
||||
movs r4, 0
|
||||
mov r2, sp
|
||||
mov r3, r8
|
||||
movs r5, 0x3
|
||||
_08085526:
|
||||
ldr r1, [r2]
|
||||
cmp r1, 0
|
||||
beq _0808553A
|
||||
ldr r0, [r1, 0x70]
|
||||
ldrb r0, [r0, 0x7]
|
||||
cmp r0, 0
|
||||
beq _0808553A
|
||||
str r4, [r2]
|
||||
stm r3!, {r1}
|
||||
adds r6, 0x1
|
||||
_0808553A:
|
||||
adds r2, 0x4
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _08085526
|
||||
movs r4, 0
|
||||
mov r2, sp
|
||||
lsls r0, r6, 2
|
||||
mov r1, r8
|
||||
adds r3, r0, r1
|
||||
movs r5, 0x3
|
||||
_0808554E:
|
||||
ldr r1, [r2]
|
||||
cmp r1, 0
|
||||
beq _08085564
|
||||
ldr r0, [r1, 0x70]
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x41
|
||||
bne _08085564
|
||||
str r4, [r2]
|
||||
stm r3!, {r1}
|
||||
adds r6, 0x1
|
||||
_08085564:
|
||||
adds r2, 0x4
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _0808554E
|
||||
movs r3, 0
|
||||
mov r2, sp
|
||||
lsls r0, r6, 2
|
||||
add r0, r8
|
||||
movs r5, 0x3
|
||||
_08085576:
|
||||
ldr r1, [r2]
|
||||
cmp r1, 0
|
||||
beq _08085582
|
||||
str r3, [r2]
|
||||
stm r0!, {r1}
|
||||
adds r6, 0x1
|
||||
_08085582:
|
||||
adds r2, 0x4
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bge _08085576
|
||||
cmp r6, 0x3
|
||||
bgt _0808559C
|
||||
movs r1, 0
|
||||
lsls r0, r6, 2
|
||||
add r0, r8
|
||||
_08085594:
|
||||
stm r0!, {r1}
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x3
|
||||
ble _08085594
|
||||
_0808559C:
|
||||
movs r5, 0
|
||||
mov r4, r8
|
||||
_080855A0:
|
||||
lsls r1, r5, 2
|
||||
ldr r3, [r4]
|
||||
cmp r3, 0
|
||||
beq _080855C4
|
||||
ldr r0, _080855D8
|
||||
ldr r0, [r0]
|
||||
adds r0, r1
|
||||
ldr r2, _080855E0
|
||||
adds r1, r0, r2
|
||||
movs r6, 0
|
||||
ldrsh r1, [r1, r6]
|
||||
adds r2, 0x2
|
||||
adds r0, r2
|
||||
movs r6, 0
|
||||
ldrsh r2, [r0, r6]
|
||||
adds r0, r3, 0
|
||||
bl sub_80856C8
|
||||
_080855C4:
|
||||
adds r4, 0x4
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _080855A0
|
||||
add sp, 0x20
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080855D8: .4byte gDungeon
|
||||
_080855DC: .4byte 0x0001357c
|
||||
_080855E0: .4byte 0x0000e220
|
||||
thumb_func_end sub_80854D4
|
||||
|
||||
.align 2, 0
|
||||
|
||||
@@ -5,459 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8086F54
|
||||
sub_8086F54:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
lsls r1, 24
|
||||
movs r0, 0xFC
|
||||
lsls r0, 24
|
||||
adds r1, r0
|
||||
lsrs r1, 24
|
||||
cmp r1, 0x1
|
||||
bhi _08086FA8
|
||||
movs r5, 0
|
||||
_08086F6A:
|
||||
ldr r0, _08086FB0
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08086FB4
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08086F8E
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0xA4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, r6
|
||||
bne _08086FA8
|
||||
_08086F8E:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0xF
|
||||
ble _08086F6A
|
||||
movs r0, 0
|
||||
cmp r0, 0
|
||||
bne _08086FA8
|
||||
movs r0, 0x3
|
||||
bl sub_8097FA8
|
||||
ldr r0, _08086FB0
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
strb r0, [r1, 0x2]
|
||||
_08086FA8:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08086FB0: .4byte gDungeon
|
||||
_08086FB4: .4byte 0x0001358c
|
||||
thumb_func_end sub_8086F54
|
||||
|
||||
thumb_func_start TeamMeaniesPreFightDialogue
|
||||
TeamMeaniesPreFightDialogue:
|
||||
push {r4,lr}
|
||||
bl xxx_call_GetLeader
|
||||
adds r4, r0, 0
|
||||
bl sub_8086448
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087048
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808704C
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
bl sub_8087144
|
||||
movs r0, 0xA
|
||||
bl DungeonStartNewBGM
|
||||
ldr r0, _08087050
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087054
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087058
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808705C
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087060
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r4, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x10
|
||||
bl ShiftCameraToPosition
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08087048: .4byte gTeamMeaniesPreFightDialogue_1
|
||||
_0808704C: .4byte gTeamMeaniesPreFightDialogue_2
|
||||
_08087050: .4byte gTeamMeaniesPreFightDialogue_3
|
||||
_08087054: .4byte gTeamMeaniesPreFightDialogue_4
|
||||
_08087058: .4byte gTeamMeaniesPreFightDialogue_5
|
||||
_0808705C: .4byte gTeamMeaniesPreFightDialogue_6
|
||||
_08087060: .4byte gTeamMeaniesPreFightDialogue_7
|
||||
thumb_func_end TeamMeaniesPreFightDialogue
|
||||
|
||||
thumb_func_start TeamMeaniesReFightDialogue
|
||||
TeamMeaniesReFightDialogue:
|
||||
push {r4,r5,lr}
|
||||
bl xxx_call_GetLeader
|
||||
adds r4, r0, 0
|
||||
bl GetPartnerEntity
|
||||
adds r5, r0, 0
|
||||
bl sub_8086448
|
||||
ldr r0, _08087118
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808711C
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
bl sub_8087144
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087120
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087124
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x6
|
||||
movs r2, 0x4
|
||||
bl sub_806CDD4
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x6
|
||||
movs r2, 0x4
|
||||
bl sub_806CDD4
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x7
|
||||
movs r2, 0x4
|
||||
bl sub_806CDD4
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x7
|
||||
movs r2, 0x4
|
||||
bl sub_806CDD4
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087128
|
||||
bl DisplayDungeonDialogue
|
||||
ldr r0, _0808712C
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r4, 0xC
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x10
|
||||
bl ShiftCameraToPosition
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08087118: .4byte gTeamMeaniesReFightDialogue_1
|
||||
_0808711C: .4byte gTeamMeaniesPreFightDialogue_2
|
||||
_08087120: .4byte gTeamMeaniesReFightDialogue_2
|
||||
_08087124: .4byte gTeamMeaniesReFightDialogue_3
|
||||
_08087128: .4byte gTeamMeaniesReFightDialogue_4
|
||||
_0808712C: .4byte gTeamMeaniesReFightDialogue_5
|
||||
thumb_func_end TeamMeaniesReFightDialogue
|
||||
|
||||
thumb_func_start sub_8087130
|
||||
sub_8087130:
|
||||
push {lr}
|
||||
bl sub_8086448
|
||||
ldr r0, _08087140
|
||||
bl sub_80866C4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08087140: .4byte gUnknown_8101440
|
||||
thumb_func_end sub_8087130
|
||||
|
||||
thumb_func_start sub_8087144
|
||||
sub_8087144:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
sub sp, 0xF0
|
||||
movs r0, 0x5
|
||||
bl GetEntityFromClientType
|
||||
adds r7, r0, 0
|
||||
movs r0, 0x6
|
||||
bl GetEntityFromClientType
|
||||
mov r8, r0
|
||||
movs r0, 0x7
|
||||
bl GetEntityFromClientType
|
||||
mov r9, r0
|
||||
ldr r1, _080871E0
|
||||
mov r0, sp
|
||||
movs r2, 0x38
|
||||
bl memcpy
|
||||
add r6, sp, 0x38
|
||||
ldr r1, _080871E4
|
||||
adds r0, r6, 0
|
||||
movs r2, 0x38
|
||||
bl memcpy
|
||||
add r4, sp, 0x70
|
||||
ldr r1, _080871E8
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x38
|
||||
bl memcpy
|
||||
add r5, sp, 0xA8
|
||||
mov r0, sp
|
||||
str r0, [r5]
|
||||
str r6, [r5, 0x4]
|
||||
str r4, [r5, 0x8]
|
||||
add r4, sp, 0xB4
|
||||
str r7, [r4]
|
||||
mov r3, r8
|
||||
str r3, [r4, 0x4]
|
||||
mov r0, r9
|
||||
str r0, [r4, 0x8]
|
||||
movs r0, 0xA
|
||||
bl DungeonStartNewBGM
|
||||
adds r0, r7, 0
|
||||
bl sub_8086A54
|
||||
mov r0, r8
|
||||
bl sub_8086A54
|
||||
mov r0, r9
|
||||
bl sub_8086A54
|
||||
add r6, sp, 0xC0
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x3
|
||||
bl sub_8085B4C
|
||||
ldr r0, [r7, 0x70]
|
||||
ldr r2, _080871EC
|
||||
adds r0, r2
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
mov r3, r8
|
||||
ldr r0, [r3, 0x70]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
mov r3, r9
|
||||
ldr r0, [r3, 0x70]
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
b _080871F6
|
||||
.align 2, 0
|
||||
_080871E0: .4byte gUnknown_810739C
|
||||
_080871E4: .4byte gUnknown_81073D4
|
||||
_080871E8: .4byte gUnknown_810740C
|
||||
_080871EC: .4byte 0x0000015f
|
||||
_080871F0:
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
_080871F6:
|
||||
adds r0, r6, 0
|
||||
bl sub_8085B80
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0
|
||||
bne _080871F0
|
||||
ldr r0, [r7, 0x70]
|
||||
ldr r1, _0808722C
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
mov r3, r8
|
||||
ldr r0, [r3, 0x70]
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
mov r3, r9
|
||||
ldr r0, [r3, 0x70]
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
add sp, 0xF0
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808722C: .4byte 0x0000015f
|
||||
thumb_func_end sub_8087144
|
||||
|
||||
thumb_func_start sub_8087230
|
||||
sub_8087230:
|
||||
push {r4-r6,lr}
|
||||
bl xxx_call_GetLeader
|
||||
adds r6, r0, 0
|
||||
movs r0, 0x8
|
||||
bl GetEntityFromClientType
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x72
|
||||
bl DungeonStartNewBGM
|
||||
bl sub_8085374
|
||||
bl sub_80854D4
|
||||
movs r0, 0x4
|
||||
bl sub_8085930
|
||||
ldr r4, _08087294
|
||||
adds r0, r4, 0
|
||||
bl sub_80855E4
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
bl SetFacingDirection
|
||||
adds r0, r5, 0
|
||||
bl _call_via_r4
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r6, r1]
|
||||
movs r2, 0x6
|
||||
ldrsh r1, [r6, r2]
|
||||
subs r1, 0x3
|
||||
bl sub_8085860
|
||||
ldr r4, _08087298
|
||||
movs r1, 0x96
|
||||
lsls r1, 1
|
||||
adds r0, r4, 0
|
||||
bl CopyMonsterNametoBuffer
|
||||
adds r4, 0x50
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x91
|
||||
bl CopyMonsterNametoBuffer
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08087294: .4byte sub_8086A3C
|
||||
_08087298: .4byte gUnknown_202E038
|
||||
thumb_func_end sub_8087230
|
||||
|
||||
thumb_func_start sub_808729C
|
||||
sub_808729C:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x4
|
||||
bl xxx_call_GetLeader
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x8
|
||||
bl GetEntityFromClientType
|
||||
adds r4, r0, 0
|
||||
bl sub_80854D4
|
||||
movs r0, 0x4
|
||||
bl sub_8085930
|
||||
ldr r6, _080872DC
|
||||
adds r0, r6, 0
|
||||
bl sub_80855E4
|
||||
movs r0, 0x91
|
||||
bl sub_8086AE4
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0
|
||||
beq _080872E0
|
||||
movs r1, 0x87
|
||||
lsls r1, 2
|
||||
adds r0, r4, 0
|
||||
movs r2, 0
|
||||
bl sub_8068FE0
|
||||
b _08087300
|
||||
.align 2, 0
|
||||
_080872DC: .4byte sub_8086A3C
|
||||
_080872E0:
|
||||
ldr r0, _0808732C
|
||||
movs r3, 0
|
||||
ldrsh r2, [r0, r3]
|
||||
str r1, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r4, 0
|
||||
movs r3, 0
|
||||
bl sub_8072008
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
bl SetFacingDirection
|
||||
adds r0, r4, 0
|
||||
bl _call_via_r6
|
||||
_08087300:
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r5, r1]
|
||||
movs r2, 0x6
|
||||
ldrsh r1, [r5, r2]
|
||||
subs r1, 0x3
|
||||
bl sub_8085860
|
||||
ldr r4, _08087330
|
||||
movs r1, 0x96
|
||||
lsls r1, 1
|
||||
adds r0, r4, 0
|
||||
bl CopyMonsterNametoBuffer
|
||||
adds r4, 0x50
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x91
|
||||
bl CopyMonsterNametoBuffer
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808732C: .4byte gUnknown_80F57CC
|
||||
_08087330: .4byte gUnknown_202E038
|
||||
thumb_func_end sub_808729C
|
||||
|
||||
thumb_func_start sub_8087334
|
||||
sub_8087334:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r1, 24
|
||||
movs r2, 0xF9
|
||||
lsls r2, 24
|
||||
adds r1, r2
|
||||
lsrs r1, 24
|
||||
cmp r1, 0x2
|
||||
bhi _0808735A
|
||||
cmp r0, 0x8
|
||||
bne _0808735A
|
||||
movs r0, 0x5
|
||||
bl sub_8097FA8
|
||||
ldr r0, _08087360
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
strb r0, [r1, 0x2]
|
||||
_0808735A:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08087360: .4byte gDungeon
|
||||
thumb_func_end sub_8087334
|
||||
|
||||
thumb_func_start ZapdosPreFightDialogue
|
||||
ZapdosPreFightDialogue:
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80973A8
|
||||
sub_80973A8:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
cmp r0, 0xD
|
||||
beq _080973EE
|
||||
lsls r5, r0, 16
|
||||
cmp r6, 0
|
||||
beq _080973E2
|
||||
bl sub_80A26B8
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
lsrs r2, r5, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
movs r3, 0
|
||||
bl sub_800199C
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r4, r0
|
||||
beq _080973E2
|
||||
movs r0, 0
|
||||
movs r1, 0x12
|
||||
adds r2, r4, 0
|
||||
bl sub_80018D8
|
||||
_080973E2:
|
||||
lsrs r2, r5, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
adds r3, r6, 0
|
||||
bl sub_800199C
|
||||
_080973EE:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80973A8
|
||||
|
||||
thumb_func_start sub_80973F4
|
||||
sub_80973F4:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xD
|
||||
bne _08097402
|
||||
movs r0, 0
|
||||
b _08097414
|
||||
_08097402:
|
||||
lsls r2, r0, 16
|
||||
lsrs r2, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2D
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
beq _08097414
|
||||
movs r0, 0x1
|
||||
_08097414:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80973F4
|
||||
|
||||
thumb_func_start sub_8097418
|
||||
sub_8097418:
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 16
|
||||
asrs r5, r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r7, r1, 24
|
||||
cmp r5, 0xD
|
||||
beq _08097470
|
||||
lsls r6, r5, 16
|
||||
cmp r7, 0
|
||||
beq _08097464
|
||||
lsrs r2, r6, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
movs r3, 0
|
||||
bl sub_800199C
|
||||
cmp r5, 0x1E
|
||||
bgt _08097464
|
||||
lsls r0, r5, 3
|
||||
ldr r1, _08097478
|
||||
adds r4, r0, r1
|
||||
ldrb r0, [r4, 0x4]
|
||||
cmp r0, 0xFF
|
||||
beq _0809744C
|
||||
bl sub_8097FA8
|
||||
_0809744C:
|
||||
ldrb r0, [r4, 0x5]
|
||||
cmp r0, 0xFF
|
||||
beq _08097456
|
||||
bl sub_8097FA8
|
||||
_08097456:
|
||||
cmp r5, 0x9
|
||||
bne _08097460
|
||||
movs r0, 0x1F
|
||||
bl sub_8097FA8
|
||||
_08097460:
|
||||
bl sub_8097FF8
|
||||
_08097464:
|
||||
lsrs r2, r6, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2D
|
||||
adds r3, r7, 0
|
||||
bl sub_800199C
|
||||
_08097470:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08097478: .4byte gStoryMissionText
|
||||
thumb_func_end sub_8097418
|
||||
|
||||
.align 2,0
|
||||
585
asm/menu_input.s
Normal file
585
asm/menu_input.s
Normal file
@@ -0,0 +1,585 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start AddMenuCursorSprite_
|
||||
AddMenuCursorSprite_:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r6, r0, 0
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
str r0, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r6, r1]
|
||||
cmp r0, 0
|
||||
bgt _080131CC
|
||||
b _080132D6
|
||||
_080131CC:
|
||||
adds r0, r6, 0
|
||||
bl UpdateMenuCursorSpriteCoords
|
||||
ldrh r1, [r6, 0x24]
|
||||
movs r0, 0x8
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080132D6
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
ldr r1, _080132FC
|
||||
ands r1, r0
|
||||
ldr r3, _08013300
|
||||
ldr r0, [sp]
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
str r0, [sp]
|
||||
mov r1, sp
|
||||
ldrh r1, [r1]
|
||||
adds r2, r3, 0
|
||||
ands r2, r0
|
||||
orrs r2, r1
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _08013304
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r2, r3, 0
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r4, _08013308
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r2, r3, 0
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _0801330C
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r2, r3, 0
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _08013310
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r2, r3, 0
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _08013314
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
ands r3, r1
|
||||
orrs r3, r0
|
||||
str r3, [sp]
|
||||
mov r3, sp
|
||||
movs r2, 0xFD
|
||||
lsls r2, 2
|
||||
ldrh r1, [r3, 0x4]
|
||||
movs r0, 0xFC
|
||||
lsls r0, 8
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
ands r0, r4
|
||||
movs r5, 0xF
|
||||
movs r1, 0xF0
|
||||
lsls r1, 8
|
||||
ldr r4, _08013318
|
||||
ands r0, r4
|
||||
orrs r0, r1
|
||||
strh r0, [r3, 0x4]
|
||||
ldrh r0, [r3, 0x6]
|
||||
ldr r1, _0801331C
|
||||
ands r1, r0
|
||||
ldr r0, _08013320
|
||||
ands r1, r0
|
||||
movs r2, 0x8
|
||||
ldrsh r0, [r6, r2]
|
||||
ldr r2, _08013324
|
||||
ands r0, r2
|
||||
strh r0, [r3, 0x2]
|
||||
movs r2, 0xA
|
||||
ldrsh r0, [r6, r2]
|
||||
adds r0, 0x1
|
||||
ands r0, r4
|
||||
lsls r0, 4
|
||||
ands r1, r5
|
||||
orrs r1, r0
|
||||
strh r1, [r3, 0x6]
|
||||
mov r0, sp
|
||||
movs r1, 0xFF
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl AddSprite
|
||||
_080132D6:
|
||||
adds r0, r6, 0
|
||||
bl sub_8013470
|
||||
movs r1, 0x14
|
||||
ldrsh r0, [r6, r1]
|
||||
cmp r0, 0
|
||||
beq _080132EC
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x14
|
||||
bl sub_801332C
|
||||
_080132EC:
|
||||
ldrh r0, [r6, 0x24]
|
||||
adds r0, 0x1
|
||||
strh r0, [r6, 0x24]
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080132FC: .4byte 0x0000feff
|
||||
_08013300: .4byte 0xffff0000
|
||||
_08013304: .4byte 0x0000fdff
|
||||
_08013308: .4byte 0x0000f3ff
|
||||
_0801330C: .4byte 0x0000efff
|
||||
_08013310: .4byte 0x0000dfff
|
||||
_08013314: .4byte 0x00003fff
|
||||
_08013318: .4byte 0x00000fff
|
||||
_0801331C: .4byte 0x0000fffe
|
||||
_08013320: .4byte 0x0000fffd
|
||||
_08013324: .4byte 0x000001ff
|
||||
thumb_func_end AddMenuCursorSprite_
|
||||
|
||||
thumb_func_start nullsub_34
|
||||
nullsub_34:
|
||||
bx lr
|
||||
thumb_func_end nullsub_34
|
||||
|
||||
thumb_func_start sub_801332C
|
||||
sub_801332C:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
str r1, [sp]
|
||||
str r2, [sp, 0x4]
|
||||
mov r1, sp
|
||||
ldrh r1, [r1]
|
||||
ldr r2, _08013440
|
||||
ands r2, r1
|
||||
ldr r4, _08013444
|
||||
ldr r1, [sp]
|
||||
ands r1, r4
|
||||
orrs r1, r2
|
||||
str r1, [sp]
|
||||
mov r2, sp
|
||||
ldrh r2, [r2]
|
||||
adds r3, r4, 0
|
||||
ands r3, r1
|
||||
orrs r3, r2
|
||||
str r3, [sp]
|
||||
mov r1, sp
|
||||
ldrh r2, [r1]
|
||||
ldr r1, _08013448
|
||||
ands r1, r2
|
||||
adds r2, r4, 0
|
||||
ands r2, r3
|
||||
orrs r2, r1
|
||||
str r2, [sp]
|
||||
mov r1, sp
|
||||
ldrh r1, [r1]
|
||||
adds r3, r4, 0
|
||||
ands r3, r2
|
||||
orrs r3, r1
|
||||
str r3, [sp]
|
||||
movs r5, 0x80
|
||||
lsls r5, 3
|
||||
mov r1, sp
|
||||
ldrh r2, [r1]
|
||||
ldr r6, _0801344C
|
||||
adds r1, r6, 0
|
||||
ands r1, r2
|
||||
adds r2, r4, 0
|
||||
ands r2, r3
|
||||
orrs r2, r1
|
||||
str r2, [sp]
|
||||
mov r1, sp
|
||||
ldrh r1, [r1]
|
||||
orrs r5, r1
|
||||
adds r3, r4, 0
|
||||
ands r3, r2
|
||||
orrs r3, r5
|
||||
str r3, [sp]
|
||||
mov r1, sp
|
||||
ldrh r2, [r1]
|
||||
ldr r1, _08013450
|
||||
ands r1, r2
|
||||
adds r2, r4, 0
|
||||
ands r2, r3
|
||||
orrs r2, r1
|
||||
str r2, [sp]
|
||||
mov r1, sp
|
||||
ldrh r1, [r1]
|
||||
adds r3, r4, 0
|
||||
ands r3, r2
|
||||
orrs r3, r1
|
||||
str r3, [sp]
|
||||
mov r1, sp
|
||||
ldrh r2, [r1]
|
||||
ldr r1, _08013454
|
||||
ands r1, r2
|
||||
adds r2, r4, 0
|
||||
ands r2, r3
|
||||
orrs r2, r1
|
||||
str r2, [sp]
|
||||
mov r1, sp
|
||||
ldrh r1, [r1]
|
||||
adds r3, r4, 0
|
||||
ands r3, r2
|
||||
orrs r3, r1
|
||||
str r3, [sp]
|
||||
mov r1, sp
|
||||
ldrh r2, [r1]
|
||||
ldr r1, _08013458
|
||||
ands r1, r2
|
||||
adds r2, r4, 0
|
||||
ands r2, r3
|
||||
orrs r2, r1
|
||||
str r2, [sp]
|
||||
mov r1, sp
|
||||
ldrh r1, [r1]
|
||||
ands r4, r2
|
||||
orrs r4, r1
|
||||
str r4, [sp]
|
||||
mov r4, sp
|
||||
ldr r3, _0801345C
|
||||
ldrh r2, [r4, 0x4]
|
||||
movs r1, 0xFC
|
||||
lsls r1, 8
|
||||
ands r1, r2
|
||||
orrs r1, r3
|
||||
ands r1, r6
|
||||
movs r6, 0xF
|
||||
movs r2, 0xF0
|
||||
lsls r2, 8
|
||||
ldr r5, _08013460
|
||||
ands r1, r5
|
||||
orrs r1, r2
|
||||
strh r1, [r4, 0x4]
|
||||
ldrh r1, [r4, 0x6]
|
||||
ldr r2, _08013464
|
||||
ands r2, r1
|
||||
ldr r1, _08013468
|
||||
ands r2, r1
|
||||
movs r3, 0
|
||||
ldrsh r1, [r0, r3]
|
||||
ldr r3, _0801346C
|
||||
ands r1, r3
|
||||
strh r1, [r4, 0x2]
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r0, 0x1
|
||||
ands r0, r5
|
||||
lsls r0, 4
|
||||
ands r2, r6
|
||||
orrs r2, r0
|
||||
strh r2, [r4, 0x6]
|
||||
mov r0, sp
|
||||
movs r1, 0xFF
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl AddSprite
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08013440: .4byte 0x0000feff
|
||||
_08013444: .4byte 0xffff0000
|
||||
_08013448: .4byte 0x0000fdff
|
||||
_0801344C: .4byte 0x0000f3ff
|
||||
_08013450: .4byte 0x0000efff
|
||||
_08013454: .4byte 0x0000dfff
|
||||
_08013458: .4byte 0x00003fff
|
||||
_0801345C: .4byte 0x000003f5
|
||||
_08013460: .4byte 0x00000fff
|
||||
_08013464: .4byte 0x0000fffe
|
||||
_08013468: .4byte 0x0000fffd
|
||||
_0801346C: .4byte 0x000001ff
|
||||
thumb_func_end sub_801332C
|
||||
|
||||
thumb_func_start sub_8013470
|
||||
sub_8013470:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r6, r0, 0
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
str r0, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
movs r1, 0xC
|
||||
ldrsh r0, [r6, r1]
|
||||
cmp r0, 0
|
||||
bne _08013488
|
||||
b _08013624
|
||||
_08013488:
|
||||
movs r2, 0x1E
|
||||
ldrsh r0, [r6, r2]
|
||||
cmp r0, 0
|
||||
beq _08013586
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
ldr r1, _0801362C
|
||||
ands r1, r0
|
||||
ldr r3, _08013630
|
||||
ldr r0, [sp]
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
str r0, [sp]
|
||||
mov r1, sp
|
||||
ldrh r1, [r1]
|
||||
adds r2, r3, 0
|
||||
ands r2, r0
|
||||
orrs r2, r1
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _08013634
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r2, r3, 0
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r4, _08013638
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r2, r3, 0
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _0801363C
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r2, r3, 0
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _08013640
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r2, r3, 0
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp]
|
||||
mov r0, sp
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _08013644
|
||||
ands r0, r1
|
||||
adds r1, r3, 0
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
ands r3, r1
|
||||
orrs r3, r0
|
||||
str r3, [sp]
|
||||
mov r3, sp
|
||||
ldr r2, _08013648
|
||||
ldrh r1, [r3, 0x4]
|
||||
movs r0, 0xFC
|
||||
lsls r0, 8
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
ands r0, r4
|
||||
movs r5, 0xF
|
||||
movs r1, 0xF0
|
||||
lsls r1, 8
|
||||
ldr r4, _0801364C
|
||||
ands r0, r4
|
||||
orrs r0, r1
|
||||
strh r0, [r3, 0x4]
|
||||
ldrh r0, [r3, 0x6]
|
||||
ldr r1, _08013650
|
||||
ands r1, r0
|
||||
ldr r0, _08013654
|
||||
ands r1, r0
|
||||
movs r2, 0xC
|
||||
ldrsh r0, [r6, r2]
|
||||
ldr r2, _08013658
|
||||
ands r0, r2
|
||||
strh r0, [r3, 0x2]
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r6, r2]
|
||||
ands r0, r4
|
||||
lsls r0, 4
|
||||
ands r1, r5
|
||||
orrs r1, r0
|
||||
strh r1, [r3, 0x6]
|
||||
mov r0, sp
|
||||
movs r1, 0xFF
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl AddSprite
|
||||
_08013586:
|
||||
movs r1, 0x20
|
||||
ldrsh r0, [r6, r1]
|
||||
cmp r0, 0
|
||||
beq _08013624
|
||||
adds r1, r0, 0
|
||||
movs r2, 0x1E
|
||||
ldrsh r0, [r6, r2]
|
||||
adds r0, 0x1
|
||||
cmp r1, r0
|
||||
beq _08013624
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
ldr r1, _0801362C
|
||||
ands r1, r0
|
||||
mov r0, sp
|
||||
strh r1, [r0]
|
||||
strh r1, [r0]
|
||||
ldr r0, _08013634
|
||||
ands r0, r1
|
||||
mov r1, sp
|
||||
strh r0, [r1]
|
||||
strh r0, [r1]
|
||||
ldr r4, _08013638
|
||||
ands r0, r4
|
||||
strh r0, [r1]
|
||||
strh r0, [r1]
|
||||
ldr r1, _0801363C
|
||||
ands r1, r0
|
||||
mov r0, sp
|
||||
strh r1, [r0]
|
||||
strh r1, [r0]
|
||||
ldr r2, _08013640
|
||||
ands r2, r1
|
||||
strh r2, [r0]
|
||||
strh r2, [r0]
|
||||
ldr r0, _08013644
|
||||
ands r0, r2
|
||||
mov r1, sp
|
||||
strh r0, [r1]
|
||||
strh r0, [r1]
|
||||
mov r3, sp
|
||||
ldr r2, _0801365C
|
||||
ldrh r1, [r3, 0x4]
|
||||
movs r0, 0xFC
|
||||
lsls r0, 8
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
ands r0, r4
|
||||
movs r5, 0xF
|
||||
movs r1, 0xF0
|
||||
lsls r1, 8
|
||||
ldr r4, _0801364C
|
||||
ands r0, r4
|
||||
orrs r0, r1
|
||||
strh r0, [r3, 0x4]
|
||||
ldrh r0, [r3, 0x6]
|
||||
ldr r1, _08013650
|
||||
ands r1, r0
|
||||
ldr r0, _08013654
|
||||
ands r1, r0
|
||||
movs r2, 0xC
|
||||
ldrsh r0, [r6, r2]
|
||||
adds r0, 0xA
|
||||
ldr r2, _08013658
|
||||
ands r0, r2
|
||||
strh r0, [r3, 0x2]
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r6, r2]
|
||||
ands r0, r4
|
||||
lsls r0, 4
|
||||
ands r1, r5
|
||||
orrs r1, r0
|
||||
strh r1, [r3, 0x6]
|
||||
mov r0, sp
|
||||
movs r1, 0xFF
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl AddSprite
|
||||
_08013624:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0801362C: .4byte 0x0000feff
|
||||
_08013630: .4byte 0xffff0000
|
||||
_08013634: .4byte 0x0000fdff
|
||||
_08013638: .4byte 0x0000f3ff
|
||||
_0801363C: .4byte 0x0000efff
|
||||
_08013640: .4byte 0x0000dfff
|
||||
_08013644: .4byte 0x00003fff
|
||||
_08013648: .4byte 0x000003f2
|
||||
_0801364C: .4byte 0x00000fff
|
||||
_08013650: .4byte 0x0000fffe
|
||||
_08013654: .4byte 0x0000fffd
|
||||
_08013658: .4byte 0x000001ff
|
||||
_0801365C: .4byte 0x000003f3
|
||||
thumb_func_end sub_8013470
|
||||
|
||||
.align 2,0
|
||||
@@ -1,31 +0,0 @@
|
||||
.section .rodata
|
||||
|
||||
.global gUnknown_80E1FA8
|
||||
gUnknown_80E1FA8: @ 80E1FA8
|
||||
.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 gUnkData_80E1FC0
|
||||
gUnkData_80E1FC0:
|
||||
.byte 0x01, 0x00, 0x0A, 0x00
|
||||
|
||||
.global gUnknown_80E1FC4
|
||||
gUnknown_80E1FC4: @ 80E1FC4
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x06, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x02, 0x00
|
||||
.byte 0x1a, 0x00, 0x0a, 0x00
|
||||
.byte 0x0a, 0x00, 0x00, 0x00
|
||||
|
||||
.4byte gUnkData_80E1FC0
|
||||
|
||||
.global gUnknown_80E1FDC
|
||||
gUnknown_80E1FDC: @ 80E1FDC
|
||||
.string "Password\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
23
include/code_801EE10.h
Normal file
23
include/code_801EE10.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef CODE_801EE10_H
|
||||
#define CODE_801EE10_H
|
||||
|
||||
struct unkStruct_203B270
|
||||
{
|
||||
// size 0xBC
|
||||
u32 unk0;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
/* 0x8 */ struct PokemonStruct *pokeStruct;
|
||||
/* 0xC */ u8 isTeamLeader;
|
||||
/* 0x10 */ struct Move *moves;
|
||||
u8 fill14[0x1C - 0x14];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk50;
|
||||
u32 unk54;
|
||||
struct UnkTextStruct2 unk58[4];
|
||||
u8 *unkB8;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#define NUM_DUNGEON_MAZE (NUM_DUNGEONS - DUNGEON_NORMAL_MAZE_2)
|
||||
|
||||
#define NUM_BASIC_DUNGEON_MAZE (DUNGEON_STEEL_MAZE - DUNGEON_NORMAL_MAZE_2 + 1)
|
||||
|
||||
enum DungeonID
|
||||
{
|
||||
DUNGEON_TINY_WOODS = 0,
|
||||
|
||||
@@ -294,7 +294,7 @@ struct Entity
|
||||
/* 0x54 */ u16 spriteGlobalIndex;
|
||||
u8 fill56[0x64 - 0x56];
|
||||
u32 unk64;
|
||||
u16 unk68;
|
||||
s16 unk68;
|
||||
/* 0x6A */ u8 unk6A;
|
||||
/* 0x6A */ u8 unk6B;
|
||||
/* 0x6C */ u8 direction;
|
||||
@@ -346,6 +346,7 @@ enum ClientType
|
||||
{
|
||||
CLIENT_TYPE_NONE = 0,
|
||||
CLIENT_TYPE_CLIENT = 1, // Used for mission clients that need rescuing.
|
||||
CLIENT_TYPE_PARTNER,
|
||||
CLIENT_TYPE_DONT_MOVE = 4 // Used for Diglett in the Skarmory boss fight.
|
||||
};
|
||||
|
||||
|
||||
@@ -136,9 +136,11 @@ struct Dungeon
|
||||
u8 fill3A10[0x3A14 - 0x3A12];
|
||||
/* 0x3A14 */ s16 bossBattleIndex;
|
||||
/* 0x3A18 */ struct Tile tiles[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X];
|
||||
u8 fillE218[0xE23C - 0xE218];
|
||||
s16 unkE23C;
|
||||
s16 unkE23E;
|
||||
u8 fillE218[0xE220 - 0xE218];
|
||||
struct Position unkE220[4];
|
||||
u8 unkE230[0xE23C - 0xE230];
|
||||
s16 unkE23C; // x coord of some kind
|
||||
s16 unkE23E; // y coord of some kind
|
||||
u8 fillE240[0xE264 - 0xE240];
|
||||
/* 0xE264 */ u8 weather; // Uses the weather constants in weather.h.
|
||||
u8 unkE265; // Uses the weather constants in weather.h
|
||||
@@ -155,7 +157,7 @@ struct Dungeon
|
||||
/* 0xE279 */ bool8 nullifyWeather; // Air Lock and Cloud Nine toggle this to disable weather effects
|
||||
u8 fillE27A[0xE8C0 - 0xE27A];
|
||||
/* 0xE8C0 */ struct Tile* tilePointers[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X];
|
||||
u8 fill104C0[0x104C4 - 0x104C0];
|
||||
u8 unk104C0;
|
||||
/* 0x104C4 */ struct RoomData roomData[MAX_ROOM_COUNT];
|
||||
u8 fill10764[0x10844 - 0x10764];
|
||||
/* 0x10844 */ s16 naturalJunctionListCounts[MAX_ROOM_COUNT];
|
||||
@@ -206,7 +208,9 @@ struct Dungeon
|
||||
/* 0x18210 */ bool8 hallucinating; // Displays Substitute and flower sprites when the player has the Cross-Eyed status.
|
||||
u8 fill18211[0x18217 - 0x18211];
|
||||
u8 unk18217;
|
||||
u8 fill18218[0x1C578 - 0x18218];
|
||||
u8 fill18218[0x1821A - 0x18218];
|
||||
u8 unk1821A;
|
||||
u8 fill1821B[0x1C578 - 0x1821B];
|
||||
u8 unk1C578;
|
||||
u8 fill1C579[0x1C57E - 0x1C579];
|
||||
u8 unk1C57E;
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
struct Entity *xxx_call_GetLeader(void);
|
||||
struct Entity *GetPartnerEntity(void);
|
||||
void sub_80854D4(void);
|
||||
struct Entity *GetEntityFromClientType(u8 entityType);
|
||||
void sub_80856C8(struct Entity * pokemon, s32 x, s32 y);
|
||||
void sub_80856E0(struct Entity * pokemon, s32 direction);
|
||||
|
||||
9
include/friend_list_menu.h
Normal file
9
include/friend_list_menu.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef INCLUDE_FRIEND_LIST_MENU_H
|
||||
#define INCLUDE_FRIEND_LIST_MENU_H
|
||||
|
||||
bool8 sub_80252F0(s32 param_1);
|
||||
u32 sub_8025354(void);
|
||||
u8 sub_802540C(void);
|
||||
void sub_8025418(void);
|
||||
|
||||
#endif
|
||||
@@ -48,26 +48,39 @@ struct UnusedInputStruct
|
||||
/* 0x2A..0x2B - padding */
|
||||
};
|
||||
|
||||
struct UnkInputStruct
|
||||
struct MenuInputStructSub
|
||||
{
|
||||
/* 0x0 */ u8 unk0;
|
||||
/* 0x1 */ u8 unk1;
|
||||
/* 0x2 */ u8 unk2;
|
||||
/* 0x3 */ u8 unk3;
|
||||
/* 0x4 */ u8 unk4;
|
||||
/* 0x8 */ u32 unk8;
|
||||
/* 0xC */ u32 unkC;
|
||||
u8 unk0;
|
||||
/* 0x1 */ u8 a_button;
|
||||
/* 0x2 */ u8 b_button;
|
||||
/* 0x3 */ u8 dpad_right;
|
||||
/* 0x4 */ u8 dpad_left;
|
||||
u8 fill5[3];
|
||||
u16 unk8;
|
||||
s16 unkA;
|
||||
};
|
||||
|
||||
struct MenuInputStruct
|
||||
{
|
||||
s32 unk0;
|
||||
/* 0x4 */ u16 unk4;
|
||||
/* 0x6 */ s16 unk6;
|
||||
/* 0x8 */ u16 unk8;
|
||||
/* 0x8 */ u16 unkA;
|
||||
/* 0xC */ u16 unkC;
|
||||
/* 0xE */ u16 unkE;
|
||||
/* 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;
|
||||
/* 0x2A */ u8 b_button;
|
||||
/* 0x2B */ u8 dpad_right;
|
||||
/* 0x2C */ u8 dpad_left;
|
||||
/* 0x14 */ s16 unk14;
|
||||
/* 0x16 */ u16 unk16;
|
||||
/* 0x18 */ s16 menuIndex;
|
||||
/* 0x1A */ s16 unk1A;
|
||||
/* 0x1C */ s16 unk1C;
|
||||
/* 0x1E */ s16 unk1E;
|
||||
/* 0x20 */ s16 unk20;
|
||||
/* 0x22 */ s16 unk22;
|
||||
/* 0x24 */ u16 unk24;
|
||||
u16 unk26;
|
||||
/* 0x28 */ struct MenuInputStructSub unk28;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -129,6 +129,7 @@ s32 FindItemInInventory(u8 id);
|
||||
bool8 IsHMItem(u8 id);
|
||||
bool8 IsEdibleItem(u8 id);
|
||||
u8 xxx_bit_lut_lookup_8091E50(u8 i0, u8 i1);
|
||||
bool8 IsInvalidItemReward(u8 itemID);
|
||||
|
||||
void RestoreHeldItem(struct unkStruct_8094924*, struct BulkItem*);
|
||||
void SaveHeldItem(struct unkStruct_8094924*, struct BulkItem*);
|
||||
|
||||
@@ -41,17 +41,8 @@ struct unkStruct_203B224
|
||||
{
|
||||
// size: 0xF4
|
||||
u32 unk0;
|
||||
|
||||
u32 unk4[INVENTORY_SIZE];
|
||||
u32 unk54;
|
||||
u8 fill58[0x6C - 0x58];
|
||||
s16 unk6C;
|
||||
s16 unk6E;
|
||||
s16 unk70;
|
||||
s16 unk72;
|
||||
u16 unk74;
|
||||
u16 unk76;
|
||||
u8 fill78[0x88 - 0x78];
|
||||
/* 0x54 */ struct MenuInputStruct input;
|
||||
u32 unk88;
|
||||
struct UnkTextStruct2 *unk8C;
|
||||
struct UnkTextStruct2 unk90[4];
|
||||
|
||||
@@ -48,14 +48,19 @@ struct Tile
|
||||
|
||||
struct RoomData
|
||||
{
|
||||
u8 fill0[0x2 - 0x0];
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
// All coordinates are inclusive.
|
||||
// These are not aligned properly to use the Position struct.
|
||||
/* 0x2 */ s16 bottomRightCornerX;
|
||||
/* 0x4 */ s16 bottomRightCornerY;
|
||||
/* 0x6 */ s16 topLeftCornerX;
|
||||
/* 0x8 */ s16 topLeftCornerY;
|
||||
u8 fillA[0x1A - 0xA];
|
||||
u8 fillA[0xC - 0xA];
|
||||
u32 unkC; // bottom right x
|
||||
u32 unk10; // bottom right y
|
||||
u32 unk14; // top left x
|
||||
u32 unk18; // top left y
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef GUARD_MENU_H
|
||||
#define GUARD_MENU_H
|
||||
|
||||
#include "input.h"
|
||||
|
||||
struct MenuItem
|
||||
{
|
||||
const u8 *text;
|
||||
@@ -15,13 +17,7 @@ struct MenuStruct
|
||||
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];
|
||||
/* 0x14 */ struct MenuInputStruct input;
|
||||
/* 0x48 */ s32 menuAction;
|
||||
bool8 unk4C;
|
||||
bool8 unk4D;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#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_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 param_6);
|
||||
void sub_8012C60(u32 x, u32 y, u32 param_3, u32 color, 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);
|
||||
|
||||
@@ -49,13 +49,7 @@ struct PersonalityStruct_203B404
|
||||
/* 0x0 */ s16 StarterID;
|
||||
/* 0x2 */ s16 PartnerArray[NUM_PARTNERS];
|
||||
u8 unk16;
|
||||
/* 0x18 */ struct UnkInputStruct *unk18; // something menu related (seems to be some struct)
|
||||
u8 padding[0x30 - 0x1C];
|
||||
/* 0x30 */ s16 currPartnerSelection;
|
||||
s16 unk32;
|
||||
u8 padding2[0x3A - 0x34];
|
||||
/* 0x3A */ s16 numPartners;
|
||||
u8 padding3[0x4C - 0x3C];
|
||||
/* 0x18 */ struct MenuInputStruct input;
|
||||
u32 unk4C;
|
||||
/* 0x50 */ struct UnkTextStruct2 *unk50;
|
||||
/* 0x54 */ struct UnkTextStruct2 unk54[4];
|
||||
|
||||
@@ -209,7 +209,7 @@ bool8 CanMove(s16 index);
|
||||
u8 GetChanceAsleep(s16 index);
|
||||
u32 GetWeight(s16 index);
|
||||
u32 GetSize(s16 index);
|
||||
u8 GetFriendArea(s16 index);
|
||||
u8 GetFriendArea(s32 index);
|
||||
u16 GetBaseHP(s16 index);
|
||||
bool8 IsToolboxEnabled(s16 index);
|
||||
u8 GetUnk12(s16 index);
|
||||
@@ -218,7 +218,7 @@ u16 GetBaseOffensiveStat(s16 index, u32 r1);
|
||||
u16 GetBaseDefensiveStat(s16 index, u32 r1);
|
||||
u8 GetPokemonType(s32 index, u32 typeIndex);
|
||||
u8 GetPokemonAbility(s16 index, u32 abilityIndex);
|
||||
s16 GetDexInternalNo(s16 index, u32 r1);
|
||||
s16 GetDexInternalNo(s32 index, u32 r1);
|
||||
s16 GetRecruitRate(s16 index);
|
||||
s16 GetAlphabetParentNo(s16 index, s32 r1);
|
||||
s16 GetInternalNo(s16 index);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef GUARD_POKEMON_3_H
|
||||
#define GUARD_POKEMON_3_H
|
||||
|
||||
s16 GetBaseSpeciesNoUnown(s16 index);
|
||||
bool8 TacticsTargetLeader(u8 tactic);
|
||||
bool8 HasIQForSkill(s32 pokeIQ, u8 IQSkillIndex);
|
||||
void SetIQSkill(u8 *param_1, u32 skillIndex);
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
#define GUARD_TEXT_H
|
||||
|
||||
struct UnkTextStruct1 {
|
||||
u8 fill00[4];
|
||||
u16 unk04;
|
||||
u8 fill06[2];
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk04;
|
||||
s16 unk6;
|
||||
u16 unk08;
|
||||
u16 fillA;
|
||||
u32 unkC;
|
||||
|
||||
@@ -2,16 +2,7 @@ struct unkStruct_203B2E8
|
||||
{
|
||||
// size: 0xA8
|
||||
u8 pelipperBoardSlots[MAX_ACCEPTED_JOBS];
|
||||
u32 unk8;
|
||||
u8 fillC[0x20 - 0xC];
|
||||
s16 unk20;
|
||||
s16 unk22;
|
||||
s16 unk24;
|
||||
s16 unk26;
|
||||
u16 unk28;
|
||||
u16 acceptedJobs;
|
||||
u16 unk2C;
|
||||
u8 fill2E[0x3C - 0x2E];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk3C;
|
||||
struct UnkTextStruct2 *unk40;
|
||||
struct UnkTextStruct2 unk44[4];
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
#include "menu.h"
|
||||
struct unkStruct_203B2F4
|
||||
{
|
||||
u8 fill0[0x18];
|
||||
u8 unk18;
|
||||
u8 unk19;
|
||||
s16 unk1A;
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
u8 fill20[0x34 - 0x20];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk34;
|
||||
struct UnkTextStruct2 *unk38;
|
||||
struct UnkTextStruct2 unk3C[4];
|
||||
|
||||
@@ -94,6 +94,8 @@ SECTIONS {
|
||||
src/code_8012A18.o(.text);
|
||||
src/more_input.o(.text);
|
||||
src/menu_input.o(.text);
|
||||
asm/menu_input.o(.text);
|
||||
src/menu_input_1.o(.text);
|
||||
asm/code_80130A8.o(.text);
|
||||
src/code_8012A18_1.o(.text);
|
||||
src/felicity_bank.o(.text);
|
||||
@@ -107,7 +109,6 @@ SECTIONS {
|
||||
src/kecleon_items_1.o(.text);
|
||||
src/code_801AFA4.o(.text);
|
||||
src/code_801B3C0.o(.text);
|
||||
asm/code_801B3C0.o(.text);
|
||||
src/code_801C620.o(.text);
|
||||
asm/code_801C620.o(.text);
|
||||
src/code_801D760.o(.text);
|
||||
@@ -150,7 +151,7 @@ SECTIONS {
|
||||
src/wonder_mail_5.o(.text);
|
||||
src/wonder_mail_6.o(.text);
|
||||
src/post_office_guide.o(.text);
|
||||
asm/code_8031D70.o(.text);
|
||||
src/code_8031D70.o(.text);
|
||||
src/adventure_log.o(.text);
|
||||
src/friend_rescue.o(.text);
|
||||
asm/friend_rescue.o(.text);
|
||||
@@ -203,6 +204,7 @@ SECTIONS {
|
||||
src/dungeon_ai_item_weight.o(.text);
|
||||
src/dungeon_map_access.o(.text);
|
||||
asm/code_80495E4.o(.text);
|
||||
src/dungeon_map_access_1.o(.text);
|
||||
src/tile_types.o(.text);
|
||||
asm/code_804AFAC.o(.text);
|
||||
src/code_80521D0.o(.text);
|
||||
@@ -307,8 +309,6 @@ SECTIONS {
|
||||
src/code_80958E8_1.o(.text);
|
||||
asm/code_8096AF8.o(.text);
|
||||
src/code_80972F4.o(.text);
|
||||
asm/code_8097318.o(.text);
|
||||
src/code_809747C.o(.text);
|
||||
src/code_8097670.o(.text);
|
||||
asm/code_8097670.o(.text);
|
||||
src/code_8097DD0.o(.text);
|
||||
@@ -434,7 +434,7 @@ SECTIONS {
|
||||
src/wonder_mail_5.o(.rodata);
|
||||
src/wonder_mail_6.o(.rodata);
|
||||
src/post_office_guide.o(.rodata);
|
||||
data/data_80E1F30.o(.rodata);
|
||||
src/code_8031D70.o(.rodata);
|
||||
src/adventure_log.o(.rodata);
|
||||
data/data_80E2068.o(.rodata);
|
||||
src/main_menu.o(.rodata);
|
||||
|
||||
@@ -8,12 +8,7 @@
|
||||
struct AdventureLog
|
||||
{
|
||||
// size: 0xA0
|
||||
u8 fill0[0x1A];
|
||||
/* 0x1A */ s16 unk1A;
|
||||
/* 0x1C */ s16 unk1C;
|
||||
/* 0x1E */ s16 currPage;
|
||||
s16 unk20;
|
||||
u8 fill22[0x34 - 0x22];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk34;
|
||||
struct UnkTextStruct2 *unk38;
|
||||
struct UnkTextStruct2 unk3C[4];
|
||||
@@ -47,10 +42,10 @@ const u8 fill_adven[] = "pksdir0";
|
||||
void sub_8032084();
|
||||
void DisplayAdventureLog();
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern bool8 sub_8013938(void *);
|
||||
extern void sub_8013660(void *);
|
||||
extern bool8 sub_8013938(struct MenuInputStruct *);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern u32 GetKeyPress(void *);
|
||||
extern u32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern bool8 sub_8097710(u8);
|
||||
|
||||
extern s16 sub_80978B8();
|
||||
@@ -88,11 +83,11 @@ u32 CreateAdventureLogScreen(u32 param_1)
|
||||
u32 HandleAdventureLogInput(u8 param_1)
|
||||
{
|
||||
if (param_1 == 0) {
|
||||
sub_8013660(gAdventureLog);
|
||||
sub_8013660(&gAdventureLog->input);
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
switch(GetKeyPress(gAdventureLog))
|
||||
switch(GetKeyPress(&gAdventureLog->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -101,7 +96,7 @@ u32 HandleAdventureLogInput(u8 param_1)
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if (sub_8013938(gAdventureLog)) {
|
||||
if (sub_8013938(&gAdventureLog->input)) {
|
||||
sub_8032084();
|
||||
DisplayAdventureLog();
|
||||
return 1;
|
||||
@@ -131,11 +126,11 @@ void sub_8032084(void)
|
||||
u32 sVar2;
|
||||
|
||||
gAdventureLog->unk9C[0] = gAdventureLog->unk20;
|
||||
gAdventureLog->unk9C[1]= gAdventureLog->currPage;
|
||||
gAdventureLog->unk9C[1]= gAdventureLog->unk0.unk1E;
|
||||
gAdventureLog->unk9C[2]= 0xb;
|
||||
gAdventureLog->unk9C[3]= 0;
|
||||
// So a sign extend..
|
||||
sVar2 = sub_80095E4(gAdventureLog->unk1A,0xc) + 2 << 0x10;
|
||||
sVar2 = sub_80095E4(gAdventureLog->unk0.unk1A,0xc) + 2 << 0x10;
|
||||
// TODO needs asr r3, r0, r16
|
||||
// and lsr r0, r0, r16
|
||||
gAdventureLog->unk3C[gAdventureLog->unk34].unkE = sVar2;
|
||||
@@ -215,7 +210,7 @@ void DisplayAdventureLog(void)
|
||||
|
||||
sub_8008C54(gAdventureLog->unk34);
|
||||
sub_80073B8(gAdventureLog->unk34);
|
||||
r4 = gAdventureLog->currPage * 8;
|
||||
r4 = gAdventureLog->input.unk1E * 8;
|
||||
r6 = r4;
|
||||
r6 += 10;
|
||||
// Draw Header
|
||||
@@ -223,11 +218,11 @@ void DisplayAdventureLog(void)
|
||||
r4 += 4;
|
||||
r6 = r4 + gAdventureLog->unk9C[2] * 8;
|
||||
// Draw Page #
|
||||
sub_8012BC4(r6, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);
|
||||
sub_8012BC4(r6, 0, gAdventureLog->input.unk1E + 1, 1, 7, gAdventureLog->unk34);
|
||||
|
||||
for(counter = 0; counter < gAdventureLog->unk1A; counter++)
|
||||
for(counter = 0; counter < gAdventureLog->input.unk1A; counter++)
|
||||
{
|
||||
temp = gAdventureLog->currPage * gAdventureLog->unk1C + counter;
|
||||
temp = gAdventureLog->input.unk1E * gAdventureLog->input.unk1C + counter;
|
||||
if(sub_8097710(temp)){
|
||||
switch(temp) {
|
||||
case 0xc:
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "gba/defines.h"
|
||||
#include "global.h"
|
||||
|
||||
IWRAM_DATA u32 gUnknown_3004000 = {0};
|
||||
|
||||
@@ -3,10 +3,7 @@
|
||||
extern u8 gUnknown_202D238[4];
|
||||
|
||||
extern s32 gUnknown_202D23C;
|
||||
extern u16 gUnknown_202B038[2][32][32];
|
||||
extern u8 gUnknown_202B838[0x800];
|
||||
extern u8 gUnknown_202C038[0x800];
|
||||
extern u8 gUnknown_202C838[0x720];
|
||||
extern u16 gUnknown_202B038[4][32][32];
|
||||
|
||||
struct unkStruct_202D240
|
||||
{
|
||||
@@ -99,41 +96,34 @@ void sub_80098F8(u32 r0)
|
||||
void sub_8009908(void)
|
||||
{
|
||||
s32 index;
|
||||
u32 iVar3;
|
||||
|
||||
index = 0;
|
||||
if (index < gUnknown_202D23C) {
|
||||
iVar3 = 0;
|
||||
do {
|
||||
CpuCopy(gUnknown_202D240[index].unk0,gUnknown_202D240[index].unk4,gUnknown_202D240[index].size);
|
||||
iVar3 += sizeof(struct unkStruct_202D240);
|
||||
index++;
|
||||
} while (index < gUnknown_202D23C);
|
||||
for(index = 0; index < gUnknown_202D23C; index++)
|
||||
{
|
||||
CpuCopy(gUnknown_202D240[index].unk0, gUnknown_202D240[index].unk4, gUnknown_202D240[index].size);
|
||||
}
|
||||
gUnknown_202D23C = 0;
|
||||
if (gUnknown_202D238[0] != 0) {
|
||||
gUnknown_202D238[0] = 0;
|
||||
CpuCopy(BG_SCREEN_ADDR(12),gUnknown_202B038, BG_SCREEN_SIZE);
|
||||
CpuCopy(BG_SCREEN_ADDR(12), gUnknown_202B038[0], BG_SCREEN_SIZE);
|
||||
}
|
||||
if (gUnknown_202D238[1] != 0) {
|
||||
gUnknown_202D238[1] = 0;
|
||||
CpuCopy(BG_SCREEN_ADDR(13),gUnknown_202B838, BG_SCREEN_SIZE);
|
||||
CpuCopy(BG_SCREEN_ADDR(13), gUnknown_202B038[1], BG_SCREEN_SIZE);
|
||||
}
|
||||
if (gUnknown_202D238[2] != 0) {
|
||||
gUnknown_202D238[2] = 0;
|
||||
CpuCopy(BG_SCREEN_ADDR(14),gUnknown_202C038, BG_SCREEN_SIZE);
|
||||
CpuCopy(BG_SCREEN_ADDR(14), gUnknown_202B038[2], BG_SCREEN_SIZE);
|
||||
}
|
||||
if (gUnknown_202D238[3] != 0) {
|
||||
gUnknown_202D238[3] = 0;
|
||||
CpuCopy(BG_SCREEN_ADDR(15),gUnknown_202C838, BG_SCREEN_SIZE);
|
||||
CpuCopy(BG_SCREEN_ADDR(15), gUnknown_202B038[3], BG_SCREEN_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80099C0(void)
|
||||
{
|
||||
CpuCopy(BG_SCREEN_ADDR(12),gUnknown_202B038, BG_SCREEN_SIZE);
|
||||
// TODO shouldn't this be 202B838? It didn't match... might need raw address
|
||||
CpuCopy(BG_SCREEN_ADDR(13),gUnknown_202B038 + 0x1, BG_SCREEN_SIZE);
|
||||
CpuCopy(BG_SCREEN_ADDR(12), gUnknown_202B038[0], BG_SCREEN_SIZE);
|
||||
CpuCopy(BG_SCREEN_ADDR(13), gUnknown_202B038[1], BG_SCREEN_SIZE);
|
||||
}
|
||||
|
||||
void sub_80099F0(u32 r0)
|
||||
|
||||
@@ -66,6 +66,20 @@ extern u8 gUnknown_80DBB08[];
|
||||
extern u8 gUnknown_80DBB38[];
|
||||
extern u8 gKangaskhanTrashToolboxItem[];
|
||||
extern u8 gKangaskhanTrashReceivedItem[];
|
||||
extern u8 gKangaskhanStorage[];
|
||||
extern u8 gKangaskhanTrash[];
|
||||
extern u8 *gUnknown_80D4970[];
|
||||
extern u8 gUnknown_202DEA8[];
|
||||
extern u8 *gUnknown_80D4920[];
|
||||
extern u8 *gUnknown_80D4928[];
|
||||
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern u32 sub_801A6E8(u32);
|
||||
extern u32 sub_801A8AC();
|
||||
extern void sub_8099690(u32);
|
||||
extern void sub_801A928(void);
|
||||
|
||||
extern bool8 sub_801ADA0(s32);
|
||||
extern struct UnkTextStruct2 gUnknown_80DBA58;
|
||||
extern struct UnkTextStruct2 gUnknown_80DBA88;
|
||||
extern struct UnkTextStruct2 gUnknown_80DBA70;
|
||||
@@ -508,3 +522,206 @@ void sub_801BB20(void)
|
||||
gUnknown_203B234->unkCC[loopMax].text = NULL;
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = -1;
|
||||
}
|
||||
|
||||
void sub_801BB5C(void)
|
||||
{
|
||||
int index;
|
||||
s32 loopMax = 0;
|
||||
|
||||
gUnknown_203B234->unkCC[loopMax].text = gKangaskhanStorage;
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = 6;
|
||||
if (!sub_801ADA0(gUnknown_203B234->unk24)) {
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = -1;
|
||||
}
|
||||
|
||||
loopMax++;
|
||||
gUnknown_203B234->unkCC[loopMax].text = gKangaskhanTrash;
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = 7;
|
||||
|
||||
loopMax++;
|
||||
gUnknown_203B234->unkCC[loopMax].text = *gUnknown_80D4970;
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = 8;
|
||||
|
||||
loopMax++;
|
||||
gUnknown_203B234->unkCC[loopMax].text = 0;
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = 1;
|
||||
|
||||
|
||||
for(index = 0; index < loopMax; index++)
|
||||
{
|
||||
if(gUnknown_203B234->unkCC[index].menuAction != -1)
|
||||
if(gUnknown_203B234->unkCC[index].menuAction == gUnknown_203B234->menuAction)
|
||||
return;
|
||||
}
|
||||
|
||||
for(index = 0; index < loopMax; index++)
|
||||
{
|
||||
if(gUnknown_203B234->unkCC[index].menuAction != -1)
|
||||
{
|
||||
gUnknown_203B234->menuAction = gUnknown_203B234->unkCC[index].menuAction;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801BC24(void)
|
||||
{
|
||||
s32 loopMax;
|
||||
loopMax = 0;
|
||||
gUnknown_203B234->unkCC[loopMax].text = *gUnknown_80D4920;
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = 2;
|
||||
loopMax += 1;
|
||||
gUnknown_203B234->unkCC[loopMax].text = *gUnknown_80D4928;
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = 3;
|
||||
loopMax += 1;
|
||||
gUnknown_203B234->unkCC[loopMax].text = NULL;
|
||||
gUnknown_203B234->unkCC[loopMax].menuAction = 1;
|
||||
}
|
||||
|
||||
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)) {
|
||||
sub_8013114(&gUnknown_203B234->unk28,&menuAction);
|
||||
if (menuAction != 1) gUnknown_203B234->menuAction = 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)) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,27 +11,6 @@
|
||||
#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 menuAction;
|
||||
struct MenuItem unkCC[5];
|
||||
struct UnkTextStruct2 unkF4[4];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B234 *gUnknown_203B234;
|
||||
|
||||
|
||||
struct unkStruct_203B238
|
||||
{
|
||||
// size: 0x124
|
||||
@@ -55,17 +34,7 @@ struct unkStruct_203B23C
|
||||
/* 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];
|
||||
/* 0x24 */ struct MenuInputStruct input;
|
||||
u32 unk58;
|
||||
/* 0x5C */ struct UnkTextStruct2 *unk5C;
|
||||
/* 0x60 */ struct UnkTextStruct2 unk60[4];
|
||||
@@ -98,15 +67,7 @@ struct unkStruct_203B244
|
||||
u32 unk0;
|
||||
u8 itemIDs[NUMBER_OF_ITEM_IDS];
|
||||
u32 unkF4[NUMBER_OF_ITEM_IDS];
|
||||
u32 unk4B4;
|
||||
u8 fill4B8[0x4CC - 0x4B8];
|
||||
s16 unk4CC;
|
||||
s16 unk4CE;
|
||||
s16 unk4D0;
|
||||
s16 unk4D2;
|
||||
s16 unk4D4;
|
||||
s16 itemCount;
|
||||
u8 fill4D8[0x4E8 - 0x4D8];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk4E8;
|
||||
struct UnkTextStruct2 * unk4EC;
|
||||
struct UnkTextStruct2 unk4F0[4];
|
||||
@@ -115,7 +76,7 @@ struct unkStruct_203B244
|
||||
|
||||
struct unk_203B250
|
||||
{
|
||||
struct PokemonStruct *unk0;
|
||||
struct PokemonStruct *pokeStruct;
|
||||
s16 index;
|
||||
/* 0x6 */ u8 currFriendAreaLocation; // 0 when not in a friend area
|
||||
u8 unk7;
|
||||
@@ -182,9 +143,9 @@ extern u8 *gUnknown_80D4970[];
|
||||
|
||||
void sub_8007B7C(s32, s32, s32, s32, s32);
|
||||
extern bool8 sub_801CF14(s32);
|
||||
extern void sub_8013818(u32 *, u32, u32, u32);
|
||||
extern void sub_8013818(struct MenuInputStruct *, u32, u32, u32);
|
||||
extern u32 sub_801CE58(void);
|
||||
extern void sub_8013984(void *);
|
||||
extern void sub_8013984(struct MenuInputStruct *);
|
||||
extern void sub_801CC38(void);
|
||||
extern void sub_801CCD8(void);
|
||||
extern void sub_801CF94(void);
|
||||
@@ -204,14 +165,14 @@ 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 s32 sub_8013800(struct MenuInputStruct *, 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 void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct *, u32);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern bool8 HasNoAvailIQSkills(s16 species);
|
||||
extern u32 sub_801C674(void);
|
||||
extern void sub_801C6B4(void);
|
||||
@@ -239,188 +200,12 @@ 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 sub_801CB24();
|
||||
extern u32 sub_801CFE0(u8);
|
||||
extern s32 sub_801CFB8(void);
|
||||
extern void sub_801D220();
|
||||
extern void sub_801D3A8();
|
||||
|
||||
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->menuAction = 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)
|
||||
{
|
||||
@@ -638,7 +423,7 @@ bool8 sub_801C244(s16 species, u32 index, u32 param_3)
|
||||
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_8013818(&gUnknown_203B23C->input,gUnknown_203B23C->numIQSkills,param_3,index);
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
return TRUE;
|
||||
@@ -649,10 +434,10 @@ u32 sub_801C308(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B23C->unk24);
|
||||
sub_8013660(&gUnknown_203B23C->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B23C->unk24))
|
||||
switch(GetKeyPress(&gUnknown_203B23C->input))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -664,7 +449,7 @@ u32 sub_801C308(u8 r0)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B23C->unk24, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B23C->input, 1) != 0)
|
||||
{
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
@@ -677,19 +462,19 @@ u32 sub_801C308(u8 r0)
|
||||
|
||||
s32 sub_801C390(void)
|
||||
{
|
||||
return (gUnknown_203B23C->unk42 * gUnknown_203B23C->unk40) + gUnknown_203B23C->unk3C;
|
||||
return (gUnknown_203B23C->input.unk1E * gUnknown_203B23C->input.unk1C) + gUnknown_203B23C->input.menuIndex;
|
||||
}
|
||||
|
||||
void sub_801C3B0(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B23C->unk60, 0, 0);
|
||||
gUnknown_203B23C->unk46 = gUnknown_203B23C->numIQSkills;
|
||||
sub_8013984(&gUnknown_203B23C->unk24);
|
||||
gUnknown_203B23C->input.unk22 = gUnknown_203B23C->numIQSkills;
|
||||
sub_8013984(&gUnknown_203B23C->input);
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B23C->unk24);
|
||||
AddMenuCursorSprite(&gUnknown_203B23C->input);
|
||||
}
|
||||
|
||||
void sub_801C3F8(void)
|
||||
@@ -710,13 +495,13 @@ void sub_801C440(void)
|
||||
{
|
||||
u16 sVar2;
|
||||
|
||||
gUnknown_203B23C->unkC0 = gUnknown_203B23C->unk44;
|
||||
gUnknown_203B23C->unkC1 = gUnknown_203B23C->unk42;
|
||||
gUnknown_203B23C->unkC0 = gUnknown_203B23C->unk24.unk20;
|
||||
gUnknown_203B23C->unkC1 = gUnknown_203B23C->unk24.unk1E;
|
||||
gUnknown_203B23C->unkC2 = 0xA;
|
||||
gUnknown_203B23C->unkC3 = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B23C->unk60, 1, 1);
|
||||
sVar2 = sub_80095E4(gUnknown_203B23C->unk3E, 0xc) + 2;
|
||||
sVar2 = sub_80095E4(gUnknown_203B23C->unk24.unk1A, 0xc) + 2;
|
||||
gUnknown_203B23C->unk60[gUnknown_203B23C->unk58].unkE = sVar2;
|
||||
gUnknown_203B23C->unk60[gUnknown_203B23C->unk58].unk10 = sVar2;
|
||||
ResetUnusedInputStruct();
|
||||
@@ -804,18 +589,18 @@ void sub_801C4C8(void)
|
||||
|
||||
sub_8008C54(gUnknown_203B23C->unk58);
|
||||
sub_80073B8(gUnknown_203B23C->unk58);
|
||||
x = gUnknown_203B23C->unk42 * 8;
|
||||
x = gUnknown_203B23C->input.unk1E * 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,
|
||||
sub_8012BC4(x2,0,gUnknown_203B23C->input.unk1E + 1,1,7,
|
||||
gUnknown_203B23C->unk58);
|
||||
for (counter = 0; counter < gUnknown_203B23C->unk3E; counter++) {
|
||||
for (counter = 0; counter < gUnknown_203B23C->input.unk1A; counter++) {
|
||||
skillIndex = gUnknown_203B23C->iqSkills
|
||||
[gUnknown_203B23C->unk42 * gUnknown_203B23C->unk40 + counter];
|
||||
y = sub_8013800(&gUnknown_203B23C->unk24,counter);
|
||||
[gUnknown_203B23C->input.unk1E * gUnknown_203B23C->input.unk1C + counter];
|
||||
y = sub_8013800(&gUnknown_203B23C->input,counter);
|
||||
strncpy(gUnknown_202DEA8,GetIQSkillName(skillIndex),0x50);
|
||||
if (IsIQSkillSet((u8 *)&gUnknown_203B23C->pokeStruct->IQSkills,1 << skillIndex)) {
|
||||
strcpy(gUnknown_202DEA8 - 0x50,gUnknown_80DBE14);
|
||||
@@ -1002,11 +787,11 @@ bool8 sub_801C8C4(s32 param_1, s32 param_2, struct UnkTextStruct2_sub *param_3,
|
||||
sub_8012D08(gUnknown_203B244->unk4EC, param_4);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B244->unk4F0,1,1);
|
||||
sub_8013818(&gUnknown_203B244->unk4B4, sub_801CE58(), param_4, param_2);
|
||||
sub_8013818(&gUnknown_203B244->input, sub_801CE58(), param_4, param_2);
|
||||
if (gUnknown_203B248 == gUnknown_203B244->unk0) {
|
||||
gUnknown_203B244->unk4CC = gUnknown_203B24C;
|
||||
gUnknown_203B244->unk4D2 = gUnknown_203B24E;
|
||||
sub_8013984(&gUnknown_203B244->unk4B4);
|
||||
gUnknown_203B244->input.menuIndex = gUnknown_203B24C;
|
||||
gUnknown_203B244->input.unk1E = gUnknown_203B24E;
|
||||
sub_8013984(&gUnknown_203B244->input);
|
||||
}
|
||||
sub_801CC38();
|
||||
sub_801CCD8();
|
||||
@@ -1021,10 +806,10 @@ bool8 sub_801CA08(u8 param_1)
|
||||
u32 flag;
|
||||
|
||||
if (param_1 == 0) {
|
||||
sub_8013660(&gUnknown_203B244->unk4B4);
|
||||
sub_8013660(&gUnknown_203B244->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&(gUnknown_203B244->unk4B4)))
|
||||
switch(GetKeyPress(&(gUnknown_203B244->input)))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -1039,7 +824,7 @@ bool8 sub_801CA08(u8 param_1)
|
||||
if ((temp = sub_801CFE0(index), flag = FALSE, temp != 0) || (flag = (INVENTORY_SIZE > GetNumberOfFilledInventorySlots() + sub_801CFB8())) || flag != 0 ) {
|
||||
PlayMenuSoundEffect(6);
|
||||
gUnknown_203B244->unkF4[index] = gUnknown_203B244->unkF4[index] ^ 1;
|
||||
sub_80138B8(&gUnknown_203B244->unk4B4,0);
|
||||
sub_80138B8(&gUnknown_203B244->input,0);
|
||||
sub_801CCD8();
|
||||
return 1;
|
||||
}
|
||||
@@ -1053,7 +838,7 @@ bool8 sub_801CA08(u8 param_1)
|
||||
return 4;
|
||||
default:
|
||||
_0801CAF2:
|
||||
if (sub_80138B8(&gUnknown_203B244->unk4B4,1) != 0) {
|
||||
if (sub_80138B8(&gUnknown_203B244->input,1) != 0) {
|
||||
sub_801CC38();
|
||||
sub_801CCD8();
|
||||
return 1;
|
||||
@@ -1066,19 +851,19 @@ _0801CAF2:
|
||||
}
|
||||
|
||||
u8 sub_801CB24(void) {
|
||||
return gUnknown_203B244->itemIDs[(gUnknown_203B244->unk4D2 * gUnknown_203B244->unk4D0) + gUnknown_203B244->unk4CC];
|
||||
return gUnknown_203B244->itemIDs[(gUnknown_203B244->input.unk1E * gUnknown_203B244->input.unk1C) + gUnknown_203B244->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_801CB5C(u8 r0) {
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B244->unk4F0, 0, 0);
|
||||
gUnknown_203B244->itemCount = sub_801CE58();
|
||||
sub_8013984(&gUnknown_203B244->unk4B4);
|
||||
gUnknown_203B244->input.unk22 = sub_801CE58();
|
||||
sub_8013984(&gUnknown_203B244->input);
|
||||
sub_801CC38();
|
||||
sub_801CCD8();
|
||||
if(r0)
|
||||
{
|
||||
AddMenuCursorSprite(&gUnknown_203B244->unk4B4);
|
||||
AddMenuCursorSprite(&gUnknown_203B244->input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1086,8 +871,8 @@ void sub_801CBB8(void) {
|
||||
if(gUnknown_203B244 != NULL)
|
||||
{
|
||||
gUnknown_203B248 = gUnknown_203B244->unk0;
|
||||
gUnknown_203B24C = gUnknown_203B244->unk4CC;
|
||||
gUnknown_203B24E = gUnknown_203B244->unk4D2;
|
||||
gUnknown_203B24C = gUnknown_203B244->input.menuIndex;
|
||||
gUnknown_203B24E = gUnknown_203B244->input.unk1E;
|
||||
gUnknown_203B244->unk4F0[gUnknown_203B244->unk4E8] = gUnknown_80DBE3C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B244->unk4F0, 1, 1);
|
||||
@@ -1186,17 +971,17 @@ void sub_801CCD8(void)
|
||||
sub_80073B8(gUnknown_203B244->unk4E8);
|
||||
xxx_call_draw_string(10,0,gUnknown_80DBE6C,gUnknown_203B244->unk4E8,0);
|
||||
sub_8012BC4(gUnknown_203B244->unk550[2] * 8 + 4,0,
|
||||
gUnknown_203B244->unk4D2 + 1,2,7,gUnknown_203B244->unk4E8);
|
||||
for(index = 0; index < gUnknown_203B244->unk4CE; index++) {
|
||||
uVar3 = gUnknown_203B244->itemIDs[(gUnknown_203B244->unk4D2 * gUnknown_203B244->unk4D0) + index];
|
||||
gUnknown_203B244->input.unk1E + 1,2,7,gUnknown_203B244->unk4E8);
|
||||
for(index = 0; index < gUnknown_203B244->input.unk1A; index++) {
|
||||
uVar3 = gUnknown_203B244->itemIDs[(gUnknown_203B244->input.unk1E * gUnknown_203B244->input.unk1C) + index];
|
||||
sub_8090DC4(buffer,uVar3,0);
|
||||
y = sub_8013800(&gUnknown_203B244->unk4B4,index);
|
||||
y = sub_8013800(&gUnknown_203B244->input,index);
|
||||
xxx_call_draw_string(8,y,buffer,gUnknown_203B244->unk4E8,0);
|
||||
y2 = sub_8013800(&gUnknown_203B244->unk4B4,index);
|
||||
y2 = sub_8013800(&gUnknown_203B244->input,index);
|
||||
sub_8012BC4((gUnknown_203B244->unk4EC->unkC << 3) - 2,y2,
|
||||
gTeamInventory_203B460->teamStorage[uVar3],3,5,gUnknown_203B244->unk4E8);
|
||||
if ((sub_801CFE0(uVar3) & 1) != 0) {
|
||||
sub_8007B7C(gUnknown_203B244->unk4E8,0x8,sub_8013800(&gUnknown_203B244->unk4B4,index), (gUnknown_203B244->unk4EC->unkC + -1) * '\b',10);
|
||||
sub_8007B7C(gUnknown_203B244->unk4E8,0x8,sub_8013800(&gUnknown_203B244->input,index), (gUnknown_203B244->unk4EC->unkC + -1) * '\b',10);
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B244->unk4E8);
|
||||
@@ -1307,42 +1092,42 @@ struct unkStruct_203B244 *sub_801D008(void)
|
||||
|
||||
bool8 sub_801D014(struct PokemonStruct *param_1)
|
||||
{
|
||||
s32 index;
|
||||
struct PokemonStruct *pokemon;
|
||||
struct unk_203B250 *preload;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B250 = MemoryAlloc(sizeof(struct unk_203B250), 8);
|
||||
gUnknown_203B250->menuAction = gUnknown_203B254;
|
||||
gUnknown_203B250->unk0 = param_1;
|
||||
if (gUnknown_203B250->unk0 != NULL) {
|
||||
for(index = 0; index < NUM_MONSTERS; index++)
|
||||
{
|
||||
preload = gUnknown_203B250;
|
||||
pokemon = &gRecruitedPokemonRef->pokemon[(s16)index]; // cast is needed here
|
||||
if(preload->unk0 == pokemon)
|
||||
s32 index;
|
||||
struct PokemonStruct *pokemon;
|
||||
struct unk_203B250 *preload;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B250 = MemoryAlloc(sizeof(struct unk_203B250), 8);
|
||||
gUnknown_203B250->menuAction = gUnknown_203B254;
|
||||
gUnknown_203B250->pokeStruct = param_1;
|
||||
if (gUnknown_203B250->pokeStruct != NULL) {
|
||||
for(index = 0; index < NUM_MONSTERS; index++)
|
||||
{
|
||||
preload->index = index;
|
||||
break;
|
||||
preload = gUnknown_203B250;
|
||||
pokemon = &gRecruitedPokemonRef->pokemon[(s16)index]; // cast is needed here
|
||||
if(preload->pokeStruct == pokemon)
|
||||
{
|
||||
preload->index = index;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
gUnknown_203B250->index = NUM_MONSTERS;
|
||||
}
|
||||
gUnknown_203B250->currFriendAreaLocation = sub_8002658(sub_80A5728());
|
||||
gUnknown_203B250->unk8 = 0;
|
||||
gUnknown_203B250->unk9 = 0;
|
||||
gUnknown_203B250->unkC = GetPlayerPokemonStruct();
|
||||
gUnknown_203B250->unk7 = 0;
|
||||
if (gUnknown_203B250->unk0 != 0) {
|
||||
sub_801D208(5);
|
||||
}
|
||||
else {
|
||||
sub_801D208(0);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B250->index = NUM_MONSTERS;
|
||||
}
|
||||
gUnknown_203B250->currFriendAreaLocation = sub_8002658(sub_80A5728());
|
||||
gUnknown_203B250->unk8 = 0;
|
||||
gUnknown_203B250->unk9 = 0;
|
||||
gUnknown_203B250->unkC = GetPlayerPokemonStruct();
|
||||
gUnknown_203B250->unk7 = 0;
|
||||
if (gUnknown_203B250->pokeStruct != NULL) {
|
||||
sub_801D208(5);
|
||||
}
|
||||
else {
|
||||
sub_801D208(0);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_801D0DC(void)
|
||||
@@ -1390,10 +1175,8 @@ u32 sub_801D0DC(void)
|
||||
|
||||
u32 sub_801D178(void)
|
||||
{
|
||||
struct unk_203B250 *preload;
|
||||
struct PokemonStruct *pokeStruct;
|
||||
|
||||
preload = gUnknown_203B250;
|
||||
if (gUnknown_203B250->unk9 != 0)
|
||||
{
|
||||
return 2;
|
||||
@@ -1406,12 +1189,12 @@ u32 sub_801D178(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else if (preload->unkC != GetPlayerPokemonStruct())
|
||||
else if (gUnknown_203B250->unkC != GetPlayerPokemonStruct())
|
||||
{
|
||||
goto _ret4;
|
||||
}
|
||||
else if (sub_80A7AE8(7) < 0)
|
||||
{
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if((pokeStruct = sub_808D3F8(), (pokeStruct->unk0 >> 1 & 1) == 0))
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
#include "constants/friend_area.h"
|
||||
#include "constants/input.h"
|
||||
#include "file_system.h"
|
||||
#include "friend_list_menu.h"
|
||||
#include "item.h"
|
||||
#include "menu.h"
|
||||
#include "pokemon.h"
|
||||
#include "team_inventory.h"
|
||||
#include "memory.h"
|
||||
#include "input.h"
|
||||
@@ -16,14 +18,7 @@
|
||||
struct unkStruct_203B258
|
||||
{
|
||||
// size: 0xA0
|
||||
u8 fill0[0x18];
|
||||
u16 unk18;
|
||||
u16 unk1A;
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
u16 unk22;
|
||||
u8 unk24[0x34 - 0x24];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk34;
|
||||
struct UnkTextStruct2 *unk38;
|
||||
struct UnkTextStruct2 unk3C[4];
|
||||
@@ -34,15 +29,15 @@ extern struct unkStruct_203B258 *gUnknown_203B258;
|
||||
extern struct UnkTextStruct2 gUnknown_80DBF88;
|
||||
extern struct UnkTextStruct2 gUnknown_80DBF70;
|
||||
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern void sub_8013878(void *, s32);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern u32 GetKeyPress(void *);
|
||||
extern void sub_8013818(struct MenuInputStruct*, u32, u32, u32);
|
||||
extern void sub_8013878(struct MenuInputStruct *, s32);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct *, u32);
|
||||
extern u32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_801DB54();
|
||||
extern void sub_801DBD4();
|
||||
extern void sub_8013984(void *);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
extern void sub_8013984(struct MenuInputStruct *);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
|
||||
extern u32 sub_801BF48(void);
|
||||
extern void sub_801BF98(void);
|
||||
@@ -55,9 +50,6 @@ extern u32 sub_8022860();
|
||||
extern void sub_8022908();
|
||||
extern u32 sub_80244E4(void);
|
||||
extern void sub_802453C(void);
|
||||
extern u32 sub_8025354(void);
|
||||
extern u8 sub_802540C(void);
|
||||
extern void sub_8025418(void);
|
||||
extern u32 sub_8025F68();
|
||||
extern u8 sub_802604C();
|
||||
extern void sub_8026058();
|
||||
@@ -65,6 +57,7 @@ extern void sub_8027168();
|
||||
extern u32 sub_80270A4();
|
||||
extern u32 sub_802C898(void);
|
||||
extern void sub_802C8F4(void);
|
||||
extern void InitializeJobListMenu(u32);
|
||||
|
||||
extern const char *sub_8098FB4();
|
||||
extern void xxx_format_string(const char *, u8 *, u32 **, u32);
|
||||
@@ -80,8 +73,18 @@ extern void sub_8007E20(u32, u32, u32, u32, u32, u8 *, u32);
|
||||
extern struct FileArchive gTitleMenuFileArchive;
|
||||
extern const char gTeamRankBadgeFileName;
|
||||
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
|
||||
extern char gUnknown_80DBF3C[];
|
||||
extern char gUnknown_80DBF4C[];
|
||||
extern u8 gMenuItems[];
|
||||
extern u8 gMenuJobList[];
|
||||
extern u8 gMenuTeam[];
|
||||
extern u8 gMenuOthers[];
|
||||
extern u8 *gUnknown_80D49B4[];
|
||||
extern u8 gUnknown_80DBF34[];
|
||||
extern u8 *gUnknown_80D49A8[];
|
||||
extern u8 *gUnknown_80D4970[];
|
||||
|
||||
struct TeamBadgeData
|
||||
{
|
||||
@@ -91,13 +94,12 @@ struct TeamBadgeData
|
||||
|
||||
struct unk_203B250
|
||||
{
|
||||
u32 unk0;
|
||||
u16 unk4;
|
||||
struct PokemonStruct *pokeStruct;
|
||||
s16 index;
|
||||
/* 0x6 */ u8 currFriendAreaLocation; // 0 when not in a friend area
|
||||
u8 unk7;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 fillA[0xC - 0xA];
|
||||
struct PokemonStruct *unkC;
|
||||
u32 state;
|
||||
u32 menuAction;
|
||||
@@ -109,13 +111,154 @@ struct unk_203B250
|
||||
|
||||
struct unk_203B250 *gUnknown_203B250;
|
||||
|
||||
extern bool8 HasNoAcceptedJobs(void);
|
||||
extern bool8 sub_8024108(u32);
|
||||
extern bool8 sub_8096E2C(void);
|
||||
extern bool8 sub_80023E4(u32);
|
||||
extern u32 sub_801DCC4(void);
|
||||
extern u32 sub_8027074(void);
|
||||
extern void sub_80227B8(struct PokemonStruct *);
|
||||
extern bool8 sub_8024458(s16, u32);
|
||||
extern bool8 sub_801BEEC(s16);
|
||||
extern void sub_8021774(u8, u32, u32);
|
||||
void sub_801D894(void);
|
||||
u32 sub_8025EF4(struct PokemonStruct *);
|
||||
|
||||
void sub_801D3A8(void)
|
||||
{
|
||||
switch(gUnknown_203B250->state)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
if(gUnknown_203B250->pokeStruct != NULL)
|
||||
{
|
||||
PrintColoredPokeNameToBuffer(gAvailablePokemonNames, gUnknown_203B250->pokeStruct, 7);
|
||||
gUnknown_203B250->unk18.unk0 = gAvailablePokemonNames;
|
||||
sub_8012D60(&gUnknown_203B250->unk18, gUnknown_203B250->unk68, 0, gUnknown_203B250->unkA8, gUnknown_203B250->menuAction, 0);
|
||||
}
|
||||
else {
|
||||
sub_801D894();
|
||||
sub_8012D60(&gUnknown_203B250->unk18, gUnknown_203B250->unk68, 0, gUnknown_203B250->unkA8, gUnknown_203B250->menuAction, 0);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
sub_80227B8(gUnknown_203B250->pokeStruct);
|
||||
break;
|
||||
case 4:
|
||||
sub_8027074();
|
||||
break;
|
||||
case 5:
|
||||
sub_8025EF4(gUnknown_203B250->pokeStruct);
|
||||
break;
|
||||
case 6:
|
||||
sub_80252F0(0);
|
||||
break;
|
||||
case 7:
|
||||
sub_80252F0(1);
|
||||
break;
|
||||
case 8:
|
||||
sub_8024458(gUnknown_203B250->index, 2);
|
||||
break;
|
||||
case 9:
|
||||
sub_801BEEC(gUnknown_203B250->index);
|
||||
break;
|
||||
case 10:
|
||||
sub_8021774(gUnknown_203B250->currFriendAreaLocation, 1, 2);
|
||||
break;
|
||||
case 11:
|
||||
InitializeJobListMenu(0);
|
||||
break;
|
||||
case 12:
|
||||
sub_801DCC4();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D4C0(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 loopMax;
|
||||
|
||||
loopMax = 0;
|
||||
MemoryFill16(gUnknown_203B250->unkA8,0,sizeof(gUnknown_203B250->unkA8));
|
||||
if (gUnknown_203B250->currFriendAreaLocation == 0) {
|
||||
if (sub_8096E2C()) {
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 2;
|
||||
gUnknown_203B250->unk68[loopMax].text = gMenuItems;
|
||||
if (GetNumberOfFilledInventorySlots() == 0) {
|
||||
gUnknown_203B250->unkA8[loopMax] = 1;
|
||||
}
|
||||
loopMax++;
|
||||
gUnknown_203B250->unk68[loopMax].text = gMenuTeam;
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 4;
|
||||
loopMax++;
|
||||
if (sub_80023E4(2)) {
|
||||
gUnknown_203B250->unk68[loopMax].text = gMenuJobList;
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 9;
|
||||
if (HasNoAcceptedJobs()) {
|
||||
gUnknown_203B250->unkA8[loopMax] = 1;
|
||||
}
|
||||
loopMax++;
|
||||
}
|
||||
}
|
||||
gUnknown_203B250->unk68[loopMax].text = gMenuOthers;
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 0xb;
|
||||
loopMax++;
|
||||
}
|
||||
else {
|
||||
strcpy(gAvailablePokemonNames,gUnknown_80DBF34);
|
||||
if (sub_8096E2C()) {
|
||||
gUnknown_203B250->unk68[loopMax].text = *gUnknown_80D49A8;
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 5;
|
||||
if (sub_8024108(4)) {
|
||||
gUnknown_203B250->unkA8[loopMax] = 1;
|
||||
}
|
||||
loopMax++;
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 2;
|
||||
gUnknown_203B250->unk68[loopMax].text = gMenuItems;
|
||||
if (GetNumberOfFilledInventorySlots() == 0) {
|
||||
gUnknown_203B250->unkA8[loopMax] = 1;
|
||||
}
|
||||
loopMax++;
|
||||
}
|
||||
|
||||
gUnknown_203B250->unk68[loopMax].text = *gUnknown_80D4970;
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 8;
|
||||
loopMax++;
|
||||
gUnknown_203B250->unk68[loopMax].text = *gUnknown_80D49B4;
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 10;
|
||||
loopMax++;
|
||||
}
|
||||
gUnknown_203B250->unk68[loopMax].text = NULL;
|
||||
gUnknown_203B250->unk68[loopMax].menuAction = 1;
|
||||
|
||||
for(index = 0; index < loopMax; index++)
|
||||
{
|
||||
if(gUnknown_203B250->unkA8[index] == 0)
|
||||
{
|
||||
if(gUnknown_203B250->unk68[index].menuAction == gUnknown_203B250->menuAction)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(index = 0; index < loopMax; index++)
|
||||
{
|
||||
if(gUnknown_203B250->unkA8[index] == 0)
|
||||
{
|
||||
gUnknown_203B250->menuAction = gUnknown_203B250->unk68[index].menuAction;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801D680(void)
|
||||
{
|
||||
int menuAction;
|
||||
|
||||
menuAction = 0;
|
||||
if ((sub_8012FD8(&gUnknown_203B250->unk18) == '\0') && (sub_8013114(&gUnknown_203B250->unk18,&menuAction), menuAction != 1)) {
|
||||
if (!(sub_8012FD8(&gUnknown_203B250->unk18)) && (sub_8013114(&gUnknown_203B250->unk18,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B250->menuAction = menuAction;
|
||||
}
|
||||
switch(menuAction) {
|
||||
@@ -381,7 +524,7 @@ u32 sub_801D9E4(void)
|
||||
gUnknown_203B258->unk38->unk14 = gUnknown_203B258->unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B258->unk3C,1,1);
|
||||
sub_8013818(gUnknown_203B258,0xe5,10,gUnknown_203B258->unk34);
|
||||
sub_8013818(&gUnknown_203B258->input,0xe5,10,gUnknown_203B258->unk34);
|
||||
sub_801DB54();
|
||||
sub_801DBD4();
|
||||
return 1;
|
||||
@@ -391,14 +534,14 @@ void sub_801DA58(s16 param_0)
|
||||
{
|
||||
s32 cast;
|
||||
cast = param_0;
|
||||
sub_8013878(gUnknown_203B258, cast);
|
||||
sub_8013878(&gUnknown_203B258->input, cast);
|
||||
sub_801DB54();
|
||||
sub_801DBD4();
|
||||
}
|
||||
|
||||
u32 sub_801DA78(void)
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B258))
|
||||
switch(GetKeyPress(&gUnknown_203B258->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -406,7 +549,7 @@ u32 sub_801DA78(void)
|
||||
case INPUT_A_BUTTON:
|
||||
return 3;
|
||||
default:
|
||||
if(sub_80138B8(gUnknown_203B258, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B258->input, 1) != 0)
|
||||
{
|
||||
sub_801DB54();
|
||||
sub_801DBD4();
|
||||
@@ -420,17 +563,17 @@ u32 sub_801DA78(void)
|
||||
|
||||
s16 sub_801DAC0(void)
|
||||
{
|
||||
return (gUnknown_203B258->unk1E * gUnknown_203B258->unk1C) + gUnknown_203B258->unk18;
|
||||
return (gUnknown_203B258->input.unk1E * gUnknown_203B258->input.unk1C) + gUnknown_203B258->input.menuIndex;
|
||||
}
|
||||
|
||||
void sub_801DADC(u8 r0)
|
||||
{
|
||||
gUnknown_203B258->unk22 = 0xE5;
|
||||
sub_8013984(gUnknown_203B258);
|
||||
gUnknown_203B258->input.unk22 = 0xE5;
|
||||
sub_8013984(&gUnknown_203B258->input);
|
||||
sub_801DB54();
|
||||
sub_801DBD4();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(gUnknown_203B258);
|
||||
AddMenuCursorSprite(&gUnknown_203B258->input);
|
||||
}
|
||||
|
||||
void sub_801DB0C(void)
|
||||
|
||||
@@ -3,26 +3,7 @@
|
||||
#include "text.h"
|
||||
#include "memory.h"
|
||||
#include "input.h"
|
||||
|
||||
struct unkStruct_203B270
|
||||
{
|
||||
// size 0xBC
|
||||
u32 unk0;
|
||||
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;
|
||||
};
|
||||
#include "code_801EE10.h"
|
||||
|
||||
extern struct unkStruct_203B270 *gUnknown_203B270;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC25C;
|
||||
@@ -32,10 +13,10 @@ extern void sub_8012D08(void *, u32);
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
u32 sub_8006544(u32 index);
|
||||
s32 sub_801F3F8(void);
|
||||
void sub_8013780(u32 *, u32);
|
||||
void sub_8013780(struct MenuInputStruct*, u32);
|
||||
void sub_801F280(u32);
|
||||
|
||||
u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u32 param_5,u32 param_6)
|
||||
u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u8 *param_5,u32 param_6)
|
||||
{
|
||||
s32 iVar5;
|
||||
s32 iVar8;
|
||||
@@ -82,8 +63,8 @@ u8 sub_801EE10(u32 param_1,s16 species,struct Move *moves,u32 param_4,u32 param_
|
||||
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_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6);
|
||||
sub_8013780(&gUnknown_203B270->input,0);
|
||||
sub_801F280(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -8,10 +8,7 @@
|
||||
|
||||
struct unkStruct_203B2AC
|
||||
{
|
||||
u8 unk0[0x1E];
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
u8 unk22[0x34 - 0x22];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk34[3];
|
||||
u8 unk40[0x48 - 0x40];
|
||||
s16 speciesNum;
|
||||
@@ -48,15 +45,15 @@ 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 void sub_8013818(struct MenuInputStruct*, 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 s32 GetKeyPress(struct MenuInputStruct*);
|
||||
extern bool8 sub_8013938(struct MenuInputStruct*);
|
||||
extern void sub_802452C(void);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013984(void *);
|
||||
extern void sub_8013984(struct MenuInputStruct*);
|
||||
void sub_80922B4(u8 *buffer, u8 *string, s32 size);
|
||||
bool8 ComparePokemonNames(s16 a1, s16 a2);
|
||||
|
||||
@@ -237,13 +234,13 @@ bool8 sub_8024458(s16 speciesNum, s32 param_2)
|
||||
gUnknown_203B2AC->unk148[2] = 10;
|
||||
sub_8024604();
|
||||
sub_802452C();
|
||||
sub_8013984(gUnknown_203B2AC);
|
||||
sub_8013984(&gUnknown_203B2AC->input);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_80244E4(void)
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B2AC))
|
||||
switch(GetKeyPress(&gUnknown_203B2AC->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -252,7 +249,7 @@ u8 sub_80244E4(void)
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if (sub_8013938(gUnknown_203B2AC) != 0) {
|
||||
if (sub_8013938(&gUnknown_203B2AC->input) != 0) {
|
||||
sub_802452C();
|
||||
return 1;
|
||||
}
|
||||
@@ -282,8 +279,8 @@ void sub_802453C(void)
|
||||
|
||||
void sub_8024588(void)
|
||||
{
|
||||
gUnknown_203B2AC->unk148[0] = gUnknown_203B2AC->unk20;
|
||||
gUnknown_203B2AC->unk148[1] = gUnknown_203B2AC->unk1E;
|
||||
gUnknown_203B2AC->unk148[0] = gUnknown_203B2AC->input.unk20;
|
||||
gUnknown_203B2AC->unk148[1] = gUnknown_203B2AC->input.unk1E;
|
||||
gUnknown_203B2AC->unk148[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2AC->unkE8,1,1);
|
||||
@@ -292,8 +289,8 @@ void sub_8024588(void)
|
||||
void sub_80245D0(void)
|
||||
{
|
||||
CreatePokemonInfoTabScreen
|
||||
(gUnknown_203B2AC->unk34[gUnknown_203B2AC->unk1E],
|
||||
gUnknown_203B2AC->unk1E,&gUnknown_203B2AC->unk4C,
|
||||
(gUnknown_203B2AC->unk34[gUnknown_203B2AC->input.unk1E],
|
||||
gUnknown_203B2AC->input.unk1E,&gUnknown_203B2AC->unk4C,
|
||||
&gUnknown_203B2AC->unkB0,gUnknown_203B2AC->unkE0);
|
||||
}
|
||||
|
||||
@@ -305,7 +302,7 @@ void sub_8024604(void)
|
||||
gUnknown_203B2AC->unk34[0] = 2;
|
||||
gUnknown_203B2AC->unk34[1] = 3;
|
||||
gUnknown_203B2AC->unk34[2] = 5;
|
||||
sub_8013818(gUnknown_203B2AC,3,1,gUnknown_203B2AC->unkE0);
|
||||
sub_8013818(&gUnknown_203B2AC->input,3,1,gUnknown_203B2AC->unkE0);
|
||||
iVar3 = &gUnknown_203B2AC->unk4C;
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2AC->speciesNum];
|
||||
sub_808FF20(iVar3,pokeStruct, sub_80023E4(7));
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
#include "input.h"
|
||||
#include "code_800D090.h"
|
||||
#include "moves.h"
|
||||
#include "code_801EE10.h"
|
||||
|
||||
extern struct unkStruct_203B270 *gUnknown_203B270;
|
||||
|
||||
struct unkStruct_203B274
|
||||
{
|
||||
@@ -12,14 +15,7 @@ struct unkStruct_203B274
|
||||
struct PokemonStruct *pokeStruct;
|
||||
struct unkStruct_808E218_arg *unk4;
|
||||
struct unkStruct_808E218_arg unk8;
|
||||
u32 unk348;
|
||||
u8 fill34C[0x360 - 0x34C];
|
||||
s16 unk360;
|
||||
s16 unk362;
|
||||
s16 unk364;
|
||||
s16 unk366;
|
||||
s16 unk368;
|
||||
u8 fill36A[0x37C - 0x36A];
|
||||
struct MenuInputStruct input;
|
||||
s32 unk37C;
|
||||
struct UnkTextStruct2 *unk380;
|
||||
struct UnkTextStruct2 unk384[4];
|
||||
@@ -31,23 +27,40 @@ extern struct UnkTextStruct2 gUnknown_80DC2AC;
|
||||
|
||||
extern u8 gUnknown_80DC2DC[];
|
||||
|
||||
extern void sub_8013818(u32 *, u32, u32, u32);
|
||||
extern s32 GetKeyPress(void *);
|
||||
extern void sub_8013660(void *);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
extern u8 sub_80138B8(u32 *, u32);
|
||||
extern void sub_8013818(struct MenuInputStruct*, u32, u32, u32);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct*);
|
||||
extern void sub_8013660(struct MenuInputStruct*);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct*);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct*, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013984(void *);
|
||||
extern void sub_8013984(struct MenuInputStruct*);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern s32 sub_8013800(u32 *, s32);
|
||||
extern s32 sub_8013800(struct MenuInputStruct*, s32);
|
||||
extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32);
|
||||
|
||||
u32 sub_801F7E4(void);
|
||||
void sub_801F690(void);
|
||||
void sub_801F700(void);
|
||||
|
||||
s32 sub_801F3F8(void)
|
||||
{
|
||||
struct Move *move;
|
||||
int index;
|
||||
s32 counter;
|
||||
|
||||
counter = 0;
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
move = &gUnknown_203B270->moves[index];
|
||||
if ((move->moveFlags & MOVE_FLAG_EXISTS)) {
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
return counter;
|
||||
}
|
||||
|
||||
bool8 sub_801F428(s16 index, s32 param_2) {
|
||||
|
||||
s32 index_s32 = index;
|
||||
@@ -65,7 +78,7 @@ bool8 sub_801F428(s16 index, s32 param_2) {
|
||||
gUnknown_203B274->unk3E4[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B274->unk384, 1, 1);
|
||||
sub_8013818(&gUnknown_203B274->unk348, sub_801F7E4(), 4, param_2);
|
||||
sub_8013818(&gUnknown_203B274->input, sub_801F7E4(), 4, param_2);
|
||||
sub_801F690();
|
||||
sub_801F700();
|
||||
return 1;
|
||||
@@ -74,11 +87,11 @@ bool8 sub_801F428(s16 index, s32 param_2) {
|
||||
u32 sub_801F520(u8 param_1)
|
||||
{
|
||||
if (param_1 == 0) {
|
||||
sub_8013660(&gUnknown_203B274->unk348);
|
||||
sub_8013660(&gUnknown_203B274->input);
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
switch(GetKeyPress(&gUnknown_203B274->unk348))
|
||||
switch(GetKeyPress(&gUnknown_203B274->input))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -92,7 +105,7 @@ u32 sub_801F520(u8 param_1)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (sub_80138B8(&gUnknown_203B274->unk348,1) != 0) {
|
||||
if (sub_80138B8(&gUnknown_203B274->input,1) != 0) {
|
||||
sub_801F690();
|
||||
sub_801F700();
|
||||
return 1;
|
||||
@@ -105,18 +118,18 @@ u32 sub_801F520(u8 param_1)
|
||||
|
||||
u16 sub_801F5B4(void)
|
||||
{
|
||||
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->unk366 * gUnknown_203B274->unk364 + gUnknown_203B274->unk360];
|
||||
return gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + gUnknown_203B274->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_801F5F0(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B274->unk384, 0, 0);
|
||||
sub_8013984(&gUnknown_203B274->unk348);
|
||||
sub_8013984(&gUnknown_203B274->input);
|
||||
sub_801F690();
|
||||
sub_801F700();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B274->unk348);
|
||||
AddMenuCursorSprite(&gUnknown_203B274->input);
|
||||
}
|
||||
|
||||
void sub_801F63C(void)
|
||||
@@ -196,12 +209,12 @@ void sub_801F700(void)
|
||||
|
||||
sub_8008C54(gUnknown_203B274->unk37C);
|
||||
sub_80073B8(gUnknown_203B274->unk37C);
|
||||
sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->unk366 + 1,gUnknown_203B274->unk368); // Moves Page: %d/%d
|
||||
sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->input.unk1E + 1,gUnknown_203B274->input.unk20); // Moves Page: %d/%d
|
||||
xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0);
|
||||
for(index = 0; index < gUnknown_203B274->unk362; index++)
|
||||
for(index = 0; index < gUnknown_203B274->input.unk1A; index++)
|
||||
{
|
||||
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->unk366 * gUnknown_203B274->unk364 + index]);
|
||||
y = sub_8013800(&gUnknown_203B274->unk348, index);
|
||||
sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + index]);
|
||||
y = sub_8013800(&gUnknown_203B274->input, index);
|
||||
xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0);
|
||||
}
|
||||
sub_80073E0(gUnknown_203B274->unk37C);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "memory.h"
|
||||
#include "menu.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "team_inventory.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
@@ -21,13 +22,7 @@ struct unkStruct_3001B5C
|
||||
u8 fill14[0x354 - 0x14];
|
||||
u8 unk354;
|
||||
u8 fill355[0x35C - 0x355];
|
||||
u8 unk35C;
|
||||
u8 fill35D[0x374 - 0x35D];
|
||||
s16 unk374;
|
||||
s16 unk376;
|
||||
s16 unk378;
|
||||
s16 unk37A;
|
||||
u8 fill37C[0x390 - 0x37C];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk390;
|
||||
struct UnkTextStruct2 *unk394;
|
||||
struct UnkTextStruct2 unk398[4];
|
||||
@@ -42,17 +37,21 @@ extern u16 gUnknown_203B29E;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC91C;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC904;
|
||||
|
||||
void sub_8023758(void);
|
||||
void sub_80237E0(void);
|
||||
extern bool8 sub_8098134(s32);
|
||||
extern void sub_8023730(void);
|
||||
extern u8 sub_8023704(u8);
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern void sub_8013984(u8 *);
|
||||
extern void sub_8013818(struct MenuInputStruct*, u32, u32, u32);
|
||||
extern void sub_8013984(struct MenuInputStruct*);
|
||||
extern void sub_8023420(void);
|
||||
extern void sub_80234BC(void);
|
||||
extern u32 sub_80236A4(void);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct*, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 GetKeyPress(void *);
|
||||
extern void sub_8013660(void *);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct*);
|
||||
extern void sub_8013660(struct MenuInputStruct*);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct*);
|
||||
|
||||
struct unkStruct_203B294
|
||||
{
|
||||
@@ -331,10 +330,10 @@ bool8 sub_8023144(s32 param_1, s32 index, struct UnkTextStruct2_sub *sub, u32 pa
|
||||
sub_8012D08(gUnknown_3001B5C->unk394,param_4);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_3001B5C->unk398,1,1);
|
||||
sub_8013818(&gUnknown_3001B5C->unk35C,sub_80236A4(),param_4,index);
|
||||
gUnknown_3001B5C->unk374 = gUnknown_203B29C;
|
||||
gUnknown_3001B5C->unk37A = gUnknown_203B29E;
|
||||
sub_8013984(&gUnknown_3001B5C->unk35C);
|
||||
sub_8013818(&gUnknown_3001B5C->input,sub_80236A4(),param_4,index);
|
||||
gUnknown_3001B5C->input.menuIndex = gUnknown_203B29C;
|
||||
gUnknown_3001B5C->input.unk1E = gUnknown_203B29E;
|
||||
sub_8013984(&gUnknown_3001B5C->input);
|
||||
sub_8023420();
|
||||
sub_80234BC();
|
||||
return 1;
|
||||
@@ -347,10 +346,10 @@ u8 sub_8023278(u8 param_1)
|
||||
u32 temp;
|
||||
|
||||
if (param_1 == 0) {
|
||||
sub_8013660(&gUnknown_3001B5C->unk35C);
|
||||
sub_8013660(&gUnknown_3001B5C->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_3001B5C->unk35C))
|
||||
switch(GetKeyPress(&gUnknown_3001B5C->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -367,7 +366,7 @@ u8 sub_8023278(u8 param_1)
|
||||
sub_80236A4();
|
||||
break;
|
||||
default:
|
||||
if (sub_80138B8(&gUnknown_3001B5C->unk35C, 1) == 0) {
|
||||
if (sub_80138B8(&gUnknown_3001B5C->input, 1) == 0) {
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
@@ -379,18 +378,18 @@ u8 sub_8023278(u8 param_1)
|
||||
|
||||
s16 sub_802331C(void)
|
||||
{
|
||||
return gUnknown_3001B5C->unkC[gUnknown_3001B5C->unk37A * gUnknown_3001B5C->unk378 + gUnknown_3001B5C->unk374];
|
||||
return gUnknown_3001B5C->unkC[gUnknown_3001B5C->input.unk1E * gUnknown_3001B5C->input.unk1C + gUnknown_3001B5C->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_8023354(u8 param_1)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_3001B5C->unk398,0,0);
|
||||
sub_8013984(&gUnknown_3001B5C->unk35C);
|
||||
sub_8013984(&gUnknown_3001B5C->input);
|
||||
sub_8023420();
|
||||
sub_80234BC();
|
||||
if (param_1 != 0) {
|
||||
AddMenuCursorSprite(&gUnknown_3001B5C->unk35C);
|
||||
AddMenuCursorSprite(&gUnknown_3001B5C->input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,8 +398,8 @@ void sub_80233A0(void)
|
||||
{
|
||||
if (gUnknown_3001B5C != NULL) {
|
||||
gUnknown_203B298 = gUnknown_3001B5C->unk4;
|
||||
gUnknown_203B29C = gUnknown_3001B5C->unk374;
|
||||
gUnknown_203B29E = gUnknown_3001B5C->unk37A;
|
||||
gUnknown_203B29C = gUnknown_3001B5C->input.menuIndex;
|
||||
gUnknown_203B29E = gUnknown_3001B5C->input.unk1E;
|
||||
gUnknown_3001B5C->unk398[gUnknown_3001B5C->unk390] = gUnknown_80DC904;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_3001B5C->unk398,1,1);
|
||||
@@ -408,3 +407,192 @@ void sub_80233A0(void)
|
||||
gUnknown_3001B5C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_8023420(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,r5,lr}\n"
|
||||
"\tldr r4, _080234A8\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0xFE\n"
|
||||
"\tlsls r1, 2\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, _080234AC\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, _080234B0\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r2, _080234B4\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl sub_80095E4\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tldr r3, [r4]\n"
|
||||
"\tmovs r2, 0xE4\n"
|
||||
"\tlsls r2, 2\n"
|
||||
"\tadds r5, r3, r2\n"
|
||||
"\tldr r2, [r5]\n"
|
||||
"\tlsls r1, r2, 1\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r3, r1\n"
|
||||
"\tldr r2, _080234B8\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r2, [r5]\n"
|
||||
"\tlsls r1, r2, 1\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r3, r1\n"
|
||||
"\tmovs r1, 0xEA\n"
|
||||
"\tlsls r1, 2\n"
|
||||
"\tadds r3, r1\n"
|
||||
"\tstrh r0, [r3]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r2, 0xE6\n"
|
||||
"\tlsls r2, 2\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4,r5}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_080234A8: .4byte gUnknown_3001B5C\n"
|
||||
"_080234AC: .4byte 0x000003f9\n"
|
||||
"_080234B0: .4byte 0x000003fb\n"
|
||||
"_080234B4: .4byte 0x00000376\n"
|
||||
"_080234B8: .4byte 0x000003a6");
|
||||
}
|
||||
|
||||
extern u8 gUnknown_80DC934[];
|
||||
|
||||
struct unkStruct_8092638
|
||||
{
|
||||
u32 unk0;
|
||||
u8 unk4;
|
||||
u32 unk5;
|
||||
};
|
||||
extern void sub_8092638(u8,struct unkStruct_8092638 *, u32, u32);
|
||||
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
void sub_808D930(u8 *buffer, s32 index);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
bool8 HasRecruitedMon(s16 species_);
|
||||
extern u8 gUnknown_80DC93C[];
|
||||
void sprintfStatic(char *buffer, const char *text, ...);
|
||||
|
||||
void sub_80234BC(void)
|
||||
{
|
||||
u8 cVar2;
|
||||
u32 y;
|
||||
s32 uVar3;
|
||||
s32 iVar4;
|
||||
s32 species;
|
||||
u32 color;
|
||||
s32 index;
|
||||
u8 buffer2 [256];
|
||||
u8 buffer1 [100];
|
||||
struct unkStruct_8092638 auStack_2c;
|
||||
|
||||
sub_8008C54(gUnknown_3001B5C->unk390);
|
||||
sub_80073B8(gUnknown_3001B5C->unk390);
|
||||
xxx_call_draw_string(10,0,gUnknown_80DC934,gUnknown_3001B5C->unk390,0); // Pokemon
|
||||
sub_8012BC4(gUnknown_3001B5C->unk3F8[2] * 8 + 4,0,
|
||||
gUnknown_3001B5C->input.unk1E + 1,2,7,gUnknown_3001B5C->unk390);
|
||||
for(index = 0; index < gUnknown_3001B5C->input.unk1A; index++)
|
||||
{
|
||||
y = sub_8013800(&gUnknown_3001B5C->input,index);
|
||||
species = gUnknown_3001B5C->unkC[(gUnknown_3001B5C->input.unk1E * gUnknown_3001B5C->input.unk1C + index)];
|
||||
sub_8092638(GetFriendArea(species),&auStack_2c,0,0);
|
||||
color = 7;
|
||||
if (auStack_2c.unk4 != 0) {
|
||||
color = HasRecruitedMon(species) ? 5 : 4;
|
||||
}
|
||||
iVar4 = GetDexInternalNo(species,0);
|
||||
cVar2 = (iVar4 % 10) + 0x30;
|
||||
sub_8012C60(0x14,y,cVar2,color,gUnknown_3001B5C->unk390);
|
||||
if (9 < iVar4) {
|
||||
iVar4 /= 10;
|
||||
cVar2 = (iVar4 % 10) + 0x30;
|
||||
sub_8012C60(0xd,y,cVar2,color,gUnknown_3001B5C->unk390);
|
||||
if (9 < iVar4) {
|
||||
uVar3 = iVar4 / 10;
|
||||
cVar2 = (uVar3 % 10) + 0x30;
|
||||
sub_8012C60(6,y,cVar2,color,gUnknown_3001B5C->unk390);
|
||||
}
|
||||
}
|
||||
sub_808D930(buffer1,species);
|
||||
sprintfStatic(buffer2,gUnknown_80DC93C,color,buffer1); // {COLOR_2}%c%s
|
||||
xxx_call_draw_string(0x24,y,buffer2,gUnknown_3001B5C->unk390,0);
|
||||
}
|
||||
sub_80073E0(gUnknown_3001B5C->unk390);
|
||||
}
|
||||
|
||||
u32 sub_80236A4(void)
|
||||
{
|
||||
s16 index_s32;
|
||||
int index;
|
||||
s32 temp;
|
||||
|
||||
gUnknown_3001B5C->unk8 = 0;
|
||||
for(index = 0; index < 0x1a8; index++)
|
||||
{
|
||||
index_s32 = index;
|
||||
if ((sub_8098134(index_s32)) &&
|
||||
(index_s32 == GetBaseSpeciesNoUnown(index_s32))) {
|
||||
temp = gUnknown_3001B5C->unk8;
|
||||
gUnknown_3001B5C->unkC[gUnknown_3001B5C->unk8] = index;
|
||||
gUnknown_3001B5C->unk8 = temp + 1;
|
||||
}
|
||||
}
|
||||
sub_8023730();
|
||||
return gUnknown_3001B5C->unk8;
|
||||
}
|
||||
|
||||
bool8 sub_8023704(u8 unused)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < 0x1a8; index++)
|
||||
{
|
||||
if (sub_8098134((s16)index))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8023730(void)
|
||||
{
|
||||
switch(gUnknown_3001B5C->unk4)
|
||||
{
|
||||
case 1:
|
||||
sub_8023758();
|
||||
break;
|
||||
case 2:
|
||||
sub_80237E0();
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
184
src/code_8031D70.c
Normal file
184
src/code_8031D70.c
Normal file
@@ -0,0 +1,184 @@
|
||||
#include "global.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
#include "constants/colors.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "pokemon.h"
|
||||
#include "code_8094F88.h"
|
||||
#include "menu_input.h"
|
||||
|
||||
struct unkStruct_203B334
|
||||
{
|
||||
// size: 0x7C
|
||||
u32 mailIndex;
|
||||
u32 unk4;
|
||||
u8 fill8[0x10 - 0x8];
|
||||
u32 unk10;
|
||||
struct UnkTextStruct2 *unk14;
|
||||
struct UnkTextStruct2 unk18[4];
|
||||
u8 unk78[4];
|
||||
};
|
||||
|
||||
EWRAM_DATA_2 struct unkStruct_203B334 *gUnknown_203B334 = {0};
|
||||
extern struct unkStruct_203B480 *gUnknown_203B480;
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80E1FA8 = {
|
||||
0, 0, 0, 0,
|
||||
3,
|
||||
0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0,
|
||||
0x0, 0,
|
||||
NULL
|
||||
};
|
||||
|
||||
const u8 gUnkData_80E1FC0[4] = {0x01, 0x00, 0x0A, 0x00};
|
||||
const struct UnkTextStruct2 gUnknown_80E1FC4 = {
|
||||
0, 0, 0, 0,
|
||||
6,
|
||||
0x2, 0x0, 0x2, 0x0,
|
||||
0x1A, 0xA,
|
||||
0xA, 0,
|
||||
gUnkData_80E1FC0
|
||||
};
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_80E1FDC[] = "Password";
|
||||
ALIGNED(4) static const u8 fill0[] = "pksdir0";
|
||||
|
||||
extern void xxx_call_draw_string(s32, s32, const u8 *, s32, s32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void sub_80078A4(u32, u32, u32, u32, u32);
|
||||
extern void sub_803D2C0(u8 *, struct unkStruct_203B480 *);
|
||||
extern void sub_801317C(u32 *);
|
||||
extern u32 sub_8012A64(u32 *, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
|
||||
void sub_8031E00(void);
|
||||
void sub_8031E58(void);
|
||||
void DrawSOSPasswordScreen(void);
|
||||
|
||||
bool8 sub_8031D70(u32 mailIndex, s32 param_2)
|
||||
{
|
||||
gUnknown_203B334 = MemoryAlloc(sizeof(struct unkStruct_203B334),8);
|
||||
gUnknown_203B334->mailIndex = mailIndex;
|
||||
sub_801317C(&gUnknown_203B334->unk4);
|
||||
gUnknown_203B334->unk10 = param_2;
|
||||
gUnknown_203B334->unk14 = &gUnknown_203B334->unk18[param_2];
|
||||
sub_8006518(gUnknown_203B334->unk18);
|
||||
gUnknown_203B334->unk18[gUnknown_203B334->unk10] = gUnknown_80E1FC4;
|
||||
sub_8031E00();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_8031DCC(void)
|
||||
{
|
||||
switch(sub_8012A64(&gUnknown_203B334->unk4, gUnknown_203B334->unk10))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8031E00(void)
|
||||
{
|
||||
sub_8031E58();
|
||||
DrawSOSPasswordScreen();
|
||||
}
|
||||
|
||||
void sub_8031E10(void)
|
||||
{
|
||||
if(gUnknown_203B334)
|
||||
{
|
||||
gUnknown_203B334->unk18[gUnknown_203B334->unk10] = gUnknown_80E1FA8;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B334->unk18, 1, 1);
|
||||
MemoryFree(gUnknown_203B334);
|
||||
gUnknown_203B334 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8031E58(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B334->unk18, 1, 1);
|
||||
}
|
||||
|
||||
void DrawSOSPasswordScreen(void)
|
||||
{
|
||||
int rowIndex;
|
||||
u32 x;
|
||||
u32 y;
|
||||
u32 color;
|
||||
s32 index;
|
||||
u8 buffer [PASSWORD_BUFFER_SIZE + 2];
|
||||
struct unkStruct_203B480 *mail;
|
||||
|
||||
mail = &gUnknown_203B480[gUnknown_203B334->mailIndex];
|
||||
sub_80073B8(gUnknown_203B334->unk10);
|
||||
xxx_call_draw_string(0x14,0,gUnknown_80E1FDC,gUnknown_203B334->unk10,0); // Password
|
||||
sub_803D2C0(buffer, mail);
|
||||
for(index = 0; index < PASSWORD_BUFFER_SIZE; index++)
|
||||
{
|
||||
if (index < 5) {
|
||||
color = COLOR_WHITE_2;
|
||||
y = 0x15;
|
||||
}
|
||||
else if (index < 0xd) {
|
||||
color = COLOR_YELLOW;
|
||||
y = 0x16;
|
||||
}
|
||||
else if (index < 0x12)
|
||||
{
|
||||
color = COLOR_WHITE_2;
|
||||
y = 0x15;
|
||||
}
|
||||
else if (index < 0x17) {
|
||||
color = COLOR_WHITE_2;
|
||||
y = 0x24;
|
||||
}
|
||||
else if (index < 0x1f) {
|
||||
color = COLOR_YELLOW;
|
||||
y = 0x25;
|
||||
}
|
||||
else if (index < 0x24)
|
||||
{
|
||||
color = COLOR_WHITE_2;
|
||||
y = 0x24;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(index > 0x28)
|
||||
{
|
||||
if(index < 0x31)
|
||||
{
|
||||
color = COLOR_YELLOW;
|
||||
y = 0x34;
|
||||
}
|
||||
else
|
||||
{
|
||||
color = COLOR_WHITE_2;
|
||||
y = 0x33;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
color = COLOR_WHITE_2;
|
||||
y = 0x33;
|
||||
}
|
||||
}
|
||||
rowIndex = index % 0x12;
|
||||
x = rowIndex * 0xb + 6;
|
||||
sub_8012C60(x,y,buffer[index],color,gUnknown_203B334->unk10); // Draw character
|
||||
sub_80078A4(gUnknown_203B334->unk10,x,y + 0xA,10,COLOR_CYAN); // Draw underscore beneath character
|
||||
}
|
||||
sub_80073E0(gUnknown_203B334->unk10);
|
||||
}
|
||||
@@ -408,7 +408,7 @@ extern void sub_808692C();
|
||||
|
||||
extern void sub_80868F4();
|
||||
extern void sub_8086910();
|
||||
extern u32 sub_8085EC8(u32, u32, u32, u32 *, u32);
|
||||
extern u32 sub_8085EC8(u32, u32, u32, struct Position *, u32);
|
||||
extern void sub_808680C();
|
||||
extern void sub_808682C();
|
||||
extern void sub_8086854();
|
||||
@@ -417,7 +417,7 @@ extern void sub_8086838(u32, u32, u32);
|
||||
extern void sub_80426C8(u32, u32);
|
||||
extern void sub_807EAA0(u32, u32);
|
||||
|
||||
extern void sub_808BCE4(void);
|
||||
extern void CreateJirachiWishWarpTile(void);
|
||||
extern u8 sub_8098100(u32);
|
||||
extern void sub_8086794();
|
||||
|
||||
@@ -447,7 +447,6 @@ extern u8 sub_8086AE4(u32);
|
||||
|
||||
|
||||
extern void sub_8072008(struct Entity *, struct Entity *, s16, u32, u32);
|
||||
extern struct Entity *GetPartnerEntity();
|
||||
extern void sub_80869E4(struct Entity *, u32, u32, u32);
|
||||
extern void sub_806CDD4(struct Entity *, u32, u32);
|
||||
extern void sub_8085374();
|
||||
@@ -486,9 +485,9 @@ void ZapdosScreenFlash(int param_1);
|
||||
extern s32 sub_8052C68(u32, u8 *, u32 *, u32);
|
||||
extern void sub_80861A8(void);
|
||||
extern void sub_8045C28(struct Item *, u8 , u8 *);
|
||||
extern void sub_808BD38(void);
|
||||
extern void sub_808BB3C(s16 *);
|
||||
extern void sub_8046860(struct Entity *, s32 *, struct Item *, u32);
|
||||
extern void EnableJirachiWishWarpTile(void);
|
||||
extern void sub_808BB3C(struct Position *);
|
||||
extern void sub_8046860(struct Entity *, struct Position *, struct Item *, u32);
|
||||
extern u32 sub_803D73C(u32);
|
||||
|
||||
void ZapdosReFightDialogue(void)
|
||||
@@ -562,20 +561,20 @@ void ZapdosDropInEffect(struct Entity *zapdosEntity)
|
||||
sub_803E708(0x1e,0x46);
|
||||
}
|
||||
|
||||
void ZapdosScreenFlash(s32 param_1)
|
||||
void ZapdosScreenFlash(s32 numFlashes)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
|
||||
PlaySoundEffect(0x1f6);
|
||||
if (2 < param_1) {
|
||||
if (2 < numFlashes) {
|
||||
for(iVar2 = 250; iVar2 > 199; iVar2 -= 10)
|
||||
{
|
||||
SetDungeonBGColorRGB(iVar2,iVar2,iVar2 / 2,1,1);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
}
|
||||
if (1 < param_1) {
|
||||
if (1 < numFlashes) {
|
||||
for(iVar2 = 250; iVar2 > 199; iVar2 -= 10)
|
||||
{
|
||||
SetDungeonBGColorRGB(iVar2,iVar2,iVar2 / 2,1,1);
|
||||
@@ -594,8 +593,6 @@ void ZapdosScreenFlash(s32 param_1)
|
||||
sub_8085EB0();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void sub_80877E8(void)
|
||||
{
|
||||
struct Entity * LeaderEntity;
|
||||
@@ -643,11 +640,9 @@ void sub_8087848(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038,MONSTER_MOLTRES);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void sub_80878F4(char param_1, s32 param_2)
|
||||
void sub_80878F4(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xF6000000U) >> 0x18 < 3) && (param_1 == 0x9)) {
|
||||
if ((param_2 == 0xA || param_2 == 0xB || param_2 == 0xC) && (param_1 == 0x9)) {
|
||||
sub_8097FA8(0x7);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
@@ -1062,11 +1057,9 @@ void sub_8087FF8(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_ARTICUNO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void sub_8088088(char param_1, s32 param_2)
|
||||
void sub_8088088(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xF3000000U) >> 0x18 < 3) && (param_1 == 0xD)) {
|
||||
if ((param_2 == 0xD || param_2 == 0xE || param_2 == 0xF) && (param_1 == 0xD)) {
|
||||
sub_8097FA8(0x9);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
@@ -1376,9 +1369,9 @@ void sub_808875C(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_ALAKAZAM);
|
||||
}
|
||||
|
||||
void sub_8088818(char param_1, s32 param_2)
|
||||
void sub_8088818(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xEE000000U) >> 0x18 < 3) && (param_1 == 0xE)) {
|
||||
if ((param_2 == 0x12 || param_2 == 0x13 || param_2 == 0x14) && (param_1 == 0xE)) {
|
||||
sub_8097FA8(0xC);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
@@ -1924,9 +1917,9 @@ void sub_8089328(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038,MONSTER_RAYQUAZA);
|
||||
}
|
||||
|
||||
void sub_80893B4(char param_1, s32 param_2)
|
||||
void sub_80893B4(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xE9000000U) >> 0x18 < 3) && (param_1 == 0xF)) {
|
||||
if ((param_2 == 0x17 || param_2 == 0x18 || param_2 == 0x19) && (param_1 == 0xF)) {
|
||||
sub_8097FA8(0xF);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
@@ -2098,19 +2091,19 @@ void sub_808974C(void)
|
||||
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y + -3);
|
||||
}
|
||||
|
||||
void sub_8089788(struct Entity *param_1, u8 param_2, s32 param_3)
|
||||
void sub_8089788(struct Entity *entity, u8 param_2, u8 param_3)
|
||||
{
|
||||
struct Entity *iVar2;
|
||||
s32 iVar3;
|
||||
struct Entity *monEntity;
|
||||
s32 index;
|
||||
u32 unk1;
|
||||
|
||||
unk1 = 0;
|
||||
|
||||
if ((((param_3 * 0x1000000) + 0xe6000000U) >> 0x18) < 2) {
|
||||
for(iVar3 = 0; iVar3 < DUNGEON_MAX_WILD_POKEMON; iVar3++)
|
||||
if (param_3 == 0x1A || param_3 == 0x1B) {
|
||||
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++)
|
||||
{
|
||||
iVar2 = gDungeon->wildPokemon[iVar3];
|
||||
if ((EntityExists(iVar2) != '\0') && (iVar2 != param_1) && (iVar2->info->clientType == param_2)) {
|
||||
monEntity = gDungeon->wildPokemon[index];
|
||||
if ((EntityExists(monEntity)) && (monEntity != entity) && (monEntity->info->clientType == param_2)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2235,9 +2228,9 @@ void sub_8089978(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038,MONSTER_MEWTWO);
|
||||
}
|
||||
|
||||
void sub_8089A00(char param_1, s32 param_2)
|
||||
void sub_8089A00(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xE3000000U) >> 0x18 < 3) && (param_1 == 0x11)) {
|
||||
if ((param_2 == 0x1d || param_2 == 0x1e || param_2 == 0x1f) && (param_1 == 0x11)) {
|
||||
sub_8097FA8(0x13);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
@@ -2381,16 +2374,14 @@ void sub_8089C90(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_ENTEI);
|
||||
}
|
||||
|
||||
|
||||
void sub_8089CFC(char param_1,int param_2)
|
||||
void sub_8089CFC(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xE0000000U) >> 0x18 < 3) && (param_1 == 0x12)) {
|
||||
if ((param_2 == 0x20 || param_2 == 0x21 || param_2 == 0x22) && (param_1 == 0x12)) {
|
||||
sub_8097FA8(0x15);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void EnteiPreFightDialogue(void)
|
||||
{
|
||||
struct Entity * LeaderEntity;
|
||||
@@ -2528,15 +2519,14 @@ void sub_8089F8C(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_RAIKOU);
|
||||
}
|
||||
|
||||
void sub_8089FF0(char param_1,int param_2)
|
||||
void sub_8089FF0(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xdD000000U) >> 0x18 < 3) && (param_1 == 0x13)) {
|
||||
if ((param_2 == 0x23 || param_2 == 0x24 || param_2 == 0x25) && (param_1 == 0x13)) {
|
||||
sub_8097FA8(0x17);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RaikouPreFightDialogue(void)
|
||||
{
|
||||
struct Entity * LeaderEntity;
|
||||
@@ -2684,9 +2674,9 @@ void sub_808A308(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_SUICUNE);
|
||||
}
|
||||
|
||||
void sub_808A36C(char param_1,int param_2)
|
||||
void sub_808A36C(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xda000000U) >> 0x18 < 3) && (param_1 == 0x14)) {
|
||||
if ((param_2 == 0x26 || param_2 == 0x27 || param_2 == 0x28) && (param_1 == 0x14)) {
|
||||
sub_8097FA8(0x19);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
@@ -2848,15 +2838,14 @@ void sub_808A668(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_HO_OH);
|
||||
}
|
||||
|
||||
void sub_808A6E8(char param_1, s32 param_2)
|
||||
void sub_808A6E8(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xd7000000U) >> 0x18 < 2) && (param_1 == 0x15)) {
|
||||
if ((param_2 == 0x29 || param_2 == 0x2A) && (param_1 == 0x15)) {
|
||||
sub_8097FA8(0x1A);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void sub_808A718(void)
|
||||
{
|
||||
sub_8086854();
|
||||
@@ -3034,10 +3023,10 @@ void sub_808AA94(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_LATIOS);
|
||||
}
|
||||
|
||||
void sub_808AAF0(char param_1, s32 param_2)
|
||||
void sub_808AAF0(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x1000000) + 0xd5000000U) >> 0x18 < 3) && (param_1 == 0x16)) {
|
||||
sub_8097FA8(0x1c);
|
||||
if ((param_2 == 0x2B || param_2 == 0x2C || param_2 == 0x2D) && (param_1 == 0x16)) {
|
||||
sub_8097FA8(0x1C);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
}
|
||||
@@ -3047,14 +3036,15 @@ void LatiosPreFightDialogue(void)
|
||||
struct Entity * LeaderEntity;
|
||||
struct Entity * LatiosEntity;
|
||||
struct Position32 local_18;
|
||||
u32 local_19;
|
||||
struct Position local_19;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
LatiosEntity = GetEntityFromClientType(0x16);
|
||||
|
||||
local_18.x = LatiosEntity->pixelPos.x;
|
||||
local_18.y = LatiosEntity->pixelPos.y + (0x80 << 6);
|
||||
local_19 = 0x7000fc;
|
||||
local_19.y = 0x70;
|
||||
local_19.x = 0xFC;
|
||||
sub_8085EC8(0x1bd,0,0,&local_19,1);
|
||||
|
||||
sub_803E708(0x1e,70);
|
||||
@@ -3504,7 +3494,7 @@ void sub_808B2F4(void)
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
JirachiEntity = GetEntityFromClientType(0x1a);
|
||||
DungeonStartNewBGM(MUS_FRIEND_AREA_FOREST);
|
||||
sub_808BCE4();
|
||||
CreateJirachiWishWarpTile();
|
||||
sub_8049ED4();
|
||||
sub_80854D4();
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
@@ -3532,7 +3522,7 @@ void sub_808B35C(void)
|
||||
else {
|
||||
SetFacingDirection(JirachiEntity, DIRECTION_SOUTH);
|
||||
sub_8086A3C(JirachiEntity);
|
||||
sub_808BCE4();
|
||||
CreateJirachiWishWarpTile();
|
||||
sub_8049ED4();
|
||||
|
||||
}
|
||||
@@ -3540,94 +3530,30 @@ void sub_808B35C(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_JIRACHI);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_808B3E4(u8 param_1,u8 param_2,u8 param_3)
|
||||
void sub_808B3E4(u8 param_1, u8 param_2, u8 param_3)
|
||||
{
|
||||
u8 uVar1;
|
||||
|
||||
// TODO R1 and R2 shifts are switched ordering but matches
|
||||
if (((((param_2 * 0x1000000) + 0xcf000000U) >> 0x18) < 2) && (param_1 == 0x1A)){
|
||||
sub_8097FA8(0x1e);
|
||||
if (param_3 != 0) {
|
||||
gDungeon->unk2 = 1;
|
||||
if ((param_2 == 0x31 || param_2 == 0x32) && (param_1 == 0x1A)) {
|
||||
sub_8097FA8(0x1E);
|
||||
if(param_3 != 0)
|
||||
{
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
else {
|
||||
uVar1 = gDungeon->unk1356C;
|
||||
if (sub_80860A8(0x36) != 0) {
|
||||
JirachiWish();
|
||||
}
|
||||
else {
|
||||
sub_808B50C();
|
||||
}
|
||||
gDungeon->unk1356C = uVar1;
|
||||
sub_8040A84();
|
||||
uVar1 = gDungeon->unk1356C;
|
||||
if(sub_80860A8(0x36) != 0)
|
||||
{
|
||||
JirachiWish();
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_808B50C();
|
||||
}
|
||||
gDungeon->unk1356C = uVar1;
|
||||
sub_8040A84();
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_808B3E4(u8 param_1, u8 param_2, u8 param_3)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tlsls r1, 24\n"
|
||||
"\tlsls r2, 24\n"
|
||||
"\tlsrs r4, r2, 24\n"
|
||||
"\tmovs r2, 0xCF\n"
|
||||
"\tlsls r2, 24\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tlsrs r1, 24\n"
|
||||
"\tcmp r1, 0x1\n"
|
||||
"\tbhi _0808B44E\n"
|
||||
"\tcmp r0, 0x1A\n"
|
||||
"\tbne _0808B44E\n"
|
||||
"\tmovs r0, 0x1E\n"
|
||||
"\tbl sub_8097FA8\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbeq _0808B418\n"
|
||||
"\tldr r0, _0808B414\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstrb r0, [r1, 0x2]\n"
|
||||
"\tb _0808B44E\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808B414: .4byte gDungeon\n"
|
||||
"_0808B418:\n"
|
||||
"\tldr r0, _0808B434\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tldr r1, _0808B438\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldrb r4, [r0]\n"
|
||||
"\tmovs r0, 0x36\n"
|
||||
"\tbl sub_80860A8\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0808B43C\n"
|
||||
"\tbl JirachiWish\n"
|
||||
"\tb _0808B440\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808B434: .4byte gDungeon\n"
|
||||
"_0808B438: .4byte 0x0001356c\n"
|
||||
"_0808B43C:\n"
|
||||
"\tbl sub_808B50C\n"
|
||||
"_0808B440:\n"
|
||||
"\tldr r0, _0808B454\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tldr r2, _0808B458\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tstrb r4, [r0]\n"
|
||||
"\tbl sub_8040A84\n"
|
||||
"_0808B44E:\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808B454: .4byte gDungeon\n"
|
||||
"_0808B458: .4byte 0x0001356c");
|
||||
}
|
||||
#endif
|
||||
|
||||
void JirachiPreFightDialogue(void)
|
||||
{
|
||||
@@ -3694,15 +3620,12 @@ void JirachiWish(void)
|
||||
s32 counter;
|
||||
u32 direction;
|
||||
s32 index;
|
||||
struct Item money [9];
|
||||
struct Item auStack152 [9];
|
||||
struct Item itemStack [9];
|
||||
struct Item strengthItems [9];
|
||||
s32 local_2c;
|
||||
s32 local_28;
|
||||
s32 local_24;
|
||||
s32 temp;
|
||||
s32 temp2;
|
||||
s32 temp3;
|
||||
struct Position pos1;
|
||||
struct Position pos2;
|
||||
struct Position pos3;
|
||||
|
||||
JirachiEntity = GetEntityFromClientType(0x1a);
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_JIRACHI);
|
||||
@@ -3749,25 +3672,20 @@ void JirachiWish(void)
|
||||
DisplayDungeonDialogue(&gUnknown_810581C);
|
||||
sub_803E708(10,0x46);
|
||||
JirachiWishGrantDialogue(JirachiEntity);
|
||||
|
||||
|
||||
for(counter = 0; counter < 6; counter = r8)
|
||||
{
|
||||
r8 = counter + 1;
|
||||
for(index = 0; index < 9; index++)
|
||||
{
|
||||
sub_8045C28(&money[index], 0x69, 0);
|
||||
sub_8045C28(&auStack152[index], ITEM_POKE, 0);
|
||||
}
|
||||
temp = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16);
|
||||
local_2c &= 0xffff0000;
|
||||
local_2c |= temp;
|
||||
|
||||
temp = ((u16)JirachiEntity->pos.y + DungeonRandInt(3) + -1) * 0x10000;
|
||||
local_2c &= 0xffff;
|
||||
local_2c |= temp;
|
||||
if ((GetTileSafe((s16)local_2c, local_2c >> 16)->terrainType & 3) != 0) {
|
||||
pos1.x = (JirachiEntity->pos.x + DungeonRandInt(3) - 1);
|
||||
pos1.y = (JirachiEntity->pos.y + DungeonRandInt(3) + -1);
|
||||
if ((GetTileSafe(pos1.x, pos1.y)->terrainType & 3) != 0) {
|
||||
PlaySoundEffect(0x14c);
|
||||
sub_808BB3C((s16 *)&local_2c);
|
||||
sub_8046860(JirachiEntity,&local_2c,money,9);
|
||||
sub_808BB3C(&pos1);
|
||||
sub_8046860(JirachiEntity,&pos1,auStack152,9);
|
||||
}
|
||||
}
|
||||
JirachiEntity->info->unk15D = 0;
|
||||
@@ -3787,17 +3705,13 @@ void JirachiWish(void)
|
||||
{
|
||||
sub_8045C28(&itemStack[index], sub_803D73C(0),0);
|
||||
}
|
||||
temp2 = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16);
|
||||
local_28 &= 0xffff0000;
|
||||
local_28 |= temp2;
|
||||
|
||||
temp2 = ((u16)JirachiEntity->pos.y + DungeonRandInt(3) + -1) * 0x10000;
|
||||
local_28 &= 0xffff;
|
||||
local_28 |= temp2;
|
||||
if ((GetTileSafe((s16)local_28, local_28 >> 16)->terrainType & 3) != 0) {
|
||||
pos2.x = (JirachiEntity->pos.x + DungeonRandInt(3) - 1);
|
||||
pos2.y = (JirachiEntity->pos.y + DungeonRandInt(3) + -1);
|
||||
|
||||
if ((GetTileSafe(pos2.x, pos2.y)->terrainType & 3) != 0) {
|
||||
PlaySoundEffect(400);
|
||||
sub_808BB3C((s16 *)&local_28);
|
||||
sub_8046860(JirachiEntity,&local_28,itemStack,9);
|
||||
sub_808BB3C(&pos2);
|
||||
sub_8046860(JirachiEntity,&pos2,itemStack,9);
|
||||
}
|
||||
}
|
||||
JirachiEntity->info->unk15D = 0;
|
||||
@@ -3836,25 +3750,22 @@ void JirachiWish(void)
|
||||
DisplayDungeonDialogue(&gUnknown_8105BA8);
|
||||
sub_803E708(10,0x46);
|
||||
JirachiWishGrantDialogue(JirachiEntity);
|
||||
|
||||
|
||||
for(counter = 0; counter < 5; counter++)
|
||||
{
|
||||
|
||||
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
sub_8045C28(&strengthItems[index],gUnknown_81074FC[DungeonRandInt(8)],0);
|
||||
}
|
||||
temp3 = (u16)(((((u16)JirachiEntity->pos.x + DungeonRandInt(3)) - 1) << 16) >> 16);
|
||||
local_24 &= 0xffff0000;
|
||||
local_24 |= temp3;
|
||||
|
||||
temp3 = ((u16)JirachiEntity->pos.y + DungeonRandInt(3) + -1) * 0x10000;
|
||||
local_24 &= 0xffff;
|
||||
local_24 |= temp3;
|
||||
if ((GetTileSafe((s16)local_24, local_24 >> 16)->terrainType & 3) != 0) {
|
||||
pos3.x = (JirachiEntity->pos.x + DungeonRandInt(3) - 1);
|
||||
pos3.y = (JirachiEntity->pos.y + DungeonRandInt(3) + -1);
|
||||
|
||||
if ((GetTileSafe(pos3.x, pos3.y)->terrainType & 3) != 0) {
|
||||
PlaySoundEffect(400);
|
||||
sub_808BB3C((s16 *)&local_24);
|
||||
sub_8046860(JirachiEntity,&local_24,strengthItems,4);
|
||||
sub_808BB3C(&pos3);
|
||||
sub_8046860(JirachiEntity,&pos3,strengthItems,4);
|
||||
}
|
||||
}
|
||||
JirachiEntity->info->unk15D = 0;
|
||||
@@ -3885,7 +3796,7 @@ void JirachiWish(void)
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_810593C);
|
||||
sub_803E708(10,0x46);
|
||||
sub_808BD38();
|
||||
EnableJirachiWishWarpTile();
|
||||
}
|
||||
|
||||
void JirachiReFightDialogue(void)
|
||||
@@ -3931,37 +3842,27 @@ void JirachiWishGrantFlash(void)
|
||||
sub_8085EB0();
|
||||
}
|
||||
|
||||
void sub_808BB3C(s16 *param_1)
|
||||
void sub_808BB3C(struct Position *param_1)
|
||||
{
|
||||
#ifndef NONMATCHING
|
||||
register s32 iVar1 asm("r0");
|
||||
#else
|
||||
s32 iVar1;
|
||||
#endif
|
||||
s32 uVar2;
|
||||
u32 local_8;
|
||||
struct Position local_8;
|
||||
|
||||
iVar1 = param_1[0] * 0x1800 + 0xc00;
|
||||
iVar1 = param_1->x * 0x1800 + 0xc00;
|
||||
if (iVar1 < 0) {
|
||||
iVar1 += 0xff;
|
||||
}
|
||||
local_8.x = iVar1 >> 8;
|
||||
|
||||
iVar1 = param_1->y * 0x1800 + 0x1000;
|
||||
if (iVar1 < 0) {
|
||||
iVar1 += 0xff;
|
||||
}
|
||||
|
||||
iVar1 <<= 8;
|
||||
iVar1 = (u16)(iVar1 >> 16);
|
||||
|
||||
uVar2 = (local_8 & 0xffff0000) | iVar1;
|
||||
local_8 = uVar2;
|
||||
|
||||
iVar1 = param_1[1] * 0x1800 + 0x1000;
|
||||
if (iVar1 < 0) {
|
||||
iVar1 += 0xff;
|
||||
}
|
||||
|
||||
iVar1 <<= 8;
|
||||
iVar1 = (u16)(iVar1 >> 0x10);
|
||||
iVar1 <<= 0x10;
|
||||
|
||||
local_8 = (iVar1) | (uVar2 & 0x0000ffff);
|
||||
local_8.y = iVar1 >> 8;
|
||||
sub_8085EC8(100,0,0,&local_8,0);
|
||||
}
|
||||
|
||||
@@ -4027,30 +3928,31 @@ void JirachiWishGrantDialogue(struct Entity *jirachiEntity)
|
||||
JirachiWishGrantFlash();
|
||||
}
|
||||
|
||||
void sub_808BCE4(void)
|
||||
// Warp Tile is created but not enabled until the Wish is done with EnableJirachiWishWarpTile
|
||||
void CreateJirachiWishWarpTile(void)
|
||||
{
|
||||
struct Tile *puVar1;
|
||||
struct Tile *tile;
|
||||
|
||||
puVar1 = GetTileSafe(gDungeon->unkE23C, gDungeon->unkE23E);
|
||||
puVar1->terrainType &= ~(TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
puVar1->terrainType |= TERRAIN_TYPE_IMPASSABLE_WALL;
|
||||
puVar1->terrainType &= ~TERRAIN_TYPE_STAIRS;
|
||||
tile = GetTileSafe(gDungeon->unkE23C, gDungeon->unkE23E);
|
||||
tile->terrainType &= ~(TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
tile->terrainType |= TERRAIN_TYPE_IMPASSABLE_WALL;
|
||||
tile->terrainType &= ~TERRAIN_TYPE_STAIRS;
|
||||
sub_8049884();
|
||||
sub_8049B8C();
|
||||
sub_8049ED4();
|
||||
sub_8040A84();
|
||||
}
|
||||
|
||||
void sub_808BD38(void)
|
||||
void EnableJirachiWishWarpTile(void)
|
||||
{
|
||||
struct Tile *puVar1;
|
||||
struct Tile *tile;
|
||||
|
||||
puVar1 = GetTileSafe(gDungeon->unkE23C, gDungeon->unkE23E);
|
||||
puVar1->terrainType &= ~(TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
puVar1->terrainType |= TERRAIN_TYPE_NORMAL;
|
||||
puVar1->terrainType &= ~TERRAIN_TYPE_IMPASSABLE_WALL;
|
||||
puVar1->terrainType |= TERRAIN_TYPE_STAIRS;
|
||||
puVar1->unk8 = 1;
|
||||
tile = GetTileSafe(gDungeon->unkE23C, gDungeon->unkE23E);
|
||||
tile->terrainType &= ~(TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
tile->terrainType |= TERRAIN_TYPE_NORMAL;
|
||||
tile->terrainType &= ~TERRAIN_TYPE_IMPASSABLE_WALL;
|
||||
tile->terrainType |= TERRAIN_TYPE_STAIRS;
|
||||
tile->unk8 = 1;
|
||||
sub_8049884();
|
||||
sub_8049B8C();
|
||||
sub_8049ED4();
|
||||
@@ -4472,8 +4374,7 @@ void sub_808C5C0(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_CELEBI);
|
||||
}
|
||||
|
||||
// Dummy Celebi Fight Dialogue??
|
||||
void nullsub_100(u32 r0, u32 r1, u32 r2)
|
||||
void nullsub_100(u8 r0, u8 r1, u32 r2)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -4906,17 +4807,17 @@ void sub_808C938(void)
|
||||
sub_80855E4(sub_808C9B0);
|
||||
}
|
||||
|
||||
void sub_808C948(struct Entity *param_1, u8 param_2)
|
||||
void sub_808C948(struct Entity *entity, u8 param_2)
|
||||
{
|
||||
bool8 flag;
|
||||
s32 index;
|
||||
struct Entity *iVar2;
|
||||
struct Entity *pokeEntity;
|
||||
|
||||
if (param_2 == 0x37) {
|
||||
flag = FALSE;
|
||||
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++){
|
||||
iVar2 = gDungeon->wildPokemon[index];
|
||||
if ((iVar2 != param_1) && (EntityExists(iVar2) != 0)) {
|
||||
pokeEntity = gDungeon->wildPokemon[index];
|
||||
if ((pokeEntity != entity) && (EntityExists(pokeEntity))) {
|
||||
flag = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
#include "item.h"
|
||||
#include "moves.h"
|
||||
#include "move_effects_target.h"
|
||||
#include "move_util.h"
|
||||
#include "number_util.h"
|
||||
#include "status.h"
|
||||
#include "status_actions.h"
|
||||
#include "tile_types.h"
|
||||
@@ -94,14 +96,12 @@ extern s16 gUnknown_80F501A[];
|
||||
|
||||
extern u32 sub_8055864(struct Entity *pokemon, struct Entity *target, struct Move *param_3, s32 param_4, s32 param_5);
|
||||
extern void sub_80943A0(void*, s32);
|
||||
s32 RoundUpFixedPoint(s32 fixedPointNumber);
|
||||
extern s16 sub_8057600(struct Move*, u32);
|
||||
extern void sub_806CDD4(struct Entity *, u32, u32);
|
||||
extern u8 sub_8044B28(void);
|
||||
extern u8 sub_803F428(struct Position *pos);
|
||||
extern void IncreaseEntityPixelPos(struct Entity *, u32, u32);
|
||||
extern void sub_803E46C(u32);
|
||||
bool8 sub_80571F0(struct Entity * pokemon, struct Move *move);
|
||||
extern void sub_807EC28(u32);
|
||||
extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
void sub_8075900(struct Entity *pokemon, u8 r1);
|
||||
@@ -116,11 +116,9 @@ void sub_80522F4(struct Entity *r0, struct Entity *r1, char r2[]);
|
||||
extern void sub_806A6E8(struct Entity *);
|
||||
extern u32 sub_8055640(struct Entity *, struct Entity *, struct Move *, u32, u32);
|
||||
extern void sub_807EA30(u32);
|
||||
extern bool8 sub_805727C(struct Entity *, struct Entity *, s16);
|
||||
extern void sub_806ABAC(struct Entity *, struct Entity *);
|
||||
extern u8 sub_807EAA0(u32, u32);
|
||||
extern void sub_8045C28(struct Item *, u8 , u8);
|
||||
extern u8 sub_8057308(struct Entity *, u32);
|
||||
extern void sub_805A7D4(struct Entity *, struct Entity *, struct Item *, struct Position *);
|
||||
extern void sub_8045394(struct Entity *, s32, s32);
|
||||
extern void sub_804652C(struct Entity *, struct Entity *, struct Item *, u32, struct Position *);
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "move_effects_target.h"
|
||||
#include "pokemon.h"
|
||||
#include "weather.h"
|
||||
#include "game_options.h"
|
||||
@@ -36,7 +37,6 @@ void sub_80522F4(struct Entity *r0, struct Entity *r1, const char r2[]);
|
||||
extern void sub_8042900(struct Entity *r0);
|
||||
extern void sub_8042968(struct Entity *r0);
|
||||
extern void sub_806ABAC(struct Entity *, struct Entity *);
|
||||
extern void PausedStatusTarget(struct Entity *, struct Entity *,u32,u32,u32);
|
||||
void sub_8041BBC(struct Entity *r0);
|
||||
extern u8 sub_8045888(struct Entity *);
|
||||
extern void sub_806A2BC(struct Entity *, u8);
|
||||
|
||||
@@ -6,16 +6,77 @@
|
||||
#include "dungeon_util.h"
|
||||
#include "pokemon.h"
|
||||
#include "tile_types.h"
|
||||
#include "random.h"
|
||||
|
||||
extern u8 sub_806CEBC(struct Entity *);
|
||||
extern void sub_806CCB4(struct Entity *, u8);
|
||||
extern void sub_803E46C(u32);
|
||||
extern bool8 sub_808DA44(s32 a1_, u32 a2_);
|
||||
extern u32 sub_806CF98(struct Entity *);
|
||||
extern u32 sub_80687D0(s16);
|
||||
void sub_80053AC(u8 *, s32, u32, u32, u32, u32, u8);
|
||||
void sub_806CDD4(struct Entity *, u8, u32);
|
||||
|
||||
extern const u8 gUnknown_8106EEF[];
|
||||
extern const u8 gDungeonWaterType[];
|
||||
|
||||
void sub_806CC10(void)
|
||||
{
|
||||
struct EntityInfo *entityInfo;
|
||||
struct Entity *entity;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
entity = gDungeon->allPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
entityInfo = entity->info;
|
||||
|
||||
if ((entityInfo->unk166 != 0) && (entityInfo->unk166--, (entityInfo->unk166 & 1) == 0)) {
|
||||
sub_806CDD4(entity,0, (entityInfo->action.direction - 1) & 7);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806CC70(void)
|
||||
{
|
||||
s32 index;
|
||||
struct Entity *entity;
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
entity = gDungeon->allPokemon[index];
|
||||
if(EntityExists(entity))
|
||||
sub_806CCB4(entity, sub_806CEBC(entity));
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806CCB4(struct Entity *entity, u8 param_2)
|
||||
{
|
||||
s32 sVar1;
|
||||
bool8 flag;
|
||||
struct EntityInfo *info;
|
||||
|
||||
info = entity->info;
|
||||
flag = gDungeon->hallucinating;
|
||||
if (entity == gDungeon->cameraTarget) {
|
||||
flag = FALSE;
|
||||
}
|
||||
entity->unk6B = param_2;
|
||||
entity->unk6A = param_2;
|
||||
entity->direction2 = info->action.direction;
|
||||
entity->direction = info->action.direction;
|
||||
entity->unk6F = 0;
|
||||
sVar1 = entity->unk68;
|
||||
if ((info->waitingStatus != STATUS_DECOY) && (!flag)) {
|
||||
sub_80053AC(entity->fill28,entity->unk64,entity->unk6A,entity->direction,sVar1,Rand32Bit() & 3,0);
|
||||
}
|
||||
else {
|
||||
sub_80053AC(entity->fill28,sub_80687D0(0x1a5),entity->unk6A,entity->direction,sVar1,Rand32Bit() & 3,0);
|
||||
}
|
||||
entity->unk6E = 0;
|
||||
}
|
||||
|
||||
void sub_806CD90(void)
|
||||
{
|
||||
s32 index;
|
||||
@@ -28,22 +89,22 @@ void sub_806CD90(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806CDD4(struct Entity *r0, u8 r1, u32 r2)
|
||||
void sub_806CDD4(struct Entity *entity, u8 r1, u32 r2)
|
||||
{
|
||||
if(GetEntityType(r0) == ENTITY_MONSTER)
|
||||
if(GetEntityType(entity) == ENTITY_MONSTER)
|
||||
{
|
||||
r0->unk6A = r1;
|
||||
if(r2 < NUM_DIRECTIONS) r0->direction = r2;
|
||||
entity->unk6A = r1;
|
||||
if(r2 < NUM_DIRECTIONS) entity->direction = r2;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806CDFC(struct Entity *r0, u8 r1, u32 r2)
|
||||
void sub_806CDFC(struct Entity *entity, u8 r1, u32 r2)
|
||||
{
|
||||
if(GetEntityType(r0) == ENTITY_MONSTER)
|
||||
if(GetEntityType(entity) == ENTITY_MONSTER)
|
||||
{
|
||||
if(r0->unk6B == r1)
|
||||
if(entity->unk6B == r1)
|
||||
{
|
||||
if(r0->direction2 == r2)
|
||||
if(entity->direction2 == r2)
|
||||
return;
|
||||
else
|
||||
goto change_dir;
|
||||
@@ -51,57 +112,57 @@ void sub_806CDFC(struct Entity *r0, u8 r1, u32 r2)
|
||||
else
|
||||
{
|
||||
change_dir:
|
||||
sub_806CDD4(r0, r1, r2);
|
||||
sub_806CDD4(entity, r1, r2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806CE34(struct Entity *r0, u32 newDir)
|
||||
void sub_806CE34(struct Entity *entity, u32 newDir)
|
||||
{
|
||||
if(GetEntityType(r0) == ENTITY_MONSTER)
|
||||
if(GetEntityType(entity) == ENTITY_MONSTER)
|
||||
{
|
||||
r0->unk6A = sub_806CEBC(r0);
|
||||
entity->unk6A = sub_806CEBC(entity);
|
||||
if(newDir < NUM_DIRECTIONS)
|
||||
{
|
||||
r0->info->action.direction = newDir & DIRECTION_MASK;
|
||||
r0->direction = newDir & DIRECTION_MASK;
|
||||
entity->info->action.direction = newDir & DIRECTION_MASK;
|
||||
entity->direction = newDir & DIRECTION_MASK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806CE68(struct Entity *r0, u32 newDir)
|
||||
void sub_806CE68(struct Entity *entity, u32 newDir)
|
||||
{
|
||||
if(GetEntityType(r0) == ENTITY_MONSTER)
|
||||
if(GetEntityType(entity) == ENTITY_MONSTER)
|
||||
{
|
||||
r0->unk6A = sub_806CEBC(r0);
|
||||
entity->unk6A = sub_806CEBC(entity);
|
||||
if(newDir < NUM_DIRECTIONS)
|
||||
{
|
||||
r0->direction = newDir;
|
||||
entity->direction = newDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806CE94(struct Entity *r0, u32 newDir)
|
||||
void sub_806CE94(struct Entity *entity, u32 newDir)
|
||||
{
|
||||
if(GetEntityType(r0) == ENTITY_MONSTER)
|
||||
if(GetEntityType(entity) == ENTITY_MONSTER)
|
||||
{
|
||||
r0->unk6A = 6;
|
||||
entity->unk6A = 6;
|
||||
if(newDir < NUM_DIRECTIONS)
|
||||
{
|
||||
r0->direction = newDir;
|
||||
entity->direction = newDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_806CEBC(struct Entity *param_1)
|
||||
u8 sub_806CEBC(struct Entity *entity)
|
||||
{
|
||||
u8 sleep;
|
||||
struct EntityInfo * entityInfo1;
|
||||
struct EntityInfo * entityInfo2;
|
||||
|
||||
// NOTE: copy needed to match
|
||||
entityInfo1 = param_1->info;
|
||||
entityInfo2 = param_1->info;
|
||||
entityInfo1 = entity->info;
|
||||
entityInfo2 = entity->info;
|
||||
sleep = entityInfo1->sleep;
|
||||
|
||||
if ((sleep == STATUS_SLEEP) || (sleep == STATUS_NAPPING) || (sleep == STATUS_NIGHTMARE)) {
|
||||
@@ -117,57 +178,57 @@ u8 sub_806CEBC(struct Entity *param_1)
|
||||
return 0x7;
|
||||
}
|
||||
|
||||
void sub_806CEFC(struct Entity *param_1, u32 newDir)
|
||||
void sub_806CEFC(struct Entity *entity, u32 newDir)
|
||||
{
|
||||
param_1->info->action.direction = newDir & DIRECTION_MASK;
|
||||
sub_806CE68(param_1, (newDir & DIRECTION_MASK));
|
||||
entity->info->action.direction = newDir & DIRECTION_MASK;
|
||||
sub_806CE68(entity, (newDir & DIRECTION_MASK));
|
||||
}
|
||||
|
||||
void sub_806CF18(struct Entity *param_1)
|
||||
void sub_806CF18(struct Entity *entity)
|
||||
{
|
||||
s32 index;
|
||||
struct EntityInfo *entityInfo;
|
||||
|
||||
if (EntityExists(param_1)) {
|
||||
entityInfo = param_1->info;
|
||||
if (EntityExists(entity)) {
|
||||
entityInfo = entity->info;
|
||||
for (index = 0; index < 100; index++) {
|
||||
sub_803E46C(0x21);
|
||||
if (!sub_808DA44(entityInfo->apparentID, param_1->unk6B)) {
|
||||
if (!sub_808DA44(entityInfo->apparentID, entity->unk6B)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_806CF54(struct Entity *param_1)
|
||||
u8 sub_806CF54(struct Entity *entity)
|
||||
{
|
||||
return param_1->info->unk204;
|
||||
return entity->info->unk204;
|
||||
}
|
||||
|
||||
void sub_806CF60(void)
|
||||
{
|
||||
struct Entity *uVar2;
|
||||
struct Entity *entity;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
uVar2 = gDungeon->allPokemon[index];
|
||||
if (EntityExists(uVar2)) {
|
||||
sub_806CF98(uVar2);
|
||||
entity = gDungeon->allPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
sub_806CF98(entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_806CF98(struct Entity *param_1)
|
||||
u32 sub_806CF98(struct Entity *entity)
|
||||
{
|
||||
struct Tile *mapTile;
|
||||
u32 uVar3;
|
||||
u16 terrainType;
|
||||
struct EntityInfo *entityInfo;
|
||||
|
||||
mapTile = GetTileAtEntitySafe(param_1);
|
||||
mapTile = GetTileAtEntitySafe(entity);
|
||||
terrainType = mapTile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
entityInfo = param_1->info;
|
||||
entityInfo = entity->info;
|
||||
uVar3 = GetShadowSize(entityInfo->apparentID);
|
||||
if (terrainType == (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) {
|
||||
return 6;
|
||||
|
||||
@@ -357,7 +357,6 @@ void sub_80848F0(void)
|
||||
|
||||
void DisplayPreFightDialogue(void)
|
||||
{
|
||||
|
||||
switch(gDungeon->unk3A0D) {
|
||||
case 0:
|
||||
break;
|
||||
@@ -545,10 +544,9 @@ void DisplayPreFightDialogue(void)
|
||||
sub_8097FF8();
|
||||
}
|
||||
|
||||
void sub_8084E00(struct Entity *param_1,char param_2,char param_3)
|
||||
void sub_8084E00(struct Entity *entity, u8 param_2, u8 param_3)
|
||||
{
|
||||
|
||||
if (param_2 != '\0') {
|
||||
if (param_2 != 0) {
|
||||
switch(gDungeon->unk3A0D) {
|
||||
case 0:
|
||||
break;
|
||||
@@ -587,7 +585,7 @@ void sub_8084E00(struct Entity *param_1,char param_2,char param_3)
|
||||
break;
|
||||
case 0x1a:
|
||||
case 0x1b:
|
||||
sub_8089788(param_1,param_2,gDungeon->unk3A0D);
|
||||
sub_8089788(entity,param_2,gDungeon->unk3A0D);
|
||||
break;
|
||||
case 0x1d:
|
||||
case 0x1e:
|
||||
@@ -619,13 +617,13 @@ void sub_8084E00(struct Entity *param_1,char param_2,char param_3)
|
||||
sub_808AAF0(param_2,gDungeon->unk3A0D);
|
||||
break;
|
||||
case 0x2e:
|
||||
sub_808AE54(param_2,gDungeon->unk3A0D,¶m_1->pos.x);
|
||||
sub_808AE54(param_2,gDungeon->unk3A0D,&entity->pos.x);
|
||||
break;
|
||||
case 0x2f:
|
||||
sub_808AEC8(param_2,gDungeon->unk3A0D,¶m_1->pos.x);
|
||||
sub_808AEC8(param_2,gDungeon->unk3A0D,&entity->pos.x);
|
||||
break;
|
||||
case 0x30:
|
||||
sub_808AF3C(param_2,gDungeon->unk3A0D,¶m_1->pos.x);
|
||||
sub_808AF3C(param_2,gDungeon->unk3A0D,&entity->pos.x);
|
||||
break;
|
||||
case 0x31:
|
||||
case 0x32:
|
||||
@@ -644,7 +642,7 @@ void sub_8084E00(struct Entity *param_1,char param_2,char param_3)
|
||||
nullsub_100(param_2,gDungeon->unk3A0D,param_3);
|
||||
break;
|
||||
case 0x37:
|
||||
sub_808C948(param_1,gDungeon->unk3A0D);
|
||||
sub_808C948(entity,gDungeon->unk3A0D);
|
||||
break;
|
||||
case 0x38:
|
||||
case 0x39:
|
||||
@@ -653,7 +651,7 @@ void sub_8084E00(struct Entity *param_1,char param_2,char param_3)
|
||||
case 0x3C:
|
||||
break;
|
||||
}
|
||||
if ((param_3 == '\0') && (gDungeon->unk2 != '\0')) {
|
||||
if ((param_3 == 0) && (gDungeon->unk2 != 0)) {
|
||||
DungeonStartNewBGM(999);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#include "global.h"
|
||||
#include "constants/direction.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "random.h"
|
||||
#include "constants/direction.h"
|
||||
|
||||
struct unkStruct_202F3D0
|
||||
{
|
||||
@@ -19,12 +20,10 @@ EWRAM_DATA struct unkStruct_202F3D0 gUnknown_202F3D0;
|
||||
s8 sub_8002984(s8, u8);
|
||||
void sub_803E708(u32, u32);
|
||||
void sub_80869E4(struct Entity *entity, u32, u8, s8);
|
||||
extern void sub_80859F0(u32);
|
||||
extern void sub_803E46C(u32);
|
||||
extern void sub_803E9D0(void);
|
||||
extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32);
|
||||
extern void PlaySoundEffect(u32);
|
||||
extern struct Entity *xxx_call_GetLeader(void);
|
||||
void SpriteLookAroundEffect(struct Entity *entity);
|
||||
extern void DisplayDungeonDialogue(u32);
|
||||
void sub_8086494();
|
||||
@@ -40,7 +39,6 @@ extern s32 GetCameraXPos(void);
|
||||
extern s32 GetCameraYPos(void);
|
||||
extern void sub_803F878(u32, u32);
|
||||
extern void sub_8086384(struct Entity *entity);
|
||||
extern void sub_8085930(u32);
|
||||
extern void IncreaseEntityPixelPos(struct Entity *, u32, u32);
|
||||
extern void sub_806CE68(struct Entity *, u32);
|
||||
extern void sub_806CDD4(struct Entity *, u8, u32);
|
||||
@@ -60,7 +58,7 @@ void sub_80862DC(struct Entity *entity)
|
||||
{
|
||||
struct Position32 pos;
|
||||
pos.x = entity->pixelPos.x;
|
||||
pos.y = entity->pixelPos.y + (0xE0 << 6);
|
||||
pos.y = entity->pixelPos.y + 0x3800;
|
||||
|
||||
sub_804535C(entity, &pos);
|
||||
sub_806CDD4(entity, 0, DIRECTION_NORTH);
|
||||
@@ -71,7 +69,7 @@ void sub_8086310(struct Entity *entity)
|
||||
{
|
||||
struct Position32 pos;
|
||||
pos.x = entity->pixelPos.x;
|
||||
pos.y = entity->pixelPos.y + (0x90 << 8);
|
||||
pos.y = entity->pixelPos.y + 0x9000;
|
||||
|
||||
sub_804535C(entity, &pos);
|
||||
sub_806CE68(entity, DIRECTION_SOUTH);
|
||||
@@ -82,8 +80,8 @@ void sub_8086310(struct Entity *entity)
|
||||
void sub_8086348(struct Entity *entity)
|
||||
{
|
||||
struct Position32 pos;
|
||||
pos.x = entity->pixelPos.x + (0xF0 << 7);
|
||||
pos.y = entity->pixelPos.y + 0xffffe000;
|
||||
pos.x = entity->pixelPos.x + 0x7800;
|
||||
pos.y = entity->pixelPos.y - 0x2000;
|
||||
|
||||
sub_804535C(entity, &pos);
|
||||
sub_806CDD4(entity, 0, DIRECTION_WEST);
|
||||
@@ -93,7 +91,7 @@ void sub_8086348(struct Entity *entity)
|
||||
void sub_8086384(struct Entity *entity)
|
||||
{
|
||||
struct Position32 pos;
|
||||
pos.x = entity->pixelPos.x + (0xF0 << 7);
|
||||
pos.x = entity->pixelPos.x + 0x7800;
|
||||
pos.y = entity->pixelPos.y;
|
||||
|
||||
sub_804535C(entity, &pos);
|
||||
@@ -133,17 +131,17 @@ void sub_8086404(struct Entity *entity)
|
||||
|
||||
void sub_8086410(struct Entity *entity)
|
||||
{
|
||||
IncreaseEntityPixelPos(entity, 0, 0xffffff00);
|
||||
IncreaseEntityPixelPos(entity, 0, -0x100);
|
||||
}
|
||||
|
||||
void sub_8086424(struct Entity *entity)
|
||||
{
|
||||
IncreaseEntityPixelPos(entity, 0, 0x80 << 1);
|
||||
IncreaseEntityPixelPos(entity, 0, 0x100);
|
||||
}
|
||||
|
||||
void sub_8086434(struct Entity *entity)
|
||||
{
|
||||
IncreaseEntityPixelPos(entity, 0xffffff00, 0);
|
||||
IncreaseEntityPixelPos(entity, -0x100, 0);
|
||||
}
|
||||
|
||||
void sub_8086448(void)
|
||||
@@ -306,12 +304,12 @@ void sub_8086690(void)
|
||||
}
|
||||
|
||||
|
||||
void sub_80866C4(u32 entity)
|
||||
void sub_80866C4(u32 dialogue)
|
||||
{
|
||||
|
||||
SpriteLookAroundEffect(xxx_call_GetLeader());
|
||||
sub_803E708(0xA, 0x46);
|
||||
DisplayDungeonDialogue(entity);
|
||||
DisplayDungeonDialogue(dialogue);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_8086494();
|
||||
gDungeon->unk2 = 1;
|
||||
|
||||
@@ -1,22 +1,21 @@
|
||||
#include "constants/monster.h"
|
||||
#include "global.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/direction.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_music.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "pokemon.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "dungeon_util.h"
|
||||
|
||||
extern void LoadIQSkills(struct Entity *);
|
||||
extern struct Entity *GetPartnerEntity();
|
||||
extern struct Entity *xxx_call_GetLeader(void);
|
||||
extern void SetDefaultIQSkills(u8 *param_1, u8 param_2);
|
||||
extern void sub_8097FF8(void);
|
||||
extern u8 sub_8044B28(void);
|
||||
extern u8 HasRecruitedMon(u32);
|
||||
extern u8 gUnknown_202E038[];
|
||||
extern void sub_8085374();
|
||||
extern void sub_80854D4();
|
||||
extern void sub_80855E4(void *);
|
||||
extern void sub_8068FE0(struct Entity *, u32, u32);
|
||||
extern void sub_8097FA8(u32);
|
||||
@@ -30,7 +29,18 @@ extern void SkarmoryEntry(struct Entity *);
|
||||
extern void SpriteLookAroundEffect(struct Entity *);
|
||||
extern void sub_8086A54(struct Entity *);
|
||||
extern void sub_808563C(void *);
|
||||
extern void sub_8087144();
|
||||
void sub_80866C4(u8 *);
|
||||
extern void sub_8072008(struct Entity *pokemon, struct Entity *r1, u32 r2, u8 r3, u32);
|
||||
extern bool8 sub_8085B80(u8 *);
|
||||
extern void sub_8085B4C(u8 *, void *, struct Entity **, u32);
|
||||
extern void sub_803E46C(u32);
|
||||
|
||||
extern u8 gUnknown_810739C[];
|
||||
extern u8 gUnknown_81073D4[];
|
||||
extern u8 gUnknown_810740C[];
|
||||
extern s16 gUnknown_80F57CC;
|
||||
extern u8 gUnknown_8101440[];
|
||||
extern u8 gSkarmoryPreFightDialogue_1;
|
||||
extern u8 gSkarmoryPreFightDialogue_2;
|
||||
extern u8 gSkarmoryPreFightDialogue_3;
|
||||
@@ -43,6 +53,19 @@ extern u8 gSkarmoryPreFightDialogue_9;
|
||||
extern u8 gSkarmoryReFightDialogue_1;
|
||||
extern u8 gSkarmoryReFightDialogue_2;
|
||||
extern u8 gSkarmoryReFightDialogue_3;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_1;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_2;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_3;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_4;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_5;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_6;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_7;
|
||||
extern u8 gTeamMeaniesReFightDialogue_1;
|
||||
extern u8 gTeamMeaniesReFightDialogue_2;
|
||||
extern u8 gTeamMeaniesReFightDialogue_3;
|
||||
extern u8 gTeamMeaniesReFightDialogue_4;
|
||||
extern u8 gTeamMeaniesReFightDialogue_5;
|
||||
|
||||
extern u8 gUnknown_8100D3C;
|
||||
|
||||
void sub_8086A3C(struct Entity *pokemon)
|
||||
@@ -117,7 +140,7 @@ void sub_8086B14(void)
|
||||
sub_80855E4(sub_8086A3C);
|
||||
sub_8086A3C(SkarmoryEntity);
|
||||
DiglettEntity->info->unk15C = 1;
|
||||
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y + -2);
|
||||
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y - 2);
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038,MONSTER_DIGLETT);
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_SKARMORY);
|
||||
}
|
||||
@@ -279,3 +302,186 @@ void sub_8086F00(void)
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_GENGAR);
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038 + 0xA0, MONSTER_CATERPIE);
|
||||
}
|
||||
|
||||
// From @jiangzhengwenjz:
|
||||
// Matches this way for -O2 but can match w/o this hack on -O1
|
||||
// https://decomp.me/scratch/BTqWo
|
||||
void sub_8086F54(u8 param_1, u8 param_2)
|
||||
{
|
||||
struct Entity *entity;
|
||||
s32 index;
|
||||
u32 unk1 = 0;
|
||||
|
||||
|
||||
if (param_2 == 4 || param_2 == 5) {
|
||||
void *labels[2];
|
||||
labels[0] = labels[1] = &&label;
|
||||
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
entity = gDungeon->wildPokemon[index];
|
||||
if ((EntityExists(entity)) && (entity->info->clientType != param_1)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(!unk1)
|
||||
{
|
||||
sub_8097FA8(3);
|
||||
label:
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TeamMeaniesPreFightDialogue(void)
|
||||
{
|
||||
struct Entity *LeaderEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
sub_8086448();
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_1);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_2);
|
||||
sub_803E708(10, 0x46);
|
||||
sub_8087144();
|
||||
DungeonStartNewBGM(MUS_THERES_TROUBLE);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_3);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_4);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_5);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_6);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_7);
|
||||
sub_803E708(10, 0x46);
|
||||
ShiftCameraToPosition(&LeaderEntity->pixelPos, 0x10);
|
||||
}
|
||||
|
||||
void TeamMeaniesReFightDialogue(void)
|
||||
{
|
||||
struct Entity *LeaderEntity;
|
||||
struct Entity *PartnerEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
PartnerEntity = GetPartnerEntity();
|
||||
sub_8086448();
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_1);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_2);
|
||||
sub_803E708(10, 0x46);
|
||||
sub_8087144();
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_2);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_3);
|
||||
sub_803E708(10, 0x46);
|
||||
sub_806CDD4(LeaderEntity, 6, 4);
|
||||
sub_806CDD4(PartnerEntity, 6, 4);
|
||||
sub_803E708(10, 0x46);
|
||||
sub_806CDD4(LeaderEntity, 7, 4);
|
||||
sub_806CDD4(PartnerEntity, 7, 4);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_4);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_5);
|
||||
sub_803E708(10, 0x46);
|
||||
ShiftCameraToPosition(&LeaderEntity->pixelPos, 0x10);
|
||||
}
|
||||
|
||||
void sub_8087130(void)
|
||||
{
|
||||
sub_8086448();
|
||||
sub_80866C4(gUnknown_8101440);
|
||||
}
|
||||
|
||||
void sub_8087144(void)
|
||||
{
|
||||
struct Entity *iVar2;
|
||||
struct Entity *iVar3;
|
||||
struct Entity *iVar4;
|
||||
u8 auStack_10c [56];
|
||||
u8 puStack_60[56];
|
||||
u8 puStack_5c[56];
|
||||
u8 *puStack_64[3];
|
||||
struct Entity *pEStack_58[3];
|
||||
u8 auStack_4c [48];
|
||||
|
||||
iVar2 = GetEntityFromClientType(5);
|
||||
iVar3 = GetEntityFromClientType(6);
|
||||
iVar4 = GetEntityFromClientType(7);
|
||||
memcpy(auStack_10c,gUnknown_810739C, 0x38);
|
||||
memcpy(puStack_60, gUnknown_81073D4, 0x38);
|
||||
memcpy(puStack_5c, gUnknown_810740C, 0x38);
|
||||
puStack_64[0] = auStack_10c;
|
||||
puStack_64[1] = puStack_60;
|
||||
puStack_64[2] = puStack_5c;
|
||||
pEStack_58[0] = iVar2;
|
||||
pEStack_58[1] = iVar3;
|
||||
pEStack_58[2] = iVar4;
|
||||
DungeonStartNewBGM(MUS_THERES_TROUBLE);
|
||||
sub_8086A54(iVar2);
|
||||
sub_8086A54(iVar3);
|
||||
sub_8086A54(iVar4);
|
||||
sub_8085B4C(auStack_4c,puStack_64,pEStack_58,3);
|
||||
iVar2->info->unk15F = 1;
|
||||
iVar3->info->unk15F = 1;
|
||||
iVar4->info->unk15F = 1;
|
||||
while( TRUE ) {
|
||||
if (!sub_8085B80(auStack_4c)) break;
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
iVar2->info->unk15F = 0;
|
||||
iVar3->info->unk15F = 0;
|
||||
iVar4->info->unk15F = 0;
|
||||
}
|
||||
|
||||
void sub_8087230(void)
|
||||
{
|
||||
struct Entity *LeaderEntity;
|
||||
struct Entity *ZapdosEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
ZapdosEntity = GetEntityFromClientType(0x8);
|
||||
DungeonStartNewBGM(MUS_IN_THE_DEPTHS_OF_THE_PIT);
|
||||
sub_8085374();
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
SetFacingDirection(ZapdosEntity, 0);
|
||||
sub_8086A3C(ZapdosEntity);
|
||||
sub_8085860(LeaderEntity->pos.x, LeaderEntity->pos.y - 3);
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_SHIFTRY);
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_ZAPDOS);
|
||||
}
|
||||
|
||||
void sub_808729C(void)
|
||||
{
|
||||
struct Entity *LeaderEntity;
|
||||
struct Entity *ZapdosEntity;
|
||||
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
ZapdosEntity = GetEntityFromClientType(8);
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
if (sub_8086AE4(0x91) != 0) {
|
||||
sub_8068FE0(ZapdosEntity,0x21c,0);
|
||||
}
|
||||
else {
|
||||
sub_8072008(ZapdosEntity,ZapdosEntity,gUnknown_80F57CC,0,0);
|
||||
SetFacingDirection(ZapdosEntity,0);
|
||||
sub_8086A3C(ZapdosEntity);
|
||||
}
|
||||
sub_8085860(LeaderEntity->pos.x,LeaderEntity->pos.y - 3);
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038, MONSTER_SHIFTRY);
|
||||
CopyMonsterNametoBuffer(gUnknown_202E038 + 0x50, MONSTER_ZAPDOS);
|
||||
}
|
||||
|
||||
void sub_8087334(u8 param_1, u8 param_2)
|
||||
{
|
||||
if ((param_2 == 7 || param_2 == 8 || param_2 == 9) && (param_1 == 8)) {
|
||||
sub_8097FA8(5);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,15 +8,15 @@
|
||||
#include "save.h"
|
||||
#include "text_util.h"
|
||||
|
||||
extern struct unkStruct_203B480 gUnknown_2038C88;
|
||||
extern struct unkStruct_203B480 *gUnknown_203B480;
|
||||
extern struct unkStruct_203B484 gUnknown_2039288;
|
||||
extern struct unkStruct_203B484 *gUnknown_203B484;
|
||||
extern struct unkStruct_203B48C gUnknown_20393C0;
|
||||
extern struct unkStruct_203B48C *gUnknown_203B48C;
|
||||
extern u32 *gUnknown_203B488;
|
||||
extern u32 gUnknown_20392E8;
|
||||
EWRAM_DATA_2 struct unkStruct_203B480 *gUnknown_203B480 = {0};
|
||||
EWRAM_DATA_2 struct unkStruct_203B484 *gUnknown_203B484 = {0};
|
||||
EWRAM_DATA_2 u32 *gUnknown_203B488 = {0};
|
||||
EWRAM_DATA_2 struct unkStruct_203B48C *gUnknown_203B48C = {0};
|
||||
|
||||
extern struct unkStruct_203B480 gUnknown_2038C88;
|
||||
extern struct unkStruct_203B484 gUnknown_2039288;
|
||||
extern u32 gUnknown_20392E8;
|
||||
extern struct unkStruct_203B48C gUnknown_20393C0;
|
||||
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
|
||||
@@ -13,10 +13,7 @@
|
||||
extern s32 GetDungeonFloorCount(u8);
|
||||
extern bool8 sub_809017C(struct DungeonLocation *);
|
||||
extern s16 GetBaseSpecies(s16);
|
||||
extern bool8 IsInvalidItemReward(u8);
|
||||
extern u8 sub_803C1D0(struct DungeonLocation *, u8);
|
||||
extern bool8 IsNotMoneyOrUsedTMItem(u8);
|
||||
extern u8 xxx_bit_lut_lookup_8091E50(u8 ,u8 );
|
||||
extern u32 GetMaxItemsAllowed(u8);
|
||||
extern bool8 sub_803C0DC(s16);
|
||||
extern void ResetMailboxSlot(u8);
|
||||
@@ -24,7 +21,7 @@ extern void ResetPelipperBoardSlot(u8);
|
||||
extern void ResetJobSlot(u8);
|
||||
extern bool8 ValidateWonderMail(struct WonderMail *);
|
||||
|
||||
extern struct unkStruct_203B490 *gUnknown_203B490;
|
||||
EWRAM_DATA_2 struct unkStruct_203B490 *gUnknown_203B490 = {0};
|
||||
extern struct unkStruct_203B490 gUnknown_2039448;
|
||||
|
||||
void LoadMailInfo(void)
|
||||
|
||||
@@ -1,17 +1,44 @@
|
||||
#include "global.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "pokemon.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "code_80958E8.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
struct MissionText
|
||||
{
|
||||
u8 *text;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
};
|
||||
extern struct MissionText gStoryMissionText[];
|
||||
extern const char gFinalScenarioText[];
|
||||
extern const char gMeetNinetalesText[];
|
||||
extern const char gAvoidCaptureText[];
|
||||
extern const u8 gUnknown_8109CC0[];
|
||||
extern const u8 gDummyScenarioText[];
|
||||
extern u8 sub_80A270C();
|
||||
|
||||
extern void sub_8097FA8(u32);
|
||||
extern void sub_8097FF8(void);
|
||||
extern u8 sub_80A2728(s16);
|
||||
extern bool8 sub_8001D08(u32, u32 ,s32);
|
||||
extern u32 sub_8001784(u32, u32, u16);
|
||||
extern void sub_800199C(u8, u8, u16, s32);
|
||||
extern bool8 sub_80023E4(u32);
|
||||
|
||||
void SaveWonderMail(struct unkStruct_8094924 *a, struct WonderMail *b);
|
||||
void RestoreWonderMail(struct unkStruct_8094924 *a, struct WonderMail *b);
|
||||
extern s32 sub_8096EB0(struct WonderMail *);
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void sub_80015C0(u32, u32);
|
||||
extern void sub_80015C0(u8, u8);
|
||||
extern u32 sub_8001784(u32, u32, u16);
|
||||
extern void GeneratePelipperJobs(void);
|
||||
extern void sub_800199C(u32, s32, u32, s32);
|
||||
s16 sub_80A26B8(s16);
|
||||
extern void sub_80018D8(u8, u8, u32);
|
||||
|
||||
bool8 sub_8096F50(struct WonderMail *mail)
|
||||
{
|
||||
@@ -221,3 +248,228 @@ bool32 sub_8097384(s16 param_1)
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
void sub_80973A8(s16 param_1,u32 param_2)
|
||||
{
|
||||
s32 sVar1;
|
||||
s32 param_1_s32 = param_1;
|
||||
u8 param_2_u32 = param_2;
|
||||
|
||||
if (param_1_s32 != 0xd) {
|
||||
if (param_2_u32 != 0) {
|
||||
sVar1 = sub_80A26B8(param_1);
|
||||
sub_800199C(0,0x2b,param_1_s32,0);
|
||||
if (sVar1 != -1) {
|
||||
sub_80018D8(0,0x12,sVar1);
|
||||
}
|
||||
}
|
||||
sub_800199C(0,0x2c,param_1_s32,param_2_u32);
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_80973F4(s32 param_1)
|
||||
{
|
||||
s32 iVar1;
|
||||
s16 param_1_u16 = param_1;
|
||||
|
||||
if (param_1_u16 == 0xd) {
|
||||
iVar1 = 0;
|
||||
}
|
||||
else {
|
||||
s32 param_1_s32 = param_1_u16;
|
||||
u16 param_1_temp = param_1_s32;
|
||||
iVar1 = sub_8001784(0,0x2d,param_1_temp);
|
||||
if (iVar1 != 0) {
|
||||
iVar1 = 1;
|
||||
}
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
void sub_8097418(s16 index,u32 param_2)
|
||||
{
|
||||
int index_s32 = index;
|
||||
u8 param_2_u8 = param_2;
|
||||
if (index_s32 != 0xd) {
|
||||
if ((param_2_u8 != 0) && (sub_800199C(0,0x2c,index_s32,0), index_s32 < 0x1f)) {
|
||||
struct MissionText *mt = &gStoryMissionText[index_s32];
|
||||
if (mt->unk4 != 0xFF) {
|
||||
sub_8097FA8(mt->unk4);
|
||||
}
|
||||
if (mt->unk5 != 0xFF) {
|
||||
sub_8097FA8(mt->unk5);
|
||||
}
|
||||
if (index_s32 == 9) {
|
||||
sub_8097FA8(0x1f);
|
||||
}
|
||||
sub_8097FF8();
|
||||
}
|
||||
sub_800199C(0,0x2d,index_s32,param_2_u8);
|
||||
}
|
||||
}
|
||||
|
||||
const u8 *sub_809747C(s16 index)
|
||||
{
|
||||
if(index == 0xD)
|
||||
{
|
||||
return gDummyScenarioText;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetDungeonName1(sub_80A270C(index));
|
||||
}
|
||||
}
|
||||
|
||||
const u8 *sub_80974A0(s16 index)
|
||||
{
|
||||
if(index == 0xD)
|
||||
{
|
||||
return gDummyScenarioText;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetDungeonName1(sub_80A270C(index));
|
||||
}
|
||||
}
|
||||
|
||||
const u8 *GetCurrentMissionText(s16 index)
|
||||
{
|
||||
if(index < 0x1F)
|
||||
{
|
||||
struct MissionText *mt = &gStoryMissionText[index];
|
||||
return mt->text;
|
||||
}
|
||||
else
|
||||
{
|
||||
return gUnknown_8109CC0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80974E8(void)
|
||||
{
|
||||
sub_80015C0(0, 0x2E);
|
||||
sub_80015C0(0, 0x2F);
|
||||
}
|
||||
|
||||
void nullsub_208(void)
|
||||
{
|
||||
}
|
||||
|
||||
bool8 sub_8097504(s16 mazeIndex)
|
||||
{
|
||||
s32 mazeIndex_s32;
|
||||
|
||||
#ifndef NONMATCHING
|
||||
register s32 mazeIndex_s32_1 asm("r1");
|
||||
#else
|
||||
s32 mazeIndex_s32_1;
|
||||
#endif
|
||||
s32 uVar3;
|
||||
|
||||
mazeIndex_s32 = mazeIndex;
|
||||
mazeIndex_s32_1 = mazeIndex_s32;
|
||||
|
||||
if(mazeIndex_s32 < 17)
|
||||
{
|
||||
switch(mazeIndex_s32) {
|
||||
case 2:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
uVar3 = 14;
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
case 5:
|
||||
case 7:
|
||||
case 9:
|
||||
case 14:
|
||||
uVar3 = 15;
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
case 8:
|
||||
return TRUE;
|
||||
case 13:
|
||||
uVar3 = 6;
|
||||
break;
|
||||
default:
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mazeIndex_s32_1 > 22) return FALSE;
|
||||
if (mazeIndex_s32_1 == 22) return FALSE;
|
||||
if (mazeIndex_s32_1 == 21) return FALSE;
|
||||
uVar3 = 6;
|
||||
}
|
||||
|
||||
if (!sub_80023E4(uVar3)) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: this should probably be bool8 but can't get a match just yet
|
||||
bool32 IsMazeCompleted(s16 mazeIndex)
|
||||
{
|
||||
bool32 mazeCompletion;
|
||||
|
||||
mazeCompletion = sub_8001784(0, 0x2e, mazeIndex);
|
||||
if (mazeCompletion) {
|
||||
mazeCompletion = TRUE;
|
||||
}
|
||||
return mazeCompletion;
|
||||
}
|
||||
|
||||
void sub_80975A8(s16 param_1,u8 param_2)
|
||||
{
|
||||
u16 param_1_u16 = param_1;
|
||||
sub_800199C(0,0x2e,param_1_u16,param_2);
|
||||
}
|
||||
|
||||
const u8 *sub_80975C4(s16 index)
|
||||
{
|
||||
return GetDungeonName1(sub_80A2728(index));
|
||||
}
|
||||
|
||||
const char *sub_80975DC(u32 r0)
|
||||
{
|
||||
// TODO: slight hack but matches
|
||||
r0 <<= 16;
|
||||
if((0xffe90000 + r0) >> 16 < 2)
|
||||
if(sub_8001D08(0x3, 0xE, -1))
|
||||
return gMeetNinetalesText;
|
||||
else
|
||||
return gAvoidCaptureText;
|
||||
else
|
||||
return gFinalScenarioText;
|
||||
}
|
||||
|
||||
bool8 HasCompletedAllMazes(void)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < NUM_BASIC_DUNGEON_MAZE; index++)
|
||||
{
|
||||
if(!(bool8)IsMazeCompleted(index))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8097640(void)
|
||||
{
|
||||
if(sub_8001784(0, 0x2E, 0x1F) == 0 && HasCompletedAllMazes())
|
||||
{
|
||||
sub_800199C(0, 0x2E, 0x1F, 1);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,193 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
|
||||
struct MissionText
|
||||
{
|
||||
u8 *text;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
};
|
||||
|
||||
extern struct MissionText gStoryMissionText[];
|
||||
extern const u8 gUnknown_8109CC0[];
|
||||
extern const u8 gDummyScenarioText[];
|
||||
extern const char gFinalScenarioText[];
|
||||
extern const char gMeetNinetalesText[];
|
||||
extern const char gAvoidCaptureText[];
|
||||
|
||||
extern u8 sub_80A270C();
|
||||
extern void sub_80015C0(u8, u8);
|
||||
extern u8 sub_80A2728(s16);
|
||||
extern bool8 sub_8001D08(u32, u32 ,s32);
|
||||
extern u32 sub_8001784(u32, u32, u16);
|
||||
extern void sub_800199C(u32, u32, u32, u32);
|
||||
extern bool8 sub_80023E4(u32);
|
||||
|
||||
const u8 *sub_809747C(s16 index)
|
||||
{
|
||||
if(index == 0xD)
|
||||
{
|
||||
return gDummyScenarioText;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetDungeonName1(sub_80A270C(index));
|
||||
}
|
||||
}
|
||||
|
||||
const u8 *sub_80974A0(s16 index)
|
||||
{
|
||||
if(index == 0xD)
|
||||
{
|
||||
return gDummyScenarioText;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetDungeonName1(sub_80A270C(index));
|
||||
}
|
||||
}
|
||||
|
||||
const u8 *GetCurrentMissionText(s16 index)
|
||||
{
|
||||
if(index < 0x1F)
|
||||
{
|
||||
struct MissionText *mt = &gStoryMissionText[index];
|
||||
return mt->text;
|
||||
}
|
||||
else
|
||||
{
|
||||
return gUnknown_8109CC0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80974E8(void)
|
||||
{
|
||||
sub_80015C0(0, 0x2E);
|
||||
sub_80015C0(0, 0x2F);
|
||||
}
|
||||
|
||||
void nullsub_208(void)
|
||||
{
|
||||
}
|
||||
|
||||
bool8 sub_8097504(s16 mazeIndex)
|
||||
{
|
||||
s32 mazeIndex_s32;
|
||||
|
||||
#ifndef NONMATCHING
|
||||
register s32 mazeIndex_s32_1 asm("r1");
|
||||
#else
|
||||
s32 mazeIndex_s32_1;
|
||||
#endif
|
||||
s32 uVar3;
|
||||
|
||||
mazeIndex_s32 = mazeIndex;
|
||||
mazeIndex_s32_1 = mazeIndex_s32;
|
||||
|
||||
if(mazeIndex_s32 < 17)
|
||||
{
|
||||
switch(mazeIndex_s32) {
|
||||
case 2:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
uVar3 = 14;
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
case 5:
|
||||
case 7:
|
||||
case 9:
|
||||
case 14:
|
||||
uVar3 = 15;
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
case 8:
|
||||
return TRUE;
|
||||
case 13:
|
||||
uVar3 = 6;
|
||||
break;
|
||||
default:
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mazeIndex_s32_1 > 22) return FALSE;
|
||||
if (mazeIndex_s32_1 == 22) return FALSE;
|
||||
if (mazeIndex_s32_1 == 21) return FALSE;
|
||||
uVar3 = 6;
|
||||
}
|
||||
|
||||
if (!sub_80023E4(uVar3)) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: this should probably be bool8 but can't get a match just yet
|
||||
bool32 IsMazeCompleted(s16 mazeIndex)
|
||||
{
|
||||
bool32 mazeCompletion;
|
||||
|
||||
mazeCompletion = sub_8001784(0, 0x2e, mazeIndex);
|
||||
if (mazeCompletion) {
|
||||
mazeCompletion = TRUE;
|
||||
}
|
||||
return mazeCompletion;
|
||||
}
|
||||
|
||||
void sub_80975A8(s16 param_1,u8 param_2)
|
||||
{
|
||||
u16 param_1_u16 = param_1;
|
||||
sub_800199C(0,0x2e,param_1_u16,param_2);
|
||||
}
|
||||
|
||||
const u8 *sub_80975C4(s16 index)
|
||||
{
|
||||
return GetDungeonName1(sub_80A2728(index));
|
||||
}
|
||||
|
||||
const char *sub_80975DC(u32 r0)
|
||||
{
|
||||
// TODO: slight hack but matches
|
||||
r0 <<= 16;
|
||||
if((0xffe90000 + r0) >> 16 < 2)
|
||||
if(sub_8001D08(0x3, 0xE, -1))
|
||||
return gMeetNinetalesText;
|
||||
else
|
||||
return gAvoidCaptureText;
|
||||
else
|
||||
return gFinalScenarioText;
|
||||
}
|
||||
|
||||
bool8 HasCompletedAllMazes(void)
|
||||
{
|
||||
s32 index;
|
||||
for(index = 0; index < 17; index++)
|
||||
{
|
||||
if(!(bool8)IsMazeCompleted(index))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8097640(void)
|
||||
{
|
||||
if(sub_8001784(0, 0x2E, 0x1F) == 0 && HasCompletedAllMazes())
|
||||
{
|
||||
sub_800199C(0, 0x2E, 0x1F, 1);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
struct unkStruct_203B494
|
||||
{
|
||||
// size: 0xC8?
|
||||
// size: 0xC4
|
||||
u32 unk0; // 32 bit bitfield, I think
|
||||
s32 numAdventures;
|
||||
s32 unk8;
|
||||
@@ -18,8 +18,8 @@ struct unkStruct_203B494
|
||||
s32 unkC0;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B494 *gUnknown_203B494;
|
||||
extern struct unkStruct_203B494 gUnknown_2039778;
|
||||
EWRAM_DATA_2 struct unkStruct_203B494 *gUnknown_203B494 = {0};
|
||||
EWRAM_DATA struct unkStruct_203B494 gUnknown_2039778 = {0};
|
||||
extern const u8 *gAdventureLogText[];
|
||||
s16 GetBaseSpeciesNoUnown(s16 index);
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "text_util.h"
|
||||
#include "menu_input.h"
|
||||
|
||||
extern struct DebugMenu *gUnknown_203B3EC;
|
||||
EWRAM_DATA_2 struct DebugMenu *gUnknown_203B3EC = {0};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80E7D40 =
|
||||
{
|
||||
|
||||
156
src/dungeon_map_access_1.c
Normal file
156
src/dungeon_map_access_1.c
Normal file
@@ -0,0 +1,156 @@
|
||||
#include "global.h"
|
||||
#include "dungeon_map_access.h"
|
||||
|
||||
#include "dungeon_global_data.h"
|
||||
#include "file_system.h"
|
||||
#include "tile_types.h"
|
||||
#include "random.h"
|
||||
#include "dungeon_engine.h"
|
||||
|
||||
extern u16 gUnknown_202B038[4][32][32];
|
||||
|
||||
extern void sub_80402AC(s32, s32);
|
||||
extern void sub_80098F8(u32);
|
||||
|
||||
void sub_804AA60(void) {
|
||||
s32 i;
|
||||
s32 j;
|
||||
for(i = 0; i < 0x20; i++)
|
||||
{
|
||||
for(j = 0; j < 0x20; j++)
|
||||
{
|
||||
gUnknown_202B038[2][i][j] = 0;
|
||||
}
|
||||
}
|
||||
sub_80098F8(2);
|
||||
gDungeon->unk1821A = 0;
|
||||
}
|
||||
|
||||
void sub_804AAAC(void)
|
||||
{
|
||||
s32 x;
|
||||
s32 y;
|
||||
struct Tile *tile;
|
||||
for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++)
|
||||
{
|
||||
for(x = 0; x < DUNGEON_MAX_SIZE_X; x++)
|
||||
{
|
||||
tile = GetTileSafe(x,y);
|
||||
tile->unk4 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804AAD4(void)
|
||||
{
|
||||
struct Tile *tile;
|
||||
struct RoomData *room1;
|
||||
struct RoomData *room2;
|
||||
s32 roomIndex;
|
||||
int x;
|
||||
int y;
|
||||
s32 maxRooms;
|
||||
s32 index;
|
||||
|
||||
for(index = 0; index < 0x20; index++)
|
||||
{
|
||||
gDungeon->roomData[index].unk0 = 0;
|
||||
gDungeon->roomData[index].unk1 = 0;
|
||||
gDungeon->roomData[index].bottomRightCornerX = 9999;
|
||||
gDungeon->roomData[index].bottomRightCornerY = 9999;
|
||||
gDungeon->roomData[index].topLeftCornerX = 0xd8f1;
|
||||
gDungeon->roomData[index].topLeftCornerY = 0xd8f1;
|
||||
}
|
||||
|
||||
maxRooms = 0;
|
||||
for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++)
|
||||
{
|
||||
for(x = 0; x < DUNGEON_MAX_SIZE_X; x++)
|
||||
{
|
||||
tile = GetTile(x,y);
|
||||
roomIndex = tile->room;
|
||||
if (roomIndex != CORRIDOR_ROOM) {
|
||||
room1 = &gDungeon->roomData[roomIndex];
|
||||
room1->unk0 = 1;
|
||||
if (room1->bottomRightCornerX > x) {
|
||||
room1->bottomRightCornerX = x;
|
||||
}
|
||||
if (room1->bottomRightCornerY > y) {
|
||||
room1->bottomRightCornerY = y;
|
||||
}
|
||||
if (room1->topLeftCornerX < x + 1) {
|
||||
room1->topLeftCornerX = x + 1;
|
||||
}
|
||||
if (room1->topLeftCornerY < y + 1) {
|
||||
room1->topLeftCornerY = y + 1;
|
||||
}
|
||||
if (maxRooms < roomIndex) {
|
||||
maxRooms = roomIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(index = 0; index < 0x20; index++)
|
||||
{
|
||||
room2 = &gDungeon->roomData[index];
|
||||
if(room2 ->unk0 != 0)
|
||||
{
|
||||
room2->unkC = (room2->bottomRightCornerX - 1) * 24;
|
||||
room2->unk10 = (room2->bottomRightCornerY - 1) * 24;
|
||||
room2->unk14 = (room2->topLeftCornerX + 1) * 24;
|
||||
room2->unk18 = (room2->topLeftCornerY + 1) * 24;
|
||||
}
|
||||
}
|
||||
|
||||
gDungeon->unk104C0 = maxRooms + 1;
|
||||
}
|
||||
|
||||
void sub_804AC20(struct Position *pos)
|
||||
{
|
||||
s32 y;
|
||||
struct Tile *tile2;
|
||||
struct Tile *tile;
|
||||
s32 yMax;
|
||||
u32 visibilityRange;
|
||||
s32 xMin;
|
||||
s32 x;
|
||||
s32 xMax;
|
||||
s32 yMin;
|
||||
s32 roomIndex;
|
||||
struct RoomData *room;
|
||||
|
||||
tile2 = GetTile(pos->x,pos->y);
|
||||
roomIndex = tile2->room;
|
||||
visibilityRange = gDungeon->visibilityRange;
|
||||
if (!gDungeon->blinded) {
|
||||
if (visibilityRange == 0) {
|
||||
visibilityRange = 2;
|
||||
}
|
||||
if (roomIndex == CORRIDOR_ROOM) {
|
||||
xMin = pos->x - visibilityRange;
|
||||
yMin = pos->y - visibilityRange;
|
||||
xMax = pos->x + visibilityRange;
|
||||
yMax = pos->y + visibilityRange;
|
||||
}
|
||||
else {
|
||||
room = &gDungeon->roomData[roomIndex];
|
||||
if (room->unk1 != 0) {
|
||||
return;
|
||||
}
|
||||
room->unk1 = 1;
|
||||
xMin = room->bottomRightCornerX - 1;
|
||||
yMin = room->bottomRightCornerY - 1;
|
||||
xMax = room->topLeftCornerX;
|
||||
yMax = room->topLeftCornerY;
|
||||
}
|
||||
for (y = yMin; y <= yMax; y++) {
|
||||
for (x = xMin; x <= xMax; x++) {
|
||||
tile = GetTileSafe(x,y);
|
||||
tile->unk4 = tile->unk4 | 3;
|
||||
sub_80402AC(x,y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,9 @@
|
||||
#include "dungeon_util_1.h"
|
||||
|
||||
#include "constants/direction.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "random.h"
|
||||
|
||||
@@ -21,10 +23,97 @@ extern void sub_8068FE0(struct Entity *, u32, u8 *);
|
||||
extern void sub_80457DC(u8 *);
|
||||
extern void sub_80861D4(struct Entity *, u32, s32 direction);
|
||||
extern void sub_80694C0(struct Entity *, s32, s32, u32);
|
||||
extern struct Entity *GetPartnerEntity();
|
||||
|
||||
typedef void (*DungeonCallback)(struct Entity *);
|
||||
|
||||
struct Entity *xxx_call_GetLeader(void)
|
||||
{
|
||||
return GetLeader();
|
||||
}
|
||||
|
||||
struct Entity *GetPartnerEntity(void)
|
||||
{
|
||||
s32 counter;
|
||||
struct Entity *entity;
|
||||
for(counter = 0; counter < MAX_TEAM_MEMBERS; counter++)
|
||||
{
|
||||
entity = gDungeon->teamPokemon[counter];
|
||||
if(EntityExists(entity) && entity->info->joinedAt == DUNGEON_JOIN_LOCATION_PARTNER)
|
||||
{
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
return GetEntityFromClientType(CLIENT_TYPE_PARTNER);
|
||||
}
|
||||
|
||||
void sub_80854D4(void)
|
||||
{
|
||||
struct Entity *stack1[MAX_TEAM_MEMBERS];
|
||||
struct Entity *stack2[MAX_TEAM_MEMBERS];
|
||||
s32 counter = 0;
|
||||
s32 index;
|
||||
struct Entity *entity;
|
||||
struct Entity *entity2;
|
||||
struct Entity *entity3;
|
||||
struct Entity *entity4;
|
||||
struct Entity *entity5;
|
||||
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity = gDungeon->teamPokemon[index];
|
||||
if(EntityExists(entity))
|
||||
{
|
||||
stack1[counter] = entity;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
for(; counter < MAX_TEAM_MEMBERS; counter++)
|
||||
{
|
||||
stack1[counter] = NULL;
|
||||
}
|
||||
counter = 0;
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity2 = stack1[index];
|
||||
if(entity2 != NULL && entity2->info->isTeamLeader)
|
||||
{
|
||||
stack1[index] = NULL;
|
||||
stack2[counter] = entity2;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity3 = stack1[index];
|
||||
if(entity3 != NULL && entity3->info->joinedAt == DUNGEON_JOIN_LOCATION_PARTNER)
|
||||
{
|
||||
stack1[index] = NULL;
|
||||
stack2[counter] = entity3;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity4 = stack1[index];
|
||||
if(entity4 != NULL)
|
||||
{
|
||||
stack1[index] = NULL;
|
||||
stack2[counter] = entity4;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
for(; counter < MAX_TEAM_MEMBERS; counter++)
|
||||
{
|
||||
stack2[counter] = NULL;
|
||||
}
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity5 = stack2[index];
|
||||
if(entity5 != NULL)
|
||||
sub_80856C8(entity5, gDungeon->unkE220[index].x, gDungeon->unkE220[index].y);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80855E4(DungeonCallback func)
|
||||
{
|
||||
bool8 flag;
|
||||
@@ -37,7 +126,7 @@ void sub_80855E4(DungeonCallback func)
|
||||
{
|
||||
entity = gDungeon->teamPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
if (entity->info->joinedAt == 0x41) {
|
||||
if (entity->info->joinedAt == DUNGEON_JOIN_LOCATION_PARTNER) {
|
||||
flag = TRUE;
|
||||
}
|
||||
func(entity);
|
||||
@@ -116,7 +205,7 @@ void sub_8085764(void)
|
||||
for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++)
|
||||
{
|
||||
entity = gDungeon->wildPokemon[index];
|
||||
if ((EntityExists(entity)) && (entity->info->clientType == 2)) {
|
||||
if ((EntityExists(entity)) && (entity->info->clientType == CLIENT_TYPE_PARTNER)) {
|
||||
sub_8068FE0(entity,0x207,auStack128);
|
||||
}
|
||||
}
|
||||
@@ -215,7 +304,7 @@ void sub_8085930(s32 direction)
|
||||
entity = gDungeon->wildPokemon[index];
|
||||
if(EntityExists(entity))
|
||||
{
|
||||
if(entity->info->clientType == 2)
|
||||
if(entity->info->clientType == CLIENT_TYPE_PARTNER)
|
||||
{
|
||||
if(direction >= NUM_DIRECTIONS)
|
||||
{
|
||||
@@ -291,7 +380,7 @@ bool8 IsMovingClient(struct Entity *pokemon)
|
||||
case 0x24:
|
||||
return TRUE;
|
||||
case CLIENT_TYPE_NONE:
|
||||
case 0x2:
|
||||
case CLIENT_TYPE_PARTNER:
|
||||
case CLIENT_TYPE_DONT_MOVE:
|
||||
case 0xA:
|
||||
case 0xB:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
@@ -268,7 +269,7 @@ void sub_8027A5C(void)
|
||||
}
|
||||
|
||||
static inline bool8 sub_8027A78_sub(void) {
|
||||
if (gUnknown_203B2BC->pokeStruct->dungeonLocation.id == 0x44 || gUnknown_203B2BC->pokeStruct->dungeonLocation.id == 0x45)
|
||||
if (gUnknown_203B2BC->pokeStruct->dungeonLocation.id == DUNGEON_HOWLING_FOREST_2 || gUnknown_203B2BC->pokeStruct->dungeonLocation.id == DUNGEON_POKEMON_SQUARE)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -459,7 +460,7 @@ bool8 sub_8027D9C(struct PokemonStruct *pokeStruct)
|
||||
if(!pokeStruct->isTeamLeader)
|
||||
{
|
||||
var1 = 0;
|
||||
if(pokeStruct->dungeonLocation.id == 0x41)
|
||||
if(pokeStruct->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER)
|
||||
var1 = 1;
|
||||
if(var1 != 0)
|
||||
{
|
||||
@@ -480,7 +481,7 @@ bool8 sub_8027DCC(struct PokemonStruct *pokeStruct)
|
||||
if(!pokeStruct->isTeamLeader)
|
||||
{
|
||||
var1 = 0;
|
||||
if(pokeStruct->dungeonLocation.id == 0x41)
|
||||
if(pokeStruct->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER)
|
||||
var1 = 1;
|
||||
if(var1 != 0)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
@@ -115,7 +116,6 @@ extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void xxx_format_and_draw(s32, s32, const u8 *, ...);
|
||||
bool8 sub_8025EC4(struct PokemonStruct *);
|
||||
extern u32 sub_8023A94(u32);
|
||||
extern s16 sub_8023B44(void);
|
||||
extern void sub_8023C60(void);
|
||||
@@ -123,22 +123,6 @@ extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern s16 sub_80A5728(void);
|
||||
extern u8 sub_8002658(s16);
|
||||
extern bool8 sub_8024108(u32);
|
||||
extern void sub_8025434(s32);
|
||||
extern void sub_80259F0(void);
|
||||
extern void sub_8025A84(void);
|
||||
extern void sub_8025BCC(void);
|
||||
extern void sub_8025BE8(void);
|
||||
extern void sub_8025C04(void);
|
||||
extern void sub_8025CB4(void);
|
||||
extern void sub_8025D90(void);
|
||||
extern void sub_8025DAC(void);
|
||||
extern void sub_8025E08(void);
|
||||
extern void sub_8025E24(void);
|
||||
extern void sub_8025E44(void);
|
||||
extern void sub_802544C(void);
|
||||
extern void sub_8025518(void);
|
||||
extern void sub_8025728(void);
|
||||
extern void sub_802591C(void);
|
||||
extern u32 sub_801B3C0(struct Item *param_1);
|
||||
extern void sub_8023868(u32, u32, u32, u32);
|
||||
extern void sub_801F1B0(u32, u32);
|
||||
@@ -164,8 +148,7 @@ extern u32 sub_801F194(void);
|
||||
extern void sub_801F214(void);
|
||||
extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32);
|
||||
extern void sub_801F808(u16 *);
|
||||
u32 sub_801602C(u32 r0, u8 *name);
|
||||
void sub_8025E68(u32 , struct BulkItem *);
|
||||
extern u32 sub_801602C(u32 r0, u8 *name);
|
||||
extern u32 sub_801A6E8(u32);
|
||||
extern u32 sub_801A8AC(void);
|
||||
extern void sub_8099690(u32);
|
||||
@@ -177,10 +160,29 @@ extern u32 sub_8016080(void);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern bool8 sub_80023E4(u32);
|
||||
|
||||
void sub_8025434(s32);
|
||||
void sub_802544C(void);
|
||||
void sub_8025518(void);
|
||||
void sub_8025728(void);
|
||||
void sub_802591C(void);
|
||||
void sub_80259F0(void);
|
||||
void sub_8025A84(void);
|
||||
void sub_8025BCC(void);
|
||||
void sub_8025BE8(void);
|
||||
void sub_8025C04(void);
|
||||
void sub_8025CB4(void);
|
||||
void sub_8025D90(void);
|
||||
void sub_8025DAC(void);
|
||||
void sub_8025E08(void);
|
||||
void sub_8025E24(void);
|
||||
void sub_8025E44(void);
|
||||
void sub_8025E68(u32 , struct BulkItem *);
|
||||
bool8 sub_8025EC4(struct PokemonStruct *);
|
||||
|
||||
|
||||
bool8 sub_80252F0(s32 param_1)
|
||||
{
|
||||
|
||||
if ((param_1 == 2) && (sub_8024108(4) != '\0')) {
|
||||
if ((param_1 == 2) && (sub_8024108(4) != 0)) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
@@ -770,17 +772,17 @@ void sub_8025E68(u32 r0, struct BulkItem *heldItem)
|
||||
sub_80073E0(r0);
|
||||
}
|
||||
|
||||
bool8 sub_8025EC4(struct PokemonStruct *param_1)
|
||||
bool8 sub_8025EC4(struct PokemonStruct *pokeStruct)
|
||||
{
|
||||
bool32 flag;
|
||||
if (param_1->isTeamLeader)
|
||||
if (pokeStruct->isTeamLeader)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = FALSE;
|
||||
if(param_1->dungeonLocation.id == 0x41)
|
||||
if(pokeStruct->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER)
|
||||
flag = TRUE;
|
||||
if(flag && !sub_80023E4(8))
|
||||
return FALSE;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "gba/defines.h"
|
||||
#include "global.h"
|
||||
#include "game_options.h"
|
||||
#include "code_8092334.h"
|
||||
|
||||
@@ -13,7 +13,7 @@ struct unkStruct_203B4B8
|
||||
u32 unk0;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B4B8 gUnknown_203B4B8;
|
||||
EWRAM_DATA_2 struct unkStruct_203B4B8 gUnknown_203B4B8 = {0};
|
||||
extern struct DebugLocation gUnknown_8118798;
|
||||
extern struct unkStruct_80A77D0 *sub_80A77D0(s16 r0, struct DebugLocation *r1);
|
||||
|
||||
|
||||
@@ -14,11 +14,7 @@ struct Hints
|
||||
struct unkStruct_203B268
|
||||
{
|
||||
// size: 0xA0
|
||||
u32 unk0;
|
||||
u8 fill4[0x1E - 0x4];
|
||||
s16 helpPageIndex;
|
||||
u16 unk20;
|
||||
u8 fill22[0x34 - 0x22];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk34;
|
||||
struct UnkTextStruct2 *unk38;
|
||||
struct UnkTextStruct2 unk3C[4];
|
||||
@@ -28,14 +24,7 @@ struct unkStruct_203B268
|
||||
struct unkStruct_203B264
|
||||
{
|
||||
// size: 0x9C
|
||||
u32 unk0;
|
||||
u8 fill4[0x18 - 0x4];
|
||||
s16 unk18;
|
||||
s16 unk1A;
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
u16 unk20;
|
||||
u8 fill22[0x34 - 0x22];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk34;
|
||||
struct UnkTextStruct2 *unk38;
|
||||
struct UnkTextStruct2 unk3C[4];
|
||||
@@ -53,9 +42,9 @@ extern struct Hints gGameHints[MAX_HINTS];
|
||||
extern u8 gUnknown_80DC0D4[MAX_HINTS];
|
||||
|
||||
extern void sub_801E714(void);
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern bool8 sub_8013938(void *);
|
||||
extern s32 GetKeyPress(void *);
|
||||
extern void sub_8013818(struct MenuInputStruct *, u32, u32, u32);
|
||||
extern bool8 sub_8013938(struct MenuInputStruct *);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_801E714(void);
|
||||
extern void sub_801E76C(void);
|
||||
@@ -63,14 +52,14 @@ extern void DisplayChosenHint(void);
|
||||
extern void xxx_call_draw_string(s32, u32, u8 *, u32, u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern s32 sub_8013800(struct MenuInputStruct *, u32);
|
||||
extern void sub_8008C54(u32);
|
||||
void DrawHintSelectionMenu(void);
|
||||
void sub_801E594(void);
|
||||
void sub_8013984(void *);
|
||||
void AddMenuCursorSprite(void *);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern void sub_8013660(void *);
|
||||
void sub_8013984(struct MenuInputStruct *);
|
||||
void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct *, u32);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
extern void sub_8012D08(struct UnkTextStruct2 *, u32);
|
||||
|
||||
u32 sub_801E3F0(u32 r0)
|
||||
@@ -84,7 +73,7 @@ u32 sub_801E3F0(u32 r0)
|
||||
sub_8012D08(gUnknown_203B264->unk38, 0xA);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B264->unk3C, 1, 1);
|
||||
sub_8013818(gUnknown_203B264, 0x5, 0xA, r0);
|
||||
sub_8013818(&gUnknown_203B264->input, 0x5, 0xA, r0);
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
return 1;
|
||||
@@ -94,10 +83,10 @@ u32 sub_801E474(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(gUnknown_203B264);
|
||||
sub_8013660(&gUnknown_203B264->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(gUnknown_203B264))
|
||||
switch(GetKeyPress(&gUnknown_203B264->input))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -109,7 +98,7 @@ u32 sub_801E474(u8 r0)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(gUnknown_203B264, 1))
|
||||
if(sub_80138B8(&gUnknown_203B264->input, 1))
|
||||
{
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
@@ -122,18 +111,18 @@ u32 sub_801E474(u8 r0)
|
||||
|
||||
s32 GetChosenHintIndex(void)
|
||||
{
|
||||
return (gUnknown_203B264->unk1E * gUnknown_203B264->unk1C) + gUnknown_203B264->unk18;
|
||||
return (gUnknown_203B264->input.unk1E * gUnknown_203B264->input.unk1C) + gUnknown_203B264->input.menuIndex;
|
||||
}
|
||||
|
||||
void CreateHintSelectionScreen(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B264->unk3C, 0, 0);
|
||||
sub_8013984(gUnknown_203B264);
|
||||
sub_8013984(&gUnknown_203B264->input);
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(gUnknown_203B264);
|
||||
AddMenuCursorSprite(&gUnknown_203B264->input);
|
||||
}
|
||||
|
||||
void sub_801E54C(void)
|
||||
@@ -202,7 +191,7 @@ void DrawHintSelectionMenu(void)
|
||||
xxx_call_draw_string(16, 0, gUnknown_80DC0D4, gUnknown_203B264->unk34, 0);
|
||||
for(hintIndex = 0; hintIndex < MAX_HINTS; hintIndex++)
|
||||
{
|
||||
y = sub_8013800(gUnknown_203B264, hintIndex);
|
||||
y = sub_8013800(&gUnknown_203B264->input, hintIndex);
|
||||
xxx_call_draw_string(10, y, gGameHints[hintIndex].heading, gUnknown_203B264->unk34, 0);
|
||||
}
|
||||
sub_80073E0(gUnknown_203B264->unk34);
|
||||
@@ -218,8 +207,8 @@ u32 CreateHintDisplayScreen(u32 index)
|
||||
gUnknown_203B268->unk38->unk14 = gUnknown_203B268->unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B268->unk3C, 1, 1);
|
||||
sub_8013818(gUnknown_203B268, 5, 1, gUnknown_203B268->unk34);
|
||||
gUnknown_203B268->helpPageIndex = index;
|
||||
sub_8013818(&gUnknown_203B268->input, 5, 1, gUnknown_203B268->unk34);
|
||||
gUnknown_203B268->input.unk1E = index;
|
||||
sub_801E714();
|
||||
|
||||
return 1;
|
||||
@@ -227,7 +216,7 @@ u32 CreateHintDisplayScreen(u32 index)
|
||||
|
||||
u32 HandleHintDisplayScreenInput(void)
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B268))
|
||||
switch(GetKeyPress(&gUnknown_203B268->input))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -236,7 +225,7 @@ u32 HandleHintDisplayScreenInput(void)
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if(sub_8013938(gUnknown_203B268)){
|
||||
if(sub_8013938(&gUnknown_203B268->input)){
|
||||
sub_801E714();
|
||||
return 1;
|
||||
}
|
||||
@@ -265,8 +254,8 @@ void DestroyHintDisplayScreen(void)
|
||||
|
||||
void sub_801E76C(void)
|
||||
{
|
||||
gUnknown_203B268->unk9C[0] = gUnknown_203B268->unk20;
|
||||
gUnknown_203B268->unk9C[1] = gUnknown_203B268->helpPageIndex;
|
||||
gUnknown_203B268->unk9C[0] = gUnknown_203B268->input.unk20;
|
||||
gUnknown_203B268->unk9C[1] = gUnknown_203B268->input.unk1E;
|
||||
gUnknown_203B268->unk9C[2] = 0xF;
|
||||
gUnknown_203B268->unk9C[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
@@ -276,7 +265,7 @@ void sub_801E76C(void)
|
||||
void DisplayChosenHint(void)
|
||||
{
|
||||
sub_80073B8(gUnknown_203B268->unk34);
|
||||
xxx_call_draw_string((gUnknown_203B268->helpPageIndex << 3) + 0x10, 0, gGameHints[gUnknown_203B268->helpPageIndex].heading, gUnknown_203B268->unk34, 0);
|
||||
xxx_call_draw_string(0xA, 0x14, gGameHints[gUnknown_203B268->helpPageIndex].body, gUnknown_203B268->unk34, 0);
|
||||
xxx_call_draw_string((gUnknown_203B268->input.unk1E << 3) + 0x10, 0, gGameHints[gUnknown_203B268->input.unk1E].heading, gUnknown_203B268->unk34, 0);
|
||||
xxx_call_draw_string(0xA, 0x14, gGameHints[gUnknown_203B268->input.unk1E].body, gUnknown_203B268->unk34, 0);
|
||||
sub_80073E0(gUnknown_203B268->unk34);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "constants/colors.h"
|
||||
#include "file_system.h"
|
||||
#include "item.h"
|
||||
#include "moves.h"
|
||||
@@ -703,7 +704,7 @@ u32 sub_80913E0(struct Item* slot, u32 a2, struct subStruct_203B240 ** a3)
|
||||
u32 result;
|
||||
|
||||
InitPokemonMove(buffer8, move);
|
||||
sub_80078A4(a2, 4, 82, 200, 7);
|
||||
sub_80078A4(a2, 4, 82, 200, COLOR_WHITE_2);
|
||||
xxx_format_and_draw(4, 84, gPtrTypeText, a2, 0);
|
||||
moves_data = GetMoveType(buffer8);
|
||||
typestring = GetUnformattedTypeString(moves_data);
|
||||
@@ -1500,7 +1501,7 @@ void ClearAllItems_8091FB4() {
|
||||
}
|
||||
}
|
||||
|
||||
bool32 IsInvalidItemReward(u8 itemID)
|
||||
bool8 IsInvalidItemReward(u8 itemID)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ extern void DrawTeamMoneyBox(u32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern s32 sub_8013800(struct MenuInputStruct *, u32);
|
||||
extern void xxx_call_draw_string(s32 x, s32, u8 *, u32, u32);
|
||||
extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
|
||||
extern s32 sub_801AED0(s32);
|
||||
@@ -64,14 +64,7 @@ extern struct unkStruct_203B224 *gUnknown_203B224;
|
||||
struct unkStruct_203B214
|
||||
{;
|
||||
// size: 0xA0
|
||||
u8 fill0[0x18];
|
||||
u16 unk18;
|
||||
s16 unk1A;
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
u16 shopItemCount;
|
||||
u8 fill24[0x34 - 0x24];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk34;
|
||||
struct UnkTextStruct2 *unk38;
|
||||
struct UnkTextStruct2 unk3C[4];
|
||||
@@ -81,14 +74,14 @@ struct unkStruct_203B214
|
||||
extern struct unkStruct_203B214 *gUnknown_203B214;
|
||||
extern struct unkStruct_203B214 *gUnknown_203B21C;
|
||||
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern void sub_8013818(struct MenuInputStruct *, u32, u32, u32);
|
||||
|
||||
extern u8 sub_8019FB0(void);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct *, u32);
|
||||
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 GetKeyPress(void *);
|
||||
extern void sub_8013660(void *);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80DB8CC;
|
||||
extern struct UnkTextStruct2 gUnknown_80DB8B4;
|
||||
@@ -98,10 +91,10 @@ extern struct UnkTextStruct2 gUnknown_80DB95C;
|
||||
extern const struct UnkTextStruct2 gUnknown_80DB914;
|
||||
extern void sub_801A430(void);
|
||||
extern void sub_801A4A4(void);
|
||||
extern void sub_8013984(u8 *);
|
||||
extern void sub_8013984(struct MenuInputStruct*);
|
||||
extern void sub_801A064(void);
|
||||
extern void sub_801A0D8(void);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern u8 sub_801A37C(void);
|
||||
|
||||
extern void sub_801A010(void);
|
||||
@@ -616,9 +609,9 @@ u32 sub_8019E40(u32 r0)
|
||||
gUnknown_203B214->unk38->unk14 = gUnknown_203B214->unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B214->unk3C, 1, 1);
|
||||
sub_8013818(gUnknown_203B214, CountKecleonShopItems(), 0xA, r0);
|
||||
gUnknown_203B214->unk18 = gUnknown_203B218;
|
||||
sub_8013984((u8 *)gUnknown_203B214);
|
||||
sub_8013818(&gUnknown_203B214->input, CountKecleonShopItems(), 0xA, r0);
|
||||
gUnknown_203B214->input.menuIndex = gUnknown_203B218;
|
||||
sub_8013984(&gUnknown_203B214->input);
|
||||
sub_801A064();
|
||||
sub_801A0D8();
|
||||
return 1;
|
||||
@@ -632,12 +625,12 @@ u32 sub_8019EDC(u8 r0)
|
||||
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(gUnknown_203B214);
|
||||
sub_8013660(&gUnknown_203B214->input);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B214))
|
||||
switch(GetKeyPress(&gUnknown_203B214->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -659,7 +652,7 @@ u32 sub_8019EDC(u8 r0)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(gUnknown_203B214, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B214->input, 1) != 0)
|
||||
{
|
||||
sub_801A064();
|
||||
sub_801A0D8();
|
||||
@@ -675,26 +668,26 @@ u32 sub_8019EDC(u8 r0)
|
||||
|
||||
u8 sub_8019FB0(void)
|
||||
{
|
||||
return (gUnknown_203B214->unk1E * gUnknown_203B214->unk1C) + (u8)gUnknown_203B214->unk18;
|
||||
return (gUnknown_203B214->input.unk1E * gUnknown_203B214->input.unk1C) + (u8)gUnknown_203B214->input.menuIndex;
|
||||
}
|
||||
|
||||
void sub_8019FCC(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B214->unk3C, 0, 0);
|
||||
gUnknown_203B214->shopItemCount = CountKecleonShopItems();
|
||||
sub_8013984((u8 *)gUnknown_203B214);
|
||||
gUnknown_203B214->input.unk22 = CountKecleonShopItems();
|
||||
sub_8013984(&gUnknown_203B214->input);
|
||||
sub_801A064();
|
||||
sub_801A0D8();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(gUnknown_203B214);
|
||||
AddMenuCursorSprite(&gUnknown_203B214->input);
|
||||
}
|
||||
|
||||
void sub_801A010(void)
|
||||
{
|
||||
if(gUnknown_203B214 != NULL)
|
||||
{
|
||||
gUnknown_203B218 = gUnknown_203B214->unk18;
|
||||
gUnknown_203B218 = gUnknown_203B214->input.menuIndex;
|
||||
gUnknown_203B214->unk3C[gUnknown_203B214->unk34] = gUnknown_80DB8B4;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B214->unk3C, 1, 1);
|
||||
@@ -775,18 +768,14 @@ void sub_801A0D8(void)
|
||||
struct Item item;
|
||||
u8 temp_calc;
|
||||
|
||||
// Needed for the shifts..
|
||||
u32 index_shift;
|
||||
u32 quantity_shift;
|
||||
|
||||
sub_8008C54(gUnknown_203B214->unk34);
|
||||
sub_80073B8(gUnknown_203B214->unk34);
|
||||
xxx_call_draw_string(gUnknown_203B214->unk1E * 8 + 10,0,gUnknown_80DB8E4,
|
||||
xxx_call_draw_string(gUnknown_203B214->input.unk1E * 8 + 10,0,gUnknown_80DB8E4,
|
||||
gUnknown_203B214->unk34,0);
|
||||
|
||||
for(index = 0; index < gUnknown_203B214->unk1A; index++)
|
||||
for(index = 0; index < gUnknown_203B214->input.unk1A; index++)
|
||||
{
|
||||
temp_calc = (gUnknown_203B214->unk1E * gUnknown_203B214->unk1C) + index;
|
||||
temp_calc = (gUnknown_203B214->input.unk1E * gUnknown_203B214->input.unk1C) + index;
|
||||
heldItem = GetKecleonShopItem(temp_calc);
|
||||
item.id = heldItem->id;
|
||||
item.quantity = heldItem->quantity;
|
||||
@@ -798,12 +787,12 @@ void sub_801A0D8(void)
|
||||
sub_8090E14(auStack204,&item,&local_7c);
|
||||
buyPrice = GetStackBuyPrice(&item);
|
||||
if (buyPrice <= gTeamInventory_203B460->teamMoney) {
|
||||
y = sub_8013800(gUnknown_203B214,index);
|
||||
y = sub_8013800(&gUnknown_203B214->input,index);
|
||||
xxx_call_draw_string(8,y,auStack204,gUnknown_203B214->unk34,0);
|
||||
}
|
||||
else {
|
||||
sprintfStatic(auStack112,gUnknown_80DB8EC,auStack204);
|
||||
y = sub_8013800(gUnknown_203B214,index);
|
||||
y = sub_8013800(&gUnknown_203B214->input,index);
|
||||
xxx_call_draw_string(8,y,auStack112,gUnknown_203B214->unk34,0);
|
||||
}
|
||||
}
|
||||
@@ -826,9 +815,9 @@ u32 sub_801A20C(u32 r0)
|
||||
gUnknown_203B21C->unk38->unk14 = gUnknown_203B21C->unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B21C->unk3C, 1, 1);
|
||||
sub_8013818(gUnknown_203B21C, CountKecleonWareItems(), 0xA, r0);
|
||||
gUnknown_203B21C->unk18 = gUnknown_203B220;
|
||||
sub_8013984((u8 *)gUnknown_203B21C);
|
||||
sub_8013818(&gUnknown_203B21C->input, CountKecleonWareItems(), 0xA, r0);
|
||||
gUnknown_203B21C->input.menuIndex = gUnknown_203B220;
|
||||
sub_8013984(&gUnknown_203B21C->input);
|
||||
sub_801A430();
|
||||
sub_801A4A4();
|
||||
return 1;
|
||||
@@ -842,12 +831,12 @@ u32 sub_801A2A8(u8 r0)
|
||||
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(gUnknown_203B21C);
|
||||
sub_8013660(&gUnknown_203B21C->input);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B21C))
|
||||
switch(GetKeyPress(&gUnknown_203B21C->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -871,7 +860,7 @@ u32 sub_801A2A8(u8 r0)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(gUnknown_203B21C, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B21C->input, 1) != 0)
|
||||
{
|
||||
sub_801A430();
|
||||
sub_801A4A4();
|
||||
@@ -887,26 +876,26 @@ u32 sub_801A2A8(u8 r0)
|
||||
|
||||
u8 sub_801A37C(void)
|
||||
{
|
||||
return (gUnknown_203B21C->unk1E * gUnknown_203B21C->unk1C) + gUnknown_203B21C->unk18;
|
||||
return (gUnknown_203B21C->input.unk1E * gUnknown_203B21C->input.unk1C) + gUnknown_203B21C->input.menuIndex;
|
||||
}
|
||||
|
||||
void sub_801A398(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B21C->unk3C, 0, 0);
|
||||
gUnknown_203B21C->shopItemCount = CountKecleonWareItems();
|
||||
sub_8013984((u8 *)gUnknown_203B21C);
|
||||
gUnknown_203B21C->input.unk22 = CountKecleonWareItems();
|
||||
sub_8013984(&gUnknown_203B21C->input);
|
||||
sub_801A430();
|
||||
sub_801A4A4();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(gUnknown_203B21C);
|
||||
AddMenuCursorSprite(&gUnknown_203B21C->input);
|
||||
}
|
||||
|
||||
void sub_801A3DC(void)
|
||||
{
|
||||
if(gUnknown_203B21C != NULL)
|
||||
{
|
||||
gUnknown_203B220 = gUnknown_203B21C->unk18;
|
||||
gUnknown_203B220 = gUnknown_203B21C->input.menuIndex;
|
||||
gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34] = gUnknown_80DB8FC;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B21C->unk3C, 1, 1);
|
||||
@@ -986,18 +975,14 @@ void sub_801A4A4(void)
|
||||
struct Item item;
|
||||
u8 temp_calc;
|
||||
|
||||
// Needed for the shifts..
|
||||
u32 index_shift;
|
||||
u32 quantity_shift;
|
||||
|
||||
sub_8008C54(gUnknown_203B21C->unk34);
|
||||
sub_80073B8(gUnknown_203B21C->unk34);
|
||||
xxx_call_draw_string(gUnknown_203B21C->unk1E * 8 + 10,0,gUnknown_80DB92C,
|
||||
xxx_call_draw_string(gUnknown_203B21C->input.unk1E * 8 + 10,0,gUnknown_80DB92C,
|
||||
gUnknown_203B21C->unk34,0);
|
||||
|
||||
for(index = 0; index < gUnknown_203B21C->unk1A; index++)
|
||||
for(index = 0; index < gUnknown_203B21C->input.unk1A; index++)
|
||||
{
|
||||
temp_calc = (gUnknown_203B21C->unk1E * gUnknown_203B21C->unk1C) + index;
|
||||
temp_calc = (gUnknown_203B21C->input.unk1E * gUnknown_203B21C->input.unk1C) + index;
|
||||
heldItem = GetKecleonWareItem(temp_calc);
|
||||
item.id = heldItem->id;
|
||||
item.quantity = heldItem->quantity;
|
||||
@@ -1006,15 +991,15 @@ void sub_801A4A4(void)
|
||||
local_7c.unk4 = 0;
|
||||
local_7c.unk6 = 0x58;
|
||||
local_7c.unk8 = 1;
|
||||
sub_8090E14(buffer1,(struct Item *)&item,&local_7c);
|
||||
buyPrice = GetStackBuyPrice((struct Item *)&item);
|
||||
sub_8090E14(buffer1,&item,&local_7c);
|
||||
buyPrice = GetStackBuyPrice(&item);
|
||||
if (buyPrice <= gTeamInventory_203B460->teamMoney) {
|
||||
y = sub_8013800(gUnknown_203B21C,index);
|
||||
y = sub_8013800(&gUnknown_203B21C->input,index);
|
||||
xxx_call_draw_string(8,y,buffer1,gUnknown_203B21C->unk34,0);
|
||||
}
|
||||
else {
|
||||
sprintfStatic(buffer2,gUnknown_80DB934,buffer1);
|
||||
y = sub_8013800(gUnknown_203B21C,index);
|
||||
y = sub_8013800(&gUnknown_203B21C->input,index);
|
||||
xxx_call_draw_string(8,y,buffer2,gUnknown_203B21C->unk34,0);
|
||||
}
|
||||
}
|
||||
@@ -1049,10 +1034,10 @@ u32 sub_801A5D8(u32 param_1,int param_2,struct UnkTextStruct2_sub *param_3,u32 p
|
||||
sub_8099690(1);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B224->unk90,1,1);
|
||||
sub_8013818(&gUnknown_203B224->unk54,GetNumberOfFilledInventorySlots(),param_4,param_2);
|
||||
gUnknown_203B224->unk6C = gUnknown_203B228;
|
||||
gUnknown_203B224->unk72 = gUnknown_203B22A;
|
||||
sub_8013984((u8 *)&gUnknown_203B224->unk54);
|
||||
sub_8013818(&gUnknown_203B224->input,GetNumberOfFilledInventorySlots(),param_4,param_2);
|
||||
gUnknown_203B224->input.menuIndex = gUnknown_203B228;
|
||||
gUnknown_203B224->input.unk1E = gUnknown_203B22A;
|
||||
sub_8013984(&gUnknown_203B224->input);
|
||||
sub_801A998();
|
||||
sub_801A9E0();
|
||||
return 1;
|
||||
@@ -1065,10 +1050,10 @@ u32 sub_801A6E8(u8 param_1)
|
||||
struct Item item;
|
||||
|
||||
if (param_1 == 0) {
|
||||
sub_8013660(&gUnknown_203B224->unk54);
|
||||
sub_8013660(&gUnknown_203B224->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B224->unk54)) {
|
||||
switch(GetKeyPress(&gUnknown_203B224->input)) {
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
@@ -1110,7 +1095,7 @@ u32 sub_801A6E8(u8 param_1)
|
||||
if ((gUnknown_203B224->unk4[index] != 0) || (sub_801ADA0(index) != 0)) {
|
||||
PlayMenuSoundEffect(6);
|
||||
gUnknown_203B224->unk4[index] ^= 1;
|
||||
sub_80138B8(&gUnknown_203B224->unk54,0);
|
||||
sub_80138B8(&gUnknown_203B224->input,0);
|
||||
sub_801A9E0();
|
||||
return 1;
|
||||
}
|
||||
@@ -1128,7 +1113,7 @@ u32 sub_801A6E8(u8 param_1)
|
||||
// NOTE: fallthrough needed here
|
||||
default:
|
||||
_0801A87C:
|
||||
if (sub_80138B8(&gUnknown_203B224->unk54,1) != '\0') {
|
||||
if (sub_80138B8(&gUnknown_203B224->input,1) != '\0') {
|
||||
sub_801A998();
|
||||
sub_801A9E0();
|
||||
return 1;
|
||||
@@ -1142,7 +1127,7 @@ _0801A87C:
|
||||
|
||||
s32 sub_801A8AC(void)
|
||||
{
|
||||
return (gUnknown_203B224->unk72 * gUnknown_203B224->unk70) + gUnknown_203B224->unk6C;
|
||||
return (gUnknown_203B224->input.unk1E * gUnknown_203B224->input.unk1C) + gUnknown_203B224->input.menuIndex;
|
||||
}
|
||||
|
||||
void sub_801A8D0(u8 r0)
|
||||
@@ -1151,20 +1136,20 @@ void sub_801A8D0(u8 r0)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B224->unk90, 0, 0);
|
||||
FillInventoryGaps();
|
||||
gUnknown_203B224->unk76 = GetNumberOfFilledInventorySlots();
|
||||
sub_8013984((u8 *)&gUnknown_203B224->unk54);
|
||||
gUnknown_203B224->input.unk22 = GetNumberOfFilledInventorySlots();
|
||||
sub_8013984(&gUnknown_203B224->input);
|
||||
sub_801A998();
|
||||
sub_801A9E0();
|
||||
if(r0)
|
||||
AddMenuCursorSprite((u8 *)&gUnknown_203B224->unk54);
|
||||
AddMenuCursorSprite(&gUnknown_203B224->input);
|
||||
}
|
||||
|
||||
void sub_801A928(void)
|
||||
{
|
||||
if(gUnknown_203B224 != NULL)
|
||||
{
|
||||
gUnknown_203B228 = gUnknown_203B224->unk6C;
|
||||
gUnknown_203B22A = gUnknown_203B224->unk72;
|
||||
gUnknown_203B228 = gUnknown_203B224->input.menuIndex;
|
||||
gUnknown_203B22A = gUnknown_203B224->input.unk1E;
|
||||
gUnknown_203B224->unk90[gUnknown_203B224->unk88] = gUnknown_80DB944;
|
||||
sub_8099690(0);
|
||||
ResetUnusedInputStruct();
|
||||
@@ -1176,8 +1161,8 @@ void sub_801A928(void)
|
||||
|
||||
void sub_801A998(void)
|
||||
{
|
||||
gUnknown_203B224->unkF0[0] = gUnknown_203B224->unk74;
|
||||
gUnknown_203B224->unkF0[1] = gUnknown_203B224->unk72;
|
||||
gUnknown_203B224->unkF0[0] = gUnknown_203B224->input.unk20;
|
||||
gUnknown_203B224->unkF0[1] = gUnknown_203B224->input.unk1E;
|
||||
gUnknown_203B224->unkF0[2] = 0xB;
|
||||
gUnknown_203B224->unkF0[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
@@ -1201,21 +1186,21 @@ void sub_801A9E0(void)
|
||||
|
||||
sub_8008C54(gUnknown_203B224->unk88);
|
||||
sub_80073B8(gUnknown_203B224->unk88);
|
||||
x = gUnknown_203B224->unk72 * 8 + 10;
|
||||
if (gUnknown_203B224->unk72 == 0) {
|
||||
x = gUnknown_203B224->input.unk1E * 8 + 10;
|
||||
if (gUnknown_203B224->input.unk1E == 0) {
|
||||
xxx_call_draw_string(x,0,gTeamToolboxA,gUnknown_203B224->unk88,0);
|
||||
}
|
||||
else {
|
||||
xxx_call_draw_string(x,0,gTeamToolboxB,gUnknown_203B224->unk88,0);
|
||||
}
|
||||
for(r7 = 0; r7 < gUnknown_203B224->unk6E; r7++)
|
||||
for(r7 = 0; r7 < gUnknown_203B224->input.unk1A; r7++)
|
||||
{
|
||||
teamItemIndex = (gUnknown_203B224->unk72 * gUnknown_203B224->unk70) + r7;
|
||||
teamItemIndex = (gUnknown_203B224->input.unk1E * gUnknown_203B224->input.unk1C) + r7;
|
||||
item = gTeamInventory_203B460->teamItems[teamItemIndex];
|
||||
switch(gUnknown_203B224->unk0) {
|
||||
case 0:
|
||||
sub_8090E14(buffer1,&item,0);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0);
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
@@ -1224,7 +1209,7 @@ void sub_801A9E0(void)
|
||||
stack.unk8 = 1;
|
||||
item.flags = 1;
|
||||
sub_8090E14(buffer1,&item, &stack);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0);
|
||||
break;
|
||||
case 3:
|
||||
stack1.unk0 = 0;
|
||||
@@ -1233,12 +1218,12 @@ void sub_801A9E0(void)
|
||||
item.flags = 1;
|
||||
sub_8090E14(buffer1,&item,&stack1);
|
||||
if (gUnknown_203B224->unk4[teamItemIndex] != 0 || sub_801ADA0(teamItemIndex) != '\0'){
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy(gUnknown_202DE58,buffer1,0x50);
|
||||
xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->unk54,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0);
|
||||
xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->input,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
@@ -1252,15 +1237,15 @@ void sub_801A9E0(void)
|
||||
if (GetStackSellPrice(&item) + gTeamInventory_203B460->teamMoney > MAX_TEAM_MONEY){
|
||||
// very dumb but this matches...
|
||||
sprintfStatic((char *)&stack3,gUnknown_80DB9A0,buffer1);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),(u8 *)&stack3,gUnknown_203B224->unk88,0);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),(u8 *)&stack3,gUnknown_203B224->unk88,0);
|
||||
}
|
||||
else
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0);;
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0);;
|
||||
}
|
||||
else {
|
||||
sub_8090E14(buffer1,&item, 0);
|
||||
strncpy(gUnknown_202DE58,buffer1,0x50);
|
||||
xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->unk54,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0);
|
||||
xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->input,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
@@ -1270,17 +1255,17 @@ void sub_801A9E0(void)
|
||||
item.flags = 1;
|
||||
sub_8090E14(buffer1,&item,&stack3);
|
||||
if (IsGummiItem(item.id)) {
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->unk54,r7),buffer1,gUnknown_203B224->unk88,0);
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B224->input,r7),buffer1,gUnknown_203B224->unk88,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy(gUnknown_202DE58,buffer1,0x50);
|
||||
xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->unk54,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0);
|
||||
xxx_format_and_draw(8,sub_8013800(&gUnknown_203B224->input,r7),gUnknown_80DB994,gUnknown_203B224->unk88,0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if ((sub_801AED0(teamItemIndex) & 1) != 0) {
|
||||
sub_8007B7C(gUnknown_203B224->unk88,8,sub_8013800(&gUnknown_203B224->unk54,r7),(gUnknown_203B224->unk8C->unkC - 2) * 8,10);
|
||||
sub_8007B7C(gUnknown_203B224->unk88,8,sub_8013800(&gUnknown_203B224->input,r7),(gUnknown_203B224->unk8C->unkC - 2) * 8,10);
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B224->unk88);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "gba/defines.h"
|
||||
#include "global.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/colors.h"
|
||||
|
||||
@@ -7,22 +7,7 @@
|
||||
#include "wonder_mail.h"
|
||||
#include "menu_input.h"
|
||||
|
||||
|
||||
extern u8 *gUnknown_80D4990[];
|
||||
extern u8 *gUnknown_80D4970[];
|
||||
|
||||
extern bool8 IsMailinJobSlot(struct WonderMail *mail);
|
||||
|
||||
void sub_802E578(void);
|
||||
void HandleMailActionMenu(void);
|
||||
void HandleMailboxMenu(void);
|
||||
void nullsub_133(void);
|
||||
void sub_802E0A0(void);
|
||||
void sub_802E1AC(void);
|
||||
void sub_802E73C(void);
|
||||
void sub_802E758(void);
|
||||
void sub_802E774(void);
|
||||
void sub_802E7D0(void);
|
||||
EWRAM_DATA_2 struct unkStruct_203B304 *gUnknown_203B304 = {0};
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80E0284 =
|
||||
{
|
||||
@@ -73,11 +58,24 @@ const u8 gMailAccepted[] = "Accepted";
|
||||
const u8 gUnknown_80E0324[] = "/";
|
||||
static const u8 mailbox_fill[] = "pksdir0";
|
||||
|
||||
extern struct unkStruct_203B304 *gUnknown_203B304;
|
||||
extern u8 *gUnknown_80D4990[];
|
||||
extern u8 *gUnknown_80D4970[];
|
||||
|
||||
extern bool8 IsMailinJobSlot(struct WonderMail *mail);
|
||||
|
||||
void sub_802E578(void);
|
||||
void HandleMailActionMenu(void);
|
||||
void HandleMailboxMenu(void);
|
||||
void nullsub_133(void);
|
||||
void sub_802E0A0(void);
|
||||
void sub_802E1AC(void);
|
||||
void sub_802E73C(void);
|
||||
void sub_802E758(void);
|
||||
void sub_802E774(void);
|
||||
void sub_802E7D0(void);
|
||||
extern void sub_802E088(u32);
|
||||
extern void CreateMailboxMenu(void);
|
||||
extern void CreateMailActionMenu(void);
|
||||
|
||||
extern void sub_802BD14(u32, u32, u32);
|
||||
extern void sub_802BE94(u32);
|
||||
extern void CreateMailMenu(void);
|
||||
|
||||
@@ -881,7 +881,7 @@ bool8 SetMainMenuText(void)
|
||||
|
||||
// Have to load the pointer before the index
|
||||
preload = gUnknown_203B34C->unk4[0].menuItems;
|
||||
menuChoice = preload[gUnknown_203B34C->unk4[0].menuIndex].menuAction; // chosen menu action?
|
||||
menuChoice = preload[gUnknown_203B34C->unk4[0].input.menuIndex].menuAction; // chosen menu action?
|
||||
if (gUnknown_203B34C->currMenuChoice == menuChoice) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -15,15 +15,7 @@ struct unkStruct_203B31C
|
||||
{
|
||||
// Size: 0xD0
|
||||
s16 unk0[NUM_DUNGEON_MAZE];
|
||||
u32 unk30;
|
||||
u8 fill34[0x48 - 0x34];
|
||||
s16 unk48;
|
||||
s16 unk4A;
|
||||
s16 unk4C;
|
||||
s16 unk4E;
|
||||
u16 unk50;
|
||||
u16 unk52;
|
||||
u8 fill54[0x64 - 0x54];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk64;
|
||||
struct UnkTextStruct2 *unk68;
|
||||
struct UnkTextStruct2 unk6C[4];
|
||||
@@ -72,9 +64,9 @@ extern s16 sub_80A2668(u32 r0);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern bool8 IsMazeCompleted(s32);
|
||||
extern s32 sub_8030668(void);
|
||||
extern void sub_8013984(u32 *);
|
||||
extern void sub_8013984(void *);
|
||||
extern void sub_80304C8();
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern void DrawDojoCourseList(void);
|
||||
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
@@ -201,7 +193,7 @@ bool8 sub_80302E8(int param_1, struct UnkTextStruct2_sub *param_2, u32 param_3)
|
||||
sub_8012D08(gUnknown_203B31C->unk68,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B31C->unk6C,1,1);
|
||||
sub_8013818(&gUnknown_203B31C->unk30,sub_8030668(),param_3,param_1);
|
||||
sub_8013818(&gUnknown_203B31C->input,sub_8030668(),param_3,param_1);
|
||||
sub_80304C8();
|
||||
DrawDojoCourseList();
|
||||
return 1;
|
||||
@@ -211,10 +203,10 @@ bool8 sub_80302E8(int param_1, struct UnkTextStruct2_sub *param_2, u32 param_3)
|
||||
u32 sub_80303AC(u8 param_1)
|
||||
{
|
||||
if (param_1 == 0) {
|
||||
sub_8013660(&gUnknown_203B31C->unk30);
|
||||
sub_8013660(&gUnknown_203B31C->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B31C->unk30))
|
||||
switch(GetKeyPress(&gUnknown_203B31C->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -223,7 +215,7 @@ u32 sub_80303AC(u8 param_1)
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if (sub_80138B8(&gUnknown_203B31C->unk30, 1)) {
|
||||
if (sub_80138B8(&gUnknown_203B31C->input, 1)) {
|
||||
sub_80304C8();
|
||||
DrawDojoCourseList();
|
||||
return 1;
|
||||
@@ -234,16 +226,16 @@ u32 sub_80303AC(u8 param_1)
|
||||
}
|
||||
|
||||
s16 sub_8030418(void) {
|
||||
return gUnknown_203B31C->unk0[(gUnknown_203B31C->unk4E * gUnknown_203B31C->unk4C) + gUnknown_203B31C->unk48];
|
||||
return gUnknown_203B31C->unk0[(gUnknown_203B31C->input.unk1E * gUnknown_203B31C->input.unk1C) + gUnknown_203B31C->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_8030444(u8 r0) {
|
||||
gUnknown_203B31C->unk52 = sub_8030668();
|
||||
sub_8013984(&gUnknown_203B31C->unk30);
|
||||
gUnknown_203B31C->input.unk22 = sub_8030668();
|
||||
sub_8013984(&gUnknown_203B31C->input);
|
||||
sub_80304C8();
|
||||
DrawDojoCourseList();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B31C->unk30);
|
||||
AddMenuCursorSprite(&gUnknown_203B31C->input);
|
||||
}
|
||||
|
||||
void sub_8030480(void) {
|
||||
@@ -331,15 +323,15 @@ void DrawDojoCourseList(void)
|
||||
sub_80073B8(gUnknown_203B31C->unk64);
|
||||
xxx_call_draw_string(10,0,gMakuhitaDojoHeader,gUnknown_203B31C->unk64,0); // Courses
|
||||
sub_8012BC4(gUnknown_203B31C->unkCC[2] * 8 + 4,0,
|
||||
gUnknown_203B31C->unk4E + 1,2,7,gUnknown_203B31C->unk64);
|
||||
for (index = 0; index < gUnknown_203B31C->unk4A; index++)
|
||||
gUnknown_203B31C->input.unk1E + 1,2,7,gUnknown_203B31C->unk64);
|
||||
for (index = 0; index < gUnknown_203B31C->input.unk1A; index++)
|
||||
{
|
||||
iVar6 = gUnknown_203B31C->unk0[gUnknown_203B31C->unk4E * gUnknown_203B31C->unk4C + index];
|
||||
iVar6 = gUnknown_203B31C->unk0[gUnknown_203B31C->input.unk1E * gUnknown_203B31C->input.unk1C + index];
|
||||
dungeonIndex = sub_80A2740(iVar6);
|
||||
|
||||
mazeIndex = sub_80A2668(iVar6);
|
||||
|
||||
y = sub_8013800(&gUnknown_203B31C->unk30, index);
|
||||
y = sub_8013800(&gUnknown_203B31C->input, index);
|
||||
color = COLOR_WHITE_2; // COLOR_WHITE again?
|
||||
if (IsMazeCompleted(mazeIndex)) {
|
||||
xxx_call_draw_string(8,y,gUnknown_80E0824,gUnknown_203B31C->unk64,0); // Draw Star symbol
|
||||
|
||||
123
src/menu_input.c
123
src/menu_input.c
@@ -17,28 +17,31 @@ 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 s32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern u32 sub_80137A8(struct MenuInputStruct *);
|
||||
void MoveMenuCursorUp(struct MenuInputStruct *);
|
||||
void MoveMenuCursorDown(struct MenuInputStruct *);
|
||||
extern void sub_80073B8(u32);
|
||||
extern s32 sub_8008ED0(const u8 *);
|
||||
extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32);
|
||||
extern s32 sub_8013800(u32 *, s32);
|
||||
extern s32 sub_8013800(struct MenuInputStruct *, s32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void sub_8013660(u32 *);
|
||||
void AddMenuCursorSprite(void *);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
void AddMenuCursorSprite_(struct MenuInputStruct *, u32);
|
||||
void sub_8012EBC(struct MenuStruct *param_1);
|
||||
extern void sub_8013134(u32 *, u32, u32);
|
||||
extern void sub_80137B0(u32 *, u32);
|
||||
extern void sub_8013134(struct MenuInputStruct *, u32, u32);
|
||||
extern void sub_80137B0(struct MenuInputStruct *, 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);
|
||||
extern void sub_801317C(struct MenuInputStructSub *);
|
||||
extern void nullsub_7(u16 *);
|
||||
|
||||
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)
|
||||
void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 param_6)
|
||||
{
|
||||
s32 iVar1;
|
||||
u32 uVar2;
|
||||
@@ -74,7 +77,7 @@ void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 param_5, u32 param_6)
|
||||
uVar2 = ReturnIntFromChar2(iVar1 + 0x30);
|
||||
iVar3 = GetCharacter(uVar2);
|
||||
total_x += iVar3->unk6;
|
||||
xxx_call_draw_char(x - total_x,y,uVar2,param_5,param_6);
|
||||
xxx_call_draw_char(x - total_x,y,uVar2,color,param_6);
|
||||
counter++;
|
||||
if (counter >= len) {
|
||||
break;
|
||||
@@ -83,7 +86,7 @@ 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_8012C60(u32 x,u32 y,u32 param_3,u32 color,u32 param_5)
|
||||
{
|
||||
u32 add_x;
|
||||
struct unkChar *iVar3;
|
||||
@@ -97,7 +100,7 @@ void sub_8012C60(u32 x,u32 y,u32 param_3,u32 param_4,u32 param_5)
|
||||
else {
|
||||
add_x = 0;
|
||||
}
|
||||
xxx_call_draw_char(x + add_x,y,uVar2,param_4,param_5);
|
||||
xxx_call_draw_char(x + add_x,y,uVar2,color,param_5);
|
||||
}
|
||||
|
||||
void sub_8012CAC(struct UnkTextStruct2 *param_1, const struct MenuItem *param_2)
|
||||
@@ -228,9 +231,9 @@ void sub_8012D60(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32
|
||||
if (menuIndex < 0) {
|
||||
menuIndex = iVar1;
|
||||
}
|
||||
sub_8013134(¶m_1->unk14,counter,index);
|
||||
param_1->menuIndex = menuIndex;
|
||||
sub_80137B0(¶m_1->unk14,0);
|
||||
sub_8013134(¶m_1->input,counter,index);
|
||||
param_1->input.menuIndex = menuIndex;
|
||||
sub_80137B0(¶m_1->input,0);
|
||||
param_1->unk4C = TRUE;
|
||||
param_1->unk4D = TRUE;
|
||||
param_1->unk4E = TRUE;
|
||||
@@ -268,9 +271,9 @@ void sub_8012E04(struct MenuStruct *param_1,const struct MenuItem *menuItems,u32
|
||||
if (menuIndex < 0) {
|
||||
menuIndex = iVar1;
|
||||
}
|
||||
sub_8013134(¶m_1->unk14,counter,index);
|
||||
param_1->menuIndex = menuIndex;
|
||||
sub_80137B0(¶m_1->unk14,0);
|
||||
sub_8013134(¶m_1->input,counter,index);
|
||||
param_1->input.menuIndex = menuIndex;
|
||||
sub_80137B0(¶m_1->input,0);
|
||||
param_1->index = index;
|
||||
param_1->menuTextColorArray = colorArray;
|
||||
if (colorArray == NULL) {
|
||||
@@ -341,7 +344,7 @@ void sub_8012EBC(struct MenuStruct *param_1)
|
||||
color = colorArray[0];
|
||||
}
|
||||
sprintfStatic(buffer,gUnknown_80D4828,color,textPtr);
|
||||
y = sub_8013800(¶m_1->unk14,counter);
|
||||
y = sub_8013800(¶m_1->input,counter);
|
||||
xxx_format_and_draw(8,y,buffer,param_1->index,0);
|
||||
menuItemsPtr++;
|
||||
counter++;
|
||||
@@ -352,10 +355,10 @@ void sub_8012EBC(struct MenuStruct *param_1)
|
||||
}
|
||||
if (param_1->unk4E) {
|
||||
if (param_1->unk4C) {
|
||||
AddMenuCursorSprite(¶m_1->unk14);
|
||||
AddMenuCursorSprite(¶m_1->input);
|
||||
}
|
||||
else {
|
||||
sub_8013660(¶m_1->unk14);
|
||||
sub_8013660(¶m_1->input);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -366,31 +369,31 @@ bool8 sub_8012FD8(struct MenuStruct *param_1)
|
||||
s32 index;
|
||||
const struct MenuItem *item;
|
||||
|
||||
prevMenuIndex = param_1->menuIndex;
|
||||
prevMenuIndex = param_1->input.menuIndex;
|
||||
if (param_1->unk4C) {
|
||||
switch(GetKeyPress(¶m_1->unk14))
|
||||
switch(GetKeyPress(¶m_1->input))
|
||||
{
|
||||
case INPUT_DPAD_DOWN:
|
||||
MoveMenuCursorDown(¶m_1->unk14);
|
||||
if (prevMenuIndex != param_1->menuIndex) {
|
||||
MoveMenuCursorDown(¶m_1->input);
|
||||
if (prevMenuIndex != param_1->input.menuIndex) {
|
||||
PlayMenuSoundEffect(3);
|
||||
}
|
||||
break;
|
||||
case INPUT_DPAD_UP:
|
||||
MoveMenuCursorUp(¶m_1->unk14);
|
||||
if (prevMenuIndex != param_1->menuIndex) {
|
||||
MoveMenuCursorUp(¶m_1->input);
|
||||
if (prevMenuIndex != param_1->input.menuIndex) {
|
||||
PlayMenuSoundEffect(3);
|
||||
}
|
||||
break;
|
||||
case INPUT_A_BUTTON:
|
||||
index = sub_80137A8(¶m_1->unk14);
|
||||
index = sub_80137A8(¶m_1->input);
|
||||
item = ¶m_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;
|
||||
param_1->input.unk24 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -404,8 +407,8 @@ bool8 sub_8012FD8(struct MenuStruct *param_1)
|
||||
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;
|
||||
if (-1 < param_1->menuItems[param_1->input.unk1A].menuAction) {
|
||||
param_1->menuAction = param_1->menuItems[param_1->input.unk1A].menuAction;
|
||||
param_1->unk4C = FALSE;
|
||||
PlayMenuSoundEffect(1);
|
||||
}
|
||||
@@ -424,18 +427,18 @@ bool8 sub_80130A8(struct MenuStruct *param_1)
|
||||
|
||||
if (param_1->unk4C) {
|
||||
|
||||
switch(GetKeyPress(¶m_1->unk14))
|
||||
switch(GetKeyPress(¶m_1->input))
|
||||
{
|
||||
case INPUT_A_BUTTON:
|
||||
index = sub_80137A8(¶m_1->unk14);
|
||||
index = sub_80137A8(¶m_1->input);
|
||||
menuItem = ¶m_1->menuItems[index];
|
||||
param_1->menuAction = menuItem->menuAction;
|
||||
param_1->unk4C = FALSE;
|
||||
param_1->unk38 = 0;
|
||||
param_1->input.unk24 = 0;
|
||||
PlayMenuSoundEffect(0);
|
||||
break;
|
||||
case INPUT_B_BUTTON:
|
||||
if(menuAction = param_1->menuItems[param_1->unk2E].menuAction, -1 < menuAction) {
|
||||
if(menuAction = param_1->menuItems[param_1->input.unk1A].menuAction, -1 < menuAction) {
|
||||
param_1->menuAction = menuAction;
|
||||
param_1->unk4C = FALSE;
|
||||
PlayMenuSoundEffect(0);
|
||||
@@ -457,3 +460,51 @@ bool8 sub_8013114(struct MenuStruct *param_1, s32 *menuAction)
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8013134(struct MenuInputStruct *param_1, u32 menuItemCounter, u32 index) {
|
||||
|
||||
struct UnkTextStruct1 *temp;
|
||||
|
||||
temp = &gUnknown_2027370[index];
|
||||
|
||||
param_1->unk0 = index;
|
||||
param_1->menuIndex = 0;
|
||||
param_1->unk1A = menuItemCounter;
|
||||
param_1->unk1C = menuItemCounter;
|
||||
param_1->unk1E = 0;
|
||||
param_1->unk4 = 0;
|
||||
|
||||
if(temp->unkC == 6)
|
||||
{
|
||||
param_1->unk6 = 0x10;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->unk6 = 0x2;
|
||||
}
|
||||
|
||||
|
||||
param_1->unkC = 0;
|
||||
param_1->unkE = 0;
|
||||
param_1->unk14 = 0;
|
||||
param_1->unk24 = 0;
|
||||
sub_801317C(¶m_1->unk28);
|
||||
}
|
||||
|
||||
void sub_801317C(struct MenuInputStructSub *param_1)
|
||||
{
|
||||
param_1->unk0 = 0;
|
||||
param_1->a_button = 0;
|
||||
param_1->b_button = 0;
|
||||
param_1->dpad_left = 0;
|
||||
param_1->dpad_right = 0;
|
||||
param_1->unk8 = -1;
|
||||
param_1->unkA = -1;
|
||||
nullsub_7(¶m_1->unk8);
|
||||
ResetUnusedInputStruct();
|
||||
}
|
||||
|
||||
void AddMenuCursorSprite(struct MenuInputStruct *param_1)
|
||||
{
|
||||
AddMenuCursorSprite_(param_1, 0);
|
||||
}
|
||||
|
||||
350
src/menu_input_1.c
Normal file
350
src/menu_input_1.c
Normal file
@@ -0,0 +1,350 @@
|
||||
#include "global.h"
|
||||
#include "constants/input.h"
|
||||
#include "input.h"
|
||||
#include "text.h"
|
||||
|
||||
extern struct UnkTextStruct1 gUnknown_2027370[4];
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern void sub_8013A7C(struct MenuInputStruct *);
|
||||
extern void sub_8013A54(struct MenuInputStruct *);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern void MoveMenuCursorUp(struct MenuInputStruct *);
|
||||
extern void MoveMenuCursorDown(struct MenuInputStruct *);
|
||||
void sub_8013984(struct MenuInputStruct *);
|
||||
void sub_801317C(struct MenuInputStructSub *);
|
||||
void sub_80137F8(struct MenuInputStruct *, u32);
|
||||
s32 sub_8013800(struct MenuInputStruct *param_1, s32 param_2);
|
||||
void UpdateMenuCursorSpriteCoords(struct MenuInputStruct *param_1);
|
||||
void sub_801332C(u16 *);
|
||||
|
||||
void sub_8013660(struct MenuInputStruct *param_1)
|
||||
{
|
||||
if (0 < param_1->unk1A)
|
||||
{
|
||||
UpdateMenuCursorSpriteCoords(param_1);
|
||||
sub_801332C(¶m_1->unk8);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateMenuCursorSpriteCoords(struct MenuInputStruct *param_1)
|
||||
{
|
||||
s32 index;
|
||||
struct UnkTextStruct1 *temp;
|
||||
|
||||
index = param_1->unk0;
|
||||
temp = &gUnknown_2027370[index];
|
||||
param_1->unk8 = temp->unk0 * 8 + param_1->unk4;
|
||||
param_1->unkA = temp->unk2 * 8 + sub_8013800(param_1, param_1->menuIndex);
|
||||
}
|
||||
|
||||
void MoveMenuCursorDown(struct MenuInputStruct *param_1)
|
||||
{
|
||||
param_1->unk24 = 0;
|
||||
if (param_1->unk1A < 1) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex++;
|
||||
if (param_1->menuIndex >= param_1->unk1A) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80136E0(struct MenuInputStruct *param_1, u8 param_2)
|
||||
{
|
||||
param_1->unk24 = 0;
|
||||
if (param_1->unk1A < 1) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex++;
|
||||
if (param_1->menuIndex >= param_1->unk1A) {
|
||||
if (param_2 != 0) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->menuIndex = param_1->unk1A - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MoveMenuCursorUp(struct MenuInputStruct *param_1)
|
||||
{
|
||||
param_1->unk24 = 0;
|
||||
if (param_1->unk1A < 1) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex--;
|
||||
if (param_1->menuIndex < 0) {
|
||||
param_1->menuIndex = param_1->unk1A + -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8013744(struct MenuInputStruct *param_1, u8 param_2)
|
||||
{
|
||||
param_1->unk24 = 0;
|
||||
if (param_1->unk1A < 1) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex--;
|
||||
if (param_1->menuIndex < 0) {
|
||||
if (param_2 != 0) {
|
||||
param_1->menuIndex = param_1->unk1A + -1;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8013780(struct MenuInputStruct *param_1, s32 param_2)
|
||||
{
|
||||
if (param_2 < 0) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else if (param_2 >= param_1->unk1A) {
|
||||
param_1->menuIndex = param_1->unk1A - 1;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex = param_2;
|
||||
}
|
||||
param_1->unk24 = 0;
|
||||
}
|
||||
|
||||
s32 sub_80137A8(struct MenuInputStruct *param_1)
|
||||
{
|
||||
return param_1->menuIndex;
|
||||
}
|
||||
|
||||
void sub_80137B0(struct MenuInputStruct *param_1, s32 param_2)
|
||||
{
|
||||
s32 iVar1;
|
||||
#ifndef NONMATCHING
|
||||
register s32 iVar2 asm("r0");
|
||||
#else
|
||||
s32 iVar2;
|
||||
#endif
|
||||
|
||||
if (param_2 >= 1) {
|
||||
iVar2 = param_2 << 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_2027370[param_1->unk0].unkC == 6)
|
||||
{
|
||||
iVar1 = 0x10;
|
||||
}
|
||||
else
|
||||
{
|
||||
iVar1 = 0;
|
||||
}
|
||||
iVar2 = (gUnknown_2027370[param_1->unk0].unk6 * 8 - iVar1);
|
||||
iVar2 <<= 8;
|
||||
}
|
||||
param_1->unk10 = iVar2 / param_1->unk1C;
|
||||
}
|
||||
|
||||
void sub_80137F8(struct MenuInputStruct *param_1, u32 param_2)
|
||||
{
|
||||
param_1->unk10 = param_2 << 8;
|
||||
}
|
||||
|
||||
s32 sub_8013800(struct MenuInputStruct *param_1, s32 param_2)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
|
||||
iVar2 = param_1->unk6;
|
||||
iVar1 = param_2 * param_1->unk10;
|
||||
if (iVar1 < 0) {
|
||||
iVar1 = iVar1 + 0xff;
|
||||
}
|
||||
return (iVar2 + (iVar1 >> 8));
|
||||
}
|
||||
|
||||
void sub_8013818(struct MenuInputStruct *param_1, short param_2, u16 param_3, s32 param_4)
|
||||
{
|
||||
param_1->unk0 = param_4;
|
||||
param_1->unk22 = param_2;
|
||||
param_1->unk1C = param_3;
|
||||
param_1->unk14 = 0;
|
||||
param_1->unk24 = 0;
|
||||
param_1->menuIndex = 0;
|
||||
param_1->unk1E = 0;
|
||||
sub_801317C(¶m_1->unk28);
|
||||
sub_8013984(param_1);
|
||||
sub_80137F8(param_1,0xC);
|
||||
}
|
||||
|
||||
|
||||
void sub_8013848(struct MenuInputStruct *param_1, short param_2, u16 param_3, s32 param_4)
|
||||
{
|
||||
param_1->unk0 = param_4;
|
||||
param_1->unk22 = param_2;
|
||||
param_1->unk1C = param_3;
|
||||
param_1->unk14 = 0;
|
||||
param_1->unk24 = 0;
|
||||
param_1->menuIndex = 0;
|
||||
param_1->unk1E = 0;
|
||||
sub_801317C(¶m_1->unk28);
|
||||
sub_8013984(param_1);
|
||||
sub_80137F8(param_1,0x18);
|
||||
}
|
||||
|
||||
void sub_8013878(struct MenuInputStruct *param_1, int param_2)
|
||||
{
|
||||
if (param_2 < 0) {
|
||||
param_2 = 0;
|
||||
}
|
||||
else if (param_2 >= param_1->unk22) {
|
||||
param_2 = param_1->unk22 + -1;
|
||||
}
|
||||
param_1->unk1E = param_2 / param_1->unk1C;
|
||||
param_1->menuIndex = param_2 % param_1->unk1C;
|
||||
param_1->unk24 = 0;
|
||||
sub_8013984(param_1);
|
||||
}
|
||||
|
||||
bool8 sub_80138B8(struct MenuInputStruct *param_1, bool8 param_2)
|
||||
{
|
||||
s32 sVar1;
|
||||
s32 oldIndex;
|
||||
|
||||
sVar1 = param_1->unk1E;
|
||||
oldIndex = param_1->menuIndex;
|
||||
AddMenuCursorSprite(param_1);
|
||||
if(param_2)
|
||||
{
|
||||
switch(GetKeyPress(param_1))
|
||||
{
|
||||
case INPUT_DPAD_UP:
|
||||
MoveMenuCursorUp(param_1);
|
||||
if(oldIndex != param_1->menuIndex)
|
||||
PlayMenuSoundEffect(3);
|
||||
break;
|
||||
case INPUT_DPAD_DOWN:
|
||||
MoveMenuCursorDown(param_1);
|
||||
if(oldIndex != param_1->menuIndex)
|
||||
PlayMenuSoundEffect(3);
|
||||
break;
|
||||
case INPUT_DPAD_LEFT:
|
||||
sub_8013A7C(param_1);
|
||||
break;
|
||||
case INPUT_DPAD_RIGHT:
|
||||
sub_8013A54(param_1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sVar1 != param_1->unk1E) {
|
||||
PlayMenuSoundEffect(4);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8013938(struct MenuInputStruct *param_1)
|
||||
{
|
||||
s32 sVar1;
|
||||
|
||||
sVar1 = param_1->unk1E;
|
||||
param_1->unk1A = 0;
|
||||
param_1->unk14 = 0;
|
||||
AddMenuCursorSprite(param_1);
|
||||
switch(GetKeyPress(param_1))
|
||||
{
|
||||
case INPUT_DPAD_LEFT:
|
||||
sub_8013A7C(param_1);
|
||||
break;
|
||||
case INPUT_DPAD_RIGHT:
|
||||
sub_8013A54(param_1);
|
||||
break;
|
||||
}
|
||||
if (sVar1 != param_1->unk1E) {
|
||||
PlayMenuSoundEffect(4);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8013984(struct MenuInputStruct * param_1) {
|
||||
s32 iVar2;
|
||||
s32 iVar4;
|
||||
struct UnkTextStruct1 *ptr;
|
||||
|
||||
iVar4 = param_1->unk0;
|
||||
ptr = &gUnknown_2027370[iVar4];
|
||||
if (param_1->unk1C == 0) {
|
||||
param_1->unk1C++;
|
||||
}
|
||||
param_1->unk20 = param_1->unk22 / param_1->unk1C;
|
||||
iVar2 = (param_1->unk22 % param_1->unk1C);
|
||||
if (iVar2 != 0) {
|
||||
param_1->unk20++;
|
||||
}
|
||||
if (param_1->unk1E > param_1->unk20 - 1) {
|
||||
param_1->unk1E = param_1->unk20 - 1;
|
||||
}
|
||||
if ((param_1->unk1E != param_1->unk20 - 1) || (param_1->unk22 % param_1->unk1C == 0))
|
||||
{
|
||||
param_1->unk1A = param_1->unk1C;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->unk1A = param_1->unk22 % param_1->unk1C;
|
||||
}
|
||||
if (param_1->menuIndex > param_1->unk1A - 1) {
|
||||
param_1->menuIndex = param_1->unk1A - 1;
|
||||
}
|
||||
param_1->unk4 = 0;
|
||||
if (ptr->unkC == 6) {
|
||||
param_1->unk6 = 0x10;
|
||||
}
|
||||
else {
|
||||
param_1->unk6 = 0;
|
||||
}
|
||||
if (param_1->unk20 < 2) {
|
||||
param_1->unkC = 0;
|
||||
}
|
||||
else {
|
||||
param_1->unkC = (ptr->unk0 + ptr->unk04 + -2) * 8;
|
||||
}
|
||||
param_1->unkE = ((ptr->unk2) + 1) * 8 + -2;
|
||||
}
|
||||
|
||||
void sub_8013A54(struct MenuInputStruct *param_1)
|
||||
{
|
||||
if (param_1->unk1E < param_1->unk20 - 1) {
|
||||
param_1->unk1E++;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->unk1E = 0;
|
||||
}
|
||||
sub_8013984(param_1);
|
||||
}
|
||||
|
||||
void sub_8013A7C(struct MenuInputStruct *param_1)
|
||||
{
|
||||
if (param_1->unk1E < 1) {
|
||||
param_1->unk1E = param_1->unk20 - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->unk1E--;
|
||||
}
|
||||
sub_8013984(param_1);
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
#include "constants/input.h"
|
||||
#include "global.h"
|
||||
#include "constants/input.h"
|
||||
#include "input.h"
|
||||
|
||||
|
||||
extern void nullsub_34(struct UnkInputStruct *r0);
|
||||
extern void nullsub_34(struct MenuInputStructSub *r0);
|
||||
u32 sub_8012AE8(void);
|
||||
|
||||
u32 sub_8012A64(struct UnkInputStruct *r0, u32 r1)
|
||||
u32 sub_8012A64(struct MenuInputStructSub *r0, u32 r1)
|
||||
{
|
||||
if(r0 == NULL)
|
||||
{
|
||||
@@ -16,36 +16,39 @@ u32 sub_8012A64(struct UnkInputStruct *r0, u32 r1)
|
||||
{
|
||||
nullsub_34(r0);
|
||||
}
|
||||
if(r0->unk1 != 0)
|
||||
if(r0->a_button != 0)
|
||||
{
|
||||
r0->unk1 = 0;
|
||||
return 1;
|
||||
r0->a_button = 0;
|
||||
return INPUT_A_BUTTON;
|
||||
}
|
||||
if(r0->unk2 == 0)
|
||||
else if(r0->b_button == 0)
|
||||
{
|
||||
return sub_8012AE8();
|
||||
}
|
||||
r0->unk2 = r0->unk1;
|
||||
return 2;
|
||||
else
|
||||
{
|
||||
r0->b_button = 0;
|
||||
return INPUT_B_BUTTON;
|
||||
}
|
||||
}
|
||||
|
||||
u32 GetKeyPress(struct UnkInputStruct *r0)
|
||||
u32 GetKeyPress(struct MenuInputStruct *r0)
|
||||
{
|
||||
if(r0 != NULL)
|
||||
{
|
||||
if(r0->a_button != 0)
|
||||
if(r0->unk28.a_button != 0)
|
||||
{
|
||||
return INPUT_A_BUTTON;
|
||||
}
|
||||
if(r0->b_button != 0)
|
||||
if(r0->unk28.b_button != 0)
|
||||
{
|
||||
return INPUT_B_BUTTON;
|
||||
}
|
||||
if(r0->dpad_left != 0)
|
||||
if(r0->unk28.dpad_left != 0)
|
||||
{
|
||||
return INPUT_DPAD_LEFT;
|
||||
}
|
||||
if(r0->dpad_right != 0)
|
||||
if(r0->unk28.dpad_right != 0)
|
||||
{
|
||||
return INPUT_DPAD_RIGHT;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "code_809447C.h"
|
||||
#include "text_util.h"
|
||||
|
||||
#include "constants/colors.h"
|
||||
#include "constants/monster.h"
|
||||
#include "file_system.h"
|
||||
#include "code_800D090.h"
|
||||
@@ -1451,7 +1452,7 @@ void unk_MovePrintData(struct Move* move, int y) {
|
||||
s32 power;
|
||||
const char* text;
|
||||
|
||||
sub_80078A4(y, 4, 72, 200, 7);
|
||||
sub_80078A4(y, 4, 72, 200, COLOR_WHITE_2);
|
||||
sub_8092D54(gAvailablePokemonNames, move);
|
||||
xxx_format_and_draw(4, 74, gUnknown_810CF00, y, 0);
|
||||
xxx_format_and_draw(4, 86, gPtrTypeText, y, 0);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "constants/input.h"
|
||||
#include "constants/colors.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
@@ -662,17 +663,17 @@ void CreateOptionsMenu(void)
|
||||
case WINDOW_COLOR_BLUE:
|
||||
length = sub_8008ED0(gWindowBGBlueString);
|
||||
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
|
||||
y + 0xA,length,7);
|
||||
y + 0xA,length,COLOR_WHITE_2);
|
||||
break;
|
||||
case WINDOW_COLOR_RED:
|
||||
length = sub_8008ED0(gWindowBGRedString);
|
||||
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
|
||||
y + 0xA,length,7);
|
||||
y + 0xA,length,COLOR_WHITE_2);
|
||||
break;
|
||||
case WINDOW_COLOR_GREEN:
|
||||
length = sub_8008ED0(gWindowBGGreenString);
|
||||
sub_80078A4(gUnknown_203B260->unk44,gUnknown_203B260->optionsMenu->windowColor * 0x28 + 0x50,
|
||||
y + 0xA,length,7);
|
||||
y + 0xA,length,COLOR_WHITE_2);
|
||||
break;
|
||||
}
|
||||
sub_80073E0(gUnknown_203B260->unk44);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "gba/defines.h"
|
||||
#include "global.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "item.h"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "personality_test.h"
|
||||
#include "constants/emotions.h"
|
||||
#include "constants/input.h"
|
||||
@@ -6,7 +7,6 @@
|
||||
#include "random.h"
|
||||
#include "file_system.h"
|
||||
#include "pokemon.h"
|
||||
#include "input.h"
|
||||
#include "save.h"
|
||||
#include "memory.h"
|
||||
#include "game_options.h"
|
||||
@@ -62,16 +62,16 @@ extern void sub_800836C(u32, u8 *r0, u32);
|
||||
extern void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray);
|
||||
|
||||
extern void RedrawPartnerSelectionMenu(void);
|
||||
extern void sub_8013818(struct UnkInputStruct **r0, s32, u32, u32);
|
||||
extern void sub_8013818(struct MenuInputStruct *r0, s32, u32, u32);
|
||||
|
||||
extern u32 GetKeyPress(struct UnkInputStruct **r0);
|
||||
extern u8 sub_80138B8(struct UnkInputStruct **r0, u32);
|
||||
extern u32 GetKeyPress(struct MenuInputStruct *r0);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct *r0, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
|
||||
|
||||
extern void sub_8013984(struct UnkInputStruct **r0);
|
||||
u32 sub_8013800(struct UnkInputStruct **r0, u32);
|
||||
extern void AddMenuCursorSprite(struct UnkInputStruct **r0);
|
||||
extern void sub_8013984(struct MenuInputStruct *r0);
|
||||
u32 sub_8013800(struct MenuInputStruct *r0, u32);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *r0);
|
||||
extern void xxx_call_draw_string(u32 x, u32 y, const char *text, u32, u32);
|
||||
extern u32 sub_80095E4(s16, u32);
|
||||
|
||||
@@ -791,7 +791,7 @@ void CreatePartnerSelectionMenu(s16 starterID)
|
||||
gUnknown_203B404->unkb4[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B404->unk54, 1, 1);
|
||||
sub_8013818(&gUnknown_203B404->unk18, GetValidPartners(), 0xA, gUnknown_203B404->unk4C);
|
||||
sub_8013818(&gUnknown_203B404->input, GetValidPartners(), 0xA, gUnknown_203B404->unk4C);
|
||||
RedrawPartnerSelectionMenu();
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
}
|
||||
@@ -801,17 +801,17 @@ u16 HandlePartnerSelectionInput(void)
|
||||
{
|
||||
s32 partnerID;
|
||||
|
||||
partnerID = gUnknown_203B404->currPartnerSelection;
|
||||
partnerID = gUnknown_203B404->input.menuIndex;
|
||||
gUnknown_203B404->unk16 = 0;
|
||||
if (GetKeyPress(&gUnknown_203B404->unk18) == INPUT_A_BUTTON) {
|
||||
if (GetKeyPress(&gUnknown_203B404->input) == INPUT_A_BUTTON) {
|
||||
PlayMenuSoundEffect(0);
|
||||
return gUnknown_203B404->PartnerArray[gUnknown_203B404->currPartnerSelection];
|
||||
return gUnknown_203B404->PartnerArray[gUnknown_203B404->input.menuIndex];
|
||||
}
|
||||
else {
|
||||
if (sub_80138B8(&gUnknown_203B404->unk18, 1) != '\0') {
|
||||
if (sub_80138B8(&gUnknown_203B404->input, 1) != '\0') {
|
||||
RedrawPartnerSelectionMenu();
|
||||
}
|
||||
if (partnerID != gUnknown_203B404->currPartnerSelection) {
|
||||
if (partnerID != gUnknown_203B404->input.menuIndex) {
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
}
|
||||
if (gUnknown_203B404->unk16 != '\0') {
|
||||
@@ -825,12 +825,12 @@ u16 HandlePartnerSelectionInput(void)
|
||||
|
||||
void sub_803CE34(u8 param_1)
|
||||
{
|
||||
gUnknown_203B404->numPartners = GetValidPartners();
|
||||
sub_8013984(&gUnknown_203B404->unk18);
|
||||
gUnknown_203B404->input.unk22 = GetValidPartners();
|
||||
sub_8013984(&gUnknown_203B404->input);
|
||||
RedrawPartnerSelectionMenu();
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
if (param_1 != 0) {
|
||||
AddMenuCursorSprite(&gUnknown_203B404->unk18);
|
||||
AddMenuCursorSprite(&gUnknown_203B404->input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1006,7 +1006,7 @@ void PersonalityTest_DisplayPartnerSprite(void)
|
||||
u8 *r6;
|
||||
u32 faceIndex;
|
||||
|
||||
partnerID = gUnknown_203B404->PartnerArray[gUnknown_203B404->currPartnerSelection];
|
||||
partnerID = gUnknown_203B404->PartnerArray[gUnknown_203B404->input.menuIndex];
|
||||
sub_8008C54(1);
|
||||
sub_80073B8(1);
|
||||
faceFile = GetDialogueSpriteDataPtr(partnerID);
|
||||
|
||||
@@ -192,7 +192,7 @@ s32 GetBaseSpecies(s16 index) {
|
||||
return index;
|
||||
}
|
||||
|
||||
s32 GetBaseSpeciesNoUnown(s16 index) {
|
||||
s16 GetBaseSpeciesNoUnown(s16 index) {
|
||||
register s32 a1_ asm("r2") = index;
|
||||
if (index == MONSTER_CASTFORM_SNOWY) {
|
||||
return MONSTER_CASTFORM;
|
||||
|
||||
@@ -246,20 +246,21 @@ void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index)
|
||||
sprintfStatic(buffer, gUnknown_8107608, gMonsterParameters[new_index].species); // {COLOR_2 CYAN}%s{END_COLOR_TEXT_2}
|
||||
}
|
||||
|
||||
void sub_808D930(u8 *buffer, s16 index)
|
||||
void sub_808D930(u8 *buffer, s32 index)
|
||||
{
|
||||
char *unownString;
|
||||
s32 unownIndex;
|
||||
const char *preload;
|
||||
s16 index_s16 = index;
|
||||
|
||||
if (GetBaseSpecies(index) == MONSTER_UNOWN) {
|
||||
if (GetBaseSpecies(index_s16) == MONSTER_UNOWN) {
|
||||
preload = gUnknown_8107630; // %s%c
|
||||
unownString = GetMonSpecies(MONSTER_UNOWN);
|
||||
unownIndex = GetUnownIndex(index);
|
||||
unownIndex = GetUnownIndex(index_s16);
|
||||
sprintfStatic(buffer,preload,unownString,gUnownLetters[unownIndex]); // ABCDEFGHIJKLMNOPQRSTUVWXYZ!?
|
||||
}
|
||||
else {
|
||||
sprintfStatic(buffer,gUnknown_8107638, gMonsterParameters[index].species); // %s
|
||||
sprintfStatic(buffer,gUnknown_8107638, gMonsterParameters[index_s16].species); // %s
|
||||
}
|
||||
}
|
||||
|
||||
@@ -376,9 +377,10 @@ u32 GetSize(s16 index)
|
||||
return gMonsterParameters[index].size;
|
||||
}
|
||||
|
||||
u8 GetFriendArea(s16 index)
|
||||
u8 GetFriendArea(s32 index)
|
||||
{
|
||||
return gMonsterParameters[index].friendArea;
|
||||
s16 index_s32 = index;
|
||||
return gMonsterParameters[index_s32].friendArea;
|
||||
}
|
||||
|
||||
u16 GetBaseHP(s16 index)
|
||||
@@ -422,9 +424,10 @@ u8 GetPokemonAbility(s16 index, u32 abilityIndex)
|
||||
return gMonsterParameters[index].abilities[abilityIndex];
|
||||
}
|
||||
|
||||
s16 GetDexInternalNo(s16 index, u32 r1)
|
||||
s16 GetDexInternalNo(s32 index, u32 r1)
|
||||
{
|
||||
return gMonsterParameters[index].dexInternal[r1];
|
||||
s16 index_s16 = index;
|
||||
return gMonsterParameters[index_s16].dexInternal[r1];
|
||||
}
|
||||
|
||||
s16 GetRecruitRate(s16 index)
|
||||
@@ -617,7 +620,7 @@ void sub_808DFDC(s32 a1, struct PokemonStruct2* a2)
|
||||
}
|
||||
}
|
||||
|
||||
void GetPokemonLevelData(struct LevelData* a1, s16 _id, s32 a3)
|
||||
void GetPokemonLevelData(struct LevelData* a1, s16 _id, s32 level)
|
||||
{
|
||||
u8 buffer[12];
|
||||
s32 id = _id;
|
||||
@@ -633,11 +636,11 @@ void GetPokemonLevelData(struct LevelData* a1, s16 _id, s32 a3)
|
||||
DecompressATFile((char*)gLevelCurrentData, 0, file);
|
||||
CloseFile(file);
|
||||
}
|
||||
a3 -= 1;
|
||||
if ( a3 < 0 )
|
||||
a3 = 0;
|
||||
level -= 1;
|
||||
if ( level < 0 )
|
||||
level = 0;
|
||||
|
||||
*a1 = gLevelCurrentData[a3];
|
||||
*a1 = gLevelCurrentData[level];
|
||||
}
|
||||
|
||||
u8* DecompressMoveID(u8* a1, u16* moveID)
|
||||
|
||||
@@ -14,22 +14,8 @@ struct unkStruct_203B2CC
|
||||
{
|
||||
// size: 0xD4;
|
||||
u8 receivedNewsletters[NUM_POKEMON_NEWS];
|
||||
|
||||
u32 unk38;
|
||||
u8 fill3C[0x50 - 0x3C];
|
||||
|
||||
s16 unk50;
|
||||
s16 unk52;
|
||||
s16 unk54;
|
||||
s16 unk56;
|
||||
|
||||
u16 unk58;
|
||||
u16 numPKMNNews;
|
||||
|
||||
u8 fill5C[0x6C - 0x5C];
|
||||
|
||||
struct MenuInputStruct input;
|
||||
u32 unk6C;
|
||||
|
||||
struct UnkTextStruct2 *unk70;
|
||||
struct UnkTextStruct2 unk74[4];
|
||||
};
|
||||
@@ -55,15 +41,7 @@ struct unkStruct_203B2D8
|
||||
{
|
||||
// size: 0xA4
|
||||
u8 unk0[4];
|
||||
u32 unk4;
|
||||
u8 fill8[0x1C - 0x8];
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
s16 unk22;
|
||||
s16 fill24;
|
||||
/* 0x26 */ s16 emptyMailSlots;
|
||||
u8 fill28[0x38 - 0x28];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk38;
|
||||
struct UnkTextStruct2 *unk3C;
|
||||
struct UnkTextStruct2 unk40[4];
|
||||
@@ -180,9 +158,9 @@ extern void CreatePKMNNewsMenu(void);
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 GetKeyPress(u32 *);
|
||||
extern void sub_8013660(u32 *);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern void sub_802BCC4(void);
|
||||
extern void sub_802BB14(u32);
|
||||
extern void sub_801317C(u32 *);
|
||||
@@ -190,7 +168,7 @@ extern u8 HasNoMailinMailbox(void);
|
||||
extern void sub_802BF30(void);
|
||||
extern void CreateMailMenu(void);
|
||||
extern s32 CountEmptyMailSlots(void);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
extern void sub_8013848(struct MenuInputStruct*, s32, u32, u32);
|
||||
void sub_802BB28(void);
|
||||
extern void sub_802BB98(void);
|
||||
extern void sub_802BC08(void);
|
||||
@@ -206,8 +184,8 @@ extern void sub_80073E0(u32);
|
||||
extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, 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);
|
||||
extern void sub_8013984(u32 *);
|
||||
extern s32 sub_8013800(struct MenuInputStruct *, s32);
|
||||
extern void sub_8013984(struct MenuInputStruct *);
|
||||
extern struct PokemonStruct *sub_808D3BC(void);
|
||||
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
|
||||
|
||||
@@ -240,12 +218,12 @@ u32 sub_802B640(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2CC->unk74, 1, 1);
|
||||
|
||||
sub_8013818(&gUnknown_203B2CC->unk38, GetNumPKMNNews(), r2, r0);
|
||||
sub_8013818(&gUnknown_203B2CC->input, GetNumPKMNNews(), r2, r0);
|
||||
|
||||
gUnknown_203B2CC->unk50 = gUnknown_203B2D0;
|
||||
gUnknown_203B2CC->unk56 = gUnknown_203B2D2;
|
||||
gUnknown_203B2CC->input.menuIndex = gUnknown_203B2D0;
|
||||
gUnknown_203B2CC->input.unk1E = gUnknown_203B2D2;
|
||||
|
||||
sub_8013984(&gUnknown_203B2CC->unk38);
|
||||
sub_8013984(&gUnknown_203B2CC->input);
|
||||
sub_802B880();
|
||||
CreatePKMNNewsMenu();
|
||||
|
||||
@@ -257,12 +235,12 @@ u32 sub_802B720(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B2CC->unk38);
|
||||
sub_8013660(&gUnknown_203B2CC->input);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(&gUnknown_203B2CC->unk38))
|
||||
switch(GetKeyPress(&gUnknown_203B2CC->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -274,7 +252,7 @@ u32 sub_802B720(u8 r0)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
}
|
||||
if(sub_80138B8(&gUnknown_203B2CC->unk38, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B2CC->input, 1) != 0)
|
||||
{
|
||||
sub_802B880();
|
||||
CreatePKMNNewsMenu();
|
||||
@@ -287,7 +265,7 @@ u32 sub_802B720(u8 r0)
|
||||
|
||||
u8 GetPokemonNewsIndex(void)
|
||||
{
|
||||
return gUnknown_203B2CC->receivedNewsletters[(gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + gUnknown_203B2CC->unk50];
|
||||
return gUnknown_203B2CC->receivedNewsletters[(gUnknown_203B2CC->input.unk1E * gUnknown_203B2CC->input.unk1C) + gUnknown_203B2CC->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_802B7D0(u8 r0)
|
||||
@@ -295,14 +273,14 @@ void sub_802B7D0(u8 r0)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2CC->unk74, 0, 0);
|
||||
|
||||
gUnknown_203B2CC->numPKMNNews = GetNumPKMNNews();
|
||||
sub_8013984(&gUnknown_203B2CC->unk38);
|
||||
gUnknown_203B2CC->input.unk22 = GetNumPKMNNews();
|
||||
sub_8013984(&gUnknown_203B2CC->input);
|
||||
sub_802B880();
|
||||
CreatePKMNNewsMenu();
|
||||
|
||||
if(r0 != 0)
|
||||
{
|
||||
AddMenuCursorSprite(&gUnknown_203B2CC->unk38);
|
||||
AddMenuCursorSprite(&gUnknown_203B2CC->input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -310,9 +288,9 @@ void sub_802B81C(void)
|
||||
{
|
||||
if(gUnknown_203B2CC != NULL)
|
||||
{
|
||||
gUnknown_203B2D0 = gUnknown_203B2CC->unk50;
|
||||
gUnknown_203B2D0 = gUnknown_203B2CC->input.menuIndex;
|
||||
|
||||
gUnknown_203B2D2 = gUnknown_203B2CC->unk56;
|
||||
gUnknown_203B2D2 = gUnknown_203B2CC->input.unk1E;
|
||||
|
||||
gUnknown_203B2CC->unk74[gUnknown_203B2CC->unk6C] = gUnknown_80DFBD0;
|
||||
|
||||
@@ -380,11 +358,11 @@ void CreatePKMNNewsMenu(void)
|
||||
sub_8008C54(gUnknown_203B2CC->unk6C);
|
||||
sub_80073B8(gUnknown_203B2CC->unk6C);
|
||||
xxx_call_draw_string(0xA, 0, gUnknown_80DFC04, gUnknown_203B2CC->unk6C, 0);
|
||||
sub_8012BC4(((gUnknown_80DFBE8[2] << 3) + 4), 0, gUnknown_203B2CC->unk56 + 1, 2, 7, gUnknown_203B2CC->unk6C);
|
||||
for(index = 0; index < gUnknown_203B2CC->unk52; index++)
|
||||
sub_8012BC4(((gUnknown_80DFBE8[2] << 3) + 4), 0, gUnknown_203B2CC->input.unk1E + 1, 2, 7, gUnknown_203B2CC->unk6C);
|
||||
for(index = 0; index < gUnknown_203B2CC->input.unk1A; index++)
|
||||
{
|
||||
y = sub_8013800(&gUnknown_203B2CC->unk38, index);
|
||||
new_index = (gUnknown_203B2CC->unk56 * gUnknown_203B2CC->unk54) + index;
|
||||
y = sub_8013800(&gUnknown_203B2CC->input, index);
|
||||
new_index = (gUnknown_203B2CC->input.unk1E * gUnknown_203B2CC->input.unk1C) + index;
|
||||
mailIndex = gUnknown_203B2CC->receivedNewsletters[new_index];
|
||||
sub_803B6B0(0xA, y, 6, gUnknown_203B2CC->unk6C);
|
||||
sub_802BC7C();
|
||||
@@ -607,9 +585,9 @@ u32 sub_802BD14(s32 param_1, struct UnkTextStruct2_sub *param_2, u32 param_3)
|
||||
sub_8012D34(gUnknown_203B2D8->unk3C,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40,1,1);
|
||||
sub_8013848(&gUnknown_203B2D8->unk4,CountEmptyMailSlots(),param_3,param_1);
|
||||
gUnknown_203B2D8->unk1C = gUnknown_203B2DC;
|
||||
sub_8013984(&gUnknown_203B2D8->unk4);
|
||||
sub_8013848(&gUnknown_203B2D8->input,CountEmptyMailSlots(),param_3,param_1);
|
||||
gUnknown_203B2D8->input.menuIndex = gUnknown_203B2DC;
|
||||
sub_8013984(&gUnknown_203B2D8->input);
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
return 1;
|
||||
@@ -620,10 +598,10 @@ u32 sub_802BDEC(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B2D8->unk4);
|
||||
sub_8013660(&gUnknown_203B2D8->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B2D8->unk4))
|
||||
switch(GetKeyPress(&gUnknown_203B2D8->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -635,7 +613,7 @@ u32 sub_802BDEC(u8 r0)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B2D8->unk4, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B2D8->input, 1) != 0)
|
||||
{
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
@@ -647,7 +625,7 @@ u32 sub_802BDEC(u8 r0)
|
||||
}
|
||||
|
||||
u8 sub_802BE74(void) {
|
||||
return gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + gUnknown_203B2D8->unk1C];
|
||||
return gUnknown_203B2D8->unk0[(gUnknown_203B2D8->input.unk1E * gUnknown_203B2D8->input.unk1C) + gUnknown_203B2D8->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_802BE94(u8 r0)
|
||||
@@ -655,14 +633,14 @@ void sub_802BE94(u8 r0)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40, 0, 0);
|
||||
|
||||
gUnknown_203B2D8->emptyMailSlots = CountEmptyMailSlots();
|
||||
sub_8013984(&gUnknown_203B2D8->unk4);
|
||||
gUnknown_203B2D8->input.unk22 = CountEmptyMailSlots();
|
||||
sub_8013984(&gUnknown_203B2D8->input);
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
|
||||
if(r0 != 0)
|
||||
{
|
||||
AddMenuCursorSprite(&gUnknown_203B2D8->unk4);
|
||||
AddMenuCursorSprite(&gUnknown_203B2D8->input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -670,7 +648,7 @@ void sub_802BEDC(void)
|
||||
{
|
||||
if(gUnknown_203B2D8 != NULL)
|
||||
{
|
||||
gUnknown_203B2DC = gUnknown_203B2D8->unk1C;
|
||||
gUnknown_203B2DC = gUnknown_203B2D8->input.menuIndex;
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC5C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40, 1, 1);
|
||||
|
||||
@@ -29,8 +29,7 @@ EWRAM_DATA_2 struct PostOfficeHelper *gPostOfficeHelper = {0};
|
||||
struct unkStruct_203B330
|
||||
{
|
||||
// size: 0x78
|
||||
struct UnkInputStruct *unk0;
|
||||
u8 fill4[0x8];
|
||||
struct MenuInputStructSub input;
|
||||
u8 unkC;
|
||||
u8 dungeonIndex;
|
||||
u8 fillE[2];
|
||||
@@ -179,7 +178,7 @@ extern u8 gAvailablePokemonNames[];
|
||||
|
||||
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 u32 sub_8012A64(struct UnkInputStruct**, u32);
|
||||
extern u32 sub_8012A64(struct MenuInputStructSub *, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8031A84();
|
||||
extern void DisplayMissionObjectives();
|
||||
@@ -536,7 +535,7 @@ u32 sub_80319A4(u8 param_1,u8 dungeon,int param_3)
|
||||
gUnknown_203B330 = MemoryAlloc(sizeof(struct unkStruct_203B330),8);
|
||||
gUnknown_203B330->unkC = param_1;
|
||||
gUnknown_203B330->dungeonIndex = dungeon;
|
||||
sub_801317C(&gUnknown_203B330->unk0);
|
||||
sub_801317C(&gUnknown_203B330->input);
|
||||
gUnknown_203B330->unk10 = param_3;
|
||||
gUnknown_203B330->unk14 = &gUnknown_203B330->unk18[param_3];
|
||||
sub_8031A2C();
|
||||
@@ -545,7 +544,7 @@ u32 sub_80319A4(u8 param_1,u8 dungeon,int param_3)
|
||||
|
||||
u32 sub_80319F8(void)
|
||||
{
|
||||
switch(sub_8012A64(&gUnknown_203B330->unk0, gUnknown_203B330->unk10))
|
||||
switch(sub_8012A64(&gUnknown_203B330->input, gUnknown_203B330->unk10))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
|
||||
@@ -273,7 +273,6 @@ extern struct MainMenu *GetMainMenu(void);
|
||||
|
||||
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 *);
|
||||
extern s32 GetDungeonFloorCount(u8);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "gba/defines.h"
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "menu.h"
|
||||
|
||||
@@ -1030,7 +1030,7 @@ bool8 TrapbustOrbAction(struct Entity * pokemon,struct Entity * target)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tile->room == 0xFF) {
|
||||
if (tile->room == CORRIDOR_ROOM) {
|
||||
bottomRightCornerX = target->pos.x - gDungeon->visibilityRange;
|
||||
bottomRightCornerY = target->pos.y - gDungeon->visibilityRange;
|
||||
topLeftCornerX = bottomRightCornerX + gDungeon->visibilityRange;
|
||||
|
||||
@@ -98,23 +98,23 @@ extern void sub_802CAA4(void);
|
||||
extern u8 IsJobSlotEmpty(u8);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_8013C68(u32 *);
|
||||
extern void sub_8013C68(struct MenuInputStruct*);
|
||||
extern void sub_80073E0(u32);
|
||||
extern struct WonderMail* GetJobSlotInfo(u8);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern s32 sub_8013800(struct MenuInputStruct*, u32);
|
||||
extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C *);
|
||||
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
|
||||
extern void CreateRescueTitle(struct unkStruct_802C39C *);
|
||||
|
||||
extern void sub_8013984(u32 *);
|
||||
extern void sub_8013984(struct MenuInputStruct*);
|
||||
extern void sub_802C6DC(void);
|
||||
extern void DrawJobListMenu(void);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern s32 GetKeyPress(void *);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct*);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct*, u32);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct*);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013660(void *);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
extern void sub_8013848(struct MenuInputStruct*, s32, u32, u32);
|
||||
extern bool8 IsPelipperBoardSlotEmpty(u8);
|
||||
extern void SetJobListState(u32);
|
||||
extern void sub_802CC00(void);
|
||||
@@ -176,9 +176,9 @@ bool8 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3)
|
||||
sub_8012D34(gUnknown_203B2E8->unk40,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E8->unk44,1,1);
|
||||
sub_8013848(&gUnknown_203B2E8->unk8,CountAcceptedJobs(),param_3,param_1);
|
||||
gUnknown_203B2E8->unk20 = gUnknown_203B2EC;
|
||||
sub_8013984(&gUnknown_203B2E8->unk8);
|
||||
sub_8013848(&gUnknown_203B2E8->input,CountAcceptedJobs(),param_3,param_1);
|
||||
gUnknown_203B2E8->input.menuIndex = gUnknown_203B2EC;
|
||||
sub_8013984(&gUnknown_203B2E8->input);
|
||||
sub_802C6DC();
|
||||
DrawJobListMenu();
|
||||
return TRUE;
|
||||
@@ -188,11 +188,11 @@ bool8 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3)
|
||||
u32 sub_802C598(u8 param_1)
|
||||
{
|
||||
if (param_1 == '\0') {
|
||||
sub_8013660(&gUnknown_203B2E8->unk8);
|
||||
sub_8013660(&gUnknown_203B2E8->input);
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
switch(GetKeyPress(&gUnknown_203B2E8->unk8))
|
||||
switch(GetKeyPress(&gUnknown_203B2E8->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -204,7 +204,7 @@ u32 sub_802C598(u8 param_1)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
}
|
||||
if (sub_80138B8(&gUnknown_203B2E8->unk8, 1) != '\0') {
|
||||
if (sub_80138B8(&gUnknown_203B2E8->input, 1) != '\0') {
|
||||
sub_802C6DC();
|
||||
DrawJobListMenu();
|
||||
return 1;
|
||||
@@ -217,26 +217,26 @@ u32 sub_802C598(u8 param_1)
|
||||
|
||||
u8 GetPelipperBoardSlotIndex(void)
|
||||
{
|
||||
return gUnknown_203B2E8->pelipperBoardSlots[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + gUnknown_203B2E8->unk20];
|
||||
return gUnknown_203B2E8->pelipperBoardSlots[gUnknown_203B2E8->input.unk1E * gUnknown_203B2E8->input.unk1C + gUnknown_203B2E8->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_802C640(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E8->unk44, 0, 0);
|
||||
gUnknown_203B2E8->acceptedJobs = CountAcceptedJobs();
|
||||
sub_8013984(&gUnknown_203B2E8->unk8);
|
||||
gUnknown_203B2E8->input.unk22 = CountAcceptedJobs();
|
||||
sub_8013984(&gUnknown_203B2E8->input);
|
||||
sub_802C6DC();
|
||||
DrawJobListMenu();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B2E8->unk8);
|
||||
AddMenuCursorSprite(&gUnknown_203B2E8->input);
|
||||
}
|
||||
|
||||
void sub_802C688(void)
|
||||
{
|
||||
if(gUnknown_203B2E8 != NULL)
|
||||
{
|
||||
gUnknown_203B2EC = gUnknown_203B2E8->unk20;
|
||||
gUnknown_203B2EC = gUnknown_203B2E8->input.menuIndex;
|
||||
gUnknown_203B2E8->unk44[gUnknown_203B2E8->unk3C] = gUnknown_80DFCE4;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E8->unk44, 1, 1);
|
||||
@@ -315,19 +315,19 @@ void DrawJobListMenu(void)
|
||||
|
||||
sub_8008C54(gUnknown_203B2E8->unk3C);
|
||||
sub_80073B8(gUnknown_203B2E8->unk3C);
|
||||
r4 = gUnknown_203B2E8->unk26 * 8;
|
||||
r4 = gUnknown_203B2E8->input.unk1E * 8;
|
||||
r5 = r4;
|
||||
r5 += 10;
|
||||
xxx_call_draw_string(r5,0,gUnknown_80DFD14,gUnknown_203B2E8->unk3C,0); // "Job List"
|
||||
r4 += 4;
|
||||
r5 = r4 + gUnknown_203B2E8->unkA4[2] * 8;
|
||||
sub_8012BC4(r5,0,gUnknown_203B2E8->unk26 + 1,2,7,gUnknown_203B2E8->unk3C);
|
||||
sub_8012BC4(r5,0,gUnknown_203B2E8->input.unk1E + 1,2,7,gUnknown_203B2E8->unk3C);
|
||||
|
||||
for(index = 0; index < gUnknown_203B2E8->unk22; index++)
|
||||
for(index = 0; index < gUnknown_203B2E8->input.unk1A; index++)
|
||||
{
|
||||
mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + index]);
|
||||
mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[gUnknown_203B2E8->input.unk1E * gUnknown_203B2E8->input.unk1C + index]);
|
||||
local.unk0[0] = gUnknown_203B2E8->unk3C;
|
||||
local.y = sub_8013800(&gUnknown_203B2E8->unk8,index);
|
||||
local.y = sub_8013800(&gUnknown_203B2E8->input,index);
|
||||
sub_803B35C(mail,&local);
|
||||
CreateRescueTitle(&local);
|
||||
}
|
||||
|
||||
@@ -12,21 +12,21 @@
|
||||
|
||||
bool8 IsMailSlotEmpty(u8);
|
||||
extern void sub_8013984(void *);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
extern void sub_8013848(struct MenuInputStruct *, s32, u32, u32);
|
||||
extern s32 CountPelipperBoardSlots(void);
|
||||
extern void sub_802C328(void);
|
||||
extern void DrawPelipperBoardJobMenu(void);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013660(u32 *);
|
||||
extern s32 GetKeyPress(u32 *);
|
||||
extern bool8 sub_80138B8(u32 *, u32);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern bool8 sub_80138B8(struct MenuInputStruct *, u32);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern u8 HasNoPelipperBoardJobs(void);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
|
||||
extern s32 sub_8013800(u32 *, s32);
|
||||
extern s32 sub_8013800(struct MenuInputStruct *, s32);
|
||||
extern struct WonderMail *GetPelipperBoardSlotInfo(u32);
|
||||
extern void sub_803B35C(struct WonderMail *, u32 *);
|
||||
extern u8 gBulletinBoardText[];
|
||||
@@ -39,37 +39,20 @@ struct unkStruct_203B2D8
|
||||
{
|
||||
// size: 0xA4
|
||||
u8 unk0[4];
|
||||
u32 unk4;
|
||||
u8 fill8[0x1C - 0x8];
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
s16 unk22;
|
||||
s16 fill24;
|
||||
/* 0x26 */ s16 emptyMailSlots;
|
||||
u8 fill28[0x38 - 0x28];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk38;
|
||||
struct UnkTextStruct2 *unk3C;
|
||||
struct UnkTextStruct2 unk40[4];
|
||||
u8 unkA0[4];
|
||||
};
|
||||
|
||||
|
||||
extern struct unkStruct_203B2D8 *gUnknown_203B2D8;
|
||||
|
||||
struct unkStruct_203B2E0
|
||||
{
|
||||
// size: 0xA8
|
||||
u8 unk0[0x8];
|
||||
u32 unk8;
|
||||
u8 unkC[0x20 - 0xC];
|
||||
s16 unk20;
|
||||
s16 unk22;
|
||||
s16 unk24;
|
||||
s16 unk26;
|
||||
s16 unk28;
|
||||
s16 pelipperBoardSlots;
|
||||
u8 fill22[0x3C - 0x2C];
|
||||
struct MenuInputStruct input;
|
||||
s32 unk3C;
|
||||
struct UnkTextStruct2 *unk40;
|
||||
struct UnkTextStruct2 unk44[4];
|
||||
@@ -99,13 +82,13 @@ void CreateMailMenu(void)
|
||||
|
||||
sub_8008C54(gUnknown_203B2D8->unk38);
|
||||
sub_80073B8(gUnknown_203B2D8->unk38);
|
||||
xxx_call_draw_string(gUnknown_203B2D8->unk22 * 8 + 10,0,gMailboxText,gUnknown_203B2D8->unk38,0);
|
||||
for (index = 0; index < gUnknown_203B2D8->unk1E; index++) {
|
||||
mail = GetMailboxSlotInfo(gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + index]);
|
||||
xxx_call_draw_string(gUnknown_203B2D8->input.unk1E * 8 + 10,0,gMailboxText,gUnknown_203B2D8->unk38,0);
|
||||
for (index = 0; index < gUnknown_203B2D8->input.unk1A; index++) {
|
||||
mail = GetMailboxSlotInfo(gUnknown_203B2D8->unk0[(gUnknown_203B2D8->input.unk1E * gUnknown_203B2D8->input.unk1C) + index]);
|
||||
local.unk0[0] = gUnknown_203B2D8->unk38;
|
||||
local.y = sub_8013800(&gUnknown_203B2D8->unk4, index);
|
||||
local.y = sub_8013800(&gUnknown_203B2D8->input, index);
|
||||
if (mail->mailType == MAIL_TYPE_UNK1) {
|
||||
y = sub_8013800(&gUnknown_203B2D8->unk4, index);
|
||||
y = sub_8013800(&gUnknown_203B2D8->input, index);
|
||||
sub_803B6B0(10,y,6,gUnknown_203B2D8->unk38);
|
||||
PrintPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct());
|
||||
sprintfStatic(buffer, GetPokemonMailHeadline(mail->dungeon.floor), gAvailablePokemonNames);
|
||||
@@ -173,9 +156,9 @@ bool8 sub_802C10C(s32 param_1,struct UnkTextStruct2_sub *param_2,s32 param_3)
|
||||
sub_8012D34(gUnknown_203B2E0->unk40,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E0->unk44,1,1);
|
||||
sub_8013848(&gUnknown_203B2E0->unk8,CountPelipperBoardSlots(),param_3,param_1);
|
||||
gUnknown_203B2E0->unk20 = gUnknown_203B2E4;
|
||||
sub_8013984(&gUnknown_203B2E0->unk8);
|
||||
sub_8013848(&gUnknown_203B2E0->input,CountPelipperBoardSlots(),param_3,param_1);
|
||||
gUnknown_203B2E0->input.menuIndex = gUnknown_203B2E4;
|
||||
sub_8013984(&gUnknown_203B2E0->input);
|
||||
sub_802C328();
|
||||
DrawPelipperBoardJobMenu();
|
||||
return TRUE;
|
||||
@@ -185,11 +168,11 @@ bool8 sub_802C10C(s32 param_1,struct UnkTextStruct2_sub *param_2,s32 param_3)
|
||||
u32 sub_802C1E4(u8 param_1)
|
||||
{
|
||||
if (param_1 == '\0') {
|
||||
sub_8013660(&gUnknown_203B2E0->unk8);
|
||||
sub_8013660(&gUnknown_203B2E0->input);
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
switch(GetKeyPress(&gUnknown_203B2E0->unk8))
|
||||
switch(GetKeyPress(&gUnknown_203B2E0->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -201,7 +184,7 @@ u32 sub_802C1E4(u8 param_1)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if (sub_80138B8(&gUnknown_203B2E0->unk8,1)) {
|
||||
if (sub_80138B8(&gUnknown_203B2E0->input,1)) {
|
||||
sub_802C328();
|
||||
DrawPelipperBoardJobMenu();
|
||||
return 1;
|
||||
@@ -215,26 +198,26 @@ u32 sub_802C1E4(u8 param_1)
|
||||
|
||||
u8 sub_802C26C(void)
|
||||
{
|
||||
return gUnknown_203B2E0->unk0[(gUnknown_203B2E0->unk26 * gUnknown_203B2E0->unk24) + gUnknown_203B2E0->unk20];
|
||||
return gUnknown_203B2E0->unk0[(gUnknown_203B2E0->input.unk1E * gUnknown_203B2E0->input.unk1C) + gUnknown_203B2E0->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_802C28C(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E0->unk44, 0, 0);
|
||||
gUnknown_203B2E0->pelipperBoardSlots = CountPelipperBoardSlots();
|
||||
sub_8013984(&gUnknown_203B2E0->unk8);
|
||||
gUnknown_203B2E0->input.unk22 = CountPelipperBoardSlots();
|
||||
sub_8013984(&gUnknown_203B2E0->input);
|
||||
sub_802C328();
|
||||
DrawPelipperBoardJobMenu();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B2E0->unk8);
|
||||
AddMenuCursorSprite(&gUnknown_203B2E0->input);
|
||||
}
|
||||
|
||||
void sub_802C2D4(void)
|
||||
{
|
||||
if(gUnknown_203B2E0 != NULL)
|
||||
{
|
||||
gUnknown_203B2E4 = gUnknown_203B2E0->unk20;
|
||||
gUnknown_203B2E4 = gUnknown_203B2E0->input.menuIndex;
|
||||
gUnknown_203B2E0->unk44[gUnknown_203B2E0->unk3C] = gUnknown_80DFC9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2E0->unk44, 1, 1);
|
||||
@@ -314,20 +297,20 @@ void DrawPelipperBoardJobMenu(void)
|
||||
|
||||
sub_8008C54(gUnknown_203B2E0->unk3C);
|
||||
sub_80073B8(gUnknown_203B2E0->unk3C);
|
||||
iVar4 = gUnknown_203B2E0->unk26 * 8;
|
||||
iVar4 = gUnknown_203B2E0->input.unk1E * 8;
|
||||
x = iVar4;
|
||||
x += 10;
|
||||
xxx_call_draw_string(x,0,gBulletinBoardText,gUnknown_203B2E0->unk3C,0);
|
||||
iVar4 += 4;
|
||||
x = iVar4 + gUnknown_203B2E0->unkA4[2] * 8;
|
||||
sub_8012BC4(x,0,gUnknown_203B2E0->unk26 + 1,2,7,gUnknown_203B2E0->unk3C);
|
||||
sub_8012BC4(x,0,gUnknown_203B2E0->input.unk1E + 1,2,7,gUnknown_203B2E0->unk3C);
|
||||
|
||||
for(index = 0; index < gUnknown_203B2E0->unk22; index++)
|
||||
for(index = 0; index < gUnknown_203B2E0->input.unk1A; index++)
|
||||
{
|
||||
slotIndex = (gUnknown_203B2E0->unk0[gUnknown_203B2E0->unk26 * gUnknown_203B2E0->unk24 + index]);
|
||||
slotIndex = (gUnknown_203B2E0->unk0[gUnknown_203B2E0->input.unk1E * gUnknown_203B2E0->input.unk1C + index]);
|
||||
mail = GetPelipperBoardSlotInfo(slotIndex);
|
||||
local.unk0[0] = gUnknown_203B2E0->unk3C;
|
||||
local.y = sub_8013800(&gUnknown_203B2E0->unk8,index);
|
||||
local.y = sub_8013800(&gUnknown_203B2E0->input,index);
|
||||
sub_803B35C(mail,local.unk0);
|
||||
if (IsMailinJobSlot(GetPelipperBoardSlotInfo(slotIndex))) {
|
||||
local.unk43 = 2;
|
||||
|
||||
@@ -154,17 +154,17 @@ extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueTitle(struct unkStruct_802C39C *);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern s32 sub_8013800(struct MenuInputStruct *, u32);
|
||||
extern u8 gUnknown_80DFDBC[];
|
||||
extern void sub_802CF5C(void);
|
||||
extern void sub_802CFD0(void);
|
||||
extern void sub_8013984(void *);
|
||||
extern void AddMenuCursorSprite(void *);
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern void sub_8013660(void *);
|
||||
extern u32 GetKeyPress(void *);
|
||||
extern void sub_8013984(struct MenuInputStruct *);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct *, u32);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
extern u32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013848(void *, s32, u32, u32);
|
||||
extern void sub_8013848(struct MenuInputStruct *, s32, u32, u32);
|
||||
|
||||
extern void sub_802DF24(void);
|
||||
extern void SetJobListState(u32);
|
||||
@@ -375,7 +375,7 @@ bool8 sub_802CDD4(u32 r0)
|
||||
sub_8012D34(gUnknown_203B2F4->unk38, 4);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2F4->unk3C, 1, 1);
|
||||
sub_8013848(gUnknown_203B2F4, 5, 4, r0);
|
||||
sub_8013848(&gUnknown_203B2F4->input, 5, 4, r0);
|
||||
sub_802CF5C();
|
||||
sub_802CFD0();
|
||||
return TRUE;
|
||||
@@ -385,12 +385,12 @@ u32 sub_802CE5C(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(gUnknown_203B2F4);
|
||||
sub_8013660(&gUnknown_203B2F4->input);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B2F4))
|
||||
switch(GetKeyPress(&gUnknown_203B2F4->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -398,7 +398,7 @@ u32 sub_802CE5C(u8 r0)
|
||||
case INPUT_A_BUTTON:
|
||||
return 3;
|
||||
default:
|
||||
if(sub_80138B8(gUnknown_203B2F4, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B2F4->input, 1) != 0)
|
||||
{
|
||||
sub_802CF5C();
|
||||
sub_802CFD0();
|
||||
@@ -414,18 +414,18 @@ u32 sub_802CE5C(u8 r0)
|
||||
|
||||
u8 sub_802CEBC(void)
|
||||
{
|
||||
return (gUnknown_203B2F4->unk1E * gUnknown_203B2F4->unk1C) + gUnknown_203B2F4->unk18;
|
||||
return (gUnknown_203B2F4->input.unk1E * gUnknown_203B2F4->input.unk1C) + gUnknown_203B2F4->input.menuIndex;
|
||||
}
|
||||
|
||||
void sub_802CED8(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2F4->unk3C, 0, 0);
|
||||
sub_8013984(gUnknown_203B2F4);
|
||||
sub_8013984(&gUnknown_203B2F4->input);
|
||||
sub_802CF5C();
|
||||
sub_802CFD0();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(gUnknown_203B2F4);
|
||||
AddMenuCursorSprite(&gUnknown_203B2F4->input);
|
||||
}
|
||||
|
||||
void sub_802CF14(void)
|
||||
@@ -510,17 +510,17 @@ void sub_802CFD0(void)
|
||||
|
||||
sub_8008C54(gUnknown_203B2F4->unk34);
|
||||
sub_80073B8(gUnknown_203B2F4->unk34);
|
||||
r5 = r4 = gUnknown_203B2F4->unk1E * 8 + 10;
|
||||
r5 = r4 = gUnknown_203B2F4->input.unk1E * 8 + 10;
|
||||
xxx_call_draw_string(r5,0,gUnknown_80DFDBC,gUnknown_203B2F4->unk34,0); // RESCUE EVENT
|
||||
r4 -= 6;
|
||||
r5 = r4 + (gUnknown_203B2F4->unk9C[2] * 8);
|
||||
sub_8012BC4(r5,0,gUnknown_203B2F4->unk1E + 1,2,7,gUnknown_203B2F4->unk34);
|
||||
sub_8012BC4(r5,0,gUnknown_203B2F4->input.unk1E + 1,2,7,gUnknown_203B2F4->unk34);
|
||||
|
||||
for(r5 = 0; r5 < gUnknown_203B2F4->unk1A; r5++)
|
||||
for(r5 = 0; r5 < gUnknown_203B2F4->input.unk1A; r5++)
|
||||
{
|
||||
iVar1 = sub_803B344(gUnknown_203B2F4->unk1E * gUnknown_203B2F4->unk1C + r5);
|
||||
iVar1 = sub_803B344(gUnknown_203B2F4->input.unk1E * gUnknown_203B2F4->input.unk1C + r5);
|
||||
local.unk0[0] = gUnknown_203B2F4->unk34;
|
||||
local.y = sub_8013800(gUnknown_203B2F4, r5);
|
||||
local.y = sub_8013800(&gUnknown_203B2F4->input, r5);
|
||||
sub_803B35C(&iVar1->mail,&local);
|
||||
local.unk43 = 1;
|
||||
local.unk4C = iVar1->unk14;
|
||||
|
||||
@@ -69,15 +69,7 @@ struct unkStruct_203B314
|
||||
u8 unkB9;
|
||||
u8 unkBA;
|
||||
u8 unkBB;
|
||||
u32 unkBC;
|
||||
u8 fillC0[0xD4 - 0xC0];
|
||||
s16 unkD4;
|
||||
s16 unkD6;
|
||||
s16 unkD8;
|
||||
s16 unkDA;
|
||||
s16 unkDC;
|
||||
s16 unkDE;
|
||||
u8 fillDF[0xF0 - 0xE0];
|
||||
struct MenuInputStruct input;
|
||||
u32 unkF0;
|
||||
struct UnkTextStruct2 *unkF4;
|
||||
struct UnkTextStruct2 unkF8[4];
|
||||
@@ -103,12 +95,12 @@ enum FriendRewardStates {
|
||||
extern u8 sub_802FCF0(u32);
|
||||
extern void sub_802F9C0(void);
|
||||
extern void sub_802FA50(void);
|
||||
extern void sub_8013818(u32 *, u32, u32, u32);
|
||||
extern void sub_8013818(struct MenuInputStruct*, u32, u32, u32);
|
||||
extern u32 sub_802FBF4(void);
|
||||
extern void sub_8013878(u32 *, s32);
|
||||
extern void sub_8013878(struct MenuInputStruct *, s32);
|
||||
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern void sub_8013984(u32 *);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern void sub_8013984(struct MenuInputStruct *);
|
||||
extern void SetRewardSceneState(u32);
|
||||
extern void sub_802EFEC(u32);
|
||||
extern void sub_802F148(void);
|
||||
@@ -134,9 +126,9 @@ extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
|
||||
extern struct PokemonStruct *GetPlayerPokemonStruct(void);
|
||||
extern void sub_802F6FC(void);
|
||||
extern void ProceedToNextRewardSceneState(void);
|
||||
extern u8 sub_80138B8(u32 *, u32);
|
||||
extern void sub_8013660(u32 *);
|
||||
extern u32 GetKeyPress(u32 *);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct*, u32);
|
||||
extern void sub_8013660(struct MenuInputStruct *);
|
||||
extern u32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_802F300(void);
|
||||
extern void PlaySound(u32);
|
||||
@@ -145,7 +137,7 @@ extern void sub_80141B4(const u8 *, u32, struct OpenedFile **, u32);
|
||||
extern u32 sub_801B60C(u32, u8, u8);
|
||||
extern void sub_8092578(u8 *buffer, u8 index, u8 r2);
|
||||
void HandleMissionReward(void);
|
||||
extern s32 sub_8013800(u32 *, s32);
|
||||
extern s32 sub_8013800(struct MenuInputStruct *, s32);
|
||||
extern void xxx_call_draw_string(s32, s32, const u8 *, s32, s32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
@@ -754,7 +746,7 @@ u32 sub_802F73C(u32 r0, struct UnkTextStruct2_sub *r1, u32 r2, u8 r3)
|
||||
sub_8012D08(gUnknown_203B314->unkF4, r2);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B314->unkF8, 1, 1);
|
||||
sub_8013818(&gUnknown_203B314->unkBC, sub_802FBF4(), r2, r0);
|
||||
sub_8013818(&gUnknown_203B314->input, sub_802FBF4(), r2, r0);
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
return 1;
|
||||
@@ -768,15 +760,15 @@ u32 sub_802F848(s16 param_1)
|
||||
|
||||
param_1_32 = param_1; // cast needed
|
||||
|
||||
for( index = 0; index < gUnknown_203B314->unkDE; index++ ) {
|
||||
for( index = 0; index < gUnknown_203B314->input.unk22; index++ ) {
|
||||
if (gUnknown_203B314->unk0[index] == param_1_32) {
|
||||
sub_8013878(&gUnknown_203B314->unkBC,index);
|
||||
sub_8013878(&gUnknown_203B314->input,index);
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
sub_8013878(&gUnknown_203B314->unkBC,0);
|
||||
sub_8013878(&gUnknown_203B314->input,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -784,12 +776,12 @@ u32 sub_802F8A0(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B314->unkBC);
|
||||
sub_8013660(&gUnknown_203B314->input);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(GetKeyPress(&gUnknown_203B314->unkBC))
|
||||
switch(GetKeyPress(&gUnknown_203B314->input))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
@@ -798,7 +790,7 @@ u32 sub_802F8A0(u8 r0)
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B314->unkBC, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B314->input, 1) != 0)
|
||||
{
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
@@ -814,18 +806,18 @@ u32 sub_802F8A0(u8 r0)
|
||||
|
||||
s16 sub_802F90C(void)
|
||||
{
|
||||
return gUnknown_203B314->unk0[(gUnknown_203B314->unkDA * gUnknown_203B314->unkD8) + gUnknown_203B314->unkD4];
|
||||
return gUnknown_203B314->unk0[(gUnknown_203B314->input.unk1E * gUnknown_203B314->input.unk1C) + gUnknown_203B314->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_802F938(u8 r0)
|
||||
{
|
||||
gUnknown_203B314->unkDE = sub_802FBF4();
|
||||
sub_8013984(&gUnknown_203B314->unkBC);
|
||||
gUnknown_203B314->input.unk22 = sub_802FBF4();
|
||||
sub_8013984(&gUnknown_203B314->input);
|
||||
sub_802F9C0();
|
||||
sub_802FA50();
|
||||
|
||||
if(r0 != 0)
|
||||
AddMenuCursorSprite(&gUnknown_203B314->unkBC);
|
||||
AddMenuCursorSprite(&gUnknown_203B314->input);
|
||||
}
|
||||
|
||||
void sub_802F974(void)
|
||||
@@ -925,12 +917,12 @@ void sub_802FA50(void)
|
||||
sub_8008C54(gUnknown_203B314->unkF0);
|
||||
sub_80073B8(gUnknown_203B314->unkF0);
|
||||
xxx_call_draw_string(10,0,gUnknown_80E0744,gUnknown_203B314->unkF0,0);
|
||||
sub_8012BC4(gUnknown_203B314->unk158[2] * 8 + 4,0,gUnknown_203B314->unkDA + 1,2,7,gUnknown_203B314->unkF0);
|
||||
sub_8012BC4(gUnknown_203B314->unk158[2] * 8 + 4,0,gUnknown_203B314->input.unk1E + 1,2,7,gUnknown_203B314->unkF0);
|
||||
if (gUnknown_203B314->unkB8 != 0) {
|
||||
for(counter = 0; counter < gUnknown_203B314->unkD6; counter++)
|
||||
for(counter = 0; counter < gUnknown_203B314->input.unk1A; counter++)
|
||||
{
|
||||
y = sub_8013800(&gUnknown_203B314->unkBC,counter);
|
||||
index = gUnknown_203B314->unkDA * gUnknown_203B314->unkD8 + counter;
|
||||
y = sub_8013800(&gUnknown_203B314->input,counter);
|
||||
index = gUnknown_203B314->input.unk1E * gUnknown_203B314->input.unk1C + counter;
|
||||
sVar1 = gUnknown_203B314->unk0[index];
|
||||
if (gUnknown_203B314->unk5C[index] != 0) {
|
||||
xxx_call_draw_string(10,y,gUnknown_80E0750,gUnknown_203B314->unkF0,0);
|
||||
@@ -942,10 +934,10 @@ void sub_802FA50(void)
|
||||
}
|
||||
}
|
||||
else {
|
||||
for(counter = 0; counter < gUnknown_203B314->unkD6; counter++)
|
||||
for(counter = 0; counter < gUnknown_203B314->input.unk1A; counter++)
|
||||
{
|
||||
y2 = sub_8013800(&gUnknown_203B314->unkBC,counter);
|
||||
text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->unkDA * gUnknown_203B314->unkD8 + counter]);
|
||||
y2 = sub_8013800(&gUnknown_203B314->input,counter);
|
||||
text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->input.unk1E * gUnknown_203B314->input.unk1C + counter]);
|
||||
xxx_call_draw_string(8,y2,text,gUnknown_203B314->unkF0,0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,15 +15,7 @@ struct unkStruct_203B320
|
||||
// size: 0xC4
|
||||
u8 unk0[0x20];
|
||||
u32 wonderMailType;
|
||||
u32 unk24;
|
||||
u8 fill28[0x3C - 0x28];
|
||||
s16 unk3C;
|
||||
s16 unk3E;
|
||||
s16 unk40;
|
||||
s16 unk42;
|
||||
s16 unk44;
|
||||
s16 unk46;
|
||||
u8 fill48[0x58 - 0x48];
|
||||
struct MenuInputStruct input;
|
||||
u32 unk58;
|
||||
struct UnkTextStruct2 *unk5C;
|
||||
struct UnkTextStruct2 unk60[4];
|
||||
@@ -88,15 +80,15 @@ extern s32 sub_8030A74(void);
|
||||
extern void sub_80308A0(void);
|
||||
extern void sub_803092C(void);
|
||||
extern void sub_8012D08(struct UnkTextStruct2 *, s32);
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern void sub_8013818(struct MenuInputStruct*, u32, u32, u32);
|
||||
|
||||
extern u8 sub_80138B8(u32 *, u32);
|
||||
extern void sub_8013660(u32 *);
|
||||
extern s32 GetKeyPress(u32 *);
|
||||
extern u8 sub_80138B8(struct MenuInputStruct*, u32);
|
||||
extern void sub_8013660(struct MenuInputStruct*);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct*);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013984(u32 *);
|
||||
extern void AddMenuCursorSprite(u32 *);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern void sub_8013984(struct MenuInputStruct*);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct*);
|
||||
extern s32 sub_8013800(struct MenuInputStruct*, u32);
|
||||
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
@@ -126,7 +118,7 @@ u32 sub_80306A8(u32 wonderMailType, u32 r1, struct UnkTextStruct2_sub *r2, u32 r
|
||||
sub_8012D08(gUnknown_203B320->unk5C, r3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B320->unk60, 1, 1);
|
||||
sub_8013818(&gUnknown_203B320->unk24, sub_8030A74(), r3, r1);
|
||||
sub_8013818(&gUnknown_203B320->input, sub_8030A74(), r3, r1);
|
||||
sub_80308A0();
|
||||
sub_803092C();
|
||||
return 1;
|
||||
@@ -136,10 +128,10 @@ u32 sub_8030768(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B320->unk24);
|
||||
sub_8013660(&gUnknown_203B320->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B320->unk24))
|
||||
switch(GetKeyPress(&gUnknown_203B320->input))
|
||||
{
|
||||
case INPUT_START_BUTTON:
|
||||
PlayMenuSoundEffect(4);
|
||||
@@ -151,7 +143,7 @@ u32 sub_8030768(u8 r0)
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B320->unk24, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B320->input, 1) != 0)
|
||||
{
|
||||
sub_80308A0();
|
||||
sub_803092C();
|
||||
@@ -164,18 +156,18 @@ u32 sub_8030768(u8 r0)
|
||||
|
||||
u8 sub_80307EC(void)
|
||||
{
|
||||
return gUnknown_203B320->unk0[(gUnknown_203B320->unk42 * gUnknown_203B320->unk40) + gUnknown_203B320->unk3C];
|
||||
return gUnknown_203B320->unk0[(gUnknown_203B320->input.unk1E * gUnknown_203B320->input.unk1C) + gUnknown_203B320->input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_8030810(u8 r0)
|
||||
{
|
||||
gUnknown_203B320->unk46 = sub_8030A74();
|
||||
sub_8013984(&gUnknown_203B320->unk24);
|
||||
gUnknown_203B320->input.unk22 = sub_8030A74();
|
||||
sub_8013984(&gUnknown_203B320->input);
|
||||
|
||||
sub_80308A0();
|
||||
sub_803092C();
|
||||
if(r0 != 0)
|
||||
AddMenuCursorSprite(&gUnknown_203B320->unk24);
|
||||
AddMenuCursorSprite(&gUnknown_203B320->input);
|
||||
}
|
||||
|
||||
void sub_803084C()
|
||||
@@ -275,18 +267,18 @@ void sub_803092C(void)
|
||||
|
||||
sub_8008C54(gUnknown_203B320->unk58);
|
||||
sub_80073B8(gUnknown_203B320->unk58);
|
||||
r4 = gUnknown_203B320->unk42 * 8;
|
||||
r4 = gUnknown_203B320->input.unk1E * 8;
|
||||
r5 = r4;
|
||||
r5 += 10;
|
||||
xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailType],gUnknown_203B320->unk58,0);
|
||||
r4 += 4;
|
||||
r5 = r4 + gUnknown_203B320->unkC0[2] * 8;
|
||||
sub_8012BC4(r5,0,gUnknown_203B320->unk42 + 1,1,7,gUnknown_203B320->unk58);
|
||||
sub_8012BC4(r5,0,gUnknown_203B320->input.unk1E + 1,1,7,gUnknown_203B320->unk58);
|
||||
|
||||
for (index = 0; index < gUnknown_203B320->unk3E; index++) {
|
||||
mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->unk42 * gUnknown_203B320->unk40) + index]);
|
||||
for (index = 0; index < gUnknown_203B320->input.unk1A; index++) {
|
||||
mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->input.unk1E * gUnknown_203B320->input.unk1C) + index]);
|
||||
local.unk0[0] = gUnknown_203B320->unk58;
|
||||
local.y = sub_8013800(&gUnknown_203B320->unk24,index);
|
||||
local.y = sub_8013800(&gUnknown_203B320->input,index);
|
||||
local.unk40 = 7;
|
||||
local.unk42 = 0;
|
||||
local.unk44 = 0;
|
||||
|
||||
@@ -118,7 +118,7 @@ struct unkStruct_203B3E8
|
||||
bool8 wonderMailAccepted;
|
||||
};
|
||||
|
||||
EWRAM_DATA struct unkStruct_203B3E8 *gUnknown_203B3E8;
|
||||
EWRAM_DATA_2 struct unkStruct_203B3E8 *gUnknown_203B3E8 = {0};
|
||||
|
||||
extern u32 sub_80144A4(s32 *);
|
||||
extern u32 sub_8011C1C(void);
|
||||
|
||||
@@ -167,10 +167,7 @@ gUnknown_202B034: /* 202B034 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_202B038: /* 202B038 */
|
||||
.space 0x2
|
||||
|
||||
gUnknown_202B03A: /* 202B03A */
|
||||
.space 0x7FE
|
||||
.space 0x800
|
||||
|
||||
gUnknown_202B838: /* 202B838 */
|
||||
.space 0x800
|
||||
@@ -829,9 +826,8 @@ gUnknown_20393C0: /* 20393C0 */
|
||||
gUnknown_2039448: /* 2039448 */
|
||||
.space 0x330
|
||||
|
||||
gUnknown_2039778: /* 2039778 */
|
||||
.space 0xC8
|
||||
|
||||
.include "src/code_8097670.o"
|
||||
.space 0x4
|
||||
.include "src/exclusive_pokemon.o"
|
||||
.space 0x4
|
||||
|
||||
|
||||
@@ -341,9 +341,7 @@ gUnknown_203B2FC: /* 203B2FC */
|
||||
gUnknown_203B300: /* 203B300 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B304: /* 203B304 */
|
||||
.space 0x4
|
||||
|
||||
.include "src/mailbox.o"
|
||||
.include "src/pelipper_board.o"
|
||||
|
||||
gUnknown_203B30C: /* 203B30C */
|
||||
@@ -371,10 +369,7 @@ gUnknown_203B328: /* 203B328 */
|
||||
.space 0x4
|
||||
|
||||
.include "src/post_office_guide.o"
|
||||
|
||||
gUnknown_203B334: /* 203B334 */
|
||||
.space 0x4
|
||||
|
||||
.include "src/code_8031D70.o"
|
||||
.include "src/adventure_log.o"
|
||||
.include "src/friend_rescue.o"
|
||||
|
||||
@@ -398,14 +393,9 @@ gUnknown_203B364: /* 203B364 */
|
||||
.space 0x4
|
||||
|
||||
.include "src/rescue_password_menu.o"
|
||||
|
||||
.include "src/load_screen.o"
|
||||
|
||||
gUnknown_203B3E8: /* 203B3E8 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B3EC: /* 203B3EC */
|
||||
.space 0x4
|
||||
.include "src/wonder_mail_main_menu.o"
|
||||
.include "src/debug_menu.o"
|
||||
|
||||
gUnknown_203B3F0: /* 203B3F0 */
|
||||
.space 0x4
|
||||
@@ -484,27 +474,10 @@ gUnknown_203B474: /* 203B474 */
|
||||
.space 0x8
|
||||
|
||||
.include "src/play_time.o"
|
||||
|
||||
gUnknown_203B480: /* 203B480 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B484: /* 203B484 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B488: /* 203B488 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B48C: /* 203B48C */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B490: /* 203B490 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B494: /* 203B494 */
|
||||
.space 0x4
|
||||
|
||||
.include "src/code_8094F88.o"
|
||||
.include "src/code_80958E8.o"
|
||||
.include "src/code_8097670.o"
|
||||
.include "src/exclusive_pokemon.o"
|
||||
|
||||
.include "src/ground_main.o"
|
||||
.space 0x2
|
||||
|
||||
@@ -520,5 +493,4 @@ gUnknown_203B4B0: /* 203B4B0 */
|
||||
gUnknown_203B4B4: /* 203B4B4 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B4B8: /* 203B4B8 */
|
||||
.space 0x4
|
||||
.include "src/ground_link.o"
|
||||
|
||||
Reference in New Issue
Block a user