mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-01 08:50:01 +01:00
Merge branch 'master' into item_expansion
This commit is contained in:
commit
d9fc6d36be
@ -5,847 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_802C838
|
||||
sub_802C838: @ 802C838
|
||||
push {r4-r6,lr}
|
||||
movs r5, 0
|
||||
movs r4, 0
|
||||
ldr r3, =gUnknown_02022CFC
|
||||
ldr r0, [r3]
|
||||
ldr r2, =gUnknown_082FB714
|
||||
ldr r1, [r0, 0x78]
|
||||
ldr r0, [r2]
|
||||
cmp r1, r0
|
||||
bcc _0802C874
|
||||
ldr r5, [r2, 0x4]
|
||||
adds r6, r3, 0
|
||||
adds r3, r2, 0x4
|
||||
_0802C852:
|
||||
adds r3, 0x8
|
||||
adds r2, 0x8
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x4
|
||||
bhi _0802C874
|
||||
ldr r0, [r6]
|
||||
ldr r1, [r0, 0x78]
|
||||
ldr r0, [r2]
|
||||
cmp r1, r0
|
||||
bcc _0802C874
|
||||
ldr r5, [r3]
|
||||
b _0802C852
|
||||
.pool
|
||||
_0802C874:
|
||||
lsls r0, r5, 16
|
||||
lsrs r0, 16
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802C838
|
||||
|
||||
thumb_func_start sub_802C880
|
||||
sub_802C880: @ 802C880
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
lsls r1, 16
|
||||
lsrs r4, r1, 16
|
||||
b _0802C892
|
||||
_0802C88C:
|
||||
subs r0, r4, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
_0802C892:
|
||||
cmp r4, 0
|
||||
beq _0802C8A4
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl CheckBagHasSpace
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802C88C
|
||||
_0802C8A4:
|
||||
adds r0, r4, 0
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802C880
|
||||
|
||||
thumb_func_start sub_802C8AC
|
||||
sub_802C8AC: @ 802C8AC
|
||||
push {lr}
|
||||
bl GetLinkPlayerCount
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802C8AC
|
||||
|
||||
thumb_func_start sub_802C8BC
|
||||
sub_802C8BC: @ 802C8BC
|
||||
ldr r0, =gUnknown_02022CFC
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x6]
|
||||
bx lr
|
||||
.pool
|
||||
thumb_func_end sub_802C8BC
|
||||
|
||||
thumb_func_start sub_802C8C8
|
||||
sub_802C8C8: @ 802C8C8
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, =gUnknown_02022CFC
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
ldr r0, =0x000082a8
|
||||
adds r1, r0
|
||||
ldr r0, [r2]
|
||||
adds r0, r1
|
||||
bx lr
|
||||
.pool
|
||||
thumb_func_end sub_802C8C8
|
||||
|
||||
thumb_func_start sub_802C8E8
|
||||
sub_802C8E8: @ 802C8E8
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
ldr r2, =gUnknown_02022CFC
|
||||
lsls r0, r1, 2
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
ldr r1, [r2]
|
||||
adds r0, r1
|
||||
movs r1, 0x83
|
||||
lsls r1, 8
|
||||
adds r0, r1
|
||||
bx lr
|
||||
.pool
|
||||
thumb_func_end sub_802C8E8
|
||||
|
||||
thumb_func_start sub_802C908
|
||||
sub_802C908: @ 802C908
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
bl sub_802AC00
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
mvns r0, r0
|
||||
lsrs r0, 31
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802C908
|
||||
|
||||
thumb_func_start sub_802C920
|
||||
sub_802C920: @ 802C920
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
_0802C924:
|
||||
movs r0, 0x64
|
||||
adds r1, r5, 0
|
||||
muls r1, r0
|
||||
ldr r0, =gPlayerParty
|
||||
adds r4, r1, r0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x5
|
||||
bl GetMonData
|
||||
cmp r0, 0
|
||||
beq _0802C95C
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x41
|
||||
bl GetMonData
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
bl sub_802C908
|
||||
cmp r0, 0
|
||||
beq _0802C95C
|
||||
ldr r1, =gSpecialVar_Result
|
||||
movs r0, 0x1
|
||||
b _0802C966
|
||||
.pool
|
||||
_0802C95C:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x5
|
||||
ble _0802C924
|
||||
ldr r1, =gSpecialVar_Result
|
||||
movs r0, 0
|
||||
_0802C966:
|
||||
strh r0, [r1]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802C920
|
||||
|
||||
thumb_func_start sub_802C974
|
||||
sub_802C974: @ 802C974
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
movs r4, 0
|
||||
ldr r5, =gUnknown_082FBE08
|
||||
_0802C97C:
|
||||
adds r0, r5, 0
|
||||
bl LoadCompressedSpriteSheet
|
||||
adds r5, 0x8
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x4
|
||||
bls _0802C97C
|
||||
movs r4, 0
|
||||
ldr r5, =gUnknown_082FBE30
|
||||
_0802C98E:
|
||||
adds r0, r5, 0
|
||||
bl LoadSpritePalette
|
||||
adds r5, 0x8
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x1
|
||||
bls _0802C98E
|
||||
movs r0, 0x5
|
||||
bl IndexOfSpritePaletteTag
|
||||
strb r0, [r6, 0xE]
|
||||
movs r0, 0x6
|
||||
bl IndexOfSpritePaletteTag
|
||||
strb r0, [r6, 0xF]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802C974
|
||||
|
||||
thumb_func_start sub_802C9BC
|
||||
sub_802C9BC: @ 802C9BC
|
||||
push {lr}
|
||||
movs r2, 0
|
||||
movs r1, 0x7
|
||||
adds r0, 0x3C
|
||||
_0802C9C4:
|
||||
strh r2, [r0]
|
||||
subs r0, 0x2
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bge _0802C9C4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802C9BC
|
||||
|
||||
thumb_func_start sub_802C9D4
|
||||
sub_802C9D4: @ 802C9D4
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x34
|
||||
mov r9, r0
|
||||
adds r7, r1, 0
|
||||
ldr r0, [sp, 0x54]
|
||||
lsls r2, 16
|
||||
lsrs r2, 16
|
||||
str r2, [sp, 0x28]
|
||||
lsls r3, 16
|
||||
lsrs r3, 16
|
||||
str r3, [sp, 0x2C]
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
mov r1, sp
|
||||
ldr r0, =gUnknown_082FBE40
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
movs r0, 0x80
|
||||
lsls r0, 6
|
||||
bl Alloc
|
||||
mov r8, r0
|
||||
movs r0, 0x80
|
||||
lsls r0, 4
|
||||
bl Alloc
|
||||
mov r10, r0
|
||||
bl sub_802C8BC
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
cmp r6, r0
|
||||
bne _0802CA2C
|
||||
movs r0, 0x3
|
||||
b _0802CA32
|
||||
.pool
|
||||
_0802CA2C:
|
||||
adds r0, r6, 0x4
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
_0802CA32:
|
||||
str r0, [sp, 0x30]
|
||||
mov r1, r8
|
||||
cmp r1, 0
|
||||
beq _0802CAF4
|
||||
mov r2, r10
|
||||
cmp r2, 0
|
||||
beq _0802CAF4
|
||||
ldrh r2, [r7]
|
||||
lsls r0, r2, 3
|
||||
ldr r1, =gMonStillFrontPicTable
|
||||
adds r0, r1
|
||||
ldr r3, [r7, 0x8]
|
||||
mov r1, r8
|
||||
bl HandleLoadSpecialPokePic
|
||||
mov r3, r8
|
||||
str r3, [sp, 0x18]
|
||||
adds r4, r6, 0
|
||||
add r0, sp, 0x18
|
||||
ldr r5, =0xffff0000
|
||||
lsls r1, r4, 16
|
||||
movs r2, 0x80
|
||||
lsls r2, 4
|
||||
orrs r1, r2
|
||||
str r1, [r0, 0x4]
|
||||
bl LoadSpriteSheet
|
||||
ldrh r0, [r7]
|
||||
ldr r1, [r7, 0x4]
|
||||
ldr r2, [r7, 0x8]
|
||||
bl GetFrontSpritePalFromSpeciesAndPersonality
|
||||
str r0, [sp, 0x20]
|
||||
add r0, sp, 0x20
|
||||
ldr r1, [r0, 0x4]
|
||||
ands r1, r5
|
||||
orrs r1, r4
|
||||
str r1, [r0, 0x4]
|
||||
bl LoadCompressedSpritePalette
|
||||
mov r0, r8
|
||||
bl Free
|
||||
mov r0, r10
|
||||
bl Free
|
||||
mov r1, sp
|
||||
mov r0, sp
|
||||
ldrh r0, [r0]
|
||||
adds r0, r6
|
||||
strh r0, [r1]
|
||||
mov r0, sp
|
||||
ldrh r0, [r0, 0x2]
|
||||
adds r0, r6
|
||||
strh r0, [r1, 0x2]
|
||||
ldr r4, [sp, 0x28]
|
||||
lsls r1, r4, 16
|
||||
asrs r1, 16
|
||||
ldr r0, [sp, 0x2C]
|
||||
lsls r2, r0, 16
|
||||
asrs r2, 16
|
||||
mov r0, sp
|
||||
ldr r3, [sp, 0x30]
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0x40
|
||||
beq _0802CAF4
|
||||
lsls r0, r6, 2
|
||||
ldr r2, =0x000081a8
|
||||
add r2, r9
|
||||
adds r2, r0
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, =gSprites
|
||||
adds r0, r1
|
||||
str r0, [r2]
|
||||
ldr r0, =0x000081fc
|
||||
add r0, r9
|
||||
adds r0, r6
|
||||
add r1, sp, 0x30
|
||||
ldrb r1, [r1]
|
||||
strb r1, [r0]
|
||||
b _0802CB00
|
||||
.pool
|
||||
_0802CAF4:
|
||||
lsls r0, r6, 2
|
||||
ldr r1, =0x000081a8
|
||||
add r1, r9
|
||||
adds r1, r0
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
_0802CB00:
|
||||
add sp, 0x34
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802C9D4
|
||||
|
||||
thumb_func_start sub_802CB14
|
||||
sub_802CB14: @ 802CB14
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r6, r1, 2
|
||||
ldr r0, =0x000081bc
|
||||
adds r5, r4, r0
|
||||
adds r5, r6
|
||||
ldr r0, [r5]
|
||||
bl sub_802C9BC
|
||||
ldr r2, [r5]
|
||||
ldr r0, =0x000081a8
|
||||
adds r4, r0
|
||||
adds r4, r6
|
||||
ldr r1, [r4]
|
||||
ldr r0, =gSprites
|
||||
subs r1, r0
|
||||
lsls r0, r1, 4
|
||||
subs r0, r1
|
||||
lsls r1, r0, 8
|
||||
adds r0, r1
|
||||
lsls r1, r0, 16
|
||||
adds r0, r1
|
||||
negs r0, r0
|
||||
asrs r0, 2
|
||||
strh r0, [r2, 0x3C]
|
||||
ldr r1, [r5]
|
||||
adds r1, 0x3E
|
||||
ldrb r2, [r1]
|
||||
movs r0, 0x5
|
||||
negs r0, r0
|
||||
ands r0, r2
|
||||
strb r0, [r1]
|
||||
ldr r1, [r5]
|
||||
movs r0, 0x60
|
||||
strh r0, [r1, 0x22]
|
||||
ldr r0, [r5]
|
||||
ldr r1, =sub_802CB7C
|
||||
str r1, [r0, 0x1C]
|
||||
movs r1, 0x1
|
||||
bl StartSpriteAnim
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CB14
|
||||
|
||||
thumb_func_start sub_802CB7C
|
||||
sub_802CB7C: @ 802CB7C
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
movs r1, 0x2E
|
||||
ldrsh r0, [r2, r1]
|
||||
cmp r0, 0x1
|
||||
beq _0802CBA8
|
||||
cmp r0, 0x1
|
||||
bgt _0802CB92
|
||||
cmp r0, 0
|
||||
beq _0802CB98
|
||||
b _0802CBE6
|
||||
_0802CB92:
|
||||
cmp r0, 0x2
|
||||
beq _0802CBC8
|
||||
b _0802CBE6
|
||||
_0802CB98:
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x3F
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x10
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0802CBE6
|
||||
b _0802CBD6
|
||||
_0802CBA8:
|
||||
ldrh r1, [r2, 0x22]
|
||||
subs r1, 0x1
|
||||
strh r1, [r2, 0x22]
|
||||
ldrh r0, [r2, 0x30]
|
||||
adds r0, 0x1
|
||||
strh r0, [r2, 0x30]
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
cmp r1, 0x48
|
||||
bgt _0802CBE6
|
||||
movs r0, 0x48
|
||||
strh r0, [r2, 0x22]
|
||||
ldrh r0, [r2, 0x2E]
|
||||
adds r0, 0x1
|
||||
strh r0, [r2, 0x2E]
|
||||
b _0802CBE6
|
||||
_0802CBC8:
|
||||
ldrh r0, [r2, 0x30]
|
||||
adds r0, 0x1
|
||||
strh r0, [r2, 0x30]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x2F
|
||||
ble _0802CBE6
|
||||
_0802CBD6:
|
||||
adds r3, r2, 0
|
||||
adds r3, 0x3E
|
||||
ldrb r0, [r3]
|
||||
movs r1, 0x4
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
ldr r0, =SpriteCallbackDummy
|
||||
str r0, [r2, 0x1C]
|
||||
_0802CBE6:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CB7C
|
||||
|
||||
thumb_func_start sub_802CBF0
|
||||
sub_802CBF0: @ 802CBF0
|
||||
push {lr}
|
||||
lsls r1, 2
|
||||
ldr r2, =0x000081a8
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r2, [r0]
|
||||
ldr r1, =sub_802CC40
|
||||
str r1, [r2, 0x1C]
|
||||
movs r1, 0
|
||||
strh r1, [r2, 0x26]
|
||||
ldr r0, [r0]
|
||||
bl sub_802C9BC
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CBF0
|
||||
|
||||
thumb_func_start sub_802CC18
|
||||
sub_802CC18: @ 802CC18
|
||||
push {lr}
|
||||
movs r2, 0
|
||||
lsls r1, 2
|
||||
ldr r3, =0x000081a8
|
||||
adds r0, r3
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
ldr r1, [r0, 0x1C]
|
||||
ldr r0, =sub_802CC40
|
||||
cmp r1, r0
|
||||
bne _0802CC30
|
||||
movs r2, 0x1
|
||||
_0802CC30:
|
||||
adds r0, r2, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
.pool
|
||||
thumb_func_end sub_802CC18
|
||||
|
||||
thumb_func_start sub_802CC40
|
||||
sub_802CC40: @ 802CC40
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
ldrh r0, [r2, 0x30]
|
||||
adds r0, 0x1
|
||||
strh r0, [r2, 0x30]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x1
|
||||
ble _0802CC6C
|
||||
ldrh r0, [r2, 0x32]
|
||||
adds r0, 0x1
|
||||
strh r0, [r2, 0x32]
|
||||
movs r1, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0802CC64
|
||||
movs r0, 0x2
|
||||
b _0802CC66
|
||||
_0802CC64:
|
||||
ldr r0, =0x0000fffe
|
||||
_0802CC66:
|
||||
strh r0, [r2, 0x26]
|
||||
movs r0, 0
|
||||
strh r0, [r2, 0x30]
|
||||
_0802CC6C:
|
||||
movs r1, 0x32
|
||||
ldrsh r0, [r2, r1]
|
||||
cmp r0, 0xC
|
||||
ble _0802CC7C
|
||||
movs r0, 0
|
||||
strh r0, [r2, 0x26]
|
||||
ldr r0, =SpriteCallbackDummy
|
||||
str r0, [r2, 0x1C]
|
||||
_0802CC7C:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CC40
|
||||
|
||||
thumb_func_start sub_802CC88
|
||||
sub_802CC88: @ 802CC88
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 2
|
||||
ldr r0, =0x000081a8
|
||||
adds r4, r0
|
||||
adds r4, r1
|
||||
ldr r0, [r4]
|
||||
bl sub_802C9BC
|
||||
ldr r1, [r4]
|
||||
ldr r0, =sub_802CD08
|
||||
str r0, [r1, 0x1C]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CC88
|
||||
|
||||
thumb_func_start sub_802CCB0
|
||||
sub_802CCB0: @ 802CCB0
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_802C8AC
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, 0
|
||||
beq _0802CCF4
|
||||
movs r1, 0x5
|
||||
negs r1, r1
|
||||
mov r12, r1
|
||||
ldr r1, =0x000081a8
|
||||
adds r3, r4, r1
|
||||
ldr r7, =sub_802CD08
|
||||
ldr r6, =SpriteCallbackDummy
|
||||
movs r5, 0xA
|
||||
adds r4, r0, 0
|
||||
_0802CCD2:
|
||||
ldr r2, [r3]
|
||||
ldr r0, [r2, 0x1C]
|
||||
cmp r0, r7
|
||||
bne _0802CCEC
|
||||
adds r2, 0x3E
|
||||
ldrb r1, [r2]
|
||||
mov r0, r12
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r0, [r3]
|
||||
str r6, [r0, 0x1C]
|
||||
adds r0, 0x43
|
||||
strb r5, [r0]
|
||||
_0802CCEC:
|
||||
adds r3, 0x4
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bne _0802CCD2
|
||||
_0802CCF4:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CCB0
|
||||
|
||||
thumb_func_start sub_802CD08
|
||||
sub_802CD08: @ 802CD08
|
||||
push {lr}
|
||||
adds r3, r0, 0
|
||||
ldrh r0, [r3, 0x2E]
|
||||
adds r0, 0x1
|
||||
strh r0, [r3, 0x2E]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x3
|
||||
ble _0802CD36
|
||||
movs r0, 0
|
||||
strh r0, [r3, 0x2E]
|
||||
adds r3, 0x3E
|
||||
ldrb r2, [r3]
|
||||
lsls r0, r2, 29
|
||||
lsrs r0, 31
|
||||
movs r1, 0x1
|
||||
eors r1, r0
|
||||
lsls r1, 2
|
||||
movs r0, 0x5
|
||||
negs r0, r0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
_0802CD36:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802CD08
|
||||
|
||||
thumb_func_start sub_802CD3C
|
||||
sub_802CD3C: @ 802CD3C
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_802C8AC
|
||||
lsls r0, 16
|
||||
lsrs r3, r0, 16
|
||||
movs r2, 0
|
||||
cmp r2, r3
|
||||
bge _0802CD66
|
||||
ldr r0, =0x000081fc
|
||||
adds r5, r4, r0
|
||||
subs r0, 0x54
|
||||
adds r4, r0
|
||||
_0802CD56:
|
||||
ldm r4!, {r0}
|
||||
adds r1, r5, r2
|
||||
ldrb r1, [r1]
|
||||
adds r0, 0x43
|
||||
strb r1, [r0]
|
||||
adds r2, 0x1
|
||||
cmp r2, r3
|
||||
blt _0802CD56
|
||||
_0802CD66:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CD3C
|
||||
|
||||
thumb_func_start sub_802CD70
|
||||
sub_802CD70: @ 802CD70
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 2
|
||||
ldr r0, =0x000081a8
|
||||
adds r4, r0
|
||||
adds r4, r1
|
||||
ldr r0, [r4]
|
||||
bl sub_802C9BC
|
||||
ldr r1, [r4]
|
||||
ldr r0, =sub_802CDD4
|
||||
str r0, [r1, 0x1C]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CD70
|
||||
|
||||
thumb_func_start sub_802CD98
|
||||
sub_802CD98: @ 802CD98
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_802C8AC
|
||||
lsls r0, 16
|
||||
lsrs r3, r0, 16
|
||||
movs r2, 0
|
||||
cmp r2, r3
|
||||
bge _0802CDCC
|
||||
ldr r5, =sub_802CDD4
|
||||
ldr r0, =0x000081a8
|
||||
adds r1, r4, r0
|
||||
_0802CDB0:
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0, 0x1C]
|
||||
cmp r0, r5
|
||||
bne _0802CDC4
|
||||
movs r0, 0x1
|
||||
b _0802CDCE
|
||||
.pool
|
||||
_0802CDC4:
|
||||
adds r1, 0x4
|
||||
adds r2, 0x1
|
||||
cmp r2, r3
|
||||
blt _0802CDB0
|
||||
_0802CDCC:
|
||||
movs r0, 0
|
||||
_0802CDCE:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802CD98
|
||||
|
||||
thumb_func_start sub_802CDD4
|
||||
sub_802CDD4: @ 802CDD4
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x2E
|
||||
ldrsh r4, [r5, r0]
|
||||
cmp r4, 0
|
||||
beq _0802CDE6
|
||||
cmp r4, 0x1
|
||||
beq _0802CDF4
|
||||
b _0802CE3C
|
||||
_0802CDE6:
|
||||
movs r0, 0x22
|
||||
bl PlaySE
|
||||
strh r4, [r5, 0x30]
|
||||
ldrh r0, [r5, 0x2E]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x2E]
|
||||
_0802CDF4:
|
||||
ldrh r0, [r5, 0x30]
|
||||
adds r0, 0x4
|
||||
strh r0, [r5, 0x30]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x7F
|
||||
ble _0802CE06
|
||||
movs r0, 0
|
||||
strh r0, [r5, 0x30]
|
||||
_0802CE06:
|
||||
ldr r1, =gSineTable
|
||||
movs r2, 0x30
|
||||
ldrsh r0, [r5, r2]
|
||||
lsls r0, 1
|
||||
adds r0, r1
|
||||
ldrh r0, [r0]
|
||||
lsls r0, 16
|
||||
asrs r0, 19
|
||||
negs r0, r0
|
||||
strh r0, [r5, 0x26]
|
||||
movs r0, 0x30
|
||||
ldrsh r1, [r5, r0]
|
||||
cmp r1, 0
|
||||
bne _0802CE3C
|
||||
ldrh r0, [r5, 0x32]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x32]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x1
|
||||
bgt _0802CE38
|
||||
strh r1, [r5, 0x2E]
|
||||
b _0802CE3C
|
||||
.pool
|
||||
_0802CE38:
|
||||
ldr r0, =SpriteCallbackDummy
|
||||
str r0, [r5, 0x1C]
|
||||
_0802CE3C:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CDD4
|
||||
|
||||
thumb_func_start sub_802CE48
|
||||
sub_802CE48: @ 802CE48
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
lsls r3, 24
|
||||
lsrs r4, r3, 24
|
||||
ldr r0, =gUnknown_082FC00C
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
lsls r2, 16
|
||||
asrs r2, 16
|
||||
movs r3, 0x1
|
||||
bl CreateSprite
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x40
|
||||
beq _0802CE88
|
||||
ldr r0, =gSprites
|
||||
lsls r1, r2, 4
|
||||
adds r1, r2
|
||||
lsls r1, 2
|
||||
adds r1, r0
|
||||
adds r3, r1, 0
|
||||
adds r3, 0x3E
|
||||
ldrb r0, [r3]
|
||||
movs r2, 0x4
|
||||
orrs r0, r2
|
||||
strb r0, [r3]
|
||||
lsls r2, r4, 2
|
||||
ldr r3, =0x000081bc
|
||||
adds r0, r5, r3
|
||||
adds r0, r2
|
||||
str r1, [r0]
|
||||
_0802CE88:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_802CE48
|
||||
|
||||
thumb_func_start sub_802CE9C
|
||||
sub_802CE9C: @ 802CE9C
|
||||
push {r4-r7,lr}
|
||||
|
@ -1,864 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
@ File centered around AllocSubstruct(1)
|
||||
|
||||
thumb_func_start sub_81C9268
|
||||
sub_81C9268: @ 81C9268
|
||||
push {r4,lr}
|
||||
movs r4, 0
|
||||
movs r0, 0x98
|
||||
lsls r0, 1
|
||||
bl FlagGet
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _081C928A
|
||||
movs r4, 0x1
|
||||
ldr r0, =0x0000089b
|
||||
bl FlagGet
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _081C928A
|
||||
movs r4, 0x2
|
||||
_081C928A:
|
||||
adds r0, r4, 0
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.pool
|
||||
thumb_func_end sub_81C9268
|
||||
|
||||
thumb_func_start sub_81C9298
|
||||
sub_81C9298: @ 81C9298
|
||||
push {r4,lr}
|
||||
movs r0, 0x1
|
||||
movs r1, 0x10
|
||||
bl AllocSubstruct
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
beq _081C92C4
|
||||
bl sub_81C9268
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0
|
||||
strh r0, [r4]
|
||||
strh r1, [r4, 0x2]
|
||||
strh r1, [r4, 0x4]
|
||||
strh r1, [r4, 0x6]
|
||||
adds r0, r4, 0
|
||||
bl sub_81C939C
|
||||
movs r0, 0x1
|
||||
b _081C92C6
|
||||
_081C92C4:
|
||||
movs r0, 0
|
||||
_081C92C6:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9298
|
||||
|
||||
thumb_func_start sub_81C92CC
|
||||
sub_81C92CC: @ 81C92CC
|
||||
push {r4,lr}
|
||||
movs r0, 0x1
|
||||
movs r1, 0x10
|
||||
bl AllocSubstruct
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
beq _081C92FA
|
||||
bl sub_81C9268
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
movs r1, 0
|
||||
strh r0, [r4]
|
||||
movs r0, 0x2
|
||||
strh r0, [r4, 0x2]
|
||||
strh r0, [r4, 0x4]
|
||||
strh r1, [r4, 0x6]
|
||||
adds r0, r4, 0
|
||||
bl sub_81C939C
|
||||
movs r0, 0x1
|
||||
b _081C92FC
|
||||
_081C92FA:
|
||||
movs r0, 0
|
||||
_081C92FC:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C92CC
|
||||
|
||||
thumb_func_start sub_81C9304
|
||||
sub_81C9304: @ 81C9304
|
||||
push {r4,lr}
|
||||
movs r0, 0x1
|
||||
movs r1, 0x10
|
||||
bl AllocSubstruct
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
beq _081C932E
|
||||
bl sub_81C9268
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r4]
|
||||
movs r0, 0x3
|
||||
strh r0, [r4, 0x2]
|
||||
strh r0, [r4, 0x4]
|
||||
adds r0, r4, 0
|
||||
bl sub_81C939C
|
||||
movs r0, 0x1
|
||||
b _081C9330
|
||||
_081C932E:
|
||||
movs r0, 0
|
||||
_081C9330:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9304
|
||||
|
||||
thumb_func_start sub_81C9338
|
||||
sub_81C9338: @ 81C9338
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
movs r1, 0x10
|
||||
bl AllocSubstruct
|
||||
adds r2, r0, 0
|
||||
cmp r2, 0
|
||||
beq _081C9360
|
||||
movs r0, 0
|
||||
movs r1, 0x3
|
||||
strh r1, [r2]
|
||||
strh r0, [r2, 0x2]
|
||||
movs r1, 0x5
|
||||
strh r1, [r2, 0x4]
|
||||
strh r0, [r2, 0x6]
|
||||
adds r0, r2, 0
|
||||
bl sub_81C939C
|
||||
movs r0, 0x1
|
||||
b _081C9362
|
||||
_081C9360:
|
||||
movs r0, 0
|
||||
_081C9362:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9338
|
||||
|
||||
thumb_func_start sub_81C9368
|
||||
sub_81C9368: @ 81C9368
|
||||
push {r4,r5,lr}
|
||||
movs r0, 0x1
|
||||
movs r1, 0x10
|
||||
bl AllocSubstruct
|
||||
adds r5, r0, 0
|
||||
cmp r5, 0
|
||||
beq _081C9394
|
||||
movs r4, 0
|
||||
movs r0, 0x4
|
||||
strh r0, [r5]
|
||||
bl sub_81C76AC
|
||||
strh r0, [r5, 0x2]
|
||||
adds r0, 0x8
|
||||
strh r0, [r5, 0x4]
|
||||
strh r4, [r5, 0x6]
|
||||
adds r0, r5, 0
|
||||
bl sub_81C939C
|
||||
movs r0, 0x1
|
||||
b _081C9396
|
||||
_081C9394:
|
||||
movs r0, 0
|
||||
_081C9396:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9368
|
||||
|
||||
thumb_func_start sub_81C939C
|
||||
sub_81C939C: @ 81C939C
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
ldrh r0, [r4]
|
||||
cmp r0, 0x4
|
||||
bhi _081C93E0
|
||||
lsls r0, 2
|
||||
ldr r1, =_081C93B4
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.pool
|
||||
.align 2, 0
|
||||
_081C93B4:
|
||||
.4byte _081C93C8
|
||||
.4byte _081C93CE
|
||||
.4byte _081C93CE
|
||||
.4byte _081C93D4
|
||||
.4byte _081C93DC
|
||||
_081C93C8:
|
||||
movs r0, 0
|
||||
bl SetPokenavMode
|
||||
_081C93CE:
|
||||
bl sub_81C93EC
|
||||
b _081C93DE
|
||||
_081C93D4:
|
||||
ldr r0, =sub_81C963C
|
||||
b _081C93DE
|
||||
.pool
|
||||
_081C93DC:
|
||||
ldr r0, =sub_81C96FC
|
||||
_081C93DE:
|
||||
str r0, [r4, 0xC]
|
||||
_081C93E0:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_81C939C
|
||||
|
||||
thumb_func_start sub_81C93EC
|
||||
sub_81C93EC: @ 81C93EC
|
||||
push {lr}
|
||||
bl GetPokenavMode
|
||||
cmp r0, 0x1
|
||||
beq _081C9408
|
||||
cmp r0, 0x1
|
||||
bcc _081C93FE
|
||||
cmp r0, 0x2
|
||||
beq _081C9410
|
||||
_081C93FE:
|
||||
ldr r0, =sub_81C943C
|
||||
b _081C9412
|
||||
.pool
|
||||
_081C9408:
|
||||
ldr r0, =sub_81C9520
|
||||
b _081C9412
|
||||
.pool
|
||||
_081C9410:
|
||||
ldr r0, =c2_pre_battle_1
|
||||
_081C9412:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.pool
|
||||
thumb_func_end sub_81C93EC
|
||||
|
||||
thumb_func_start sub_81C941C
|
||||
sub_81C941C: @ 81C941C
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl GetSubstructPtr
|
||||
ldr r1, [r0, 0xC]
|
||||
bl _call_via_r1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C941C
|
||||
|
||||
thumb_func_start sub_81C9430
|
||||
sub_81C9430: @ 81C9430
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl FreePokenavSubstruct
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_81C9430
|
||||
|
||||
thumb_func_start sub_81C943C
|
||||
sub_81C943C: @ 81C943C
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_81C9814
|
||||
cmp r0, 0
|
||||
beq _081C944C
|
||||
movs r0, 0x1
|
||||
b _081C951A
|
||||
_081C944C:
|
||||
ldr r2, =gMain
|
||||
ldrh r1, [r2, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
adds r5, r2, 0
|
||||
cmp r0, 0
|
||||
beq _081C9508
|
||||
ldr r3, =gUnknown_0861FC59
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r4, r0]
|
||||
ldrh r2, [r4]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
adds r1, r3
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x4
|
||||
bhi _081C9508
|
||||
lsls r0, 2
|
||||
ldr r1, =_081C9488
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.pool
|
||||
.align 2, 0
|
||||
_081C9488:
|
||||
.4byte _081C949C
|
||||
.4byte _081C94BC
|
||||
.4byte _081C94D4
|
||||
.4byte _081C94E0
|
||||
.4byte _081C9516
|
||||
_081C949C:
|
||||
ldr r0, =gSaveBlock2Ptr
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x15]
|
||||
movs r0, 0x8
|
||||
ands r0, r1
|
||||
movs r1, 0x1
|
||||
cmp r0, 0
|
||||
beq _081C94AE
|
||||
movs r1, 0x2
|
||||
_081C94AE:
|
||||
strh r1, [r4, 0x6]
|
||||
ldr r1, =0x000186a6
|
||||
b _081C94EE
|
||||
.pool
|
||||
_081C94BC:
|
||||
movs r1, 0
|
||||
movs r0, 0x3
|
||||
strh r0, [r4]
|
||||
strh r1, [r4, 0x2]
|
||||
ldrb r0, [r3, 0x12]
|
||||
strh r0, [r4, 0x4]
|
||||
ldr r0, =sub_81C963C
|
||||
str r0, [r4, 0xC]
|
||||
movs r0, 0x2
|
||||
b _081C951A
|
||||
.pool
|
||||
_081C94D4:
|
||||
movs r0, 0x6
|
||||
strh r0, [r4, 0x6]
|
||||
ldr r1, =0x000186ab
|
||||
b _081C94EE
|
||||
.pool
|
||||
_081C94E0:
|
||||
bl CanViewRibbonsMenu
|
||||
cmp r0, 0
|
||||
beq _081C94FC
|
||||
movs r0, 0x9
|
||||
strh r0, [r4, 0x6]
|
||||
ldr r1, =0x000186ac
|
||||
_081C94EE:
|
||||
adds r0, r4, 0
|
||||
bl sub_81C97B0
|
||||
movs r0, 0x8
|
||||
b _081C951A
|
||||
.pool
|
||||
_081C94FC:
|
||||
ldr r0, =sub_81C9600
|
||||
str r0, [r4, 0xC]
|
||||
movs r0, 0x6
|
||||
b _081C951A
|
||||
.pool
|
||||
_081C9508:
|
||||
ldrh r1, [r5, 0x2E]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _081C9516
|
||||
movs r0, 0
|
||||
b _081C951A
|
||||
_081C9516:
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_081C951A:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C943C
|
||||
|
||||
thumb_func_start sub_81C9520
|
||||
sub_81C9520: @ 81C9520
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_81C9814
|
||||
cmp r0, 0
|
||||
beq _081C9530
|
||||
movs r0, 0x1
|
||||
b _081C9580
|
||||
_081C9530:
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _081C9570
|
||||
ldr r3, =gUnknown_0861FC59
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r4, r0]
|
||||
ldrh r2, [r4]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
adds r1, r3
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x2
|
||||
bne _081C9578
|
||||
movs r0, 0x6
|
||||
strh r0, [r4, 0x6]
|
||||
ldr r1, =0x000186ab
|
||||
adds r0, r4, 0
|
||||
bl sub_81C97B0
|
||||
movs r0, 0x8
|
||||
b _081C9580
|
||||
.pool
|
||||
_081C9570:
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _081C957E
|
||||
_081C9578:
|
||||
movs r0, 0x20
|
||||
bl PlaySE
|
||||
_081C957E:
|
||||
movs r0, 0
|
||||
_081C9580:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9520
|
||||
|
||||
thumb_func_start c2_pre_battle_1
|
||||
c2_pre_battle_1: @ 81C9588
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_81C9814
|
||||
cmp r0, 0
|
||||
beq _081C9598
|
||||
movs r0, 0x1
|
||||
b _081C95F8
|
||||
_081C9598:
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _081C95E8
|
||||
ldr r3, =gUnknown_0861FC59
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r4, r0]
|
||||
ldrh r2, [r4]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
adds r1, r3
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x2
|
||||
beq _081C95D4
|
||||
cmp r0, 0x4
|
||||
beq _081C95F4
|
||||
movs r0, 0x20
|
||||
bl PlaySE
|
||||
movs r0, 0
|
||||
b _081C95F8
|
||||
.pool
|
||||
_081C95D4:
|
||||
movs r0, 0x6
|
||||
strh r0, [r4, 0x6]
|
||||
ldr r1, =0x000186ab
|
||||
adds r0, r4, 0
|
||||
bl sub_81C97B0
|
||||
movs r0, 0x8
|
||||
b _081C95F8
|
||||
.pool
|
||||
_081C95E8:
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _081C95F4
|
||||
movs r0, 0
|
||||
b _081C95F8
|
||||
_081C95F4:
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_081C95F8:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end c2_pre_battle_1
|
||||
|
||||
thumb_func_start sub_81C9600
|
||||
sub_81C9600: @ 81C9600
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_81C9814
|
||||
cmp r0, 0
|
||||
beq _081C9616
|
||||
bl sub_81C93EC
|
||||
str r0, [r4, 0xC]
|
||||
movs r0, 0x1
|
||||
b _081C9634
|
||||
_081C9616:
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _081C962C
|
||||
movs r0, 0
|
||||
b _081C9634
|
||||
.pool
|
||||
_081C962C:
|
||||
bl sub_81C93EC
|
||||
str r0, [r4, 0xC]
|
||||
movs r0, 0x7
|
||||
_081C9634:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9600
|
||||
|
||||
thumb_func_start sub_81C963C
|
||||
sub_81C963C: @ 81C963C
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_81C9814
|
||||
adds r3, r0, 0
|
||||
cmp r3, 0
|
||||
beq _081C964E
|
||||
movs r0, 0x1
|
||||
b _081C96F6
|
||||
_081C964E:
|
||||
ldr r2, =gMain
|
||||
ldrh r1, [r2, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
adds r6, r2, 0
|
||||
cmp r0, 0
|
||||
beq _081C96B8
|
||||
ldr r5, =gUnknown_0861FC59
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r4, r1]
|
||||
ldrh r2, [r4]
|
||||
lsls r1, r2, 1
|
||||
adds r1, r2
|
||||
lsls r1, 1
|
||||
adds r0, r1
|
||||
adds r0, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x6
|
||||
beq _081C968E
|
||||
cmp r0, 0x6
|
||||
bgt _081C9688
|
||||
cmp r0, 0x5
|
||||
beq _081C96A4
|
||||
b _081C96B8
|
||||
.pool
|
||||
_081C9688:
|
||||
cmp r0, 0x7
|
||||
beq _081C96E4
|
||||
b _081C96B8
|
||||
_081C968E:
|
||||
movs r0, 0x4
|
||||
strh r0, [r4]
|
||||
strh r3, [r4, 0x2]
|
||||
ldrb r0, [r5, 0x18]
|
||||
strh r0, [r4, 0x4]
|
||||
ldr r0, =sub_81C96FC
|
||||
str r0, [r4, 0xC]
|
||||
movs r0, 0x4
|
||||
b _081C96F6
|
||||
.pool
|
||||
_081C96A4:
|
||||
strh r3, [r4, 0x6]
|
||||
ldr r1, =0x000186a7
|
||||
adds r0, r4, 0
|
||||
bl sub_81C97B0
|
||||
movs r0, 0x8
|
||||
b _081C96F6
|
||||
.pool
|
||||
_081C96B8:
|
||||
ldrh r1, [r6, 0x2E]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _081C96F4
|
||||
movs r0, 0x2
|
||||
ldrsh r2, [r4, r0]
|
||||
ldr r1, =gUnknown_0861FC54
|
||||
ldrh r0, [r4]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
beq _081C96E4
|
||||
strh r0, [r4, 0x2]
|
||||
ldr r0, =sub_81C9798
|
||||
str r0, [r4, 0xC]
|
||||
movs r0, 0x1
|
||||
b _081C96F6
|
||||
.pool
|
||||
_081C96E4:
|
||||
movs r0, 0x5
|
||||
bl PlaySE
|
||||
adds r0, r4, 0
|
||||
bl sub_81C97C0
|
||||
movs r0, 0x3
|
||||
b _081C96F6
|
||||
_081C96F4:
|
||||
movs r0, 0
|
||||
_081C96F6:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C963C
|
||||
|
||||
thumb_func_start sub_81C96FC
|
||||
sub_81C96FC: @ 81C96FC
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_81C9814
|
||||
cmp r0, 0
|
||||
beq _081C970C
|
||||
movs r0, 0x1
|
||||
b _081C9792
|
||||
_081C970C:
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _081C9754
|
||||
ldr r3, =gUnknown_0861FC59
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r4, r0]
|
||||
ldrh r2, [r4]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
adds r1, r3
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xD
|
||||
beq _081C9780
|
||||
subs r0, 0x8
|
||||
bl sub_81C7694
|
||||
ldr r1, =0x000186a8
|
||||
adds r0, r4, 0
|
||||
bl sub_81C97B0
|
||||
movs r0, 0x3
|
||||
strh r0, [r4, 0x6]
|
||||
movs r0, 0x8
|
||||
b _081C9792
|
||||
.pool
|
||||
_081C9754:
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _081C9790
|
||||
movs r0, 0x2
|
||||
ldrsh r2, [r4, r0]
|
||||
ldr r1, =gUnknown_0861FC54
|
||||
ldrh r0, [r4]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
beq _081C9780
|
||||
strh r0, [r4, 0x2]
|
||||
ldr r0, =sub_81C97A4
|
||||
str r0, [r4, 0xC]
|
||||
movs r0, 0x1
|
||||
b _081C9792
|
||||
.pool
|
||||
_081C9780:
|
||||
movs r0, 0x5
|
||||
bl PlaySE
|
||||
adds r0, r4, 0
|
||||
bl sub_81C97F8
|
||||
movs r0, 0x5
|
||||
b _081C9792
|
||||
_081C9790:
|
||||
movs r0, 0
|
||||
_081C9792:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C96FC
|
||||
|
||||
thumb_func_start sub_81C9798
|
||||
sub_81C9798: @ 81C9798
|
||||
push {lr}
|
||||
bl sub_81C97C0
|
||||
movs r0, 0x3
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9798
|
||||
|
||||
thumb_func_start sub_81C97A4
|
||||
sub_81C97A4: @ 81C97A4
|
||||
push {lr}
|
||||
bl sub_81C97F8
|
||||
movs r0, 0x5
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C97A4
|
||||
|
||||
thumb_func_start sub_81C97B0
|
||||
sub_81C97B0: @ 81C97B0
|
||||
str r1, [r0, 0x8]
|
||||
ldr r1, =sub_81C97BC
|
||||
str r1, [r0, 0xC]
|
||||
bx lr
|
||||
.pool
|
||||
thumb_func_end sub_81C97B0
|
||||
|
||||
thumb_func_start sub_81C97BC
|
||||
sub_81C97BC: @ 81C97BC
|
||||
ldr r0, [r0, 0x8]
|
||||
bx lr
|
||||
thumb_func_end sub_81C97BC
|
||||
|
||||
thumb_func_start sub_81C97C0
|
||||
sub_81C97C0: @ 81C97C0
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_81C9268
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r4]
|
||||
movs r0, 0x1
|
||||
strh r0, [r4, 0x2]
|
||||
ldr r2, =gUnknown_0861FC59
|
||||
ldrh r1, [r4]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 1
|
||||
adds r0, 0x1
|
||||
adds r0, r2
|
||||
ldrb r0, [r0]
|
||||
strh r0, [r4, 0x4]
|
||||
ldr r0, =sub_81C943C
|
||||
str r0, [r4, 0xC]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_81C97C0
|
||||
|
||||
thumb_func_start sub_81C97F8
|
||||
sub_81C97F8: @ 81C97F8
|
||||
movs r1, 0x3
|
||||
strh r1, [r0]
|
||||
movs r1, 0x1
|
||||
strh r1, [r0, 0x2]
|
||||
ldr r1, =gUnknown_0861FC59
|
||||
ldrb r1, [r1, 0x13]
|
||||
strh r1, [r0, 0x4]
|
||||
ldr r1, =sub_81C963C
|
||||
str r1, [r0, 0xC]
|
||||
bx lr
|
||||
.pool
|
||||
thumb_func_end sub_81C97F8
|
||||
|
||||
thumb_func_start sub_81C9814
|
||||
sub_81C9814: @ 81C9814
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r0, =gMain
|
||||
ldrh r1, [r0, 0x2E]
|
||||
movs r0, 0x40
|
||||
ands r0, r1
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
cmp r5, 0
|
||||
beq _081C9848
|
||||
ldrh r0, [r4, 0x2]
|
||||
subs r0, 0x1
|
||||
strh r0, [r4, 0x2]
|
||||
lsls r0, 16
|
||||
ldrh r3, [r4]
|
||||
cmp r0, 0
|
||||
bge _081C986A
|
||||
ldr r0, =gUnknown_0861FC54
|
||||
adds r0, r3, r0
|
||||
ldrb r0, [r0]
|
||||
strh r0, [r4, 0x2]
|
||||
b _081C986A
|
||||
.pool
|
||||
_081C9848:
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _081C988C
|
||||
ldrh r0, [r4, 0x2]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x2]
|
||||
movs r0, 0x2
|
||||
ldrsh r2, [r4, r0]
|
||||
ldr r0, =gUnknown_0861FC54
|
||||
ldrh r1, [r4]
|
||||
adds r0, r1, r0
|
||||
adds r3, r1, 0
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
ble _081C986A
|
||||
strh r5, [r4, 0x2]
|
||||
_081C986A:
|
||||
ldr r2, =gUnknown_0861FC59
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r0, r3, 1
|
||||
adds r0, r3
|
||||
lsls r0, 1
|
||||
adds r1, r0
|
||||
adds r1, r2
|
||||
ldrb r0, [r1]
|
||||
strh r0, [r4, 0x4]
|
||||
movs r0, 0x1
|
||||
b _081C988E
|
||||
.pool
|
||||
_081C988C:
|
||||
movs r0, 0
|
||||
_081C988E:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9814
|
||||
|
||||
thumb_func_start sub_81C9894
|
||||
sub_81C9894: @ 81C9894
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl GetSubstructPtr
|
||||
ldrh r0, [r0]
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C9894
|
||||
|
||||
thumb_func_start sub_81C98A4
|
||||
sub_81C98A4: @ 81C98A4
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl GetSubstructPtr
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r0, r1]
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C98A4
|
||||
|
||||
thumb_func_start sub_81C98B4
|
||||
sub_81C98B4: @ 81C98B4
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl GetSubstructPtr
|
||||
ldrh r0, [r0, 0x4]
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C98B4
|
||||
|
||||
thumb_func_start sub_81C98C4
|
||||
sub_81C98C4: @ 81C98C4
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl GetSubstructPtr
|
||||
ldrh r0, [r0, 0x6]
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81C98C4
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
@ -1506,7 +1506,7 @@ sub_81CBE50: @ 81CBE50
|
||||
movs r0, 0x9
|
||||
bl GetGameStat
|
||||
adds r1, r0, 0
|
||||
ldr r0, =0x0001869f @ Note to decompiler: See UNKNOWN_OFFSET
|
||||
ldr r0, =0x0001869f
|
||||
cmp r1, r0
|
||||
ble _081CBE68
|
||||
adds r1, r0, 0
|
||||
|
@ -3,17 +3,6 @@
|
||||
|
||||
.section .rodata
|
||||
|
||||
// pokenav_unk_1.s
|
||||
gUnknown_0861FC54:: @ 861FC54
|
||||
.byte 2
|
||||
.byte 3
|
||||
.byte 4
|
||||
.byte 2
|
||||
.byte 5
|
||||
|
||||
gUnknown_0861FC59:: @ 861FC59
|
||||
.byte 0, 1, 4, 4, 4, 4, 0, 1, 2, 4, 4, 4, 0, 1, 2, 3, 4, 4, 5, 6, 7, 4, 4, 4, 8, 9, 10, 11, 12, 13, 0
|
||||
|
||||
// pokenav_unk_2.s
|
||||
gUnknown_0861FC78:: @ 861FC78
|
||||
.incbin "graphics/pokenav/bg.gbapal"
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "main.h"
|
||||
|
||||
void sub_802A9A8(u16 monId, MainCallback callback);
|
||||
bool32 sub_802C908(u16 species);
|
||||
|
||||
#endif // GUARD_POKEMON_JUMP_H
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_POKENAV_H
|
||||
#define GUARD_POKENAV_H
|
||||
|
||||
typedef u32 (*LoopedTask)(s32 state);
|
||||
typedef u32 (*LoopedTask)(int state);
|
||||
|
||||
// Return values of LoopedTask functions.
|
||||
#define LT_INC_AND_PAUSE 0
|
||||
@ -11,8 +11,36 @@ typedef u32 (*LoopedTask)(s32 state);
|
||||
#define LT_FINISH 4
|
||||
#define LT_SET_STATE(newState) (newState + 5)
|
||||
|
||||
enum
|
||||
{
|
||||
POKENAV_MODE_NORMAL, // Chosen from Start menu.
|
||||
POKENAV_MODE_FORCE_CALL_1, // Used for the script's special. Has to choose Match Call and make a call.
|
||||
POKENAV_MODE_FORCE_CALL_2, // Set after making a call, has to exit Pokenav.
|
||||
};
|
||||
|
||||
#define POKENAV_MENU_IDS_START 100000
|
||||
enum
|
||||
{
|
||||
POKENAV_MENU_0 = POKENAV_MENU_IDS_START,
|
||||
POKENAV_MENU_1,
|
||||
POKENAV_MENU_2,
|
||||
POKENAV_MENU_3,
|
||||
POKENAV_MENU_4,
|
||||
POKENAV_MENU_5,
|
||||
POKENAV_MENU_6,
|
||||
POKENAV_MENU_7,
|
||||
POKENAV_MENU_8,
|
||||
POKENAV_MENU_9,
|
||||
POKENAV_MENU_A,
|
||||
POKENAV_MENU_B,
|
||||
POKENAV_MENU_C,
|
||||
POKENAV_MENU_D,
|
||||
POKENAV_MENU_E,
|
||||
};
|
||||
|
||||
// pokenav.c
|
||||
extern u32 sub_81C99D4(void);
|
||||
void sub_81C7694(u32);
|
||||
u16 sub_81C76AC(void);
|
||||
|
||||
void CB2_InitPokeNav(void);
|
||||
u32 CreateLoopedTask(LoopedTask loopedTask, u32 priority);
|
||||
@ -22,7 +50,31 @@ void FreePokenavSubstruct(u32 index);
|
||||
void *AllocSubstruct(u32 index, u32 size);
|
||||
void Pokenav_AllocAndLoadPalettes(const struct SpritePalette *palettes);
|
||||
bool32 IsLoopedTaskActive(u32 taskId);
|
||||
void SetPokenavMode(u16 mode);
|
||||
u32 GetPokenavMode(void);
|
||||
bool32 CanViewRibbonsMenu(void);
|
||||
|
||||
// pokenav_match_call_ui.c
|
||||
|
||||
// pokenav_main_menu.c
|
||||
bool32 InitPokenavMainMenu(void);
|
||||
void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size);
|
||||
void sub_81C7850(u32 a0);
|
||||
u32 sub_81C786C(void);
|
||||
|
||||
// pokenav_unk_1.c
|
||||
bool32 sub_81C9298(void);
|
||||
bool32 sub_81C92CC(void);
|
||||
bool32 sub_81C9304(void);
|
||||
bool32 sub_81C9338(void);
|
||||
bool32 sub_81C9368(void);
|
||||
u32 sub_81C941C(void);
|
||||
void sub_81C9430(void);
|
||||
int sub_81C9894(void);
|
||||
|
||||
// pokenav_unk_2.c
|
||||
u32 sub_81C99D4(void);
|
||||
void sub_81CAADC(void);
|
||||
|
||||
|
||||
#endif //GUARD_POKENAV_H
|
||||
|
@ -162,7 +162,6 @@ extern u8 gUnknown_02022C3E;
|
||||
// Exported ROM declarations
|
||||
|
||||
u8 sub_8013F78(void);
|
||||
bool32 sub_802C908(u16);
|
||||
void nullsub_89(u8 taskId);
|
||||
void var_800D_set_xB(void);
|
||||
void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
|
||||
|
@ -303,7 +303,7 @@ SECTIONS {
|
||||
src/pokenav.o(.text);
|
||||
src/pokenav_main_menu.o(.text);
|
||||
src/pokenav_match_call_ui.o(.text);
|
||||
asm/pokenav_unk_1.o(.text);
|
||||
src/pokenav_unk_1.o(.text);
|
||||
asm/pokenav_unk_2.o(.text);
|
||||
asm/pokenav_unk_3.o(.text);
|
||||
asm/pokenav_unk_4.o(.text);
|
||||
@ -632,6 +632,7 @@ SECTIONS {
|
||||
src/pokenav.o(.rodata);
|
||||
src/pokenav_main_menu.o(.rodata);
|
||||
src/pokenav_match_call_ui.o(.rodata);
|
||||
src/pokenav_unk_1.o(.rodata);
|
||||
data/pokenav.o(.rodata);
|
||||
src/pokenav_match_call_data.o(.rodata);
|
||||
src/menu_specialized.o(.rodata);
|
||||
|
@ -45,11 +45,11 @@
|
||||
#include "player_pc.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "pokemon_jump.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "pokemon_summary_screen.h"
|
||||
#include "region_map.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "union_room.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "script.h"
|
||||
#include "sound.h"
|
||||
@ -61,6 +61,7 @@
|
||||
#include "text.h"
|
||||
#include "text_window.h"
|
||||
#include "trade.h"
|
||||
#include "union_room.h"
|
||||
#include "window.h"
|
||||
#include "constants/battle.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
|
@ -4039,7 +4039,7 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
|
||||
lsls r2, 24\n\
|
||||
lsrs r2, 24\n\
|
||||
str r2, [sp, 0x10]\n\
|
||||
ldr r5, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
|
||||
ldr r5, =0x000186a0\n\
|
||||
muls r0, r5\n\
|
||||
ldr r1, =0x000011b8\n\
|
||||
bl __divsi3\n\
|
||||
@ -4073,7 +4073,7 @@ _080C04C0:\n\
|
||||
mov r8, r1\n\
|
||||
movs r6, 0x1\n\
|
||||
_080C04C6:\n\
|
||||
ldr r1, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
|
||||
ldr r1, =0x000186a0\n\
|
||||
adds r0, r7, 0\n\
|
||||
bl __umodsi3\n\
|
||||
adds r7, r0, 0\n\
|
||||
|
@ -1,5 +1,8 @@
|
||||
#include "global.h"
|
||||
#include "alloc.h"
|
||||
#include "data.h"
|
||||
#include "decompress.h"
|
||||
#include "event_data.h"
|
||||
#include "item.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
@ -12,6 +15,7 @@
|
||||
#include "sprite.h"
|
||||
#include "string_util.h"
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_jump.h"
|
||||
#include "constants/rgb.h"
|
||||
@ -121,11 +125,25 @@ struct Unk802B078
|
||||
int unk8;
|
||||
};
|
||||
|
||||
|
||||
struct PokemonJump2
|
||||
{
|
||||
u8 filler0[0xE];
|
||||
u8 unkE;
|
||||
u8 unkF;
|
||||
u8 filler10[0x8198];
|
||||
struct Sprite *unk81A8[MAX_RFU_PLAYERS];
|
||||
struct Sprite *unk81BC[MAX_RFU_PLAYERS];
|
||||
struct Sprite *unk81D0[8];
|
||||
u8 filler81F0[0xC];
|
||||
u8 unk81FC[MAX_RFU_PLAYERS];
|
||||
};
|
||||
|
||||
static void sub_802AA60(struct PokemonJump1 *);
|
||||
void sub_802AA94(struct PokemonJump1 *);
|
||||
void sub_802AB20(void);
|
||||
static void sub_802AB98(void);
|
||||
s16 sub_802AC00(u16);
|
||||
static s16 sub_802AC00(u16 species);
|
||||
static void sub_802AC2C(struct PokemonJump1_MonInfo *monInfo, struct Pokemon *mon);
|
||||
static void sub_802AC6C(void);
|
||||
static void sub_802ACA0(u8 taskId);
|
||||
@ -191,8 +209,12 @@ static bool32 sub_802C7BC(void);
|
||||
static u16 sub_802C7E0(void);
|
||||
static void sub_802C808(u16, u16 *, u16 *);
|
||||
static u16 sub_802C818(void);
|
||||
u16 sub_802C838(void);
|
||||
u16 sub_802C880(u16, u16);
|
||||
static u16 sub_802C838(void);
|
||||
static u16 sub_802C880(u16 item, u16 quantity);
|
||||
static void sub_802CB7C(struct Sprite *sprite);
|
||||
static void sub_802CC40(struct Sprite *sprite);
|
||||
static void sub_802CD08(struct Sprite *sprite);
|
||||
static void sub_802CDD4(struct Sprite *sprite);
|
||||
void sub_802DC9C(u32);
|
||||
void sub_802D074(void *);
|
||||
void sub_802D0AC(void);
|
||||
@ -229,6 +251,7 @@ int sub_802E354(int, u16, u16);
|
||||
void sub_802E3A8(void);
|
||||
|
||||
extern struct PokemonJump1 *gUnknown_02022CFC;
|
||||
extern struct PokemonJump2 *gUnknown_02022D00;
|
||||
|
||||
const struct PokemonJumpMons gPkmnJumpSpecies[] =
|
||||
{
|
||||
@ -363,10 +386,17 @@ bool32 (* const gUnknown_082FB618[])(void) =
|
||||
extern const u16 gUnknown_082FB63C[];
|
||||
extern const u16 gUnknown_082FB64C[4];
|
||||
extern const u16 gUnknown_082FB654[];
|
||||
extern s8 gUnknown_082FB65C[][48];
|
||||
extern int gUnknown_082FB6EC[];
|
||||
extern int gUnknown_082FB714[];
|
||||
extern u16 gUnknown_082FB704[8];
|
||||
extern const s8 gUnknown_082FB65C[][48];
|
||||
extern const int gUnknown_082FB6EC[];
|
||||
extern const int gUnknown_082FB714[];
|
||||
extern const u16 gUnknown_082FB704[8];
|
||||
extern const struct CompressedSpriteSheet gUnknown_082FBE08[5];
|
||||
extern const struct SpritePalette gUnknown_082FBE30[2];
|
||||
extern const struct SpriteTemplate gUnknown_082FBE40;
|
||||
extern const struct SpriteTemplate gUnknown_082FC00C;
|
||||
extern const s16 gUnknown_082FBE58[];
|
||||
extern const s16 gUnknown_082FBEA8[8];
|
||||
extern const struct SpriteTemplate gUnknown_082FBEB8[4];
|
||||
|
||||
void sub_802A9A8(u16 partyIndex, MainCallback callback)
|
||||
{
|
||||
@ -480,7 +510,7 @@ static void sub_802AB98(void)
|
||||
}
|
||||
}
|
||||
|
||||
s16 sub_802AC00(u16 species)
|
||||
static s16 sub_802AC00(u16 species)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < ARRAY_COUNT(gPkmnJumpSpecies); i++)
|
||||
@ -2022,3 +2052,355 @@ static u16 sub_802C818(void)
|
||||
u16 index = Random() % ARRAY_COUNT(gUnknown_082FB704);
|
||||
return gUnknown_082FB704[index];
|
||||
}
|
||||
|
||||
NAKED
|
||||
static u16 sub_802C838(void)
|
||||
{
|
||||
asm_unified("\n\
|
||||
push {r4-r6,lr}\n\
|
||||
movs r5, 0\n\
|
||||
movs r4, 0\n\
|
||||
ldr r3, =gUnknown_02022CFC\n\
|
||||
ldr r0, [r3]\n\
|
||||
ldr r2, =gUnknown_082FB714\n\
|
||||
ldr r1, [r0, 0x78]\n\
|
||||
ldr r0, [r2]\n\
|
||||
cmp r1, r0\n\
|
||||
bcc _0802C874\n\
|
||||
ldr r5, [r2, 0x4]\n\
|
||||
adds r6, r3, 0\n\
|
||||
adds r3, r2, 0x4\n\
|
||||
_0802C852:\n\
|
||||
adds r3, 0x8\n\
|
||||
adds r2, 0x8\n\
|
||||
adds r4, 0x1\n\
|
||||
cmp r4, 0x4\n\
|
||||
bhi _0802C874\n\
|
||||
ldr r0, [r6]\n\
|
||||
ldr r1, [r0, 0x78]\n\
|
||||
ldr r0, [r2]\n\
|
||||
cmp r1, r0\n\
|
||||
bcc _0802C874\n\
|
||||
ldr r5, [r3]\n\
|
||||
b _0802C852\n\
|
||||
.pool\n\
|
||||
_0802C874:\n\
|
||||
lsls r0, r5, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
pop {r4-r6}\n\
|
||||
pop {r1}\n\
|
||||
bx r1");
|
||||
}
|
||||
|
||||
static u16 sub_802C880(u16 item, u16 quantity)
|
||||
{
|
||||
while (quantity && !CheckBagHasSpace(item, quantity))
|
||||
quantity--;
|
||||
|
||||
return quantity;
|
||||
}
|
||||
|
||||
u16 sub_802C8AC(void)
|
||||
{
|
||||
return GetLinkPlayerCount();
|
||||
}
|
||||
|
||||
u16 sub_802C8BC(void)
|
||||
{
|
||||
return gUnknown_02022CFC->unk6;
|
||||
}
|
||||
|
||||
struct PokemonJump1_MonInfo *sub_802C8C8(u8 multiplayerId)
|
||||
{
|
||||
return &gUnknown_02022CFC->unk82A8[multiplayerId];
|
||||
}
|
||||
|
||||
u8 *sub_802C8E8(u8 multiplayerId)
|
||||
{
|
||||
return gUnknown_02022CFC->unk82E4[multiplayerId].unk1C;
|
||||
}
|
||||
|
||||
bool32 sub_802C908(u16 species)
|
||||
{
|
||||
return sub_802AC00(species) > -1;
|
||||
}
|
||||
|
||||
void sub_802C920(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES))
|
||||
{
|
||||
u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
|
||||
if (sub_802C908(species))
|
||||
{
|
||||
gSpecialVar_Result = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gSpecialVar_Result = 0;
|
||||
}
|
||||
|
||||
void sub_802C974(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gUnknown_082FBE08); i++)
|
||||
LoadCompressedSpriteSheet(&gUnknown_082FBE08[i]);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gUnknown_082FBE30); i++)
|
||||
LoadSpritePalette(&gUnknown_082FBE30[i]);
|
||||
|
||||
arg0->unkE = IndexOfSpritePaletteTag(5);
|
||||
arg0->unkF = IndexOfSpritePaletteTag(6);
|
||||
}
|
||||
|
||||
static void sub_802C9BC(struct Sprite *sprite)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 8; i++)
|
||||
sprite->data[i] = 0;
|
||||
}
|
||||
|
||||
void sub_802C9D4(struct PokemonJump2 *arg0, struct PokemonJump1_MonInfo *jumpMon, u16 x, u16 y, u8 multiplayerId)
|
||||
{
|
||||
struct SpriteTemplate spriteTemplate;
|
||||
struct SpriteSheet spriteSheet;
|
||||
struct CompressedSpritePalette spritePalette;
|
||||
u8 *buffer;
|
||||
u8 *unusedBuffer;
|
||||
u8 subpriority;
|
||||
u8 spriteId;
|
||||
|
||||
spriteTemplate = gUnknown_082FBE40;
|
||||
buffer = Alloc(0x2000);
|
||||
unusedBuffer = Alloc(0x800);
|
||||
if (multiplayerId == sub_802C8BC())
|
||||
subpriority = 3;
|
||||
else
|
||||
subpriority = multiplayerId + 4;
|
||||
|
||||
if (buffer && unusedBuffer)
|
||||
{
|
||||
HandleLoadSpecialPokePic(
|
||||
&gMonStillFrontPicTable[jumpMon->species],
|
||||
buffer,
|
||||
jumpMon->species,
|
||||
jumpMon->personality);
|
||||
|
||||
spriteSheet.data = buffer;
|
||||
spriteSheet.tag = multiplayerId;
|
||||
spriteSheet.size = 0x800;
|
||||
LoadSpriteSheet(&spriteSheet);
|
||||
|
||||
spritePalette.data = GetFrontSpritePalFromSpeciesAndPersonality(jumpMon->species, jumpMon->otId, jumpMon->personality);
|
||||
spritePalette.tag = multiplayerId;
|
||||
LoadCompressedSpritePalette(&spritePalette);
|
||||
|
||||
Free(buffer);
|
||||
Free(unusedBuffer);
|
||||
|
||||
spriteTemplate.tileTag += multiplayerId;
|
||||
spriteTemplate.paletteTag += multiplayerId;
|
||||
spriteId = CreateSprite(&spriteTemplate, x, y, subpriority);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
arg0->unk81A8[multiplayerId] = &gSprites[spriteId];
|
||||
arg0->unk81FC[multiplayerId] = subpriority;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
arg0->unk81A8[multiplayerId] = NULL;
|
||||
}
|
||||
|
||||
void sub_802CB14(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
sub_802C9BC(arg0->unk81BC[multiplayerId]);
|
||||
arg0->unk81BC[multiplayerId]->data[7] = arg0->unk81A8[multiplayerId] - gSprites;
|
||||
arg0->unk81BC[multiplayerId]->invisible = 0;
|
||||
arg0->unk81BC[multiplayerId]->pos1.y = 96;
|
||||
arg0->unk81BC[multiplayerId]->callback = sub_802CB7C;
|
||||
StartSpriteAnim(arg0->unk81BC[multiplayerId], 1);
|
||||
}
|
||||
|
||||
static void sub_802CB7C(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
sprite->invisible = 1;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos1.y--;
|
||||
sprite->data[1]++;
|
||||
if (sprite->pos1.y <= 72)
|
||||
{
|
||||
sprite->pos1.y = 72;
|
||||
sprite->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (++sprite->data[1] >= 48)
|
||||
{
|
||||
sprite->invisible = 1;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802CBF0(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
arg0->unk81A8[multiplayerId]->callback = sub_802CC40;
|
||||
arg0->unk81A8[multiplayerId]->pos2.y = 0;
|
||||
sub_802C9BC(arg0->unk81A8[multiplayerId]);
|
||||
}
|
||||
|
||||
bool32 sub_802CC18(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
return arg0->unk81A8[multiplayerId]->callback == sub_802CC40;
|
||||
}
|
||||
|
||||
static void sub_802CC40(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[1] > 1)
|
||||
{
|
||||
if (++sprite->data[2] & 1)
|
||||
sprite->pos2.y = 2;
|
||||
else
|
||||
sprite->pos2.y = -2;
|
||||
|
||||
sprite->data[1] = 0;
|
||||
}
|
||||
|
||||
if (sprite->data[2] > 12)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802CC88(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
sub_802C9BC(arg0->unk81A8[multiplayerId]);
|
||||
arg0->unk81A8[multiplayerId]->callback = sub_802CD08;
|
||||
}
|
||||
|
||||
void sub_802CCB0(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
u16 numPlayers = sub_802C8AC();
|
||||
for (i = 0; i < numPlayers; i++)
|
||||
{
|
||||
if (arg0->unk81A8[i]->callback == sub_802CD08)
|
||||
{
|
||||
arg0->unk81A8[i]->invisible = 0;
|
||||
arg0->unk81A8[i]->callback = SpriteCallbackDummy;
|
||||
arg0->unk81A8[i]->subpriority = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_802CD08(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[0] > 3)
|
||||
{
|
||||
sprite->data[0] = 0;
|
||||
sprite->invisible ^= 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802CD3C(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
u16 numPlayers = sub_802C8AC();
|
||||
for (i = 0; i < numPlayers; i++)
|
||||
arg0->unk81A8[i]->subpriority = arg0->unk81FC[i];
|
||||
}
|
||||
|
||||
void sub_802CD70(struct PokemonJump2 *arg0, int multiplayerId)
|
||||
{
|
||||
sub_802C9BC(arg0->unk81A8[multiplayerId]);
|
||||
arg0->unk81A8[multiplayerId]->callback = sub_802CDD4;
|
||||
}
|
||||
|
||||
bool32 sub_802CD98(struct PokemonJump2 *arg0)
|
||||
{
|
||||
int i;
|
||||
u16 numPlayers = sub_802C8AC();
|
||||
for (i = 0; i < numPlayers; i++)
|
||||
{
|
||||
if (arg0->unk81A8[i]->callback == sub_802CDD4)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_802CDD4(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
PlaySE(SE_JITE_PYOKO);
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[0]++;
|
||||
// fall through
|
||||
case 1:
|
||||
sprite->data[1] += 4;
|
||||
if (sprite->data[1] > 0x7F)
|
||||
sprite->data[1] = 0;
|
||||
|
||||
sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3);
|
||||
if (sprite->data[1] == 0)
|
||||
{
|
||||
if (++sprite->data[2] < 2)
|
||||
sprite->data[0] = 0;
|
||||
else
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802CE48(struct PokemonJump2 *arg0, s16 x, s16 y, u8 multiplayerId)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_082FC00C, x, y, 1);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].invisible = 1;
|
||||
arg0->unk81BC[multiplayerId] = &gSprites[spriteId];
|
||||
}
|
||||
}
|
||||
|
||||
// void sub_802CE9C(struct PokemonJump2 *arg0)
|
||||
// {
|
||||
// int i;
|
||||
// int count;
|
||||
// u8 spriteId;
|
||||
|
||||
// count = 0;
|
||||
// for (i = 0; i < 4; i++)
|
||||
// {
|
||||
// spriteId = CreateSprite(&gUnknown_082FBEB8[i], gUnknown_082FBEA8[count], gUnknown_082FBE58[i * 10], 2);
|
||||
// arg0->unk81D0[count] = &gSprites[spriteId];
|
||||
// count++;
|
||||
// }
|
||||
|
||||
// for (i = 0; i < 4; i++)
|
||||
// {
|
||||
// spriteId = CreateSprite(&gUnknown_082FBEB8[i], gUnknown_082FBEA8[count], gUnknown_082FBE58[i * 10], 2);
|
||||
// arg0->unk81D0[count] = &gSprites[spriteId];
|
||||
// arg0->unk81D0[count]->hFlip = 1;
|
||||
// count++;
|
||||
// }
|
||||
// }
|
||||
|
307
src/pokenav.c
307
src/pokenav.c
@ -8,32 +8,12 @@
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "pokenav.h"
|
||||
|
||||
enum
|
||||
{
|
||||
MODE_NORMAL, // Chosen from Start menu.
|
||||
MODE_FORCE_CALL_1, // Used for the script's special. Has to choose Match Call and make a call.
|
||||
MODE_FORCE_CALL_2, // Set after making a call, has to exit Pokenav.
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
NAVMENU_CB_UNK_0,
|
||||
NAVMENU_CB_UNK_1,
|
||||
NAVMENU_CB_UNK_2,
|
||||
NAVMENU_CB_UNK_3,
|
||||
NAVMENU_CB_UNK_4,
|
||||
NAVMENU_CB_UNK_5,
|
||||
NAVMENU_CB_UNK_6
|
||||
};
|
||||
|
||||
#define LOOPED_TASK_DECODE_STATE(action) (action - 5)
|
||||
|
||||
#define LOOPED_TASK_ID(primary, secondary) (((secondary) << 16) |(primary))
|
||||
#define LOOPED_TASK_PRIMARY_ID(taskId) (taskId & 0xFFFF)
|
||||
#define LOOPED_TASK_SECONDARY_ID(taskId) (taskId >> 16)
|
||||
|
||||
#define UNKNOWN_OFFSET 100000
|
||||
|
||||
#define SUBSTRUCT_COUNT 19
|
||||
|
||||
struct PokenavResources
|
||||
@ -46,37 +26,41 @@ struct PokenavResources
|
||||
void *field10[SUBSTRUCT_COUNT];
|
||||
};
|
||||
|
||||
extern u32 sub_81C9430(void);
|
||||
extern u32 sub_81C9298(void);
|
||||
extern u32 sub_81C941C(void);
|
||||
struct UnknownPokenavCallbackStruct
|
||||
{
|
||||
u32 (*unk0)(void);
|
||||
u32 (*unk4)(void);
|
||||
u32 (*unk8)(void);
|
||||
u32 (*unkC)(void);
|
||||
u32 (*unk10)(void);
|
||||
void (*unk14)(void);
|
||||
u32 (*unk18)(void);
|
||||
};
|
||||
|
||||
extern u32 sub_81C9924(void);
|
||||
extern u32 sub_81C99C0(void);
|
||||
extern u32 sub_81C9990(void);
|
||||
extern u32 sub_81C9940(void);
|
||||
extern u32 sub_81C9338(void);
|
||||
extern u32 sub_81C9368(void);
|
||||
extern u32 sub_81C92CC(void);
|
||||
extern u32 sub_81C9304(void);
|
||||
extern u32 sub_81CC4D4(void);
|
||||
extern u32 sub_81CC554(void);
|
||||
extern u32 sub_81CC5F4(void);
|
||||
extern u32 sub_81CC62C(void);
|
||||
extern u32 sub_81CC65C(void);
|
||||
extern u32 sub_81CC524(void);
|
||||
extern void sub_81CC524(void);
|
||||
extern u32 sub_81CC670(void);
|
||||
extern u32 sub_81CCFD8(void);
|
||||
extern u32 sub_81CD070(void);
|
||||
extern u32 sub_81CDDD4(void);
|
||||
extern u32 sub_81CDE2C(void);
|
||||
extern u32 sub_81CDE64(void);
|
||||
extern u32 sub_81CD1C0(void);
|
||||
extern void sub_81CD1C0(void);
|
||||
extern u32 sub_81CECA0(void);
|
||||
extern u32 sub_81CEF3C(void);
|
||||
extern u32 sub_81CEFDC(void);
|
||||
extern u32 sub_81CF330(void);
|
||||
extern u32 sub_81CF3A0(void);
|
||||
extern u32 sub_81CF3D0(void);
|
||||
extern u32 sub_81CEFF0(void);
|
||||
extern void sub_81CEFF0(void);
|
||||
extern u32 sub_81CF3F8(void);
|
||||
extern u32 sub_81CD024(void);
|
||||
extern u32 sub_81CEF98(void);
|
||||
@ -86,36 +70,33 @@ extern u32 sub_81CAB24(void);
|
||||
extern u32 sub_81CB260(void);
|
||||
extern u32 sub_81CB29C(void);
|
||||
extern u32 sub_81CB2CC(void);
|
||||
extern u32 sub_81CAB38(void);
|
||||
extern void sub_81CAB38(void);
|
||||
extern u32 sub_81CB2E0(void);
|
||||
extern u32 sub_81CF9BC(void);
|
||||
extern u32 sub_81CFA34(void);
|
||||
extern u32 sub_81CFDD0(void);
|
||||
extern u32 sub_81CFE40(void);
|
||||
extern u32 sub_81CFE70(void);
|
||||
extern u32 sub_81CFA48(void);
|
||||
extern void sub_81CFA48(void);
|
||||
extern u32 sub_81CFE98(void);
|
||||
extern u32 sub_81D0450(void);
|
||||
extern u32 sub_81D04A0(void);
|
||||
extern u32 sub_81D0978(void);
|
||||
extern u32 sub_81D09B0(void);
|
||||
extern u32 sub_81D09E0(void);
|
||||
extern u32 sub_81D04B8(void);
|
||||
extern void sub_81D04B8(void);
|
||||
extern u32 sub_81D09F4(void);
|
||||
extern u32 sub_81CFA04(void);
|
||||
extern u32 sub_81CFE08(void);
|
||||
|
||||
bool32 SetActivePokenavMenu(u32 a0);
|
||||
bool32 InitPokenavMainMenu(void);
|
||||
static bool32 SetActivePokenavMenu(u32 menuId);
|
||||
static bool32 AnyMonHasRibbon(void);
|
||||
u32 sub_81C75E0(void);
|
||||
u32 sub_81C75D4(void);
|
||||
u32 PokenavMainMenuLoopedTaskIsActive(void);
|
||||
u32 sub_81C786C(void);
|
||||
bool32 WaitForPokenavShutdownFade(void);
|
||||
void sub_81C7834(void *func1, void *func2);
|
||||
static void InitPokenavResources(struct PokenavResources *a0);
|
||||
void sub_81C7850(u32 a0);
|
||||
void Task_RunLoopedTask_LinkMode(u8 a0);
|
||||
void Task_RunLoopedTask(u8 taskId);
|
||||
void sub_81C742C(u8 taskId);
|
||||
@ -126,143 +107,142 @@ static void VBlankCB_Pokenav(void);
|
||||
static void CB2_Pokenav(void);
|
||||
void sub_81C72BC(void);
|
||||
|
||||
// Const rom data.
|
||||
u32 (*const PokenavMenuCallbacks[15][7])(void) =
|
||||
const struct UnknownPokenavCallbackStruct PokenavMenuCallbacks[15] =
|
||||
{
|
||||
{
|
||||
sub_81C9298,
|
||||
sub_81C941C,
|
||||
sub_81C9924,
|
||||
sub_81C9990,
|
||||
sub_81C99C0,
|
||||
sub_81C9430,
|
||||
sub_81C99D4,
|
||||
.unk0 = sub_81C9298,
|
||||
.unk4 = sub_81C941C,
|
||||
.unk8 = sub_81C9924,
|
||||
.unkC = sub_81C9990,
|
||||
.unk10 = sub_81C99C0,
|
||||
.unk14 = sub_81C9430,
|
||||
.unk18 = sub_81C99D4,
|
||||
},
|
||||
{
|
||||
sub_81C9298,
|
||||
sub_81C941C,
|
||||
sub_81C9940,
|
||||
sub_81C9990,
|
||||
sub_81C99C0,
|
||||
sub_81C9430,
|
||||
sub_81C99D4,
|
||||
.unk0 = sub_81C9298,
|
||||
.unk4 = sub_81C941C,
|
||||
.unk8 = sub_81C9940,
|
||||
.unkC = sub_81C9990,
|
||||
.unk10 = sub_81C99C0,
|
||||
.unk14 = sub_81C9430,
|
||||
.unk18 = sub_81C99D4,
|
||||
},
|
||||
{
|
||||
sub_81C9338,
|
||||
sub_81C941C,
|
||||
sub_81C9940,
|
||||
sub_81C9990,
|
||||
sub_81C99C0,
|
||||
sub_81C9430,
|
||||
sub_81C99D4,
|
||||
.unk0 = sub_81C9338,
|
||||
.unk4 = sub_81C941C,
|
||||
.unk8 = sub_81C9940,
|
||||
.unkC = sub_81C9990,
|
||||
.unk10 = sub_81C99C0,
|
||||
.unk14 = sub_81C9430,
|
||||
.unk18 = sub_81C99D4,
|
||||
},
|
||||
{
|
||||
sub_81C9368,
|
||||
sub_81C941C,
|
||||
sub_81C9940,
|
||||
sub_81C9990,
|
||||
sub_81C99C0,
|
||||
sub_81C9430,
|
||||
sub_81C99D4,
|
||||
.unk0 = sub_81C9368,
|
||||
.unk4 = sub_81C941C,
|
||||
.unk8 = sub_81C9940,
|
||||
.unkC = sub_81C9990,
|
||||
.unk10 = sub_81C99C0,
|
||||
.unk14 = sub_81C9430,
|
||||
.unk18 = sub_81C99D4,
|
||||
},
|
||||
{
|
||||
sub_81C92CC,
|
||||
sub_81C941C,
|
||||
sub_81C9940,
|
||||
sub_81C9990,
|
||||
sub_81C99C0,
|
||||
sub_81C9430,
|
||||
sub_81C99D4,
|
||||
.unk0 = sub_81C92CC,
|
||||
.unk4 = sub_81C941C,
|
||||
.unk8 = sub_81C9940,
|
||||
.unkC = sub_81C9990,
|
||||
.unk10 =sub_81C99C0,
|
||||
.unk14 = sub_81C9430,
|
||||
.unk18 = sub_81C99D4,
|
||||
},
|
||||
{
|
||||
sub_81C9304,
|
||||
sub_81C941C,
|
||||
sub_81C9940,
|
||||
sub_81C9990,
|
||||
sub_81C99C0,
|
||||
sub_81C9430,
|
||||
sub_81C99D4,
|
||||
.unk0 = sub_81C9304,
|
||||
.unk4 = sub_81C941C,
|
||||
.unk8 = sub_81C9940,
|
||||
.unkC = sub_81C9990,
|
||||
.unk10 = sub_81C99C0,
|
||||
.unk14 = sub_81C9430,
|
||||
.unk18 = sub_81C99D4,
|
||||
},
|
||||
{
|
||||
sub_81CC4D4,
|
||||
sub_81CC554,
|
||||
sub_81CC5F4,
|
||||
sub_81CC62C,
|
||||
sub_81CC65C,
|
||||
sub_81CC524,
|
||||
sub_81CC670,
|
||||
.unk0 = sub_81CC4D4,
|
||||
.unk4 = sub_81CC554,
|
||||
.unk8 = sub_81CC5F4,
|
||||
.unkC = sub_81CC62C,
|
||||
.unk10 = sub_81CC65C,
|
||||
.unk14 = sub_81CC524,
|
||||
.unk18 = sub_81CC670,
|
||||
},
|
||||
{
|
||||
sub_81CCFD8,
|
||||
sub_81CD070,
|
||||
sub_81CDDD4,
|
||||
sub_81CDE2C,
|
||||
sub_81CDE64,
|
||||
sub_81CD1C0,
|
||||
sub_81CECA0,
|
||||
.unk0 = sub_81CCFD8,
|
||||
.unk4 = sub_81CD070,
|
||||
.unk8 = sub_81CDDD4,
|
||||
.unkC = sub_81CDE2C,
|
||||
.unk10 = sub_81CDE64,
|
||||
.unk14 = sub_81CD1C0,
|
||||
.unk18 = sub_81CECA0,
|
||||
},
|
||||
{
|
||||
sub_81CEF3C,
|
||||
sub_81CEFDC,
|
||||
sub_81CF330,
|
||||
sub_81CF3A0,
|
||||
sub_81CF3D0,
|
||||
sub_81CEFF0,
|
||||
sub_81CF3F8,
|
||||
.unk0 = sub_81CEF3C,
|
||||
.unk4 = sub_81CEFDC,
|
||||
.unk8 = sub_81CF330,
|
||||
.unkC = sub_81CF3A0,
|
||||
.unk10 = sub_81CF3D0,
|
||||
.unk14 = sub_81CEFF0,
|
||||
.unk18 = sub_81CF3F8,
|
||||
},
|
||||
{
|
||||
sub_81CD024,
|
||||
sub_81CD070,
|
||||
sub_81CDDD4,
|
||||
sub_81CDE2C,
|
||||
sub_81CDE64,
|
||||
sub_81CD1C0,
|
||||
sub_81CECA0,
|
||||
.unk0 = sub_81CD024,
|
||||
.unk4 = sub_81CD070,
|
||||
.unk8 = sub_81CDDD4,
|
||||
.unkC = sub_81CDE2C,
|
||||
.unk10 = sub_81CDE64,
|
||||
.unk14 = sub_81CD1C0,
|
||||
.unk18 = sub_81CECA0,
|
||||
},
|
||||
{
|
||||
sub_81CEF98,
|
||||
sub_81CEFDC,
|
||||
sub_81CF368,
|
||||
sub_81CF3A0,
|
||||
sub_81CF3D0,
|
||||
sub_81CEFF0,
|
||||
sub_81CF3F8,
|
||||
.unk0 = sub_81CEF98,
|
||||
.unk4 = sub_81CEFDC,
|
||||
.unk8 = sub_81CF368,
|
||||
.unkC = sub_81CF3A0,
|
||||
.unk10 = sub_81CF3D0,
|
||||
.unk14 = sub_81CEFF0,
|
||||
.unk18 = sub_81CF3F8,
|
||||
},
|
||||
{
|
||||
sub_81CAAE8,
|
||||
sub_81CAB24,
|
||||
sub_81CB260,
|
||||
sub_81CB29C,
|
||||
sub_81CB2CC,
|
||||
sub_81CAB38,
|
||||
sub_81CB2E0,
|
||||
.unk0 = sub_81CAAE8,
|
||||
.unk4 = sub_81CAB24,
|
||||
.unk8 = sub_81CB260,
|
||||
.unkC = sub_81CB29C,
|
||||
.unk10 = sub_81CB2CC,
|
||||
.unk14 = sub_81CAB38,
|
||||
.unk18 = sub_81CB2E0,
|
||||
},
|
||||
{
|
||||
sub_81CF9BC,
|
||||
sub_81CFA34,
|
||||
sub_81CFDD0,
|
||||
sub_81CFE40,
|
||||
sub_81CFE70,
|
||||
sub_81CFA48,
|
||||
sub_81CFE98,
|
||||
.unk0 = sub_81CF9BC,
|
||||
.unk4 = sub_81CFA34,
|
||||
.unk8 = sub_81CFDD0,
|
||||
.unkC = sub_81CFE40,
|
||||
.unk10 = sub_81CFE70,
|
||||
.unk14 = sub_81CFA48,
|
||||
.unk18 = sub_81CFE98,
|
||||
},
|
||||
{
|
||||
sub_81D0450,
|
||||
sub_81D04A0,
|
||||
sub_81D0978,
|
||||
sub_81D09B0,
|
||||
sub_81D09E0,
|
||||
sub_81D04B8,
|
||||
sub_81D09F4,
|
||||
.unk0 = sub_81D0450,
|
||||
.unk4 = sub_81D04A0,
|
||||
.unk8 = sub_81D0978,
|
||||
.unkC = sub_81D09B0,
|
||||
.unk10 = sub_81D09E0,
|
||||
.unk14 = sub_81D04B8,
|
||||
.unk18 = sub_81D09F4,
|
||||
},
|
||||
{
|
||||
sub_81CFA04,
|
||||
sub_81CFA34,
|
||||
sub_81CFE08,
|
||||
sub_81CFE40,
|
||||
sub_81CFE70,
|
||||
sub_81CFA48,
|
||||
sub_81CFE98,
|
||||
.unk0 = sub_81CFA04,
|
||||
.unk4 = sub_81CFA34,
|
||||
.unk8 = sub_81CFE08,
|
||||
.unkC = sub_81CFE40,
|
||||
.unk10 = sub_81CFE70,
|
||||
.unk14 = sub_81CFA48,
|
||||
.unk18 = sub_81CFE98,
|
||||
},
|
||||
};
|
||||
|
||||
@ -300,7 +280,7 @@ bool32 IsLoopedTaskActive(u32 taskId)
|
||||
|
||||
bool32 FuncIsActiveLoopedTask(LoopedTask func)
|
||||
{
|
||||
s32 i;
|
||||
int i;
|
||||
for (i = 0; i < NUM_TASKS; i++)
|
||||
{
|
||||
if (gTasks[i].isActive
|
||||
@ -413,7 +393,7 @@ void sub_81C72BC(void)
|
||||
else
|
||||
{
|
||||
InitPokenavResources(gPokenavResources);
|
||||
gPokenavResources->mode = MODE_FORCE_CALL_1;
|
||||
gPokenavResources->mode = POKENAV_MODE_FORCE_CALL_1;
|
||||
ResetTasks();
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
@ -426,7 +406,7 @@ void sub_81C72BC(void)
|
||||
|
||||
static void FreePokenavResources(void)
|
||||
{
|
||||
s32 i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < SUBSTRUCT_COUNT; i++)
|
||||
FreePokenavSubstruct(i);
|
||||
@ -437,12 +417,12 @@ static void FreePokenavResources(void)
|
||||
|
||||
static void InitPokenavResources(struct PokenavResources *a0)
|
||||
{
|
||||
s32 i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < SUBSTRUCT_COUNT; i++)
|
||||
a0->field10[i] = NULL;
|
||||
|
||||
a0->mode = MODE_NORMAL;
|
||||
a0->mode = POKENAV_MODE_NORMAL;
|
||||
a0->currentMenuIndex = 0;
|
||||
a0->hasAnyRibbons = AnyMonHasRibbon();
|
||||
a0->currentMenuCb1 = NULL;
|
||||
@ -450,7 +430,7 @@ static void InitPokenavResources(struct PokenavResources *a0)
|
||||
|
||||
static bool32 AnyMonHasRibbon(void)
|
||||
{
|
||||
s32 i, j;
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
@ -507,7 +487,7 @@ void sub_81C742C(u8 taskId)
|
||||
// Wait for LoopedTask_InitPokenavMenu to finish
|
||||
if (PokenavMainMenuLoopedTaskIsActive())
|
||||
break;
|
||||
SetActivePokenavMenu(0 + UNKNOWN_OFFSET);
|
||||
SetActivePokenavMenu(POKENAV_MENU_0);
|
||||
data[0] = 4;
|
||||
break;
|
||||
case 2:
|
||||
@ -521,10 +501,10 @@ void sub_81C742C(u8 taskId)
|
||||
ShutdownPokenav();
|
||||
data[0] = 5;
|
||||
}
|
||||
else if (v1 >= UNKNOWN_OFFSET)
|
||||
else if (v1 >= POKENAV_MENU_IDS_START)
|
||||
{
|
||||
PokenavMenuCallbacks[gPokenavResources->currentMenuIndex][NAVMENU_CB_UNK_6]();
|
||||
PokenavMenuCallbacks[gPokenavResources->currentMenuIndex][NAVMENU_CB_UNK_5]();
|
||||
PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].unk18();
|
||||
PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].unk14();
|
||||
if (SetActivePokenavMenu(v1))
|
||||
{
|
||||
data[0] = 4;
|
||||
@ -549,7 +529,7 @@ void sub_81C742C(u8 taskId)
|
||||
case 5:
|
||||
if (!WaitForPokenavShutdownFade())
|
||||
{
|
||||
bool32 calledFromScript = (gPokenavResources->mode != MODE_NORMAL);
|
||||
bool32 calledFromScript = (gPokenavResources->mode != POKENAV_MODE_NORMAL);
|
||||
|
||||
sub_81C9430();
|
||||
FreePokenavResources();
|
||||
@ -562,18 +542,18 @@ void sub_81C742C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
bool32 SetActivePokenavMenu(u32 indexWithOffset)
|
||||
static bool32 SetActivePokenavMenu(u32 menuId)
|
||||
{
|
||||
u32 index = indexWithOffset - UNKNOWN_OFFSET;
|
||||
u32 index = menuId - POKENAV_MENU_IDS_START;
|
||||
|
||||
InitKeys_();
|
||||
if (!PokenavMenuCallbacks[index][NAVMENU_CB_UNK_0]())
|
||||
if (!PokenavMenuCallbacks[index].unk0())
|
||||
return FALSE;
|
||||
if (!PokenavMenuCallbacks[index][NAVMENU_CB_UNK_2]())
|
||||
if (!PokenavMenuCallbacks[index].unk8())
|
||||
return FALSE;
|
||||
|
||||
sub_81C7834(PokenavMenuCallbacks[index][NAVMENU_CB_UNK_3], PokenavMenuCallbacks[index][NAVMENU_CB_UNK_4]);
|
||||
gPokenavResources->currentMenuCb1 = PokenavMenuCallbacks[index][NAVMENU_CB_UNK_1];
|
||||
sub_81C7834(PokenavMenuCallbacks[index].unkC, PokenavMenuCallbacks[index].unk10);
|
||||
gPokenavResources->currentMenuCb1 = PokenavMenuCallbacks[index].unk4;
|
||||
gPokenavResources->currentMenuIndex = index;
|
||||
return TRUE;
|
||||
}
|
||||
@ -605,7 +585,8 @@ void SetPokenavVBlankCallback(void)
|
||||
|
||||
void *AllocSubstruct(u32 index, u32 size)
|
||||
{
|
||||
return gPokenavResources->field10[index] = Alloc(size);
|
||||
gPokenavResources->field10[index] = Alloc(size);
|
||||
return gPokenavResources->field10[index];
|
||||
}
|
||||
|
||||
void *GetSubstructPtr(u32 index)
|
||||
@ -619,7 +600,7 @@ void FreePokenavSubstruct(u32 index)
|
||||
FREE_AND_SET_NULL(gPokenavResources->field10[index]);
|
||||
}
|
||||
|
||||
u16 GetPokenavMode(void)
|
||||
u32 GetPokenavMode(void)
|
||||
{
|
||||
return gPokenavResources->mode;
|
||||
}
|
||||
|
@ -19,12 +19,10 @@ enum
|
||||
POKENAV_GFX_CONDITION_MENU,
|
||||
POKENAV_GFX_RIBBONS_MENU,
|
||||
POKENAV_GFX_MATCH_CALL_MENU,
|
||||
|
||||
// One of these is for the zoomed-in map, and the other is for the
|
||||
// zoomed-out map. Don't know which is which yet.
|
||||
POKENAV_GFX_MAP_MENU_UNK0,
|
||||
POKENAV_GFX_MAP_MENU_UNK1,
|
||||
|
||||
POKENAV_GFX_PARTY_MENU,
|
||||
POKENAV_GFX_SEARCH_MENU,
|
||||
POKENAV_GFX_COOL_MENU,
|
||||
@ -32,8 +30,7 @@ enum
|
||||
POKENAV_GFX_CUTE_MENU,
|
||||
POKENAV_GFX_SMART_MENU,
|
||||
POKENAV_GFX_TOUGH_MENU,
|
||||
|
||||
POKENAV_GFX_MENUS_END
|
||||
POKENAV_GFX_MENUS_END,
|
||||
};
|
||||
|
||||
#define POKENAV_GFX_SUBMENUS_START POKENAV_GFX_PARTY_MENU
|
||||
@ -60,27 +57,23 @@ struct CompressedSpriteSheetNoSize
|
||||
u32 tag;
|
||||
};
|
||||
|
||||
extern void sub_81CAADC(void);
|
||||
void CleanupPokenavMainMenuResources(void);
|
||||
void LoadLeftHeaderGfxForSubMenu(u32 arg0);
|
||||
void LoadLeftHeaderGfxForMenu(u32 arg0);
|
||||
void HideLeftHeaderSubmenuSprites(bool32 arg0);
|
||||
void HideLeftHeaderSprites(bool32 arg0);
|
||||
void ShowLeftHeaderSprites(u32 arg0, bool32 arg1);
|
||||
void ShowLeftHeaderSubmenuSprites(u32 arg0, bool32 arg1);
|
||||
void MoveLeftHeader(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3);
|
||||
void SpriteCB_MoveLeftHeader(struct Sprite *sprite);
|
||||
void InitPokenavMainMenuResources(void);
|
||||
void InitHoennMapHeaderSprites(void);
|
||||
void sub_81C7B74(void);
|
||||
void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 a1, u32 a2);
|
||||
u32 LoopedTask_ScrollMenuHeaderDown(s32 a0);
|
||||
u32 LoopedTask_ScrollMenuHeaderUp(s32 a0);
|
||||
void sub_81C7BF8(u32 a0);
|
||||
|
||||
|
||||
void SpriteCB_SpinningPokenav(struct Sprite* sprite);
|
||||
u32 LoopedTask_InitPokenavMenu(s32 a0);
|
||||
static void CleanupPokenavMainMenuResources(void);
|
||||
static void LoadLeftHeaderGfxForSubMenu(u32 arg0);
|
||||
static void LoadLeftHeaderGfxForMenu(u32 index);
|
||||
static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide);
|
||||
static void HideLeftHeaderSprites(bool32 isOnRightSide);
|
||||
static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide);
|
||||
static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide);
|
||||
static void MoveLeftHeader(struct Sprite *sprite, int startX, int endX, int duration);
|
||||
static void SpriteCB_MoveLeftHeader(struct Sprite *sprite);
|
||||
static void InitPokenavMainMenuResources(void);
|
||||
static void InitHoennMapHeaderSprites(void);
|
||||
static void sub_81C7B74(void);
|
||||
static u32 LoopedTask_ScrollMenuHeaderDown(int a0);
|
||||
static u32 LoopedTask_ScrollMenuHeaderUp(int a0);
|
||||
static void sub_81C7BF8(u32 a0);
|
||||
static void SpriteCB_SpinningPokenav(struct Sprite* sprite);
|
||||
static u32 LoopedTask_InitPokenavMenu(int a0);
|
||||
|
||||
const u16 gSpinningPokenavPaletteData[] = INCBIN_U16("graphics/pokenav/icon2.gbapal");
|
||||
const u32 gSpinningPokenavGfx[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz");
|
||||
@ -121,7 +114,7 @@ const struct WindowTemplate gUnknown_0861FA08[2] =
|
||||
},
|
||||
};
|
||||
|
||||
const u8 *const sMenuButtonReminders[12] =
|
||||
const u8 *const sHelpBarTexts[12] =
|
||||
{
|
||||
gText_Pokenav_ClearButtonList,
|
||||
gText_PokenavMap_ZoomedOutButtons,
|
||||
@ -367,7 +360,7 @@ bool32 WaitForPokenavShutdownFade(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 LoopedTask_InitPokenavMenu(s32 a0)
|
||||
static u32 LoopedTask_InitPokenavMenu(int a0)
|
||||
{
|
||||
struct PokenavMainMenuResources *structPtr;
|
||||
|
||||
@ -447,7 +440,7 @@ bool32 MainMenuLoopedTaskIsBusy(void)
|
||||
return IsLoopedTaskActive(structPtr->currentTaskId);
|
||||
}
|
||||
|
||||
u32 LoopedTask_ScrollMenuHeaderDown(s32 a0)
|
||||
static u32 LoopedTask_ScrollMenuHeaderDown(int a0)
|
||||
{
|
||||
switch (a0)
|
||||
{
|
||||
@ -468,7 +461,7 @@ u32 LoopedTask_ScrollMenuHeaderDown(s32 a0)
|
||||
}
|
||||
}
|
||||
|
||||
u32 LoopedTask_ScrollMenuHeaderUp(s32 a0)
|
||||
static u32 LoopedTask_ScrollMenuHeaderUp(int a0)
|
||||
{
|
||||
if (ChangeBgY(0, 384, 2) <= 0)
|
||||
{
|
||||
@ -508,7 +501,7 @@ void sub_81C7990(u32 a0, u16 a1)
|
||||
CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16));
|
||||
}
|
||||
|
||||
__attribute__((naked))
|
||||
NAKED
|
||||
void sub_81C79BC(u16 *a0, u16 *a1, u32 a2, u32 a3, u32 a4, u32 a5)
|
||||
{
|
||||
asm(".syntax unified\n\
|
||||
@ -644,7 +637,7 @@ _081C7AAE:\n\
|
||||
.syntax divided");
|
||||
}
|
||||
|
||||
void sub_81C7AC0(s32 a0)
|
||||
void sub_81C7AC0(int a0)
|
||||
{
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
@ -675,15 +668,15 @@ void sub_81C7B40(void)
|
||||
BlendPalettes(0xFFFEFFFE, 16, RGB_BLACK);
|
||||
}
|
||||
|
||||
void InitBgTemplates(const struct BgTemplate *templates, s32 count)
|
||||
void InitBgTemplates(const struct BgTemplate *templates, int count)
|
||||
{
|
||||
s32 i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
InitBgFromTemplate(templates++);
|
||||
}
|
||||
|
||||
void sub_81C7B74(void)
|
||||
static void sub_81C7B74(void)
|
||||
{
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
@ -694,12 +687,12 @@ void sub_81C7B74(void)
|
||||
CopyWindowToVram(structPtr->unk10, 3); // TODO: Use a defined constant here.
|
||||
}
|
||||
|
||||
void sub_81C7BA4(u32 a0)
|
||||
void sub_81C7BA4(u32 helpBarIndex)
|
||||
{
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
sub_81C7BF8(structPtr->unk10);
|
||||
AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, gMenuButtonReminderColor, 0, sMenuButtonReminders[a0]);
|
||||
AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, gMenuButtonReminderColor, 0, sHelpBarTexts[helpBarIndex]);
|
||||
}
|
||||
|
||||
bool32 IsDma3ManagerBusyWithBgCopy_(void)
|
||||
@ -707,15 +700,15 @@ bool32 IsDma3ManagerBusyWithBgCopy_(void)
|
||||
return IsDma3ManagerBusyWithBgCopy();
|
||||
}
|
||||
|
||||
void sub_81C7BF8(u32 windowId)
|
||||
static void sub_81C7BF8(u32 windowId)
|
||||
{
|
||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
|
||||
FillWindowPixelRect(windowId, PIXEL_FILL(5), 0, 0, 0x80, 1);
|
||||
}
|
||||
|
||||
void InitPokenavMainMenuResources(void)
|
||||
static void InitPokenavMainMenuResources(void)
|
||||
{
|
||||
s32 i;
|
||||
int i;
|
||||
u8 spriteId;
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
@ -728,7 +721,7 @@ void InitPokenavMainMenuResources(void)
|
||||
structPtr->spinningPokenav = &gSprites[spriteId];
|
||||
}
|
||||
|
||||
void CleanupPokenavMainMenuResources(void)
|
||||
static void CleanupPokenavMainMenuResources(void)
|
||||
{
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
@ -737,7 +730,7 @@ void CleanupPokenavMainMenuResources(void)
|
||||
FreeSpritePaletteByTag(0);
|
||||
}
|
||||
|
||||
void SpriteCB_SpinningPokenav(struct Sprite *sprite)
|
||||
static void SpriteCB_SpinningPokenav(struct Sprite *sprite)
|
||||
{
|
||||
// If the background starts scrolling, follow it.
|
||||
sprite->pos2.y = (GetBgY(0) / 256u) * -1;
|
||||
@ -763,15 +756,15 @@ void ResumeSpinningPokenavSprite(void)
|
||||
structPtr->spinningPokenav->subpriority = 0;
|
||||
}
|
||||
|
||||
void InitHoennMapHeaderSprites(void)
|
||||
static void InitHoennMapHeaderSprites(void)
|
||||
{
|
||||
s32 i, spriteId;
|
||||
int i, spriteId;
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
LoadCompressedSpriteSheet(&sPokenavHoennMapLeftHeaderSpriteSheet);
|
||||
AllocSpritePalette(1);
|
||||
AllocSpritePalette(2);
|
||||
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
|
||||
for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sPokenavLeftHeaderHoennMapSpriteTemplate, 0, 0, 1);
|
||||
structPtr->leftHeaderSprites[i] = &gSprites[spriteId];
|
||||
@ -805,7 +798,7 @@ void sub_81C7E14(u32 arg0)
|
||||
structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 64;
|
||||
}
|
||||
|
||||
void LoadLeftHeaderGfxForMenu(u32 index)
|
||||
static void LoadLeftHeaderGfxForMenu(u32 index)
|
||||
{
|
||||
struct PokenavMainMenuResources *structPtr;
|
||||
u32 size, tag;
|
||||
@ -827,7 +820,7 @@ void LoadLeftHeaderGfxForMenu(u32 index)
|
||||
structPtr->leftHeaderSprites[1]->pos2.x = 64;
|
||||
}
|
||||
|
||||
void LoadLeftHeaderGfxForSubMenu(u32 arg0)
|
||||
static void LoadLeftHeaderGfxForSubMenu(u32 arg0)
|
||||
{
|
||||
u32 size, tag;
|
||||
|
||||
@ -866,10 +859,10 @@ void sub_81C7FC4(u32 arg0, bool32 arg1)
|
||||
|
||||
void sub_81C7FDC(void)
|
||||
{
|
||||
s32 i;
|
||||
int i;
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
|
||||
for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
|
||||
{
|
||||
structPtr->leftHeaderSprites[i]->invisible = TRUE;
|
||||
structPtr->submenuLeftHeaderSprites[i]->invisible = TRUE;
|
||||
@ -886,9 +879,9 @@ bool32 sub_81C8010(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
|
||||
static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
|
||||
{
|
||||
s32 start, end, i;
|
||||
int start, end, i;
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
if (!isOnRightSide)
|
||||
@ -896,16 +889,16 @@ void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
|
||||
else
|
||||
start = 256, end = 160;
|
||||
|
||||
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
|
||||
for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
|
||||
{
|
||||
structPtr->leftHeaderSprites[i]->pos1.y = startY;
|
||||
MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12);
|
||||
}
|
||||
}
|
||||
|
||||
void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
|
||||
static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
|
||||
{
|
||||
s32 start, end, i;
|
||||
int start, end, i;
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
if (!isOnRightSide)
|
||||
@ -913,16 +906,16 @@ void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
|
||||
else
|
||||
start = 256, end = 192;
|
||||
|
||||
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
|
||||
for (i = 0; i < (int)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
|
||||
{
|
||||
structPtr->submenuLeftHeaderSprites[i]->pos1.y = startY;
|
||||
MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12);
|
||||
}
|
||||
}
|
||||
|
||||
void HideLeftHeaderSprites(bool32 isOnRightSide)
|
||||
static void HideLeftHeaderSprites(bool32 isOnRightSide)
|
||||
{
|
||||
s32 start, end, i;
|
||||
int start, end, i;
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
if (!isOnRightSide)
|
||||
@ -930,15 +923,15 @@ void HideLeftHeaderSprites(bool32 isOnRightSide)
|
||||
else
|
||||
start = 192, end = 256;
|
||||
|
||||
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
|
||||
for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
|
||||
{
|
||||
MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12);
|
||||
}
|
||||
}
|
||||
|
||||
void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
|
||||
static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
|
||||
{
|
||||
s32 start, end, i;
|
||||
int start, end, i;
|
||||
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
|
||||
|
||||
if (!isOnRightSide)
|
||||
@ -946,13 +939,13 @@ void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
|
||||
else
|
||||
start = 192, end = 256;
|
||||
|
||||
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
|
||||
for (i = 0; i < (int)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
|
||||
{
|
||||
MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12);
|
||||
}
|
||||
}
|
||||
|
||||
void MoveLeftHeader(struct Sprite *sprite, s32 startX, s32 endX, s32 duration)
|
||||
static void MoveLeftHeader(struct Sprite *sprite, int startX, int endX, int duration)
|
||||
{
|
||||
sprite->pos1.x = startX;
|
||||
sprite->data[0] = startX * 16;
|
||||
@ -962,7 +955,7 @@ void MoveLeftHeader(struct Sprite *sprite, s32 startX, s32 endX, s32 duration)
|
||||
sprite->callback = SpriteCB_MoveLeftHeader;
|
||||
}
|
||||
|
||||
void SpriteCB_MoveLeftHeader(struct Sprite *sprite)
|
||||
static void SpriteCB_MoveLeftHeader(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[2] != 0)
|
||||
{
|
||||
|
466
src/pokenav_unk_1.c
Normal file
466
src/pokenav_unk_1.c
Normal file
@ -0,0 +1,466 @@
|
||||
#include "global.h"
|
||||
#include "pokenav.h"
|
||||
#include "event_data.h"
|
||||
#include "main.h"
|
||||
#include "sound.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
struct Pokenav1Struct
|
||||
{
|
||||
u16 menuType;
|
||||
s16 cursorPos;
|
||||
u16 descriptionId;
|
||||
u16 helpBarIndex;
|
||||
u32 unk8;
|
||||
u32 (*callback)(struct Pokenav1Struct*);
|
||||
};
|
||||
|
||||
static bool32 sub_81C9814(struct Pokenav1Struct *a0);
|
||||
static void sub_81C97F8(struct Pokenav1Struct *a0);
|
||||
static void sub_81C97C0(struct Pokenav1Struct *a0);
|
||||
static u32 sub_81C97BC(struct Pokenav1Struct *a0);
|
||||
static void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1);
|
||||
static u32 sub_81C97A4(struct Pokenav1Struct *a0);
|
||||
static u32 sub_81C9798(struct Pokenav1Struct *a0);
|
||||
static u32 sub_81C96FC(struct Pokenav1Struct *a0);
|
||||
static u32 sub_81C963C(struct Pokenav1Struct *a0);
|
||||
static u32 sub_81C9600(struct Pokenav1Struct *a0);
|
||||
static u32 sub_81C9588(struct Pokenav1Struct *a0);
|
||||
static u32 sub_81C9520(struct Pokenav1Struct *a0);
|
||||
static u32 sub_81C943C(struct Pokenav1Struct *a0);
|
||||
static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*);
|
||||
static void sub_81C939C(struct Pokenav1Struct *state);
|
||||
|
||||
static const u8 sLastCursorPositions[] = {2, 3, 4, 2, 5};
|
||||
|
||||
static const u8 sDescriptionIds[][6] =
|
||||
{
|
||||
{ 0, 1, 4, 4, 4, 4 },
|
||||
{ 0, 1, 2, 4, 4, 4 },
|
||||
{ 0, 1, 2, 3, 4, 4 },
|
||||
{ 5, 6, 7, 4, 4, 4 },
|
||||
{ 8, 9, 10, 11, 12, 13 },
|
||||
};
|
||||
|
||||
static u8 GetPokenavMainMenuType(void)
|
||||
{
|
||||
u8 retVal = 0;
|
||||
if (FlagGet(FLAG_ADDED_MATCH_CALL_TO_POKENAV))
|
||||
{
|
||||
retVal = 1;
|
||||
if (FlagGet(FLAG_SYS_RIBBON_GET))
|
||||
retVal = 2;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool32 sub_81C9298(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
|
||||
if (!state)
|
||||
return FALSE;
|
||||
|
||||
state->menuType = GetPokenavMainMenuType();
|
||||
state->cursorPos = 0;
|
||||
state->descriptionId = 0;
|
||||
state->helpBarIndex = 0;
|
||||
sub_81C939C(state);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_81C92CC(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
|
||||
if (!state)
|
||||
return FALSE;
|
||||
|
||||
state->menuType = GetPokenavMainMenuType();
|
||||
state->cursorPos = 2;
|
||||
state->descriptionId = 2;
|
||||
state->helpBarIndex = 0;
|
||||
sub_81C939C(state);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_81C9304(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
|
||||
if (!state)
|
||||
return FALSE;
|
||||
|
||||
state->menuType = GetPokenavMainMenuType();
|
||||
state->cursorPos = 3;
|
||||
state->descriptionId = 3;
|
||||
sub_81C939C(state);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_81C9338(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
|
||||
if (!state)
|
||||
return FALSE;
|
||||
|
||||
state->menuType = 3;
|
||||
state->cursorPos = 0;
|
||||
state->descriptionId = 5;
|
||||
state->helpBarIndex = 0;
|
||||
sub_81C939C(state);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_81C9368(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
|
||||
if (!state)
|
||||
return FALSE;
|
||||
|
||||
state->menuType = 4;
|
||||
state->cursorPos = sub_81C76AC();
|
||||
state->descriptionId = state->cursorPos + 8;
|
||||
state->helpBarIndex = 0;
|
||||
sub_81C939C(state);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void sub_81C939C(struct Pokenav1Struct *state)
|
||||
{
|
||||
switch (state->menuType)
|
||||
{
|
||||
case 0:
|
||||
SetPokenavMode(POKENAV_MODE_NORMAL);
|
||||
// fallthrough
|
||||
case 1:
|
||||
case 2:
|
||||
state->callback = sub_81C93EC();
|
||||
break;
|
||||
case 3:
|
||||
state->callback = sub_81C963C;
|
||||
break;
|
||||
case 4:
|
||||
state->callback = sub_81C96FC;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*)
|
||||
{
|
||||
switch (GetPokenavMode())
|
||||
{
|
||||
default:
|
||||
case POKENAV_MODE_NORMAL:
|
||||
return sub_81C943C;
|
||||
case POKENAV_MODE_FORCE_CALL_1:
|
||||
return sub_81C9520;
|
||||
case POKENAV_MODE_FORCE_CALL_2:
|
||||
return sub_81C9588;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_81C941C(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = GetSubstructPtr(1);
|
||||
return state->callback(state);
|
||||
}
|
||||
|
||||
void sub_81C9430(void)
|
||||
{
|
||||
FreePokenavSubstruct(1);
|
||||
}
|
||||
|
||||
static u32 sub_81C943C(struct Pokenav1Struct *a0)
|
||||
{
|
||||
if (sub_81C9814(a0))
|
||||
return 1;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
switch (sDescriptionIds[a0->menuType][a0->cursorPos])
|
||||
{
|
||||
case 0:
|
||||
a0->helpBarIndex = gSaveBlock2Ptr->regionMapZoom ? 2 : 1;
|
||||
sub_81C97B0(a0, POKENAV_MENU_6);
|
||||
return 8;
|
||||
case 1:
|
||||
a0->menuType = 3;
|
||||
a0->cursorPos = 0;
|
||||
a0->descriptionId = sDescriptionIds[3][0];
|
||||
a0->callback = sub_81C963C;
|
||||
return 2;
|
||||
case 2:
|
||||
a0->helpBarIndex = 6;
|
||||
sub_81C97B0(a0, POKENAV_MENU_B);
|
||||
return 8;
|
||||
case 3:
|
||||
if (CanViewRibbonsMenu())
|
||||
{
|
||||
a0->helpBarIndex = 9;
|
||||
sub_81C97B0(a0, POKENAV_MENU_C);
|
||||
return 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
a0->callback = sub_81C9600;
|
||||
return 6;
|
||||
}
|
||||
case 4:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (gMain.newKeys & B_BUTTON)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 sub_81C9520(struct Pokenav1Struct *a0)
|
||||
{
|
||||
if (sub_81C9814(a0))
|
||||
return 1;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
if (sDescriptionIds[a0->menuType][a0->cursorPos] == 2)
|
||||
{
|
||||
a0->helpBarIndex = 6;
|
||||
sub_81C97B0(a0, POKENAV_MENU_B);
|
||||
return 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_HAZURE);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
PlaySE(SE_HAZURE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 sub_81C9588(struct Pokenav1Struct *a0)
|
||||
{
|
||||
if (sub_81C9814(a0))
|
||||
return 1;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
u32 v0 = sDescriptionIds[a0->menuType][a0->cursorPos];
|
||||
if (v0 != 2 && v0 != 4)
|
||||
{
|
||||
PlaySE(SE_HAZURE);
|
||||
return 0;
|
||||
}
|
||||
else if (v0 == 2)
|
||||
{
|
||||
a0->helpBarIndex = 6;
|
||||
sub_81C97B0(a0, POKENAV_MENU_B);
|
||||
return 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 sub_81C9600(struct Pokenav1Struct *a0)
|
||||
{
|
||||
if (sub_81C9814(a0))
|
||||
{
|
||||
a0->callback = sub_81C93EC();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||
{
|
||||
a0->callback = sub_81C93EC();
|
||||
return 7;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 sub_81C963C(struct Pokenav1Struct *a0)
|
||||
{
|
||||
u32 v0 = sub_81C9814(a0);
|
||||
if (v0)
|
||||
return 1;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
switch (sDescriptionIds[a0->menuType][a0->cursorPos])
|
||||
{
|
||||
case 6:
|
||||
a0->menuType = 4;
|
||||
a0->cursorPos = v0;
|
||||
a0->descriptionId = sDescriptionIds[4][0];
|
||||
a0->callback = sub_81C96FC;
|
||||
return 4;
|
||||
case 5:
|
||||
a0->helpBarIndex = v0;
|
||||
sub_81C97B0(a0, POKENAV_MENU_7);
|
||||
return 8;
|
||||
case 7:
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81C97C0(a0);
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
if (a0->cursorPos != sLastCursorPositions[a0->menuType])
|
||||
{
|
||||
a0->cursorPos = sLastCursorPositions[a0->menuType];
|
||||
a0->callback = sub_81C9798;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81C97C0(a0);
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 sub_81C96FC(struct Pokenav1Struct *a0)
|
||||
{
|
||||
if (sub_81C9814(a0))
|
||||
return 1;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
u8 v0 = sDescriptionIds[a0->menuType][a0->cursorPos];
|
||||
if (v0 != 13)
|
||||
{
|
||||
sub_81C7694(v0 - 8);
|
||||
sub_81C97B0(a0, POKENAV_MENU_8);
|
||||
a0->helpBarIndex = 3;
|
||||
return 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81C97F8(a0);
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
if (a0->cursorPos != sLastCursorPositions[a0->menuType])
|
||||
{
|
||||
a0->cursorPos = sLastCursorPositions[a0->menuType];
|
||||
a0->callback = sub_81C97A4;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81C97F8(a0);
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 sub_81C9798(struct Pokenav1Struct *a0)
|
||||
{
|
||||
sub_81C97C0(a0);
|
||||
return 3;
|
||||
}
|
||||
|
||||
static u32 sub_81C97A4(struct Pokenav1Struct *a0)
|
||||
{
|
||||
sub_81C97F8(a0);
|
||||
return 5;
|
||||
}
|
||||
|
||||
static void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1)
|
||||
{
|
||||
a0->unk8 = a1;
|
||||
a0->callback = sub_81C97BC;
|
||||
}
|
||||
|
||||
static u32 sub_81C97BC(struct Pokenav1Struct *a0)
|
||||
{
|
||||
return a0->unk8;
|
||||
}
|
||||
|
||||
static void sub_81C97C0(struct Pokenav1Struct *a0)
|
||||
{
|
||||
a0->menuType = GetPokenavMainMenuType();
|
||||
a0->cursorPos = 1;
|
||||
a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
|
||||
a0->callback = sub_81C943C;
|
||||
}
|
||||
|
||||
static void sub_81C97F8(struct Pokenav1Struct *a0)
|
||||
{
|
||||
a0->menuType = 3;
|
||||
a0->cursorPos = 1;
|
||||
a0->descriptionId = sDescriptionIds[3][1];
|
||||
a0->callback = sub_81C963C;
|
||||
}
|
||||
|
||||
static bool32 sub_81C9814(struct Pokenav1Struct *a0)
|
||||
{
|
||||
if (gMain.newKeys & DPAD_UP)
|
||||
{
|
||||
if (--a0->cursorPos < 0)
|
||||
a0->cursorPos = sLastCursorPositions[a0->menuType];
|
||||
|
||||
a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
|
||||
return TRUE;
|
||||
}
|
||||
else if (gMain.newKeys & DPAD_DOWN)
|
||||
{
|
||||
a0->cursorPos++;
|
||||
if (a0->cursorPos > sLastCursorPositions[a0->menuType])
|
||||
a0->cursorPos = 0;
|
||||
|
||||
a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos];
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
int sub_81C9894(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = GetSubstructPtr(1);
|
||||
return state->menuType;
|
||||
}
|
||||
|
||||
int sub_81C98A4(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = GetSubstructPtr(1);
|
||||
return state->cursorPos;
|
||||
}
|
||||
|
||||
int sub_81C98B4(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = GetSubstructPtr(1);
|
||||
return state->descriptionId;
|
||||
}
|
||||
|
||||
int sub_81C98C4(void)
|
||||
{
|
||||
struct Pokenav1Struct *state = GetSubstructPtr(1);
|
||||
return state->helpBarIndex;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user